delegate-agent-cli 0.14.0__tar.gz → 0.16.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/CHANGELOG.md +77 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/PKG-INFO +11 -12
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/README.md +10 -11
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/config.example.json +1 -1
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/docs/agent-setup.md +2 -2
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/docs/cli-reference.md +81 -63
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/docs/configuration.md +6 -5
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/docs/security-model.md +13 -3
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/docs/troubleshooting.md +17 -7
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/docs/worktrees.md +9 -11
- delegate_agent_cli-0.16.0/examples/task.kimi.json +7 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/pyproject.toml +1 -1
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/__init__.py +1 -1
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/argv_builders.py +12 -4
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/bundled_models.py +2 -1
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/cli.py +43 -5
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/cli_parser.py +18 -5
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/command_help.py +137 -75
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/config.py +1 -1
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/constants.py +13 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/describe_payload.py +37 -108
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/harness_events.py +92 -2
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/inspection_commands.py +2 -5
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/isolation.py +24 -25
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/profiles.py +20 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/rendering.py +10 -5
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/request_build.py +10 -4
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/request_models.py +1 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/run_output_commands.py +6 -10
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/run_registry.py +74 -1
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/runner.py +693 -164
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/safe_workspace.py +118 -60
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/wait_cancel_commands.py +207 -141
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/runtime.py +8 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_execution.py +157 -48
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_remove.py +10 -1
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/PKG-INFO +11 -12
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/SOURCES.txt +2 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_codex_pure_sandbox.py +1 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_delegate_help_cli.py +47 -2
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_delegate_isolation.py +56 -14
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_delegate_parser.py +29 -2
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_engine_argv.py +54 -37
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_execution_argv_and_prompt.py +71 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_execution_worktree_failure_cleanup.py +19 -2
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_execution_worktree_preflight.py +76 -187
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_harness_events.py +342 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_kimi_commands.py +2 -1
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_model_discovery.py +5 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_model_selection_wave1b.py +5 -3
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_profiles.py +48 -1
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_pure_call.py +7 -3
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_run_registry.py +6 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_runner_capture.py +1391 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_safe_workspace_isolation.py +95 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_slash_passthrough.py +8 -3
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_snapshot_run_output.py +59 -0
- delegate_agent_cli-0.16.0/tests/test_tracked_timeout.py +377 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_utility_modules.py +1 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_wait_cancel_commands.py +460 -1
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_wave4_launch_features.py +157 -6
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_workflow_commands.py +15 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_worktree_remove.py +17 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/CONTRIBUTING.md +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/LICENSE +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/MANIFEST.in +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/SECURITY.md +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/bin/delegate-profile-shim +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/bin/delegate.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/docs/assets/delegate-agent-header.png +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/docs/development.md +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/docs/live-runtime.md +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/docs/publishing-checklist.md +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/examples/task.claude.json +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/examples/task.codex.json +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/examples/task.cursor.json +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/examples/task.droid.json +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/examples/task.grok.json +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/examples/task.judge.json +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/setup.cfg +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/archived_logs.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/argv_utils.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/capability_commands.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/command_errors.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/config_commands.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/errors.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/git_utils.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/json_types.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/log_output.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/model_discovery.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/private_io.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/profile_commands.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/profile_guard.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/prompt_instructions.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/prompt_transport.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/reasoning.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/redaction.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/retention.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/run_metadata.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/run_status.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/seatbelt.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/snapshot_view.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/__init__.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/commands.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/registry.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/schema.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/workflows/script.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_commands.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_gc.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_mgmt.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_records.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/worktree_summary.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent/wsl.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/dependency_links.txt +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/entry_points.txt +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/requires.txt +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/src/delegate_agent_cli.egg-info/top_level.txt +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_capability_commands.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_command_help.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_config_commands.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_delegate_validation.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_end_to_end_tracking.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_execution_dry_run.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_execution_worktree_run.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_inspection_commands.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_model_selection_wave1a.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_packaging.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_reasoning_capabilities.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_retention.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_snapshot_redaction.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_snapshot_rendering.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_snapshot_view.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_worktree_list_show.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_worktree_prune_gc.py +0 -0
- {delegate_agent_cli-0.14.0 → delegate_agent_cli-0.16.0}/tests/test_wsl_guardrails.py +0 -0
|
@@ -5,6 +5,81 @@ All notable changes to this project are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.16.0] - 2026-07-16
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- `--timeout` is now accepted and enforced on tracked `safe` and `work` runs
|
|
15
|
+
across engines. It remains rejected with `--pass-through`, and deadline
|
|
16
|
+
failures keep the historical `call_timeout` error code.
|
|
17
|
+
- Kimi tool-call activity is normalized into `tool.started`/`tool.completed`
|
|
18
|
+
events with id correlation; `status` stays unset because Kimi tool results
|
|
19
|
+
carry no result-status signal.
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- Persistent-worktree runs that fail after the worktree is realized
|
|
24
|
+
(child-launch errors, timeouts) now keep `worktreeStatus: present`,
|
|
25
|
+
`executionCwd`, `branch`, and `worktreeCleanupCommands` in the failed-run
|
|
26
|
+
record, so the preserved worktree stays inspectable and removable via
|
|
27
|
+
`delegate worktree show|remove` instead of being orphaned.
|
|
28
|
+
- The Kimi default model is now `kimi-code/k3`, and the bundled Kimi catalog
|
|
29
|
+
lists exactly the three real model IDs (`kimi-code/k3`,
|
|
30
|
+
`kimi-code/kimi-for-coding`, `kimi-code/kimi-for-coding-highspeed`); the
|
|
31
|
+
stale `kimi-k2.7` entry was removed.
|
|
32
|
+
- Docs clarifications: Kimi reasoning-effort wording now states that the Kimi
|
|
33
|
+
CLI exposes no effort flag (k3 supports effort internally via
|
|
34
|
+
`~/.kimi-code/config.toml`) and that Delegate rejects `--reasoning-effort`
|
|
35
|
+
for Kimi; the CLI reference notes that `usage: unavailable` in Kimi run JSON
|
|
36
|
+
is expected because the Kimi CLI emits no usage/token lines in stream-json
|
|
37
|
+
output.
|
|
38
|
+
- Kimi work-mode docs restate current behavior: Delegate emits no `--yolo` —
|
|
39
|
+
Kimi prompt mode auto-approves tool actions, and work mode edits the real
|
|
40
|
+
workspace by default. Temporary safe isolation or explicit worktree
|
|
41
|
+
isolation provides a workspace boundary, not a complete host sandbox.
|
|
42
|
+
|
|
43
|
+
## [0.15.0] - 2026-07-16
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- Work-mode worktree isolation now automatically carries tracked edits and
|
|
48
|
+
untracked, non-ignored files into the new worktree, with tracked/untracked
|
|
49
|
+
counts in human and JSON warnings and fail-clean teardown on sync errors.
|
|
50
|
+
- Child environments expose authoritative source/execution root metadata, and
|
|
51
|
+
Delegate-managed snapshot and worktree cleanup refuses targets that are or
|
|
52
|
+
contain the source workspace.
|
|
53
|
+
- Empty successful safe and read-only call results retry once when the prompt
|
|
54
|
+
can be safely extended; tracked runs retain both attempts and envelopes report
|
|
55
|
+
`emptyRetry` only when a retry was attempted.
|
|
56
|
+
- Bare Harness resolution in Snapshot, run-output, and wait now reports the
|
|
57
|
+
resolved Run, Alias, workspace, and age, with a stale-resolution warning after
|
|
58
|
+
24 hours.
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
|
|
62
|
+
- `run-output --tail N` now selects stdout when no output stream or Completion
|
|
63
|
+
Report was requested; stderr remains opt-in.
|
|
64
|
+
- Devin safe mode now fails during preflight with `unsupported_mode` rather than
|
|
65
|
+
launching without an enforceable read-only boundary.
|
|
66
|
+
- Call children use their throwaway cwd as `DELEGATE_SOURCE_ROOT`; the
|
|
67
|
+
Registry/config workspace is not disclosed to a stateless call.
|
|
68
|
+
|
|
69
|
+
### Fixed
|
|
70
|
+
|
|
71
|
+
- Empty-result retries now preserve cumulative duration, byte counts, usage,
|
|
72
|
+
truncation, stdin diagnostics, timeout budgets, and tracked launch-failure
|
|
73
|
+
state across primary, authentication-fallback, and retry attempts.
|
|
74
|
+
- Source-root cleanup guards now handle relative, symlinked, case-variant,
|
|
75
|
+
unresolved, and malformed paths conservatively without blocking safe cleanup
|
|
76
|
+
of source descendants.
|
|
77
|
+
- Dirty worktree sync preserves arbitrary filename bytes, rejects unsyncable
|
|
78
|
+
dirty submodules with escaped diagnostics, and documents the same behavior
|
|
79
|
+
consistently across the CLI reference and worktree guidance.
|
|
80
|
+
- Devin help and discovery surfaces now derive supported modes consistently and
|
|
81
|
+
reject unknown modes before constructing executable arguments.
|
|
82
|
+
|
|
8
83
|
## [0.14.0] - 2026-07-15
|
|
9
84
|
|
|
10
85
|
### Added
|
|
@@ -350,6 +425,8 @@ Usage-audit fix wave: 82 sessions and 1,241 delegate invocations from one week o
|
|
|
350
425
|
|
|
351
426
|
- Releases before 0.1.3 predate this changelog.
|
|
352
427
|
|
|
428
|
+
[0.16.0]: https://github.com/treygoff24/delegate-agent/compare/v0.15.0...v0.16.0
|
|
429
|
+
[0.15.0]: https://github.com/treygoff24/delegate-agent/compare/v0.14.0...v0.15.0
|
|
353
430
|
[0.14.0]: https://github.com/treygoff24/delegate-agent/compare/v0.13.1...v0.14.0
|
|
354
431
|
[0.13.1]: https://github.com/treygoff24/delegate-agent/compare/v0.13.0...v0.13.1
|
|
355
432
|
[0.13.0]: https://github.com/treygoff24/delegate-agent/compare/v0.12.0...v0.13.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: delegate-agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.16.0
|
|
4
4
|
Summary: A tiny CLI for delegating bounded agent tasks to Cursor, Droid, OpenAI Codex, Claude Code, Grok Build, or Kimi Code runtimes.
|
|
5
5
|
Author: Trey Goff
|
|
6
6
|
License-Expression: MIT
|
|
@@ -163,7 +163,6 @@ Run a read-only review in an isolated throwaway workspace:
|
|
|
163
163
|
delegate codex safe "Review this repository for correctness risks. Do not edit files."
|
|
164
164
|
delegate claude safe "Review this repository for correctness risks. Do not edit files."
|
|
165
165
|
delegate grok safe "Review this repository for correctness risks. Do not edit files."
|
|
166
|
-
delegate devin safe "Review this repository for correctness risks. Do not edit files."
|
|
167
166
|
delegate opencode safe "Review this repository for correctness risks. Do not edit files."
|
|
168
167
|
delegate cursor safe "Review the current diff for regressions. Do not edit files."
|
|
169
168
|
delegate kimi safe "Review this repository for regressions. Do not edit files."
|
|
@@ -191,7 +190,7 @@ raw model ID passed through verbatim). Droid still accepts a positional alias;
|
|
|
191
190
|
`--model` works on every engine, including Droid:
|
|
192
191
|
|
|
193
192
|
```bash
|
|
194
|
-
delegate devin
|
|
193
|
+
delegate devin work --model implementer "Implement the scoped change and report it."
|
|
195
194
|
delegate droid work --model custom:my-model "Implement the scoped change."
|
|
196
195
|
delegate --json dry-run codex safe --model fast "Review this repository. Do not edit files."
|
|
197
196
|
```
|
|
@@ -230,7 +229,7 @@ prompt framing, and no session persistence or tools according to the engine
|
|
|
230
229
|
capability contract. Claude receives the prompt only on stdin and is
|
|
231
230
|
schema-capable via `--output-schema`; `delegate --json describe` reports
|
|
232
231
|
`pureCall`, `structuredOutput`, `noSessionPersistence`, `usageEvents`, and
|
|
233
|
-
`promptStdin` per engine. `--timeout SECONDS` applies to every
|
|
232
|
+
`promptStdin` per engine. `--timeout SECONDS` applies to every engine in any mode (calls and tracked safe/work runs, but not `--pass-through`).
|
|
234
233
|
|
|
235
234
|
For multi-step fan-out or gated review flows, use Delegate Workflows. A workflow
|
|
236
235
|
is a Python script that launches normal Delegate child runs, journals progress,
|
|
@@ -327,9 +326,9 @@ Delegate separates three ideas:
|
|
|
327
326
|
|
|
328
327
|
Defaults are intentionally conservative for review paths:
|
|
329
328
|
|
|
330
|
-
- `delegate cursor safe`, `delegate codex safe`, `delegate claude safe`, `delegate grok safe`, `delegate
|
|
329
|
+
- `delegate cursor safe`, `delegate codex safe`, `delegate claude safe`, `delegate grok safe`, `delegate opencode safe`, `delegate droid ALIAS safe`, and `delegate kimi safe` run in an isolated throwaway workspace. Safe mode reviews your **current working tree** — uncommitted tracked edits and untracked, non-ignored files are mirrored into an isolated throwaway copy (only gitignored paths are excluded), so you can review local changes without committing first or pasting a diff.
|
|
331
330
|
- Grok safe mode uses Delegate isolated copy plus Grok read-only sandbox/permission controls (`--sandbox read-only`, `--permission-mode dontAsk` by default). It does not use Grok `plan` mode. Prompts are delivered via Grok `--prompt-file` from a Delegate temp file.
|
|
332
|
-
- Devin safe mode
|
|
331
|
+
- Devin safe mode is unsupported: Devin may implement filesystem surveys through the generic `exec` tool, which Delegate cannot permit without weakening the read-only boundary. Use another safe Harness for filesystem review. Devin work mode uses `--permission-mode dangerous` because Devin print mode rejects unapproved edit/exec tools.
|
|
333
332
|
- OpenCode safe mode uses Delegate's isolated copy plus an `OPENCODE_CONFIG_CONTENT` permission lockdown that allows only read, glob, and grep operations. OpenCode merges this override last, so repository configuration cannot restore write-capable tools. `opencode call --read-only` uses the same lockdown; plain `call` does not.
|
|
334
333
|
- Claude safe mode invokes `claude -p` with prompt text on stdin, `--permission-mode plan`, `--strict-mcp-config`, Read/Grep/Glob plus selected read-only Bash tools, and `--no-session-persistence` by default. Delegate does not currently prove that Claude Code hooks, plugins, user settings, or other non-MCP customization surfaces are disabled.
|
|
335
334
|
- `work` mode can edit. By default it runs in the real workspace for backward compatibility.
|
|
@@ -352,12 +351,12 @@ child where that summary is available. `--forbid-commit` fails the run if
|
|
|
352
351
|
commits remain ahead of the creation base when the child exits, and it now
|
|
353
352
|
implies `--isolation worktree`.
|
|
354
353
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
354
|
+
Work-mode worktree runs automatically sync tracked edits and untracked,
|
|
355
|
+
non-ignored files from a dirty source checkout before launch, report the counts
|
|
356
|
+
in a `dirty_source_auto_included` warning, and tear down the worktree if syncing
|
|
357
|
+
fails. `--include-dirty` remains an explicit, harmless no-op on a clean source.
|
|
359
358
|
|
|
360
|
-
Safe isolation and `--include-dirty` recreate an untracked symlink only when it is relative, resolves inside the source workspace, and its target is not gitignored; any symlink that fails those checks — an absolute target, an escape out of the tree, or a target that is itself a gitignored secret — is replaced with an inert placeholder file, failing closed on any ambiguity. Delegate reports a warning listing the symlink paths it blocked. In Git repositories with no commits yet, Cursor/Codex/Claude/Droid/Grok/
|
|
359
|
+
Safe isolation and `--include-dirty` recreate an untracked symlink only when it is relative, resolves inside the source workspace, and its target is not gitignored; any symlink that fails those checks — an absolute target, an escape out of the tree, or a target that is itself a gitignored secret — is replaced with an inert placeholder file, failing closed on any ambiguity. Delegate reports a warning listing the symlink paths it blocked. In Git repositories with no commits yet, Cursor/Codex/Claude/Droid/Grok/OpenCode/Kimi safe isolation falls back to a directory copy because Git cannot create a detached worktree from an unborn `HEAD`.
|
|
361
360
|
|
|
362
361
|
Snapshots and `run-output` redact common credential shapes by default, including authorization headers, bearer/basic tokens, JWT-like strings, and common `token=` / `api_key=` / `password=` values. Use `--no-redact` only when exact output is necessary and safe to display.
|
|
363
362
|
|
|
@@ -399,6 +398,6 @@ AI_PROFILE delegate ...` uses the base config, or set
|
|
|
399
398
|
|
|
400
399
|
- Delegate is an alpha CLI wrapper. Child runtimes can change their own flags or behavior.
|
|
401
400
|
- Safe mode is a policy and isolation pattern, not a guarantee that a runtime cannot perform side effects outside its execution workspace.
|
|
402
|
-
- Persistent worktrees require a Git repository with a valid `HEAD
|
|
401
|
+
- Persistent worktrees require a Git repository with a valid `HEAD`.
|
|
403
402
|
- `--pass-through` is incompatible with `--json` and with persistent worktree runs.
|
|
404
403
|
- Delegate stores local run metadata under `.delegate/`; do not commit that directory.
|
|
@@ -130,7 +130,6 @@ Run a read-only review in an isolated throwaway workspace:
|
|
|
130
130
|
delegate codex safe "Review this repository for correctness risks. Do not edit files."
|
|
131
131
|
delegate claude safe "Review this repository for correctness risks. Do not edit files."
|
|
132
132
|
delegate grok safe "Review this repository for correctness risks. Do not edit files."
|
|
133
|
-
delegate devin safe "Review this repository for correctness risks. Do not edit files."
|
|
134
133
|
delegate opencode safe "Review this repository for correctness risks. Do not edit files."
|
|
135
134
|
delegate cursor safe "Review the current diff for regressions. Do not edit files."
|
|
136
135
|
delegate kimi safe "Review this repository for regressions. Do not edit files."
|
|
@@ -158,7 +157,7 @@ raw model ID passed through verbatim). Droid still accepts a positional alias;
|
|
|
158
157
|
`--model` works on every engine, including Droid:
|
|
159
158
|
|
|
160
159
|
```bash
|
|
161
|
-
delegate devin
|
|
160
|
+
delegate devin work --model implementer "Implement the scoped change and report it."
|
|
162
161
|
delegate droid work --model custom:my-model "Implement the scoped change."
|
|
163
162
|
delegate --json dry-run codex safe --model fast "Review this repository. Do not edit files."
|
|
164
163
|
```
|
|
@@ -197,7 +196,7 @@ prompt framing, and no session persistence or tools according to the engine
|
|
|
197
196
|
capability contract. Claude receives the prompt only on stdin and is
|
|
198
197
|
schema-capable via `--output-schema`; `delegate --json describe` reports
|
|
199
198
|
`pureCall`, `structuredOutput`, `noSessionPersistence`, `usageEvents`, and
|
|
200
|
-
`promptStdin` per engine. `--timeout SECONDS` applies to every
|
|
199
|
+
`promptStdin` per engine. `--timeout SECONDS` applies to every engine in any mode (calls and tracked safe/work runs, but not `--pass-through`).
|
|
201
200
|
|
|
202
201
|
For multi-step fan-out or gated review flows, use Delegate Workflows. A workflow
|
|
203
202
|
is a Python script that launches normal Delegate child runs, journals progress,
|
|
@@ -294,9 +293,9 @@ Delegate separates three ideas:
|
|
|
294
293
|
|
|
295
294
|
Defaults are intentionally conservative for review paths:
|
|
296
295
|
|
|
297
|
-
- `delegate cursor safe`, `delegate codex safe`, `delegate claude safe`, `delegate grok safe`, `delegate
|
|
296
|
+
- `delegate cursor safe`, `delegate codex safe`, `delegate claude safe`, `delegate grok safe`, `delegate opencode safe`, `delegate droid ALIAS safe`, and `delegate kimi safe` run in an isolated throwaway workspace. Safe mode reviews your **current working tree** — uncommitted tracked edits and untracked, non-ignored files are mirrored into an isolated throwaway copy (only gitignored paths are excluded), so you can review local changes without committing first or pasting a diff.
|
|
298
297
|
- Grok safe mode uses Delegate isolated copy plus Grok read-only sandbox/permission controls (`--sandbox read-only`, `--permission-mode dontAsk` by default). It does not use Grok `plan` mode. Prompts are delivered via Grok `--prompt-file` from a Delegate temp file.
|
|
299
|
-
- Devin safe mode
|
|
298
|
+
- Devin safe mode is unsupported: Devin may implement filesystem surveys through the generic `exec` tool, which Delegate cannot permit without weakening the read-only boundary. Use another safe Harness for filesystem review. Devin work mode uses `--permission-mode dangerous` because Devin print mode rejects unapproved edit/exec tools.
|
|
300
299
|
- OpenCode safe mode uses Delegate's isolated copy plus an `OPENCODE_CONFIG_CONTENT` permission lockdown that allows only read, glob, and grep operations. OpenCode merges this override last, so repository configuration cannot restore write-capable tools. `opencode call --read-only` uses the same lockdown; plain `call` does not.
|
|
301
300
|
- Claude safe mode invokes `claude -p` with prompt text on stdin, `--permission-mode plan`, `--strict-mcp-config`, Read/Grep/Glob plus selected read-only Bash tools, and `--no-session-persistence` by default. Delegate does not currently prove that Claude Code hooks, plugins, user settings, or other non-MCP customization surfaces are disabled.
|
|
302
301
|
- `work` mode can edit. By default it runs in the real workspace for backward compatibility.
|
|
@@ -319,12 +318,12 @@ child where that summary is available. `--forbid-commit` fails the run if
|
|
|
319
318
|
commits remain ahead of the creation base when the child exits, and it now
|
|
320
319
|
implies `--isolation worktree`.
|
|
321
320
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
321
|
+
Work-mode worktree runs automatically sync tracked edits and untracked,
|
|
322
|
+
non-ignored files from a dirty source checkout before launch, report the counts
|
|
323
|
+
in a `dirty_source_auto_included` warning, and tear down the worktree if syncing
|
|
324
|
+
fails. `--include-dirty` remains an explicit, harmless no-op on a clean source.
|
|
326
325
|
|
|
327
|
-
Safe isolation and `--include-dirty` recreate an untracked symlink only when it is relative, resolves inside the source workspace, and its target is not gitignored; any symlink that fails those checks — an absolute target, an escape out of the tree, or a target that is itself a gitignored secret — is replaced with an inert placeholder file, failing closed on any ambiguity. Delegate reports a warning listing the symlink paths it blocked. In Git repositories with no commits yet, Cursor/Codex/Claude/Droid/Grok/
|
|
326
|
+
Safe isolation and `--include-dirty` recreate an untracked symlink only when it is relative, resolves inside the source workspace, and its target is not gitignored; any symlink that fails those checks — an absolute target, an escape out of the tree, or a target that is itself a gitignored secret — is replaced with an inert placeholder file, failing closed on any ambiguity. Delegate reports a warning listing the symlink paths it blocked. In Git repositories with no commits yet, Cursor/Codex/Claude/Droid/Grok/OpenCode/Kimi safe isolation falls back to a directory copy because Git cannot create a detached worktree from an unborn `HEAD`.
|
|
328
327
|
|
|
329
328
|
Snapshots and `run-output` redact common credential shapes by default, including authorization headers, bearer/basic tokens, JWT-like strings, and common `token=` / `api_key=` / `password=` values. Use `--no-redact` only when exact output is necessary and safe to display.
|
|
330
329
|
|
|
@@ -366,6 +365,6 @@ AI_PROFILE delegate ...` uses the base config, or set
|
|
|
366
365
|
|
|
367
366
|
- Delegate is an alpha CLI wrapper. Child runtimes can change their own flags or behavior.
|
|
368
367
|
- Safe mode is a policy and isolation pattern, not a guarantee that a runtime cannot perform side effects outside its execution workspace.
|
|
369
|
-
- Persistent worktrees require a Git repository with a valid `HEAD
|
|
368
|
+
- Persistent worktrees require a Git repository with a valid `HEAD`.
|
|
370
369
|
- `--pass-through` is incompatible with `--json` and with persistent worktree runs.
|
|
371
370
|
- Delegate stores local run metadata under `.delegate/`; do not commit that directory.
|
|
@@ -96,7 +96,7 @@ When running on Windows through WSL, treat Delegate as a Linux CLI:
|
|
|
96
96
|
delegate --json dry-run claude safe --reasoning-effort high "Review only. Do not edit files."
|
|
97
97
|
delegate --json dry-run grok safe "Review only. Do not edit files."
|
|
98
98
|
delegate --json dry-run grok safe --reasoning-effort high "Review only. Do not edit files."
|
|
99
|
-
delegate --json dry-run devin
|
|
99
|
+
delegate --json dry-run devin work "Describe the planned work invocation."
|
|
100
100
|
delegate --json dry-run opencode safe "Review only. Do not edit files."
|
|
101
101
|
delegate --json dry-run opencode safe --reasoning-effort high "Review only. Do not edit files."
|
|
102
102
|
delegate --json dry-run cursor safe "Review only. Do not edit files."
|
|
@@ -104,7 +104,7 @@ When running on Windows through WSL, treat Delegate as a Linux CLI:
|
|
|
104
104
|
delegate --json dry-run kimi safe "Review only. Do not edit files."
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
The Codex, Claude, Grok, Devin, OpenCode, Cursor, and Kimi dry-runs succeed with the unedited example config when no reasoning effort is requested. Explicit Codex reasoning-effort dry-runs can target the harness default model when no default model is configured. Claude and Grok reasoning effort map to native `--effort` flags; OpenCode reasoning effort maps to `--variant` without model validation. The Droid dry-run validates the alias, so it returns `unconfigured_model` until you replace the `reviewer` placeholder in `config.json` with a real model ID.
|
|
107
|
+
The Codex, Claude, Grok, Devin work, OpenCode, Cursor, and Kimi dry-runs succeed with the unedited example config when no reasoning effort is requested. Devin safe mode is intentionally rejected because filesystem surveys may require generic `exec`, which cannot be allowed without weakening the read-only boundary. Explicit Codex reasoning-effort dry-runs can target the harness default model when no default model is configured. Claude and Grok reasoning effort map to native `--effort` flags; OpenCode reasoning effort maps to `--variant` without model validation. The Droid dry-run validates the alias, so it returns `unconfigured_model` until you replace the `reviewer` placeholder in `config.json` with a real model ID.
|
|
108
108
|
|
|
109
109
|
### OpenCode
|
|
110
110
|
|
|
@@ -20,33 +20,33 @@ Use `delegate --help` for the exact command list from the installed version. Glo
|
|
|
20
20
|
### Direct runtime commands
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
delegate cursor safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
24
|
-
delegate cursor work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
25
|
-
delegate cursor call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
23
|
+
delegate cursor safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
24
|
+
delegate cursor work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
25
|
+
delegate cursor call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
26
26
|
|
|
27
|
-
delegate droid [MODEL_ALIAS] safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
28
|
-
delegate droid [MODEL_ALIAS] work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
29
|
-
delegate droid [MODEL_ALIAS] call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
27
|
+
delegate droid [MODEL_ALIAS] safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
28
|
+
delegate droid [MODEL_ALIAS] work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
29
|
+
delegate droid [MODEL_ALIAS] call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
30
30
|
|
|
31
|
-
delegate codex safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
32
|
-
delegate codex work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
33
|
-
delegate codex call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
31
|
+
delegate codex safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
32
|
+
delegate codex work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
33
|
+
delegate codex call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
34
34
|
|
|
35
|
-
delegate claude safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
36
|
-
delegate claude work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
37
|
-
delegate claude call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
35
|
+
delegate claude safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
36
|
+
delegate claude work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
37
|
+
delegate claude call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
38
38
|
|
|
39
|
-
delegate grok safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
40
|
-
delegate grok work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
41
|
-
delegate grok call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
39
|
+
delegate grok safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
40
|
+
delegate grok work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
41
|
+
delegate grok call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
42
42
|
|
|
43
|
-
delegate opencode safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
44
|
-
delegate opencode work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
45
|
-
delegate opencode call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--prompt-file PATH] [prompt...]
|
|
43
|
+
delegate opencode safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
44
|
+
delegate opencode work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
45
|
+
delegate opencode call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--prompt-file PATH] [prompt...]
|
|
46
46
|
|
|
47
|
-
delegate kimi safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
48
|
-
delegate kimi work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
49
|
-
delegate kimi call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
47
|
+
delegate kimi safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
48
|
+
delegate kimi work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
49
|
+
delegate kimi call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
Prompt sources are direct arguments, `--prompt-file`, or Delegate stdin. Raw C0 control characters other than newline, carriage return, and tab are stripped before launch; a prompt that becomes empty fails fast. After
|
|
@@ -82,7 +82,7 @@ and advisory catalogs with `delegate models`, `delegate models <engine>`, and
|
|
|
82
82
|
`delegate models <engine> --live` (live probes for cursor/droid/devin/opencode; other
|
|
83
83
|
engines report live unsupported).
|
|
84
84
|
|
|
85
|
-
`--reasoning-effort LEVEL` is optional and parsed only before prompt text begins. Engines with capability metadata reject unsupported model/effort pairs before launch with `unsupported_reasoning_effort`. It affects only model reasoning depth, cost, or latency; it does not change `safe`/`work`/`call` permissions, sandboxing, approvals, network policy, or edit capability. Cursor effort is model-selection based and requires `cursor.reasoningEffortModels`; an explicit `--model` wins over effort→model routing. Droid emits `--reasoning-effort LEVEL`; Codex emits a `model_reasoning_effort` config override for the resolved model, or for the Codex harness default model when no `codex.defaultModel` is configured and the request was explicit; Claude emits Claude Code `--effort LEVEL`; Grok emits Grok `--effort LEVEL` (`low`, `medium`, `high`, `xhigh`, `max`); OpenCode emits `--variant LEVEL` without validating it against the selected model. Kimi
|
|
85
|
+
`--reasoning-effort LEVEL` is optional and parsed only before prompt text begins. Engines with capability metadata reject unsupported model/effort pairs before launch with `unsupported_reasoning_effort`. It affects only model reasoning depth, cost, or latency; it does not change `safe`/`work`/`call` permissions, sandboxing, approvals, network policy, or edit capability. Cursor effort is model-selection based and requires `cursor.reasoningEffortModels`; an explicit `--model` wins over effort→model routing. Droid emits `--reasoning-effort LEVEL`; Codex emits a `model_reasoning_effort` config override for the resolved model, or for the Codex harness default model when no `codex.defaultModel` is configured and the request was explicit; Claude emits Claude Code `--effort LEVEL`; Grok emits Grok `--effort LEVEL` (`low`, `medium`, `high`, `xhigh`, `max`); OpenCode emits `--variant LEVEL` without validating it against the selected model. The Kimi CLI exposes no effort flag; k3 supports effort internally via `~/.kimi-code/config.toml`, so Delegate rejects `--reasoning-effort` for Kimi.
|
|
86
86
|
|
|
87
87
|
`--fast` and `--no-fast` are Codex-only, mutually exclusive per-run service-tier overrides. `--fast` emits `service_tier="fast"` plus `features.fast_mode=true` (Codex silently drops a Fast tier when that feature flag is off in the ambient config, so Delegate enables it explicitly); `--no-fast` emits `service_tier="default"` so a globally enabled Fast setting can be turned off for one child. Omitting both emits no override and inherits Codex configuration. Fast is orthogonal to model selection, reasoning effort, and Delegate safety policy. Two upstream caveats: Codex strips the service tier when authenticated with an API key (Fast is a ChatGPT-plan feature), and neither Codex nor the API fails on a tier the model does not offer — Delegate's flag validation is the only fail-closed layer, so an unsupported combination degrades silently to standard routing rather than erroring.
|
|
88
88
|
|
|
@@ -103,12 +103,13 @@ warning plus suggested review commands, but does not fail solely because commits
|
|
|
103
103
|
exist. Validation rejects `--forbid-commit` outside `work` mode, and explicit
|
|
104
104
|
`--isolation none --forbid-commit` remains invalid.
|
|
105
105
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
106
|
+
Work-mode persistent worktrees automatically copy uncommitted tracked changes
|
|
107
|
+
and untracked non-ignored files from a dirty source checkout before the child
|
|
108
|
+
starts. Gitignored files remain excluded, and external symlinks are blocked with
|
|
109
|
+
the same protections used by safe-mode workspace sync. Automatic sync emits a
|
|
110
|
+
`dirty_source_auto_included` warning with tracked-modified and untracked counts.
|
|
111
|
+
`--include-dirty` remains an explicit launch flag and is a no-op when the source
|
|
112
|
+
is already clean.
|
|
112
113
|
JSON and text completion output report `includeDirty: true` / `syncedFiles`.
|
|
113
114
|
`run --input-json` accepts the equivalent boolean field `includeDirty`.
|
|
114
115
|
|
|
@@ -118,11 +119,9 @@ A few boundaries are worth stating explicitly:
|
|
|
118
119
|
repo history but also matched by a `.gitignore` rule is part of the repository
|
|
119
120
|
and is synced like any other tracked file; `--include-dirty` excludes only
|
|
120
121
|
untracked gitignored paths, not tracked ones.
|
|
121
|
-
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
skipped, so dirty submodules do not block the launch and submodule
|
|
125
|
-
working-tree state is not mirrored.
|
|
122
|
+
- **Dirty submodules fail preflight.** Delegate auto-syncs ordinary tracked and
|
|
123
|
+
untracked non-ignored source changes, but cannot safely reproduce dirty
|
|
124
|
+
submodule state, so it refuses the launch until that submodule is clean.
|
|
126
125
|
- **Keep secrets out of hardlinks.** A hardlink at a non-ignored path to
|
|
127
126
|
gitignored content is indistinguishable from a regular file and will sync by
|
|
128
127
|
content; `--include-dirty` trusts every non-ignored path. Path-based exclusion
|
|
@@ -151,8 +150,8 @@ auth/env selection happens.
|
|
|
151
150
|
Usage:
|
|
152
151
|
|
|
153
152
|
```bash
|
|
154
|
-
delegate [--json] [--isolation auto|none|worktree] codex {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
155
|
-
delegate [--json] codex call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
153
|
+
delegate [--json] [--isolation auto|none|worktree] codex {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
154
|
+
delegate [--json] codex call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--fast|--no-fast] [--prompt-file PATH] [--output-schema FILE] [prompt...]
|
|
156
155
|
```
|
|
157
156
|
|
|
158
157
|
- Safe mode reviews your **current working tree** — uncommitted tracked edits and untracked, non-ignored files are mirrored into an isolated throwaway copy (only gitignored paths are excluded), so you can review local changes without committing first or pasting a diff. Codex safe always uses `--sandbox read-only`. Under `--isolation auto`, Codex safe is the only safe harness that may opt out with `--isolation none`, because Codex still keeps its read-only sandbox active.
|
|
@@ -166,7 +165,7 @@ Examples:
|
|
|
166
165
|
|
|
167
166
|
```bash
|
|
168
167
|
delegate codex safe "Review this repo for regressions; report file/line/severity."
|
|
169
|
-
delegate codex safe --model
|
|
168
|
+
delegate codex safe --model reviewer "Review this repo for regressions; report file/line/severity."
|
|
170
169
|
delegate codex safe --model my-alias --reasoning-effort medium --fast "Explore likely causes."
|
|
171
170
|
delegate codex work "Implement the scoped task; report changed files and tests."
|
|
172
171
|
delegate codex call "Summarize this context in three bullets."
|
|
@@ -179,8 +178,8 @@ delegate --isolation worktree codex work "Implement the feature in a persistent
|
|
|
179
178
|
Usage:
|
|
180
179
|
|
|
181
180
|
```bash
|
|
182
|
-
delegate [--json] [--isolation auto|none|worktree] claude {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
183
|
-
delegate [--json] claude call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
181
|
+
delegate [--json] [--isolation auto|none|worktree] claude {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
182
|
+
delegate [--json] claude call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
184
183
|
```
|
|
185
184
|
|
|
186
185
|
- Safe mode reviews your **current working tree** — uncommitted tracked edits and untracked, non-ignored files are mirrored into an isolated throwaway copy (only gitignored paths are excluded), so you can review local changes without committing first or pasting a diff. Under `--isolation auto`, Claude safe uses `--permission-mode plan`, `--strict-mcp-config`, Read/Grep/Glob, and selected read-only Bash tools such as `git diff`/`git status`.
|
|
@@ -195,7 +194,7 @@ Examples:
|
|
|
195
194
|
|
|
196
195
|
```bash
|
|
197
196
|
delegate claude safe "Review this repo for regressions; report file/line/severity."
|
|
198
|
-
delegate claude work --model
|
|
197
|
+
delegate claude work --model implementer "Implement the scoped task; report changed files and tests."
|
|
199
198
|
delegate claude call "Summarize this context in three bullets."
|
|
200
199
|
delegate --isolation worktree claude work "Implement the feature in a persistent worktree."
|
|
201
200
|
```
|
|
@@ -205,8 +204,8 @@ delegate --isolation worktree claude work "Implement the feature in a persistent
|
|
|
205
204
|
Usage:
|
|
206
205
|
|
|
207
206
|
```bash
|
|
208
|
-
delegate [--json] [--isolation auto|none|worktree] grok {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
209
|
-
delegate [--json] grok call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
207
|
+
delegate [--json] [--isolation auto|none|worktree] grok {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
208
|
+
delegate [--json] grok call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
210
209
|
```
|
|
211
210
|
|
|
212
211
|
- Safe mode reviews your **current working tree** in an isolated throwaway copy plus Grok read-only controls (`--sandbox read-only`, `--permission-mode dontAsk` by default). Delegate does not use Grok `plan` mode for safe review.
|
|
@@ -230,8 +229,8 @@ delegate --isolation worktree grok work "Implement the feature in a persistent w
|
|
|
230
229
|
Wraps OpenCode's non-interactive `run` command.
|
|
231
230
|
|
|
232
231
|
```bash
|
|
233
|
-
delegate [--json] [--isolation auto|none|worktree] opencode {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
234
|
-
delegate [--json] opencode call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--prompt-file PATH] [prompt...]
|
|
232
|
+
delegate [--json] [--isolation auto|none|worktree] opencode {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
233
|
+
delegate [--json] opencode call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--agent NAME] [--prompt-file PATH] [prompt...]
|
|
235
234
|
```
|
|
236
235
|
|
|
237
236
|
- Safe mode reviews the current working tree in an isolated throwaway copy. It
|
|
@@ -251,9 +250,9 @@ delegate [--json] opencode call [--read-only] [--model <alias-or-model>] [--reas
|
|
|
251
250
|
{
|
|
252
251
|
"opencode": {
|
|
253
252
|
"models": {
|
|
254
|
-
"
|
|
255
|
-
"
|
|
256
|
-
"model": "
|
|
253
|
+
"reviewer": "provider/model",
|
|
254
|
+
"reviewer-high": {
|
|
255
|
+
"model": "provider/model",
|
|
257
256
|
"variant": "high"
|
|
258
257
|
}
|
|
259
258
|
}
|
|
@@ -273,14 +272,15 @@ delegate [--json] opencode call [--read-only] [--model <alias-or-model>] [--reas
|
|
|
273
272
|
`workflows.engineCaps` like other engines.
|
|
274
273
|
- OpenCode currently buffers stdout until completion, so progress can remain
|
|
275
274
|
silent even though `--print-logs` stderr is visible. Sessions accumulate in
|
|
276
|
-
the user's global OpenCode state. Call mode has no Delegate timeout
|
|
275
|
+
the user's global OpenCode state. Call mode has no Delegate timeout unless
|
|
276
|
+
`--timeout` is set.
|
|
277
277
|
|
|
278
278
|
Examples:
|
|
279
279
|
|
|
280
280
|
```bash
|
|
281
281
|
delegate opencode safe "Review this repo for regressions; report file/line/severity."
|
|
282
282
|
delegate opencode work --agent build "Implement the scoped task; report changed files and tests."
|
|
283
|
-
delegate opencode call --read-only --model
|
|
283
|
+
delegate opencode call --read-only --model reviewer --prompt-file rubric.md
|
|
284
284
|
delegate --isolation worktree opencode work "Implement the feature in a persistent worktree."
|
|
285
285
|
```
|
|
286
286
|
|
|
@@ -289,15 +289,16 @@ delegate --isolation worktree opencode work "Implement the feature in a persiste
|
|
|
289
289
|
Usage:
|
|
290
290
|
|
|
291
291
|
```bash
|
|
292
|
-
delegate [--json] [--isolation auto|none|worktree] kimi {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
293
|
-
delegate [--json] kimi call [--read-only] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
292
|
+
delegate [--json] [--isolation auto|none|worktree] kimi {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH] [prompt...]
|
|
293
|
+
delegate [--json] kimi call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--prompt-file PATH] [prompt...]
|
|
294
294
|
```
|
|
295
295
|
|
|
296
296
|
- Safe mode reviews your **current working tree** — uncommitted tracked edits and untracked, non-ignored files are mirrored into an isolated throwaway copy (only gitignored paths are excluded), so you can review local changes without committing first or pasting a diff. Under `--isolation auto`, Kimi safe uses a read-only safety prompt. Delegate intentionally avoids Kimi `--plan` in safe mode. Kimi prompt mode auto-approves tool actions, so the isolation is the effective write boundary; the safety prompt is advisory.
|
|
297
297
|
- Work mode uses Kimi prompt mode and runs in the real workspace unless you opt into worktree isolation. Delegate does not emit `--yolo` because Kimi rejects combining `--yolo` with `--prompt`.
|
|
298
298
|
- Model selection uses `--model` (alias from `kimi.models` or a raw model ID), the run-input JSON `model`, or `kimi.defaultModel`.
|
|
299
|
-
- `--reasoning-effort` is
|
|
299
|
+
- `--reasoning-effort` is rejected for Kimi: the Kimi CLI exposes no effort flag, and k3 supports effort internally via `~/.kimi-code/config.toml`.
|
|
300
300
|
- Kimi prompt text is passed via argv.
|
|
301
|
+
- Run JSON reports `usage: unavailable` for Kimi — expected: the Kimi CLI (verified 0.26.0) emits no usage/token lines in stream-json output, so there is nothing to parse.
|
|
301
302
|
|
|
302
303
|
Examples:
|
|
303
304
|
|
|
@@ -431,12 +432,16 @@ and ambient customization, disables session persistence, and receives the prompt
|
|
|
431
432
|
only on stdin. Use `--output-schema FILE` with Claude (schema contents inline)
|
|
432
433
|
or with ordinary Codex call mode (schema path).
|
|
433
434
|
|
|
434
|
-
`--timeout SECONDS` is a positive integer
|
|
435
|
-
|
|
436
|
-
`call_timeout`
|
|
435
|
+
`--timeout SECONDS` is a positive integer accepted in every mode. It bounds
|
|
436
|
+
calls and tracked `safe`/`work` runs alike: on expiry Delegate terminates the
|
|
437
|
+
whole child process group and returns `call_timeout` (a historical error-code
|
|
438
|
+
name kept for API stability) with exit code 1. `--timeout` is not supported
|
|
439
|
+
with `--pass-through`, which streams the child without a tracked deadline.
|
|
437
440
|
|
|
438
|
-
`--read-only
|
|
439
|
-
`safe`/`work` is rejected.
|
|
441
|
+
`--read-only` and `--pure` apply only to `call`; passing them with
|
|
442
|
+
`safe`/`work` is rejected. Empty-result retry applies to safe runs and read-only
|
|
443
|
+
calls when the prompt can be safely extended; write-capable, pure, and verbatim
|
|
444
|
+
calls are not retried.
|
|
440
445
|
Because the child call is stateless, `--isolation`, `--pass-through`,
|
|
441
446
|
`--progress`, `--forbid-commit`, and markdown completion reports are rejected.
|
|
442
447
|
An ordinary call also rejects `--cwd`.
|
|
@@ -451,7 +456,7 @@ delegate --cwd /path/to/project --group wf_0123abcdef45 codex call "Summarize th
|
|
|
451
456
|
```
|
|
452
457
|
|
|
453
458
|
The child still executes in an empty temporary cwd; `--cwd` does not give it the
|
|
454
|
-
project tree. Dry-run accepts the same combination for faithful planning but
|
|
459
|
+
project tree or leak it through Delegate root metadata. Dry-run accepts the same combination for faithful planning but
|
|
455
460
|
creates no run entry. Use `safe` or `work` when the child should see the project
|
|
456
461
|
tree.
|
|
457
462
|
|
|
@@ -499,7 +504,7 @@ Typical dry-run JSON fields:
|
|
|
499
504
|
|
|
500
505
|
When a profile is active, dry-run and completion payloads add `authProfile` (the resolved profile name) and, when a Codex fallback profile is configured, `fallbackProfile`. Dry-run also adds `profileEnv` (the injected env map, with values redacted). These keys are omitted when no profile is active.
|
|
501
506
|
|
|
502
|
-
For Cursor, Claude, Grok,
|
|
507
|
+
For Cursor, Claude, Grok, OpenCode, Droid, and Kimi safe mode, an explicit `--isolation none`
|
|
503
508
|
is normalized to `auto` with a warning because those safe contracts depend on
|
|
504
509
|
the temporary workspace/config boundary. Codex safe can use `none` because Codex
|
|
505
510
|
still runs with its read-only sandbox.
|
|
@@ -578,6 +583,7 @@ Supported input keys:
|
|
|
578
583
|
"progress": true,
|
|
579
584
|
"forbidCommit": true,
|
|
580
585
|
"includeDirty": true,
|
|
586
|
+
"timeout": 30,
|
|
581
587
|
"outputSchema": "/path/to/schema.json",
|
|
582
588
|
"prompt": "Implement the scoped task and report changed files."
|
|
583
589
|
}
|
|
@@ -585,14 +591,16 @@ Supported input keys:
|
|
|
585
591
|
|
|
586
592
|
- `engine`: `cursor`, `droid`, `codex`, `claude`, `grok`, `devin`, `opencode`, or `kimi`.
|
|
587
593
|
- `mode`: `safe`, `work`, or `call`.
|
|
594
|
+
- The `devin` engine rejects `safe` with `unsupported_mode` during preflight. Devin filesystem surveys may require generic `exec`, which Delegate cannot allow without weakening the read-only boundary; use another safe Harness for filesystem review.
|
|
588
595
|
- `model`: optional alias-or-id for every engine. Resolved against `<engine>.models` when it matches an alias; otherwise passed through as a raw model ID. For Droid, a positional alias remains alias-only/strict; JSON/`--model` is alias-or-id. Cursor honors an explicit model even when it differs from `cursor.defaultModel`.
|
|
589
596
|
- `cwd`: optional workspace path. Git directories resolve to the repo root. Omit it for `mode: "call"`, which always uses an empty temporary cwd.
|
|
590
|
-
- `isolation`: optional `auto`, `none`, or `worktree`. `null` is invalid. `mode: "call"` rejects isolation. For Cursor, Claude, Grok,
|
|
597
|
+
- `isolation`: optional `auto`, `none`, or `worktree`. `null` is invalid. `mode: "call"` rejects isolation. For Cursor, Claude, Grok, OpenCode, Droid, and Kimi safe mode, `none` is normalized to `auto` with a warning.
|
|
591
598
|
- `reasoningEffort`: optional non-empty effort string. It overrides provider `defaultReasoningEffort` for that JSON run.
|
|
592
599
|
- `fast`: optional Codex-only boolean or `null`. `true` requests Fast, `false` explicitly requests Standard, and `null`/omission inherits Codex configuration.
|
|
593
600
|
- `progress`: optional boolean. `true` enables parent progress heartbeats on stderr; `false` disables them even when `progress.enabled` is true in config. When omitted, config `progress.enabled` applies (default `false`). `mode: "call"` rejects progress.
|
|
594
601
|
- `forbidCommit`: optional boolean. `true` requires `mode: "work"` with persistent worktree isolation and fails the run if the child creates commits. `mode: "call"` rejects commit policy.
|
|
595
602
|
- `includeDirty`: optional boolean. `true` requires `mode: "work"` with persistent worktree isolation and syncs tracked edits plus untracked non-ignored files into the new worktree before launch.
|
|
603
|
+
- `timeout`: optional positive integer seconds, with the same semantics as `--timeout`. Non-integer, boolean, or non-positive values fail with `invalid_timeout`; combining it with pass-through is rejected.
|
|
596
604
|
- `outputSchema`: optional path to a JSON Schema for the final message. Supported for Codex and Claude call mode (same semantics as `--output-schema`). Other engines fail with `unsupported_output_schema`.
|
|
597
605
|
- `prompt`: required task prompt.
|
|
598
606
|
|
|
@@ -763,7 +771,7 @@ Codex usage-limit fallback fires, the completion payload also includes
|
|
|
763
771
|
`codexAuthFallback` metadata (reason, the primary and fallback profile names,
|
|
764
772
|
both exit codes, and a redacted primary stderr tail).
|
|
765
773
|
|
|
766
|
-
Snapshot JSON uses schema `delegate.snapshot.v1` and includes fields such as `alias`, `runId`, `harness`, `status`, `rawStatus`, `effectiveStatus`, `staleReason`, `nextActions`, `cwd`, `executionCwd`, `assistantText`, `recentEvents`, `warnings`, `exitCode`, reasoning metadata, terminal metadata, and isolation/worktree metadata when applicable. Inspection commands do not rewrite a stale run's recorded state; they expose the raw recorded status plus the effective status computed from the current PID check. Run-output and worktree show output include `requestedHandle`, `resolvedHandle`, and `resolutionKind` (`literal`, `latest`, or `latest_model`) when a handle resolves indirectly.
|
|
774
|
+
Snapshot JSON uses schema `delegate.snapshot.v1` and includes fields such as `alias`, `runId`, `harness`, `status`, `rawStatus`, `effectiveStatus`, `staleReason`, `nextActions`, `cwd`, `executionCwd`, `assistantText`, `recentEvents`, `warnings`, `exitCode`, reasoning metadata, terminal metadata, and isolation/worktree metadata when applicable. Inspection commands do not rewrite a stale run's recorded state; they expose the raw recorded status plus the effective status computed from the current PID check. Run-output and worktree show output include `requestedHandle`, `resolvedHandle`, and `resolutionKind` (`literal`, `latest`, or `latest_model`) when a handle resolves indirectly. For bare harness handles, snapshot, run-output, and wait also report `resolvedRunId`, `resolvedAlias`, `resolvedWorkspace`, `resolvedAge`, and `resolvedAgeSeconds`. Resolutions older than 24 hours add a `bare_handle_stale` warning suggesting `--cwd` or an explicit handle.
|
|
767
775
|
|
|
768
776
|
Tracked run envelopes include `completionReportWritten`, `completionReportSource`
|
|
769
777
|
(`child`, `delegate_synthesized`, `stdout_recovery`, or `null`), and
|
|
@@ -773,6 +781,15 @@ exit-code-derived status.
|
|
|
773
781
|
|
|
774
782
|
Run-output JSON uses schema `delegate.run-output.v1` and returns selected completion report, stdout, and/or stderr content. By default, secret-like strings are redacted unless `--no-redact` is supplied. Tracked runs finish in one of the terminal statuses `succeeded`, `failed`, or `cancelled`; explicit harness cancellation/error terminal events override an exit-zero child status.
|
|
775
783
|
|
|
784
|
+
Safe runs and read-only call runs that exit successfully with `resultQuality=empty`
|
|
785
|
+
retry once with the original prompt plus a plain-text final-answer instruction.
|
|
786
|
+
Pure and slash pass-through prompts, and write-capable calls, do not retry. Retried
|
|
787
|
+
envelopes add `emptyRetry: {attempted, resolved}`; runs that do not retry omit the
|
|
788
|
+
field. If the second attempt is also empty, the run remains successful and honest
|
|
789
|
+
with `resultQuality=empty`, and emits an
|
|
790
|
+
`empty_success_retry` warning. Tracked safe runs retain both attempts in their
|
|
791
|
+
stdout/stderr logs.
|
|
792
|
+
|
|
776
793
|
`delegate wait` blocks until every selected run reaches terminal state. Defaults:
|
|
777
794
|
`--interval 3`, minimum interval `1`, and `--timeout 3600`. Exit codes are `0`
|
|
778
795
|
when all runs succeeded, `1` when any run failed or was cancelled, and `124` on
|
|
@@ -819,9 +836,10 @@ selectors are preserved. `--stdout` or `--stderr` without `--tail` or `--raw`
|
|
|
819
836
|
defaults to a bounded `--tail 80` and a character cap (default 60000); use
|
|
820
837
|
`--max-chars N` to override the cap. `--raw` returns the full stream with no
|
|
821
838
|
line or character bounds, includes `rawOutputBytes` in JSON metadata, and cannot
|
|
822
|
-
be combined with `--tail` or `--max-chars`. `--tail
|
|
823
|
-
`--stdout`
|
|
824
|
-
|
|
839
|
+
be combined with `--tail` or `--max-chars`. A bare `--tail N` implies
|
|
840
|
+
`--stdout` when no output selector is supplied; it never includes stderr.
|
|
841
|
+
`--max-chars` still requires `--stdout` or `--stderr`, and Delegate rejects
|
|
842
|
+
either bound when only `--completion-report` is selected.
|
|
825
843
|
|
|
826
844
|
When `completion-report.md` is absent, `run-output --completion-report` makes a
|
|
827
845
|
bounded best-effort attempt to recover an explicit final response from the
|