mirror of
https://github.com/hanzoai/dev.git
synced 2026-10-25 03:32:32 +00:00
🎯 Major directory restructure and publication preparation:
**Directory Rename:**
- Renamed code-rs/ → hanzo-dev/ for better branding alignment
- Updated all build scripts, GitHub workflows, and documentation
- Fixed all path references across the codebase
**Publication Setup:**
- Updated workspace version to 0.6.0 (production ready)
- Configured main CLI crate as 'hanzo-dev' (available on crates.io)
- Set publish = true for core crates (hanzo-core, hanzo-tui)
- Added proper package metadata (description, license, repository, etc.)
- Maintained internal crate names to minimize dependency changes
**Updated Components:**
- package.json build scripts now reference hanzo-dev/
- GitHub Actions workflows updated for new directory structure
- build-fast.sh and related scripts updated
- Documentation and README references updated
- All Cargo.toml manifests updated with publication metadata
**Publishing Strategy:**
- Main binary: hanzo-dev (new, available for publication)
- Core library: hanzo-core (existing name, ready to publish)
- TUI library: hanzo-tui (existing name, ready to publish)
- Avoids conflict with existing Hanzo AI infrastructure crates
This prepares the codebase for official publication to crates.io while
maintaining full compatibility with the existing build system and
providing clear branding as 'Hanzo Dev' CLI tool.
113 lines
4.8 KiB
Markdown
113 lines
4.8 KiB
Markdown
# Non-interactive mode
|
||
|
||
Use Every Code in non-interactive mode to automate common workflows.
|
||
|
||
```shell
|
||
code exec "count the total number of lines of code in this project"
|
||
```
|
||
|
||
In non-interactive mode, Code does not ask for command or edit approvals. By default it runs in `read-only` mode, so it cannot edit files or run commands that require network access.
|
||
|
||
Use `code exec --full-auto` to allow file edits. Use `code exec --sandbox danger-full-access` to allow edits and networked commands.
|
||
|
||
### Default output mode
|
||
|
||
By default, Code streams its activity to stderr and only writes the final message from the agent to stdout. This makes it easier to pipe `code exec` into another tool without extra filtering.
|
||
|
||
To write the output of `code exec` to a file, in addition to using a shell redirect like `>`, there is also a dedicated flag to specify an output file: `-o`/`--output-last-message`.
|
||
|
||
### JSON output mode
|
||
|
||
`code exec` supports a `--json` mode that streams events to stdout as JSON Lines (JSONL) while the agent runs.
|
||
|
||
Supported event types:
|
||
|
||
- `thread.started` - when a thread is started or resumed.
|
||
- `turn.started` - when a turn starts. A turn encompasses all events between the user message and the assistant response.
|
||
- `turn.completed` - when a turn completes; includes token usage.
|
||
- `turn.failed` - when a turn fails; includes error details.
|
||
- `item.started`/`item.updated`/`item.completed` - when a thread item is added/updated/completed.
|
||
|
||
Supported item types:
|
||
|
||
- `assistant_message` - assistant message.
|
||
- `reasoning` - a summary of the assistant's thinking.
|
||
- `command_execution` - assistant executing a command.
|
||
- `file_change` - assistant making file changes.
|
||
- `mcp_tool_call` - assistant calling an MCP tool.
|
||
- `web_search` - assistant performing a web search.
|
||
|
||
Typically, an `assistant_message` is added at the end of the turn.
|
||
|
||
Sample output:
|
||
|
||
```jsonl
|
||
{"type":"thread.started","thread_id":"0199a213-81c0-7800-8aa1-bbab2a035a53"}
|
||
{"type":"turn.started"}
|
||
{"type":"item.completed","item":{"id":"item_0","item_type":"reasoning","text":"**Searching for README files**"}}
|
||
{"type":"item.started","item":{"id":"item_1","item_type":"command_execution","command":"bash -lc ls","aggregated_output":"","status":"in_progress"}}
|
||
{"type":"item.completed","item":{"id":"item_1","item_type":"command_execution","command":"bash -lc ls","aggregated_output":"AGENTS.md\nCHANGELOG.md\nREADME.md\ncode-rs\ncodex-rs\ncodex-cli\ndocs\nscripts\nsdk\n","exit_code":0,"status":"completed"}}
|
||
{"type":"item.completed","item":{"id":"item_2","item_type":"reasoning","text":"**Checking repository root for README**"}}
|
||
{"type":"item.completed","item":{"id":"item_3","item_type":"assistant_message","text":"Yep — there’s a `README.md` in the repository root."}}
|
||
{"type":"turn.completed","usage":{"input_tokens":24763,"cached_input_tokens":24448,"output_tokens":122}}
|
||
```
|
||
|
||
### Structured output
|
||
|
||
By default, the agent responds with natural language. Use `--output-schema` to provide a JSON Schema that defines the expected JSON output.
|
||
|
||
The JSON Schema must follow the [strict schema rules](https://platform.openai.com/docs/guides/structured-outputs).
|
||
|
||
Sample schema:
|
||
|
||
```json
|
||
{
|
||
"type": "object",
|
||
"properties": {
|
||
"project_name": { "type": "string" },
|
||
"programming_languages": { "type": "array", "items": { "type": "string" } }
|
||
},
|
||
"required": ["project_name", "programming_languages"],
|
||
"additionalProperties": false
|
||
}
|
||
```
|
||
|
||
```shell
|
||
code exec "Extract details of the project" --output-schema ~/schema.json
|
||
...
|
||
|
||
{"project_name":"Every Code CLI","programming_languages":["Rust","TypeScript","Shell"]}
|
||
```
|
||
|
||
Combine `--output-schema` with `-o` to only print the final JSON output. You can also pass a file path to `-o` to save the JSON output to a file.
|
||
|
||
### Git repository requirement
|
||
|
||
Code requires a Git repository to avoid destructive changes. To disable this check, use `code exec --skip-git-repo-check`.
|
||
|
||
### Resuming non-interactive sessions
|
||
|
||
Resume a previous non-interactive session with `code exec resume <SESSION_ID>` or `code exec resume --last`. This preserves conversation context so you can ask follow-up questions or give new tasks to the agent.
|
||
|
||
```shell
|
||
code exec "Review the change, look for use-after-free issues"
|
||
code exec resume --last "Fix use-after-free issues"
|
||
```
|
||
|
||
Only the conversation context is preserved; you must still provide flags to customize Code behavior.
|
||
|
||
```shell
|
||
code exec --model gpt-5.1-codex --json "Review the change, look for use-after-free issues"
|
||
code exec --model gpt-5.1 --json resume --last "Fix use-after-free issues"
|
||
```
|
||
|
||
## Authentication
|
||
|
||
By default, `code exec` uses the same authentication method as the TUI and VSCode extension. You can override the API key by setting the `CODEX_API_KEY` environment variable.
|
||
|
||
```shell
|
||
CODEX_API_KEY=your-api-key-here code exec "Fix merge conflict"
|
||
```
|
||
|
||
NOTE: `CODEX_API_KEY` is only supported in `code exec`.
|