@pentoshi/clai 3.5.1 → 3.7.2
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/README.md +1 -1
- package/dist/agent/compaction-summary.d.ts +17 -0
- package/dist/agent/compaction-summary.js +64 -0
- package/dist/agent/compaction-summary.js.map +1 -0
- package/dist/agent/confirm-port.d.ts +3 -1
- package/dist/agent/confirm-port.js +5 -1
- package/dist/agent/confirm-port.js.map +1 -1
- package/dist/agent/context-manager.js +53 -24
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/events.d.ts +6 -0
- package/dist/agent/evidence-governor.d.ts +37 -0
- package/dist/agent/evidence-governor.js +70 -0
- package/dist/agent/evidence-governor.js.map +1 -0
- package/dist/agent/loop-guard.d.ts +29 -9
- package/dist/agent/loop-guard.js +117 -26
- package/dist/agent/loop-guard.js.map +1 -1
- package/dist/agent/must-continue.d.ts +56 -0
- package/dist/agent/must-continue.js +240 -0
- package/dist/agent/must-continue.js.map +1 -0
- package/dist/agent/outcomes.d.ts +101 -0
- package/dist/agent/outcomes.js +359 -0
- package/dist/agent/outcomes.js.map +1 -0
- package/dist/agent/plan-decision.d.ts +33 -0
- package/dist/agent/plan-decision.js +104 -0
- package/dist/agent/plan-decision.js.map +1 -0
- package/dist/agent/plan-tool.d.ts +34 -0
- package/dist/agent/plan-tool.js +594 -76
- package/dist/agent/plan-tool.js.map +1 -1
- package/dist/agent/project-root.d.ts +33 -0
- package/dist/agent/project-root.js +161 -0
- package/dist/agent/project-root.js.map +1 -0
- package/dist/agent/prompt-composer.d.ts +21 -0
- package/dist/agent/prompt-composer.js +46 -0
- package/dist/agent/prompt-composer.js.map +1 -0
- package/dist/agent/runner.d.ts +11 -1
- package/dist/agent/runner.js +1915 -886
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/scope-context.d.ts +3 -0
- package/dist/agent/scope-context.js +24 -0
- package/dist/agent/scope-context.js.map +1 -0
- package/dist/agent/scratch-write.d.ts +4 -0
- package/dist/agent/scratch-write.js +54 -0
- package/dist/agent/scratch-write.js.map +1 -0
- package/dist/agent/session-policy.d.ts +7 -0
- package/dist/agent/session-policy.js +61 -0
- package/dist/agent/session-policy.js.map +1 -1
- package/dist/agent/session-state.d.ts +41 -0
- package/dist/agent/session-state.js +107 -0
- package/dist/agent/session-state.js.map +1 -0
- package/dist/agent/step-budget.d.ts +14 -0
- package/dist/agent/step-budget.js +26 -0
- package/dist/agent/step-budget.js.map +1 -0
- package/dist/agent/task-analyzer.d.ts +12 -3
- package/dist/agent/task-analyzer.js +263 -23
- package/dist/agent/task-analyzer.js.map +1 -1
- package/dist/agent/task-evidence.d.ts +173 -0
- package/dist/agent/task-evidence.js +802 -0
- package/dist/agent/task-evidence.js.map +1 -0
- package/dist/agent/task-plan.d.ts +57 -0
- package/dist/agent/task-plan.js +147 -1
- package/dist/agent/task-plan.js.map +1 -1
- package/dist/agent/tool-call-parser.d.ts +19 -11
- package/dist/agent/tool-call-parser.js +96 -71
- package/dist/agent/tool-call-parser.js.map +1 -1
- package/dist/agent/tool-history.d.ts +34 -0
- package/dist/agent/tool-history.js +200 -0
- package/dist/agent/tool-history.js.map +1 -0
- package/dist/agent/tool-output-formatting.d.ts +13 -1
- package/dist/agent/tool-output-formatting.js +75 -22
- package/dist/agent/tool-output-formatting.js.map +1 -1
- package/dist/agent/turn-outcome.d.ts +11 -0
- package/dist/agent/turn-outcome.js +17 -0
- package/dist/agent/turn-outcome.js.map +1 -0
- package/dist/agent/turn-state.d.ts +11 -0
- package/dist/agent/turn-state.js +28 -0
- package/dist/agent/turn-state.js.map +1 -0
- package/dist/agent/workspace-orient.d.ts +75 -0
- package/dist/agent/workspace-orient.js +509 -0
- package/dist/agent/workspace-orient.js.map +1 -0
- package/dist/app/adapters/agent-event-adapter.d.ts +2 -13
- package/dist/app/adapters/agent-event-adapter.js +63 -25
- package/dist/app/adapters/agent-event-adapter.js.map +1 -1
- package/dist/app/adapters/current-agent-adapter.d.ts +0 -5
- package/dist/app/adapters/current-agent-adapter.js +4 -7
- package/dist/app/adapters/current-agent-adapter.js.map +1 -1
- package/dist/app/adapters/current-jobs-adapter.js +1 -0
- package/dist/app/adapters/current-jobs-adapter.js.map +1 -1
- package/dist/app/adapters/current-terminal-adapter.d.ts +0 -7
- package/dist/app/adapters/current-terminal-adapter.js +0 -7
- package/dist/app/adapters/current-terminal-adapter.js.map +1 -1
- package/dist/app/adapters/current-updates-adapter.d.ts +0 -5
- package/dist/app/adapters/current-updates-adapter.js +0 -5
- package/dist/app/adapters/current-updates-adapter.js.map +1 -1
- package/dist/app/adapters/in-memory-clipboard-adapter.d.ts +0 -5
- package/dist/app/adapters/in-memory-clipboard-adapter.js +0 -5
- package/dist/app/adapters/in-memory-clipboard-adapter.js.map +1 -1
- package/dist/app/commands/command.d.ts +0 -5
- package/dist/app/commands/command.js.map +1 -1
- package/dist/app/commands/registry.d.ts +0 -14
- package/dist/app/commands/registry.js +0 -20
- package/dist/app/commands/registry.js.map +1 -1
- package/dist/app/controllers/disposable.d.ts +0 -5
- package/dist/app/controllers/disposable.js +0 -5
- package/dist/app/controllers/disposable.js.map +1 -1
- package/dist/app/controllers/job-controller.d.ts +1 -5
- package/dist/app/controllers/job-controller.js +0 -4
- package/dist/app/controllers/job-controller.js.map +1 -1
- package/dist/app/controllers/plan-controller.d.ts +5 -8
- package/dist/app/controllers/plan-controller.js +30 -12
- package/dist/app/controllers/plan-controller.js.map +1 -1
- package/dist/app/controllers/session-controller.d.ts +17 -32
- package/dist/app/controllers/session-controller.js +60 -35
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/app/controllers/turn-controller.d.ts +2 -6
- package/dist/app/controllers/turn-controller.js +8 -8
- package/dist/app/controllers/turn-controller.js.map +1 -1
- package/dist/app/events/app-event.d.ts +4 -7
- package/dist/app/events/app-event.js +0 -6
- package/dist/app/events/app-event.js.map +1 -1
- package/dist/app/events/event-buffer.d.ts +6 -17
- package/dist/app/events/event-buffer.js +27 -24
- package/dist/app/events/event-buffer.js.map +1 -1
- package/dist/app/events/sequencer.d.ts +0 -9
- package/dist/app/events/sequencer.js +0 -4
- package/dist/app/events/sequencer.js.map +1 -1
- package/dist/app/ports/agent-port.d.ts +13 -3
- package/dist/app/ports/clipboard-port.d.ts +0 -5
- package/dist/app/ports/confirm-port.d.ts +0 -7
- package/dist/app/ports/jobs-port.d.ts +2 -5
- package/dist/app/ports/persistence-port.d.ts +0 -4
- package/dist/app/ports/secret-port.d.ts +0 -5
- package/dist/app/ports/terminal-port.d.ts +0 -6
- package/dist/app/ports/updates-port.d.ts +0 -4
- package/dist/attachments/service.d.ts +29 -0
- package/dist/attachments/service.js +47 -0
- package/dist/attachments/service.js.map +1 -0
- package/dist/commands/doctor.js +3 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/providers.js +0 -3
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/search-providers.d.ts +0 -33
- package/dist/commands/search-providers.js +0 -33
- package/dist/commands/search-providers.js.map +1 -1
- package/dist/commands/update.js +1 -9
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +22 -42
- package/dist/index.js.map +1 -1
- package/dist/llm/adapters/anthropic-tools.d.ts +99 -0
- package/dist/llm/adapters/anthropic-tools.js +225 -0
- package/dist/llm/adapters/anthropic-tools.js.map +1 -0
- package/dist/llm/adapters/gemini-tools.d.ts +54 -0
- package/dist/llm/adapters/gemini-tools.js +139 -0
- package/dist/llm/adapters/gemini-tools.js.map +1 -0
- package/dist/llm/adapters/ollama-tools.d.ts +18 -0
- package/dist/llm/adapters/ollama-tools.js +58 -0
- package/dist/llm/adapters/ollama-tools.js.map +1 -0
- package/dist/llm/adapters/openai-tools.d.ts +39 -0
- package/dist/llm/adapters/openai-tools.js +71 -0
- package/dist/llm/adapters/openai-tools.js.map +1 -0
- package/dist/llm/agentrouter.js +23 -4
- package/dist/llm/agentrouter.js.map +1 -1
- package/dist/llm/anthropic.js +93 -92
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/aws-mantle.js +93 -56
- package/dist/llm/aws-mantle.js.map +1 -1
- package/dist/llm/bynara.js +23 -4
- package/dist/llm/bynara.js.map +1 -1
- package/dist/llm/capabilities.d.ts +13 -6
- package/dist/llm/capabilities.js +113 -13
- package/dist/llm/capabilities.js.map +1 -1
- package/dist/llm/gemini.js +63 -48
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/groq.js +23 -10
- package/dist/llm/groq.js.map +1 -1
- package/dist/llm/http.d.ts +22 -34
- package/dist/llm/http.js +97 -69
- package/dist/llm/http.js.map +1 -1
- package/dist/llm/kimchi.js +23 -4
- package/dist/llm/kimchi.js.map +1 -1
- package/dist/llm/nvidia.js +23 -4
- package/dist/llm/nvidia.js.map +1 -1
- package/dist/llm/ollama.js +49 -31
- package/dist/llm/ollama.js.map +1 -1
- package/dist/llm/openai.js +23 -4
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/openrouter.js +23 -4
- package/dist/llm/openrouter.js.map +1 -1
- package/dist/llm/qwen-cloud.js +23 -4
- package/dist/llm/qwen-cloud.js.map +1 -1
- package/dist/llm/router.d.ts +0 -6
- package/dist/llm/router.js +48 -21
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/tool-protocol.d.ts +67 -0
- package/dist/llm/tool-protocol.js +278 -0
- package/dist/llm/tool-protocol.js.map +1 -0
- package/dist/modes/agent.d.ts +2 -1
- package/dist/modes/agent.js +4 -2
- package/dist/modes/agent.js.map +1 -1
- package/dist/modes/ask.d.ts +0 -18
- package/dist/modes/ask.js +71 -66
- package/dist/modes/ask.js.map +1 -1
- package/dist/os/cwd.d.ts +0 -21
- package/dist/os/cwd.js +0 -24
- package/dist/os/cwd.js.map +1 -1
- package/dist/os/pkgmgr.js +0 -6
- package/dist/os/pkgmgr.js.map +1 -1
- package/dist/prompts/index.d.ts +17 -21
- package/dist/prompts/index.js +131 -259
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/system.agent.md +242 -0
- package/dist/prompts/system.ask.md +56 -0
- package/dist/repl/prompt-line.js +0 -36
- package/dist/repl/prompt-line.js.map +1 -1
- package/dist/repl/slash-commands.d.ts +0 -9
- package/dist/repl/slash-commands.js +2 -23
- package/dist/repl/slash-commands.js.map +1 -1
- package/dist/repl.d.ts +5 -0
- package/dist/repl.js +176 -55
- package/dist/repl.js.map +1 -1
- package/dist/safety/classifier.js +17 -9
- package/dist/safety/classifier.js.map +1 -1
- package/dist/safety/engagement-policy.d.ts +46 -0
- package/dist/safety/engagement-policy.js +198 -0
- package/dist/safety/engagement-policy.js.map +1 -0
- package/dist/store/config.d.ts +7 -0
- package/dist/store/config.js +1 -0
- package/dist/store/config.js.map +1 -1
- package/dist/store/engagement.d.ts +115 -0
- package/dist/store/engagement.js +278 -0
- package/dist/store/engagement.js.map +1 -0
- package/dist/store/logs.d.ts +5 -0
- package/dist/store/logs.js +52 -2
- package/dist/store/logs.js.map +1 -1
- package/dist/store/plan.d.ts +59 -5
- package/dist/store/plan.js +182 -8
- package/dist/store/plan.js.map +1 -1
- package/dist/store/scope.d.ts +4 -1
- package/dist/store/scope.js +2 -2
- package/dist/store/scope.js.map +1 -1
- package/dist/tools/capabilities.d.ts +2 -0
- package/dist/tools/capabilities.js +101 -6
- package/dist/tools/capabilities.js.map +1 -1
- package/dist/tools/command-intent.d.ts +1 -0
- package/dist/tools/command-intent.js +31 -0
- package/dist/tools/command-intent.js.map +1 -1
- package/dist/tools/definitions.d.ts +20 -0
- package/dist/tools/definitions.js +578 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/elevated-shell.d.ts +60 -0
- package/dist/tools/elevated-shell.js +233 -0
- package/dist/tools/elevated-shell.js.map +1 -0
- package/dist/tools/file-diff.d.ts +125 -0
- package/dist/tools/file-diff.js +495 -0
- package/dist/tools/file-diff.js.map +1 -0
- package/dist/tools/fs.d.ts +11 -13
- package/dist/tools/fs.js +280 -80
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/http.d.ts +15 -0
- package/dist/tools/http.js +202 -61
- package/dist/tools/http.js.map +1 -1
- package/dist/tools/jobs.d.ts +71 -10
- package/dist/tools/jobs.js +403 -124
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/net-ping-sweep.js +69 -16
- package/dist/tools/net-ping-sweep.js.map +1 -1
- package/dist/tools/nmap-runner.d.ts +19 -7
- package/dist/tools/nmap-runner.js +182 -80
- package/dist/tools/nmap-runner.js.map +1 -1
- package/dist/tools/pentest-workflows.d.ts +8 -0
- package/dist/tools/pentest-workflows.js +71 -0
- package/dist/tools/pentest-workflows.js.map +1 -0
- package/dist/tools/registry.d.ts +9 -0
- package/dist/tools/registry.js +272 -63
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/shell.d.ts +3 -0
- package/dist/tools/shell.js +35 -13
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/tool-types.d.ts +11 -0
- package/dist/tools/validate.d.ts +11 -0
- package/dist/tools/validate.js +53 -0
- package/dist/tools/validate.js.map +1 -1
- package/dist/tools/web/search.js +48 -4
- package/dist/tools/web/search.js.map +1 -1
- package/dist/tui-v2/app/App.js +25 -39
- package/dist/tui-v2/app/App.js.map +1 -1
- package/dist/tui-v2/app/command-handlers.js +20 -1
- package/dist/tui-v2/app/command-handlers.js.map +1 -1
- package/dist/tui-v2/app/commands/picker-commands.js +3 -0
- package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
- package/dist/tui-v2/app/commands/session-commands.js +5 -0
- package/dist/tui-v2/app/commands/session-commands.js.map +1 -1
- package/dist/tui-v2/app/plan-lifecycle.d.ts +25 -3
- package/dist/tui-v2/app/plan-lifecycle.js +87 -24
- package/dist/tui-v2/app/plan-lifecycle.js.map +1 -1
- package/dist/tui-v2/bootstrap/patch-opentui-text.d.ts +6 -0
- package/dist/tui-v2/bootstrap/patch-opentui-text.js +53 -0
- package/dist/tui-v2/bootstrap/patch-opentui-text.js.map +1 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.js +7 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
- package/dist/tui-v2/components/jobs/jobs-panel.js +23 -14
- package/dist/tui-v2/components/jobs/jobs-panel.js.map +1 -1
- package/dist/tui-v2/components/modal/confirm-modal.d.ts +1 -1
- package/dist/tui-v2/components/modal/confirm-modal.js +18 -7
- package/dist/tui-v2/components/modal/confirm-modal.js.map +1 -1
- package/dist/tui-v2/components/overlay/overlay-host.js +1 -1
- package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -1
- package/dist/tui-v2/components/pager/pager.d.ts +6 -0
- package/dist/tui-v2/components/pager/pager.js +313 -67
- package/dist/tui-v2/components/pager/pager.js.map +1 -1
- package/dist/tui-v2/components/status/status-line.d.ts +9 -0
- package/dist/tui-v2/components/status/status-line.js +17 -3
- package/dist/tui-v2/components/status/status-line.js.map +1 -1
- package/dist/tui-v2/components/transcript/assistant-message.js +1 -1
- package/dist/tui-v2/components/transcript/assistant-message.js.map +1 -1
- package/dist/tui-v2/components/transcript/compacted-row.js +1 -1
- package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -1
- package/dist/tui-v2/components/transcript/tool-card.d.ts +9 -1
- package/dist/tui-v2/components/transcript/tool-card.js +115 -10
- package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-row.js +2 -2
- package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -1
- package/dist/tui-v2/composer/composer-editor.js +16 -0
- package/dist/tui-v2/composer/composer-editor.js.map +1 -1
- package/dist/tui-v2/controllers/overlay-controller.d.ts +16 -2
- package/dist/tui-v2/controllers/overlay-controller.js +92 -12
- package/dist/tui-v2/controllers/overlay-controller.js.map +1 -1
- package/dist/tui-v2/rendering/artifact-pager-source.d.ts +19 -0
- package/dist/tui-v2/rendering/artifact-pager-source.js +103 -0
- package/dist/tui-v2/rendering/artifact-pager-source.js.map +1 -0
- package/dist/tui-v2/rendering/file-diff-view.d.ts +63 -0
- package/dist/tui-v2/rendering/file-diff-view.js +263 -0
- package/dist/tui-v2/rendering/file-diff-view.js.map +1 -0
- package/dist/tui-v2/rendering/open-tool-output.d.ts +9 -1
- package/dist/tui-v2/rendering/open-tool-output.js +65 -12
- package/dist/tui-v2/rendering/open-tool-output.js.map +1 -1
- package/dist/tui-v2/rendering/pager-chrome.d.ts +12 -0
- package/dist/tui-v2/rendering/pager-chrome.js +56 -0
- package/dist/tui-v2/rendering/pager-chrome.js.map +1 -0
- package/dist/tui-v2/rendering/plan-view.js +1 -1
- package/dist/tui-v2/rendering/plan-view.js.map +1 -1
- package/dist/tui-v2/rendering/syntax-highlight.d.ts +37 -0
- package/dist/tui-v2/rendering/syntax-highlight.js +1303 -0
- package/dist/tui-v2/rendering/syntax-highlight.js.map +1 -0
- package/dist/tui-v2/rendering/theme.d.ts +28 -0
- package/dist/tui-v2/rendering/theme.js +28 -0
- package/dist/tui-v2/rendering/theme.js.map +1 -1
- package/dist/tui-v2/rendering/tool-presenter.d.ts +11 -1
- package/dist/tui-v2/rendering/tool-presenter.js +101 -5
- package/dist/tui-v2/rendering/tool-presenter.js.map +1 -1
- package/dist/tui-v2/state/transcript-hydrate.js +5 -0
- package/dist/tui-v2/state/transcript-hydrate.js.map +1 -1
- package/dist/tui-v2/state/transcript-reducer.js +12 -2
- package/dist/tui-v2/state/transcript-reducer.js.map +1 -1
- package/dist/tui-v2/state/transcript-store.d.ts +7 -0
- package/dist/tui-v2/state/transcript-store.js +46 -0
- package/dist/tui-v2/state/transcript-store.js.map +1 -1
- package/dist/tui-v2/state/transcript-types.d.ts +12 -0
- package/dist/tui-v2/state/transcript-types.js +9 -0
- package/dist/tui-v2/state/transcript-types.js.map +1 -1
- package/dist/types.d.ts +75 -1
- package/dist/ui/ansi-box.d.ts +2 -0
- package/dist/ui/ansi-box.js +8 -1
- package/dist/ui/ansi-box.js.map +1 -1
- package/dist/ui/mentions.d.ts +6 -0
- package/dist/ui/mentions.js +50 -12
- package/dist/ui/mentions.js.map +1 -1
- package/dist/ui/plan-pane.js +1 -1
- package/dist/ui/plan-pane.js.map +1 -1
- package/package.json +16 -11
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import { asPlanId, asToolCallId, } from "../events/app-event.js";
|
|
2
2
|
const STEP_STATUS = /^step (\d+)$/;
|
|
3
|
-
|
|
4
|
-
* Translates the legacy `AgentEvent` stream (the agent's unchanged emitter
|
|
5
|
-
* contract) into versioned `AppEvent` envelopes (V2-021). Pure translation: it
|
|
6
|
-
* mints no side effects beyond appending tool output to the injected spool and
|
|
7
|
-
* emitting envelopes. Given the same input events, id factory, and clock it
|
|
8
|
-
* produces byte-identical output, which the replay contract test relies on.
|
|
9
|
-
*/
|
|
3
|
+
const QUIET_META_TOOLS = new Set(["plan.create", "task.update"]);
|
|
10
4
|
export class AgentEventAdapter {
|
|
11
5
|
sequencer;
|
|
12
6
|
spool;
|
|
13
7
|
emit;
|
|
14
8
|
turnId;
|
|
9
|
+
bufferedMetaTools = new Map();
|
|
15
10
|
constructor(sequencer, spool, emit) {
|
|
16
11
|
this.sequencer = sequencer;
|
|
17
12
|
this.spool = spool;
|
|
@@ -19,12 +14,19 @@ export class AgentEventAdapter {
|
|
|
19
14
|
}
|
|
20
15
|
/** Bind subsequent events to a turn; pass undefined for session-level events. */
|
|
21
16
|
setTurn(turnId) {
|
|
17
|
+
if (this.turnId !== turnId)
|
|
18
|
+
this.bufferedMetaTools.clear();
|
|
22
19
|
this.turnId = turnId;
|
|
23
20
|
}
|
|
24
21
|
ingest(event) {
|
|
25
22
|
switch (event.type) {
|
|
26
23
|
case "turn-start":
|
|
27
|
-
this.push("turn-started", {
|
|
24
|
+
this.push("turn-started", {
|
|
25
|
+
prompt: event.prompt,
|
|
26
|
+
...(event.displayPrompt !== undefined
|
|
27
|
+
? { displayPrompt: event.displayPrompt }
|
|
28
|
+
: {}),
|
|
29
|
+
});
|
|
28
30
|
return;
|
|
29
31
|
case "status": {
|
|
30
32
|
const match = STEP_STATUS.exec(event.text);
|
|
@@ -55,42 +57,76 @@ export class AgentEventAdapter {
|
|
|
55
57
|
case "notice":
|
|
56
58
|
this.push("notice", { level: event.level, text: event.text });
|
|
57
59
|
return;
|
|
58
|
-
case "tool-call":
|
|
60
|
+
case "tool-call": {
|
|
61
|
+
const toolCallId = this.toolCallId(event.id);
|
|
62
|
+
if (QUIET_META_TOOLS.has(event.name)) {
|
|
63
|
+
this.bufferedMetaTools.set(toolCallId, {
|
|
64
|
+
name: event.name,
|
|
65
|
+
argsDisplay: event.argsDisplay,
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
59
69
|
this.push("tool-call", {
|
|
60
|
-
toolCallId
|
|
70
|
+
toolCallId,
|
|
61
71
|
name: event.name,
|
|
62
72
|
argsDisplay: event.argsDisplay,
|
|
63
73
|
});
|
|
64
74
|
return;
|
|
65
|
-
|
|
75
|
+
}
|
|
76
|
+
case "tool-start": {
|
|
77
|
+
const toolCallId = this.toolCallId(event.id);
|
|
78
|
+
if (this.bufferedMetaTools.has(toolCallId))
|
|
79
|
+
return;
|
|
66
80
|
this.push("tool-started", {
|
|
67
|
-
toolCallId
|
|
81
|
+
toolCallId,
|
|
68
82
|
});
|
|
69
83
|
return;
|
|
84
|
+
}
|
|
70
85
|
case "tool-output": {
|
|
71
86
|
const id = this.toolCallId(event.id);
|
|
72
87
|
const ref = event.replace
|
|
73
88
|
? this.spool.replace(id, event.chunk)
|
|
74
89
|
: this.spool.append(id, event.chunk);
|
|
90
|
+
const buffered = this.bufferedMetaTools.get(id);
|
|
91
|
+
if (buffered) {
|
|
92
|
+
buffered.outputRef = ref;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
75
95
|
this.push("tool-output", { ref });
|
|
76
96
|
return;
|
|
77
97
|
}
|
|
78
|
-
case "tool-result":
|
|
98
|
+
case "tool-result": {
|
|
99
|
+
const toolCallId = this.toolCallId(event.id);
|
|
100
|
+
const buffered = this.bufferedMetaTools.get(toolCallId);
|
|
101
|
+
if (buffered) {
|
|
102
|
+
if (event.ok) {
|
|
103
|
+
this.bufferedMetaTools.delete(toolCallId);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
this.flushBufferedMetaTool(toolCallId, buffered);
|
|
107
|
+
}
|
|
79
108
|
this.push("tool-result", {
|
|
80
|
-
toolCallId
|
|
109
|
+
toolCallId,
|
|
81
110
|
ok: event.ok,
|
|
82
111
|
exitCode: event.exitCode,
|
|
83
112
|
summary: event.summary,
|
|
84
113
|
artifactPath: event.artifactPath,
|
|
114
|
+
...(event.fileChanges ? { fileChanges: event.fileChanges } : {}),
|
|
85
115
|
});
|
|
86
116
|
return;
|
|
87
|
-
|
|
117
|
+
}
|
|
118
|
+
case "tool-blocked": {
|
|
119
|
+
const toolCallId = this.toolCallId(event.id);
|
|
120
|
+
const buffered = this.bufferedMetaTools.get(toolCallId);
|
|
121
|
+
if (buffered)
|
|
122
|
+
this.flushBufferedMetaTool(toolCallId, buffered);
|
|
88
123
|
this.push("tool-blocked", {
|
|
89
|
-
toolCallId
|
|
124
|
+
toolCallId,
|
|
90
125
|
name: event.name,
|
|
91
126
|
reason: event.reason,
|
|
92
127
|
});
|
|
93
128
|
return;
|
|
129
|
+
}
|
|
94
130
|
case "plan-update":
|
|
95
131
|
this.push("plan-updated", {
|
|
96
132
|
planId: asPlanId(event.plan.sessionId),
|
|
@@ -129,18 +165,20 @@ export class AgentEventAdapter {
|
|
|
129
165
|
}
|
|
130
166
|
}
|
|
131
167
|
}
|
|
168
|
+
flushBufferedMetaTool(toolCallId, buffered) {
|
|
169
|
+
this.push("tool-call", {
|
|
170
|
+
toolCallId,
|
|
171
|
+
name: buffered.name,
|
|
172
|
+
argsDisplay: buffered.argsDisplay,
|
|
173
|
+
});
|
|
174
|
+
if (buffered.outputRef) {
|
|
175
|
+
this.push("tool-output", { ref: buffered.outputRef });
|
|
176
|
+
}
|
|
177
|
+
this.bufferedMetaTools.delete(toolCallId);
|
|
178
|
+
}
|
|
132
179
|
push(type, payload) {
|
|
133
|
-
// `build` returns a correctly typed AppEvent<K, ...>, but TypeScript cannot
|
|
134
|
-
// prove a generic member is assignable to the distributive `AnyAppEvent`
|
|
135
|
-
// union; the narrowing is sound because K ranges over the same keys.
|
|
136
180
|
this.emit(this.sequencer.build(type, payload, this.turnId));
|
|
137
181
|
}
|
|
138
|
-
/**
|
|
139
|
-
* Legacy agents restart their display counter at `tool-1` for every turn.
|
|
140
|
-
* It is only locally unique, while the transcript and output spool retain a
|
|
141
|
-
* whole session. Namespace it at the application boundary so tool rows and
|
|
142
|
-
* output stay correlated without ever reusing a semantic document id.
|
|
143
|
-
*/
|
|
144
182
|
toolCallId(sourceId) {
|
|
145
183
|
return asToolCallId(this.turnId ? `${this.turnId}:${sourceId}` : sourceId);
|
|
146
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-event-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/agent-event-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,YAAY,GAKb,MAAM,wBAAwB,CAAC;AAIhC,MAAM,WAAW,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-event-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/agent-event-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,2 @@
|
|
|
1
1
|
import type { AgentPort } from "../ports/agent-port.js";
|
|
2
|
-
/**
|
|
3
|
-
* Wraps the existing `runAgentLoop` behind `AgentPort` without altering agent
|
|
4
|
-
* semantics (CORE-001). Readonly request arrays are copied to the mutable
|
|
5
|
-
* shapes the runner expects.
|
|
6
|
-
*/
|
|
7
2
|
export declare function createCurrentAgentPort(): AgentPort;
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
* Wraps the existing `runAgentLoop` behind `AgentPort` without altering agent
|
|
4
|
-
* semantics (CORE-001). Readonly request arrays are copied to the mutable
|
|
5
|
-
* shapes the runner expects.
|
|
6
|
-
*/
|
|
1
|
+
import { runAgentTurn } from "../../agent/runner.js";
|
|
7
2
|
export function createCurrentAgentPort() {
|
|
8
3
|
return {
|
|
9
4
|
runTurn(request, handlers) {
|
|
10
|
-
return
|
|
5
|
+
return runAgentTurn(request.prompt, {
|
|
11
6
|
provider: request.provider,
|
|
12
7
|
model: request.model,
|
|
13
8
|
history: request.history ? [...request.history] : undefined,
|
|
@@ -20,6 +15,8 @@ export function createCurrentAgentPort() {
|
|
|
20
15
|
confirm: handlers.confirm,
|
|
21
16
|
requestSecret: handlers.requestSecret,
|
|
22
17
|
session: handlers.session,
|
|
18
|
+
mode: request.mode,
|
|
19
|
+
displayPrompt: request.displayPrompt,
|
|
23
20
|
});
|
|
24
21
|
},
|
|
25
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current-agent-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/current-agent-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"current-agent-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/current-agent-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,OAAO,CAAC,OAAO,EAAE,QAAQ;YACvB,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE;gBAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC3D,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;gBACxD,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -4,6 +4,7 @@ export function createCurrentJobsPort(manager = jobManager) {
|
|
|
4
4
|
return {
|
|
5
5
|
list: () => manager.listJobs(),
|
|
6
6
|
running: () => manager.getRunningJobs(),
|
|
7
|
+
recent: (limit) => manager.getRecentJobs(limit),
|
|
7
8
|
get: (id) => manager.getJob(id),
|
|
8
9
|
tail: (id, bytes) => manager.tailJob(id, bytes),
|
|
9
10
|
stop: (id) => manager.stopJob(id),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current-jobs-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/current-jobs-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,qBAAqB,CAAC;AAGlE,+DAA+D;AAC/D,MAAM,UAAU,qBAAqB,CAAC,UAAsB,UAAU;IACpE,OAAO;QACL,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE;QACvC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC;QAC/C,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;KAChE,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"current-jobs-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/current-jobs-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,qBAAqB,CAAC;AAGlE,+DAA+D;AAC/D,MAAM,UAAU,qBAAqB,CAAC,UAAsB,UAAU;IACpE,OAAO;QACL,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE;QACvC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;QAC/C,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC;QAC/C,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;KAChE,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,2 @@
|
|
|
1
1
|
import type { TerminalPort } from "../ports/terminal-port.js";
|
|
2
|
-
/**
|
|
3
|
-
* Reads terminal capabilities from the process streams. This adapter is the
|
|
4
|
-
* single sanctioned place to inspect the terminal; components receive
|
|
5
|
-
* dimensions/capabilities through it rather than reading `process.stdout`.
|
|
6
|
-
* `canDistinguishShiftEnter` is conservatively false until the renderer's
|
|
7
|
-
* keyboard-protocol detection (Phase 3/4) can prove otherwise.
|
|
8
|
-
*/
|
|
9
2
|
export declare function createCurrentTerminalPort(): TerminalPort;
|
|
@@ -7,13 +7,6 @@ function detectColorMode() {
|
|
|
7
7
|
return "256";
|
|
8
8
|
return process.stdout.isTTY ? "16" : "none";
|
|
9
9
|
}
|
|
10
|
-
/**
|
|
11
|
-
* Reads terminal capabilities from the process streams. This adapter is the
|
|
12
|
-
* single sanctioned place to inspect the terminal; components receive
|
|
13
|
-
* dimensions/capabilities through it rather than reading `process.stdout`.
|
|
14
|
-
* `canDistinguishShiftEnter` is conservatively false until the renderer's
|
|
15
|
-
* keyboard-protocol detection (Phase 3/4) can prove otherwise.
|
|
16
|
-
*/
|
|
17
10
|
export function createCurrentTerminalPort() {
|
|
18
11
|
return {
|
|
19
12
|
capabilities() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current-terminal-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/current-terminal-adapter.ts"],"names":[],"mappings":"AAMA,SAAS,eAAe;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACtD,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;QAAE,OAAO,WAAW,CAAC;IAC7E,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC;
|
|
1
|
+
{"version":3,"file":"current-terminal-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/current-terminal-adapter.ts"],"names":[],"mappings":"AAMA,SAAS,eAAe;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACtD,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;QAAE,OAAO,WAAW,CAAC;IAC7E,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC;AAGD,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,YAAY;YACV,OAAO;gBACL,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;gBACrC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;gBAC/B,SAAS,EAAE,eAAe,EAAE;gBAC5B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBACpC,wBAAwB,EAAE,KAAK;gBAC/B,aAAa,EAAE,IAAI;aACpB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,2 @@
|
|
|
1
1
|
import type { UpdatesPort } from "../ports/updates-port.js";
|
|
2
|
-
/**
|
|
3
|
-
* Backs `UpdatesPort` with the current package version. The latest-release
|
|
4
|
-
* lookup is injected so the port can be exercised without a network call and
|
|
5
|
-
* so the network policy stays owned by the caller.
|
|
6
|
-
*/
|
|
7
2
|
export declare function createCurrentUpdatesPort(fetchLatest?: () => Promise<string | undefined>): UpdatesPort;
|
|
@@ -9,11 +9,6 @@ function compareSemver(a, b) {
|
|
|
9
9
|
}
|
|
10
10
|
return 0;
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Backs `UpdatesPort` with the current package version. The latest-release
|
|
14
|
-
* lookup is injected so the port can be exercised without a network call and
|
|
15
|
-
* so the network policy stays owned by the caller.
|
|
16
|
-
*/
|
|
17
12
|
export function createCurrentUpdatesPort(fetchLatest) {
|
|
18
13
|
return {
|
|
19
14
|
async check() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current-updates-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/current-updates-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,SAAS,aAAa,CAAC,CAAS,EAAE,CAAS;IACzC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;
|
|
1
|
+
{"version":3,"file":"current-updates-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/current-updates-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,SAAS,aAAa,CAAC,CAAS,EAAE,CAAS;IACzC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAGD,MAAM,UAAU,wBAAwB,CACtC,WAA+C;IAE/C,OAAO;QACL,KAAK,CAAC,KAAK;YACT,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;YAC3C,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,OAAO;gBACL,cAAc;gBACd,aAAa;gBACb,eAAe,EACb,aAAa,KAAK,SAAS;oBAC3B,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,CAAC;aACnD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -2,9 +2,4 @@ import type { ClipboardPort } from "../ports/clipboard-port.js";
|
|
|
2
2
|
export interface InMemoryClipboard extends ClipboardPort {
|
|
3
3
|
readonly lastText: string | undefined;
|
|
4
4
|
}
|
|
5
|
-
/**
|
|
6
|
-
* App-layer default clipboard: stores the last copied text in memory without
|
|
7
|
-
* touching the terminal. The real OSC 52 / native-clipboard adapter, which
|
|
8
|
-
* writes terminal bytes, belongs to the renderer layer (Phase 6, SEL-006).
|
|
9
|
-
*/
|
|
10
5
|
export declare function createInMemoryClipboardPort(): InMemoryClipboard;
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* App-layer default clipboard: stores the last copied text in memory without
|
|
3
|
-
* touching the terminal. The real OSC 52 / native-clipboard adapter, which
|
|
4
|
-
* writes terminal bytes, belongs to the renderer layer (Phase 6, SEL-006).
|
|
5
|
-
*/
|
|
6
1
|
export function createInMemoryClipboardPort() {
|
|
7
2
|
let last;
|
|
8
3
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-clipboard-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/in-memory-clipboard-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"in-memory-clipboard-adapter.js","sourceRoot":"","sources":["../../../src/app/adapters/in-memory-clipboard-adapter.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,2BAA2B;IACzC,IAAI,IAAwB,CAAC;IAC7B,OAAO;QACL,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,IAAY;YAC1B,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Command context = the focused surface a command is allowed to run in
|
|
3
|
-
* (PICK-002, CMD-002). `global` commands run anywhere the focused surface
|
|
4
|
-
* permits; others are scoped.
|
|
5
|
-
*/
|
|
6
1
|
export type CommandContext = "global" | "composer" | "picker" | "modal" | "secret" | "plan" | "transcript" | "transcript-search";
|
|
7
2
|
export interface CommandDefinition {
|
|
8
3
|
/** Canonical name without the leading slash, e.g. "model". */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/app/commands/command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/app/commands/command.ts"],"names":[],"mappings":"AAiCA,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -5,11 +5,6 @@ export interface CommandHelpEntry {
|
|
|
5
5
|
readonly description: string;
|
|
6
6
|
readonly aliases: readonly string[];
|
|
7
7
|
}
|
|
8
|
-
/**
|
|
9
|
-
* One typed source of truth for slash commands. Registration is closed once
|
|
10
|
-
* seeded; handlers are attached by whichever frontend consumes the registry so
|
|
11
|
-
* UI-coupled handler bodies are not duplicated across legacy and v2.
|
|
12
|
-
*/
|
|
13
8
|
export declare class CommandRegistry {
|
|
14
9
|
private readonly byName;
|
|
15
10
|
private readonly aliasToName;
|
|
@@ -25,11 +20,6 @@ export declare class CommandRegistry {
|
|
|
25
20
|
help(): CommandHelpEntry[];
|
|
26
21
|
/** Parse a raw `/name args` line into a resolved invocation, or undefined. */
|
|
27
22
|
parse(line: string, context?: CommandContext): CommandInvocation | undefined;
|
|
28
|
-
/**
|
|
29
|
-
* True when a submitted line should be treated as a slash-command attempt
|
|
30
|
-
* (known name, unique prefix, or command-shaped word) rather than a prompt.
|
|
31
|
-
* Paths like `/Users/...` return false.
|
|
32
|
-
*/
|
|
33
23
|
looksLikeCommand(line: string): boolean;
|
|
34
24
|
/** Resolve + run the registered handler. Returns false if unknown/unhandled. */
|
|
35
25
|
dispatch(invocation: {
|
|
@@ -38,8 +28,4 @@ export declare class CommandRegistry {
|
|
|
38
28
|
context?: CommandContext | undefined;
|
|
39
29
|
}): Promise<boolean>;
|
|
40
30
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Seed a registry from the shared legacy command catalogue so v2 and the
|
|
43
|
-
* classic REPL agree on the command set without a second hand-maintained list.
|
|
44
|
-
*/
|
|
45
31
|
export declare function buildDefaultCommandRegistry(): CommandRegistry;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { slashCommands } from "../../repl/slash-commands.js";
|
|
2
2
|
import { normalizeCommandName, } from "./command.js";
|
|
3
|
-
/**
|
|
4
|
-
* Canonical command -> alias names. The legacy catalogue lists aliases as
|
|
5
|
-
* separate rows ("alias for /X"); here they collapse onto one canonical
|
|
6
|
-
* command so menus, help, keybindings, and dispatch all derive from a single
|
|
7
|
-
* definition (CMD-002, FEATURE_PARITY "aliases point to the same handler").
|
|
8
|
-
*/
|
|
9
3
|
const ALIAS_GROUPS = {
|
|
10
4
|
provider: ["use"],
|
|
11
5
|
search: ["search-provider"],
|
|
@@ -13,11 +7,6 @@ const ALIAS_GROUPS = {
|
|
|
13
7
|
think: ["thinking"],
|
|
14
8
|
exit: ["quit"],
|
|
15
9
|
};
|
|
16
|
-
/**
|
|
17
|
-
* One typed source of truth for slash commands. Registration is closed once
|
|
18
|
-
* seeded; handlers are attached by whichever frontend consumes the registry so
|
|
19
|
-
* UI-coupled handler bodies are not duplicated across legacy and v2.
|
|
20
|
-
*/
|
|
21
10
|
export class CommandRegistry {
|
|
22
11
|
byName = new Map();
|
|
23
12
|
aliasToName = new Map();
|
|
@@ -102,11 +91,6 @@ export class CommandRegistry {
|
|
|
102
91
|
}
|
|
103
92
|
return undefined;
|
|
104
93
|
}
|
|
105
|
-
/**
|
|
106
|
-
* True when a submitted line should be treated as a slash-command attempt
|
|
107
|
-
* (known name, unique prefix, or command-shaped word) rather than a prompt.
|
|
108
|
-
* Paths like `/Users/...` return false.
|
|
109
|
-
*/
|
|
110
94
|
looksLikeCommand(line) {
|
|
111
95
|
if (!line.startsWith("/") || line.length < 2)
|
|
112
96
|
return false;
|
|
@@ -136,10 +120,6 @@ export class CommandRegistry {
|
|
|
136
120
|
return true;
|
|
137
121
|
}
|
|
138
122
|
}
|
|
139
|
-
/**
|
|
140
|
-
* Seed a registry from the shared legacy command catalogue so v2 and the
|
|
141
|
-
* classic REPL agree on the command set without a second hand-maintained list.
|
|
142
|
-
*/
|
|
143
123
|
export function buildDefaultCommandRegistry() {
|
|
144
124
|
const registry = new CommandRegistry();
|
|
145
125
|
const aliasNames = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/app/commands/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,oBAAoB,GAKrB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/app/commands/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
export interface Disposable {
|
|
2
2
|
dispose(): void;
|
|
3
3
|
}
|
|
4
|
-
/**
|
|
5
|
-
* Owns a set of disposables and tears them down in reverse creation order
|
|
6
|
-
* (ARCHITECTURE.md lifecycle). Disposal is idempotent (REL-001): a second call
|
|
7
|
-
* is a no-op, and one throwing disposer does not prevent the rest from running.
|
|
8
|
-
*/
|
|
9
4
|
export declare class CompositeDisposable implements Disposable {
|
|
10
5
|
private readonly items;
|
|
11
6
|
private disposed;
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Owns a set of disposables and tears them down in reverse creation order
|
|
3
|
-
* (ARCHITECTURE.md lifecycle). Disposal is idempotent (REL-001): a second call
|
|
4
|
-
* is a no-op, and one throwing disposer does not prevent the rest from running.
|
|
5
|
-
*/
|
|
6
1
|
export class CompositeDisposable {
|
|
7
2
|
items = [];
|
|
8
3
|
disposed = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable.js","sourceRoot":"","sources":["../../../src/app/controllers/disposable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"disposable.js","sourceRoot":"","sources":["../../../src/app/controllers/disposable.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,mBAAmB;IACb,KAAK,GAAiB,EAAE,CAAC;IAClC,QAAQ,GAAG,KAAK,CAAC;IAEzB,GAAG,CAAuB,IAAO;QAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import type { ToolResult } from "../../types.js";
|
|
2
2
|
import type { BackgroundJob, JobsPort } from "../ports/jobs-port.js";
|
|
3
3
|
import type { Disposable } from "./disposable.js";
|
|
4
|
-
/**
|
|
5
|
-
* Thin lifecycle wrapper over `JobsPort` (CORE-004). Jobs live in the core
|
|
6
|
-
* manager and survive UI rerenders; this controller only observes and commands.
|
|
7
|
-
*/
|
|
8
4
|
export declare class JobController implements Disposable {
|
|
9
5
|
private readonly jobs;
|
|
10
6
|
constructor(jobs: JobsPort);
|
|
@@ -12,7 +8,7 @@ export declare class JobController implements Disposable {
|
|
|
12
8
|
running(): BackgroundJob[];
|
|
13
9
|
get(id: string): BackgroundJob | undefined;
|
|
14
10
|
tail(id: string, bytes?: number): Promise<ToolResult>;
|
|
15
|
-
stop(id: string): ToolResult
|
|
11
|
+
stop(id: string): Promise<ToolResult>;
|
|
16
12
|
start(command: string, options?: {
|
|
17
13
|
cwd?: string | undefined;
|
|
18
14
|
name?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-controller.js","sourceRoot":"","sources":["../../../src/app/controllers/job-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"job-controller.js","sourceRoot":"","sources":["../../../src/app/controllers/job-controller.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,IAAc;QAAd,SAAI,GAAJ,IAAI,CAAU;IAAG,CAAC;IAE/C,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,EAAU,EAAE,KAAc;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CACH,OAAe,EACf,OAAiE;QAEjE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,gEAAgE;IAClE,CAAC;CACF"}
|
|
@@ -3,23 +3,20 @@ import type { AnyAppEvent } from "../events/app-event.js";
|
|
|
3
3
|
import type { PersistencePort } from "../ports/persistence-port.js";
|
|
4
4
|
import type { Disposable } from "./disposable.js";
|
|
5
5
|
export type PlanListener = () => void;
|
|
6
|
-
/**
|
|
7
|
-
* Holds the one current plan entity and keeps it in sync with the event stream
|
|
8
|
-
* (PLAN-003: mutate the existing plan, never append duplicates). Approval and
|
|
9
|
-
* discard mutate persisted status through the persistence port. Observable so
|
|
10
|
-
* the UI can bind reactively without polling (PLAN-002).
|
|
11
|
-
*/
|
|
12
6
|
export declare class PlanController implements Disposable {
|
|
13
7
|
private readonly persistence;
|
|
14
8
|
private plan;
|
|
9
|
+
private loadGeneration;
|
|
10
|
+
private activeSessionId;
|
|
15
11
|
private readonly listeners;
|
|
16
12
|
constructor(persistence: PersistencePort);
|
|
17
13
|
current(): SessionPlan | undefined;
|
|
18
14
|
subscribe(listener: PlanListener): () => void;
|
|
19
15
|
observe(event: AnyAppEvent): void;
|
|
20
16
|
/**
|
|
21
|
-
* Load the plan for `sessionId` from disk into memory.
|
|
22
|
-
*
|
|
17
|
+
* Load the plan for `sessionId` from disk into memory. The previous session's
|
|
18
|
+
* projection is cleared synchronously, and a generation token prevents a
|
|
19
|
+
* slower old-session load from repopulating the controller after /new.
|
|
23
20
|
*/
|
|
24
21
|
load(sessionId: string): Promise<SessionPlan | undefined>;
|
|
25
22
|
/** Drop the in-memory plan without touching disk. */
|