delegate-agent-cli 0.13.1__tar.gz → 0.15.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.13.1 → delegate_agent_cli-0.15.0}/CHANGELOG.md +88 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/PKG-INFO +22 -11
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/README.md +21 -10
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/docs/agent-setup.md +2 -2
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/docs/cli-reference.md +115 -45
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/docs/configuration.md +3 -2
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/docs/security-model.md +42 -3
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/docs/troubleshooting.md +16 -6
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/docs/worktrees.md +13 -11
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/pyproject.toml +1 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/__init__.py +1 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/argv_builders.py +88 -9
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/argv_utils.py +9 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/cli.py +79 -9
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/cli_parser.py +87 -4
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/command_help.py +213 -73
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/constants.py +38 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/describe_payload.py +45 -22
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/git_utils.py +1 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/harness_events.py +28 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/inspection_commands.py +2 -5
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/isolation.py +25 -26
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/json_types.py +2 -2
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/profiles.py +87 -9
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/reasoning.py +3 -3
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/rendering.py +10 -5
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/request_build.py +125 -28
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/request_models.py +7 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/run_output_commands.py +6 -10
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/run_registry.py +74 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/runner.py +882 -84
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/safe_workspace.py +201 -77
- delegate_agent_cli-0.15.0/src/delegate_agent/seatbelt.py +170 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/snapshot_view.py +0 -2
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/wait_cancel_commands.py +58 -27
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/workflows/commands.py +131 -34
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/workflows/registry.py +77 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/workflows/runtime.py +79 -40
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/workflows/schema.py +34 -4
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/workflows/script.py +3 -2
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/worktree_execution.py +113 -75
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/worktree_remove.py +10 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/worktree_summary.py +1 -2
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent_cli.egg-info/PKG-INFO +22 -11
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent_cli.egg-info/SOURCES.txt +3 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_capability_commands.py +17 -0
- delegate_agent_cli-0.15.0/tests/test_codex_pure_sandbox.py +512 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_command_help.py +85 -11
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_delegate_help_cli.py +119 -3
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_delegate_isolation.py +59 -17
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_delegate_parser.py +154 -20
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_delegate_validation.py +0 -11
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_end_to_end_tracking.py +6 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_engine_argv.py +57 -38
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_execution_argv_and_prompt.py +81 -4
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_execution_dry_run.py +0 -11
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_execution_worktree_failure_cleanup.py +19 -13
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_execution_worktree_preflight.py +76 -191
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_execution_worktree_run.py +0 -8
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_model_discovery.py +2 -2
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_model_selection_wave1a.py +1 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_model_selection_wave1b.py +8 -6
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_profiles.py +112 -1
- delegate_agent_cli-0.15.0/tests/test_pure_call.py +574 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_retention.py +0 -3
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_run_registry.py +6 -2
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_runner_capture.py +769 -8
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_safe_workspace_isolation.py +238 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_slash_passthrough.py +8 -3
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_snapshot_run_output.py +59 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_wait_cancel_commands.py +146 -59
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_wave4_launch_features.py +157 -6
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_workflow_commands.py +887 -19
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_worktree_list_show.py +0 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_worktree_prune_gc.py +0 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_worktree_remove.py +17 -1
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/CONTRIBUTING.md +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/LICENSE +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/MANIFEST.in +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/SECURITY.md +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/bin/delegate-profile-shim +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/bin/delegate.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/config.example.json +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/docs/assets/delegate-agent-header.png +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/docs/development.md +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/docs/live-runtime.md +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/docs/publishing-checklist.md +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/examples/task.claude.json +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/examples/task.codex.json +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/examples/task.cursor.json +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/examples/task.droid.json +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/examples/task.grok.json +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/examples/task.judge.json +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/setup.cfg +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/archived_logs.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/bundled_models.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/capability_commands.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/command_errors.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/config.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/config_commands.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/errors.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/log_output.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/model_discovery.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/private_io.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/profile_commands.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/profile_guard.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/prompt_instructions.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/prompt_transport.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/redaction.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/retention.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/run_metadata.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/run_status.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/workflows/__init__.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/worktree_commands.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/worktree_gc.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/worktree_mgmt.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/worktree_records.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent/wsl.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent_cli.egg-info/dependency_links.txt +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent_cli.egg-info/entry_points.txt +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent_cli.egg-info/requires.txt +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/src/delegate_agent_cli.egg-info/top_level.txt +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_config_commands.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_harness_events.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_inspection_commands.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_kimi_commands.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_packaging.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_reasoning_capabilities.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_snapshot_redaction.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_snapshot_rendering.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_snapshot_view.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_utility_modules.py +0 -0
- {delegate_agent_cli-0.13.1 → delegate_agent_cli-0.15.0}/tests/test_wsl_guardrails.py +0 -0
|
@@ -5,6 +5,92 @@ 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.15.0] - 2026-07-16
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Work-mode worktree isolation now automatically carries tracked edits and
|
|
13
|
+
untracked, non-ignored files into the new worktree, with tracked/untracked
|
|
14
|
+
counts in human and JSON warnings and fail-clean teardown on sync errors.
|
|
15
|
+
- Child environments expose authoritative source/execution root metadata, and
|
|
16
|
+
Delegate-managed snapshot and worktree cleanup refuses targets that are or
|
|
17
|
+
contain the source workspace.
|
|
18
|
+
- Empty successful safe and read-only call results retry once when the prompt
|
|
19
|
+
can be safely extended; tracked runs retain both attempts and envelopes report
|
|
20
|
+
`emptyRetry` only when a retry was attempted.
|
|
21
|
+
- Bare Harness resolution in Snapshot, run-output, and wait now reports the
|
|
22
|
+
resolved Run, Alias, workspace, and age, with a stale-resolution warning after
|
|
23
|
+
24 hours.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- `run-output --tail N` now selects stdout when no output stream or Completion
|
|
28
|
+
Report was requested; stderr remains opt-in.
|
|
29
|
+
- Devin safe mode now fails during preflight with `unsupported_mode` rather than
|
|
30
|
+
launching without an enforceable read-only boundary.
|
|
31
|
+
- Call children use their throwaway cwd as `DELEGATE_SOURCE_ROOT`; the
|
|
32
|
+
Registry/config workspace is not disclosed to a stateless call.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- Empty-result retries now preserve cumulative duration, byte counts, usage,
|
|
37
|
+
truncation, stdin diagnostics, timeout budgets, and tracked launch-failure
|
|
38
|
+
state across primary, authentication-fallback, and retry attempts.
|
|
39
|
+
- Source-root cleanup guards now handle relative, symlinked, case-variant,
|
|
40
|
+
unresolved, and malformed paths conservatively without blocking safe cleanup
|
|
41
|
+
of source descendants.
|
|
42
|
+
- Dirty worktree sync preserves arbitrary filename bytes, rejects unsyncable
|
|
43
|
+
dirty submodules with escaped diagnostics, and documents the same behavior
|
|
44
|
+
consistently across the CLI reference and worktree guidance.
|
|
45
|
+
- Devin help and discovery surfaces now derive supported modes consistently and
|
|
46
|
+
reject unknown modes before constructing executable arguments.
|
|
47
|
+
|
|
48
|
+
## [0.14.0] - 2026-07-15
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
|
|
52
|
+
- `workflow result --field` for extracting a single field from a workflow
|
|
53
|
+
result, reliable latest-workflow selection, immutable creation ordering,
|
|
54
|
+
dry-run visibility, and orphan detection (PR #14).
|
|
55
|
+
- Schema validation for `agent()` results supports `minLength` and
|
|
56
|
+
`minItems`, including in retries and dry-run placeholders (PR #14).
|
|
57
|
+
- Grouped work runs sharing one non-isolated workspace now emit a warning
|
|
58
|
+
with guidance for commit boundaries and persistent worktrees (PR #13).
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
|
|
62
|
+
- Focused call help (`delegate <engine> call --help`) now reflects
|
|
63
|
+
call-mode option boundaries and documents the grouped-call tracking
|
|
64
|
+
exception (`--cwd` accepted only with `--group`); explicit `agent` input
|
|
65
|
+
is rejected on engines that do not support it (PR #13).
|
|
66
|
+
- Overview, dry-run, agent-help, README, CLI reference, and worktree docs
|
|
67
|
+
corrected from user feedback (PR #13).
|
|
68
|
+
|
|
69
|
+
### Fixed
|
|
70
|
+
|
|
71
|
+
- Structured Codex workflows consume the child-authored completion report
|
|
72
|
+
(including on resume) and fail closed when it is missing; workflow resume
|
|
73
|
+
transitions atomically to `starting`, hides stale results, rolls back
|
|
74
|
+
failed launches, and releases locks on preparation errors (PR #14).
|
|
75
|
+
- Safe isolation re-roots exact source-workspace paths while preserving
|
|
76
|
+
slash-command payloads verbatim (PR #14).
|
|
77
|
+
- `wait`: a run matched by both `--latest HARNESS` and `--group NAME`
|
|
78
|
+
was emitted twice in the resolved-target list; it now appears once, with
|
|
79
|
+
first-selection precedence and ordering preserved.
|
|
80
|
+
- `git_root_for` degrades any `OSError` from the git probe (not just
|
|
81
|
+
`FileNotFoundError`) to the non-git fallback, so e.g. a `PermissionError`
|
|
82
|
+
spawning git no longer crashes workspace resolution.
|
|
83
|
+
|
|
84
|
+
### Changed
|
|
85
|
+
|
|
86
|
+
- Internal cleanup pass across `src/` and `tests/`: removed dead code (unused
|
|
87
|
+
protocol types, private helpers, stale fixtures), collapsed redundant
|
|
88
|
+
exception tuples into their `OSError` base, replaced a hand-rolled
|
|
89
|
+
path-containment helper with `Path.is_relative_to`, and stripped stale
|
|
90
|
+
review-artifact comments. Behavior-preserving; the workflow supervisor's
|
|
91
|
+
broad exception boundary around child-model output is now explicitly
|
|
92
|
+
commented and regression-tested.
|
|
93
|
+
|
|
8
94
|
## [0.13.1] - 2026-07-09
|
|
9
95
|
|
|
10
96
|
### Added
|
|
@@ -304,6 +390,8 @@ Usage-audit fix wave: 82 sessions and 1,241 delegate invocations from one week o
|
|
|
304
390
|
|
|
305
391
|
- Releases before 0.1.3 predate this changelog.
|
|
306
392
|
|
|
393
|
+
[0.15.0]: https://github.com/treygoff24/delegate-agent/compare/v0.14.0...v0.15.0
|
|
394
|
+
[0.14.0]: https://github.com/treygoff24/delegate-agent/compare/v0.13.1...v0.14.0
|
|
307
395
|
[0.13.1]: https://github.com/treygoff24/delegate-agent/compare/v0.13.0...v0.13.1
|
|
308
396
|
[0.13.0]: https://github.com/treygoff24/delegate-agent/compare/v0.12.0...v0.13.0
|
|
309
397
|
[0.12.0]: https://github.com/treygoff24/delegate-agent/compare/v0.11.0...v0.12.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: delegate-agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.15.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
|
```
|
|
@@ -221,8 +220,17 @@ run, use stateless `call` mode:
|
|
|
221
220
|
|
|
222
221
|
```bash
|
|
223
222
|
delegate --json codex call "Summarize this context in three bullets."
|
|
223
|
+
delegate --json claude call --pure --timeout 60 --output-schema result.schema.json < prompt.txt
|
|
224
224
|
```
|
|
225
225
|
|
|
226
|
+
`call --pure` is a hostile-input completion boundary available on Claude only.
|
|
227
|
+
It uses an empty temporary cwd, an allowlisted child environment, no Delegate
|
|
228
|
+
prompt framing, and no session persistence or tools according to the engine
|
|
229
|
+
capability contract. Claude receives the prompt only on stdin and is
|
|
230
|
+
schema-capable via `--output-schema`; `delegate --json describe` reports
|
|
231
|
+
`pureCall`, `structuredOutput`, `noSessionPersistence`, `usageEvents`, and
|
|
232
|
+
`promptStdin` per engine. `--timeout SECONDS` applies to every call-mode engine.
|
|
233
|
+
|
|
226
234
|
For multi-step fan-out or gated review flows, use Delegate Workflows. A workflow
|
|
227
235
|
is a Python script that launches normal Delegate child runs, journals progress,
|
|
228
236
|
can pause on approval gates, and can resume from cached child results:
|
|
@@ -294,6 +302,9 @@ cancelled, and `124` on timeout. `cancel` signals the run's process group
|
|
|
294
302
|
start-identity check against PID reuse; a cancelled run reports `cancelled`
|
|
295
303
|
rather than a false success. Tag a batch of launches with `--group NAME` and
|
|
296
304
|
`wait`, `runs`, and the worktree commands can select the whole group at once.
|
|
305
|
+
Commit between grouped feature waves that edit the same workspace. If features
|
|
306
|
+
need separate review or commits, give each a persistent worktree and integrate
|
|
307
|
+
them separately; `wait --group` warns about shared non-isolated workspaces.
|
|
297
308
|
|
|
298
309
|
## Task design: cluster related work into fewer, richer delegations
|
|
299
310
|
|
|
@@ -315,9 +326,9 @@ Delegate separates three ideas:
|
|
|
315
326
|
|
|
316
327
|
Defaults are intentionally conservative for review paths:
|
|
317
328
|
|
|
318
|
-
- `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.
|
|
319
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.
|
|
320
|
-
- 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.
|
|
321
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.
|
|
322
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.
|
|
323
334
|
- `work` mode can edit. By default it runs in the real workspace for backward compatibility.
|
|
@@ -340,12 +351,12 @@ child where that summary is available. `--forbid-commit` fails the run if
|
|
|
340
351
|
commits remain ahead of the creation base when the child exits, and it now
|
|
341
352
|
implies `--isolation worktree`.
|
|
342
353
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
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.
|
|
347
358
|
|
|
348
|
-
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`.
|
|
349
360
|
|
|
350
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.
|
|
351
362
|
|
|
@@ -387,6 +398,6 @@ AI_PROFILE delegate ...` uses the base config, or set
|
|
|
387
398
|
|
|
388
399
|
- Delegate is an alpha CLI wrapper. Child runtimes can change their own flags or behavior.
|
|
389
400
|
- Safe mode is a policy and isolation pattern, not a guarantee that a runtime cannot perform side effects outside its execution workspace.
|
|
390
|
-
- Persistent worktrees require a Git repository with a valid `HEAD
|
|
401
|
+
- Persistent worktrees require a Git repository with a valid `HEAD`.
|
|
391
402
|
- `--pass-through` is incompatible with `--json` and with persistent worktree runs.
|
|
392
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
|
```
|
|
@@ -188,8 +187,17 @@ run, use stateless `call` mode:
|
|
|
188
187
|
|
|
189
188
|
```bash
|
|
190
189
|
delegate --json codex call "Summarize this context in three bullets."
|
|
190
|
+
delegate --json claude call --pure --timeout 60 --output-schema result.schema.json < prompt.txt
|
|
191
191
|
```
|
|
192
192
|
|
|
193
|
+
`call --pure` is a hostile-input completion boundary available on Claude only.
|
|
194
|
+
It uses an empty temporary cwd, an allowlisted child environment, no Delegate
|
|
195
|
+
prompt framing, and no session persistence or tools according to the engine
|
|
196
|
+
capability contract. Claude receives the prompt only on stdin and is
|
|
197
|
+
schema-capable via `--output-schema`; `delegate --json describe` reports
|
|
198
|
+
`pureCall`, `structuredOutput`, `noSessionPersistence`, `usageEvents`, and
|
|
199
|
+
`promptStdin` per engine. `--timeout SECONDS` applies to every call-mode engine.
|
|
200
|
+
|
|
193
201
|
For multi-step fan-out or gated review flows, use Delegate Workflows. A workflow
|
|
194
202
|
is a Python script that launches normal Delegate child runs, journals progress,
|
|
195
203
|
can pause on approval gates, and can resume from cached child results:
|
|
@@ -261,6 +269,9 @@ cancelled, and `124` on timeout. `cancel` signals the run's process group
|
|
|
261
269
|
start-identity check against PID reuse; a cancelled run reports `cancelled`
|
|
262
270
|
rather than a false success. Tag a batch of launches with `--group NAME` and
|
|
263
271
|
`wait`, `runs`, and the worktree commands can select the whole group at once.
|
|
272
|
+
Commit between grouped feature waves that edit the same workspace. If features
|
|
273
|
+
need separate review or commits, give each a persistent worktree and integrate
|
|
274
|
+
them separately; `wait --group` warns about shared non-isolated workspaces.
|
|
264
275
|
|
|
265
276
|
## Task design: cluster related work into fewer, richer delegations
|
|
266
277
|
|
|
@@ -282,9 +293,9 @@ Delegate separates three ideas:
|
|
|
282
293
|
|
|
283
294
|
Defaults are intentionally conservative for review paths:
|
|
284
295
|
|
|
285
|
-
- `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.
|
|
286
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.
|
|
287
|
-
- 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.
|
|
288
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.
|
|
289
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.
|
|
290
301
|
- `work` mode can edit. By default it runs in the real workspace for backward compatibility.
|
|
@@ -307,12 +318,12 @@ child where that summary is available. `--forbid-commit` fails the run if
|
|
|
307
318
|
commits remain ahead of the creation base when the child exits, and it now
|
|
308
319
|
implies `--isolation worktree`.
|
|
309
320
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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.
|
|
314
325
|
|
|
315
|
-
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`.
|
|
316
327
|
|
|
317
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.
|
|
318
329
|
|
|
@@ -354,6 +365,6 @@ AI_PROFILE delegate ...` uses the base config, or set
|
|
|
354
365
|
|
|
355
366
|
- Delegate is an alpha CLI wrapper. Child runtimes can change their own flags or behavior.
|
|
356
367
|
- Safe mode is a policy and isolation pattern, not a guarantee that a runtime cannot perform side effects outside its execution workspace.
|
|
357
|
-
- Persistent worktrees require a Git repository with a valid `HEAD
|
|
368
|
+
- Persistent worktrees require a Git repository with a valid `HEAD`.
|
|
358
369
|
- `--pass-through` is incompatible with `--json` and with persistent worktree runs.
|
|
359
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
|
|