@namzu/cli 26.3.0 → 28.0.0
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.
- package/CHANGELOG.md +271 -0
- package/README.md +67 -46
- package/dist/bin.js +7 -0
- package/dist/bin.js.map +1 -1
- package/dist/checkpoints/store.d.ts +17 -4
- package/dist/checkpoints/store.d.ts.map +1 -1
- package/dist/checkpoints/store.js +20 -5
- package/dist/checkpoints/store.js.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +124 -14
- package/dist/cli.js.map +1 -1
- package/dist/commands/acp.d.ts +23 -1
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/acp.js +41 -2
- package/dist/commands/acp.js.map +1 -1
- package/dist/commands/drain.d.ts +69 -2
- package/dist/commands/drain.d.ts.map +1 -1
- package/dist/commands/drain.js +216 -136
- package/dist/commands/drain.js.map +1 -1
- package/dist/commands/eval.js +1 -1
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/{run-flags.d.ts → exec-flags.d.ts} +36 -28
- package/dist/commands/exec-flags.d.ts.map +1 -0
- package/dist/commands/{run-flags.js → exec-flags.js} +35 -27
- package/dist/commands/exec-flags.js.map +1 -0
- package/dist/commands/exec-json.d.ts +75 -0
- package/dist/commands/exec-json.d.ts.map +1 -0
- package/dist/commands/exec-json.js +473 -0
- package/dist/commands/exec-json.js.map +1 -0
- package/dist/commands/exec.d.ts +42 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +683 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/host-queries.d.ts +12 -0
- package/dist/commands/host-queries.d.ts.map +1 -0
- package/dist/commands/host-queries.js +149 -0
- package/dist/commands/host-queries.js.map +1 -0
- package/dist/commands/prior-messages.js +1 -1
- package/dist/commands/prior-messages.js.map +1 -1
- package/dist/commands/provider-wait.d.ts +5 -5
- package/dist/commands/provider-wait.d.ts.map +1 -1
- package/dist/commands/provider-wait.js +2 -2
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +2 -0
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/resident-flags.d.ts +2 -2
- package/dist/commands/resident-flags.d.ts.map +1 -1
- package/dist/commands/resident-flags.js +4 -2
- package/dist/commands/resident-flags.js.map +1 -1
- package/dist/commands/resident-learning.js +1 -1
- package/dist/commands/resident-learning.js.map +1 -1
- package/dist/commands/resident.d.ts.map +1 -1
- package/dist/commands/resident.js +3 -2
- package/dist/commands/resident.js.map +1 -1
- package/dist/commands/serve.js +2 -2
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/skills.js +1 -1
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/state.js +8 -8
- package/dist/commands/state.js.map +1 -1
- package/dist/commands/stdin.d.ts +5 -5
- package/dist/commands/stdin.js +5 -5
- package/dist/commands/types.d.ts +2 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/config/load.d.ts +1 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +36 -5
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +59 -20
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/tool-result-screens.js +1 -1
- package/dist/config/turn-guards.d.ts +23 -0
- package/dist/config/turn-guards.d.ts.map +1 -0
- package/dist/config/turn-guards.js +46 -0
- package/dist/config/turn-guards.js.map +1 -0
- package/dist/context/directories.d.ts +37 -0
- package/dist/context/directories.d.ts.map +1 -0
- package/dist/context/directories.js +69 -0
- package/dist/context/directories.js.map +1 -0
- package/dist/context/environment.d.ts +55 -0
- package/dist/context/environment.d.ts.map +1 -1
- package/dist/context/environment.js +96 -0
- package/dist/context/environment.js.map +1 -1
- package/dist/context/project-tracker.d.ts +3 -3
- package/dist/context/project-tracker.d.ts.map +1 -1
- package/dist/context/project-tracker.js +3 -3
- package/dist/context/project-tracker.js.map +1 -1
- package/dist/context/project.d.ts +2 -2
- package/dist/context/project.js +2 -2
- package/dist/context/sandbox.d.ts +22 -3
- package/dist/context/sandbox.d.ts.map +1 -1
- package/dist/context/sandbox.js +42 -4
- package/dist/context/sandbox.js.map +1 -1
- package/dist/doctor/checks/chain.d.ts +1 -1
- package/dist/doctor/checks/chain.js +7 -7
- package/dist/doctor/checks/chain.js.map +1 -1
- package/dist/doctor/checks/invariants.d.ts +2 -2
- package/dist/doctor/checks/invariants.js +5 -5
- package/dist/doctor/checks/invariants.js.map +1 -1
- package/dist/doctor/checks/logging.js +1 -1
- package/dist/doctor/checks/logging.js.map +1 -1
- package/dist/doctor/checks/sandbox.js +1 -1
- package/dist/doctor/checks/sandbox.js.map +1 -1
- package/dist/doctor/checks/session-export.d.ts +1 -1
- package/dist/doctor/checks/session-export.js +2 -2
- package/dist/doctor/checks/session-export.js.map +1 -1
- package/dist/doctor/checks/telemetry.d.ts +1 -1
- package/dist/doctor/checks/telemetry.js +1 -1
- package/dist/doctor/registry.js +2 -2
- package/dist/doctor/registry.js.map +1 -1
- package/dist/exit-codes.d.ts +2 -2
- package/dist/exit-codes.js +2 -2
- package/dist/integrations/mcp/servers.d.ts +1 -1
- package/dist/integrations/providers/access.d.ts +4 -1
- package/dist/integrations/providers/access.d.ts.map +1 -1
- package/dist/integrations/providers/access.js +6 -3
- package/dist/integrations/providers/access.js.map +1 -1
- package/dist/integrations/providers/chain-capabilities.d.ts +6 -6
- package/dist/integrations/providers/chain-capabilities.js +8 -8
- package/dist/integrations/providers/chain-capabilities.js.map +1 -1
- package/dist/integrations/providers/register.d.ts +1 -1
- package/dist/integrations/providers/register.js +1 -1
- package/dist/integrations/providers/registry.d.ts +1 -1
- package/dist/integrations/providers/zen-catalogue.d.ts +100 -0
- package/dist/integrations/providers/zen-catalogue.d.ts.map +1 -0
- package/dist/integrations/providers/zen-catalogue.js +196 -0
- package/dist/integrations/providers/zen-catalogue.js.map +1 -0
- package/dist/integrations/resident/inspection.d.ts +4 -1
- package/dist/integrations/resident/inspection.d.ts.map +1 -1
- package/dist/integrations/resident/inspection.js +53 -34
- package/dist/integrations/resident/inspection.js.map +1 -1
- package/dist/integrations/resident/learning-storage.d.ts +7 -2
- package/dist/integrations/resident/learning-storage.d.ts.map +1 -1
- package/dist/integrations/resident/learning-storage.js +12 -8
- package/dist/integrations/resident/learning-storage.js.map +1 -1
- package/dist/integrations/resident/runner-launch.d.ts +3 -3
- package/dist/integrations/resident/runner-launch.d.ts.map +1 -1
- package/dist/integrations/resident/runner-store.d.ts +1 -1
- package/dist/integrations/resident/runner-store.d.ts.map +1 -1
- package/dist/integrations/resident/runner-store.js +5 -2
- package/dist/integrations/resident/runner-store.js.map +1 -1
- package/dist/integrations/resident/runner-worker.js +23 -0
- package/dist/integrations/resident/runner-worker.js.map +1 -1
- package/dist/integrations/resident/session-log-reads.d.ts +37 -0
- package/dist/integrations/resident/session-log-reads.d.ts.map +1 -0
- package/dist/integrations/resident/session-log-reads.js +125 -0
- package/dist/integrations/resident/session-log-reads.js.map +1 -0
- package/dist/integrations/resident/session-step.d.ts +4 -2
- package/dist/integrations/resident/session-step.d.ts.map +1 -1
- package/dist/integrations/resident/session-step.js +16 -14
- package/dist/integrations/resident/session-step.js.map +1 -1
- package/dist/integrations/resident/storage.d.ts +23 -1
- package/dist/integrations/resident/storage.d.ts.map +1 -1
- package/dist/integrations/resident/storage.js +60 -17
- package/dist/integrations/resident/storage.js.map +1 -1
- package/dist/integrations/resident/tool-evidence.d.ts +4 -2
- package/dist/integrations/resident/tool-evidence.d.ts.map +1 -1
- package/dist/integrations/resident/tool-evidence.js +36 -30
- package/dist/integrations/resident/tool-evidence.js.map +1 -1
- package/dist/integrations/resident/verification.d.ts +2 -2
- package/dist/integrations/resident/verification.d.ts.map +1 -1
- package/dist/integrations/resident/verification.js +4 -4
- package/dist/integrations/resident/verification.js.map +1 -1
- package/dist/integrations/sessions/checkpoint-view.d.ts +13 -0
- package/dist/integrations/sessions/checkpoint-view.d.ts.map +1 -0
- package/dist/integrations/sessions/checkpoint-view.js +48 -0
- package/dist/integrations/sessions/checkpoint-view.js.map +1 -0
- package/dist/integrations/sessions/context-inventory.js +1 -1
- package/dist/integrations/sessions/context-inventory.js.map +1 -1
- package/dist/integrations/sessions/conversation-search.d.ts +16 -20
- package/dist/integrations/sessions/conversation-search.d.ts.map +1 -1
- package/dist/integrations/sessions/conversation-search.js +305 -731
- package/dist/integrations/sessions/conversation-search.js.map +1 -1
- package/dist/integrations/sessions/evidence-page-validation.d.ts +4 -4
- package/dist/integrations/sessions/evidence-page-validation.d.ts.map +1 -1
- package/dist/integrations/sessions/evidence-page-validation.js +1 -1
- package/dist/integrations/sessions/evidence-page-validation.js.map +1 -1
- package/dist/integrations/sessions/evidence-recall.d.ts +40 -2
- package/dist/integrations/sessions/evidence-recall.d.ts.map +1 -1
- package/dist/integrations/sessions/evidence-recall.js +41 -97
- package/dist/integrations/sessions/evidence-recall.js.map +1 -1
- package/dist/integrations/sessions/store.d.ts +153 -85
- package/dist/integrations/sessions/store.d.ts.map +1 -1
- package/dist/integrations/sessions/store.js +414 -484
- package/dist/integrations/sessions/store.js.map +1 -1
- package/dist/integrations/sessions/task-context.d.ts +15 -2
- package/dist/integrations/sessions/task-context.d.ts.map +1 -1
- package/dist/integrations/sessions/task-context.js +34 -11
- package/dist/integrations/sessions/task-context.js.map +1 -1
- package/dist/integrations/sessions/transcript-export.d.ts +13 -6
- package/dist/integrations/sessions/transcript-export.d.ts.map +1 -1
- package/dist/integrations/sessions/transcript-export.js +148 -263
- package/dist/integrations/sessions/transcript-export.js.map +1 -1
- package/dist/integrations/state/home.d.ts +4 -16
- package/dist/integrations/state/home.d.ts.map +1 -1
- package/dist/integrations/state/home.js +6 -42
- package/dist/integrations/state/home.js.map +1 -1
- package/dist/integrations/state/project.d.ts +6 -7
- package/dist/integrations/state/project.d.ts.map +1 -1
- package/dist/integrations/state/project.js +7 -9
- package/dist/integrations/state/project.js.map +1 -1
- package/dist/integrations/state/report.d.ts +27 -41
- package/dist/integrations/state/report.d.ts.map +1 -1
- package/dist/integrations/state/report.js +172 -464
- package/dist/integrations/state/report.js.map +1 -1
- package/dist/integrations/state/retention.d.ts +18 -0
- package/dist/integrations/state/retention.d.ts.map +1 -0
- package/dist/integrations/state/retention.js +18 -0
- package/dist/integrations/state/retention.js.map +1 -0
- package/dist/integrations/subagents/activity.d.ts +36 -31
- package/dist/integrations/subagents/activity.d.ts.map +1 -1
- package/dist/integrations/subagents/activity.js +27 -23
- package/dist/integrations/subagents/activity.js.map +1 -1
- package/dist/integrations/subagents/batches.d.ts +91 -0
- package/dist/integrations/subagents/batches.d.ts.map +1 -0
- package/dist/integrations/subagents/batches.js +172 -0
- package/dist/integrations/subagents/batches.js.map +1 -0
- package/dist/integrations/subagents/parent.d.ts +26 -11
- package/dist/integrations/subagents/parent.d.ts.map +1 -1
- package/dist/integrations/subagents/parent.js +13 -28
- package/dist/integrations/subagents/parent.js.map +1 -1
- package/dist/integrations/subagents/policy.d.ts +2 -2
- package/dist/integrations/subagents/policy.d.ts.map +1 -1
- package/dist/integrations/subagents/policy.js +2 -2
- package/dist/integrations/subagents/policy.js.map +1 -1
- package/dist/integrations/subagents/replay.d.ts +91 -26
- package/dist/integrations/subagents/replay.d.ts.map +1 -1
- package/dist/integrations/subagents/replay.js +216 -114
- package/dist/integrations/subagents/replay.js.map +1 -1
- package/dist/integrations/subagents/runtime.d.ts +50 -26
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +132 -126
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/integrations/subagents/saved-agents.d.ts +57 -0
- package/dist/integrations/subagents/saved-agents.d.ts.map +1 -0
- package/dist/integrations/subagents/saved-agents.js +102 -0
- package/dist/integrations/subagents/saved-agents.js.map +1 -0
- package/dist/integrations/subagents/slash.d.ts +55 -0
- package/dist/integrations/subagents/slash.d.ts.map +1 -0
- package/dist/integrations/subagents/slash.js +45 -0
- package/dist/integrations/subagents/slash.js.map +1 -0
- package/dist/integrations/telemetry/session-export.d.ts +6 -6
- package/dist/integrations/telemetry/session-export.d.ts.map +1 -1
- package/dist/integrations/telemetry/session-export.js +2 -2
- package/dist/integrations/web/search.d.ts +1 -1
- package/dist/logging.d.ts +5 -5
- package/dist/logging.js +6 -6
- package/dist/memory/presentation.d.ts +11 -0
- package/dist/memory/presentation.d.ts.map +1 -1
- package/dist/memory/presentation.js +25 -0
- package/dist/memory/presentation.js.map +1 -1
- package/dist/memory/store.d.ts +13 -7
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +37 -11
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/typed.d.ts +116 -0
- package/dist/memory/typed.d.ts.map +1 -0
- package/dist/memory/typed.js +336 -0
- package/dist/memory/typed.js.map +1 -0
- package/dist/permissions/checks.d.ts +1 -1
- package/dist/permissions/checks.js +1 -1
- package/dist/permissions/headless-trust.d.ts +4 -4
- package/dist/permissions/headless-trust.d.ts.map +1 -1
- package/dist/permissions/headless-trust.js +6 -6
- package/dist/permissions/headless-trust.js.map +1 -1
- package/dist/permissions/mode.d.ts +4 -4
- package/dist/permissions/mode.js +1 -1
- package/dist/permissions/rules.d.ts +1 -1
- package/dist/permissions/rules.js +1 -1
- package/dist/termination.d.ts +75 -0
- package/dist/termination.d.ts.map +1 -0
- package/dist/termination.js +143 -0
- package/dist/termination.js.map +1 -0
- package/dist/tui/AgentExplorer.d.ts +2 -2
- package/dist/tui/AgentExplorer.js +4 -4
- package/dist/tui/AgentExplorer.js.map +1 -1
- package/dist/tui/App.d.ts +9 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +456 -307
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/LiveActivity.d.ts +1 -1
- package/dist/tui/LiveActivity.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.d.ts +8 -0
- package/dist/tui/PermissionOverlay.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.js +25 -2
- package/dist/tui/PermissionOverlay.js.map +1 -1
- package/dist/tui/Picker.js +1 -1
- package/dist/tui/agent.d.ts +211 -135
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +535 -316
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/conversation-evidence-view.js +3 -3
- package/dist/tui/conversation-evidence-view.js.map +1 -1
- package/dist/tui/conversation-history.d.ts +4 -21
- package/dist/tui/conversation-history.d.ts.map +1 -1
- package/dist/tui/conversation-history.js +4 -28
- package/dist/tui/conversation-history.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +27 -1
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/log-pane.js +1 -1
- package/dist/tui/markdownParser.d.ts +1 -1
- package/dist/tui/markdownParser.js +1 -1
- package/dist/tui/permission-review.d.ts +16 -0
- package/dist/tui/permission-review.d.ts.map +1 -1
- package/dist/tui/permission-review.js +25 -2
- package/dist/tui/permission-review.js.map +1 -1
- package/dist/tui/slashCommands.d.ts +30 -41
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +75 -66
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/status-panel-layout.js +1 -1
- package/dist/tui/status-panel-layout.js.map +1 -1
- package/dist/tui/{run-interruption.d.ts → turn-interruption.d.ts} +4 -4
- package/dist/tui/turn-interruption.d.ts.map +1 -0
- package/dist/tui/{run-interruption.js → turn-interruption.js} +20 -20
- package/dist/tui/turn-interruption.js.map +1 -0
- package/dist/tui/turn-limits-settings.d.ts +39 -0
- package/dist/tui/turn-limits-settings.d.ts.map +1 -0
- package/dist/tui/{run-limits-settings.js → turn-limits-settings.js} +18 -18
- package/dist/tui/turn-limits-settings.js.map +1 -0
- package/dist/tui/types.d.ts +3 -3
- package/dist/tui/types.d.ts.map +1 -1
- package/dist/user-commands/store.d.ts +4 -4
- package/dist/user-commands/store.js +5 -5
- package/dist/user-commands/store.js.map +1 -1
- package/package.json +6 -6
- package/dist/commands/run-flags.d.ts.map +0 -1
- package/dist/commands/run-flags.js.map +0 -1
- package/dist/commands/run-stream.d.ts +0 -65
- package/dist/commands/run-stream.d.ts.map +0 -1
- package/dist/commands/run-stream.js +0 -603
- package/dist/commands/run-stream.js.map +0 -1
- package/dist/commands/run.d.ts +0 -39
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -533
- package/dist/commands/run.js.map +0 -1
- package/dist/config/run-limits.d.ts +0 -11
- package/dist/config/run-limits.d.ts.map +0 -1
- package/dist/config/run-limits.js +0 -64
- package/dist/config/run-limits.js.map +0 -1
- package/dist/integrations/sessions/compaction-evidence.d.ts +0 -5
- package/dist/integrations/sessions/compaction-evidence.d.ts.map +0 -1
- package/dist/integrations/sessions/compaction-evidence.js +0 -59
- package/dist/integrations/sessions/compaction-evidence.js.map +0 -1
- package/dist/integrations/sessions/database.d.ts +0 -5
- package/dist/integrations/sessions/database.d.ts.map +0 -1
- package/dist/integrations/sessions/database.js +0 -34
- package/dist/integrations/sessions/database.js.map +0 -1
- package/dist/integrations/sessions/paths.d.ts +0 -7
- package/dist/integrations/sessions/paths.d.ts.map +0 -1
- package/dist/integrations/sessions/paths.js +0 -14
- package/dist/integrations/sessions/paths.js.map +0 -1
- package/dist/integrations/sessions/run-discovery.d.ts +0 -24
- package/dist/integrations/sessions/run-discovery.d.ts.map +0 -1
- package/dist/integrations/sessions/run-discovery.js +0 -142
- package/dist/integrations/sessions/run-discovery.js.map +0 -1
- package/dist/integrations/sessions/turn-evidence.d.ts +0 -129
- package/dist/integrations/sessions/turn-evidence.d.ts.map +0 -1
- package/dist/integrations/sessions/turn-evidence.js +0 -517
- package/dist/integrations/sessions/turn-evidence.js.map +0 -1
- package/dist/integrations/subagents/history.d.ts +0 -26
- package/dist/integrations/subagents/history.d.ts.map +0 -1
- package/dist/integrations/subagents/history.js +0 -76
- package/dist/integrations/subagents/history.js.map +0 -1
- package/dist/integrations/subagents/runs.d.ts +0 -72
- package/dist/integrations/subagents/runs.d.ts.map +0 -1
- package/dist/integrations/subagents/runs.js +0 -155
- package/dist/integrations/subagents/runs.js.map +0 -1
- package/dist/tui/run-interruption.d.ts.map +0 -1
- package/dist/tui/run-interruption.js.map +0 -1
- package/dist/tui/run-limits-settings.d.ts +0 -39
- package/dist/tui/run-limits-settings.d.ts.map +0 -1
- package/dist/tui/run-limits-settings.js.map +0 -1
package/dist/commands/run.d.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `namzu run "<prompt>"` — headless one-shot. Runs a single prompt through
|
|
3
|
-
* the same agent the TUI uses and prints the reply to stdout, for scripts
|
|
4
|
-
* and CI. The prompt comes from
|
|
5
|
-
* the arguments, or from stdin when piped. Status lines go to stderr (info,
|
|
6
|
-
* suppressed by `--quiet`); only the answer hits stdout.
|
|
7
|
-
*
|
|
8
|
-
* Non-interactive, so there's no approval prompt — tools auto-run, but the
|
|
9
|
-
* safety gate still hard-denies catastrophic commands. One-shots use an
|
|
10
|
-
* ephemeral session and are not added to `/resume` history.
|
|
11
|
-
*
|
|
12
|
-
* Options are parsed, not spoken: this command joined every argument into the
|
|
13
|
-
* prompt, so the flags its streaming sibling accepts — `--cwd` above all —
|
|
14
|
-
* were read aloud to the model while the run used this directory anyway. Both
|
|
15
|
-
* commands now share one parser (`./run-flags.js`), because they are the same
|
|
16
|
-
* one-shot differing only in how they print.
|
|
17
|
-
*/
|
|
18
|
-
import type { CommandDef } from './types.js';
|
|
19
|
-
/**
|
|
20
|
-
* The prompt, from the arguments and the pipe together.
|
|
21
|
-
*
|
|
22
|
-
* Piped input used to be read only when there was no argument prompt, so
|
|
23
|
-
*
|
|
24
|
-
* cat notes.txt | namzu run "summarise this"
|
|
25
|
-
*
|
|
26
|
-
* sent the model three words and silently dropped the file. Nothing reported
|
|
27
|
-
* it: the run succeeded, and the answer was about nothing. A pipe and a
|
|
28
|
-
* question are the ordinary way to ask about a document, and taking only one
|
|
29
|
-
* of the two is the worst reading of that command.
|
|
30
|
-
*
|
|
31
|
-
* The piped text is fenced in a tag so the model can tell the instruction from
|
|
32
|
-
* the material it is about — without a boundary, a long paste runs into the
|
|
33
|
-
* question and the last line of a file reads as part of the request.
|
|
34
|
-
*
|
|
35
|
-
* Pure so it can be tested without a pipe; the reading happens in the handler.
|
|
36
|
-
*/
|
|
37
|
-
export declare function composePrompt(fromArgs: string, piped: string): string;
|
|
38
|
-
export declare const runCommand: CommandDef;
|
|
39
|
-
//# sourceMappingURL=run.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAkCH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMrE;AAaD,eAAO,MAAM,UAAU,EAAE,UAyexB,CAAA"}
|
package/dist/commands/run.js
DELETED
|
@@ -1,533 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `namzu run "<prompt>"` — headless one-shot. Runs a single prompt through
|
|
3
|
-
* the same agent the TUI uses and prints the reply to stdout, for scripts
|
|
4
|
-
* and CI. The prompt comes from
|
|
5
|
-
* the arguments, or from stdin when piped. Status lines go to stderr (info,
|
|
6
|
-
* suppressed by `--quiet`); only the answer hits stdout.
|
|
7
|
-
*
|
|
8
|
-
* Non-interactive, so there's no approval prompt — tools auto-run, but the
|
|
9
|
-
* safety gate still hard-denies catastrophic commands. One-shots use an
|
|
10
|
-
* ephemeral session and are not added to `/resume` history.
|
|
11
|
-
*
|
|
12
|
-
* Options are parsed, not spoken: this command joined every argument into the
|
|
13
|
-
* prompt, so the flags its streaming sibling accepts — `--cwd` above all —
|
|
14
|
-
* were read aloud to the model while the run used this directory anyway. Both
|
|
15
|
-
* commands now share one parser (`./run-flags.js`), because they are the same
|
|
16
|
-
* one-shot differing only in how they print.
|
|
17
|
-
*/
|
|
18
|
-
import { relative } from 'node:path';
|
|
19
|
-
import { BOOT_EVENT_NAMES, EVENT_NAME_ATTRIBUTE, asSessionId, generateSessionId } from '@namzu/sdk';
|
|
20
|
-
import { resolveTrustedProjectContext } from '../config/trusted-project-context.js';
|
|
21
|
-
import { EXIT_UNTRUSTED, EXIT_USAGE } from '../exit-codes.js';
|
|
22
|
-
import { openSessions } from '../integrations/sessions/store.js';
|
|
23
|
-
import { attachSessionExport, } from '../integrations/telemetry/session-export.js';
|
|
24
|
-
import { cliLogger, contextLogging, createStderrSink, installCliLogging } from '../logging.js';
|
|
25
|
-
import { decideHeadlessTrust } from '../permissions/headless-trust.js';
|
|
26
|
-
import { resolvePermissionMode } from '../permissions/mode.js';
|
|
27
|
-
import { compilePermissions } from '../permissions/rules.js';
|
|
28
|
-
import { describeRunInterruption, retryAfterMs } from '../tui/run-interruption.js';
|
|
29
|
-
import { hostCommandNames } from '../tui/slashCommands.js';
|
|
30
|
-
import { expandHeadlessCommand } from '../user-commands/store.js';
|
|
31
|
-
import { duration, pauseWait } from './provider-wait.js';
|
|
32
|
-
import { resolveResume } from './resume.js';
|
|
33
|
-
import { applyProviderFlags, buildGate, loadSkillsContext, parseRunFlags, resolveWorkingDirectory, unknownOptionMessage, } from './run-flags.js';
|
|
34
|
-
import { readStdin } from './stdin.js';
|
|
35
|
-
/**
|
|
36
|
-
* The prompt, from the arguments and the pipe together.
|
|
37
|
-
*
|
|
38
|
-
* Piped input used to be read only when there was no argument prompt, so
|
|
39
|
-
*
|
|
40
|
-
* cat notes.txt | namzu run "summarise this"
|
|
41
|
-
*
|
|
42
|
-
* sent the model three words and silently dropped the file. Nothing reported
|
|
43
|
-
* it: the run succeeded, and the answer was about nothing. A pipe and a
|
|
44
|
-
* question are the ordinary way to ask about a document, and taking only one
|
|
45
|
-
* of the two is the worst reading of that command.
|
|
46
|
-
*
|
|
47
|
-
* The piped text is fenced in a tag so the model can tell the instruction from
|
|
48
|
-
* the material it is about — without a boundary, a long paste runs into the
|
|
49
|
-
* question and the last line of a file reads as part of the request.
|
|
50
|
-
*
|
|
51
|
-
* Pure so it can be tested without a pipe; the reading happens in the handler.
|
|
52
|
-
*/
|
|
53
|
-
export function composePrompt(fromArgs, piped) {
|
|
54
|
-
const question = fromArgs.trim();
|
|
55
|
-
const material = piped.trim();
|
|
56
|
-
if (!question)
|
|
57
|
-
return material;
|
|
58
|
-
if (!material)
|
|
59
|
-
return question;
|
|
60
|
-
return `${question}\n\n<stdin>\n${material}\n</stdin>`;
|
|
61
|
-
}
|
|
62
|
-
function defaultPrefs(detected) {
|
|
63
|
-
const first = detected[0];
|
|
64
|
-
return first
|
|
65
|
-
? {
|
|
66
|
-
version: 3,
|
|
67
|
-
providers: [{ id: first.entry.id }],
|
|
68
|
-
subagents: { active: [] },
|
|
69
|
-
}
|
|
70
|
-
: null;
|
|
71
|
-
}
|
|
72
|
-
export const runCommand = {
|
|
73
|
-
name: 'run',
|
|
74
|
-
description: 'Run a single prompt headlessly and print the reply (for scripts/CI)',
|
|
75
|
-
passThrough: true,
|
|
76
|
-
help: [
|
|
77
|
-
'Usage: namzu run [options] <prompt...>',
|
|
78
|
-
' echo "<prompt>" | namzu run',
|
|
79
|
-
' cat file.txt | namzu run "summarise this"',
|
|
80
|
-
'',
|
|
81
|
-
'Run a single prompt headlessly and print the reply. Everything that is',
|
|
82
|
-
'not an option is the prompt.',
|
|
83
|
-
'',
|
|
84
|
-
'Piped input is used too, not discarded: with no prompt argument it IS',
|
|
85
|
-
'the prompt, and alongside one it is appended as material the question',
|
|
86
|
-
'is about. `namzu run -` reads the prompt from stdin explicitly.',
|
|
87
|
-
'',
|
|
88
|
-
'Options (the same ones run-stream takes):',
|
|
89
|
-
' --cwd <path> Directory the agent works in (default: this one)',
|
|
90
|
-
' --provider <id> Provider to answer with',
|
|
91
|
-
' --model <id> Model to answer with',
|
|
92
|
-
' --skills <a,b,c> Load these skills as context for the turn',
|
|
93
|
-
' --continue, -c Resume the most recent conversation here',
|
|
94
|
-
' --resume <id> Resume that conversation, and no other',
|
|
95
|
-
' --gate <command> Verify proposed answers with this command; repeatable',
|
|
96
|
-
' --gate-retries <n> Fix attempts a failing gate allows (default 3)',
|
|
97
|
-
' --max-iterations <n> Main-loop iteration limit (default 50; 0 unlimited)',
|
|
98
|
-
' --token-budget <n> Tree token limit (default unlimited; 0 removes a configured cap)',
|
|
99
|
-
' --effort <level> Explicit reasoning effort (supported levels depend on the model)',
|
|
100
|
-
' --wait-for-provider <d> Wait out provider pauses (a rate limit, an outage)',
|
|
101
|
-
' for up to this long in total — 90s, 30m, 2h — resuming',
|
|
102
|
-
' from the checkpoint each time (default: none; exit 75)',
|
|
103
|
-
' --permission-mode <m> prompt | accept-edits | auto | strict | plan —',
|
|
104
|
-
' what happens to a call no [permissions] rule',
|
|
105
|
-
' decided (default: auto)',
|
|
106
|
-
' --trust Accept this folder for THIS run',
|
|
107
|
-
' -- End of options; the rest is the prompt verbatim',
|
|
108
|
-
'',
|
|
109
|
-
'A folder has to be trusted before namzu will work in it, because namzu',
|
|
110
|
-
'reads its files, runs commands in it and executes its code. Run `namzu`',
|
|
111
|
-
'here once and accept the prompt to trust it permanently, or pass --trust',
|
|
112
|
-
'to accept it for one run. --trust does not remember; that is the point.',
|
|
113
|
-
'',
|
|
114
|
-
'--yolo does NOT imply --trust: one is about which tools may run inside a',
|
|
115
|
-
'folder, the other about the folder.',
|
|
116
|
-
'',
|
|
117
|
-
'By default tools run without asking, because there is nobody to ask, and',
|
|
118
|
-
'the safety gate still refuses catastrophic commands. Use --permission-mode',
|
|
119
|
-
'strict for an unattended run that must refuse anything no rule allowed.',
|
|
120
|
-
'',
|
|
121
|
-
'A mode only decides calls no rule decided: it can never reopen a deny.',
|
|
122
|
-
'',
|
|
123
|
-
'--gate checks proposed answers with operator-supplied commands. Every',
|
|
124
|
-
'command must complete successfully; a failure returns diagnostics to the',
|
|
125
|
-
'model for correction. Repeat the flag to check several commands in order.',
|
|
126
|
-
'Budget exhaustion or cancellation may stop a run before verification.',
|
|
127
|
-
'',
|
|
128
|
-
'A failed gate may skip a retry when its Git change detector is unchanged.',
|
|
129
|
-
'The attempt still counts. Exhausted review attempts stop the run with',
|
|
130
|
-
'answer_rejected and a non-zero exit.',
|
|
131
|
-
'',
|
|
132
|
-
"The working directory's AGENTS.md files — that directory and every one up",
|
|
133
|
-
'to the repository root — are loaded as standing instructions for the run,',
|
|
134
|
-
'and the ones that were loaded are named on stderr.',
|
|
135
|
-
'',
|
|
136
|
-
'--continue and --resume refuse when the conversation cannot be reopened,',
|
|
137
|
-
'and say why. Neither ever falls back to starting a new one: run with no',
|
|
138
|
-
'flag if that is what you want.',
|
|
139
|
-
'',
|
|
140
|
-
'Needs a provider. Set a credential in the environment, or run namzu',
|
|
141
|
-
'once to pick one interactively.',
|
|
142
|
-
'',
|
|
143
|
-
'A run the provider pauses keeps a checkpoint. Without --wait-for-provider',
|
|
144
|
-
'it exits 75 at once and a wrapper decides when to run again; with it, the',
|
|
145
|
-
"run waits the provider's own delay when it named one (otherwise a minute,",
|
|
146
|
-
'doubling, at most fifteen) and resumes from the checkpoint in this process,',
|
|
147
|
-
'until the budget is spent. The `limits.waitForProviderMs` config key sets',
|
|
148
|
-
'the same budget for every run in the folder.',
|
|
149
|
-
'',
|
|
150
|
-
'Exit codes: 0 on a reply, 1 on a failed or unfinished run, 2 when no',
|
|
151
|
-
'prompt was supplied, 64 when an argument is wrong, 75 when the provider',
|
|
152
|
-
'paused the run (a rate limit or an outage) and a checkpoint was kept —',
|
|
153
|
-
'wait, then run again — and 77 when the folder has not been trusted and',
|
|
154
|
-
'nothing ran.',
|
|
155
|
-
].join('\n'),
|
|
156
|
-
handler: async ({ ctx: bootstrapCtx, rawArgs }) => {
|
|
157
|
-
let ctx = bootstrapCtx;
|
|
158
|
-
const flags = parseRunFlags(rawArgs);
|
|
159
|
-
// The run's leash: the config file's limits, with a flag overriding each.
|
|
160
|
-
const limitsFromFlags = {
|
|
161
|
-
...(flags.maxIterations !== null ? { maxIterations: flags.maxIterations } : {}),
|
|
162
|
-
...(flags.tokenBudget !== null ? { tokenBudget: flags.tokenBudget } : {}),
|
|
163
|
-
};
|
|
164
|
-
if (flags.unknown.length > 0) {
|
|
165
|
-
// A shell caller learns about a bad argument from `$?`, so this is 64
|
|
166
|
-
// rather than the in-band error event the streaming sibling emits.
|
|
167
|
-
ctx.formatter.error({ message: unknownOptionMessage(flags.unknown) });
|
|
168
|
-
return EXIT_USAGE;
|
|
169
|
-
}
|
|
170
|
-
// `-` on its own means "the prompt is on stdin", the usual spelling for
|
|
171
|
-
// it. Before, it was sent to the model as a one-character question.
|
|
172
|
-
const fromArgs = flags.rest.join(' ').trim() === '-' ? '' : flags.rest.join(' ').trim();
|
|
173
|
-
// With no prompt argument, piped input IS the prompt and is waited for
|
|
174
|
-
// as long as it takes — that is the existing contract for `echo … |
|
|
175
|
-
// namzu run` and for the `-` sentinel. Alongside a prompt it is extra
|
|
176
|
-
// material, so it gets the first-byte deadline instead: a caller who
|
|
177
|
-
// asked a complete question should never be left waiting on a pipe
|
|
178
|
-
// they did not mean to open.
|
|
179
|
-
const piped = await readStdin({ deadline: Boolean(fromArgs) });
|
|
180
|
-
const prompt = composePrompt(fromArgs, piped);
|
|
181
|
-
if (!prompt) {
|
|
182
|
-
ctx.formatter.error({
|
|
183
|
-
message: 'no prompt — pass it as an argument or pipe it via stdin',
|
|
184
|
-
});
|
|
185
|
-
return 2;
|
|
186
|
-
}
|
|
187
|
-
const resolved = resolveWorkingDirectory(flags.cwd);
|
|
188
|
-
if ('error' in resolved) {
|
|
189
|
-
ctx.formatter.error({ message: resolved.error });
|
|
190
|
-
return EXIT_USAGE;
|
|
191
|
-
}
|
|
192
|
-
// Before anything is read, run or constructed in that directory. The
|
|
193
|
-
// order is the gate: a check that happens after the session is built has
|
|
194
|
-
// already opened stores and walked the tree it was meant to protect.
|
|
195
|
-
const trust = decideHeadlessTrust({
|
|
196
|
-
cwd: resolved.cwd,
|
|
197
|
-
trustFlag: flags.trust,
|
|
198
|
-
});
|
|
199
|
-
if (!trust.allowed) {
|
|
200
|
-
ctx.formatter.error({ message: trust.message ?? 'folder not trusted' });
|
|
201
|
-
return EXIT_UNTRUSTED;
|
|
202
|
-
}
|
|
203
|
-
const cwd = trust.cwd;
|
|
204
|
-
ctx = resolveTrustedProjectContext(bootstrapCtx, cwd);
|
|
205
|
-
// Project commands are code-like launch authority: discover and expand
|
|
206
|
-
// them only after the target folder has crossed the same trust boundary
|
|
207
|
-
// as its config and instructions.
|
|
208
|
-
const expansion = expandHeadlessCommand(prompt, {
|
|
209
|
-
cwd,
|
|
210
|
-
builtins: hostCommandNames(),
|
|
211
|
-
});
|
|
212
|
-
if (expansion.kind === 'refused') {
|
|
213
|
-
ctx.formatter.error({ message: expansion.reason });
|
|
214
|
-
return EXIT_USAGE;
|
|
215
|
-
}
|
|
216
|
-
const finalPrompt = expansion.kind === 'expanded' ? expansion.prompt : prompt;
|
|
217
|
-
// The CLI owns stderr, not the kernel it drives (LOG-05) — a live sink
|
|
218
|
-
// at the level --verbose/--quiet/NAMZU_LOG_LEVEL named, instead of
|
|
219
|
-
// forcing the level to `silent` via `configureLogger`, which threw
|
|
220
|
-
// every diagnostic away regardless of what anyone asked for.
|
|
221
|
-
// `{ replace: true }`: a real invocation calls this once, but this
|
|
222
|
-
// package's own test suite calls a command's handler more than once
|
|
223
|
-
// per process, which a refusing second install would break for
|
|
224
|
-
// reasons that have nothing to do with what those tests are about.
|
|
225
|
-
const logging = contextLogging(ctx);
|
|
226
|
-
installCliLogging(createStderrSink(logging.format), logging.level);
|
|
227
|
-
const { probeAgentSession, createAgentSession } = await import('../tui/agent.js');
|
|
228
|
-
const probe = await probeAgentSession();
|
|
229
|
-
let prefs = probe.preferences ?? defaultPrefs(probe.detected);
|
|
230
|
-
if (!prefs) {
|
|
231
|
-
ctx.formatter.error({
|
|
232
|
-
message: 'no LLM provider available — set a credential (e.g. ANTHROPIC_API_KEY) or run `namzu` to pick one',
|
|
233
|
-
});
|
|
234
|
-
return 1;
|
|
235
|
-
}
|
|
236
|
-
prefs = applyProviderFlags(prefs, flags);
|
|
237
|
-
// A permission the operator wrote and which was silently dropped is the
|
|
238
|
-
// worst outcome available here: they believe a control is in force and it
|
|
239
|
-
// is not. So a bad line is reported and the rest still load.
|
|
240
|
-
const modeResult = resolvePermissionMode({
|
|
241
|
-
flag: flags.permissionMode,
|
|
242
|
-
skipPermissions: flags.skipPermissions,
|
|
243
|
-
// A headless run has nobody to ask, so `prompt` here would silently
|
|
244
|
-
// become `auto`. Resolving it as `auto` says so instead.
|
|
245
|
-
interactive: false,
|
|
246
|
-
});
|
|
247
|
-
if ('error' in modeResult) {
|
|
248
|
-
ctx.formatter.error({ message: modeResult.error });
|
|
249
|
-
return EXIT_USAGE;
|
|
250
|
-
}
|
|
251
|
-
const permissions = compilePermissions(ctx.config.permissions, ctx.config.permissionChecks);
|
|
252
|
-
for (const d of permissions.diagnostics) {
|
|
253
|
-
const where = d.pattern ? `permissions.${d.tool}."${d.pattern}"` : `permissions.${d.tool}`;
|
|
254
|
-
ctx.formatter.error({ message: `${where}: ${d.message}` });
|
|
255
|
-
}
|
|
256
|
-
const gate = buildGate(flags, cwd);
|
|
257
|
-
// Attached BEFORE the session, and its failure is fatal. An operator who
|
|
258
|
-
// configured `telemetry.sessionExport` asked for this run to be
|
|
259
|
-
// recorded; continuing without it means the run happens and the record
|
|
260
|
-
// they were counting on does not exist, which is a failure they only
|
|
261
|
-
// discover when they go looking for a session that was never written.
|
|
262
|
-
let sessionExport;
|
|
263
|
-
if (ctx.config.telemetry?.sessionExport) {
|
|
264
|
-
try {
|
|
265
|
-
sessionExport = await attachSessionExport({
|
|
266
|
-
config: ctx.config.telemetry.sessionExport,
|
|
267
|
-
});
|
|
268
|
-
// Under the same event name the boot narrative used for the
|
|
269
|
-
// boolean. This is the half that names the destination and the
|
|
270
|
-
// redactors, and it is emitted HERE because it describes what
|
|
271
|
-
// actually resolved rather than what was configured.
|
|
272
|
-
cliLogger().info(sessionExport.disclosure, {
|
|
273
|
-
[EVENT_NAME_ATTRIBUTE]: BOOT_EVENT_NAMES.TELEMETRY_STATUS,
|
|
274
|
-
'namzu.telemetry.session_export': true,
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
catch (err) {
|
|
278
|
-
ctx.formatter.error({
|
|
279
|
-
message: err instanceof Error ? err.message : String(err),
|
|
280
|
-
});
|
|
281
|
-
return 1;
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
let sessions;
|
|
285
|
-
try {
|
|
286
|
-
sessions = await openSessions(cwd);
|
|
287
|
-
}
|
|
288
|
-
catch (error) {
|
|
289
|
-
await sessionExport?.shutdown();
|
|
290
|
-
ctx.formatter.error({
|
|
291
|
-
message: `workspace state is unavailable: ${error instanceof Error ? error.message : String(error)}`,
|
|
292
|
-
});
|
|
293
|
-
return 1;
|
|
294
|
-
}
|
|
295
|
-
const resume = await resolveResume(sessions, { continueLast: flags.continueLast, sessionId: flags.resume }, cwd);
|
|
296
|
-
if (resume.kind === 'error') {
|
|
297
|
-
ctx.formatter.error({ message: resume.message });
|
|
298
|
-
await sessionExport?.shutdown();
|
|
299
|
-
return EXIT_USAGE;
|
|
300
|
-
}
|
|
301
|
-
const prior = resume.kind === 'resumed' ? resume.messages : [];
|
|
302
|
-
const session = await createAgentSession(prefs, probe.detected, {
|
|
303
|
-
cwd,
|
|
304
|
-
scope: {
|
|
305
|
-
sessionId: resume.kind === 'resumed' ? asSessionId(resume.sessionId) : generateSessionId(),
|
|
306
|
-
topicId: sessions.topicId,
|
|
307
|
-
projectId: sessions.projectId,
|
|
308
|
-
tenantId: sessions.tenantId,
|
|
309
|
-
},
|
|
310
|
-
stateRoot: sessions.root,
|
|
311
|
-
...(resume.kind === 'resumed' ? { conversationSessions: sessions } : {}),
|
|
312
|
-
rules: permissions.rules,
|
|
313
|
-
...(sessionExport ? { onRunEvent: sessionExport.listener } : {}),
|
|
314
|
-
// The operator's --gate commands, as a standing condition on the
|
|
315
|
-
// answer. Spread rather than passed as undefined so a run without
|
|
316
|
-
// gates is byte-identical to the one that shipped before them.
|
|
317
|
-
...(gate ?? {}),
|
|
318
|
-
permissionMode: modeResult.mode,
|
|
319
|
-
...(ctx.config.mcpServers ? { mcpServers: ctx.config.mcpServers } : {}),
|
|
320
|
-
...(ctx.config.plugins ? { plugins: ctx.config.plugins } : {}),
|
|
321
|
-
...(ctx.config.web ? { web: ctx.config.web } : {}),
|
|
322
|
-
...(ctx.config.hooks ? { hooks: ctx.config.hooks } : {}),
|
|
323
|
-
...(ctx.config.compaction ? { compaction: ctx.config.compaction } : {}),
|
|
324
|
-
...(ctx.config.memory ? { memory: ctx.config.memory } : {}),
|
|
325
|
-
...(Object.keys({ ...ctx.config.limits, ...limitsFromFlags }).length > 0
|
|
326
|
-
? { limits: { ...ctx.config.limits, ...limitsFromFlags } }
|
|
327
|
-
: {}),
|
|
328
|
-
...(ctx.config.sandbox ? { sandbox: ctx.config.sandbox } : {}),
|
|
329
|
-
// `!== undefined`, not truthiness: an empty list is the operator
|
|
330
|
-
// turning the default screen OFF, and a falsy check would drop it.
|
|
331
|
-
...(ctx.config.toolResultScreens !== undefined
|
|
332
|
-
? { toolResultScreens: ctx.config.toolResultScreens }
|
|
333
|
-
: {}),
|
|
334
|
-
});
|
|
335
|
-
if (!session.hasProvider) {
|
|
336
|
-
await session.close();
|
|
337
|
-
await sessionExport?.shutdown();
|
|
338
|
-
ctx.formatter.error({
|
|
339
|
-
message: session.errorHint ?? 'agent is not ready',
|
|
340
|
-
});
|
|
341
|
-
return 1;
|
|
342
|
-
}
|
|
343
|
-
// A configured tool server that is not here means the run cannot do what
|
|
344
|
-
// the operator set it up to do, and there is nobody watching to notice.
|
|
345
|
-
// The TUI reports and carries on, because a person can read the line and
|
|
346
|
-
// decide; a script has no such reader, so it refuses. Same principle as
|
|
347
|
-
// the permission mode resolving differently when `interactive` is false.
|
|
348
|
-
if (session.mcpFailed.length > 0) {
|
|
349
|
-
for (const f of session.mcpFailed) {
|
|
350
|
-
ctx.formatter.error({
|
|
351
|
-
message: `tool server "${f.name}" is not available: ${f.reason}`,
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
await session.close();
|
|
355
|
-
await sessionExport?.shutdown();
|
|
356
|
-
return 1;
|
|
357
|
-
}
|
|
358
|
-
// "Printed on every launch" has to mean every launch, not every launch of
|
|
359
|
-
// the TUI. A scripted run under an accepted capability limitation is
|
|
360
|
-
// exactly the case where nobody is watching, so the line has to be in the
|
|
361
|
-
// output the script keeps.
|
|
362
|
-
for (const notice of session.configNotices) {
|
|
363
|
-
ctx.formatter.info(notice);
|
|
364
|
-
}
|
|
365
|
-
for (const s of session.mcpConnected) {
|
|
366
|
-
ctx.formatter.info(`tool server ${s.name} · ${s.toolCount} tools`);
|
|
367
|
-
}
|
|
368
|
-
ctx.formatter.info(`namzu · ${session.providerSummary}${session.modelSummary ? ` · ${session.modelSummary}` : ''}`);
|
|
369
|
-
// stderr like every other status line, so a caller piping the answer is
|
|
370
|
-
// unaffected and a person watching can still tell which instructions the
|
|
371
|
-
// run is bound by. A script that reads AGENTS.md aloud is not a script
|
|
372
|
-
// whose output changed.
|
|
373
|
-
if (session.instructionFiles.length > 0) {
|
|
374
|
-
ctx.formatter.info(`project instructions: ${session.instructionFiles
|
|
375
|
-
.map((p) => relative(cwd, p) || p)
|
|
376
|
-
.join(', ')}`);
|
|
377
|
-
}
|
|
378
|
-
// A refusal that says nothing is indistinguishable from a project that
|
|
379
|
-
// declared nothing, and the two want opposite responses from the reader.
|
|
380
|
-
for (const skip of session.skippedInstructionFiles) {
|
|
381
|
-
ctx.formatter.error({
|
|
382
|
-
message: `skipped ${relative(cwd, skip.path) || skip.path}: ${skip.reason}`,
|
|
383
|
-
});
|
|
384
|
-
}
|
|
385
|
-
const extraSystem = await loadSkillsContext(cwd, flags.skills);
|
|
386
|
-
if (resume.kind === 'resumed') {
|
|
387
|
-
ctx.formatter.info(`resuming ${resume.sessionId} · ${prior.length} messages`);
|
|
388
|
-
}
|
|
389
|
-
let text = '';
|
|
390
|
-
const measured = {};
|
|
391
|
-
const jsonResult = (value) => ({
|
|
392
|
-
text: value,
|
|
393
|
-
...(measured.usage
|
|
394
|
-
? {
|
|
395
|
-
usage: {
|
|
396
|
-
totalTokens: measured.usage.totalTokens,
|
|
397
|
-
cost: measured.usage.cost,
|
|
398
|
-
},
|
|
399
|
-
}
|
|
400
|
-
: {}),
|
|
401
|
-
...(measured.budget ? { budget: measured.budget } : {}),
|
|
402
|
-
});
|
|
403
|
-
let stopReason;
|
|
404
|
-
// Written from inside `consume`, so held on an object: a `let` assigned
|
|
405
|
-
// only in a closure is `null` as far as the type checker can see, and
|
|
406
|
-
// every read after the loop would narrow it to `never`.
|
|
407
|
-
const stop = {
|
|
408
|
-
failed: null,
|
|
409
|
-
paused: null,
|
|
410
|
-
};
|
|
411
|
-
const consume = async (stream) => {
|
|
412
|
-
stop.failed = null;
|
|
413
|
-
stop.paused = null;
|
|
414
|
-
for await (const event of stream) {
|
|
415
|
-
if (event.kind === 'delta')
|
|
416
|
-
text += event.text;
|
|
417
|
-
else if (event.kind === 'tool-start')
|
|
418
|
-
ctx.formatter.info(`⏺ ${event.toolName} ${event.summary}`);
|
|
419
|
-
// stderr, like every other status line, so it reaches a person
|
|
420
|
-
// watching without contaminating the answer a caller piped.
|
|
421
|
-
else if (event.kind === 'context')
|
|
422
|
-
ctx.formatter.info(event.text);
|
|
423
|
-
else if (event.kind === 'error' || event.kind === 'paused') {
|
|
424
|
-
if (event.budget)
|
|
425
|
-
measured.budget = event.budget;
|
|
426
|
-
stop.failed = describeRunInterruption(event);
|
|
427
|
-
if (event.kind === 'paused')
|
|
428
|
-
stop.paused = event;
|
|
429
|
-
}
|
|
430
|
-
else if (event.kind === 'usage') {
|
|
431
|
-
measured.usage = event;
|
|
432
|
-
if (event.budget)
|
|
433
|
-
measured.budget = event.budget;
|
|
434
|
-
}
|
|
435
|
-
else if (event.kind === 'done') {
|
|
436
|
-
// Deltas include preliminary and rejected answers. Settlement
|
|
437
|
-
// supplies the final result after review and output guardrails;
|
|
438
|
-
// an explicit empty result must also replace earlier text.
|
|
439
|
-
if (event.text !== undefined)
|
|
440
|
-
text = event.text;
|
|
441
|
-
stopReason = event.stopReason;
|
|
442
|
-
if (event.budget)
|
|
443
|
-
measured.budget = event.budget;
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
};
|
|
447
|
-
await consume(session.send([...prior, { role: 'user', content: finalPrompt, timestamp: Date.now() }], extraSystem || flags.effort !== null
|
|
448
|
-
? {
|
|
449
|
-
...(extraSystem ? { extraSystem } : {}),
|
|
450
|
-
...(flags.effort !== null ? { effort: flags.effort } : {}),
|
|
451
|
-
}
|
|
452
|
-
: undefined));
|
|
453
|
-
// A provider pause is answered by waiting, when the caller gave time to
|
|
454
|
-
// wait with. The kernel kept a checkpoint; the run resumes from it in
|
|
455
|
-
// this process, with its own context, rather than being re-prompted from
|
|
456
|
-
// notes by a wrapper that saw exit 75. A pause with no provider behind
|
|
457
|
-
// it is not waited on: that is a run parked on something else.
|
|
458
|
-
const waitBudgetMs = flags.waitForProviderMs ?? ctx.config.limits?.waitForProviderMs ?? 0;
|
|
459
|
-
let waits = 0;
|
|
460
|
-
let waitedMs = 0;
|
|
461
|
-
while (stop.paused && waitBudgetMs > 0 && (stop.paused.providerError || stop.paused.failure)) {
|
|
462
|
-
const paused = stop.paused;
|
|
463
|
-
const asked = retryAfterMs(paused);
|
|
464
|
-
const decision = pauseWait({
|
|
465
|
-
waited: waits,
|
|
466
|
-
...(asked !== undefined ? { retryAfterMs: asked } : {}),
|
|
467
|
-
waitedMs,
|
|
468
|
-
budgetMs: waitBudgetMs,
|
|
469
|
-
});
|
|
470
|
-
if (decision.kind === 'stop') {
|
|
471
|
-
stop.failed = `${stop.failed}\nNot resumed: ${decision.reason}.`;
|
|
472
|
-
break;
|
|
473
|
-
}
|
|
474
|
-
waits += 1;
|
|
475
|
-
ctx.formatter.info(`provider paused the run: waiting ${duration(decision.delayMs)}, then resuming from ${paused.checkpointId} (wait ${waits}, ${duration(waitedMs)} of ${duration(waitBudgetMs)} spent)`);
|
|
476
|
-
await new Promise((resolve) => setTimeout(resolve, decision.delayMs));
|
|
477
|
-
waitedMs += decision.delayMs;
|
|
478
|
-
await consume(session.resumePaused({
|
|
479
|
-
runId: paused.runId,
|
|
480
|
-
checkpointId: paused.checkpointId,
|
|
481
|
-
}));
|
|
482
|
-
}
|
|
483
|
-
const failed = stop.failed;
|
|
484
|
-
const paused = stop.paused !== null;
|
|
485
|
-
// Every exit below this point releases the session first. A stdio tool
|
|
486
|
-
// server is a child process, and a `run` that returns without closing
|
|
487
|
-
// leaves it behind.
|
|
488
|
-
await session.close();
|
|
489
|
-
// Drained with the session, not at process exit: a buffering sink that
|
|
490
|
-
// only flushed on `beforeExit` loses its tail whenever the CLI is
|
|
491
|
-
// interrupted, which is exactly the run somebody wanted the record of.
|
|
492
|
-
await sessionExport?.shutdown();
|
|
493
|
-
if (measured.budget) {
|
|
494
|
-
ctx.formatter.info(`Tokens: ${measured.budget.ownTokens} own · ${measured.budget.treeTokens} including descendants`);
|
|
495
|
-
}
|
|
496
|
-
if (failed) {
|
|
497
|
-
// A provider can pause or fail after producing useful text. The TUI
|
|
498
|
-
// keeps that partial answer and a shell caller deserves the same bytes;
|
|
499
|
-
// the non-zero verdict is what prevents it being mistaken for complete.
|
|
500
|
-
const partial = text.trim();
|
|
501
|
-
if (partial) {
|
|
502
|
-
ctx.formatter.print(ctx.formatter.name === 'json' ? jsonResult(partial) : partial);
|
|
503
|
-
}
|
|
504
|
-
ctx.formatter.error({
|
|
505
|
-
message: `${failed}${partial ? ' — the output above is partial' : ''}`,
|
|
506
|
-
});
|
|
507
|
-
// A pause is not a failure: the provider said "not now" (a rate
|
|
508
|
-
// limit, an outage) and the kernel kept a checkpoint. A wrapper that
|
|
509
|
-
// re-runs on 1 would hammer a limited provider and give up on a
|
|
510
|
-
// finished-looking failure alike; 75 (EX_TEMPFAIL, the sysexits
|
|
511
|
-
// convention for "try again later") lets it back off instead.
|
|
512
|
-
return paused ? 75 : 1;
|
|
513
|
-
}
|
|
514
|
-
// The text prints either way. Partial output is real output, and a
|
|
515
|
-
// caller who piped it wants what there is — but `$?` has to be able to
|
|
516
|
-
// tell them it is partial, which it could not: `run_failed` is emitted
|
|
517
|
-
// only from the throw path, so a run stopped by its token budget, its
|
|
518
|
-
// timeout, its iteration cap, a cancellation, or a blocking output
|
|
519
|
-
// guardrail all arrived as `run_completed` and exited 0. Measured: a
|
|
520
|
-
// `max_iterations` stop reports `status: 'completed'`. The sharp case is
|
|
521
|
-
// the guardrail — a REFUSED answer exited 0 with empty text, so
|
|
522
|
-
// `namzu run … > out.txt && deploy` proceeded on the empty file.
|
|
523
|
-
ctx.formatter.print(ctx.formatter.name === 'json' ? jsonResult(text.trim()) : text.trim());
|
|
524
|
-
if (stopReason && stopReason !== 'end_turn') {
|
|
525
|
-
ctx.formatter.error({
|
|
526
|
-
message: `run did not finish normally: ${stopReason}${text.trim() ? ' — the output above is partial' : ''}`,
|
|
527
|
-
});
|
|
528
|
-
return 1;
|
|
529
|
-
}
|
|
530
|
-
return 0;
|
|
531
|
-
},
|
|
532
|
-
};
|
|
533
|
-
//# sourceMappingURL=run.js.map
|
package/dist/commands/run.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { CheckpointRunScope } from '@namzu/sdk';
|
|
2
|
-
import type { RunLimitsConfig } from './schema.js';
|
|
3
|
-
export type RunGuardKey = 'tokenBudget' | 'maxIterations' | 'timeoutMs';
|
|
4
|
-
export type RunGuards = {
|
|
5
|
-
-readonly [K in RunGuardKey]: number;
|
|
6
|
-
};
|
|
7
|
-
/** CLI policy; independent of the SDK's defaults for embedding hosts. */
|
|
8
|
-
export declare function resolveRunGuards(...layers: readonly (RunLimitsConfig | undefined)[]): RunGuards;
|
|
9
|
-
/** Restore the run's own settings, including overrides made before a provider pause. */
|
|
10
|
-
export declare function readStoredRunGuards(path: string, scope: CheckpointRunScope): Promise<RunGuards | undefined>;
|
|
11
|
-
//# sourceMappingURL=run-limits.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-limits.d.ts","sourceRoot":"","sources":["../../src/config/run-limits.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,CAAA;AACvE,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,UAAU,CAAC,IAAI,WAAW,GAAG,MAAM;CAAE,CAAA;AAEhE,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,CAkB/F;AAED,wFAAwF;AACxF,wBAAsB,mBAAmB,CACxC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,kBAAkB,GACvB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAiDhC"}
|