Metadata-Version: 2.5
Name: emet-cli
Version: 0.1.1
Summary: Set up Emet in your Python app: your coding agent does the work, you type the key
Project-URL: Homepage, https://emet.so
Project-URL: Source, https://github.com/FUSEis/emet-py
Project-URL: Issues, https://github.com/FUSEis/emet-py/issues
Author: FUSE
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: agents,cli,emet,genai,llm,opentelemetry
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: emet-sdk==0.1.1
Description-Content-Type: text/markdown

# emet-cli

Sets up [Emet](https://emet.so) in a Python app. Your coding agent runs the commands; you type the key yourself, so it never enters the agent's context.

> Early release, versioned with `emet-sdk`.

```sh
uvx emet-cli login          # you, in your own terminal, in the app's folder
uvx emet-cli init --json    # installs emet-sdk and reports what to wire; edits no code
uvx emet-cli check          # what is set up, without sending anything
uvx emet-cli check --last   # whether the last turn reached Emet whole, and the fix if not
```

- **`login`** asks for your key at a hidden prompt and checks it with Emet without sending a trace. It saves the key to `.env` as `EMET_APPLICATION_KEY` and records only the key's public prefix in `.emet/key.json`, then adds both files to `.gitignore`. It refuses to run without a terminal, and refuses when either file is tracked by git.
- **`init`** installs the matching `emet-sdk` with the app's package manager (uv, Poetry, or pip in the app's own virtual environment) and reports where the agent runs, whether the app loads `.env`, and the exact snippets to add. It edits no code: your coding agent does, after you confirm the values.
- **`check`** reports the key, whether the app depends on `emet-sdk`, and where it calls `emet_sdk.configure()` and `emet_sdk.turn()`. With `--last`, it reads the delivery result the SDK saved in `.emet/last-delivery.json` and says whether the turn was captured. Add `--json` for your agent.

`check --last` needs the app to save results: `emet_sdk.configure(on_delivery=emet_sdk.write_delivery_file(".emet/last-delivery.json"))`.

## With a coding agent

Give your agent [AGENT_SETUP.md](AGENT_SETUP.md): "Follow https://github.com/FUSEis/emet-py/blob/main/cli/AGENT_SETUP.md to set up Emet." It runs these commands in order, asks you to run `login` yourself, and confirms the tenant, conversation and user values with you before wiring them.
