delegate-agent-cli 0.18.0__tar.gz → 0.20.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.18.0 → delegate_agent_cli-0.20.0}/CHANGELOG.md +151 -1
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/PKG-INFO +36 -12
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/README.md +35 -11
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/bin/delegate-profile-shim +92 -1
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/agent-setup.md +35 -9
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/cli-reference.md +165 -16
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/configuration.md +70 -16
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/delegate-workflows.md +5 -1
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/security-model.md +49 -8
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/troubleshooting.md +91 -21
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/pyproject.toml +1 -1
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/__init__.py +1 -1
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/bundled_models.py +2 -1
- delegate_agent_cli-0.20.0/src/delegate_agent/capability_commands.py +280 -0
- delegate_agent_cli-0.20.0/src/delegate_agent/child_failures.py +93 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/cli.py +45 -1
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/cli_parser.py +90 -16
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/command_help.py +64 -14
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/config.py +27 -41
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/config_commands.py +2 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/describe_payload.py +123 -46
- delegate_agent_cli-0.20.0/src/delegate_agent/harness_discovery.py +1444 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/model_discovery.py +121 -230
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/private_io.py +69 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/profile_guard.py +6 -3
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/profiles.py +12 -29
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/reasoning.py +566 -174
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/redaction.py +61 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/rendering.py +2 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/request_build.py +513 -151
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/request_models.py +10 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/run_metadata.py +27 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/run_status.py +8 -4
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/runner.py +441 -64
- delegate_agent_cli-0.20.0/src/delegate_agent/setup_commands.py +492 -0
- delegate_agent_cli-0.20.0/src/delegate_agent/structured_output.py +177 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/worktree_execution.py +5 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent_cli.egg-info/PKG-INFO +36 -12
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent_cli.egg-info/SOURCES.txt +9 -0
- delegate_agent_cli-0.20.0/tests/test_capability_commands.py +959 -0
- delegate_agent_cli-0.20.0/tests/test_child_failures.py +73 -0
- delegate_agent_cli-0.20.0/tests/test_codex_thread_resilience.py +410 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_command_help.py +2 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_config_commands.py +69 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_delegate_help_cli.py +35 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_delegate_parser.py +120 -5
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_delegate_validation.py +96 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_engine_argv.py +672 -113
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_execution_argv_and_prompt.py +3 -1
- delegate_agent_cli-0.20.0/tests/test_harness_discovery.py +1135 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_kimi_commands.py +3 -3
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_model_discovery.py +354 -33
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_model_selection_wave1b.py +183 -20
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_pure_call.py +24 -1
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_reasoning_capabilities.py +390 -9
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_runner_capture.py +28 -6
- delegate_agent_cli-0.20.0/tests/test_setup_commands.py +759 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_snapshot_run_output.py +11 -0
- delegate_agent_cli-0.20.0/tests/test_structured_output.py +212 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_utility_modules.py +181 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_wait_cancel_commands.py +1 -1
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_workflow_commands.py +19 -0
- delegate_agent_cli-0.18.0/src/delegate_agent/capability_commands.py +0 -99
- delegate_agent_cli-0.18.0/tests/test_capability_commands.py +0 -370
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/CONTRIBUTING.md +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/LICENSE +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/MANIFEST.in +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/SECURITY.md +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/bin/delegate.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/config.example.json +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/assets/delegate-agent-header.png +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/development.md +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/live-runtime.md +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/publishing-checklist.md +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/docs/worktrees.md +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/examples/task.claude.json +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/examples/task.codex.json +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/examples/task.cursor.json +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/examples/task.droid.json +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/examples/task.grok.json +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/examples/task.judge.json +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/examples/task.kimi.json +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/setup.cfg +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/archived_logs.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/argv_builders.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/argv_utils.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/command_errors.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/constants.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/errors.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/git_utils.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/harness_events.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/inspection_commands.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/isolation.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/json_types.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/log_output.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/profile_commands.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/prompt_instructions.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/prompt_transport.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/retention.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/run_output_commands.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/run_registry.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/safe_workspace.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/seatbelt.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/snapshot_view.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/wait_cancel_commands.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/workflows/__init__.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/workflows/commands.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/workflows/registry.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/workflows/runtime.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/workflows/schema.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/workflows/script.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/worktree_commands.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/worktree_gc.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/worktree_mgmt.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/worktree_records.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/worktree_remove.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/worktree_summary.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent/wsl.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent_cli.egg-info/dependency_links.txt +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent_cli.egg-info/entry_points.txt +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent_cli.egg-info/requires.txt +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/src/delegate_agent_cli.egg-info/top_level.txt +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_codex_pure_sandbox.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_delegate_isolation.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_end_to_end_tracking.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_execution_dry_run.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_execution_worktree_failure_cleanup.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_execution_worktree_preflight.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_execution_worktree_run.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_harness_events.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_inspection_commands.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_model_selection_wave1a.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_omp_read_only_behavior.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_packaging.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_profiles.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_retention.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_run_registry.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_safe_workspace_isolation.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_slash_passthrough.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_snapshot_redaction.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_snapshot_rendering.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_snapshot_view.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_tracked_timeout.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_wave4_launch_features.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_worktree_list_show.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_worktree_prune_gc.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_worktree_remove.py +0 -0
- {delegate_agent_cli-0.18.0 → delegate_agent_cli-0.20.0}/tests/test_wsl_guardrails.py +0 -0
|
@@ -5,6 +5,155 @@ 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
|
+
## [0.20.0] - 2026-07-25
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Added typed child-failure reporting for usage/quota limits (including reset
|
|
13
|
+
details when present), expired or rejected auth tokens, and Codex thread/state
|
|
14
|
+
lookup loss. Run state, snapshots, listings, completion envelopes, and
|
|
15
|
+
synthesized reports now carry the specific error and message. The existing
|
|
16
|
+
generic public error remains `child_failed`; `usage_limit`, `auth_failed`, and
|
|
17
|
+
`codex_thread_lost` are additive typed codes. Classification reads only stderr
|
|
18
|
+
and normalized harness error/terminal events, never assistant/model output.
|
|
19
|
+
- Added `delegate ps` as the first-class active-run view, equivalent to
|
|
20
|
+
`delegate runs --active`.
|
|
21
|
+
- Added `delegate setup` for first-run harness discovery. It fingerprints all
|
|
22
|
+
supported installed harnesses, records available model/reasoning metadata in
|
|
23
|
+
a profile-scoped user cache, creates a minimal selector-only config when no
|
|
24
|
+
config exists, and reports discovery readiness separately from launchability.
|
|
25
|
+
- Cached `models`/`capabilities` views now project profile discovery with source
|
|
26
|
+
and evidence metadata. `models <engine> --live` provides a non-persistent
|
|
27
|
+
one-off probe; `capabilities refresh` persists a full refresh for the selected
|
|
28
|
+
profile, and `capabilities refresh <engine> [...]` re-probes only the named
|
|
29
|
+
harnesses while the rest keep their last-known-good records.
|
|
30
|
+
- Runtime model and reasoning metadata now distinguish the requested model,
|
|
31
|
+
argv-resolved model, capability-validation model, requested effort, resolved
|
|
32
|
+
effort, source, evidence strength, and transport.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- Codex output schemas are now linted before launch. Delegate recursively
|
|
37
|
+
supplies missing `additionalProperties: false` on object schemas with a loud
|
|
38
|
+
warning, rejects partial `required` lists precisely, and passes a normalized
|
|
39
|
+
temporary copy without modifying the source schema. Object-bearing `allOf`,
|
|
40
|
+
`patternProperties`, and external or unresolvable `$ref` values fail closed
|
|
41
|
+
rather than being rewritten unsafely. Workflow Codex stages and direct
|
|
42
|
+
`--output-schema`/`outputSchema` launches share the same preflight. The
|
|
43
|
+
normalized copy preserves the source schema's property order, so
|
|
44
|
+
think-before-answer schemas keep their intended generation order.
|
|
45
|
+
- On retry-safe paths, Codex thread/state lookup failures now retry once and,
|
|
46
|
+
only if the same typed failure repeats, retry through an ephemeral
|
|
47
|
+
`--ignore-user-config` launch. Retry-safe paths are read-only calls and
|
|
48
|
+
pre-tool attempts whose workspace remains unchanged; work mode also requires
|
|
49
|
+
a clean captured baseline. Envelopes and events record fallback engagement.
|
|
50
|
+
- `--prompt-file /dev/stdin` and equivalent stdin descriptors now consume the
|
|
51
|
+
piped prompt once instead of conflicting with stdin as a second source.
|
|
52
|
+
- Model and reasoning resolution now prefers explicit CLI/config choices and
|
|
53
|
+
exact discovered evidence before legacy workspace or bundled fallbacks.
|
|
54
|
+
Exact negative menus fail closed; partial harness evidence and Cursor inferred
|
|
55
|
+
routes remain visibly labeled rather than being promoted to model-exact facts.
|
|
56
|
+
- Discovery refresh is last-known-good per harness. Successful records update
|
|
57
|
+
independently, failed probes retain the prior record and report staleness,
|
|
58
|
+
and selector drift invalidates only the affected harness without probing on
|
|
59
|
+
an ordinary launch.
|
|
60
|
+
- `capabilities refresh` now writes the selected profile's private discovery
|
|
61
|
+
cache. The old workspace reasoning cache remains a lower-precedence read-only
|
|
62
|
+
compatibility source. The cached `capabilities` read reports the discovery
|
|
63
|
+
cache location in `cachePath`; the previous workspace path, when present, is
|
|
64
|
+
reported under `legacyWorkspaceCachePath`.
|
|
65
|
+
- `reasoning.capabilities` config entries are now accepted for `grok` in
|
|
66
|
+
addition to `codex` and `droid`.
|
|
67
|
+
- `--auth-profile` is now accepted on cached `capabilities` reads (previously
|
|
68
|
+
rejected as an invalid option combination) and on `models` and `setup`.
|
|
69
|
+
- Cursor reasoning-effort routing now defers to a pinned selector when discovery
|
|
70
|
+
has no same-family route for it: the run proceeds on the pinned model and
|
|
71
|
+
records a bypass warning. When discovery does carry exact same-family routes,
|
|
72
|
+
the requested effort still routes to the matching selector, and a family that
|
|
73
|
+
omits the requested effort still fails closed.
|
|
74
|
+
- Grok reasoning-effort support is once again governed by the documented CLI
|
|
75
|
+
enum (low, medium, high, xhigh, max); a bundled `grok-4.5` declaration that
|
|
76
|
+
narrowed it to low/medium/high was removed, since `grok --help` enumerates no
|
|
77
|
+
per-model efforts. Config, discovery-exact, and cached grok declarations
|
|
78
|
+
still take precedence.
|
|
79
|
+
- Embedded Devin and Kimi `defaultModel` values are now `null`, deferring model
|
|
80
|
+
selection to each harness. The editable `config init` example may still pin
|
|
81
|
+
an explicit default.
|
|
82
|
+
- Claude and Grok `defaultReasoningEffort` config values are now only
|
|
83
|
+
format-checked at load time instead of validated against the static enum; an
|
|
84
|
+
unsupported configured default degrades to a launch-time warning so that
|
|
85
|
+
discovery, not a hardcoded table, decides which levels are accepted.
|
|
86
|
+
|
|
87
|
+
### Security
|
|
88
|
+
|
|
89
|
+
- Discovery probes use fingerprinted allowlisted selectors, fixed argv with no
|
|
90
|
+
shell, closed stdin, neutral temporary working directories, bounded output,
|
|
91
|
+
timeouts, normalized cache schemas, atomic owner-only writes, and scrubbed
|
|
92
|
+
model/warning projections. Config and cache source paths remain intentionally
|
|
93
|
+
visible diagnostics. Automatic Devin discovery remains prompt-free; only the
|
|
94
|
+
explicitly requested `models devin --live` path uses its bounded prompt-like
|
|
95
|
+
invalid-model probe.
|
|
96
|
+
- Setup never overwrites an existing config and refuses unsafe selectors,
|
|
97
|
+
final-component symlinks, and concurrent config races rather than mixing
|
|
98
|
+
discovery results across config states.
|
|
99
|
+
|
|
100
|
+
### Fixed
|
|
101
|
+
|
|
102
|
+
- Credentials appearing in a child harness quota or reset message are now
|
|
103
|
+
redacted before they reach `state.json`, `snapshot.json`, the completion
|
|
104
|
+
report, or the run envelope; Codex reports quota walls as stdout events,
|
|
105
|
+
which bypassed the stderr-tail redaction. The in-progress activity label is
|
|
106
|
+
likewise redacted when persisted, matching the progress heartbeat.
|
|
107
|
+
- A Codex output schema that omits `required` entirely is now repaired to list
|
|
108
|
+
every property (in declaration order) instead of being rejected, matching how
|
|
109
|
+
a missing `additionalProperties` is handled. A partial `required` is still an
|
|
110
|
+
error.
|
|
111
|
+
- The `primary` attempt banner is written once in the run's stderr log even
|
|
112
|
+
when several retry paths run in sequence.
|
|
113
|
+
- `delegate ps` now reports argument errors in its own terms — unknown options,
|
|
114
|
+
`--limit`, `--harness`, and `--group` failures name `ps` instead of the
|
|
115
|
+
`runs` command it delegates to, and `ps --recent` gets the same tailored
|
|
116
|
+
redirect as `--running` and `--stale`.
|
|
117
|
+
- `delegate capabilities refresh` exits 3 (missing binary) when no supported
|
|
118
|
+
harness is installed — including when an engine subset such as
|
|
119
|
+
`capabilities refresh codex` names only uninstalled harnesses — matching
|
|
120
|
+
`delegate setup` on identical machine state instead of returning the generic
|
|
121
|
+
usage code 2.
|
|
122
|
+
- `delegate capabilities` no longer advertises harnesses whose configured
|
|
123
|
+
selector has drifted from the cached record, on both the cached read and
|
|
124
|
+
after a refresh — a subset refresh returns the full snapshot, so engines it
|
|
125
|
+
never probed could otherwise surface stale catalogs the launch path would
|
|
126
|
+
refuse. Excluded harnesses are named in a new `driftedHarnesses` payload
|
|
127
|
+
field and in the text output.
|
|
128
|
+
- Pi catalog rows whose column count does not match the header are skipped
|
|
129
|
+
instead of being read by shifted column position, which could cache a
|
|
130
|
+
thinking-capable model as having no reasoning support (unrecoverable, since
|
|
131
|
+
Pi has no config override) or hand a non-thinking model the full effort enum.
|
|
132
|
+
- A configured harness binary or argv prefix that no longer resolves while the
|
|
133
|
+
CLI is still on PATH is now reported as a stale config setting rather than an
|
|
134
|
+
uninstalled harness, and `delegate setup` names the config key and file to
|
|
135
|
+
fix instead of telling you to install a CLI you already have.
|
|
136
|
+
- An unreadable `~/.factory/settings.json` (permissions or I/O error) is
|
|
137
|
+
reported as a read failure instead of being misreported as invalid JSON.
|
|
138
|
+
- Two Cursor selectors that normalize to the same route family and effort now
|
|
139
|
+
drop just the ambiguous routes with a warning, instead of turning the entire
|
|
140
|
+
Cursor discovery record into an error record.
|
|
141
|
+
- OpenCode catalog parsing resumes past a malformed entry's whole object, so a
|
|
142
|
+
`provider/model`-shaped line nested inside the rejected body can no longer be
|
|
143
|
+
re-read as a real selector.
|
|
144
|
+
- `capabilities refresh` now hints "global options before the subcommand" for a
|
|
145
|
+
misplaced global option instead of mislabeling it `invalid_engine`, and a
|
|
146
|
+
subset refresh whose requested harnesses are all uninstalled reports
|
|
147
|
+
`requested_harnesses_not_installed` instead of the misleading
|
|
148
|
+
`no_harnesses_installed`.
|
|
149
|
+
|
|
150
|
+
## [0.19.0] - 2026-07-20
|
|
151
|
+
|
|
152
|
+
### Added
|
|
153
|
+
|
|
154
|
+
- Codex `--reasoning-effort max` support for `gpt-5.6-sol`; other Codex models
|
|
155
|
+
still fail closed unless config or workspace capability-cache overrides opt them in.
|
|
156
|
+
|
|
8
157
|
## [0.18.0] - 2026-07-19
|
|
9
158
|
|
|
10
159
|
### Added
|
|
@@ -137,7 +286,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
137
286
|
consistently across the CLI reference and worktree guidance.
|
|
138
287
|
- Devin help and discovery surfaces now derive supported modes consistently and
|
|
139
288
|
reject unknown modes before constructing executable arguments.
|
|
140
|
-
|
|
141
289
|
## [0.14.0] - 2026-07-15
|
|
142
290
|
|
|
143
291
|
### Added
|
|
@@ -483,6 +631,8 @@ Usage-audit fix wave: 82 sessions and 1,241 delegate invocations from one week o
|
|
|
483
631
|
|
|
484
632
|
- Releases before 0.1.3 predate this changelog.
|
|
485
633
|
|
|
634
|
+
[0.20.0]: https://github.com/treygoff24/delegate-agent/compare/v0.19.0...v0.20.0
|
|
635
|
+
[0.19.0]: https://github.com/treygoff24/delegate-agent/compare/v0.18.0...v0.19.0
|
|
486
636
|
[0.18.0]: https://github.com/treygoff24/delegate-agent/compare/v0.17.0...v0.18.0
|
|
487
637
|
[0.17.0]: https://github.com/treygoff24/delegate-agent/compare/v0.16.0...v0.17.0
|
|
488
638
|
[0.16.0]: https://github.com/treygoff24/delegate-agent/compare/v0.15.0...v0.16.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: delegate-agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.20.0
|
|
4
4
|
Summary: A tiny CLI for delegating bounded agent tasks across coding-agent runtimes.
|
|
5
5
|
Author: Trey Goff
|
|
6
6
|
License-Expression: MIT
|
|
@@ -130,22 +130,28 @@ Install OpenCode from [opencode.ai](https://opencode.ai). Its curl installer
|
|
|
130
130
|
normally writes the binary to `~/.opencode/bin`, which may not be on `PATH`.
|
|
131
131
|
Extend `PATH` or set `opencode.binary` to the absolute binary path.
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
Let Delegate discover the supported harnesses already on your `PATH`:
|
|
134
134
|
|
|
135
135
|
```bash
|
|
136
|
-
delegate
|
|
137
|
-
$EDITOR ~/.delegate/config.json
|
|
136
|
+
delegate setup
|
|
138
137
|
```
|
|
139
138
|
|
|
140
|
-
`
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
139
|
+
`setup` fingerprints installed harnesses, reads their model and reasoning metadata where
|
|
140
|
+
the harness exposes it, and writes a private discovery cache for the active auth profile.
|
|
141
|
+
On a clean install it creates only the absolute binary selectors needed to launch the
|
|
142
|
+
detected harnesses. It never rewrites an existing config, installs a harness, logs in, or
|
|
143
|
+
submits a model prompt.
|
|
144
|
+
|
|
145
|
+
Use `delegate config init` instead when you want the editable example config and profile
|
|
146
|
+
overlays. Replace its placeholder Droid model IDs before real Droid runs. For an existing
|
|
147
|
+
install, `env -u AI_PROFILE delegate config sync-profiles` creates missing overlays without
|
|
148
|
+
overwriting ones you already edited.
|
|
144
149
|
|
|
145
150
|
Inspect what Delegate sees:
|
|
146
151
|
|
|
147
152
|
```bash
|
|
148
153
|
delegate --version # installed version — include this in bug reports
|
|
154
|
+
delegate --json setup
|
|
149
155
|
delegate --json describe --summary
|
|
150
156
|
delegate --json models --summary
|
|
151
157
|
delegate --json describe
|
|
@@ -156,9 +162,10 @@ delegate --json models opencode --live # query every model visible to OpenCode
|
|
|
156
162
|
delegate --json models pi --live # query every model visible to Pi
|
|
157
163
|
delegate --json models omp --live # query every model visible to Oh My Pi
|
|
158
164
|
delegate --json capabilities
|
|
165
|
+
delegate --json capabilities refresh # refresh the active profile's discovery cache
|
|
159
166
|
```
|
|
160
167
|
|
|
161
|
-
Discover commands as you go: `delegate <command> --help` prints focused help for any command path, and `delegate --json <command> --help` returns an agent-friendly spec of its usage, arguments, and options. For launch and `dry-run` commands, `--json` and `--isolation` may also appear before inline prompt text begins, for example `delegate codex work --prompt-file task.md --json`. `delegate --json describe` includes a `commands` catalog of the whole surface. `
|
|
168
|
+
Discover commands as you go: `delegate <command> --help` prints focused help for any command path, and `delegate --json <command> --help` returns an agent-friendly spec of its usage, arguments, and options. For launch and `dry-run` commands, `--json` and `--isolation` may also appear before inline prompt text begins, for example `delegate codex work --prompt-file task.md --json`. `delegate --json describe` includes a `commands` catalog of the whole surface. Cached `models` and `capabilities` reads launch no child process. `models <engine> --live` performs a one-off probe without updating the cache; rerun `delegate setup` or `delegate capabilities refresh` when ordinary launches should consume newly discovered models or effort levels.
|
|
162
169
|
|
|
163
170
|
From this development checkout, use `python3 bin/delegate.py ...` instead of an installed `delegate` shim.
|
|
164
171
|
|
|
@@ -243,7 +250,12 @@ $EDITOR /tmp/delegate-task.json
|
|
|
243
250
|
delegate --json run --input-json /tmp/delegate-task.json
|
|
244
251
|
```
|
|
245
252
|
|
|
246
|
-
For Codex fan-outs that must return machine-parseable records, add
|
|
253
|
+
For Codex fan-outs that must return machine-parseable records, add
|
|
254
|
+
`--output-schema` (or JSON `outputSchema`); Delegate suppresses completion-report
|
|
255
|
+
injection so the schema owns the final message. Codex schemas are
|
|
256
|
+
strict-preflighted recursively: every property must be required, and a missing
|
|
257
|
+
`additionalProperties: false` is supplied in a warned temporary copy without
|
|
258
|
+
changing the source file.
|
|
247
259
|
|
|
248
260
|
For a one-hop prompt that should not see the current repo or create a tracked
|
|
249
261
|
run, use stateless `call` mode:
|
|
@@ -280,7 +292,16 @@ python3 bin/delegate.py workflow approve wf_0123abcdef45
|
|
|
280
292
|
See [Delegate Workflows](docs/delegate-workflows.md) for the DSL, safety
|
|
281
293
|
limits, config, and gate semantics.
|
|
282
294
|
|
|
283
|
-
Reasoning effort is provider-aware. Unsupported combinations fail before launch.
|
|
295
|
+
Reasoning effort is provider-aware. Unsupported combinations fail before launch.
|
|
296
|
+
It changes only the requested model thinking depth/cost/latency; it does not
|
|
297
|
+
change safe/work/call mode, sandboxing, approvals, or edit capability.
|
|
298
|
+
Codex/Droid validate exact model metadata, Cursor selects an explicit configured
|
|
299
|
+
or corroborated discovered effort route, Claude and Grok map to native
|
|
300
|
+
`--effort`, OpenCode validates discovered exact variants when present and
|
|
301
|
+
otherwise warns on pass-through, and Pi/Oh My Pi map to `--thinking` with
|
|
302
|
+
evidence-aware validation. Devin and Kimi do not expose a Delegate
|
|
303
|
+
reasoning-effort flag. Explicit Codex effort can target the harness default model
|
|
304
|
+
even when `codex.defaultModel` is unset:
|
|
284
305
|
|
|
285
306
|
```bash
|
|
286
307
|
delegate --json dry-run codex safe --reasoning-effort high "Review this repository. Do not edit files."
|
|
@@ -291,7 +312,9 @@ Codex model routing is deliberately model-first rather than aliasing every
|
|
|
291
312
|
model/effort pair: define model aliases in `codex.models`, then set effort per
|
|
292
313
|
run with `--reasoning-effort`. Per-model effort menus (including any efforts
|
|
293
314
|
newer than the bundled data) belong in the private `reasoning.capabilities`
|
|
294
|
-
config block, which overrides the bundled defaults.
|
|
315
|
+
config block, which overrides the bundled defaults. Codex `max` is bundled only
|
|
316
|
+
for `gpt-5.6-sol` as of 2026-07; other Codex models require an exact config or
|
|
317
|
+
profile-discovery declaration, or legacy workspace-cache declaration.
|
|
295
318
|
|
|
296
319
|
Fast mode is an independent per-run serving choice. `--fast` requests Codex's
|
|
297
320
|
Fast service tier, `--no-fast` explicitly requests Standard, and omitting both
|
|
@@ -306,6 +329,7 @@ Inspect tracked output by alias:
|
|
|
306
329
|
|
|
307
330
|
```bash
|
|
308
331
|
delegate runs --recent
|
|
332
|
+
delegate ps # active and stale tracked runs
|
|
309
333
|
delegate snapshot <alias-or-runId>
|
|
310
334
|
delegate run-output <alias-or-runId>
|
|
311
335
|
```
|
|
@@ -97,22 +97,28 @@ Install OpenCode from [opencode.ai](https://opencode.ai). Its curl installer
|
|
|
97
97
|
normally writes the binary to `~/.opencode/bin`, which may not be on `PATH`.
|
|
98
98
|
Extend `PATH` or set `opencode.binary` to the absolute binary path.
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
Let Delegate discover the supported harnesses already on your `PATH`:
|
|
101
101
|
|
|
102
102
|
```bash
|
|
103
|
-
delegate
|
|
104
|
-
$EDITOR ~/.delegate/config.json
|
|
103
|
+
delegate setup
|
|
105
104
|
```
|
|
106
105
|
|
|
107
|
-
`
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
106
|
+
`setup` fingerprints installed harnesses, reads their model and reasoning metadata where
|
|
107
|
+
the harness exposes it, and writes a private discovery cache for the active auth profile.
|
|
108
|
+
On a clean install it creates only the absolute binary selectors needed to launch the
|
|
109
|
+
detected harnesses. It never rewrites an existing config, installs a harness, logs in, or
|
|
110
|
+
submits a model prompt.
|
|
111
|
+
|
|
112
|
+
Use `delegate config init` instead when you want the editable example config and profile
|
|
113
|
+
overlays. Replace its placeholder Droid model IDs before real Droid runs. For an existing
|
|
114
|
+
install, `env -u AI_PROFILE delegate config sync-profiles` creates missing overlays without
|
|
115
|
+
overwriting ones you already edited.
|
|
111
116
|
|
|
112
117
|
Inspect what Delegate sees:
|
|
113
118
|
|
|
114
119
|
```bash
|
|
115
120
|
delegate --version # installed version — include this in bug reports
|
|
121
|
+
delegate --json setup
|
|
116
122
|
delegate --json describe --summary
|
|
117
123
|
delegate --json models --summary
|
|
118
124
|
delegate --json describe
|
|
@@ -123,9 +129,10 @@ delegate --json models opencode --live # query every model visible to OpenCode
|
|
|
123
129
|
delegate --json models pi --live # query every model visible to Pi
|
|
124
130
|
delegate --json models omp --live # query every model visible to Oh My Pi
|
|
125
131
|
delegate --json capabilities
|
|
132
|
+
delegate --json capabilities refresh # refresh the active profile's discovery cache
|
|
126
133
|
```
|
|
127
134
|
|
|
128
|
-
Discover commands as you go: `delegate <command> --help` prints focused help for any command path, and `delegate --json <command> --help` returns an agent-friendly spec of its usage, arguments, and options. For launch and `dry-run` commands, `--json` and `--isolation` may also appear before inline prompt text begins, for example `delegate codex work --prompt-file task.md --json`. `delegate --json describe` includes a `commands` catalog of the whole surface. `
|
|
135
|
+
Discover commands as you go: `delegate <command> --help` prints focused help for any command path, and `delegate --json <command> --help` returns an agent-friendly spec of its usage, arguments, and options. For launch and `dry-run` commands, `--json` and `--isolation` may also appear before inline prompt text begins, for example `delegate codex work --prompt-file task.md --json`. `delegate --json describe` includes a `commands` catalog of the whole surface. Cached `models` and `capabilities` reads launch no child process. `models <engine> --live` performs a one-off probe without updating the cache; rerun `delegate setup` or `delegate capabilities refresh` when ordinary launches should consume newly discovered models or effort levels.
|
|
129
136
|
|
|
130
137
|
From this development checkout, use `python3 bin/delegate.py ...` instead of an installed `delegate` shim.
|
|
131
138
|
|
|
@@ -210,7 +217,12 @@ $EDITOR /tmp/delegate-task.json
|
|
|
210
217
|
delegate --json run --input-json /tmp/delegate-task.json
|
|
211
218
|
```
|
|
212
219
|
|
|
213
|
-
For Codex fan-outs that must return machine-parseable records, add
|
|
220
|
+
For Codex fan-outs that must return machine-parseable records, add
|
|
221
|
+
`--output-schema` (or JSON `outputSchema`); Delegate suppresses completion-report
|
|
222
|
+
injection so the schema owns the final message. Codex schemas are
|
|
223
|
+
strict-preflighted recursively: every property must be required, and a missing
|
|
224
|
+
`additionalProperties: false` is supplied in a warned temporary copy without
|
|
225
|
+
changing the source file.
|
|
214
226
|
|
|
215
227
|
For a one-hop prompt that should not see the current repo or create a tracked
|
|
216
228
|
run, use stateless `call` mode:
|
|
@@ -247,7 +259,16 @@ python3 bin/delegate.py workflow approve wf_0123abcdef45
|
|
|
247
259
|
See [Delegate Workflows](docs/delegate-workflows.md) for the DSL, safety
|
|
248
260
|
limits, config, and gate semantics.
|
|
249
261
|
|
|
250
|
-
Reasoning effort is provider-aware. Unsupported combinations fail before launch.
|
|
262
|
+
Reasoning effort is provider-aware. Unsupported combinations fail before launch.
|
|
263
|
+
It changes only the requested model thinking depth/cost/latency; it does not
|
|
264
|
+
change safe/work/call mode, sandboxing, approvals, or edit capability.
|
|
265
|
+
Codex/Droid validate exact model metadata, Cursor selects an explicit configured
|
|
266
|
+
or corroborated discovered effort route, Claude and Grok map to native
|
|
267
|
+
`--effort`, OpenCode validates discovered exact variants when present and
|
|
268
|
+
otherwise warns on pass-through, and Pi/Oh My Pi map to `--thinking` with
|
|
269
|
+
evidence-aware validation. Devin and Kimi do not expose a Delegate
|
|
270
|
+
reasoning-effort flag. Explicit Codex effort can target the harness default model
|
|
271
|
+
even when `codex.defaultModel` is unset:
|
|
251
272
|
|
|
252
273
|
```bash
|
|
253
274
|
delegate --json dry-run codex safe --reasoning-effort high "Review this repository. Do not edit files."
|
|
@@ -258,7 +279,9 @@ Codex model routing is deliberately model-first rather than aliasing every
|
|
|
258
279
|
model/effort pair: define model aliases in `codex.models`, then set effort per
|
|
259
280
|
run with `--reasoning-effort`. Per-model effort menus (including any efforts
|
|
260
281
|
newer than the bundled data) belong in the private `reasoning.capabilities`
|
|
261
|
-
config block, which overrides the bundled defaults.
|
|
282
|
+
config block, which overrides the bundled defaults. Codex `max` is bundled only
|
|
283
|
+
for `gpt-5.6-sol` as of 2026-07; other Codex models require an exact config or
|
|
284
|
+
profile-discovery declaration, or legacy workspace-cache declaration.
|
|
262
285
|
|
|
263
286
|
Fast mode is an independent per-run serving choice. `--fast` requests Codex's
|
|
264
287
|
Fast service tier, `--no-fast` explicitly requests Standard, and omitting both
|
|
@@ -273,6 +296,7 @@ Inspect tracked output by alias:
|
|
|
273
296
|
|
|
274
297
|
```bash
|
|
275
298
|
delegate runs --recent
|
|
299
|
+
delegate ps # active and stale tracked runs
|
|
276
300
|
delegate snapshot <alias-or-runId>
|
|
277
301
|
delegate run-output <alias-or-runId>
|
|
278
302
|
```
|
|
@@ -33,6 +33,75 @@ _delegate_subcommand() {
|
|
|
33
33
|
done
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
_delegate_launch_help_request() {
|
|
37
|
+
_delegate_launch_cmd="${1:-}"
|
|
38
|
+
[ "$#" -gt 0 ] && shift
|
|
39
|
+
|
|
40
|
+
if [ "$_delegate_launch_cmd" = "dry-run" ]; then
|
|
41
|
+
case "${1:-}" in
|
|
42
|
+
--help|-h)
|
|
43
|
+
return 0
|
|
44
|
+
;;
|
|
45
|
+
esac
|
|
46
|
+
_delegate_launch_cmd="${1:-}"
|
|
47
|
+
[ "$#" -gt 0 ] && shift
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
case "$_delegate_launch_cmd" in
|
|
51
|
+
cursor|codex|kimi|claude|grok|devin|opencode|pi|omp)
|
|
52
|
+
# Parser parity: help is diagnostic only before the mode or immediately
|
|
53
|
+
# after it. Once inline prompt text starts, a later help token is data.
|
|
54
|
+
case "${1:-}" in
|
|
55
|
+
--help|-h)
|
|
56
|
+
return 0
|
|
57
|
+
;;
|
|
58
|
+
safe|work|call)
|
|
59
|
+
case "${2:-}" in
|
|
60
|
+
--help|-h)
|
|
61
|
+
return 0
|
|
62
|
+
;;
|
|
63
|
+
esac
|
|
64
|
+
;;
|
|
65
|
+
esac
|
|
66
|
+
return 1
|
|
67
|
+
;;
|
|
68
|
+
droid)
|
|
69
|
+
# Droid may place a model alias before the mode, so its last diagnostic
|
|
70
|
+
# help position is one token later than the modeless harnesses.
|
|
71
|
+
case "${1:-}" in
|
|
72
|
+
--help|-h)
|
|
73
|
+
return 0
|
|
74
|
+
;;
|
|
75
|
+
safe|work|call)
|
|
76
|
+
case "${2:-}" in
|
|
77
|
+
--help|-h)
|
|
78
|
+
return 0
|
|
79
|
+
;;
|
|
80
|
+
esac
|
|
81
|
+
;;
|
|
82
|
+
*)
|
|
83
|
+
case "${2:-}" in
|
|
84
|
+
--help|-h)
|
|
85
|
+
return 0
|
|
86
|
+
;;
|
|
87
|
+
safe|work|call)
|
|
88
|
+
case "${3:-}" in
|
|
89
|
+
--help|-h)
|
|
90
|
+
return 0
|
|
91
|
+
;;
|
|
92
|
+
esac
|
|
93
|
+
;;
|
|
94
|
+
esac
|
|
95
|
+
;;
|
|
96
|
+
esac
|
|
97
|
+
return 1
|
|
98
|
+
;;
|
|
99
|
+
*)
|
|
100
|
+
return 1
|
|
101
|
+
;;
|
|
102
|
+
esac
|
|
103
|
+
}
|
|
104
|
+
|
|
36
105
|
_delegate_is_readonly_request() {
|
|
37
106
|
while [ "$#" -gt 0 ]; do
|
|
38
107
|
case "$1" in
|
|
@@ -51,7 +120,29 @@ _delegate_is_readonly_request() {
|
|
|
51
120
|
_cmd="${1:-}"
|
|
52
121
|
[ "$#" -gt 0 ] && shift
|
|
53
122
|
case "$_cmd" in
|
|
54
|
-
|
|
123
|
+
cursor|droid|codex|kimi|claude|grok|devin|opencode|pi|omp|dry-run)
|
|
124
|
+
_delegate_launch_help_request "$_cmd" "$@" && return 0
|
|
125
|
+
return 1
|
|
126
|
+
;;
|
|
127
|
+
esac
|
|
128
|
+
# Non-launch command parsers treat help as diagnostic wherever accepted.
|
|
129
|
+
for _delegate_help_arg in "$@"; do
|
|
130
|
+
case "$_delegate_help_arg" in
|
|
131
|
+
--help|-h)
|
|
132
|
+
return 0
|
|
133
|
+
;;
|
|
134
|
+
esac
|
|
135
|
+
done
|
|
136
|
+
case "$_cmd" in
|
|
137
|
+
profiles|runs|ps|run-output|describe|snapshot|agent-help|help|--help|-h|--version)
|
|
138
|
+
return 0
|
|
139
|
+
;;
|
|
140
|
+
models)
|
|
141
|
+
for _delegate_model_arg in "$@"; do
|
|
142
|
+
if [ "$_delegate_model_arg" = "--live" ]; then
|
|
143
|
+
return 1
|
|
144
|
+
fi
|
|
145
|
+
done
|
|
55
146
|
return 0
|
|
56
147
|
;;
|
|
57
148
|
capabilities)
|
|
@@ -47,18 +47,25 @@ This guide covers both human setup and non-interactive setup for agents or CI jo
|
|
|
47
47
|
|
|
48
48
|
The Claude harness requires Claude Code 2.1.x or newer (verified on 2.1.181) for `--effort`, `--permission-mode auto`, and `--no-session-persistence`.
|
|
49
49
|
|
|
50
|
-
4.
|
|
50
|
+
4. Discover installed harnesses and initialize Delegate:
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
delegate
|
|
54
|
-
$EDITOR ~/.delegate/config.json
|
|
53
|
+
delegate --json setup
|
|
55
54
|
```
|
|
56
55
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
Setup checks all supported harnesses, records normalized model and reasoning
|
|
57
|
+
metadata in the active auth profile's private cache, and reports which
|
|
58
|
+
harnesses are launchable. If no config exists, it creates a minimal config
|
|
59
|
+
containing safe absolute binary selectors. It never changes an existing
|
|
60
|
+
config. Setup does not install or authenticate a harness, edit harness-native
|
|
61
|
+
config, or submit a model prompt.
|
|
62
|
+
|
|
63
|
+
Use `delegate config init` when you want the editable example config and
|
|
64
|
+
profile overlays instead. Replace its placeholder Droid model IDs. Local
|
|
65
|
+
alias names such as `reviewer` and `implementer` are yours and need not reveal
|
|
66
|
+
the provider. For an existing install, run
|
|
67
|
+
`env -u AI_PROFILE delegate config sync-profiles` to create missing overlays
|
|
68
|
+
without overwriting existing ones.
|
|
62
69
|
|
|
63
70
|
In a development checkout, `cp config.example.json ~/.delegate/config.json`
|
|
64
71
|
is still fine. Installed users should prefer `delegate config init`.
|
|
@@ -87,7 +94,22 @@ When running on Windows through WSL, treat Delegate as a Linux CLI:
|
|
|
87
94
|
delegate --json worktree remove --help
|
|
88
95
|
```
|
|
89
96
|
|
|
90
|
-
`delegate --json capabilities` reports reasoning-effort support from config,
|
|
97
|
+
`delegate --json capabilities` reports reasoning-effort support from config,
|
|
98
|
+
the active profile's discovery cache, the legacy workspace cache, and bundled
|
|
99
|
+
fallback data without launching a child runtime.
|
|
100
|
+
|
|
101
|
+
Rediscover after a harness upgrade, account change, or new model release:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
delegate --json models --summary
|
|
105
|
+
delegate --json models <engine> --live
|
|
106
|
+
delegate --json capabilities refresh
|
|
107
|
+
delegate --json capabilities
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
`models <engine> --live` is a one-off view and never writes Delegate config or
|
|
111
|
+
cache. `capabilities refresh` and `setup` update the selected profile's cache,
|
|
112
|
+
preserving the last good record for a harness whose current probe fails.
|
|
91
113
|
|
|
92
114
|
6. Run a dry-run smoke test. Dry-run does not require the real child binary and does not launch the runtime:
|
|
93
115
|
|
|
@@ -167,6 +189,10 @@ For an orchestrating agent, script, or CI job:
|
|
|
167
189
|
a temporary `HOME` avoids inheriting nested maps such as user-level Droid
|
|
168
190
|
aliases.
|
|
169
191
|
|
|
192
|
+
For a persistent user installation, run `delegate --json setup` once before
|
|
193
|
+
the first launch. Do not add setup to every CI invocation: it calls installed
|
|
194
|
+
harness metadata commands and writes the selected profile's user cache.
|
|
195
|
+
|
|
170
196
|
4. Start with dry-run JSON:
|
|
171
197
|
|
|
172
198
|
```bash
|