@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,9 +1,4 @@
|
|
|
1
1
|
import type { OutputChunkRef, ToolCallId } from "./app-event.js";
|
|
2
|
-
/**
|
|
3
|
-
* Text buffer for a single tool stream. By default it keeps **all** characters
|
|
4
|
-
* (no truncation) so Ctrl+O / click-to-open always shows the full body.
|
|
5
|
-
* Pass a finite `maxChars` only for tests or memory-sensitive adapters.
|
|
6
|
-
*/
|
|
7
2
|
export interface BoundedTextState {
|
|
8
3
|
readonly tail: string;
|
|
9
4
|
readonly totalBytes: number;
|
|
@@ -17,11 +12,11 @@ export declare class BoundedText {
|
|
|
17
12
|
private dropped;
|
|
18
13
|
/**
|
|
19
14
|
* @param maxChars Finite positive cap keeps only the last N chars.
|
|
20
|
-
*
|
|
15
|
+
* Defaults to 256 KiB; use Infinity only in explicitly controlled tests.
|
|
21
16
|
*/
|
|
22
17
|
constructor(maxChars?: number);
|
|
23
18
|
append(chunk: string): void;
|
|
24
|
-
/** Replace
|
|
19
|
+
/** Replace with an authoritative body while preserving the configured cap. */
|
|
25
20
|
replace(text: string): void;
|
|
26
21
|
get tail(): string;
|
|
27
22
|
get totalBytes(): number;
|
|
@@ -29,20 +24,14 @@ export declare class BoundedText {
|
|
|
29
24
|
get truncated(): boolean;
|
|
30
25
|
snapshot(): BoundedTextState;
|
|
31
26
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Per-tool-call output spool. Default is unbounded so the UI never loses
|
|
34
|
-
* bytes. Full artifacts are still written to disk for persistence/export.
|
|
35
|
-
*/
|
|
36
27
|
export declare class OutputSpool {
|
|
37
28
|
private readonly maxCharsPerTool;
|
|
29
|
+
private readonly maxTools;
|
|
38
30
|
private readonly byTool;
|
|
39
|
-
/**
|
|
40
|
-
constructor(maxCharsPerTool?: number);
|
|
31
|
+
/** Finite production defaults; full bodies remain available in tool artifacts. */
|
|
32
|
+
constructor(maxCharsPerTool?: number, maxTools?: number);
|
|
33
|
+
private bufferFor;
|
|
41
34
|
append(toolCallId: ToolCallId, chunk: string): OutputChunkRef;
|
|
42
|
-
/**
|
|
43
|
-
* Set the full authoritative body after a tool finishes (replaces any live
|
|
44
|
-
* stream so the pager never shows a truncated mid-run preview).
|
|
45
|
-
*/
|
|
46
35
|
replace(toolCallId: ToolCallId, text: string): OutputChunkRef;
|
|
47
36
|
tail(toolCallId: ToolCallId): string;
|
|
48
37
|
state(toolCallId: ToolCallId): BoundedTextState | undefined;
|
|
@@ -5,9 +5,9 @@ export class BoundedText {
|
|
|
5
5
|
dropped = 0;
|
|
6
6
|
/**
|
|
7
7
|
* @param maxChars Finite positive cap keeps only the last N chars.
|
|
8
|
-
*
|
|
8
|
+
* Defaults to 256 KiB; use Infinity only in explicitly controlled tests.
|
|
9
9
|
*/
|
|
10
|
-
constructor(maxChars =
|
|
10
|
+
constructor(maxChars = 256 * 1024) {
|
|
11
11
|
this.maxChars = maxChars;
|
|
12
12
|
if (!(this.maxChars > 0))
|
|
13
13
|
throw new RangeError("maxChars must be positive");
|
|
@@ -25,11 +25,12 @@ export class BoundedText {
|
|
|
25
25
|
this.dropped += Buffer.byteLength(combined.slice(0, overflow), "utf8");
|
|
26
26
|
this.tailBuf = combined.slice(overflow);
|
|
27
27
|
}
|
|
28
|
-
/** Replace
|
|
28
|
+
/** Replace with an authoritative body while preserving the configured cap. */
|
|
29
29
|
replace(text) {
|
|
30
|
-
this.tailBuf =
|
|
31
|
-
this.total =
|
|
30
|
+
this.tailBuf = "";
|
|
31
|
+
this.total = 0;
|
|
32
32
|
this.dropped = 0;
|
|
33
|
+
this.append(text);
|
|
33
34
|
}
|
|
34
35
|
get tail() {
|
|
35
36
|
return this.tailBuf;
|
|
@@ -52,23 +53,33 @@ export class BoundedText {
|
|
|
52
53
|
};
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
|
-
/**
|
|
56
|
-
* Per-tool-call output spool. Default is unbounded so the UI never loses
|
|
57
|
-
* bytes. Full artifacts are still written to disk for persistence/export.
|
|
58
|
-
*/
|
|
59
56
|
export class OutputSpool {
|
|
60
57
|
maxCharsPerTool;
|
|
58
|
+
maxTools;
|
|
61
59
|
byTool = new Map();
|
|
62
|
-
/**
|
|
63
|
-
constructor(maxCharsPerTool =
|
|
60
|
+
/** Finite production defaults; full bodies remain available in tool artifacts. */
|
|
61
|
+
constructor(maxCharsPerTool = 256 * 1024, maxTools = 128) {
|
|
64
62
|
this.maxCharsPerTool = maxCharsPerTool;
|
|
63
|
+
this.maxTools = maxTools;
|
|
64
|
+
if (!Number.isInteger(maxTools) || maxTools <= 0)
|
|
65
|
+
throw new RangeError("maxTools must be positive");
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
+
bufferFor(toolCallId) {
|
|
67
68
|
let buffer = this.byTool.get(toolCallId);
|
|
68
|
-
if (
|
|
69
|
-
buffer
|
|
70
|
-
|
|
69
|
+
if (buffer)
|
|
70
|
+
return buffer;
|
|
71
|
+
while (this.byTool.size >= this.maxTools) {
|
|
72
|
+
const oldest = this.byTool.keys().next().value;
|
|
73
|
+
if (oldest === undefined)
|
|
74
|
+
break;
|
|
75
|
+
this.byTool.delete(oldest);
|
|
71
76
|
}
|
|
77
|
+
buffer = new BoundedText(this.maxCharsPerTool);
|
|
78
|
+
this.byTool.set(toolCallId, buffer);
|
|
79
|
+
return buffer;
|
|
80
|
+
}
|
|
81
|
+
append(toolCallId, chunk) {
|
|
82
|
+
const buffer = this.bufferFor(toolCallId);
|
|
72
83
|
buffer.append(chunk);
|
|
73
84
|
return {
|
|
74
85
|
toolCallId,
|
|
@@ -76,16 +87,8 @@ export class OutputSpool {
|
|
|
76
87
|
totalBytes: buffer.totalBytes,
|
|
77
88
|
};
|
|
78
89
|
}
|
|
79
|
-
/**
|
|
80
|
-
* Set the full authoritative body after a tool finishes (replaces any live
|
|
81
|
-
* stream so the pager never shows a truncated mid-run preview).
|
|
82
|
-
*/
|
|
83
90
|
replace(toolCallId, text) {
|
|
84
|
-
|
|
85
|
-
if (!buffer) {
|
|
86
|
-
buffer = new BoundedText(this.maxCharsPerTool);
|
|
87
|
-
this.byTool.set(toolCallId, buffer);
|
|
88
|
-
}
|
|
91
|
+
const buffer = this.bufferFor(toolCallId);
|
|
89
92
|
buffer.replace(text);
|
|
90
93
|
return {
|
|
91
94
|
toolCallId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-buffer.js","sourceRoot":"","sources":["../../../src/app/events/event-buffer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-buffer.js","sourceRoot":"","sources":["../../../src/app/events/event-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,21 +4,12 @@ export interface Clock {
|
|
|
4
4
|
now(): number;
|
|
5
5
|
}
|
|
6
6
|
export declare const systemClock: Clock;
|
|
7
|
-
/**
|
|
8
|
-
* Mints envelope ids and domain ids that lack a natural stable id (assistant
|
|
9
|
-
* messages, thinking blocks). Tool-call ids come from the agent and are reused
|
|
10
|
-
* verbatim. Injectable so tests can assert deterministic replay output.
|
|
11
|
-
*/
|
|
12
7
|
export interface IdFactory {
|
|
13
8
|
event(): string;
|
|
14
9
|
message(): MessageId;
|
|
15
10
|
}
|
|
16
11
|
export declare function createCountingIdFactory(prefix?: string): IdFactory;
|
|
17
12
|
export declare function createRandomIdFactory(): IdFactory;
|
|
18
|
-
/**
|
|
19
|
-
* Assigns a monotonic, gap-free `sequence` per session and wraps a typed
|
|
20
|
-
* payload in the `AppEvent` envelope. One sequencer instance owns one session.
|
|
21
|
-
*/
|
|
22
13
|
export declare class EventSequencer {
|
|
23
14
|
readonly ids: IdFactory;
|
|
24
15
|
private readonly clock;
|
|
@@ -15,10 +15,6 @@ export function createRandomIdFactory() {
|
|
|
15
15
|
message: () => asMessageId(randomUUID()),
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Assigns a monotonic, gap-free `sequence` per session and wraps a typed
|
|
20
|
-
* payload in the `AppEvent` envelope. One sequencer instance owns one session.
|
|
21
|
-
*/
|
|
22
18
|
export class EventSequencer {
|
|
23
19
|
ids;
|
|
24
20
|
clock;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer.js","sourceRoot":"","sources":["../../../src/app/events/sequencer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,WAAW,GAOZ,MAAM,gBAAgB,CAAC;AAOxB,MAAM,CAAC,MAAM,WAAW,GAAU,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sequencer.js","sourceRoot":"","sources":["../../../src/app/events/sequencer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,WAAW,GAOZ,MAAM,gBAAgB,CAAC;AAOxB,MAAM,CAAC,MAAM,WAAW,GAAU,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAQ5D,MAAM,UAAU,uBAAuB,CAAC,MAAM,GAAG,EAAE;IACjD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACtD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;QACzB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;KACzC,CAAC;AACJ,CAAC;AAGD,MAAM,OAAO,cAAc;IAMd;IACQ;IANX,GAAG,GAAG,CAAC,CAAC;IACR,SAAS,CAAY;IAE7B,YACE,SAAoB,EACX,MAAiB,qBAAqB,EAAE,EAChC,QAAe,WAAW;QADlC,QAAG,GAAH,GAAG,CAAqC;QAChC,UAAK,GAAL,KAAK,CAAqB;QAE3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,SAAoB;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACf,CAAC;IAED,KAAK,CACH,IAAO,EACP,OAA4B,EAC5B,MAA2B;QAE3B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;YACpB,OAAO,EAAE,iBAAiB;YAC1B,QAAQ,EAAE,IAAI,CAAC,GAAG;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3B,IAAI;YACJ,OAAO;SACR,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;QAChE,OAAO,KAAyC,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import type { ChatImage, ChatMessage, ProviderId } from "../../types.js";
|
|
1
|
+
import type { ChatImage, ChatMessage, Mode, ProviderId } from "../../types.js";
|
|
2
|
+
import type { Attachment } from "../../ui/mentions.js";
|
|
2
3
|
import type { AgentEvent } from "../../agent/events.js";
|
|
3
4
|
import type { SessionPolicy } from "../../agent/session-policy.js";
|
|
4
5
|
import type { ConfirmationPort } from "./confirm-port.js";
|
|
5
6
|
import type { SecretPort } from "./secret-port.js";
|
|
7
|
+
import type { TurnOutcome } from "../../agent/turn-outcome.js";
|
|
6
8
|
export interface RunTurnRequest {
|
|
7
9
|
readonly prompt: string;
|
|
10
|
+
/**
|
|
11
|
+
* Text for the transcript YOU bubble. `null` hides the bubble (system
|
|
12
|
+
* implement/revision directives). Omit to show `prompt` as usual.
|
|
13
|
+
*/
|
|
14
|
+
readonly displayPrompt?: string | null | undefined;
|
|
15
|
+
readonly mode: Mode;
|
|
8
16
|
readonly provider?: ProviderId | undefined;
|
|
9
17
|
readonly model?: string | undefined;
|
|
10
18
|
readonly history?: readonly ChatMessage[] | undefined;
|
|
19
|
+
readonly attachments?: readonly Attachment[] | undefined;
|
|
11
20
|
readonly images?: readonly ChatImage[] | undefined;
|
|
12
21
|
readonly autoConfirm?: boolean | undefined;
|
|
13
22
|
readonly maxSteps?: number | undefined;
|
|
@@ -22,8 +31,9 @@ export interface RunTurnHandlers {
|
|
|
22
31
|
}
|
|
23
32
|
/**
|
|
24
33
|
* The one agent implementation, consumed through structured events (CORE-001).
|
|
25
|
-
* `runTurn` resolves with the
|
|
34
|
+
* `runTurn` resolves with the authoritative structured outcome; rendering is a
|
|
35
|
+
* frontend concern and events flow through `onEvent`.
|
|
26
36
|
*/
|
|
27
37
|
export interface AgentPort {
|
|
28
|
-
runTurn(request: RunTurnRequest, handlers: RunTurnHandlers): Promise<
|
|
38
|
+
runTurn(request: RunTurnRequest, handlers: RunTurnHandlers): Promise<TurnOutcome>;
|
|
29
39
|
}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Clipboard access (SEL-006). Copy requires user-visible selected text; the
|
|
3
|
-
* real OSC 52 / native-clipboard adapter lands with the renderer in Phase 6.
|
|
4
|
-
* The app-layer default is in-memory so nothing writes terminal bytes here.
|
|
5
|
-
*/
|
|
6
1
|
export interface ClipboardPort {
|
|
7
2
|
writeText(text: string): Promise<void>;
|
|
8
3
|
readText?(): Promise<string | undefined>;
|
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
import type { ToolCall } from "../../types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Typed async confirmation surface (CORE-002). The UI implements this; the
|
|
4
|
-
* agent never reads the terminal directly. Structurally identical to the
|
|
5
|
-
* legacy `ConfirmPort` in src/agent, so a v2 implementation is accepted by
|
|
6
|
-
* `runAgentLoop` without adaptation. Optional methods let minimal ports omit
|
|
7
|
-
* flows they never trigger.
|
|
8
|
-
*/
|
|
9
2
|
export interface ConfirmationPort {
|
|
10
3
|
confirmTool(call: ToolCall): Promise<boolean>;
|
|
11
4
|
confirmPentest(): Promise<boolean>;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import type { BackgroundJob } from "../../tools/jobs.js";
|
|
2
2
|
import type { ToolResult } from "../../types.js";
|
|
3
3
|
export type { BackgroundJob };
|
|
4
|
-
/**
|
|
5
|
-
* Background job control (CORE-004, F-004). Jobs survive UI rerenders because
|
|
6
|
-
* they live in the core job manager; the UI only observes and commands them.
|
|
7
|
-
*/
|
|
8
4
|
export interface JobsPort {
|
|
9
5
|
list(): ToolResult;
|
|
10
6
|
running(): BackgroundJob[];
|
|
7
|
+
recent?(limit?: number): BackgroundJob[];
|
|
11
8
|
get(id: string): BackgroundJob | undefined;
|
|
12
9
|
tail(id: string, bytes?: number): Promise<ToolResult>;
|
|
13
|
-
stop(id: string): ToolResult
|
|
10
|
+
stop(id: string): Promise<ToolResult>;
|
|
14
11
|
start(command: string, options?: {
|
|
15
12
|
cwd?: string | undefined;
|
|
16
13
|
name?: string | undefined;
|
|
@@ -9,10 +9,6 @@ export interface SaveSessionOptions {
|
|
|
9
9
|
/** Classic-shaped visual transcript for full /history restore. */
|
|
10
10
|
readonly transcript?: readonly TranscriptItem[] | undefined;
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Session/plan persistence (CORE-005, F-008). Kept narrow so controllers depend
|
|
14
|
-
* on behavior, not on the SQLite/JSONL storage details in src/store.
|
|
15
|
-
*/
|
|
16
12
|
export interface PersistencePort {
|
|
17
13
|
saveSession(messages: readonly ChatMessage[], options?: SaveSessionOptions): Promise<void>;
|
|
18
14
|
loadPlan(sessionId: string): Promise<SessionPlan | undefined>;
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Masked secret entry (CORE-002, INPUT-009). Secret values are typed
|
|
3
|
-
* separately from generic event payloads and never enter the transcript, logs,
|
|
4
|
-
* history, or clipboard without explicit user action.
|
|
5
|
-
*/
|
|
6
1
|
export interface SecretRequest {
|
|
7
2
|
readonly title: string;
|
|
8
3
|
readonly prompt: string;
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
export type ColorMode = "truecolor" | "256" | "16" | "none";
|
|
2
|
-
/**
|
|
3
|
-
* Terminal capability report (COMPAT-001, A11Y-001). Action defaults are
|
|
4
|
-
* semantic, not byte-sequence promises: `canDistinguishShiftEnter` tells the
|
|
5
|
-
* action layer whether Shift+Enter is a usable newline binding or whether the
|
|
6
|
-
* advertised Alt/Option+Enter fallback must be shown instead.
|
|
7
|
-
*/
|
|
8
2
|
export interface TerminalCapabilities {
|
|
9
3
|
readonly columns: number;
|
|
10
4
|
readonly rows: number;
|
|
@@ -3,10 +3,6 @@ export interface UpdateStatus {
|
|
|
3
3
|
readonly latestVersion?: string | undefined;
|
|
4
4
|
readonly updateAvailable: boolean;
|
|
5
5
|
}
|
|
6
|
-
/**
|
|
7
|
-
* Update check (F-012 adjacent, `/update`). Kept as a port so the check runs
|
|
8
|
-
* without corrupting TUI output and can be faked in tests.
|
|
9
|
-
*/
|
|
10
6
|
export interface UpdatesPort {
|
|
11
7
|
check(): Promise<UpdateStatus>;
|
|
12
8
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Mode, ProviderId, ChatImage } from "../types.js";
|
|
2
|
+
import { type Attachment } from "../ui/mentions.js";
|
|
3
|
+
export interface ResolvedTurnInput {
|
|
4
|
+
readonly prompt: string;
|
|
5
|
+
readonly mode: Mode;
|
|
6
|
+
readonly provider: ProviderId;
|
|
7
|
+
readonly model: string;
|
|
8
|
+
readonly attachments: readonly Attachment[];
|
|
9
|
+
readonly images: readonly ChatImage[];
|
|
10
|
+
readonly capability: {
|
|
11
|
+
readonly vision: boolean;
|
|
12
|
+
readonly source: "provider" | "user" | "fallback-table";
|
|
13
|
+
};
|
|
14
|
+
readonly fallbackReason?: string | undefined;
|
|
15
|
+
}
|
|
16
|
+
/** Shared frontend-neutral attachment and same-provider vision resolution. */
|
|
17
|
+
export declare function resolveTurnInput(input: {
|
|
18
|
+
prompt: string;
|
|
19
|
+
mode: Mode;
|
|
20
|
+
provider: ProviderId;
|
|
21
|
+
model: string;
|
|
22
|
+
baseDir?: string | undefined;
|
|
23
|
+
}): ResolvedTurnInput;
|
|
24
|
+
/** Vision-first OCR policy shared by frontends. */
|
|
25
|
+
export declare function shouldRunImageOcr(input: {
|
|
26
|
+
hasImage: boolean;
|
|
27
|
+
visionCapable: boolean;
|
|
28
|
+
prompt: string;
|
|
29
|
+
}): boolean;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { modelSupportsVision, preferredVisionModel, visionCapabilitySource, } from "../llm/capabilities.js";
|
|
2
|
+
import { safeCwd } from "../os/cwd.js";
|
|
3
|
+
import { expandMentions, loadImageAttachments } from "../ui/mentions.js";
|
|
4
|
+
/** Shared frontend-neutral attachment and same-provider vision resolution. */
|
|
5
|
+
export function resolveTurnInput(input) {
|
|
6
|
+
const baseDir = input.baseDir ?? safeCwd();
|
|
7
|
+
let model = input.model;
|
|
8
|
+
let vision = modelSupportsVision(input.provider, model);
|
|
9
|
+
let expansion = expandMentions(input.prompt, baseDir, vision);
|
|
10
|
+
const hasImage = expansion.attachments.some((attachment) => attachment.kind === "image");
|
|
11
|
+
let fallbackReason;
|
|
12
|
+
if (hasImage && !vision) {
|
|
13
|
+
const fallback = preferredVisionModel(input.provider, model);
|
|
14
|
+
if (fallback) {
|
|
15
|
+
model = fallback;
|
|
16
|
+
vision = true;
|
|
17
|
+
fallbackReason =
|
|
18
|
+
`Selected same-provider vision model ${fallback} because the request contains an image ` +
|
|
19
|
+
`(capability source: ${visionCapabilitySource(input.provider, fallback)}).`;
|
|
20
|
+
expansion = expandMentions(input.prompt, baseDir, true);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const images = vision ? loadImageAttachments(input.prompt, baseDir) : [];
|
|
24
|
+
const prompt = expansion.contextBlock
|
|
25
|
+
? `${expansion.text}\n\n${expansion.contextBlock}`
|
|
26
|
+
: expansion.text;
|
|
27
|
+
return {
|
|
28
|
+
prompt,
|
|
29
|
+
mode: input.mode,
|
|
30
|
+
provider: input.provider,
|
|
31
|
+
model,
|
|
32
|
+
attachments: expansion.attachments,
|
|
33
|
+
images,
|
|
34
|
+
capability: {
|
|
35
|
+
vision,
|
|
36
|
+
source: visionCapabilitySource(input.provider, model),
|
|
37
|
+
},
|
|
38
|
+
fallbackReason,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/** Vision-first OCR policy shared by frontends. */
|
|
42
|
+
export function shouldRunImageOcr(input) {
|
|
43
|
+
if (!input.hasImage || input.visionCapable)
|
|
44
|
+
return false;
|
|
45
|
+
return /\b(?:ocr|extract|transcribe|read)\b[\s\S]{0,30}\btext\b|\btext\b[\s\S]{0,30}\b(?:image|screenshot)\b/i.test(input.prompt);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/attachments/service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAmB,MAAM,mBAAmB,CAAC;AAgB1F,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,KAMhC;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;IAC3C,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAI,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxD,IAAI,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACzF,IAAI,cAAkC,CAAC;IACvC,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,GAAG,QAAQ,CAAC;YACjB,MAAM,GAAG,IAAI,CAAC;YACd,cAAc;gBACZ,uCAAuC,QAAQ,yCAAyC;oBACxF,uBAAuB,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;YAC9E,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY;QACnC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,YAAY,EAAE;QAClD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;IACnB,OAAO;QACL,MAAM;QACN,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK;QACL,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,MAAM;QACN,UAAU,EAAE;YACV,MAAM;YACN,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;SACtD;QACD,cAAc;KACf,CAAC;AACJ,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,iBAAiB,CAAC,KAIjC;IACC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IACzD,OAAO,uGAAuG,CAAC,IAAI,CACjH,KAAK,CAAC,MAAM,CACb,CAAC;AACJ,CAAC"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -9,6 +9,7 @@ import { canUseTui } from '../tui/can-use-tui.js';
|
|
|
9
9
|
import { findBunExecutable, isBunRuntime, openTuiRuntimeHint, } from '../tui/runtime.js';
|
|
10
10
|
import { describeUiDefault, resolveUiChoice, } from '../tui-v2/bootstrap/ui-selection.js';
|
|
11
11
|
import { printProviderKeys } from './providers.js';
|
|
12
|
+
import { resolveToolDialect } from '../llm/capabilities.js';
|
|
12
13
|
const pentestTools = [
|
|
13
14
|
'nmap', 'nikto', 'sqlmap', 'gobuster', 'ffuf', 'hydra', 'masscan',
|
|
14
15
|
'whois', 'dig', 'nc', 'tshark', 'dirb', 'wfuzz', 'nuclei',
|
|
@@ -53,6 +54,8 @@ export async function runDoctor() {
|
|
|
53
54
|
}
|
|
54
55
|
console.log(`Package manager: ${pkgmgr.id}`);
|
|
55
56
|
const config = getConfig();
|
|
57
|
+
const toolDialect = resolveToolDialect(config.defaultProvider, config.defaultModel, config.toolCalling);
|
|
58
|
+
console.log(`Tool calling: ${config.toolCalling ?? 'auto'} → dialect ${toolDialect} for ${config.defaultProvider}/${config.defaultModel}`);
|
|
56
59
|
const offline = process.env.CLAI_OFFLINE === '1' ||
|
|
57
60
|
process.env.CLAI_NO_UPDATE_CHECK === '1' ||
|
|
58
61
|
Boolean(config.offline);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,9 +44,6 @@ function invalidFormatHint(provider) {
|
|
|
44
44
|
return "Ollama expects a URL such as http://localhost:11434";
|
|
45
45
|
}
|
|
46
46
|
export async function setProviderKey(providerValue, keyArg, options) {
|
|
47
|
-
// Search-provider ids (`brave`, `tavily`, `duckduckgo`) are stored in
|
|
48
|
-
// the `search:` namespace (Requirement 3.1). Dispatch before the LLM
|
|
49
|
-
// path so the matching helper handles the keyless DuckDuckGo no-op.
|
|
50
47
|
if (providerValue === "brave" ||
|
|
51
48
|
providerValue === "tavily" ||
|
|
52
49
|
providerValue === "duckduckgo") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/commands/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAU1B,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAoB;IACjD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC;QACzB,OAAO,EAAE,qBAAqB,QAAQ,yCAAyC;QAC/E,IAAI,EAAE,GAAG;KACV,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAoB;IAC7C,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,mCAAmC,CAAC;IACpE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,qCAAqC,CAAC;IACxE,IAAI,QAAQ,KAAK,YAAY;QAC3B,OAAO,2CAA2C,CAAC;IACrD,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,gDAAgD,CAAC;IACnF,IAAI,QAAQ,KAAK,WAAW;QAC1B,OAAO,2CAA2C,CAAC;IACrD,IAAI,QAAQ,KAAK,QAAQ;QACvB,OAAO,2CAA2C,CAAC;IACrD,IAAI,QAAQ,KAAK,aAAa;QAC5B,OAAO,2FAA2F,CAAC;IACrG,IAAI,QAAQ,KAAK,QAAQ;QACvB,OAAO,sDAAsD,CAAC;IAChE,IAAI,QAAQ,KAAK,YAAY;QAC3B,OAAO,6EAA6E,CAAC;IACvF,IAAI,QAAQ,KAAK,QAAQ;QACvB,OAAO,gEAAgE,CAAC;IAC1E,IAAI,QAAQ,KAAK,YAAY;QAC3B,OAAO,0EAA0E,CAAC;IACpF,OAAO,qDAAqD,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,aAAqB,EACrB,MAA0B,EAC1B,OAAsB;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/commands/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI helpers for managing search-provider configuration and keys.
|
|
3
|
-
*
|
|
4
|
-
* Implements Requirements 3.1, 3.2, 3.5–3.7:
|
|
5
|
-
*
|
|
6
|
-
* - `clai set <id> [key]` — store an API key for `brave`/`tavily`
|
|
7
|
-
* (DuckDuckGo is keyless and is a no-op).
|
|
8
|
-
* - `clai unset <id>` — remove a stored key.
|
|
9
|
-
* - `clai search-provider` — set the active provider (`activeSearchProvider`).
|
|
10
|
-
* - `clai keys` — extends the LLM listing with search providers,
|
|
11
|
-
* using the same masking rule.
|
|
12
|
-
*
|
|
13
|
-
* All key entry uses the `password` prompt with no terminal echo
|
|
14
|
-
* (Requirement 3.2). Secrets land in the same keyring service as LLM
|
|
15
|
-
* keys but under the namespaced account `search:<id>` so the two
|
|
16
|
-
* keyspaces never collide (Requirement 3.1).
|
|
17
|
-
*/
|
|
18
1
|
import "../tools/web/providers/duckduckgo.js";
|
|
19
2
|
import "../tools/web/providers/brave.js";
|
|
20
3
|
import "../tools/web/providers/tavily.js";
|
|
21
|
-
/**
|
|
22
|
-
* Returns `true` when the supplied id is a known search-provider id.
|
|
23
|
-
* Used by `clai set <id>` to dispatch to the search-provider path
|
|
24
|
-
* before falling through to the LLM-provider path.
|
|
25
|
-
*/
|
|
26
4
|
export declare function isSearchProviderId(value: string): boolean;
|
|
27
5
|
export interface SetSearchKeyOptions {
|
|
28
6
|
fromEnv?: string | undefined;
|
|
29
7
|
stdin?: boolean | undefined;
|
|
30
8
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Persist a search-provider API key. DuckDuckGo is keyless and is a no-op.
|
|
33
|
-
*
|
|
34
|
-
* Requirement 3.2: prompts use the hidden-input `password` flow so the
|
|
35
|
-
* entered key never lands in shell history or echo.
|
|
36
|
-
*/
|
|
37
9
|
export declare function setSearchProviderKey(providerValue: string, keyArg: string | undefined, options?: SetSearchKeyOptions): Promise<void>;
|
|
38
10
|
export declare function unsetSearchProviderKey(providerValue: string): Promise<void>;
|
|
39
11
|
/**
|
|
@@ -42,9 +14,4 @@ export declare function unsetSearchProviderKey(providerValue: string): Promise<v
|
|
|
42
14
|
* are rejected with the supported-list message (Requirement 3.7).
|
|
43
15
|
*/
|
|
44
16
|
export declare function useSearchProvider(providerValue: string): Promise<void>;
|
|
45
|
-
/**
|
|
46
|
-
* Print every configured search-provider entry next to the LLM
|
|
47
|
-
* listing. Uses the same masking rule as `clai keys` for LLM keys
|
|
48
|
-
* (Requirement 3.6).
|
|
49
|
-
*/
|
|
50
17
|
export declare function printSearchProviderKeys(): Promise<void>;
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI helpers for managing search-provider configuration and keys.
|
|
3
|
-
*
|
|
4
|
-
* Implements Requirements 3.1, 3.2, 3.5–3.7:
|
|
5
|
-
*
|
|
6
|
-
* - `clai set <id> [key]` — store an API key for `brave`/`tavily`
|
|
7
|
-
* (DuckDuckGo is keyless and is a no-op).
|
|
8
|
-
* - `clai unset <id>` — remove a stored key.
|
|
9
|
-
* - `clai search-provider` — set the active provider (`activeSearchProvider`).
|
|
10
|
-
* - `clai keys` — extends the LLM listing with search providers,
|
|
11
|
-
* using the same masking rule.
|
|
12
|
-
*
|
|
13
|
-
* All key entry uses the `password` prompt with no terminal echo
|
|
14
|
-
* (Requirement 3.2). Secrets land in the same keyring service as LLM
|
|
15
|
-
* keys but under the namespaced account `search:<id>` so the two
|
|
16
|
-
* keyspaces never collide (Requirement 3.1).
|
|
17
|
-
*/
|
|
18
1
|
import { password } from "@inquirer/prompts";
|
|
19
2
|
import chalk from "chalk";
|
|
20
3
|
import { assertSearchProvider, searchProviders, } from "../tools/web/providers/provider.js";
|
|
@@ -39,11 +22,6 @@ async function promptForSecret(id) {
|
|
|
39
22
|
mask: "•",
|
|
40
23
|
});
|
|
41
24
|
}
|
|
42
|
-
/**
|
|
43
|
-
* Returns `true` when the supplied id is a known search-provider id.
|
|
44
|
-
* Used by `clai set <id>` to dispatch to the search-provider path
|
|
45
|
-
* before falling through to the LLM-provider path.
|
|
46
|
-
*/
|
|
47
25
|
export function isSearchProviderId(value) {
|
|
48
26
|
if (typeof value !== "string")
|
|
49
27
|
return false;
|
|
@@ -52,12 +30,6 @@ export function isSearchProviderId(value) {
|
|
|
52
30
|
normalized === "tavily" ||
|
|
53
31
|
normalized === "duckduckgo");
|
|
54
32
|
}
|
|
55
|
-
/**
|
|
56
|
-
* Persist a search-provider API key. DuckDuckGo is keyless and is a no-op.
|
|
57
|
-
*
|
|
58
|
-
* Requirement 3.2: prompts use the hidden-input `password` flow so the
|
|
59
|
-
* entered key never lands in shell history or echo.
|
|
60
|
-
*/
|
|
61
33
|
export async function setSearchProviderKey(providerValue, keyArg, options = {}) {
|
|
62
34
|
const provider = assertSearchProvider(providerValue);
|
|
63
35
|
const adapter = searchProviders[provider];
|
|
@@ -104,11 +76,6 @@ export async function useSearchProvider(providerValue) {
|
|
|
104
76
|
setActiveSearchProvider(provider);
|
|
105
77
|
console.log(`active search provider = ${provider}`);
|
|
106
78
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Print every configured search-provider entry next to the LLM
|
|
109
|
-
* listing. Uses the same masking rule as `clai keys` for LLM keys
|
|
110
|
-
* (Requirement 3.6).
|
|
111
|
-
*/
|
|
112
79
|
export async function printSearchProviderKeys() {
|
|
113
80
|
console.log(chalk.bold("Search Providers:"));
|
|
114
81
|
console.log(chalk.dim(" PROVIDER SOURCE KEY"));
|