@namzu/cli 26.2.0 → 27.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 +312 -0
- package/README.md +49 -34
- 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.js +2 -2
- 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 +214 -134
- 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/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/resident.d.ts.map +1 -1
- package/dist/commands/resident.js +2 -1
- package/dist/commands/resident.js.map +1 -1
- package/dist/commands/run-flags.d.ts +7 -7
- package/dist/commands/run-flags.js +4 -4
- package/dist/commands/run-stream.d.ts +16 -12
- package/dist/commands/run-stream.d.ts.map +1 -1
- package/dist/commands/run-stream.js +142 -98
- package/dist/commands/run-stream.js.map +1 -1
- package/dist/commands/run.d.ts +6 -4
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +129 -45
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/serve.js +2 -2
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/state.js +8 -8
- package/dist/commands/state.js.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 +17 -5
- package/dist/config/load.js.map +1 -1
- package/dist/config/run-limits.d.ts +20 -8
- package/dist/config/run-limits.d.ts.map +1 -1
- package/dist/config/run-limits.js +28 -46
- package/dist/config/run-limits.js.map +1 -1
- package/dist/config/schema.d.ts +44 -19
- 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/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 +1 -1
- package/dist/context/project.js +1 -1
- 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 +5 -5
- 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/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/index.d.ts +1 -1
- package/dist/integrations/providers/index.d.ts.map +1 -1
- package/dist/integrations/providers/index.js +1 -1
- package/dist/integrations/providers/index.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 +74 -1
- package/dist/integrations/providers/registry.d.ts.map +1 -1
- package/dist/integrations/providers/registry.js +75 -0
- package/dist/integrations/providers/registry.js.map +1 -1
- 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-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 +1 -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 +2 -0
- package/dist/integrations/resident/session-step.d.ts.map +1 -1
- package/dist/integrations/resident/session-step.js +15 -13
- 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/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 +2 -2
- package/dist/permissions/headless-trust.d.ts.map +1 -1
- package/dist/permissions/headless-trust.js +3 -3
- 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 +458 -304
- 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.d.ts +14 -1
- package/dist/tui/Picker.d.ts.map +1 -1
- package/dist/tui/Picker.js +598 -132
- package/dist/tui/Picker.js.map +1 -1
- package/dist/tui/agent.d.ts +208 -132
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +523 -313
- 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/model-choices.d.ts.map +1 -1
- package/dist/tui/model-choices.js +20 -1
- package/dist/tui/model-choices.js.map +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/provider-list.d.ts +206 -41
- package/dist/tui/provider-list.d.ts.map +1 -1
- package/dist/tui/provider-list.js +248 -52
- package/dist/tui/provider-list.js.map +1 -1
- package/dist/tui/slashCommands.d.ts +29 -40
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +70 -61
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/terminal-choice-text.d.ts +22 -0
- package/dist/tui/terminal-choice-text.d.ts.map +1 -1
- package/dist/tui/terminal-choice-text.js +81 -0
- package/dist/tui/terminal-choice-text.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 +1 -1
- package/dist/user-commands/store.js +1 -1
- package/package.json +8 -8
- 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
|
@@ -1,19 +1,47 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The rows the provider picker lists:
|
|
3
|
-
*
|
|
2
|
+
* The rows the provider picker lists: one per vendor, each saying what this
|
|
3
|
+
* machine can currently do with it.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* the
|
|
11
|
-
*
|
|
5
|
+
* ## One vendor is one row
|
|
6
|
+
*
|
|
7
|
+
* The screen used to draw a row per provider id, so one vendor could be two
|
|
8
|
+
* rows: the session on the device under the subscription's own label, and below
|
|
9
|
+
* it the same vendor's name asking for the key it did not need. The operator
|
|
10
|
+
* holding the key had to work out which of the two rows was theirs.
|
|
11
|
+
*
|
|
12
|
+
* Rows are grouped by `ProviderRegistryEntry.vendor` — a field on the registry
|
|
13
|
+
* rather than a table here, because which ids are one vendor is a fact about
|
|
14
|
+
* the providers and the picker is only the first surface to need it; see
|
|
15
|
+
* `VENDOR_NAMES` for that field and for which ids are one vendor. A vendor
|
|
16
|
+
* whose ids reach the same service through different credentials is one row,
|
|
17
|
+
* which is the shape one entry in this registry has had all along: a single id
|
|
18
|
+
* taking an API key, a token variable, or a signed-in session. A vendor with
|
|
19
|
+
* two catalogues keeps two rows, because merging those would put a product
|
|
20
|
+
* decision inside a screen about credentials.
|
|
21
|
+
*
|
|
22
|
+
* ## What a row says, and what it holds
|
|
23
|
+
*
|
|
24
|
+
* The second column is what the machine has, not what the ideal setup is: the
|
|
25
|
+
* source of a session discovery found (`Codex session · this device`), or — when
|
|
26
|
+
* nothing was found for that vendor — the variable that would set it up
|
|
27
|
+
* (`needs OPENAI_API_KEY`). The variable is named rather than "not configured"
|
|
28
|
+
* because it is the one action that both makes the provider work now and keeps
|
|
29
|
+
* it working after a restart.
|
|
30
|
+
*
|
|
31
|
+
* Every way in that this build can offer is below in `paths`, in the order the
|
|
32
|
+
* screen offers them: what is already detected, then the API key, then — where
|
|
33
|
+
* nothing works yet — a sign-in the registry declares. A row with ONE way in
|
|
34
|
+
* leads straight to that way's flow, exactly as it did before this file grouped
|
|
35
|
+
* anything — Enter on an unconfigured row opens its paste field, Enter on a
|
|
36
|
+
* detected one opens its models. A row with SEVERAL cannot answer Enter by
|
|
37
|
+
* itself, so the screen asks how the operator means to use it; that is the only
|
|
38
|
+
* place this change added a step to, and it is a count of WAYS rather than of
|
|
39
|
+
* ids — see `rowNeedsChoice` and `vendorPaths`.
|
|
12
40
|
*
|
|
13
41
|
* ## What is added, and what is deliberately not
|
|
14
42
|
*
|
|
15
|
-
* A
|
|
16
|
-
* **takes a credential the operator can type** — the registry's
|
|
43
|
+
* A vendor joins the list only when **this build can construct something in it**
|
|
44
|
+
* and it **takes a credential the operator can type** — the registry's
|
|
17
45
|
* `constructible` and `acceptsTypedCredential` flags, read together and read
|
|
18
46
|
* from the registry rather than listed here. Entering a key for anything else
|
|
19
47
|
* produces a row that leads nowhere, which is worse than an absent row:
|
|
@@ -22,59 +50,218 @@
|
|
|
22
50
|
* region, a session token, or a role the SDK assumes) rather than one
|
|
23
51
|
* string. A single API-key field cannot express it, so the picker does not
|
|
24
52
|
* offer it.
|
|
25
|
-
* - `http` is a generic endpoint whose base URL is half the
|
|
26
|
-
*
|
|
27
|
-
* - `lmstudio` cannot be constructed by this build at all.
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
53
|
+
* - `http` is a generic endpoint whose base URL is half the credential. A key
|
|
54
|
+
* with nowhere to send it is not a setup.
|
|
55
|
+
* - `lmstudio` cannot be constructed by this build at all. Discovery may still
|
|
56
|
+
* find it, and a row for something genuinely on the machine stays on the
|
|
57
|
+
* machine's list — it just refuses, with the reason, when accepted.
|
|
58
|
+
* - `ollama` needs a local server, not a secret. A running server is how
|
|
59
|
+
* discovery finds it, and that is the only way it is listed.
|
|
60
|
+
*
|
|
61
|
+
* The sign-in inside a vendor row is not a second way to set that vendor up
|
|
62
|
+
* beside the first; it is the same path `l` reaches today, offered where the
|
|
63
|
+
* operator is already looking. Nothing here starts a credential flow of its
|
|
64
|
+
* own: a path names a provider the rest of the screen already knows how to
|
|
65
|
+
* handle.
|
|
32
66
|
*
|
|
33
67
|
* `provider-list.test.ts` asserts that exclusion list by NAME, so a registry
|
|
34
68
|
* flag that flips turns the test red instead of silently adding or dropping a
|
|
35
69
|
* row.
|
|
36
70
|
*/
|
|
37
|
-
import { ALL_PROVIDER_IDS, PROVIDER_REGISTRY, } from '../integrations/providers/index.js';
|
|
38
|
-
/** The provider a
|
|
39
|
-
export function
|
|
40
|
-
return
|
|
71
|
+
import { ALL_PROVIDER_IDS, PROVIDER_REGISTRY, VENDOR_NAMES, providerEntriesOfVendor, signedInSubscriptionProviders, } from '../integrations/providers/index.js';
|
|
72
|
+
/** The provider a path is about, whichever kind of path it is. */
|
|
73
|
+
export function pathProviderId(path) {
|
|
74
|
+
return path.kind === 'detected' ? path.detected.entry.id : path.entry.id;
|
|
41
75
|
}
|
|
42
76
|
/**
|
|
43
77
|
* Providers this screen can set up by taking a credential from the operator.
|
|
44
78
|
*
|
|
45
|
-
* Derived from the registry, in registry order.
|
|
79
|
+
* Derived from the registry, in registry order. Five of the twelve entries have
|
|
46
80
|
* a driver in this repository and are not listed here, for the reasons in the
|
|
47
|
-
* module comment.
|
|
81
|
+
* module comment. `codex` is not among them either, and for a different reason:
|
|
82
|
+
* it takes no typed credential at all, and it is offered instead as the
|
|
83
|
+
* sign-in path of the vendor row it shares with the key entry beside it.
|
|
48
84
|
*/
|
|
49
85
|
export function settableProviders() {
|
|
50
86
|
return ALL_PROVIDER_IDS.map((id) => PROVIDER_REGISTRY[id]).filter((entry) => entry.constructible && entry.acceptsTypedCredential);
|
|
51
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Every way one vendor can be used, in the order the screen offers them:
|
|
90
|
+
* what is already detected, then the API key, then — where nothing works yet —
|
|
91
|
+
* a sign-in the registry declares.
|
|
92
|
+
*
|
|
93
|
+
* `entries` is passed rather than looked up so this can be read by a test
|
|
94
|
+
* against a vendor no registry holds — the shape of the answer is a fact about
|
|
95
|
+
* the flags, and the alternative is a rule only checkable by editing the
|
|
96
|
+
* registry.
|
|
97
|
+
*
|
|
98
|
+
* ## What counts as a second way in
|
|
99
|
+
*
|
|
100
|
+
* Not a second id — a second WAY. One entry can take an API key AND be found as
|
|
101
|
+
* a signed-in session, and a machine in that state has two genuinely different
|
|
102
|
+
* ways to use it: keep using the session discovery found, or enter a key of
|
|
103
|
+
* one's own. The same is true of a vendor whose free catalogue works without a
|
|
104
|
+
* credential. So the key path is offered beside what was found whenever what was
|
|
105
|
+
* found is not itself a key — a signed-in session is a different way in, and a
|
|
106
|
+
* key that discovery already hands over is the same way twice.
|
|
107
|
+
*
|
|
108
|
+
* "Is what was found a key?" is asked with the predicate the sign-in screen
|
|
109
|
+
* already decides it by (`signedInSubscriptionProviders`), rather than a second
|
|
110
|
+
* opinion written here: an OAuth token in an environment variable is a session
|
|
111
|
+
* on that screen and must be one here too, or the two screens would disagree
|
|
112
|
+
* about the same machine.
|
|
113
|
+
*
|
|
114
|
+
* ## Why a sign-in is offered only where nothing works yet
|
|
115
|
+
*
|
|
116
|
+
* A sign-in is how a vendor with nothing becomes usable. A vendor that is
|
|
117
|
+
* already usable has no such gap, and the operator who wants a SECOND way in —
|
|
118
|
+
* a Namzu-owned session beside the key they exported — is asking for something
|
|
119
|
+
* else: `l` starts one from any screen, and the footer says so. Offering it
|
|
120
|
+
* here as well would put a question in front of every operator whose key works
|
|
121
|
+
* and stop them answering it, once per launch, to serve a case that has another
|
|
122
|
+
* door. The vendor with a signed-in session and no key still shows both, which
|
|
123
|
+
* is the case this row was reported for.
|
|
124
|
+
*
|
|
125
|
+
* `includeUnconfigured` is false on the signed-in-subscription screen, which
|
|
126
|
+
* offers only sessions that are already usable; an API key path there would
|
|
127
|
+
* contradict that screen's one sentence.
|
|
128
|
+
*/
|
|
129
|
+
export function vendorPaths(entries, detected, includeUnconfigured) {
|
|
130
|
+
const paths = [];
|
|
131
|
+
for (const provider of detected) {
|
|
132
|
+
// A provider this build cannot construct is not a way in. It stays in the
|
|
133
|
+
// row's `detected` so the row can say what it found and refuse with the
|
|
134
|
+
// reason — see `VendorRow`.
|
|
135
|
+
if (!provider.entry.constructible)
|
|
136
|
+
continue;
|
|
137
|
+
paths.push({ kind: 'detected', detected: provider });
|
|
138
|
+
}
|
|
139
|
+
if (!includeUnconfigured)
|
|
140
|
+
return paths;
|
|
141
|
+
// What is on this machine UNDER a signed-in session, as opposed to a key.
|
|
142
|
+
const signedIn = new Set(signedInSubscriptionProviders(detected).map((p) => p.entry.id));
|
|
143
|
+
const aKeyIsAlreadyHere = detected.some((provider) => !signedIn.has(provider.entry.id) &&
|
|
144
|
+
(provider.source.kind === 'env' || provider.source.kind === 'opencode-file'));
|
|
145
|
+
for (const entry of entries) {
|
|
146
|
+
if (!entry.constructible || !entry.acceptsTypedCredential)
|
|
147
|
+
continue;
|
|
148
|
+
if (aKeyIsAlreadyHere)
|
|
149
|
+
continue;
|
|
150
|
+
paths.push({ kind: 'credential', entry });
|
|
151
|
+
}
|
|
152
|
+
if (paths.some((path) => path.kind === 'detected'))
|
|
153
|
+
return paths;
|
|
154
|
+
for (const entry of entries) {
|
|
155
|
+
if (!entry.constructible || entry.subscriptionLogin === undefined)
|
|
156
|
+
continue;
|
|
157
|
+
paths.push({ kind: 'sign-in', entry });
|
|
158
|
+
}
|
|
159
|
+
return paths;
|
|
160
|
+
}
|
|
52
161
|
/**
|
|
53
162
|
* The full list, detected first and in the order discovery produced.
|
|
54
163
|
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
164
|
+
* A vendor takes the position of the first provider detected for it, so the
|
|
165
|
+
* detected block keeps discovery's order and one vendor never appears in it
|
|
166
|
+
* twice. The block below keeps registry order — the order of the entries that
|
|
167
|
+
* can be set up, which is the order the screen drew those rows in before
|
|
168
|
+
* anything was grouped.
|
|
59
169
|
*
|
|
60
170
|
* `includeUnconfigured` is false on the signed-in-subscription screen, which
|
|
61
|
-
* offers only sessions that are already usable
|
|
62
|
-
* that screen's one sentence.
|
|
171
|
+
* offers only sessions that are already usable.
|
|
63
172
|
*/
|
|
64
173
|
export function providerListRows(detected, includeUnconfigured = true) {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
for (const entry of settableProviders()) {
|
|
73
|
-
if (known.has(entry.id))
|
|
174
|
+
const order = [];
|
|
175
|
+
const byVendor = new Map();
|
|
176
|
+
for (const provider of detected) {
|
|
177
|
+
const vendor = provider.entry.vendor;
|
|
178
|
+
const group = byVendor.get(vendor);
|
|
179
|
+
if (group) {
|
|
180
|
+
group.push(provider);
|
|
74
181
|
continue;
|
|
75
|
-
|
|
182
|
+
}
|
|
183
|
+
byVendor.set(vendor, [provider]);
|
|
184
|
+
order.push(vendor);
|
|
185
|
+
}
|
|
186
|
+
if (includeUnconfigured) {
|
|
187
|
+
for (const entry of settableProviders()) {
|
|
188
|
+
if (byVendor.has(entry.vendor))
|
|
189
|
+
continue;
|
|
190
|
+
byVendor.set(entry.vendor, []);
|
|
191
|
+
order.push(entry.vendor);
|
|
192
|
+
}
|
|
76
193
|
}
|
|
77
|
-
return
|
|
194
|
+
return order.map((vendor) => {
|
|
195
|
+
const group = byVendor.get(vendor) ?? [];
|
|
196
|
+
return {
|
|
197
|
+
vendor,
|
|
198
|
+
label: VENDOR_NAMES[vendor],
|
|
199
|
+
detected: group,
|
|
200
|
+
paths: vendorPaths(providerEntriesOfVendor(vendor), group, includeUnconfigured),
|
|
201
|
+
};
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Whether anything on this row can be used at all.
|
|
206
|
+
*
|
|
207
|
+
* False means the row is a discovery this build cannot construct — the one case
|
|
208
|
+
* where the screen may list something it must then refuse, rather than a row
|
|
209
|
+
* that needs a credential first.
|
|
210
|
+
*/
|
|
211
|
+
export function rowIsUsable(row) {
|
|
212
|
+
return row.paths.length > 0;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Whether entering the row has to ask how the operator means to use it.
|
|
216
|
+
*
|
|
217
|
+
* True exactly when the row has more than one way in — by the ways that exist,
|
|
218
|
+
* and not by how many registry ids they come from. One id can have two ways (a
|
|
219
|
+
* signed-in session beside an API key) and two ids can share one way, so
|
|
220
|
+
* counting ids answered the wrong question in both directions: it asked nothing
|
|
221
|
+
* about a vendor that had a session AND a key to choose between, and it would
|
|
222
|
+
* have asked twice about two ids that were one and the same key.
|
|
223
|
+
*
|
|
224
|
+
* A row with ONE way is not asked. That is the common case and the one the
|
|
225
|
+
* owner's rule protects: nothing stands between the operator and their model
|
|
226
|
+
* list when there is nothing to choose, and Enter goes on meaning what it has
|
|
227
|
+
* always meant — the detected session's models, or the field that takes the
|
|
228
|
+
* credential this row is missing.
|
|
229
|
+
*/
|
|
230
|
+
export function rowNeedsChoice(row) {
|
|
231
|
+
return row.paths.length > 1;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* The entry a typed credential would be taken for on this row, if there is one.
|
|
235
|
+
*
|
|
236
|
+
* Asked of the whole vendor and not of the row's paths, deliberately: `k` takes
|
|
237
|
+
* a credential for the provider under the cursor so it can be used for THIS
|
|
238
|
+
* session, which is meaningful even when that provider is already detected and
|
|
239
|
+
* therefore has no credential path — a detected vendor is not one whose key the
|
|
240
|
+
* operator may not replace for the next hour.
|
|
241
|
+
*
|
|
242
|
+
* `acceptsTypedCredential` alone, and not `constructible` beside it, because
|
|
243
|
+
* this is the question `k` has always asked of the highlighted row. A detected
|
|
244
|
+
* provider this build cannot construct still takes a typed credential, and
|
|
245
|
+
* answering "it does not" would be false about the provider to make a point
|
|
246
|
+
* about the build — which is the refusal the row itself gives when it is
|
|
247
|
+
* accepted, in the words `unsupportedProviderMessage` writes.
|
|
248
|
+
*/
|
|
249
|
+
export function typedCredentialEntry(row) {
|
|
250
|
+
if (!row)
|
|
251
|
+
return undefined;
|
|
252
|
+
return providerEntriesOfVendor(row.vendor).find((entry) => entry.acceptsTypedCredential);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* What a row with nothing detected is missing, named as the thing to act on.
|
|
256
|
+
*
|
|
257
|
+
* Null for a vendor whose members take no typed credential — a local server, or
|
|
258
|
+
* a vendor this build cannot construct — because those rows have a source
|
|
259
|
+
* column that says something else and a sentence here would name a variable
|
|
260
|
+
* nobody can use.
|
|
261
|
+
*/
|
|
262
|
+
export function rowCredentialNeed(row) {
|
|
263
|
+
const entry = typedCredentialEntry(row);
|
|
264
|
+
return entry ? credentialNeed(entry) : null;
|
|
78
265
|
}
|
|
79
266
|
/**
|
|
80
267
|
* What an unconfigured row is missing, named as the thing to act on.
|
|
@@ -96,6 +283,17 @@ export function credentialNeed(entry) {
|
|
|
96
283
|
return 'needs a credential';
|
|
97
284
|
return entry.requiresApiKey ? `needs ${envName}` : `${envName} optional`;
|
|
98
285
|
}
|
|
286
|
+
/** Whether a row is about a given provider id — detected there, or a way in. */
|
|
287
|
+
export function rowHasProvider(row, id) {
|
|
288
|
+
return (row.detected.some((provider) => provider.entry.id === id) ||
|
|
289
|
+
row.paths.some((path) => pathProviderId(path) === id));
|
|
290
|
+
}
|
|
291
|
+
/** The index of the row holding a provider, or -1 when no row does. */
|
|
292
|
+
export function rowIndexOfProvider(rows, id) {
|
|
293
|
+
if (id === null || id === undefined)
|
|
294
|
+
return -1;
|
|
295
|
+
return rows.findIndex((row) => rowHasProvider(row, id));
|
|
296
|
+
}
|
|
99
297
|
/**
|
|
100
298
|
* Where the cursor starts.
|
|
101
299
|
*
|
|
@@ -107,19 +305,17 @@ export function credentialNeed(entry) {
|
|
|
107
305
|
* `detected`, so it used to fall through to row 1: the picker opened saying
|
|
108
306
|
* "no credential found" for the saved provider with the cursor elsewhere. Now the
|
|
109
307
|
* highlighted row IS the row that needs the key, which is also the row `k`
|
|
110
|
-
* targets.
|
|
308
|
+
* targets. Both lookups ask the row, not the vendor: a saved `codex` and a
|
|
309
|
+
* saved subscription id and a saved key id are the same row, and either one
|
|
310
|
+
* lands the cursor on it.
|
|
111
311
|
*/
|
|
112
312
|
export function initialProviderRow(rows, currentProvider, keyEntryFor) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const at = rows.findIndex((row) => rowProviderId(row) === keyEntryFor);
|
|
120
|
-
if (at >= 0)
|
|
121
|
-
return at;
|
|
122
|
-
}
|
|
313
|
+
const current = rowIndexOfProvider(rows, currentProvider);
|
|
314
|
+
if (current >= 0)
|
|
315
|
+
return current;
|
|
316
|
+
const entry = rowIndexOfProvider(rows, keyEntryFor);
|
|
317
|
+
if (entry >= 0)
|
|
318
|
+
return entry;
|
|
123
319
|
return 0;
|
|
124
320
|
}
|
|
125
321
|
//# sourceMappingURL=provider-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-list.js","sourceRoot":"","sources":["../../src/tui/provider-list.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider-list.js","sourceRoot":"","sources":["../../src/tui/provider-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type TurnLimitsAction } from './turn-limits-settings.js';
|
|
2
2
|
/**
|
|
3
3
|
* Slash command registry + parser. Pure logic — no React. Unit-tested.
|
|
4
4
|
*
|
|
@@ -23,11 +23,10 @@ import { type RunLimitsAction } from './run-limits-settings.js';
|
|
|
23
23
|
* would put the answer
|
|
24
24
|
* to "does block 4 exist" in two places at once.
|
|
25
25
|
*/
|
|
26
|
-
import { type AuthorizationRule, type CostInfo, type HostCommandOutcome, type ReasoningEffort, type SerializableHostCommand, type
|
|
26
|
+
import { type AuthorizationRule, type CostInfo, type HostCommandOutcome, type MemoryType, type ReasoningEffort, type SerializableHostCommand, type SessionTokenBudgetSummary } from '@namzu/sdk';
|
|
27
27
|
import { type ConfigDebugSnapshot } from '../config/debug.js';
|
|
28
28
|
import type { HooksConfig } from '../config/schema.js';
|
|
29
29
|
import type { SandboxSummary } from '../context/sandbox.js';
|
|
30
|
-
import type { OrchestrationRun } from '../integrations/subagents/runs.js';
|
|
31
30
|
import { type PermissionMode } from '../permissions/mode.js';
|
|
32
31
|
import { type UserCommand } from '../user-commands/store.js';
|
|
33
32
|
/** One row in the interactive `/help` command palette. */
|
|
@@ -48,16 +47,16 @@ export type SlashAction = {
|
|
|
48
47
|
kind: 'command-picker';
|
|
49
48
|
commands: readonly CommandPickerEntry[];
|
|
50
49
|
}
|
|
51
|
-
/**
|
|
52
|
-
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
/** List past and running orchestration runs; App reads live state and saved evidence. */
|
|
50
|
+
/**
|
|
51
|
+
* `/agents [running|available|batches]`, answered by the delegation UI's
|
|
52
|
+
* `agentsSlashCommand` — App supplies the live monitor and saved batches.
|
|
53
|
+
*/
|
|
56
54
|
| {
|
|
57
|
-
kind: '
|
|
55
|
+
kind: 'agents';
|
|
56
|
+
args: readonly string[];
|
|
58
57
|
} | {
|
|
59
58
|
kind: 'settings-picker';
|
|
60
|
-
} |
|
|
59
|
+
} | TurnLimitsAction | {
|
|
61
60
|
kind: 'provider-setup';
|
|
62
61
|
} | {
|
|
63
62
|
kind: 'goal-picker';
|
|
@@ -124,8 +123,14 @@ export type SlashAction = {
|
|
|
124
123
|
kind: 'remember';
|
|
125
124
|
text: string;
|
|
126
125
|
scope: 'project' | 'user';
|
|
126
|
+
/** Stored-memory type for a project note; `project` when absent. */
|
|
127
|
+
memoryType?: MemoryType;
|
|
127
128
|
} | {
|
|
128
129
|
kind: 'show-memory';
|
|
130
|
+
}
|
|
131
|
+
/** Move the project's curated `#note`-shaped bullets into stored memory. */
|
|
132
|
+
| {
|
|
133
|
+
kind: 'import-notes';
|
|
129
134
|
} | {
|
|
130
135
|
kind: 'list-skills';
|
|
131
136
|
} | {
|
|
@@ -140,6 +145,14 @@ export type SlashAction = {
|
|
|
140
145
|
} | {
|
|
141
146
|
kind: 'resume';
|
|
142
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Close this conversation's paused or interrupted turn without resuming it,
|
|
150
|
+
* so the next prompt can begin one. `reason` is recorded on the turn.
|
|
151
|
+
*/
|
|
152
|
+
| {
|
|
153
|
+
kind: 'abandon';
|
|
154
|
+
reason: string;
|
|
155
|
+
}
|
|
143
156
|
/**
|
|
144
157
|
* Name this conversation, open its name editor, or take the name away.
|
|
145
158
|
*
|
|
@@ -235,7 +248,7 @@ export type SlashAction = {
|
|
|
235
248
|
args: readonly string[];
|
|
236
249
|
}
|
|
237
250
|
/**
|
|
238
|
-
* Record a judgment on the
|
|
251
|
+
* Record a judgment on the turn's last assistant message.
|
|
239
252
|
*
|
|
240
253
|
* Carries the id rather than leaving App to re-derive it: the command
|
|
241
254
|
* has already decided there IS one, and re-deriving would open a window
|
|
@@ -366,13 +379,13 @@ export interface SlashContext {
|
|
|
366
379
|
* a question someone asked on purpose.
|
|
367
380
|
*/
|
|
368
381
|
readonly usage: {
|
|
369
|
-
readonly budget?:
|
|
382
|
+
readonly budget?: SessionTokenBudgetSummary;
|
|
370
383
|
readonly totalTokens: number;
|
|
371
384
|
readonly cost: CostInfo;
|
|
372
385
|
/**
|
|
373
|
-
* How full the context is, when the
|
|
386
|
+
* How full the context is, when the turn knows: the numerator and the
|
|
374
387
|
* window with their provenance, from the `usage` event. Absent when
|
|
375
|
-
* the
|
|
388
|
+
* the turn resolved no window. Printed here, on request, rather than in
|
|
376
389
|
* the footer — the persistent gauge was removed on purpose for a
|
|
377
390
|
* quieter frame, and `/cost` is where a person asks.
|
|
378
391
|
*/
|
|
@@ -443,7 +456,7 @@ export interface SlashContext {
|
|
|
443
456
|
*/
|
|
444
457
|
readonly builtins?: readonly SlashCommand[];
|
|
445
458
|
/**
|
|
446
|
-
* The last assistant message this
|
|
459
|
+
* The last assistant message this turn produced, or `null` before there
|
|
447
460
|
* is one.
|
|
448
461
|
*
|
|
449
462
|
* A function, like every other field here that moves while namzu runs —
|
|
@@ -576,35 +589,11 @@ export declare function initPrompt(instructionFiles: readonly string[]): string;
|
|
|
576
589
|
export declare function renderHooks(hooks: HooksConfig | undefined): string;
|
|
577
590
|
/** The session's background jobs, as an operator would ask about them. */
|
|
578
591
|
export declare function renderJobs(jobs: ReturnType<SlashContext['jobs']>): string;
|
|
579
|
-
/**
|
|
580
|
-
* Runs shown newest first, bounded the way {@link DelegationHistory}'s own
|
|
581
|
-
* reads are: a page an operator can actually read, plus an honest count of
|
|
582
|
-
* what did not fit rather than a listing that quietly grows with the whole
|
|
583
|
-
* estate.
|
|
584
|
-
*/
|
|
585
|
-
export declare const MAX_LISTED_ORCHESTRATION_RUNS = 20;
|
|
586
|
-
export interface OrchestrationRunsListing {
|
|
587
|
-
readonly runs: readonly OrchestrationRun[];
|
|
588
|
-
readonly omitted: number;
|
|
589
|
-
}
|
|
590
|
-
/**
|
|
591
|
-
* Merges a conversation's still-running runs with its finished ones into the
|
|
592
|
-
* one list `/agents runs` shows.
|
|
593
|
-
*
|
|
594
|
-
* A run id named by both sources keeps its LIVE row and drops the disk one:
|
|
595
|
-
* the live monitor is the fresher account of a run this process can still
|
|
596
|
-
* watch directly, and the disk copy of that same id can only be a run.json
|
|
597
|
-
* still being written to — never authority over a run its own process is
|
|
598
|
-
* still reporting on live.
|
|
599
|
-
*/
|
|
600
|
-
export declare function combineOrchestrationRuns(live: readonly OrchestrationRun[], finished: readonly OrchestrationRun[]): OrchestrationRunsListing;
|
|
601
|
-
/** The honest empty answer for `/agents runs`; a non-empty listing opens the picker instead. */
|
|
602
|
-
export declare function renderAgentRuns(listing: OrchestrationRunsListing): string | undefined;
|
|
603
592
|
export declare function renderContext(usage: SlashContext['usage'], compaction: CompactionSummary | null, details?: boolean): string;
|
|
604
593
|
export declare function renderCost(usage: SlashContext['usage'], compaction?: CompactionSummary | null, details?: boolean): string;
|
|
605
594
|
/** What decides a tool call, in the order it actually decides it. */
|
|
606
595
|
/**
|
|
607
|
-
* One page holding both halves of what a
|
|
596
|
+
* One page holding both halves of what a turn may do.
|
|
608
597
|
*
|
|
609
598
|
* They are separate mechanisms and they answer separate questions — where a
|
|
610
599
|
* write may land, and whether anyone is asked first — and neither implies the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slashCommands.d.ts","sourceRoot":"","sources":["../../src/tui/slashCommands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slashCommands.d.ts","sourceRoot":"","sources":["../../src/tui/slashCommands.ts"],"names":[],"mappings":"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"}
|