delegate-agent-cli 0.32.0__tar.gz → 0.33.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.
Files changed (345) hide show
  1. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/CHANGELOG.md +21 -1
  2. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/PKG-INFO +10 -7
  3. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/README.md +9 -6
  4. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/config.example.json +7 -0
  5. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/agent-setup.md +4 -2
  6. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/cli-reference.md +52 -16
  7. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/configuration.md +47 -14
  8. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/development.md +2 -2
  9. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/security-model.md +11 -10
  10. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/troubleshooting.md +3 -3
  11. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/pyproject.toml +1 -1
  12. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/__init__.py +1 -1
  13. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/argv_builders.py +68 -2
  14. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/argv_utils.py +1 -0
  15. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/auto_resume.py +1 -1
  16. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/bundled_models.py +6 -0
  17. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/cli_parser.py +5 -5
  18. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/command_help.py +65 -7
  19. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/config.py +50 -2
  20. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/constants.py +6 -3
  21. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/describe_payload.py +86 -1
  22. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/followup_command.py +12 -3
  23. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/harness_discovery.py +25 -0
  24. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/harness_events.py +72 -2
  25. delegate_agent_cli-0.33.0/src/delegate_agent/lane_slice.py +327 -0
  26. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/mail_core.py +1 -0
  27. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/model_discovery.py +1 -1
  28. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/reasoning.py +36 -1
  29. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/request_build.py +211 -28
  30. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/resume_command.py +3 -3
  31. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/runner.py +171 -150
  32. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/sandbox_bwrap.py +5 -0
  33. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/stall_watchdog.py +44 -0
  34. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/structured_output.py +8 -1
  35. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflows/runtime.py +6 -6
  36. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflows/script.py +4 -2
  37. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent_cli.egg-info/PKG-INFO +10 -7
  38. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent_cli.egg-info/SOURCES.txt +1 -0
  39. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_command_help.py +1 -0
  40. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_degraded_runs.py +3 -3
  41. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_delegate_help_cli.py +22 -2
  42. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_discovery_contracts.py +1 -1
  43. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_engine_argv.py +37 -2
  44. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_followup_refusals.py +1 -1
  45. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_harness_discovery.py +11 -1
  46. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_lane_a_transport.py +3 -1
  47. delegate_agent_cli-0.33.0/tests/test_lane_slice.py +477 -0
  48. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_model_selection_wave1a.py +4 -0
  49. delegate_agent_cli-0.33.0/tests/test_muse_engine.py +248 -0
  50. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_omp_provider_pin.py +75 -31
  51. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_parser.py +1 -1
  52. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_records.py +1 -0
  53. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_reasoning_capabilities.py +1 -0
  54. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_resume_inheritance.py +1 -1
  55. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_resume_parser.py +1 -1
  56. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_slash_passthrough.py +1 -0
  57. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_commands.py +1 -1
  58. delegate_agent_cli-0.32.0/src/delegate_agent/lane_slice.py +0 -156
  59. delegate_agent_cli-0.32.0/tests/test_lane_slice.py +0 -139
  60. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/CONTRIBUTING.md +0 -0
  61. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/LICENSE +0 -0
  62. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/MANIFEST.in +0 -0
  63. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/SECURITY.md +0 -0
  64. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/bin/delegate-profile-shim +0 -0
  65. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/bin/delegate.py +0 -0
  66. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/assets/delegate-agent-header.png +0 -0
  67. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/delegate-workflows.md +0 -0
  68. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/live-runtime.md +0 -0
  69. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/publishing-checklist.md +0 -0
  70. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/docs/worktrees.md +0 -0
  71. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/examples/task.claude.json +0 -0
  72. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/examples/task.codex.json +0 -0
  73. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/examples/task.cursor.json +0 -0
  74. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/examples/task.droid.json +0 -0
  75. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/examples/task.grok.json +0 -0
  76. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/examples/task.judge.json +0 -0
  77. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/examples/task.kimi.json +0 -0
  78. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/setup.cfg +0 -0
  79. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/account_binding.py +0 -0
  80. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/archived_logs.py +0 -0
  81. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/auth_health.py +0 -0
  82. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/capability_commands.py +0 -0
  83. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/child_failures.py +0 -0
  84. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/cli.py +0 -0
  85. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/command_errors.py +0 -0
  86. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/config_commands.py +0 -0
  87. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/degraded.py +0 -0
  88. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/errors.py +0 -0
  89. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/failover_state.py +0 -0
  90. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/git_utils.py +0 -0
  91. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/harness_enabled.py +0 -0
  92. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/inspection_commands.py +0 -0
  93. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/isolation.py +0 -0
  94. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/json_types.py +0 -0
  95. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/lane_health.py +0 -0
  96. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/log_output.py +0 -0
  97. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/mail.py +0 -0
  98. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/mail_push.py +0 -0
  99. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/notify.py +0 -0
  100. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/outcome.py +0 -0
  101. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/outside_cwd_changes.py +0 -0
  102. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/pending_tool.py +0 -0
  103. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/personas.py +0 -0
  104. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/private_io.py +0 -0
  105. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/profile_commands.py +0 -0
  106. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/profile_guard.py +0 -0
  107. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/profiles.py +0 -0
  108. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/prompt_instructions.py +0 -0
  109. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/prompt_transport.py +0 -0
  110. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/provider_errors.py +0 -0
  111. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/record_io.py +0 -0
  112. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/redaction.py +0 -0
  113. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/registry_roster.py +0 -0
  114. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/rendering.py +0 -0
  115. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/request_models.py +0 -0
  116. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/retention.py +0 -0
  117. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/run_context.py +0 -0
  118. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/run_metadata.py +0 -0
  119. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/run_output_commands.py +0 -0
  120. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/run_registry.py +0 -0
  121. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/run_scratch.py +0 -0
  122. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/run_status.py +0 -0
  123. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/safe_workspace.py +0 -0
  124. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/seatbelt.py +0 -0
  125. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/setup_commands.py +0 -0
  126. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/snapshot_view.py +0 -0
  127. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/stream_capture.py +0 -0
  128. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/terminal_states.py +0 -0
  129. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/usage_record.py +0 -0
  130. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/wait_cancel_commands.py +0 -0
  131. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflow_attempts.py +0 -0
  132. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflow_identity.py +0 -0
  133. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflow_pinning.py +0 -0
  134. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflows/__init__.py +0 -0
  135. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflows/commands.py +0 -0
  136. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflows/registry.py +0 -0
  137. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflows/schema.py +0 -0
  138. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflows/stage_guard.py +0 -0
  139. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workflows/status_reasons.py +0 -0
  140. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/workspace_spec.py +0 -0
  141. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/worktree_commands.py +0 -0
  142. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/worktree_execution.py +0 -0
  143. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/worktree_gc.py +0 -0
  144. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/worktree_mgmt.py +0 -0
  145. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/worktree_procs.py +0 -0
  146. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/worktree_records.py +0 -0
  147. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/worktree_remove.py +0 -0
  148. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/worktree_salvage.py +0 -0
  149. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/worktree_summary.py +0 -0
  150. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/write_guard.py +0 -0
  151. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/write_guard_launch.py +0 -0
  152. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent/wsl.py +0 -0
  153. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent_cli.egg-info/dependency_links.txt +0 -0
  154. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent_cli.egg-info/entry_points.txt +0 -0
  155. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent_cli.egg-info/requires.txt +0 -0
  156. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/src/delegate_agent_cli.egg-info/top_level.txt +0 -0
  157. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_acceptance_toolchain.py +0 -0
  158. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_account_binding.py +0 -0
  159. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_appendix_failure_strings.py +0 -0
  160. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_auth_health.py +0 -0
  161. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_auto_resume.py +0 -0
  162. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_bundled_models_lane_r.py +0 -0
  163. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_c5_validation.py +0 -0
  164. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_call_capture_contract.py +0 -0
  165. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_call_text_fixtures.py +0 -0
  166. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_cancel_terminal_override.py +0 -0
  167. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_capability_commands.py +0 -0
  168. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_child_failures.py +0 -0
  169. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_child_root_env.py +0 -0
  170. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_cli_ergonomics.py +0 -0
  171. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_cli_simplification.py +0 -0
  172. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_cli_surface_fixes.py +0 -0
  173. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_codex_pure_sandbox.py +0 -0
  174. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_codex_scratch.py +0 -0
  175. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_codex_thread_resilience.py +0 -0
  176. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_config_commands.py +0 -0
  177. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_cross_registry_lookup.py +0 -0
  178. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_degraded.py +0 -0
  179. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_delegate_audit_shim.py +0 -0
  180. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_delegate_isolation.py +0 -0
  181. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_delegate_parser.py +0 -0
  182. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_delegate_validation.py +0 -0
  183. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_describe_models_binary.py +0 -0
  184. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_describe_workflow_dsl.py +0 -0
  185. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_devin_bounded_output.py +0 -0
  186. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_devin_read_only_behavior.py +0 -0
  187. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_docs_parser_conformance.py +0 -0
  188. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_end_to_end_tracking.py +0 -0
  189. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_engine_universe.py +0 -0
  190. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_execution_argv_and_prompt.py +0 -0
  191. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_execution_dry_run.py +0 -0
  192. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_execution_worktree_failure_cleanup.py +0 -0
  193. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_execution_worktree_preflight.py +0 -0
  194. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_execution_worktree_run.py +0 -0
  195. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_failover_state.py +0 -0
  196. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_followup_after_retry_e2e.py +0 -0
  197. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_followup_capture.py +0 -0
  198. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_followup_parser.py +0 -0
  199. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_harness_events.py +0 -0
  200. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_harness_json_limits.py +0 -0
  201. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_inspection_commands.py +0 -0
  202. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_isolation_plans.py +0 -0
  203. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_kimi_commands.py +0 -0
  204. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_lane_b_lifecycle.py +0 -0
  205. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_lane_health.py +0 -0
  206. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_lane_known_bad.py +0 -0
  207. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_lane_m_mail_defaults.py +0 -0
  208. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_lane_r_public_surface.py +0 -0
  209. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_lane_s_structured_retry.py +0 -0
  210. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_launch_error_hints.py +0 -0
  211. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_launch_input_parity.py +0 -0
  212. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_launch_mapping.py +0 -0
  213. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_launch_model_resolution.py +0 -0
  214. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_bounds.py +0 -0
  215. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_contract.py +0 -0
  216. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_delivery.py +0 -0
  217. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_eligibility.py +0 -0
  218. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_framing.py +0 -0
  219. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_gating.py +0 -0
  220. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_identity.py +0 -0
  221. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_io.py +0 -0
  222. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_parser.py +0 -0
  223. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_prune.py +0 -0
  224. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_push.py +0 -0
  225. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_push_adapters.py +0 -0
  226. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_push_batch.py +0 -0
  227. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_push_cursor.py +0 -0
  228. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_push_gating.py +0 -0
  229. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_push_inheritance.py +0 -0
  230. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_push_seams.py +0 -0
  231. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_reply.py +0 -0
  232. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_resolution.py +0 -0
  233. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_rules.py +0 -0
  234. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_tempdir.py +0 -0
  235. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_mail_unread_steering.py +0 -0
  236. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_model_discovery.py +0 -0
  237. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_model_selection_wave1b.py +0 -0
  238. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_nested_workflow_threads.py +0 -0
  239. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_no_page_ask.py +0 -0
  240. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_notify.py +0 -0
  241. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_omp_output_capture.py +0 -0
  242. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_omp_read_only_behavior.py +0 -0
  243. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_omp_tool_update_compaction.py +0 -0
  244. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_outcome_contract.py +0 -0
  245. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_output_cap_off.py +0 -0
  246. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_outside_cwd_changes.py +0 -0
  247. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_packaging.py +0 -0
  248. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_partial_output_recovery.py +0 -0
  249. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_capability.py +0 -0
  250. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_claude.py +0 -0
  251. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_contract.py +0 -0
  252. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_framer.py +0 -0
  253. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_opencode.py +0 -0
  254. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_resolution.py +0 -0
  255. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_size_guard.py +0 -0
  256. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_validation.py +0 -0
  257. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_persona_workflow.py +0 -0
  258. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_private_directory_publish.py +0 -0
  259. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_private_io_bounded.py +0 -0
  260. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_private_io_dir_race.py +0 -0
  261. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_proc_harness.py +0 -0
  262. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_process_guard.py +0 -0
  263. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_profiles.py +0 -0
  264. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_provider_error_docs.py +0 -0
  265. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_provider_error_records.py +0 -0
  266. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_provider_errors.py +0 -0
  267. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_provider_outcomes.py +0 -0
  268. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_pure_call.py +0 -0
  269. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_python_version_guard.py +0 -0
  270. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_real_binary_contracts.py +0 -0
  271. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_registry_contention.py +0 -0
  272. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_registry_lock_guard.py +0 -0
  273. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_registry_roster.py +0 -0
  274. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_resumable_default.py +0 -0
  275. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_resume_attachment.py +0 -0
  276. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_resume_capture.py +0 -0
  277. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_resume_projections.py +0 -0
  278. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_resume_refusals.py +0 -0
  279. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_resume_size_guard.py +0 -0
  280. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_resume_stale.py +0 -0
  281. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_resume_trust.py +0 -0
  282. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_retention.py +0 -0
  283. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_run_listing_cost.py +0 -0
  284. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_run_record_imports.py +0 -0
  285. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_run_registry.py +0 -0
  286. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_runner_capture.py +0 -0
  287. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_runs_deadline.py +0 -0
  288. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_safe_workspace_isolation.py +0 -0
  289. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_sandbox_bwrap.py +0 -0
  290. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_scratch_reclaim.py +0 -0
  291. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_setup_commands.py +0 -0
  292. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_simplification_integration.py +0 -0
  293. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_single_run_record.py +0 -0
  294. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_snapshot_redaction.py +0 -0
  295. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_snapshot_rendering.py +0 -0
  296. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_snapshot_run_output.py +0 -0
  297. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_snapshot_view.py +0 -0
  298. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_stall_watchdog.py +0 -0
  299. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_stall_watchdog_cursor.py +0 -0
  300. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_stall_watchdog_runner.py +0 -0
  301. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_status_truth.py +0 -0
  302. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_stream_usage_ingest.py +0 -0
  303. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_structured_output.py +0 -0
  304. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_terminal_states.py +0 -0
  305. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_test_environment.py +0 -0
  306. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_test_runner.py +0 -0
  307. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_tracked_output_bounds.py +0 -0
  308. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_tracked_timeout.py +0 -0
  309. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_utility_modules.py +0 -0
  310. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_wait_cancel_commands.py +0 -0
  311. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_wave4_launch_features.py +0 -0
  312. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_attempts.py +0 -0
  313. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_check_keying.py +0 -0
  314. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_failure_policy.py +0 -0
  315. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_gate_binding.py +0 -0
  316. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_journal_reader.py +0 -0
  317. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_jsonl_cli.py +0 -0
  318. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_key_stability.py +0 -0
  319. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_keyed_steps.py +0 -0
  320. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_pinning.py +0 -0
  321. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_profile_identity.py +0 -0
  322. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_provider_stage.py +0 -0
  323. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_repin.py +0 -0
  324. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_retry_outcomes.py +0 -0
  325. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_schema.py +0 -0
  326. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_session_fallback.py +0 -0
  327. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_simplification.py +0 -0
  328. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_status_reasons.py +0 -0
  329. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_watchdog.py +0 -0
  330. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workflow_watchdog_unit.py +0 -0
  331. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_workspace_spec.py +0 -0
  332. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_worktree_effective_dirt.py +0 -0
  333. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_worktree_list_show.py +0 -0
  334. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_worktree_prune_gc.py +0 -0
  335. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_worktree_reap_orphan.py +0 -0
  336. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_worktree_record_bundle.py +0 -0
  337. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_worktree_remove.py +0 -0
  338. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_worktree_retirement.py +0 -0
  339. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_worktree_safety_policy.py +0 -0
  340. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_worktree_salvage.py +0 -0
  341. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_worktree_symlink_placeholders.py +0 -0
  342. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_write_guard.py +0 -0
  343. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_write_guard_e2e.py +0 -0
  344. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_write_guard_live.py +0 -0
  345. {delegate_agent_cli-0.32.0 → delegate_agent_cli-0.33.0}/tests/test_wsl_guardrails.py +0 -0
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.33.0] - 2026-10-12
11
+
12
+ This release adds Muse (Meta's Muse family) as the eleventh harness, at parity with the best-supported engines: safe/work/call modes, structured output, native session followup, and the full effort enum.
13
+
14
+ ### Added
15
+ - **Muse is a Delegate harness.** `delegate muse safe|work|call` wraps
16
+ Meta's Muse (`muse exec --json`) with Muse family models: prompt-file
17
+ delivery, a flag-enforced safe lockdown (`--disable-write --disable-shell
18
+ --disable-web-tools`, sandbox on, workspace untrusted), work mode with the
19
+ sandbox kept on, native `--output-schema` enforcement, session followup and
20
+ auto-resume, and the full static effort enum through `ultra`. The `muse`
21
+ binary accepts unknown model IDs silently, so Delegate records no
22
+ served-model claim for Muse runs.
23
+
24
+ ### Fixed
25
+ - The test runner (`scripts/test.py`) no longer aborts on hosts where
26
+ lowering its own priority with `os.nice` is not permitted (sandboxed
27
+ agent harnesses); it warns and continues under the worker caps.
28
+
10
29
  ## [0.32.0] - 2026-10-01
11
30
 
12
31
  This release adds controls for launching and managing agents and resuming
@@ -2570,7 +2589,8 @@ Usage-audit fix wave: 82 sessions and 1,241 delegate invocations from one week o
2570
2589
 
2571
2590
  - Releases before 0.1.3 predate this changelog.
2572
2591
 
2573
- [Unreleased]: https://github.com/treygoff24/delegate-agent/compare/v0.32.0...HEAD
2592
+ [Unreleased]: https://github.com/treygoff24/delegate-agent/compare/v0.33.0...HEAD
2593
+ [0.33.0]: https://github.com/treygoff24/delegate-agent/compare/v0.32.0...v0.33.0
2574
2594
  [0.32.0]: https://github.com/treygoff24/delegate-agent/compare/v0.31.0...v0.32.0
2575
2595
  [0.31.0]: https://github.com/treygoff24/delegate-agent/compare/v0.29.1...v0.31.0
2576
2596
  [0.30.0]: https://github.com/treygoff24/delegate-agent/compare/v0.29.1...v0.30.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: delegate-agent-cli
3
- Version: 0.32.0
3
+ Version: 0.33.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
@@ -41,7 +41,7 @@ Dynamic: license-file
41
41
 
42
42
  # Delegate Agent
43
43
 
44
- Delegate Agent is a small CLI for handing a bounded task to another coding-agent runtime. It normalizes common calls to Cursor Agent, Factory Droid, OpenAI Codex, Claude Code, Grok Build, Devin, OpenCode, Pi, Oh My Pi, and Kimi Code so humans or other agents can launch review, investigation, and implementation jobs without remembering each tool's flags.
44
+ Delegate Agent is a small CLI for handing a bounded task to another coding-agent runtime. It normalizes common calls to Cursor Agent, Factory Droid, OpenAI Codex, Claude Code, Grok Build, Devin, OpenCode, Pi, Oh My Pi, Kimi Code, and Muse so humans or other agents can launch review, investigation, and implementation jobs without remembering each tool's flags.
45
45
 
46
46
  Use it when you want a predictable wrapper around prompts like:
47
47
 
@@ -52,7 +52,7 @@ Use it when you want a predictable wrapper around prompts like:
52
52
  Delegate does **not** commit, push, merge, deploy, publish, or run a background service. It builds the child command, adds safety framing, launches the selected runtime, and records local run metadata for later inspection.
53
53
 
54
54
  Prompt handling is provider-specific: Codex, Claude, OpenCode, Pi, Cursor Agent, and Oh My Pi
55
- prompts are delivered to the child runtime over stdin; Droid, Grok, and Devin prompts
55
+ prompts are delivered to the child runtime over stdin; Droid, Grok, Devin, and Muse prompts
56
56
  are delivered through private temporary prompt files; Kimi Code is the only Harness
57
57
  that still requires prompt argv, and the only one whose prompt Delegate redacts in
58
58
  dry-run output and run manifests. Redaction hides the prompt from Delegate's own
@@ -129,6 +129,7 @@ command -v opencode # OpenCode CLI, used by delegate opencode ...
129
129
  command -v pi # Pi coding agent, used by delegate pi ...
130
130
  command -v omp # Oh My Pi, used by delegate omp ...
131
131
  command -v kimi # Kimi Code CLI, used by delegate kimi ...
132
+ command -v muse # Muse (Meta), used by delegate muse ...
132
133
  ```
133
134
 
134
135
  Supported modes:
@@ -145,6 +146,7 @@ Supported modes:
145
146
  | Pi | `pi` | Yes | Yes | Yes |
146
147
  | Oh My Pi | `omp` | Yes | Yes | Yes |
147
148
  | Kimi Code | `kimi` | Yes | Yes | Yes |
149
+ | Muse | `muse` | Yes | Yes | Yes |
148
150
 
149
151
  Devin `safe` is rejected because Delegate cannot enforce a read-only filesystem
150
152
  survey through Devin's generic execution tool. See the
@@ -218,6 +220,7 @@ delegate --json dry-run claude safe "Review this repository. Do not edit files."
218
220
  delegate --json dry-run opencode safe "Review this repository. Do not edit files."
219
221
  delegate --json dry-run pi safe "Review this repository. Do not edit files."
220
222
  delegate --json dry-run omp safe "Review this repository. Do not edit files."
223
+ delegate --json dry-run muse safe "Review this repository. Do not edit files."
221
224
  ```
222
225
 
223
226
  Run a read-only review in an isolated throwaway workspace:
@@ -280,12 +283,12 @@ $EDITOR /tmp/delegate-task.json
280
283
  delegate --json run --input-json /tmp/delegate-task.json
281
284
  ```
282
285
 
283
- For Codex or Claude fan-outs that must return machine-parseable records, add
286
+ For Codex, Claude, or Muse fan-outs that must return machine-parseable records, add
284
287
  `--output-schema` (or JSON `outputSchema`); Delegate suppresses completion-report
285
288
  injection so the schema owns the final message. Codex schemas are
286
289
  strict-preflighted recursively: every property must be required, and a missing
287
290
  `additionalProperties: false` is supplied in a warned temporary copy without
288
- changing the source file.
291
+ changing the source file. Muse schemas are enforced natively and the root object must set `additionalProperties: false`.
289
292
 
290
293
  For a one-hop prompt that should not see the current repo or create a tracked
291
294
  run, use stateless `call` mode:
@@ -327,7 +330,7 @@ It changes only the requested model thinking depth/cost/latency; it does not
327
330
  change safe/work/call mode, sandboxing, approvals, or edit capability.
328
331
  Codex/Droid validate exact model metadata, Cursor selects an explicit configured
329
332
  or corroborated discovered effort route, Claude and Grok map to native
330
- `--effort`, OpenCode validates discovered exact variants when present and
333
+ `--effort`, Muse maps to `--reasoning-effort` (`none`…`ultra`), OpenCode validates discovered exact variants when present and
331
334
  otherwise warns on pass-through, and Pi/Oh My Pi map to `--thinking` with
332
335
  evidence-aware validation. Devin and Kimi do not expose a Delegate
333
336
  reasoning-effort flag. Explicit Codex effort can target the harness default model
@@ -490,7 +493,7 @@ non-ignored files from a dirty source checkout before launch, report the counts
490
493
  in a `dirty_source_auto_included` warning, and tear down the worktree if syncing
491
494
  fails. `--include-dirty` remains an explicit, harmless no-op on a clean source.
492
495
 
493
- 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/Pi/Oh My Pi/Kimi safe isolation falls back to a directory copy because Git cannot create a detached worktree from an unborn `HEAD`.
496
+ 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/Pi/Oh My Pi/Kimi/Muse safe isolation falls back to a directory copy because Git cannot create a detached worktree from an unborn `HEAD`.
494
497
 
495
498
  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.
496
499
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # Delegate Agent
6
6
 
7
- Delegate Agent is a small CLI for handing a bounded task to another coding-agent runtime. It normalizes common calls to Cursor Agent, Factory Droid, OpenAI Codex, Claude Code, Grok Build, Devin, OpenCode, Pi, Oh My Pi, and Kimi Code so humans or other agents can launch review, investigation, and implementation jobs without remembering each tool's flags.
7
+ Delegate Agent is a small CLI for handing a bounded task to another coding-agent runtime. It normalizes common calls to Cursor Agent, Factory Droid, OpenAI Codex, Claude Code, Grok Build, Devin, OpenCode, Pi, Oh My Pi, Kimi Code, and Muse so humans or other agents can launch review, investigation, and implementation jobs without remembering each tool's flags.
8
8
 
9
9
  Use it when you want a predictable wrapper around prompts like:
10
10
 
@@ -15,7 +15,7 @@ Use it when you want a predictable wrapper around prompts like:
15
15
  Delegate does **not** commit, push, merge, deploy, publish, or run a background service. It builds the child command, adds safety framing, launches the selected runtime, and records local run metadata for later inspection.
16
16
 
17
17
  Prompt handling is provider-specific: Codex, Claude, OpenCode, Pi, Cursor Agent, and Oh My Pi
18
- prompts are delivered to the child runtime over stdin; Droid, Grok, and Devin prompts
18
+ prompts are delivered to the child runtime over stdin; Droid, Grok, Devin, and Muse prompts
19
19
  are delivered through private temporary prompt files; Kimi Code is the only Harness
20
20
  that still requires prompt argv, and the only one whose prompt Delegate redacts in
21
21
  dry-run output and run manifests. Redaction hides the prompt from Delegate's own
@@ -92,6 +92,7 @@ command -v opencode # OpenCode CLI, used by delegate opencode ...
92
92
  command -v pi # Pi coding agent, used by delegate pi ...
93
93
  command -v omp # Oh My Pi, used by delegate omp ...
94
94
  command -v kimi # Kimi Code CLI, used by delegate kimi ...
95
+ command -v muse # Muse (Meta), used by delegate muse ...
95
96
  ```
96
97
 
97
98
  Supported modes:
@@ -108,6 +109,7 @@ Supported modes:
108
109
  | Pi | `pi` | Yes | Yes | Yes |
109
110
  | Oh My Pi | `omp` | Yes | Yes | Yes |
110
111
  | Kimi Code | `kimi` | Yes | Yes | Yes |
112
+ | Muse | `muse` | Yes | Yes | Yes |
111
113
 
112
114
  Devin `safe` is rejected because Delegate cannot enforce a read-only filesystem
113
115
  survey through Devin's generic execution tool. See the
@@ -181,6 +183,7 @@ delegate --json dry-run claude safe "Review this repository. Do not edit files."
181
183
  delegate --json dry-run opencode safe "Review this repository. Do not edit files."
182
184
  delegate --json dry-run pi safe "Review this repository. Do not edit files."
183
185
  delegate --json dry-run omp safe "Review this repository. Do not edit files."
186
+ delegate --json dry-run muse safe "Review this repository. Do not edit files."
184
187
  ```
185
188
 
186
189
  Run a read-only review in an isolated throwaway workspace:
@@ -243,12 +246,12 @@ $EDITOR /tmp/delegate-task.json
243
246
  delegate --json run --input-json /tmp/delegate-task.json
244
247
  ```
245
248
 
246
- For Codex or Claude fan-outs that must return machine-parseable records, add
249
+ For Codex, Claude, or Muse fan-outs that must return machine-parseable records, add
247
250
  `--output-schema` (or JSON `outputSchema`); Delegate suppresses completion-report
248
251
  injection so the schema owns the final message. Codex schemas are
249
252
  strict-preflighted recursively: every property must be required, and a missing
250
253
  `additionalProperties: false` is supplied in a warned temporary copy without
251
- changing the source file.
254
+ changing the source file. Muse schemas are enforced natively and the root object must set `additionalProperties: false`.
252
255
 
253
256
  For a one-hop prompt that should not see the current repo or create a tracked
254
257
  run, use stateless `call` mode:
@@ -290,7 +293,7 @@ It changes only the requested model thinking depth/cost/latency; it does not
290
293
  change safe/work/call mode, sandboxing, approvals, or edit capability.
291
294
  Codex/Droid validate exact model metadata, Cursor selects an explicit configured
292
295
  or corroborated discovered effort route, Claude and Grok map to native
293
- `--effort`, OpenCode validates discovered exact variants when present and
296
+ `--effort`, Muse maps to `--reasoning-effort` (`none`…`ultra`), OpenCode validates discovered exact variants when present and
294
297
  otherwise warns on pass-through, and Pi/Oh My Pi map to `--thinking` with
295
298
  evidence-aware validation. Devin and Kimi do not expose a Delegate
296
299
  reasoning-effort flag. Explicit Codex effort can target the harness default model
@@ -453,7 +456,7 @@ non-ignored files from a dirty source checkout before launch, report the counts
453
456
  in a `dirty_source_auto_included` warning, and tear down the worktree if syncing
454
457
  fails. `--include-dirty` remains an explicit, harmless no-op on a clean source.
455
458
 
456
- 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/Pi/Oh My Pi/Kimi safe isolation falls back to a directory copy because Git cannot create a detached worktree from an unborn `HEAD`.
459
+ 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/Pi/Oh My Pi/Kimi/Muse safe isolation falls back to a directory copy because Git cannot create a detached worktree from an unborn `HEAD`.
457
460
 
458
461
  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.
459
462
 
@@ -121,6 +121,13 @@
121
121
  "defaultModel": "kimi-code/k3",
122
122
  "defaultReasoningEffort": null
123
123
  },
124
+ "muse": {
125
+ "binary": "muse",
126
+ "defaultModel": null,
127
+ "defaultReasoningEffort": null,
128
+ "resumable": true,
129
+ "models": {}
130
+ },
124
131
  "isolation": {
125
132
  "safe": "auto",
126
133
  "work": "none"
@@ -41,6 +41,7 @@ This guide covers both human setup and non-interactive setup for agents or CI jo
41
41
  command -v pi || echo "Pi coding agent missing"
42
42
  command -v omp || echo "Oh My Pi missing"
43
43
  command -v kimi || echo "Kimi Code CLI missing"
44
+ command -v muse || echo "Muse missing"
44
45
  ```
45
46
 
46
47
  Delegate does not manage runtime login. Run each runtime's own login/status command before real launches. A missing child binary causes Delegate to fail with exit code `3` for real runs.
@@ -140,7 +141,7 @@ and the [security model](security-model.md#zero-copy-safe-isolation-linux-isolat
140
141
  delegate --json dry-run kimi safe "Review only. Do not edit files."
141
142
  ```
142
143
 
143
- The Codex, Claude, Grok, Devin work, OpenCode, Pi, Oh My Pi, 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 maps to `--variant`; Pi and Oh My Pi map to `--thinking`. 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.
144
+ The Codex, Claude, Grok, Devin work, OpenCode, Pi, Oh My Pi, Cursor, Kimi, and Muse 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; Muse maps to `--reasoning-effort`; OpenCode maps to `--variant`; Pi and Oh My Pi map to `--thinking`. 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.
144
145
 
145
146
  ### OpenCode
146
147
 
@@ -223,6 +224,7 @@ For an orchestrating agent, script, or CI job:
223
224
  command -v pi >/dev/null || exit 3
224
225
  command -v omp >/dev/null || exit 3
225
226
  command -v kimi >/dev/null || exit 3
227
+ command -v muse >/dev/null || exit 3
226
228
  ```
227
229
 
228
230
  6. Keep prompts bounded and machine-readable where possible. For long tasks, use `--prompt-file` or `delegate --json run --input-json FILE`.
@@ -248,7 +250,7 @@ For an orchestrating agent, script, or CI job:
248
250
  ## CI expectations
249
251
 
250
252
  The required test suite does not need real Cursor, Droid, Codex, Claude, Grok,
251
- Devin, OpenCode, Pi, Oh My Pi, or Kimi binaries. Tests use dry-run paths and fake binaries
253
+ Devin, OpenCode, Pi, Oh My Pi, Kimi, or Muse binaries. Tests use dry-run paths and fake binaries
252
254
  where needed:
253
255
 
254
256
  ```bash
@@ -227,13 +227,17 @@ delegate omp call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [
227
227
  delegate kimi safe [--model <alias-or-model>] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH | prompt...]
228
228
  delegate kimi work [--model <alias-or-model>] [--progress] [--timeout SECONDS] [--forbid-commit] [--prompt-file PATH | prompt...]
229
229
  delegate kimi call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--prompt-file PATH | prompt...]
230
+
231
+ delegate muse safe [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--output-schema FILE] [--prompt-file PATH | prompt...]
232
+ delegate muse work [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--output-schema FILE] [--prompt-file PATH | prompt...]
233
+ delegate muse call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--output-schema FILE] [--prompt-file PATH | prompt...]
230
234
  ```
231
235
 
232
236
  Prompt sources are direct arguments, `--prompt-file`, or Delegate stdin; give exactly one (combining them fails with `ambiguous_prompt_source`). A relative `--prompt-file` resolves against the shell cwd first; if that file does not exist but one exists under `--cwd DIR`, that one is used and a warning says so. When neither exists the `prompt_file_not_found` error names both absolute paths tried. Raw C0 control characters other than newline, carriage return, and tab are stripped before launch; a prompt that becomes empty fails fast. After
233
237
  Delegate resolves the prompt, Codex, Claude, OpenCode, Pi, Cursor Agent, and Oh My Pi prompts are passed to
234
238
  the child runtime over stdin; Cursor Agent 2026.09.02-c22c1a3 and Oh My Pi 18.1.13 both consume a piped
235
- prompt in the verified non-interactive invocation. Droid and Grok prompts are written to a private temporary
236
- prompt file and passed with Droid's documented `--file` option or Grok's `--prompt-file`. Kimi Code prompt
239
+ prompt in the verified non-interactive invocation. Droid, Grok, Devin, and Muse prompts are written to a private temporary
240
+ prompt file and passed with Droid's documented `--file` option or the `--prompt-file` option Grok, Devin, and Muse accept. Kimi Code prompt
237
241
  mode still takes `--prompt`, so Kimi alone uses argv transport; Delegate redacts Kimi prompt argv in dry-run
238
242
  output and run manifests, which keeps the prompt out of Delegate's own records but not out of the child's
239
243
  `/proc/<pid>/cmdline`.
@@ -270,7 +274,7 @@ by hyphens and the index is the entry's position in Factory's settings. The
270
274
  older id-based selectors no longer resolve, so re-read `delegate models droid`
271
275
  and update any `droid.models` alias that pinned one. Discover aliases
272
276
  and advisory catalogs with `delegate models`, `delegate models <engine>`, and
273
- `delegate models <engine> --live`. Every harness except Claude exposes a live
277
+ `delegate models <engine> --live`. Every harness except Claude and Muse exposes a live
274
278
  model probe; see [Discovery](#discovery) for the evidence each probe records.
275
279
  Each engine row carries `binaryMissing`, true when the configured binary does
276
280
  not resolve from the Delegate process; the text view prints `(missing)` after
@@ -292,7 +296,7 @@ same-family effort selector and records a warning. Without that exact family,
292
296
  an explicit effort fails closed; a configured default instead degrades with a
293
297
  warning and preserves the pinned selector. Droid emits
294
298
  `--reasoning-effort LEVEL`; Codex emits a `model_reasoning_effort` config
295
- override; Claude and Grok emit native `--effort`; OpenCode emits `--variant`
299
+ override; Claude and Grok emit native `--effort`; Muse emits native `--reasoning-effort`; OpenCode emits `--variant`
296
300
  and validates it when exact discovered variants exist; Pi and Oh My Pi emit
297
301
  `--thinking`. Devin and Kimi expose no Delegate effort transport.
298
302
 
@@ -683,6 +687,31 @@ delegate kimi call "Summarize this context in three bullets."
683
687
  delegate --isolation worktree kimi work "Implement the feature in a persistent worktree."
684
688
  ```
685
689
 
690
+ ### `delegate muse`
691
+
692
+ Wraps Muse's headless mode (Meta's Muse family models).
693
+
694
+ ```bash
695
+ delegate [--json] [--isolation auto|none|worktree] muse {safe,work} [--model <alias-or-model>] [--reasoning-effort LEVEL] [--progress] [--timeout SECONDS] [--forbid-commit] [--output-schema FILE] [--prompt-file PATH | prompt...]
696
+ delegate [--json] muse call [--read-only] [--timeout SECONDS] [--model <alias-or-model>] [--reasoning-effort LEVEL] [--output-schema FILE] [--prompt-file PATH | prompt...]
697
+ ```
698
+
699
+ - Delegate launches `muse exec --json --workspace <dir>` and delivers the prompt with `--prompt-file`, so the prompt never appears in argv.
700
+ - Safe mode and `call --read-only` add `--disable-write --disable-shell --disable-web-tools`, keep Muse's sandbox on, and leave the workspace untrusted (repo-local Muse skills do not load; verified against Muse 1.4.6). Safe reviewers use Muse's native read/search tools and have no shell, so they cannot run git or tests. User-level Muse configuration still loads; a user-configured MCP server's behavior under the safe flags is not yet probed.
701
+ - Work mode adds `--trust-workspace` and keeps the sandbox on unless `policy.harness.muse.work.bypassApprovalsAndSandbox` is explicitly enabled. Delegate never emits `--yolo`.
702
+ - `--reasoning-effort` maps directly to `--reasoning-effort`: `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`, `ultra`.
703
+ - `--output-schema` uses Muse's native enforcement; the schema's root object must set `additionalProperties: false` or the launch is refused before the child starts.
704
+ - The `muse` binary accepts unknown model IDs without error, so Delegate makes no served-model claim for Muse runs and a pinned run ends unverified. `delegate models muse` reports the bundled advisory list; there is no live enumeration.
705
+ - Work runs keep their Muse session log by default, so `delegate followup` re-enters the session; `--no-resumable` or `muse.resumable: false` opts out. Run JSON reports usage as unavailable: the Muse exec stream carries no token-usage events.
706
+
707
+ Examples:
708
+
709
+ ```bash
710
+ delegate muse safe "Review this repo for regressions; report file/line/severity."
711
+ delegate muse work --model muse-spark-1.3 "Implement the scoped task; report changed files and tests."
712
+ delegate muse call --read-only --output-schema verdict.json --prompt-file rubric.md
713
+ ```
714
+
686
715
  ### `delegate workflow`
687
716
 
688
717
  Workflows run a Python DSL supervisor that can fan out normal Delegate child
@@ -995,7 +1024,7 @@ When a profile is active, dry-run and completion payloads add `authProfile`
995
1024
  a fallback is configured. Dry-run also adds `profileEnv` (the injected env map,
996
1025
  with values redacted). Profile metadata is omitted when no profile is active.
997
1026
 
998
- For Cursor, Claude, Grok, OpenCode, Pi, Oh My Pi, Droid, and Kimi safe mode, an explicit `--isolation none`
1027
+ For Cursor, Claude, Grok, OpenCode, Pi, Oh My Pi, Droid, Kimi, and Muse safe mode, an explicit `--isolation none`
999
1028
  is normalized to `auto` with a warning because those safe contracts depend on
1000
1029
  the temporary workspace/config boundary. Codex safe can use `none` because Codex
1001
1030
  still runs with its read-only sandbox.
@@ -1173,22 +1202,28 @@ Supported input keys:
1173
1202
  }
1174
1203
  ```
1175
1204
 
1176
- - `engine`: `cursor`, `droid`, `codex`, `claude`, `grok`, `devin`, `opencode`, `pi`, `omp`, or `kimi`.
1205
+ - `engine`: `cursor`, `droid`, `codex`, `claude`, `grok`, `devin`, `opencode`, `pi`, `omp`, `kimi`, or `muse`.
1177
1206
  - `mode`: `safe`, `work`, or `call`.
1178
1207
  - 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.
1179
1208
  - `model`: optional alias-or-id for every engine, resolved exactly like `--model`. A matching `<engine>.models` alias is expanded; other values pass through as raw model IDs.
1180
1209
  - `cwd`: optional workspace path. Git directories resolve to the repo root. Omit it for `mode: "call"`, which always uses an empty temporary cwd.
1181
- - `isolation`: optional `auto`, `none`, or `worktree`. `null` is invalid. `mode: "call"` rejects isolation. For Cursor, Claude, Grok, OpenCode, Pi, Oh My Pi, Droid, and Kimi safe mode, `none` is normalized to `auto` with a warning.
1210
+ - `isolation`: optional `auto`, `none`, or `worktree`. `null` is invalid. `mode: "call"` rejects isolation. For Cursor, Claude, Grok, OpenCode, Pi, Oh My Pi, Droid, Kimi, and Muse safe mode, `none` is normalized to `auto` with a warning.
1182
1211
  - `reasoningEffort`: optional non-empty effort string. It overrides provider `defaultReasoningEffort` for that JSON run.
1183
1212
  - `fast`: optional Codex-only boolean or `null`. `true` requests Fast, `false` explicitly requests Standard, and `null`/omission inherits Codex configuration.
1184
1213
  - `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.
1185
1214
  - `forbidCommit`: optional boolean. `true` requires `mode: "work"`, makes commits fail inside the child through run-owned git hooks, and fails the run if the child creates commits (any isolation, including `none`; with isolation omitted it implies `worktree`). `mode: "call"` rejects commit policy.
1186
1215
  - `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.
1187
1216
  - `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.
1188
- - `outputSchema`: optional path to a JSON Schema for the final message. Supported for Codex and Claude in every mode (same semantics as `--output-schema`). Other engines fail with `unsupported_output_schema`.
1217
+ - `outputSchema`: optional path to a JSON Schema for the final message. Supported for Codex, Claude, and Muse in every mode (same semantics as `--output-schema`). Other engines fail with `unsupported_output_schema`.
1189
1218
  - `base`, `env`, `setup`: optional workspace spec for `mode: "work"` with `isolation: "worktree"`, the same as `--base`, `--env`, and `--setup`. `env` is an object of names to strings. See [Workspace spec](worktrees.md#workspace-spec-base-env-setup).
1219
+ - `mcpServers`: optional list of extra MCP servers mounted for this run only: `[{"name": "report", "command": "/path/to/server", "args": ["--stdio"], "env": {"KEY": "value"}}]`. `name` is letters, digits, `_` or `-` and unique; `args` and `env` are optional. Codex receives them as global `-c mcp_servers.<name>.command/args/env_vars` overrides right after the executable; these show in dry-run and manifest argv. `env` values never go into process arguments: they are set in the run's environment and listed by name in the server's `env_vars` allowlist. Env names must be valid variable names, and a name given in two servers must have the same value. Other engines have no per-invocation MCP config: the run proceeds without them and its result carries a `mcpServers not mounted` warning.
1190
1220
  - `prompt`: required task prompt.
1191
1221
 
1222
+ Every engine process runs non-interactively: Delegate sets `GIT_EDITOR`,
1223
+ `GIT_SEQUENCE_EDITOR`, `EDITOR` and `VISUAL` to `true`, `GIT_TERMINAL_PROMPT=0`,
1224
+ and `PAGER`/`GIT_PAGER` to `cat`, over profile and ambient values, so a
1225
+ `git commit` without `-m` or a pager cannot hang a run whose stdin is closed.
1226
+
1192
1227
  `profile` is not accepted in run input JSON. Configure the Codex CLI config
1193
1228
  overlay in `codex.profile` instead. That is separate from the top-level
1194
1229
  `profiles` block, which Delegate resolves once per request and injects as
@@ -1221,13 +1256,13 @@ argv shapes, and expanded command options. Use `help <command>` when only one
1221
1256
  command's contract is needed.
1222
1257
 
1223
1258
  `models` reports configured settings and cached discovery for Cursor, Droid,
1224
- Codex, Kimi, Claude, Grok, Devin, OpenCode, Pi, and Oh My Pi. A per-engine
1259
+ Codex, Kimi, Claude, Grok, Devin, OpenCode, Pi, Oh My Pi, and Muse. A per-engine
1225
1260
  catalog merges sources in this order: explicit config, current live or
1226
1261
  profile-scoped discovery, the legacy workspace reasoning cache, then bundled
1227
1262
  advisory IDs. `models <engine> --live` runs one fresh probe in the selected
1228
1263
  profile environment, but does not update Delegate config or cache. Use setup or
1229
1264
  `capabilities refresh` when ordinary launches should consume the new record.
1230
- Claude is the only harness without a non-interactive live model catalog.
1265
+ Claude and Muse are the only harnesses without a non-interactive live model catalog.
1231
1266
 
1232
1267
  A harness with `<engine>.enabled: false` in config (for example
1233
1268
  `"cursor": {"enabled": false}`) is omitted from `models`, `describe`,
@@ -1261,6 +1296,7 @@ Automatic setup and refresh use these evidence sources:
1261
1296
  | Devin | Family slugs, aliases, and concrete variants visible to the active account | The prompt-free JSON catalog carries display names; Delegate has no Devin effort transport. |
1262
1297
  | OpenCode | Harness catalog | Listed variants are `exact` for that model; models without exact variant evidence retain the documented unvalidated pass-through path. |
1263
1298
  | Pi | Harness catalog | Thinking support is model-specific, but available labels come from a harness-wide enum and are reported as partial model evidence. |
1299
+ | Muse | Bundled advisory list; no live enumeration | Static `--reasoning-effort` enum (`none`…`ultra`) from the binary's documented values. |
1264
1300
  | Oh My Pi | Harness catalog | A model's explicit `thinking` array is exact; missing arrays use harness-partial compatibility rather than fabricated model evidence. |
1265
1301
 
1266
1302
  `modelScope`/`catalogScope` describes where a list came from, not whether a real
@@ -1494,7 +1530,7 @@ creating a Run or writing a prompt record.
1494
1530
  | --- | --- | --- | --- | --- |
1495
1531
  | Engine | `engine`, falling back to `harness` | `--engine` | A missing or unknown source engine refuses resume. | The selected engine becomes the target; engine-scoped fields below may drop. |
1496
1532
  | Mode | `mode` | None; v1 does not override mode. | A missing or invalid mode refuses resume. | Retained unchanged. |
1497
- | Native session | `resumable` | `--no-resumable` | A source recorded as exactly `true` keeps it. Any other source takes the launch default: Codex and Claude work Runs save their session unless `--no-resumable` or `codex.resumable` / `claude.resumable: false` opts out. | Kept only for Codex or Claude work Runs; otherwise dropped with a note advising continuation with `delegate resume`. |
1533
+ | Native session | `resumable` | `--no-resumable` | A source recorded as exactly `true` keeps it. Any other source takes the launch default: Codex, Claude, and Muse work Runs save their session unless `--no-resumable` or `codex.resumable` / `claude.resumable` / `muse.resumable: false` opts out. | Kept only for Codex, Claude, or Muse work Runs; otherwise dropped with a note advising continuation with `delegate resume`. |
1498
1534
  | Model selection | `modelAlias`, then `modelRequested`, `modelResolved`, then `model` | `--model` | No usable key uses the target engine configuration default and emits a note. | Source model selection drops; pass `--model` to pin a target model. |
1499
1535
  | Reasoning effort | `requestedReasoningEffort`, then `resolvedReasoningEffort`, together with `reasoningEffortSource` | `--reasoning-effort` | Missing effort uses the target default and emits a note. A source value from configuration is re-resolved through target capability/configuration; only `cli` and `input-json` source intent is inherited directly. | Source effort drops with a note; an explicit override remains valid. |
1500
1536
  | Fast tier | `requestedFast` | `--fast` or `--no-fast` | Omitted leaves fast unspecified. | Inherited only for a same-engine Codex resume. Other targets drop it; non-Codex targets emit a drop note when a source value is present. |
@@ -1502,7 +1538,7 @@ creating a Run or writing a prompt record.
1502
1538
  | Timeout | `timeoutSeconds` | `--timeout` | Omitted uses the target timeout default and emits a note. A present value must be a positive integer (an integral JSON float is accepted). | Retained. |
1503
1539
  | Stall threshold | `stallMinutes`, written only when the source launch passed `--stall-minutes` | None | Omitted means the source ran on the configured default, so the resumed Run re-resolves `stallMinutes` config, `DELEGATE_STALL_MINUTES`, and the engine default with no note. A present value must be a finite number >= 0 (0 disables); anything else refuses resume. `delegate followup` inherits it the same way and ignores an invalid value. | Retained; an inherited value is an explicit operator threshold, honored on every engine. |
1504
1540
  | Tracked stream limit | `trackedStreamMaxBytes` (`null` when uncapped, the default) | None | Launch provenance only: the resumed Run re-resolves the limit from the target engine configuration and does not inherit the recorded value. | Not inherited. |
1505
- | Output schema | Inline `outputSchema` text | `--output-schema PATH` or `--no-output-schema` | Omitted means no schema. Stored text is re-materialized privately only during normal launch. | Codex and Claude inherit inline schema text. Other engines soft-drop it with a note before output-schema validation. |
1541
+ | Output schema | Inline `outputSchema` text | `--output-schema PATH` or `--no-output-schema` | Omitted means no schema. Stored text is re-materialized privately only during normal launch. | Codex, Claude, and Muse inherit inline schema text. Other engines soft-drop it with a note before output-schema validation. |
1506
1542
  | OpenCode agent | `agent` | None | Omitted means no agent selection. | Inherited only for a same-engine OpenCode resume; otherwise dropped with a note. |
1507
1543
  | Workspace cwd / execution cwd | `cwd`; persistent records also derive `executionCwd`, branch, and source Git root | None (`--cwd` selects the registry workspace and must match recorded `cwd`) | Missing `cwd` falls back to the selected registry workspace; missing persistent-worktree metadata causes attachment validation to refuse. | Retained as workspace context; an attach uses the validated existing worktree rather than copying `executionCwd` into a new worktree. |
1508
1544
  | Isolation / lifecycle | `isolationMode`; persistent detection also reads `isolationLifecycle`, `preservedWorkspace`, `worktreeStatus`, and `worktreeAttachment` | None; `--isolation` is rejected for resume. | Missing ordinary `isolationMode` uses target isolation configuration and emits a note. | Retained. Persistent or attached sources become an `attached` execution lifecycle. |
@@ -1518,16 +1554,16 @@ creating a Run or writing a prompt record.
1518
1554
  delegate followup [--timeout SEC] [--prompt-file PATH] [--mail-push|--no-mail-push] [--dry-run] <alias|runId> [prompt...]
1519
1555
  ```
1520
1556
 
1521
- `delegate followup` continues a Codex or Claude Run by resuming its saved native
1557
+ `delegate followup` continues a Codex, Claude, or Muse Run by resuming its saved native
1522
1558
  session, so the child keeps its own conversation context. (`resume` instead
1523
1559
  relaunches from the original prompt and a report digest, and works across
1524
1560
  engines.)
1525
1561
 
1526
- - **Launch default.** Codex and Claude work Runs save their native session by
1562
+ - **Launch default.** Codex, Claude, and Muse work Runs save their native session by
1527
1563
  default, so `followup` works without `--resumable` at launch. Launch with
1528
1564
  `--no-resumable` (JSON `resumable: false`), or set `codex.resumable` /
1529
- `claude.resumable` to `false`, to skip it; `--resumable` on a launch beats the
1530
- config key. Safe Runs, call Runs, and engines other than Codex and Claude never
1565
+ `claude.resumable` / `muse.resumable` to `false`, to skip it; `--resumable` on a launch beats the
1566
+ config key. Safe Runs, call Runs, and engines other than Codex, Claude, and Muse never
1531
1567
  save a session. See [Configuration](configuration.md#native-session-files-and-the-resumable-default)
1532
1568
  for the storage consequence.
1533
1569
  - **No session recorded.** A source with no recorded session (launched with
@@ -252,6 +252,12 @@ is absent.
252
252
  "defaultModel": "kimi-code/k3",
253
253
  "defaultReasoningEffort": null
254
254
  },
255
+ "muse": {
256
+ "binary": "muse",
257
+ "defaultModel": null,
258
+ "defaultReasoningEffort": null,
259
+ "models": {}
260
+ },
255
261
  "workflows": {
256
262
  "engineCaps": {},
257
263
  "itemThreads": 64,
@@ -556,13 +562,14 @@ different. Delegate warns when:
556
562
 
557
563
  #### Native session files and the resumable default
558
564
 
559
- Codex and Claude **work** Runs are resumable by default. A resumable Run leaves
565
+ Codex, Claude, and Muse **work** Runs are resumable by default. A resumable Run leaves
560
566
  the harness's own session on disk (Codex's rollout under `CODEX_HOME/sessions`,
561
- Claude Code's transcript under its `projects` directory) and records the session
567
+ Claude Code's transcript under its `projects` directory, Muse's session log under
568
+ `~/.local/share/muse/sessions`) and records the session
562
569
  id in the Run's manifest, which is what `delegate followup` resumes. What that
563
570
  means in practice:
564
571
 
565
- - **Storage.** Native session files now persist for every Codex and Claude work
572
+ - **Storage.** Native session files now persist for every Codex, Claude, and Muse work
566
573
  Run, not only Runs launched with `--resumable`. They hold the prompt, the
567
574
  child's output, and its tool results in the harness's own store, outside
568
575
  `.delegate/` and outside Delegate's redaction and `runs prune`. Delegate does
@@ -574,7 +581,7 @@ means in practice:
574
581
  - **Precedence.** The default beats `codex.ephemeral: true` and
575
582
  `claude.noSessionPersistence: true`. Those keys only apply to Runs that are not
576
583
  resumable. Opt out per launch with `--no-resumable` (JSON `resumable: false`),
577
- or per engine with `codex.resumable: false` / `claude.resumable: false`. A launch
584
+ or per engine with `codex.resumable: false` / `claude.resumable: false` / `muse.resumable: false`. A launch
578
585
  that says `--resumable` beats the engine key.
579
586
  - **Unchanged.** Safe and call Runs, `--pass-through` Runs, and every other
580
587
  engine stay ephemeral, and `--no-resumable` is a quiet no-op there.
@@ -733,7 +740,7 @@ provider, including configured custom or local providers.
733
740
  { "droid": { "enabled": false } }
734
741
  ```
735
742
 
736
- - Every engine block (`cursor`, `droid`, `codex`, `kimi`, `claude`, `grok`, `devin`, `opencode`, `pi`, `omp`) accepts an optional boolean `enabled`, default `true`. A non-boolean value fails config load with `invalid_<engine>_config`.
743
+ - Every engine block (`cursor`, `droid`, `codex`, `kimi`, `claude`, `grok`, `devin`, `opencode`, `pi`, `omp`, `muse`) accepts an optional boolean `enabled`, default `true`. A non-boolean value fails config load with `invalid_<engine>_config`.
737
744
  - `enabled: false` removes the harness from `delegate models`, `describe`, and `capabilities` listings (JSON and text), skips it in `capabilities refresh`, and makes every launch of it (and `delegate models <name>`) fail fast with `harness_disabled` naming `<engine>.enabled`. Static help text and the `describe` overview still mention the harness. Use it to retire a harness whose binary is still on `PATH`.
738
745
 
739
746
  ### `omp`
@@ -761,26 +768,28 @@ provider, including configured custom or local providers.
761
768
  - Every mode uses `--no-session`. Safe mode and `call --read-only` allow only `read`, disable extensions, skills, rules, and LSP discovery, and add `--approval-mode always-ask` as the load-bearing write/exec denial in headless mode.
762
769
  - Delegate does not consume `modelRoles` and never emits `--smol`, `--slow`, `--plan`, `--prewalk*`, or `--plan-yolo*`.
763
770
  - `delegate models omp --live` probes `omp models --json --no-extensions` without reading or printing provider credentials.
771
+ - Delegate launches every OMP run with a private `--config` overlay that sets
772
+ `tools.outputMaxColumns` to `8000`. The overlay beats your `config.yml`;
773
+ dry-run and full describe argv show it as `--config <omp config overlay>`.
764
774
  - A `provider/model-id` you type yourself (`--model`, input-JSON `model`, or a
765
775
  literal `agent(model=...)` in a workflow) is pinned by default: the run behaves
766
776
  as `--continuity-mode pinned`. A delegate alias (a key of `omp.models`) and
767
777
  `defaultModel` stay `fungible` even though their targets name a provider, so
768
778
  aliases keep multi-subscription failover; the run still records and warns
769
779
  about which provider answered, and `--continuity-mode pinned` on an alias pins
770
- it. Delegate launches a pinned OMP run with a private `--config` overlay that sets
780
+ it. For pinned runs, the overlay also sets
771
781
  `retry.modelFallback` and `retry.usageAwareFallback` to `false`, so OMP's own
772
782
  retry chains (`retry.fallbackChains`) cannot move the run to another model or
773
- provider. Retrying the same model is unaffected. The overlay beats your
774
- `config.yml`; the dry-run argv shows it as `--config <omp config overlay>`.
783
+ provider. Retrying the same model is unaffected.
775
784
  If a different provider or model is served anyway, the run fails
776
785
  (`model_continuity_paused`) with a message naming what OMP tried to serve,
777
786
  for example `requested opencode-go/glm-5.3, but omp tried to serve
778
787
  fireworks/glm-5p3`.
779
788
  - Naming `--continuity-mode fungible` or `panel` is the opt-in to failover: the
780
- overlay is not sent, OMP may fail over, and a served model that differs from
781
- the request is recorded as a `model_substitution` warning that names the
782
- served provider. A run with no model, or with a bare model ID, is `fungible`
783
- unless you name a mode.
789
+ overlay omits the pinned-only retry settings, so OMP may fail over. A served
790
+ model that differs from the request is recorded as a `model_substitution`
791
+ warning that names the served provider. A run with no model, or with a bare
792
+ model ID, is `fungible` unless you name a mode.
784
793
  - Use the full `provider/model-id` selector, including the provider even when the
785
794
  model ID itself contains `/`. OMP reports provider and model separately;
786
795
  Delegate compares their exact combined identity. A slash-free bare model ID
@@ -797,6 +806,30 @@ provider, including configured custom or local providers.
797
806
  selectors. With no catalog the run proceeds with a warning; run
798
807
  `delegate capabilities refresh` so bare names can be checked.
799
808
 
809
+ ### `muse`
810
+
811
+ ```json
812
+ {
813
+ "muse": {
814
+ "binary": "muse",
815
+ "defaultModel": null,
816
+ "defaultReasoningEffort": null,
817
+ "resumable": true,
818
+ "models": {
819
+ "reviewer": "replace-with-muse-model-id"
820
+ }
821
+ }
822
+ }
823
+ ```
824
+
825
+ - `binary`: path to the Muse executable.
826
+ - `defaultModel`: optional Muse model ID (for example a `muse-spark` or `muse-wonder` ID from `delegate models muse`). `null` preserves Muse's configured default. The binary accepts unknown IDs without error, so Delegate cannot verify which model served a run.
827
+ - `defaultReasoningEffort`: optional `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`, or `ultra` default, emitted as `--reasoning-effort`.
828
+ - `resumable`: work Runs keep their Muse session log so `delegate followup` works; `false` (or per-run `--no-resumable`) launches with `--no-session-log`.
829
+ - `trackedStreamMaxBytes`: retained-stream byte cap for tracked runs. Off by default (`null`): nothing is truncated, hidden from the parser, or killed for being verbose, and `stdout.log` keeps the whole stream. Set a positive integer to opt in; a Run that then exceeds it is stopped as `output_limit_exceeded` with its partial output kept in the completion report. Only an opted-in cap applies the OMP 256 MiB transport and 16 MiB per-record ceilings, which are not configurable.
830
+ - `models`: optional alias map from local names to Muse model IDs.
831
+ - Safe mode and `call --read-only` pass `--disable-write --disable-shell --disable-web-tools` with Muse's sandbox on and the workspace untrusted. Work mode trusts the workspace; `--disable-sandbox` is emitted only under the explicit harness policy bypass.
832
+
800
833
  ### `reasoning`
801
834
 
802
835
  ```json
@@ -875,7 +908,7 @@ Supported boolean policy keys: `networkAccess`, `webSearch`, `bypassApprovalsAnd
875
908
  ```
876
909
 
877
910
  Allowed values are `auto`, `none`, and `worktree`. For Cursor, Claude, Grok,
878
- OpenCode, Pi, Oh My Pi, Droid, and Kimi safe mode, an effective value of `none` is normalized to `auto`
911
+ OpenCode, Pi, Oh My Pi, Droid, Kimi, and Muse safe mode, an effective value of `none` is normalized to `auto`
879
912
  because those safe contracts depend on Delegate's temporary workspace/config
880
913
  boundary. Explicit per-run CLI/JSON `none` requests also emit a warning; a
881
914
  config default is normalized without a separate per-run warning. Codex safe can
@@ -883,7 +916,7 @@ use `none` because the Codex read-only sandbox remains active.
883
916
 
884
917
  Embedded defaults:
885
918
 
886
- - `safe`: `auto`. Cursor, Claude, Grok, OpenCode, Pi, Oh My Pi, Droid, Codex, and Kimi safe use temporary workspace isolation by default. Devin safe is unsupported.
919
+ - `safe`: `auto`. Cursor, Claude, Grok, OpenCode, Pi, Oh My Pi, Droid, Codex, Kimi, and Muse safe use temporary workspace isolation by default. Devin safe is unsupported.
887
920
  - `work`: `none`. Work mode runs in the real workspace unless you opt into worktree isolation.
888
921
 
889
922
  #### `isolation.safeBackend` and `isolation.bwrapBinds` (Linux)
@@ -51,7 +51,7 @@ HOME="$clean_home" DELEGATE_CONFIG="$PWD/config.example.json" python3 bin/delega
51
51
  ```
52
52
 
53
53
  Droid real runs require non-placeholder model IDs. Dry-runs for Cursor, Droid,
54
- Codex, Claude, Grok, Devin, OpenCode, Pi, Oh My Pi, and Kimi do not require
54
+ Codex, Claude, Grok, Devin, OpenCode, Pi, Oh My Pi, Kimi, and Muse do not require
55
55
  child binaries. Engine event tests use captured fixtures under
56
56
  `tests/fixtures/`.
57
57
 
@@ -101,4 +101,4 @@ installs a private HOME/temp environment, and strips ambient env.
101
101
  `tests/` is never collected and never runs.
102
102
 
103
103
  Required CI does not need real Cursor, Droid, Codex, Claude, Grok, Devin,
104
- OpenCode, Pi, Oh My Pi, or Kimi binaries.
104
+ OpenCode, Pi, Oh My Pi, Kimi, or Muse binaries.