@pentoshi/clai 3.18.3 → 4.0.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 +44 -24
- package/bin/postinstall-policy.mjs +3 -0
- package/bin/postinstall.mjs +6 -3
- package/dist/agent/confirm-port.d.ts +5 -17
- package/dist/agent/confirm-port.js +8 -65
- package/dist/agent/confirm-port.js.map +1 -1
- package/dist/agent/evidence-governor.d.ts +1 -1
- package/dist/agent/evidence-governor.js +2 -2
- package/dist/agent/evidence-governor.js.map +1 -1
- package/dist/agent/finalize-gate.d.ts +0 -1
- package/dist/agent/finalize-gate.js +6 -24
- package/dist/agent/finalize-gate.js.map +1 -1
- package/dist/agent/loop-guard.d.ts +1 -0
- package/dist/agent/loop-guard.js +34 -1
- package/dist/agent/loop-guard.js.map +1 -1
- package/dist/agent/must-continue.d.ts +1 -4
- package/dist/agent/must-continue.js +0 -22
- package/dist/agent/must-continue.js.map +1 -1
- package/dist/agent/outcomes.js +2 -13
- package/dist/agent/outcomes.js.map +1 -1
- package/dist/agent/plan-decision.d.ts +0 -29
- package/dist/agent/plan-decision.js +0 -96
- package/dist/agent/plan-decision.js.map +1 -1
- package/dist/agent/plan-tool.js +19 -14
- package/dist/agent/plan-tool.js.map +1 -1
- package/dist/agent/progress-pause-policy.d.ts +0 -15
- package/dist/agent/progress-pause-policy.js +0 -15
- package/dist/agent/progress-pause-policy.js.map +1 -1
- package/dist/agent/runner.js +152 -393
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/task-evidence.d.ts +6 -0
- package/dist/agent/task-evidence.js +48 -3
- package/dist/agent/task-evidence.js.map +1 -1
- package/dist/agent/tool-history.js +11 -4
- package/dist/agent/tool-history.js.map +1 -1
- package/dist/app/commands/catalog.js +397 -0
- package/dist/app/commands/catalog.js.map +1 -0
- package/dist/app/commands/registry.js +1 -1
- package/dist/app/commands/registry.js.map +1 -1
- package/dist/app/confirm-prompt-text.d.ts +17 -0
- package/dist/app/confirm-prompt-text.js +34 -0
- package/dist/app/confirm-prompt-text.js.map +1 -0
- package/dist/app/controllers/session-controller.d.ts +1 -1
- package/dist/app/controllers/session-controller.js +3 -1
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/app/controllers/session-prompt-queue.d.ts +5 -1
- package/dist/app/controllers/session-prompt-queue.js +47 -30
- package/dist/app/controllers/session-prompt-queue.js.map +1 -1
- package/dist/app/controllers/turn-controller.js +41 -3
- package/dist/app/controllers/turn-controller.js.map +1 -1
- package/dist/app/ports/confirm-port.d.ts +0 -1
- package/dist/app/ports/persistence-port.d.ts +1 -1
- package/dist/app/ports/transcript-item.d.ts +63 -0
- package/dist/app/ports/transcript-item.js +2 -0
- package/dist/app/ports/transcript-item.js.map +1 -0
- package/dist/classic/app/ClassicApp.d.ts +12 -0
- package/dist/classic/app/ClassicApp.js +119 -0
- package/dist/classic/app/ClassicApp.js.map +1 -0
- package/dist/classic/app/action-handlers.d.ts +45 -0
- package/dist/classic/app/action-handlers.js +280 -0
- package/dist/classic/app/action-handlers.js.map +1 -0
- package/dist/classic/app/app-wiring.d.ts +133 -0
- package/dist/classic/app/app-wiring.js +383 -0
- package/dist/classic/app/app-wiring.js.map +1 -0
- package/dist/classic/app/git-branch.d.ts +1 -0
- package/dist/classic/app/git-branch.js +50 -0
- package/dist/classic/app/git-branch.js.map +1 -0
- package/dist/classic/app/use-feed.d.ts +40 -0
- package/dist/classic/app/use-feed.js +52 -0
- package/dist/classic/app/use-feed.js.map +1 -0
- package/dist/classic/app/wiring-interactions.d.ts +40 -0
- package/dist/classic/app/wiring-interactions.js +433 -0
- package/dist/classic/app/wiring-interactions.js.map +1 -0
- package/dist/classic/app/wiring-lifecycle.d.ts +10 -0
- package/dist/classic/app/wiring-lifecycle.js +242 -0
- package/dist/classic/app/wiring-lifecycle.js.map +1 -0
- package/dist/classic/app/wiring-selection.d.ts +3 -0
- package/dist/classic/app/wiring-selection.js +113 -0
- package/dist/classic/app/wiring-selection.js.map +1 -0
- package/dist/classic/app/wiring-types.d.ts +157 -0
- package/dist/classic/app/wiring-types.js +2 -0
- package/dist/classic/app/wiring-types.js.map +1 -0
- package/dist/classic/blocks/AssistantBlock.d.ts +3 -0
- package/dist/classic/blocks/AssistantBlock.js +6 -0
- package/dist/classic/blocks/AssistantBlock.js.map +1 -0
- package/dist/classic/blocks/BatchBlock.d.ts +3 -0
- package/dist/classic/blocks/BatchBlock.js +6 -0
- package/dist/classic/blocks/BatchBlock.js.map +1 -0
- package/dist/classic/blocks/CompactedBlock.d.ts +3 -0
- package/dist/classic/blocks/CompactedBlock.js +6 -0
- package/dist/classic/blocks/CompactedBlock.js.map +1 -0
- package/dist/classic/blocks/DiffBlock.d.ts +3 -0
- package/dist/classic/blocks/DiffBlock.js +6 -0
- package/dist/classic/blocks/DiffBlock.js.map +1 -0
- package/dist/classic/blocks/IntroBlock.d.ts +3 -0
- package/dist/classic/blocks/IntroBlock.js +6 -0
- package/dist/classic/blocks/IntroBlock.js.map +1 -0
- package/dist/classic/blocks/NoticeBlock.d.ts +3 -0
- package/dist/classic/blocks/NoticeBlock.js +6 -0
- package/dist/classic/blocks/NoticeBlock.js.map +1 -0
- package/dist/classic/blocks/ThinkingBlock.d.ts +3 -0
- package/dist/classic/blocks/ThinkingBlock.js +6 -0
- package/dist/classic/blocks/ThinkingBlock.js.map +1 -0
- package/dist/classic/blocks/ToolBlock.d.ts +3 -0
- package/dist/classic/blocks/ToolBlock.js +6 -0
- package/dist/classic/blocks/ToolBlock.js.map +1 -0
- package/dist/classic/blocks/UserBlock.d.ts +3 -0
- package/dist/classic/blocks/UserBlock.js +6 -0
- package/dist/classic/blocks/UserBlock.js.map +1 -0
- package/dist/classic/blocks/assistant-lines.d.ts +10 -0
- package/dist/classic/blocks/assistant-lines.js +43 -0
- package/dist/classic/blocks/assistant-lines.js.map +1 -0
- package/dist/classic/blocks/batch-lines.d.ts +7 -0
- package/dist/classic/blocks/batch-lines.js +79 -0
- package/dist/classic/blocks/batch-lines.js.map +1 -0
- package/dist/classic/blocks/block-context.d.ts +33 -0
- package/dist/classic/blocks/block-context.js +41 -0
- package/dist/classic/blocks/block-context.js.map +1 -0
- package/dist/classic/blocks/compacted-lines.d.ts +5 -0
- package/dist/classic/blocks/compacted-lines.js +54 -0
- package/dist/classic/blocks/compacted-lines.js.map +1 -0
- package/dist/classic/blocks/diff-lines.d.ts +13 -0
- package/dist/classic/blocks/diff-lines.js +116 -0
- package/dist/classic/blocks/diff-lines.js.map +1 -0
- package/dist/classic/blocks/intro-lines.d.ts +16 -0
- package/dist/classic/blocks/intro-lines.js +23 -0
- package/dist/classic/blocks/intro-lines.js.map +1 -0
- package/dist/classic/blocks/notice-lines.d.ts +7 -0
- package/dist/classic/blocks/notice-lines.js +28 -0
- package/dist/classic/blocks/notice-lines.js.map +1 -0
- package/dist/classic/blocks/thinking-lines.d.ts +5 -0
- package/dist/classic/blocks/thinking-lines.js +34 -0
- package/dist/classic/blocks/thinking-lines.js.map +1 -0
- package/dist/classic/blocks/tool-lines.d.ts +22 -0
- package/dist/classic/blocks/tool-lines.js +135 -0
- package/dist/classic/blocks/tool-lines.js.map +1 -0
- package/dist/classic/blocks/user-lines.d.ts +5 -0
- package/dist/classic/blocks/user-lines.js +26 -0
- package/dist/classic/blocks/user-lines.js.map +1 -0
- package/dist/classic/bootstrap/osc52-renderer.d.ts +10 -0
- package/dist/classic/bootstrap/osc52-renderer.js +38 -0
- package/dist/classic/bootstrap/osc52-renderer.js.map +1 -0
- package/dist/classic/bootstrap/renderer-handle.d.ts +15 -0
- package/dist/classic/bootstrap/renderer-handle.js +22 -0
- package/dist/classic/bootstrap/renderer-handle.js.map +1 -0
- package/dist/classic/bootstrap/start-classic.d.ts +8 -0
- package/dist/classic/bootstrap/start-classic.js +130 -0
- package/dist/classic/bootstrap/start-classic.js.map +1 -0
- package/dist/classic/bootstrap/suspend-port.d.ts +14 -0
- package/dist/classic/bootstrap/suspend-port.js +29 -0
- package/dist/classic/bootstrap/suspend-port.js.map +1 -0
- package/dist/classic/bootstrap/terminal-session.d.ts +58 -0
- package/dist/classic/bootstrap/terminal-session.js +136 -0
- package/dist/classic/bootstrap/terminal-session.js.map +1 -0
- package/dist/classic/chrome/Chrome.d.ts +19 -0
- package/dist/classic/chrome/Chrome.js +30 -0
- package/dist/classic/chrome/Chrome.js.map +1 -0
- package/dist/classic/chrome/Composer.d.ts +12 -0
- package/dist/classic/chrome/Composer.js +61 -0
- package/dist/classic/chrome/Composer.js.map +1 -0
- package/dist/classic/chrome/QueuePanel.d.ts +3 -0
- package/dist/classic/chrome/QueuePanel.js +10 -0
- package/dist/classic/chrome/QueuePanel.js.map +1 -0
- package/dist/classic/chrome/ResponderStrip.d.ts +3 -0
- package/dist/classic/chrome/ResponderStrip.js +9 -0
- package/dist/classic/chrome/ResponderStrip.js.map +1 -0
- package/dist/classic/chrome/StatusBar.d.ts +3 -0
- package/dist/classic/chrome/StatusBar.js +7 -0
- package/dist/classic/chrome/StatusBar.js.map +1 -0
- package/dist/classic/chrome/ToastRow.d.ts +3 -0
- package/dist/classic/chrome/ToastRow.js +10 -0
- package/dist/classic/chrome/ToastRow.js.map +1 -0
- package/dist/classic/chrome/composer-controller.d.ts +57 -0
- package/dist/classic/chrome/composer-controller.js +345 -0
- package/dist/classic/chrome/composer-controller.js.map +1 -0
- package/dist/classic/chrome/composer-frame.d.ts +35 -0
- package/dist/classic/chrome/composer-frame.js +46 -0
- package/dist/classic/chrome/composer-frame.js.map +1 -0
- package/dist/classic/chrome/composer-keys.d.ts +4 -0
- package/dist/classic/chrome/composer-keys.js +45 -0
- package/dist/classic/chrome/composer-keys.js.map +1 -0
- package/dist/classic/chrome/context-limit-editor.d.ts +7 -0
- package/dist/classic/chrome/context-limit-editor.js +13 -0
- package/dist/classic/chrome/context-limit-editor.js.map +1 -0
- package/dist/classic/chrome/directory-row.d.ts +14 -0
- package/dist/classic/chrome/directory-row.js +26 -0
- package/dist/classic/chrome/directory-row.js.map +1 -0
- package/dist/classic/chrome/editor-model.d.ts +37 -0
- package/dist/classic/chrome/editor-model.js +195 -0
- package/dist/classic/chrome/editor-model.js.map +1 -0
- package/dist/classic/chrome/editor-view.d.ts +34 -0
- package/dist/classic/chrome/editor-view.js +141 -0
- package/dist/classic/chrome/editor-view.js.map +1 -0
- package/dist/classic/chrome/queue-rows.d.ts +10 -0
- package/dist/classic/chrome/queue-rows.js +32 -0
- package/dist/classic/chrome/queue-rows.js.map +1 -0
- package/dist/classic/chrome/responder-row.d.ts +9 -0
- package/dist/classic/chrome/responder-row.js +17 -0
- package/dist/classic/chrome/responder-row.js.map +1 -0
- package/dist/classic/chrome/row-budget.d.ts +43 -0
- package/dist/classic/chrome/row-budget.js +78 -0
- package/dist/classic/chrome/row-budget.js.map +1 -0
- package/dist/classic/chrome/status-rows.d.ts +44 -0
- package/dist/classic/chrome/status-rows.js +165 -0
- package/dist/classic/chrome/status-rows.js.map +1 -0
- package/dist/classic/chrome/toast-rows.d.ts +14 -0
- package/dist/classic/chrome/toast-rows.js +82 -0
- package/dist/classic/chrome/toast-rows.js.map +1 -0
- package/dist/classic/chrome/use-terminal-size.d.ts +14 -0
- package/dist/classic/chrome/use-terminal-size.js +38 -0
- package/dist/classic/chrome/use-terminal-size.js.map +1 -0
- package/dist/classic/feed/Feed.d.ts +17 -0
- package/dist/classic/feed/Feed.js +37 -0
- package/dist/classic/feed/Feed.js.map +1 -0
- package/dist/classic/feed/FeedStatic.d.ts +13 -0
- package/dist/classic/feed/FeedStatic.js +15 -0
- package/dist/classic/feed/FeedStatic.js.map +1 -0
- package/dist/classic/feed/LiveTail.d.ts +10 -0
- package/dist/classic/feed/LiveTail.js +20 -0
- package/dist/classic/feed/LiveTail.js.map +1 -0
- package/dist/classic/feed/ScrollbarGutter.d.ts +9 -0
- package/dist/classic/feed/ScrollbarGutter.js +42 -0
- package/dist/classic/feed/ScrollbarGutter.js.map +1 -0
- package/dist/classic/feed/block-height.d.ts +12 -0
- package/dist/classic/feed/block-height.js +34 -0
- package/dist/classic/feed/block-height.js.map +1 -0
- package/dist/classic/feed/commit-ledger.d.ts +26 -0
- package/dist/classic/feed/commit-ledger.js +52 -0
- package/dist/classic/feed/commit-ledger.js.map +1 -0
- package/dist/classic/feed/feed-blocks.d.ts +39 -0
- package/dist/classic/feed/feed-blocks.js +124 -0
- package/dist/classic/feed/feed-blocks.js.map +1 -0
- package/dist/classic/feed/live-tail-policy.d.ts +35 -0
- package/dist/classic/feed/live-tail-policy.js +80 -0
- package/dist/classic/feed/live-tail-policy.js.map +1 -0
- package/dist/classic/feed/scrollbar-rows.d.ts +6 -0
- package/dist/classic/feed/scrollbar-rows.js +18 -0
- package/dist/classic/feed/scrollbar-rows.js.map +1 -0
- package/dist/classic/feed/transcript-selection.d.ts +16 -0
- package/dist/classic/feed/transcript-selection.js +92 -0
- package/dist/classic/feed/transcript-selection.js.map +1 -0
- package/dist/classic/feed/transcript-window.d.ts +33 -0
- package/dist/classic/feed/transcript-window.js +53 -0
- package/dist/classic/feed/transcript-window.js.map +1 -0
- package/dist/classic/input/cancel-ladder.d.ts +47 -0
- package/dist/classic/input/cancel-ladder.js +100 -0
- package/dist/classic/input/cancel-ladder.js.map +1 -0
- package/dist/classic/input/chord-from-key.d.ts +2 -0
- package/dist/classic/input/chord-from-key.js +25 -0
- package/dist/classic/input/chord-from-key.js.map +1 -0
- package/dist/classic/input/input-router.d.ts +33 -0
- package/dist/classic/input/input-router.js +146 -0
- package/dist/classic/input/input-router.js.map +1 -0
- package/dist/classic/input/key-event.d.ts +39 -0
- package/dist/classic/input/key-event.js +12 -0
- package/dist/classic/input/key-event.js.map +1 -0
- package/dist/classic/input/paste-decoder.d.ts +1 -0
- package/dist/classic/input/paste-decoder.js +9 -0
- package/dist/classic/input/paste-decoder.js.map +1 -0
- package/dist/classic/input/raw-decoder.d.ts +31 -0
- package/dist/classic/input/raw-decoder.js +325 -0
- package/dist/classic/input/raw-decoder.js.map +1 -0
- package/dist/classic/input/sgr-mouse.d.ts +2 -0
- package/dist/classic/input/sgr-mouse.js +37 -0
- package/dist/classic/input/sgr-mouse.js.map +1 -0
- package/dist/classic/input/terminal-sequences.d.ts +38 -0
- package/dist/classic/input/terminal-sequences.js +111 -0
- package/dist/classic/input/terminal-sequences.js.map +1 -0
- package/dist/classic/panels/CompletionPanel.d.ts +3 -0
- package/dist/classic/panels/CompletionPanel.js +10 -0
- package/dist/classic/panels/CompletionPanel.js.map +1 -0
- package/dist/classic/panels/ConfirmPanel.d.ts +3 -0
- package/dist/classic/panels/ConfirmPanel.js +7 -0
- package/dist/classic/panels/ConfirmPanel.js.map +1 -0
- package/dist/classic/panels/JobsPanel.d.ts +3 -0
- package/dist/classic/panels/JobsPanel.js +7 -0
- package/dist/classic/panels/JobsPanel.js.map +1 -0
- package/dist/classic/panels/KeysPanel.d.ts +3 -0
- package/dist/classic/panels/KeysPanel.js +7 -0
- package/dist/classic/panels/KeysPanel.js.map +1 -0
- package/dist/classic/panels/PagerPanel.d.ts +3 -0
- package/dist/classic/panels/PagerPanel.js +7 -0
- package/dist/classic/panels/PagerPanel.js.map +1 -0
- package/dist/classic/panels/PanelFrame.d.ts +3 -0
- package/dist/classic/panels/PanelFrame.js +8 -0
- package/dist/classic/panels/PanelFrame.js.map +1 -0
- package/dist/classic/panels/PickerPanel.d.ts +3 -0
- package/dist/classic/panels/PickerPanel.js +7 -0
- package/dist/classic/panels/PickerPanel.js.map +1 -0
- package/dist/classic/panels/PlanPanel.d.ts +3 -0
- package/dist/classic/panels/PlanPanel.js +7 -0
- package/dist/classic/panels/PlanPanel.js.map +1 -0
- package/dist/classic/panels/PromptActionsPanel.d.ts +3 -0
- package/dist/classic/panels/PromptActionsPanel.js +7 -0
- package/dist/classic/panels/PromptActionsPanel.js.map +1 -0
- package/dist/classic/panels/ScopePanel.d.ts +3 -0
- package/dist/classic/panels/ScopePanel.js +7 -0
- package/dist/classic/panels/ScopePanel.js.map +1 -0
- package/dist/classic/panels/SearchPanel.d.ts +3 -0
- package/dist/classic/panels/SearchPanel.js +7 -0
- package/dist/classic/panels/SearchPanel.js.map +1 -0
- package/dist/classic/panels/SecretPanel.d.ts +3 -0
- package/dist/classic/panels/SecretPanel.js +7 -0
- package/dist/classic/panels/SecretPanel.js.map +1 -0
- package/dist/classic/panels/completion-accept.d.ts +17 -0
- package/dist/classic/panels/completion-accept.js +58 -0
- package/dist/classic/panels/completion-accept.js.map +1 -0
- package/dist/classic/panels/completion-rows.d.ts +29 -0
- package/dist/classic/panels/completion-rows.js +135 -0
- package/dist/classic/panels/completion-rows.js.map +1 -0
- package/dist/classic/panels/confirm-panel.d.ts +24 -0
- package/dist/classic/panels/confirm-panel.js +115 -0
- package/dist/classic/panels/confirm-panel.js.map +1 -0
- package/dist/classic/panels/jobs-panel.d.ts +32 -0
- package/dist/classic/panels/jobs-panel.js +116 -0
- package/dist/classic/panels/jobs-panel.js.map +1 -0
- package/dist/classic/panels/keys-panel.d.ts +40 -0
- package/dist/classic/panels/keys-panel.js +174 -0
- package/dist/classic/panels/keys-panel.js.map +1 -0
- package/dist/classic/panels/list-rows.d.ts +27 -0
- package/dist/classic/panels/list-rows.js +42 -0
- package/dist/classic/panels/list-rows.js.map +1 -0
- package/dist/classic/panels/list-window.d.ts +15 -0
- package/dist/classic/panels/list-window.js +25 -0
- package/dist/classic/panels/list-window.js.map +1 -0
- package/dist/classic/panels/pager-panel.d.ts +50 -0
- package/dist/classic/panels/pager-panel.js +238 -0
- package/dist/classic/panels/pager-panel.js.map +1 -0
- package/dist/classic/panels/panel-controller.d.ts +29 -0
- package/dist/classic/panels/panel-controller.js +320 -0
- package/dist/classic/panels/panel-controller.js.map +1 -0
- package/dist/classic/panels/panel-effect.d.ts +74 -0
- package/dist/classic/panels/panel-effect.js +7 -0
- package/dist/classic/panels/panel-effect.js.map +1 -0
- package/dist/classic/panels/panel-effects.d.ts +11 -0
- package/dist/classic/panels/panel-effects.js +105 -0
- package/dist/classic/panels/panel-effects.js.map +1 -0
- package/dist/classic/panels/panel-frame.d.ts +20 -0
- package/dist/classic/panels/panel-frame.js +47 -0
- package/dist/classic/panels/panel-frame.js.map +1 -0
- package/dist/classic/panels/panel-host.d.ts +16 -0
- package/dist/classic/panels/panel-host.js +49 -0
- package/dist/classic/panels/panel-host.js.map +1 -0
- package/dist/classic/panels/panel-initial-states.d.ts +18 -0
- package/dist/classic/panels/panel-initial-states.js +33 -0
- package/dist/classic/panels/panel-initial-states.js.map +1 -0
- package/dist/classic/panels/panel-types.d.ts +47 -0
- package/dist/classic/panels/panel-types.js +2 -0
- package/dist/classic/panels/panel-types.js.map +1 -0
- package/dist/classic/panels/panel-wheel.d.ts +20 -0
- package/dist/classic/panels/panel-wheel.js +82 -0
- package/dist/classic/panels/panel-wheel.js.map +1 -0
- package/dist/classic/panels/picker-panel.d.ts +35 -0
- package/dist/classic/panels/picker-panel.js +150 -0
- package/dist/classic/panels/picker-panel.js.map +1 -0
- package/dist/classic/panels/plan-panel.d.ts +27 -0
- package/dist/classic/panels/plan-panel.js +98 -0
- package/dist/classic/panels/plan-panel.js.map +1 -0
- package/dist/classic/panels/prompt-actions-panel.d.ts +25 -0
- package/dist/classic/panels/prompt-actions-panel.js +57 -0
- package/dist/classic/panels/prompt-actions-panel.js.map +1 -0
- package/dist/classic/panels/scope-panel.d.ts +27 -0
- package/dist/classic/panels/scope-panel.js +122 -0
- package/dist/classic/panels/scope-panel.js.map +1 -0
- package/dist/classic/panels/search-panel.d.ts +32 -0
- package/dist/classic/panels/search-panel.js +126 -0
- package/dist/classic/panels/search-panel.js.map +1 -0
- package/dist/classic/panels/secret-panel.d.ts +28 -0
- package/dist/classic/panels/secret-panel.js +70 -0
- package/dist/classic/panels/secret-panel.js.map +1 -0
- package/dist/classic/render/ansi-text.d.ts +36 -0
- package/dist/classic/render/ansi-text.js +234 -0
- package/dist/classic/render/ansi-text.js.map +1 -0
- package/dist/classic/render/glyphs.d.ts +49 -0
- package/dist/classic/render/glyphs.js +111 -0
- package/dist/classic/render/glyphs.js.map +1 -0
- package/dist/classic/render/ink-theme.d.ts +49 -0
- package/dist/classic/render/ink-theme.js +73 -0
- package/dist/classic/render/ink-theme.js.map +1 -0
- package/dist/classic/render/measure.d.ts +17 -0
- package/dist/classic/render/measure.js +33 -0
- package/dist/classic/render/measure.js.map +1 -0
- package/dist/classic/render/shell-width.d.ts +12 -0
- package/dist/classic/render/shell-width.js +23 -0
- package/dist/classic/render/shell-width.js.map +1 -0
- package/dist/classic/render/wrap.d.ts +19 -0
- package/dist/classic/render/wrap.js +102 -0
- package/dist/classic/render/wrap.js.map +1 -0
- package/dist/commands/doctor.js +9 -8
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/providers.js +43 -50
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/search-providers.js +3 -5
- package/dist/commands/search-providers.js.map +1 -1
- package/dist/index.js +76 -84
- package/dist/index.js.map +1 -1
- package/dist/llm/capabilities.js +5 -2
- package/dist/llm/capabilities.js.map +1 -1
- package/dist/llm/custom-providers.js +16 -3
- package/dist/llm/custom-providers.js.map +1 -1
- package/dist/llm/http.d.ts +5 -0
- package/dist/llm/http.js +38 -8
- package/dist/llm/http.js.map +1 -1
- package/dist/llm/meta.js +56 -24
- package/dist/llm/meta.js.map +1 -1
- package/dist/llm/modal.js +3 -2
- package/dist/llm/modal.js.map +1 -1
- package/dist/llm/router.js +36 -23
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/system-messages.d.ts +1 -0
- package/dist/llm/system-messages.js +6 -0
- package/dist/llm/system-messages.js.map +1 -1
- package/dist/llm/token-usage.js +11 -1
- package/dist/llm/token-usage.js.map +1 -1
- package/dist/llm/tool-protocol.js +10 -3
- package/dist/llm/tool-protocol.js.map +1 -1
- package/dist/modes/agent.d.ts +3 -0
- package/dist/modes/agent.js +10 -3
- package/dist/modes/agent.js.map +1 -1
- package/dist/modes/ask.js +2 -2
- package/dist/modes/ask.js.map +1 -1
- package/dist/noninteractive/read-stdin.d.ts +1 -0
- package/dist/noninteractive/read-stdin.js +8 -0
- package/dist/noninteractive/read-stdin.js.map +1 -0
- package/dist/noninteractive/readline-prompts.d.ts +47 -0
- package/dist/noninteractive/readline-prompts.js +201 -0
- package/dist/noninteractive/readline-prompts.js.map +1 -0
- package/dist/noninteractive/start-noninteractive.d.ts +32 -0
- package/dist/noninteractive/start-noninteractive.js +100 -0
- package/dist/noninteractive/start-noninteractive.js.map +1 -0
- package/dist/noninteractive/stdio-confirm-port.d.ts +15 -0
- package/dist/noninteractive/stdio-confirm-port.js +45 -0
- package/dist/noninteractive/stdio-confirm-port.js.map +1 -0
- package/dist/noninteractive/stream-blocks.d.ts +117 -0
- package/dist/noninteractive/stream-blocks.js +445 -0
- package/dist/noninteractive/stream-blocks.js.map +1 -0
- package/dist/noninteractive/stream-renderer.d.ts +40 -0
- package/dist/noninteractive/stream-renderer.js +164 -0
- package/dist/noninteractive/stream-renderer.js.map +1 -0
- package/dist/noninteractive/stream-spinner.d.ts +28 -0
- package/dist/noninteractive/stream-spinner.js +45 -0
- package/dist/noninteractive/stream-spinner.js.map +1 -0
- package/dist/os/bun-runtime.js +207 -0
- package/dist/os/bun-runtime.js.map +1 -0
- package/dist/store/config.d.ts +3 -1
- package/dist/store/config.js +37 -5
- package/dist/store/config.js.map +1 -1
- package/dist/store/history.d.ts +1 -1
- package/dist/store/history.js +3 -0
- package/dist/store/history.js.map +1 -1
- package/dist/store/keys.d.ts +5 -2
- package/dist/store/keys.js +97 -14
- package/dist/store/keys.js.map +1 -1
- package/dist/tools/registry.js +27 -4
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/web/providers/duckduckgo.js +1 -1
- package/dist/tools/web/providers/duckduckgo.js.map +1 -1
- package/dist/tools/web/readable.js +1 -1
- package/dist/tools/web/readable.js.map +1 -1
- package/dist/tui-v2/app/App.js +20 -28
- package/dist/tui-v2/app/App.js.map +1 -1
- package/dist/tui-v2/bootstrap/pager-export.d.ts +9 -18
- package/dist/tui-v2/bootstrap/pager-export.js +15 -72
- package/dist/tui-v2/bootstrap/pager-export.js.map +1 -1
- package/dist/tui-v2/bootstrap/start-tui-v2.js +8 -8
- package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
- package/dist/tui-v2/components/completion/completion-menu.d.ts +2 -2
- package/dist/tui-v2/components/composer/composer-input-box.d.ts +1 -1
- package/dist/tui-v2/components/composer/paste-chip.d.ts +2 -2
- package/dist/tui-v2/components/composer/paste-chip.js +1 -1
- package/dist/tui-v2/components/composer/paste-chip.js.map +1 -1
- package/dist/tui-v2/components/jobs/jobs-panel.d.ts +2 -2
- package/dist/tui-v2/components/jobs/jobs-panel.js +4 -4
- package/dist/tui-v2/components/jobs/jobs-panel.js.map +1 -1
- package/dist/tui-v2/components/modal/confirm-modal.d.ts +3 -3
- package/dist/tui-v2/components/modal/confirm-modal.js +6 -6
- package/dist/tui-v2/components/modal/confirm-modal.js.map +1 -1
- package/dist/tui-v2/components/modal/keys-modal.d.ts +3 -3
- package/dist/tui-v2/components/modal/keys-modal.js +24 -9
- package/dist/tui-v2/components/modal/keys-modal.js.map +1 -1
- package/dist/tui-v2/components/modal/prompt-actions-modal.d.ts +3 -3
- package/dist/tui-v2/components/modal/prompt-actions-modal.js +2 -2
- package/dist/tui-v2/components/modal/prompt-actions-modal.js.map +1 -1
- package/dist/tui-v2/components/modal/scope-modal.d.ts +3 -3
- package/dist/tui-v2/components/modal/scope-modal.js +1 -1
- package/dist/tui-v2/components/modal/scope-modal.js.map +1 -1
- package/dist/tui-v2/components/modal/secret-modal.d.ts +3 -3
- package/dist/tui-v2/components/modal/secret-modal.js +2 -2
- package/dist/tui-v2/components/modal/secret-modal.js.map +1 -1
- package/dist/tui-v2/components/overlay/overlay-host.d.ts +2 -2
- 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-line.d.ts +3 -3
- package/dist/tui-v2/components/pager/pager-line.js +3 -3
- package/dist/tui-v2/components/pager/pager-line.js.map +1 -1
- package/dist/tui-v2/components/pager/pager.d.ts +3 -3
- package/dist/tui-v2/components/pager/pager.js +6 -5
- package/dist/tui-v2/components/pager/pager.js.map +1 -1
- package/dist/tui-v2/components/picker/picker.d.ts +3 -3
- package/dist/tui-v2/components/picker/picker.js +2 -2
- package/dist/tui-v2/components/picker/picker.js.map +1 -1
- package/dist/tui-v2/components/plan/plan-pane-anim.js +1 -1
- package/dist/tui-v2/components/plan/plan-pane-anim.js.map +1 -1
- package/dist/tui-v2/components/plan/plan-view.d.ts +2 -2
- package/dist/tui-v2/components/plan/plan-view.js +2 -2
- package/dist/tui-v2/components/plan/plan-view.js.map +1 -1
- package/dist/tui-v2/components/queue/queue-panel.d.ts +2 -2
- package/dist/tui-v2/components/queue/queue-panel.js +3 -3
- package/dist/tui-v2/components/queue/queue-panel.js.map +1 -1
- package/dist/tui-v2/components/status/context-limit-chip.d.ts +1 -5
- package/dist/tui-v2/components/status/context-limit-chip.js +1 -38
- package/dist/tui-v2/components/status/context-limit-chip.js.map +1 -1
- package/dist/tui-v2/components/status/status-line.d.ts +5 -34
- package/dist/tui-v2/components/status/status-line.js +7 -99
- package/dist/tui-v2/components/status/status-line.js.map +1 -1
- package/dist/tui-v2/components/toast/toast-anim.d.ts +0 -1
- package/dist/tui-v2/components/toast/toast-anim.js +2 -3
- package/dist/tui-v2/components/toast/toast-anim.js.map +1 -1
- package/dist/tui-v2/components/toast/toast-host.d.ts +2 -2
- package/dist/tui-v2/components/toast/toast-host.js +2 -2
- package/dist/tui-v2/components/toast/toast-host.js.map +1 -1
- package/dist/tui-v2/components/transcript/assistant-message.d.ts +2 -2
- package/dist/tui-v2/components/transcript/assistant-message.js +3 -2
- package/dist/tui-v2/components/transcript/assistant-message.js.map +1 -1
- package/dist/tui-v2/components/transcript/compacted-row.d.ts +3 -3
- package/dist/tui-v2/components/transcript/compacted-row.js +6 -5
- package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -1
- package/dist/tui-v2/components/transcript/file-diff-card.d.ts +1 -1
- package/dist/tui-v2/components/transcript/file-diff-card.js +1 -1
- package/dist/tui-v2/components/transcript/file-diff-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/intro-card.d.ts +2 -2
- package/dist/tui-v2/components/transcript/intro-card.js +1 -1
- package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/linkable-text.d.ts +1 -1
- package/dist/tui-v2/components/transcript/linkable-text.js +1 -1
- package/dist/tui-v2/components/transcript/linkable-text.js.map +1 -1
- package/dist/tui-v2/components/transcript/notice-row.d.ts +2 -2
- package/dist/tui-v2/components/transcript/search-bar.d.ts +1 -1
- package/dist/tui-v2/components/transcript/thinking-block.d.ts +2 -2
- package/dist/tui-v2/components/transcript/thinking-block.js +3 -3
- package/dist/tui-v2/components/transcript/thinking-block.js.map +1 -1
- package/dist/tui-v2/components/transcript/tool-card.d.ts +3 -3
- package/dist/tui-v2/components/transcript/tool-card.js +7 -7
- package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-row.d.ts +4 -4
- package/dist/tui-v2/components/transcript/transcript-scrollbar.d.ts +1 -1
- package/dist/tui-v2/components/transcript/transcript-view.d.ts +3 -3
- package/dist/tui-v2/components/transcript/transcript-view.js +6 -6
- package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
- package/dist/tui-v2/components/transcript/use-native-selection-copy.d.ts +1 -1
- package/dist/tui-v2/components/transcript/use-transcript-selection.d.ts +2 -2
- package/dist/tui-v2/components/transcript/use-transcript-selection.js +3 -3
- package/dist/tui-v2/components/transcript/use-transcript-selection.js.map +1 -1
- package/dist/tui-v2/components/transcript/user-message.d.ts +2 -2
- package/dist/tui-v2/components/transcript/user-message.js +1 -1
- package/dist/tui-v2/components/transcript/user-message.js.map +1 -1
- package/dist/tui-v2/composer/composer-editor.d.ts +2 -2
- package/dist/tui-v2/composer/composer-editor.js +20 -22
- package/dist/tui-v2/composer/composer-editor.js.map +1 -1
- package/dist/tui-v2/composer/composer-image-paste.d.ts +1 -1
- package/dist/tui-v2/composer/composer-image-paste.js +1 -1
- package/dist/tui-v2/composer/composer-image-paste.js.map +1 -1
- package/dist/tui-v2/composer/use-draft-actions.d.ts +2 -2
- package/dist/tui-v2/composer/use-draft-actions.js +2 -2
- package/dist/tui-v2/composer/use-draft-actions.js.map +1 -1
- package/dist/tui-v2/input/chord-from-opentui-key.d.ts +20 -0
- package/dist/tui-v2/input/chord-from-opentui-key.js +51 -0
- package/dist/tui-v2/input/chord-from-opentui-key.js.map +1 -0
- package/dist/tui-v2/rendering/pager-markdown.d.ts +2 -22
- package/dist/tui-v2/rendering/pager-markdown.js +4 -103
- package/dist/tui-v2/rendering/pager-markdown.js.map +1 -1
- package/dist/tui-v2/rendering/styled-markdown.d.ts +20 -0
- package/dist/tui-v2/rendering/styled-markdown.js +35 -0
- package/dist/tui-v2/rendering/styled-markdown.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/ui/mentions.d.ts +5 -8
- package/dist/ui/mentions.js +26 -8
- package/dist/ui/mentions.js.map +1 -1
- package/dist/ui/warn-once.d.ts +2 -0
- package/dist/ui/warn-once.js +13 -0
- package/dist/ui/warn-once.js.map +1 -0
- package/dist/ui-core/actions/action-id.d.ts +14 -0
- package/dist/ui-core/actions/action-id.js +123 -0
- package/dist/ui-core/actions/action-id.js.map +1 -0
- package/dist/ui-core/actions/action-router.js.map +1 -0
- package/dist/ui-core/actions/chord.d.ts +20 -0
- package/dist/ui-core/actions/chord.js +28 -0
- package/dist/ui-core/actions/chord.js.map +1 -0
- package/dist/ui-core/actions/format-shortcuts.js +267 -0
- package/dist/ui-core/actions/format-shortcuts.js.map +1 -0
- package/dist/ui-core/actions/keymap.d.ts +23 -0
- package/dist/ui-core/actions/keymap.js +145 -0
- package/dist/ui-core/actions/keymap.js.map +1 -0
- package/dist/ui-core/actions/mode-cycle.js.map +1 -0
- package/dist/ui-core/bootstrap/can-use-tui.js.map +1 -0
- package/dist/ui-core/bootstrap/capabilities.d.ts +37 -0
- package/dist/ui-core/bootstrap/capabilities.js +111 -0
- package/dist/ui-core/bootstrap/capabilities.js.map +1 -0
- package/dist/ui-core/bootstrap/composition-root.d.ts +92 -0
- package/dist/ui-core/bootstrap/composition-root.js.map +1 -0
- package/dist/ui-core/bootstrap/console-guard.js.map +1 -0
- package/dist/ui-core/bootstrap/console-suppress.js.map +1 -0
- package/dist/ui-core/bootstrap/lifecycle.js.map +1 -0
- package/dist/ui-core/bootstrap/overlay-ports.js +92 -0
- package/dist/ui-core/bootstrap/overlay-ports.js.map +1 -0
- package/dist/ui-core/bootstrap/ui-selection.d.ts +27 -0
- package/dist/ui-core/bootstrap/ui-selection.js +109 -0
- package/dist/ui-core/bootstrap/ui-selection.js.map +1 -0
- package/dist/ui-core/commands/command-handlers.js +86 -0
- package/dist/ui-core/commands/command-handlers.js.map +1 -0
- package/dist/ui-core/commands/config-commands.d.ts +14 -0
- package/dist/ui-core/commands/config-commands.js +315 -0
- package/dist/ui-core/commands/config-commands.js.map +1 -0
- package/dist/ui-core/commands/key-commands.d.ts +9 -0
- package/dist/ui-core/commands/key-commands.js +532 -0
- package/dist/ui-core/commands/key-commands.js.map +1 -0
- package/dist/ui-core/commands/picker-commands.d.ts +25 -0
- package/dist/ui-core/commands/picker-commands.js +1045 -0
- package/dist/ui-core/commands/picker-commands.js.map +1 -0
- package/dist/ui-core/commands/session-commands.d.ts +19 -0
- package/dist/ui-core/commands/session-commands.js +183 -0
- package/dist/ui-core/commands/session-commands.js.map +1 -0
- package/dist/ui-core/commands/startup-update.js.map +1 -0
- package/dist/ui-core/composer/arrow-intent.js.map +1 -0
- package/dist/ui-core/composer/completion.js.map +1 -0
- package/dist/ui-core/composer/composer-action-port.js.map +1 -0
- package/dist/ui-core/composer/composer-height.js +29 -0
- package/dist/ui-core/composer/composer-height.js.map +1 -0
- package/dist/ui-core/composer/composer-image-paste.d.ts +20 -0
- package/dist/ui-core/composer/composer-image-paste.js +77 -0
- package/dist/ui-core/composer/composer-image-paste.js.map +1 -0
- package/dist/ui-core/composer/composer-meta.js.map +1 -0
- package/dist/ui-core/composer/composer-wheel.d.ts +58 -0
- package/dist/ui-core/composer/composer-wheel.js +108 -0
- package/dist/ui-core/composer/composer-wheel.js.map +1 -0
- package/dist/ui-core/composer/draft-actions.d.ts +31 -0
- package/dist/ui-core/composer/draft-actions.js +45 -0
- package/dist/ui-core/composer/draft-actions.js.map +1 -0
- package/dist/ui-core/composer/history-nav.js.map +1 -0
- package/dist/ui-core/composer/input-history.js +9 -0
- package/dist/ui-core/composer/input-history.js.map +1 -0
- package/dist/ui-core/composer/newline-hint.d.ts +13 -0
- package/dist/ui-core/composer/newline-hint.js.map +1 -0
- package/dist/ui-core/composer/paste-placeholder.js.map +1 -0
- package/dist/ui-core/composer/prompt-history.js.map +1 -0
- package/dist/ui-core/composer/secret-buffer.js.map +1 -0
- package/dist/ui-core/composer/textarea-keybindings.d.ts +25 -0
- package/dist/ui-core/composer/textarea-keybindings.js +84 -0
- package/dist/ui-core/composer/textarea-keybindings.js.map +1 -0
- package/dist/ui-core/controllers/focus-controller.js.map +1 -0
- package/dist/ui-core/controllers/interruptible-controller.js.map +1 -0
- package/dist/ui-core/controllers/overlay-controller.d.ts +211 -0
- package/dist/ui-core/controllers/overlay-controller.js.map +1 -0
- package/dist/ui-core/controllers/selection-controller.js.map +1 -0
- package/dist/ui-core/controllers/toast-controller.js.map +1 -0
- package/dist/ui-core/layout/compute-layout.js.map +1 -0
- package/dist/ui-core/motion/ease.js.map +1 -0
- package/dist/ui-core/notify.js.map +1 -0
- package/dist/ui-core/plan/plan-lifecycle.js.map +1 -0
- package/dist/ui-core/ports/clipboard-osc52.js +44 -0
- package/dist/ui-core/ports/clipboard-osc52.js.map +1 -0
- package/dist/ui-core/ports/pager-export-port.d.ts +16 -0
- package/dist/ui-core/ports/pager-export-port.js +70 -0
- package/dist/ui-core/ports/pager-export-port.js.map +1 -0
- package/dist/ui-core/ports/renderer-port.d.ts +10 -0
- package/dist/ui-core/ports/renderer-port.js +2 -0
- package/dist/ui-core/ports/renderer-port.js.map +1 -0
- package/dist/ui-core/react/providers.d.ts +16 -0
- package/dist/ui-core/react/providers.js +31 -0
- package/dist/ui-core/react/providers.js.map +1 -0
- package/dist/ui-core/react/use-has-draft.js.map +1 -0
- package/dist/ui-core/react/use-overlay.js.map +1 -0
- package/dist/ui-core/react/use-plan.js.map +1 -0
- package/dist/ui-core/react/use-session-state.js.map +1 -0
- package/dist/ui-core/react/use-toast.js.map +1 -0
- package/dist/ui-core/react/use-transcript-store.d.ts +10 -0
- package/dist/ui-core/react/use-transcript-store.js.map +1 -0
- package/dist/ui-core/rendering/artifact-pager-source.js.map +1 -0
- package/dist/ui-core/rendering/batch-sections.js.map +1 -0
- package/dist/ui-core/rendering/code-block.d.ts +48 -0
- package/dist/ui-core/rendering/code-block.js +407 -0
- package/dist/ui-core/rendering/code-block.js.map +1 -0
- package/dist/ui-core/rendering/context-limit.d.ts +8 -0
- package/dist/ui-core/rendering/context-limit.js +49 -0
- package/dist/ui-core/rendering/context-limit.js.map +1 -0
- package/dist/ui-core/rendering/file-diff-view.js.map +1 -0
- package/dist/ui-core/rendering/format-help.js.map +1 -0
- package/dist/ui-core/rendering/format-keys.d.ts +14 -0
- package/dist/ui-core/rendering/format-keys.js +78 -0
- package/dist/ui-core/rendering/format-keys.js.map +1 -0
- package/dist/ui-core/rendering/incremental-strip.js.map +1 -0
- package/dist/ui-core/rendering/intro-header.js.map +1 -0
- package/dist/ui-core/rendering/job-tail-source.js.map +1 -0
- package/dist/ui-core/rendering/link-detector.js.map +1 -0
- package/dist/ui-core/rendering/markdown.js.map +1 -0
- package/dist/ui-core/rendering/open-tool-output.js +346 -0
- package/dist/ui-core/rendering/open-tool-output.js.map +1 -0
- package/dist/ui-core/rendering/pager-chrome.js +119 -0
- package/dist/ui-core/rendering/pager-chrome.js.map +1 -0
- package/dist/ui-core/rendering/pager-source.d.ts +20 -0
- package/dist/ui-core/rendering/pager-source.js +101 -0
- package/dist/ui-core/rendering/pager-source.js.map +1 -0
- package/dist/ui-core/rendering/pager-text.d.ts +24 -0
- package/dist/ui-core/rendering/pager-text.js +105 -0
- package/dist/ui-core/rendering/pager-text.js.map +1 -0
- package/dist/ui-core/rendering/pager-view-policy.js +98 -0
- package/dist/ui-core/rendering/pager-view-policy.js.map +1 -0
- package/dist/ui-core/rendering/picker-filter.js.map +1 -0
- package/dist/ui-core/rendering/plan-view.js.map +1 -0
- package/dist/ui-core/rendering/prompt-preview.js.map +1 -0
- package/dist/ui-core/rendering/render-markdown-lines.d.ts +7 -0
- package/dist/ui-core/rendering/render-markdown-lines.js +26 -0
- package/dist/ui-core/rendering/render-markdown-lines.js.map +1 -0
- package/dist/ui-core/rendering/sanitize-display.js.map +1 -0
- package/dist/ui-core/rendering/status-segments.d.ts +25 -0
- package/dist/ui-core/rendering/status-segments.js +88 -0
- package/dist/ui-core/rendering/status-segments.js.map +1 -0
- package/dist/ui-core/rendering/streaming-markdown.d.ts +23 -0
- package/dist/ui-core/rendering/streaming-markdown.js +118 -0
- package/dist/ui-core/rendering/streaming-markdown.js.map +1 -0
- package/dist/ui-core/rendering/strip-tool-surfaces.js.map +1 -0
- package/dist/ui-core/rendering/syntax-highlight.js.map +1 -0
- package/dist/ui-core/rendering/text-format.js.map +1 -0
- package/dist/ui-core/rendering/text-width.js.map +1 -0
- package/dist/ui-core/rendering/theme.js.map +1 -0
- package/dist/ui-core/rendering/thinking-tail.js.map +1 -0
- package/dist/ui-core/rendering/tool-presenter.d.ts +68 -0
- package/dist/ui-core/rendering/tool-presenter.js +371 -0
- package/dist/ui-core/rendering/tool-presenter.js.map +1 -0
- package/dist/ui-core/rendering/transcript-export.d.ts +11 -0
- package/dist/ui-core/rendering/transcript-export.js +18 -0
- package/dist/ui-core/rendering/transcript-export.js.map +1 -0
- package/dist/ui-core/rendering/transcript-semantic.js.map +1 -0
- package/dist/ui-core/rendering/user-message-wrap.d.ts +18 -0
- package/dist/ui-core/rendering/user-message-wrap.js +23 -0
- package/dist/ui-core/rendering/user-message-wrap.js.map +1 -0
- package/dist/ui-core/rendering/wordmark.js.map +1 -0
- package/dist/ui-core/state/pager-search.js.map +1 -0
- package/dist/ui-core/state/semantic-document.js.map +1 -0
- package/dist/ui-core/state/transcript-compaction.js.map +1 -0
- package/dist/ui-core/state/transcript-hydrate.d.ts +67 -0
- package/dist/ui-core/state/transcript-hydrate.js +665 -0
- package/dist/ui-core/state/transcript-hydrate.js.map +1 -0
- package/dist/ui-core/state/transcript-reducer.js +484 -0
- package/dist/ui-core/state/transcript-reducer.js.map +1 -0
- package/dist/ui-core/state/transcript-search.js.map +1 -0
- package/dist/ui-core/state/transcript-store.js.map +1 -0
- package/dist/ui-core/state/transcript-struct.js.map +1 -0
- package/dist/ui-core/state/transcript-types.d.ts +103 -0
- package/dist/ui-core/state/transcript-types.js.map +1 -0
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/dist/version.generated.js.map +1 -1
- package/package.json +18 -12
- package/dist/agent/classic-renderer.d.ts +0 -5
- package/dist/agent/classic-renderer.js +0 -136
- package/dist/agent/classic-renderer.js.map +0 -1
- package/dist/app/adapters/current-terminal-adapter.d.ts +0 -2
- package/dist/app/adapters/current-terminal-adapter.js +0 -24
- package/dist/app/adapters/current-terminal-adapter.js.map +0 -1
- package/dist/app/controllers/job-controller.d.ts +0 -28
- package/dist/app/controllers/job-controller.js +0 -70
- package/dist/app/controllers/job-controller.js.map +0 -1
- package/dist/repl/prompt-line.d.ts +0 -24
- package/dist/repl/prompt-line.js +0 -558
- package/dist/repl/prompt-line.js.map +0 -1
- package/dist/repl/slash-commands.js +0 -392
- package/dist/repl/slash-commands.js.map +0 -1
- package/dist/repl.d.ts +0 -18
- package/dist/repl.js +0 -1868
- package/dist/repl.js.map +0 -1
- package/dist/safety/path-permissions.d.ts +0 -14
- package/dist/safety/path-permissions.js +0 -43
- package/dist/safety/path-permissions.js.map +0 -1
- package/dist/tools/reducers/generic.d.ts +0 -14
- package/dist/tools/reducers/generic.js +0 -5
- package/dist/tools/reducers/generic.js.map +0 -1
- package/dist/tui/can-use-tui.js.map +0 -1
- package/dist/tui/format-keys.d.ts +0 -13
- package/dist/tui/format-keys.js +0 -78
- package/dist/tui/format-keys.js.map +0 -1
- package/dist/tui/input-history.js +0 -9
- package/dist/tui/input-history.js.map +0 -1
- package/dist/tui/runtime.js +0 -207
- package/dist/tui/runtime.js.map +0 -1
- package/dist/tui/state.d.ts +0 -124
- package/dist/tui/state.js +0 -496
- package/dist/tui/state.js.map +0 -1
- package/dist/tui/text-format.js.map +0 -1
- package/dist/tui-v2/actions/action-id.d.ts +0 -14
- package/dist/tui-v2/actions/action-id.js +0 -117
- package/dist/tui-v2/actions/action-id.js.map +0 -1
- package/dist/tui-v2/actions/action-router.js.map +0 -1
- package/dist/tui-v2/actions/chord-from-key.d.ts +0 -10
- package/dist/tui-v2/actions/chord-from-key.js +0 -34
- package/dist/tui-v2/actions/chord-from-key.js.map +0 -1
- package/dist/tui-v2/actions/format-shortcuts.js +0 -267
- package/dist/tui-v2/actions/format-shortcuts.js.map +0 -1
- package/dist/tui-v2/actions/keymap.d.ts +0 -24
- package/dist/tui-v2/actions/keymap.js +0 -151
- package/dist/tui-v2/actions/keymap.js.map +0 -1
- package/dist/tui-v2/app/command-handlers.js +0 -86
- package/dist/tui-v2/app/command-handlers.js.map +0 -1
- package/dist/tui-v2/app/commands/config-commands.d.ts +0 -14
- package/dist/tui-v2/app/commands/config-commands.js +0 -315
- package/dist/tui-v2/app/commands/config-commands.js.map +0 -1
- package/dist/tui-v2/app/commands/key-commands.d.ts +0 -9
- package/dist/tui-v2/app/commands/key-commands.js +0 -496
- package/dist/tui-v2/app/commands/key-commands.js.map +0 -1
- package/dist/tui-v2/app/commands/picker-commands.d.ts +0 -25
- package/dist/tui-v2/app/commands/picker-commands.js +0 -1045
- package/dist/tui-v2/app/commands/picker-commands.js.map +0 -1
- package/dist/tui-v2/app/commands/session-commands.d.ts +0 -19
- package/dist/tui-v2/app/commands/session-commands.js +0 -183
- package/dist/tui-v2/app/commands/session-commands.js.map +0 -1
- package/dist/tui-v2/app/mode-cycle.js.map +0 -1
- package/dist/tui-v2/app/plan-lifecycle.js.map +0 -1
- package/dist/tui-v2/app/providers.d.ts +0 -17
- package/dist/tui-v2/app/providers.js +0 -32
- package/dist/tui-v2/app/providers.js.map +0 -1
- package/dist/tui-v2/app/startup-update.js.map +0 -1
- package/dist/tui-v2/bootstrap/capabilities.d.ts +0 -36
- package/dist/tui-v2/bootstrap/capabilities.js +0 -93
- package/dist/tui-v2/bootstrap/capabilities.js.map +0 -1
- package/dist/tui-v2/bootstrap/composition-root.d.ts +0 -92
- package/dist/tui-v2/bootstrap/composition-root.js.map +0 -1
- package/dist/tui-v2/bootstrap/console-guard.js.map +0 -1
- package/dist/tui-v2/bootstrap/console-suppress.js.map +0 -1
- package/dist/tui-v2/bootstrap/disable-native-selection.d.ts +0 -11
- package/dist/tui-v2/bootstrap/disable-native-selection.js +0 -13
- package/dist/tui-v2/bootstrap/disable-native-selection.js.map +0 -1
- package/dist/tui-v2/bootstrap/lifecycle.js.map +0 -1
- package/dist/tui-v2/bootstrap/osc52-clipboard.js +0 -44
- package/dist/tui-v2/bootstrap/osc52-clipboard.js.map +0 -1
- package/dist/tui-v2/bootstrap/overlay-ports.js +0 -114
- package/dist/tui-v2/bootstrap/overlay-ports.js.map +0 -1
- package/dist/tui-v2/bootstrap/ui-selection.d.ts +0 -30
- package/dist/tui-v2/bootstrap/ui-selection.js +0 -59
- package/dist/tui-v2/bootstrap/ui-selection.js.map +0 -1
- package/dist/tui-v2/composer/arrow-intent.js.map +0 -1
- package/dist/tui-v2/composer/completion.js.map +0 -1
- package/dist/tui-v2/composer/composer-action-port.js.map +0 -1
- package/dist/tui-v2/composer/composer-height.js +0 -29
- package/dist/tui-v2/composer/composer-height.js.map +0 -1
- package/dist/tui-v2/composer/composer-meta.js.map +0 -1
- package/dist/tui-v2/composer/draft-actions.d.ts +0 -31
- package/dist/tui-v2/composer/draft-actions.js +0 -45
- package/dist/tui-v2/composer/draft-actions.js.map +0 -1
- package/dist/tui-v2/composer/history-nav.js.map +0 -1
- package/dist/tui-v2/composer/newline-hint.d.ts +0 -13
- package/dist/tui-v2/composer/newline-hint.js.map +0 -1
- package/dist/tui-v2/composer/paste-placeholder.js.map +0 -1
- package/dist/tui-v2/composer/prompt-history.js.map +0 -1
- package/dist/tui-v2/composer/secret-buffer.js.map +0 -1
- package/dist/tui-v2/controllers/focus-controller.js.map +0 -1
- package/dist/tui-v2/controllers/interruptible-controller.js.map +0 -1
- package/dist/tui-v2/controllers/overlay-controller.d.ts +0 -209
- package/dist/tui-v2/controllers/overlay-controller.js.map +0 -1
- package/dist/tui-v2/controllers/selection-controller.js.map +0 -1
- package/dist/tui-v2/controllers/toast-controller.js.map +0 -1
- package/dist/tui-v2/layout/compute-layout.js.map +0 -1
- package/dist/tui-v2/motion/ease.js.map +0 -1
- package/dist/tui-v2/notify.js.map +0 -1
- package/dist/tui-v2/rendering/artifact-pager-source.js.map +0 -1
- package/dist/tui-v2/rendering/batch-sections.js.map +0 -1
- package/dist/tui-v2/rendering/file-diff-view.js.map +0 -1
- package/dist/tui-v2/rendering/format-help.js.map +0 -1
- package/dist/tui-v2/rendering/incremental-strip.js.map +0 -1
- package/dist/tui-v2/rendering/job-tail-source.js.map +0 -1
- package/dist/tui-v2/rendering/link-detector.js.map +0 -1
- package/dist/tui-v2/rendering/open-tool-output.js +0 -346
- package/dist/tui-v2/rendering/open-tool-output.js.map +0 -1
- package/dist/tui-v2/rendering/pager-chrome.js +0 -119
- package/dist/tui-v2/rendering/pager-chrome.js.map +0 -1
- package/dist/tui-v2/rendering/pager-view-policy.js +0 -98
- package/dist/tui-v2/rendering/pager-view-policy.js.map +0 -1
- package/dist/tui-v2/rendering/picker-filter.js.map +0 -1
- package/dist/tui-v2/rendering/plan-view.js.map +0 -1
- package/dist/tui-v2/rendering/prompt-preview.js.map +0 -1
- package/dist/tui-v2/rendering/render-markdown-lines.d.ts +0 -29
- package/dist/tui-v2/rendering/render-markdown-lines.js +0 -46
- package/dist/tui-v2/rendering/render-markdown-lines.js.map +0 -1
- package/dist/tui-v2/rendering/sanitize-display.js.map +0 -1
- package/dist/tui-v2/rendering/streaming-markdown.d.ts +0 -25
- package/dist/tui-v2/rendering/streaming-markdown.js +0 -117
- package/dist/tui-v2/rendering/streaming-markdown.js.map +0 -1
- package/dist/tui-v2/rendering/strip-tool-surfaces.js.map +0 -1
- package/dist/tui-v2/rendering/syntax-highlight.js.map +0 -1
- package/dist/tui-v2/rendering/theme.js.map +0 -1
- package/dist/tui-v2/rendering/thinking-tail.js.map +0 -1
- package/dist/tui-v2/rendering/tool-presenter.d.ts +0 -63
- package/dist/tui-v2/rendering/tool-presenter.js +0 -376
- package/dist/tui-v2/rendering/tool-presenter.js.map +0 -1
- package/dist/tui-v2/rendering/transcript-export.d.ts +0 -11
- package/dist/tui-v2/rendering/transcript-export.js +0 -18
- package/dist/tui-v2/rendering/transcript-export.js.map +0 -1
- package/dist/tui-v2/rendering/transcript-semantic.js.map +0 -1
- package/dist/tui-v2/rendering/user-message-wrap.d.ts +0 -16
- package/dist/tui-v2/rendering/user-message-wrap.js +0 -21
- package/dist/tui-v2/rendering/user-message-wrap.js.map +0 -1
- package/dist/tui-v2/state/pager-search.js.map +0 -1
- package/dist/tui-v2/state/semantic-document.js.map +0 -1
- package/dist/tui-v2/state/transcript-compaction.js.map +0 -1
- package/dist/tui-v2/state/transcript-hydrate.d.ts +0 -67
- package/dist/tui-v2/state/transcript-hydrate.js +0 -648
- package/dist/tui-v2/state/transcript-hydrate.js.map +0 -1
- package/dist/tui-v2/state/transcript-reducer.js +0 -482
- package/dist/tui-v2/state/transcript-reducer.js.map +0 -1
- package/dist/tui-v2/state/transcript-search.js.map +0 -1
- package/dist/tui-v2/state/transcript-store.js.map +0 -1
- package/dist/tui-v2/state/transcript-struct.js.map +0 -1
- package/dist/tui-v2/state/transcript-types.d.ts +0 -101
- package/dist/tui-v2/state/transcript-types.js.map +0 -1
- package/dist/tui-v2/state/use-has-draft.js.map +0 -1
- package/dist/tui-v2/state/use-overlay.js.map +0 -1
- package/dist/tui-v2/state/use-plan.js.map +0 -1
- package/dist/tui-v2/state/use-session-state.js.map +0 -1
- package/dist/tui-v2/state/use-toast.js.map +0 -1
- package/dist/tui-v2/state/use-transcript-store.d.ts +0 -10
- package/dist/tui-v2/state/use-transcript-store.js.map +0 -1
- package/dist/ui/ansi-box.d.ts +0 -9
- package/dist/ui/ansi-box.js +0 -25
- package/dist/ui/ansi-box.js.map +0 -1
- package/dist/ui/banner.d.ts +0 -3
- package/dist/ui/banner.js +0 -13
- package/dist/ui/banner.js.map +0 -1
- package/dist/ui/code-block.d.ts +0 -48
- package/dist/ui/code-block.js +0 -407
- package/dist/ui/code-block.js.map +0 -1
- package/dist/ui/intro-card.d.ts +0 -10
- package/dist/ui/intro-card.js +0 -67
- package/dist/ui/intro-card.js.map +0 -1
- package/dist/ui/intro-header.js.map +0 -1
- package/dist/ui/keys.d.ts +0 -23
- package/dist/ui/keys.js +0 -23
- package/dist/ui/keys.js.map +0 -1
- package/dist/ui/markdown.js.map +0 -1
- package/dist/ui/output-pane.d.ts +0 -59
- package/dist/ui/output-pane.js +0 -398
- package/dist/ui/output-pane.js.map +0 -1
- package/dist/ui/spinner.d.ts +0 -8
- package/dist/ui/spinner.js +0 -185
- package/dist/ui/spinner.js.map +0 -1
- package/dist/ui/task-pane.d.ts +0 -17
- package/dist/ui/task-pane.js +0 -80
- package/dist/ui/task-pane.js.map +0 -1
- package/dist/ui/text-width.js.map +0 -1
- package/dist/ui/wordmark.js.map +0 -1
- /package/dist/{repl/slash-commands.d.ts → app/commands/catalog.d.ts} +0 -0
- /package/dist/{tui/runtime.d.ts → os/bun-runtime.d.ts} +0 -0
- /package/dist/{tui-v2 → ui-core}/actions/action-router.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/actions/action-router.js +0 -0
- /package/dist/{tui-v2 → ui-core}/actions/format-shortcuts.d.ts +0 -0
- /package/dist/{tui-v2/app → ui-core/actions}/mode-cycle.d.ts +0 -0
- /package/dist/{tui-v2/app → ui-core/actions}/mode-cycle.js +0 -0
- /package/dist/{tui → ui-core/bootstrap}/can-use-tui.d.ts +0 -0
- /package/dist/{tui → ui-core/bootstrap}/can-use-tui.js +0 -0
- /package/dist/{tui-v2 → ui-core}/bootstrap/composition-root.js +0 -0
- /package/dist/{tui-v2 → ui-core}/bootstrap/console-guard.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/bootstrap/console-guard.js +0 -0
- /package/dist/{tui-v2 → ui-core}/bootstrap/console-suppress.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/bootstrap/console-suppress.js +0 -0
- /package/dist/{tui-v2 → ui-core}/bootstrap/lifecycle.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/bootstrap/lifecycle.js +0 -0
- /package/dist/{tui-v2 → ui-core}/bootstrap/overlay-ports.d.ts +0 -0
- /package/dist/{tui-v2/app → ui-core/commands}/command-handlers.d.ts +0 -0
- /package/dist/{tui-v2/app → ui-core/commands}/startup-update.d.ts +0 -0
- /package/dist/{tui-v2/app → ui-core/commands}/startup-update.js +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/arrow-intent.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/arrow-intent.js +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/completion.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/completion.js +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/composer-action-port.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/composer-action-port.js +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/composer-height.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/composer-meta.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/composer-meta.js +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/history-nav.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/history-nav.js +0 -0
- /package/dist/{tui → ui-core/composer}/input-history.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/newline-hint.js +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/paste-placeholder.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/paste-placeholder.js +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/prompt-history.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/prompt-history.js +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/secret-buffer.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/composer/secret-buffer.js +0 -0
- /package/dist/{tui-v2 → ui-core}/controllers/focus-controller.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/controllers/focus-controller.js +0 -0
- /package/dist/{tui-v2 → ui-core}/controllers/interruptible-controller.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/controllers/interruptible-controller.js +0 -0
- /package/dist/{tui-v2 → ui-core}/controllers/overlay-controller.js +0 -0
- /package/dist/{tui-v2 → ui-core}/controllers/selection-controller.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/controllers/selection-controller.js +0 -0
- /package/dist/{tui-v2 → ui-core}/controllers/toast-controller.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/controllers/toast-controller.js +0 -0
- /package/dist/{tui-v2 → ui-core}/layout/compute-layout.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/layout/compute-layout.js +0 -0
- /package/dist/{tui-v2 → ui-core}/motion/ease.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/motion/ease.js +0 -0
- /package/dist/{tui-v2 → ui-core}/notify.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/notify.js +0 -0
- /package/dist/{tui-v2/app → ui-core/plan}/plan-lifecycle.d.ts +0 -0
- /package/dist/{tui-v2/app → ui-core/plan}/plan-lifecycle.js +0 -0
- /package/dist/{tui-v2/bootstrap/osc52-clipboard.d.ts → ui-core/ports/clipboard-osc52.d.ts} +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-has-draft.d.ts +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-has-draft.js +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-overlay.d.ts +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-overlay.js +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-plan.d.ts +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-plan.js +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-session-state.d.ts +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-session-state.js +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-toast.d.ts +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-toast.js +0 -0
- /package/dist/{tui-v2/state → ui-core/react}/use-transcript-store.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/artifact-pager-source.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/artifact-pager-source.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/batch-sections.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/batch-sections.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/file-diff-view.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/file-diff-view.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/format-help.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/format-help.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/incremental-strip.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/incremental-strip.js +0 -0
- /package/dist/{ui → ui-core/rendering}/intro-header.d.ts +0 -0
- /package/dist/{ui → ui-core/rendering}/intro-header.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/job-tail-source.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/job-tail-source.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/link-detector.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/link-detector.js +0 -0
- /package/dist/{ui → ui-core/rendering}/markdown.d.ts +0 -0
- /package/dist/{ui → ui-core/rendering}/markdown.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/open-tool-output.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/pager-chrome.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/pager-view-policy.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/picker-filter.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/picker-filter.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/plan-view.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/plan-view.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/prompt-preview.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/prompt-preview.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/sanitize-display.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/sanitize-display.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/strip-tool-surfaces.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/strip-tool-surfaces.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/syntax-highlight.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/syntax-highlight.js +0 -0
- /package/dist/{tui → ui-core/rendering}/text-format.d.ts +0 -0
- /package/dist/{tui → ui-core/rendering}/text-format.js +0 -0
- /package/dist/{ui → ui-core/rendering}/text-width.d.ts +0 -0
- /package/dist/{ui → ui-core/rendering}/text-width.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/theme.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/theme.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/thinking-tail.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/thinking-tail.js +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/transcript-semantic.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/rendering/transcript-semantic.js +0 -0
- /package/dist/{ui → ui-core/rendering}/wordmark.d.ts +0 -0
- /package/dist/{ui → ui-core/rendering}/wordmark.js +0 -0
- /package/dist/{tui-v2 → ui-core}/state/pager-search.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/state/pager-search.js +0 -0
- /package/dist/{tui-v2 → ui-core}/state/semantic-document.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/state/semantic-document.js +0 -0
- /package/dist/{tui-v2 → ui-core}/state/transcript-compaction.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/state/transcript-compaction.js +0 -0
- /package/dist/{tui-v2 → ui-core}/state/transcript-reducer.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/state/transcript-search.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/state/transcript-search.js +0 -0
- /package/dist/{tui-v2 → ui-core}/state/transcript-store.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/state/transcript-store.js +0 -0
- /package/dist/{tui-v2 → ui-core}/state/transcript-struct.d.ts +0 -0
- /package/dist/{tui-v2 → ui-core}/state/transcript-struct.js +0 -0
- /package/dist/{tui-v2 → ui-core}/state/transcript-types.js +0 -0
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> A fast, terminal-native AI agent that runs real tools — built to run on **free API tiers**, stay alive across rate limits with **multi-key + multi-provider switching**, and do serious work: **building, debugging, and scope-based pentesting / bug bounty**.
|
|
4
4
|
|
|
5
|
-
`clai` is an agentic CLI. It doesn't just describe what to do — it edits files, runs shell commands, scans hosts, fetches HTTP evidence, keeps a durable task plan, and verifies its own work before claiming success. It runs
|
|
5
|
+
`clai` is an agentic CLI. It doesn't just describe what to do — it edits files, runs shell commands, scans hosts, fetches HTTP evidence, keeps a durable task plan, and verifies its own work before claiming success. It runs in your terminal with three full surfaces — an OpenTUI full-screen console (default on macOS/Linux), a classic Ink UI (default on Windows), and a noninteractive stream renderer for prompts and pipes. The original line-by-line REPL is gone: every interactive surface is a full-screen app sharing the same features, commands, and session state.
|
|
6
6
|
|
|
7
7
|
Two things make it practical for everyday use:
|
|
8
8
|
|
|
@@ -14,7 +14,7 @@ Two things make it practical for everyday use:
|
|
|
14
14
|
## Highlights
|
|
15
15
|
|
|
16
16
|
- **Free-tier first.** 17 providers wired in, 7 cloud free tiers + local Ollama. The default provider is the **keyless Free** gateway (`free-1/deepseek-v4-flash-free`) so a fresh install runs at no cost with zero setup — no API key required.
|
|
17
|
-
- **Multi-key smart switching.** Up to 10 keys per provider with a *sticky* active key and circular rotation on rate-limit / auth / quota / transient / 5xx / empty-response errors. Optional cross-provider fallback and a free-only filter.
|
|
17
|
+
- **Multi-key smart switching.** Up to 10 keys per provider with a *sticky* active key and circular rotation on rate-limit / auth / quota / transient / 5xx / empty-response errors. Disable any key or endpoint row to skip it without deleting it. Optional cross-provider fallback and a free-only filter.
|
|
18
18
|
- **Bring your own endpoint.** Deploy Kimi K3 (or Qwen / DeepSeek / GLM / GPT-OSS / your own fine-tune) to a [Modal](#modal--run-kimi-k3-on-your-own-endpoint-on-30month-of-free-credit) endpoint and drive it from clai on **$30/month of free compute credit**. Modal, Lightning AI and TokenRouter each keep a list of up to 10 base URLs with a sticky active one, so several deployments live side by side and you switch with one command — same editor, same ★ active row as keys.
|
|
19
19
|
- **Scope-based pentesting.** Opt-in engagement scope with authorized/excluded targets, allowed phases, rate and concurrency ceilings, redirect and DNS-rebinding escape detection, and out-of-scope flagging — designed for authorized pentests and bug-bounty programs.
|
|
20
20
|
- **Real building & debugging.** Scaffolds apps, edits code surgically, installs packages, runs builds/tests, starts dev servers as background jobs, and probes them before reporting success.
|
|
@@ -54,23 +54,21 @@ git clone https://github.com/pentoshi007/clai.git
|
|
|
54
54
|
cd clai && npm install && npm run build && npm start
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
Node.js ≥
|
|
57
|
+
Node.js ≥ 22. Type `clai` in any terminal to start.
|
|
58
58
|
|
|
59
59
|
### Platform notes
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
</table>
|
|
61
|
+
| Environment | Default surface | Explicit alternative |
|
|
62
|
+
|---|---|---|
|
|
63
|
+
| Interactive macOS/Linux terminal at least 60×14 | OpenTUI full-screen console | `clai --classic` for the Ink UI |
|
|
64
|
+
| Interactive Windows terminal | Classic Ink UI | `--ui classic` / `--classic` |
|
|
65
|
+
| stdin or stdout is not a TTY | Noninteractive stream renderer | use a prompt or pipe stdin |
|
|
67
66
|
|
|
68
|
-
**Windows:**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
> ```
|
|
67
|
+
**Windows:** the platform-selection code chooses the classic Ink UI before any Bun/OpenTUI
|
|
68
|
+
startup probe. This repository's macOS validation does not claim Windows Terminal,
|
|
69
|
+
PowerShell, cmd.exe/conhost, VS Code terminal, ConPTY, or Windows-binary runtime evidence;
|
|
70
|
+
those target-host checks remain release gates. Use `clai --classic` explicitly when you want
|
|
71
|
+
the same selection on any platform.
|
|
74
72
|
|
|
75
73
|
**Linux — terminal recommendations for full mouse & hover support:**
|
|
76
74
|
|
|
@@ -200,7 +198,7 @@ clai unset modal --url # clear the URLs, keep the token pairs
|
|
|
200
198
|
clai keys # every URL listed, ★ marks the active one
|
|
201
199
|
```
|
|
202
200
|
|
|
203
|
-
Token pairs rotate on failure like any other provider's keys (the pair is stored as one `id:secret` string). Endpoints
|
|
201
|
+
Token pairs rotate on failure like any other provider's keys (the pair is stored as one `id:secret` string). Endpoints fail over alongside them: on a rate limit, workspace/auth mismatch, quota error, or 5xx, clai tries the next stored endpoint with the next key, and the ★ active endpoint sticks to the one that worked, so the next run starts on the healthy URL. `MODAL_BASE_URL` overrides the stored list entirely.
|
|
204
202
|
|
|
205
203
|
From inside the console, `/provider modal` walks the same setup in two prompts — endpoint URL first (shown in full, since it isn't a secret), then the token pair — and leaves the active provider untouched if you cancel.
|
|
206
204
|
|
|
@@ -253,11 +251,12 @@ clai provider # interactive provider/model picker
|
|
|
253
251
|
clai unset groq # remove ALL keys for a provider
|
|
254
252
|
```
|
|
255
253
|
|
|
256
|
-
In the console, **`/set`** opens a multi-row editor: add rows with `+`, remove rows, star a row to make it the active one, **Save**, or **Reset all**. Providers with their own base URL (Modal, Lightning AI, TokenRouter) get a second **endpoints** row in the `/set` picker that edits their URL list the same way — URLs are shown in full rather than masked, since they aren't secrets. `/set <provider> https://…` adds and activates one URL directly. **`/keys`** lists keys masked plus the active endpoint
|
|
254
|
+
In the console, **`/set`** opens a multi-row editor: add rows with `+`, remove rows, star a row to make it the active one, or disable a row to skip it in rotation without deleting it (`d` in the classic UI, `Ctrl+D` or the ○ marker in OpenTUI) — then **Save**, or **Reset all**. Providers with their own base URL (Modal, Lightning AI, TokenRouter) get a second **endpoints** row in the `/set` picker that edits their URL list the same way — URLs are shown in full rather than masked, since they aren't secrets. `/set <provider> https://…` adds and activates one URL directly. **`/keys`** lists keys masked plus the active endpoint, marking disabled rows `(disabled)`; **`/unset`** clears a provider. Disabled entries are never tried until re-enabled, and disabling every key for a provider fails fast with a clear error instead of burning requests.
|
|
257
255
|
|
|
258
256
|
### Smart switching (how it stays up)
|
|
259
257
|
|
|
260
|
-
- **Multi-key rotation** — up to **10 keys per provider**. The last key that worked is *sticky*; on failure clai rotates circularly to the next key.
|
|
258
|
+
- **Multi-key rotation** — up to **10 keys per provider**. The last key that worked is *sticky*; on failure clai rotates circularly to the next key. Endpoint providers (Modal, Lightning AI, TokenRouter) fail over their stored endpoints alongside the keys, and the ★ active endpoint follows the one that worked.
|
|
259
|
+
- **Disable without deleting** — toggle any key or endpoint row disabled in the `/set` editor and rotation skips it until you re-enable it.
|
|
261
260
|
- **What triggers a switch** — HTTP 429 (rate limit), 401/403 (auth), 402 / quota / billing text, transient network errors, 500–504, and empty completions. Auth and quota errors switch **immediately** (no backoff wait); rate limits back off briefly first.
|
|
262
261
|
- **Cross-provider fallback** *(opt-in)* — `/fallback on` lets clai try other configured providers after the active one is exhausted (only when running a provider's default model).
|
|
263
262
|
- **Free-only mode** *(opt-in)* — `/freeonly on` excludes paid-cloud providers from the fallback chain, so you never accidentally spend.
|
|
@@ -353,7 +352,7 @@ You own authorization; clai still gates risk on every action:
|
|
|
353
352
|
|
|
354
353
|
## Terminal UI
|
|
355
354
|
|
|
356
|
-
|
|
355
|
+
The old line REPL has been removed — there are only full surfaces now. An OpenTUI full-screen console is selected for a sufficiently large interactive POSIX terminal. The classic Ink UI is selected on Windows, on smaller terminals, or with `--classic`; non-TTY prompts use the noninteractive stream renderer. In the classic UI, mouse reporting is on by default so wheel swipes scroll the live tail and panels instead of being misread as prompt-history keys; native text selection stays one modifier away (Shift/Option/Fn), and `CLAI_CLASSIC_MOUSE=0` turns mouse reporting off. The interactive surfaces provide streaming chat, nested tool cards (including `tool.batch` sub-calls), file diffs, a live plan pane, pickers, history, and secure masked key prompts.
|
|
357
356
|
|
|
358
357
|
| Action | Key |
|
|
359
358
|
|--------|-----|
|
|
@@ -400,9 +399,12 @@ Tool cards show the command/input clearly and keep long scan tails in an expanda
|
|
|
400
399
|
## CLI commands
|
|
401
400
|
|
|
402
401
|
```sh
|
|
403
|
-
clai [prompt...] # interactive
|
|
402
|
+
clai [prompt...] # interactive UI, or one-shot with a prompt
|
|
404
403
|
--mode <ask|agent|plan> --provider <p> --model <m>
|
|
405
|
-
-y/--yes --no-history
|
|
404
|
+
-y/--yes --no-history
|
|
405
|
+
--show-thinking --verbose --quiet # one-shot stream controls
|
|
406
|
+
--tui --classic
|
|
407
|
+
--ui <tui|v2|opentui|classic|legacy|ink> # aliases; ignored with a prompt
|
|
406
408
|
|
|
407
409
|
clai set <provider> [key] # --from-env <VAR> | --stdin | --url <url> (repeatable) | --skip-ping
|
|
408
410
|
clai unset <provider> # remove all keys for a provider (--url = endpoint URLs instead)
|
|
@@ -422,6 +424,18 @@ clai scope <show|new|add|clear> # engagement scope (new: --targets --excl
|
|
|
422
424
|
clai privacy <status|on|off|retention|clear-history|clear-logs|clear-artifacts|clear-all>
|
|
423
425
|
```
|
|
424
426
|
|
|
427
|
+
### One-shot output and exit status
|
|
428
|
+
|
|
429
|
+
`clai "prompt"` and piped prompts use the noninteractive stream renderer. The final
|
|
430
|
+
assistant answer is written to **stdout**; progress, tool cards, diffs, thinking (when
|
|
431
|
+
`--show-thinking` is enabled), confirmations, and errors are written to **stderr**. `--quiet`
|
|
432
|
+
suppresses progress while retaining the final answer on stdout, and `--verbose` expands tool
|
|
433
|
+
output and diff hunks. `--no-history` disables persistence for that run.
|
|
434
|
+
|
|
435
|
+
A completed, partially completed, blocked, or failed turn returns exit code `0`; an aborted
|
|
436
|
+
turn returns `130`; an unhandled or loader error returns `1`. `--show-thinking` can also be
|
|
437
|
+
enabled with `CLAI_SHOW_THINKING=1`.
|
|
438
|
+
|
|
425
439
|
---
|
|
426
440
|
|
|
427
441
|
## Built-in tools
|
|
@@ -514,8 +528,11 @@ npm install
|
|
|
514
528
|
npm run dev # run from source
|
|
515
529
|
npm run typecheck
|
|
516
530
|
npm run build
|
|
517
|
-
npm test # full
|
|
531
|
+
npm test # full Vitest suite
|
|
532
|
+
npm run test:classic:pty # provider-independent POSIX PTY smoke
|
|
518
533
|
npm run compile # native binaries (Bun)
|
|
534
|
+
npm run release:verify
|
|
535
|
+
npm pack --dry-run
|
|
519
536
|
```
|
|
520
537
|
|
|
521
538
|
---
|
|
@@ -547,8 +564,11 @@ clai/
|
|
|
547
564
|
│ ├─ tools/ # fs, shell, net, http, web, pentest, batch, plan
|
|
548
565
|
│ ├─ safety/ # risk classifier + engagement (scope) policy
|
|
549
566
|
│ ├─ store/ # config, history, keys, plans, scope
|
|
550
|
-
│ ├─
|
|
551
|
-
│ ├─
|
|
567
|
+
│ ├─ ui-core/ # renderer-neutral state, actions, layout, rendering, and ports
|
|
568
|
+
│ ├─ classic/ # React + Ink classic UI and POSIX terminal bootstrap
|
|
569
|
+
│ ├─ tui-v2/ # OpenTUI full-screen renderer
|
|
570
|
+
│ ├─ noninteractive/ # stdout/stderr-split one-shot stream renderer
|
|
571
|
+
│ ├─ app/ # session controllers, commands, events, and ports
|
|
552
572
|
│ └─ prompts/ # agent methodology (embedded for the compiled binary)
|
|
553
573
|
├─ install/ · manifests/
|
|
554
574
|
└─ package.json
|
package/bin/postinstall.mjs
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Postinstall script for @pentoshi/clai.
|
|
4
4
|
* Automatically checks for Bun (required by OpenTUI) and installs it into
|
|
5
|
-
* ~/.clai/bin/bun across Linux
|
|
5
|
+
* ~/.clai/bin/bun across Linux and macOS if missing.
|
|
6
6
|
*/
|
|
7
7
|
import { spawnSync } from "node:child_process";
|
|
8
8
|
import { accessSync, chmodSync, constants, existsSync, mkdirSync } from "node:fs";
|
|
9
9
|
import { homedir } from "node:os";
|
|
10
10
|
import { delimiter, join } from "node:path";
|
|
11
|
+
import { shouldSkipBunInstall } from "./postinstall-policy.mjs";
|
|
11
12
|
|
|
12
13
|
function findBun() {
|
|
13
14
|
const binName = process.platform === "win32" ? "bun.exe" : "bun";
|
|
@@ -40,7 +41,9 @@ function findBun() {
|
|
|
40
41
|
return undefined;
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
const skipBunInstall = shouldSkipBunInstall();
|
|
45
|
+
|
|
46
|
+
if (!skipBunInstall && !findBun() && process.env.CLAI_NO_BUN_AUTO_INSTALL !== "1") {
|
|
44
47
|
const targetDir = join(homedir(), ".clai");
|
|
45
48
|
const binName = process.platform === "win32" ? "bun.exe" : "bun";
|
|
46
49
|
const targetBin = join(targetDir, "bin", binName);
|
|
@@ -106,7 +109,7 @@ if (!findBun() && process.env.CLAI_NO_BUN_AUTO_INSTALL !== "1") {
|
|
|
106
109
|
}
|
|
107
110
|
}
|
|
108
111
|
|
|
109
|
-
if (!findBun()) {
|
|
112
|
+
if (!skipBunInstall && !findBun()) {
|
|
110
113
|
console.log(`
|
|
111
114
|
Note: Bun was not installed during postinstall.
|
|
112
115
|
clai will automatically install Bun on first launch.
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
+
import { restoreInteractiveStdin } from "../noninteractive/readline-prompts.js";
|
|
1
2
|
import type { ToolCall } from "../types.js";
|
|
2
3
|
import type { SessionPolicy } from "./session-policy.js";
|
|
4
|
+
export { restoreInteractiveStdin };
|
|
3
5
|
export interface ConfirmPort {
|
|
4
6
|
confirmTool(call: ToolCall): Promise<boolean>;
|
|
5
7
|
confirmPentest(): Promise<boolean>;
|
|
6
|
-
/**
|
|
7
|
-
* Ask whether to continue after a progress-governor pause (or similar).
|
|
8
|
-
* `reason` is shown when present so the user knows why work stalled.
|
|
9
|
-
*/
|
|
10
|
-
confirmContinue?(steps: number, reason?: string): Promise<boolean>;
|
|
11
8
|
/**
|
|
12
9
|
* Ask whether to leave ask mode and run an action task in agent mode.
|
|
13
10
|
* Optional so existing ports keep working; ask-mode handoff falls back to a
|
|
@@ -18,18 +15,9 @@ export interface ConfirmPort {
|
|
|
18
15
|
tools: string[];
|
|
19
16
|
}): Promise<boolean>;
|
|
20
17
|
}
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* switches it to cooked mode when it closes; if we only flip raw mode back
|
|
25
|
-
* on but leave stdin paused, no `keypress`/`data` events flow to the REPL's
|
|
26
|
-
* ESC/Ctrl+C abort handler — so a long-running tool launched right after a
|
|
27
|
-
* confirmation can no longer be aborted (the user had to kill the terminal).
|
|
28
|
-
* Calling resume() restores the event flow.
|
|
29
|
-
*/
|
|
30
|
-
export declare function restoreInteractiveStdin(): void;
|
|
31
|
-
export declare const inquirerConfirmPort: ConfirmPort;
|
|
32
|
-
export declare function inquirerSecretRequester(request: {
|
|
18
|
+
/** Default port: readline prompts on the process stdio (06-ONESHOT.md §4). */
|
|
19
|
+
export declare const stdioConfirmPort: ConfirmPort;
|
|
20
|
+
export declare function stdioSecretRequester(request: {
|
|
33
21
|
title: string;
|
|
34
22
|
prompt: string;
|
|
35
23
|
}): Promise<string | undefined>;
|
|
@@ -1,70 +1,13 @@
|
|
|
1
|
-
import { confirm, password } from "@inquirer/prompts";
|
|
2
|
-
import chalk from "chalk";
|
|
3
1
|
import { getConfig } from "../store/config.js";
|
|
4
2
|
import { isPentestToolCall } from "../safety/classifier.js";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* Calling resume() restores the event flow.
|
|
14
|
-
*/
|
|
15
|
-
export function restoreInteractiveStdin() {
|
|
16
|
-
if (!process.stdin.isTTY)
|
|
17
|
-
return;
|
|
18
|
-
try {
|
|
19
|
-
if (!process.stdin.isRaw) {
|
|
20
|
-
process.stdin.setRawMode(true);
|
|
21
|
-
}
|
|
22
|
-
process.stdin.resume();
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
/* ignore */
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
export const inquirerConfirmPort = {
|
|
29
|
-
async confirmTool(call) {
|
|
30
|
-
return confirm({
|
|
31
|
-
message: chalk.yellow(` run ${call.name}: ${formatToolArgs(call)}?`),
|
|
32
|
-
default: true,
|
|
33
|
-
});
|
|
34
|
-
},
|
|
35
|
-
async confirmPentest() {
|
|
36
|
-
return confirm({
|
|
37
|
-
message: chalk.red("clai only assists with security testing on systems you own or have written permission to test. Confirm for this session?"),
|
|
38
|
-
default: false,
|
|
39
|
-
});
|
|
40
|
-
},
|
|
41
|
-
async confirmContinue(steps, reason) {
|
|
42
|
-
const why = reason?.trim() ? ` (${reason.trim()})` : "";
|
|
43
|
-
try {
|
|
44
|
-
return await confirm({
|
|
45
|
-
message: chalk.yellow(` pause after ${steps} step${steps === 1 ? "" : "s"}${why} — continue or stop?`),
|
|
46
|
-
default: true,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
finally {
|
|
50
|
-
restoreInteractiveStdin();
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
async confirmAgentSwitch(info) {
|
|
54
|
-
const tools = info.tools.length > 0 ? ` (${info.tools.join(", ")})` : "";
|
|
55
|
-
return confirm({
|
|
56
|
-
message: chalk.yellow(` this needs agent mode${tools} — switch and run it?`),
|
|
57
|
-
default: true,
|
|
58
|
-
});
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
export async function inquirerSecretRequester(request) {
|
|
62
|
-
try {
|
|
63
|
-
return await password({ message: request.prompt || request.title });
|
|
64
|
-
}
|
|
65
|
-
finally {
|
|
66
|
-
restoreInteractiveStdin();
|
|
67
|
-
}
|
|
3
|
+
import { createStdioConfirmPort, createStdioSecretPort, } from "../noninteractive/stdio-confirm-port.js";
|
|
4
|
+
import { restoreInteractiveStdin } from "../noninteractive/readline-prompts.js";
|
|
5
|
+
export { restoreInteractiveStdin };
|
|
6
|
+
/** Default port: readline prompts on the process stdio (06-ONESHOT.md §4). */
|
|
7
|
+
export const stdioConfirmPort = createStdioConfirmPort();
|
|
8
|
+
const requestStdioSecret = createStdioSecretPort();
|
|
9
|
+
export async function stdioSecretRequester(request) {
|
|
10
|
+
return requestStdioSecret(request);
|
|
68
11
|
}
|
|
69
12
|
export async function ensurePentestAuthorization(call, autoConfirm, session, confirmPort) {
|
|
70
13
|
if (!isPentestToolCall(call))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-port.js","sourceRoot":"","sources":["../../src/agent/confirm-port.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"confirm-port.js","sourceRoot":"","sources":["../../src/agent/confirm-port.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAIhF,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAgBnC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAgB,sBAAsB,EAAE,CAAC;AAEtE,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAG1C;IACC,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAc,EACd,WAAoB,EACpB,OAAsB,EACtB,WAAwB;IAExB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACpD,6DAA6D;IAC7D,IAAI,MAAM,CAAC,iBAAiB;QAAE,OAAO,IAAI,CAAC;IAC1C,+DAA+D;IAC/D,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAEjD,IAAI,WAAW,EAAE,CAAC;QAChB,sEAAsE;QACtE,oEAAoE;QACpE,OAAO,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;IAC9C,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IACtB,OAAO,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAc,EACd,WAAoB,EACpB,OAAsB,EACtB,WAAwB,EACxB,OAAgD;IAEhD,6EAA6E;IAC7E,gDAAgD;IAChD,IAAI,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACvD,OAAO,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,WAAW;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,uEAAuE;IACvE,wEAAwE;IACxE,qDAAqD;IACrD,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7D,OAAO,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type ProgressSignal = "none" | "activity" | "evidence" | "completion";
|
|
2
|
-
export type GovernorRecommendation = "continue" | "reflect" | "
|
|
2
|
+
export type GovernorRecommendation = "continue" | "reflect" | "succeeded";
|
|
3
3
|
export interface GovernorState {
|
|
4
4
|
readonly schemaVersion: 2;
|
|
5
5
|
readonly steps: number;
|
|
@@ -48,7 +48,7 @@ export function governProgress(state, signal, metrics = {}) {
|
|
|
48
48
|
resourcesUsed: state.resourcesUsed + resourceCost,
|
|
49
49
|
};
|
|
50
50
|
if (next.resourcesUsed >= policy.emergencyCeiling) {
|
|
51
|
-
return { state: next, shouldContinue:
|
|
51
|
+
return { state: next, shouldContinue: true, requireEvidence: true, recommendation: "reflect", reason: "resource ceiling reached; reassess before continuing" };
|
|
52
52
|
}
|
|
53
53
|
if (signal === "completion" && evidenceDelta > 0) {
|
|
54
54
|
return { state: next, shouldContinue: false, requireEvidence: false, recommendation: "succeeded", reason: "completion supported by new evidence" };
|
|
@@ -57,7 +57,7 @@ export function governProgress(state, signal, metrics = {}) {
|
|
|
57
57
|
return { state: next, shouldContinue: true, requireEvidence: true, recommendation: "reflect", reason: "completion requires new evidence" };
|
|
58
58
|
}
|
|
59
59
|
if (repetitiveNoDelta && next.consecutiveNoDelta >= policy.pauseAfterNoDelta) {
|
|
60
|
-
return { state: next, shouldContinue:
|
|
60
|
+
return { state: next, shouldContinue: true, requireEvidence: true, recommendation: "reflect", reason: "repetitive work produced no evidence or hypothesis progress; change approach" };
|
|
61
61
|
}
|
|
62
62
|
if (repetitiveNoDelta && next.consecutiveNoDelta >= policy.reflectionAfterNoDelta) {
|
|
63
63
|
return { state: next, shouldContinue: true, requireEvidence: true, recommendation: "reflect", reason: "repetitive work requires reflection" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-governor.js","sourceRoot":"","sources":["../../src/agent/evidence-governor.ts"],"names":[],"mappings":"AAuCA,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,gBAAgB,EAAE,EAAE;IACpB,gBAAgB,EAAE,EAAE;IACpB,sBAAsB,EAAE,CAAC;IACzB,iBAAiB,EAAE,CAAC;IACpB,mBAAmB,EAAE,GAAG;CACzB,CAAC;AAEF,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,KAAK,EAAE,CAAC;QACR,aAAa,EAAE,CAAC;QAChB,eAAe,EAAE,CAAC;QAClB,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAsB;IAC5C,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC7H,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAClI,IAAI,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC7H,IAAI,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,sBAAsB;QAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC3I,IAAI,MAAM,CAAC,mBAAmB,GAAG,CAAC,IAAI,MAAM,CAAC,mBAAmB,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACvI,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAoB,EACpB,MAAsB,EACtB,UAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,uBAAuB,CAAC;IACzD,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;IAC/C,IAAI,aAAa,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3I,IAAI,eAAe,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAE3G,MAAM,UAAU,GAAG,aAAa,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,CAAC;IAC5D,MAAM,iBAAiB,GAAG,CAAC,UAAU,IAAI,eAAe,IAAI,MAAM,CAAC,mBAAmB,CAAC;IACvF,MAAM,IAAI,GAAkB;QAC1B,aAAa,EAAE,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC;QACtB,aAAa,EAAE,KAAK,CAAC,aAAa,GAAG,aAAa;QAClD,eAAe,EAAE,KAAK,CAAC,eAAe,GAAG,eAAe;QACxD,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC;QACjE,aAAa,EAAE,KAAK,CAAC,aAAa,GAAG,YAAY;KAClD,CAAC;IAEF,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAClD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"evidence-governor.js","sourceRoot":"","sources":["../../src/agent/evidence-governor.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,6 @@ export interface FinalizeGateInput {
|
|
|
44
44
|
sawServerTail: boolean;
|
|
45
45
|
sawLocalHttpProbe: boolean;
|
|
46
46
|
sawFailedLocalHttpProbe: boolean;
|
|
47
|
-
serverCriterionRequired: boolean;
|
|
48
47
|
sawActivePentestTest: boolean;
|
|
49
48
|
sawSuccessfulMutation: boolean;
|
|
50
49
|
featureAppAsk: boolean;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Pure finalize-time gate: pick the recovery nudge that must replace a final
|
|
3
3
|
* answer, or nothing when the turn may finalize. No I/O, no budget mutation.
|
|
4
4
|
*/
|
|
5
|
-
import { budgetRemaining,
|
|
5
|
+
import { budgetRemaining, looksLikeShallowPentestReport, recoveryForErrorDiagnosis, recoveryForFailedProbe, recoveryForMissingFeature, recoveryForMissingPlan, recoveryForNarration, recoveryForShallowPentest, } from "./must-continue.js";
|
|
6
6
|
import { looksLikeErrorDiagnosisWithFixIntent, looksLikePlanNarration, } from "./tool-call-parser.js";
|
|
7
7
|
export function chooseFinalizeRecovery(input) {
|
|
8
8
|
const { cleaned, recovery, toolsAttached, productiveSteps, plan } = input;
|
|
@@ -78,29 +78,11 @@ export function chooseFinalizeRecovery(input) {
|
|
|
78
78
|
if (input.buildLike &&
|
|
79
79
|
!input.pentestLike &&
|
|
80
80
|
!input.pentestSession &&
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (!planRuntimeOk && !sessionRuntimeOk) {
|
|
87
|
-
const codingPlanFinished = Boolean(plan &&
|
|
88
|
-
input.planApproved &&
|
|
89
|
-
plan.kind !== "pentest" &&
|
|
90
|
-
plan.tasks.length > 0 &&
|
|
91
|
-
plan.tasks.every((task) => task.state === "done" || task.state === "skipped"));
|
|
92
|
-
const freestyleLocalAppDone = !input.planApproved &&
|
|
93
|
-
input.sawLocalAppMaterialWork &&
|
|
94
|
-
productiveSteps > 0 &&
|
|
95
|
-
freestyleClaimsAppReady(cleaned) &&
|
|
96
|
-
(input.projectRoot !== undefined ||
|
|
97
|
-
/\b(?:npm|pnpm|yarn|bun)\s+run\s+dev\b/i.test(cleaned) ||
|
|
98
|
-
/\bopen\s+http:\/\/localhost\b/i.test(cleaned));
|
|
99
|
-
if ((codingPlanFinished || freestyleLocalAppDone) &&
|
|
100
|
-
input.serverCriterionRequired) {
|
|
101
|
-
return recoveryForRuntimeVerify(input.projectRoot);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
81
|
+
input.sawFailedLocalHttpProbe &&
|
|
82
|
+
!input.sawLocalHttpProbe &&
|
|
83
|
+
budgetRemaining(recovery, "failedProbe") &&
|
|
84
|
+
cleaned.trim().length > 0) {
|
|
85
|
+
return recoveryForFailedProbe();
|
|
104
86
|
}
|
|
105
87
|
if (input.buildLike &&
|
|
106
88
|
!input.pentestLike &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize-gate.js","sourceRoot":"","sources":["../../src/agent/finalize-gate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"finalize-gate.js","sourceRoot":"","sources":["../../src/agent/finalize-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,7 @@ export declare class LoopGuard {
|
|
|
48
48
|
private consecutiveSequenceRepeats;
|
|
49
49
|
private totalSequenceSuppressions;
|
|
50
50
|
private sequenceRunCounts;
|
|
51
|
+
private sequenceOutcomes;
|
|
51
52
|
private emptySuccessfulCalls;
|
|
52
53
|
private failedReadRetryUsed;
|
|
53
54
|
private successfulOutputs;
|
package/dist/agent/loop-guard.js
CHANGED
|
@@ -64,6 +64,7 @@ export class LoopGuard {
|
|
|
64
64
|
consecutiveSequenceRepeats = 0;
|
|
65
65
|
totalSequenceSuppressions = 0;
|
|
66
66
|
sequenceRunCounts = new Map();
|
|
67
|
+
sequenceOutcomes = new Map();
|
|
67
68
|
emptySuccessfulCalls = new Map();
|
|
68
69
|
failedReadRetryUsed = new Set();
|
|
69
70
|
successfulOutputs = new Map();
|
|
@@ -181,6 +182,29 @@ export class LoopGuard {
|
|
|
181
182
|
this.lastActionSequenceOutcome = undefined;
|
|
182
183
|
this.unchangedActionSequenceRuns = 0;
|
|
183
184
|
this.consecutiveSequenceRepeats = 0;
|
|
185
|
+
const prior = this.sequenceOutcomes.get(signature);
|
|
186
|
+
if (prior && prior.unchangedRuns >= 3) {
|
|
187
|
+
this.totalSequenceSuppressions += 1;
|
|
188
|
+
return {
|
|
189
|
+
suppress: true,
|
|
190
|
+
terminal: this.totalSequenceSuppressions >= 4,
|
|
191
|
+
repetitions: prior.unchangedRuns,
|
|
192
|
+
totalSuppressions: this.totalSequenceSuppressions,
|
|
193
|
+
oscillation: true,
|
|
194
|
+
warn: false,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
if (prior && prior.unchangedRuns >= 2) {
|
|
198
|
+
return {
|
|
199
|
+
suppress: false,
|
|
200
|
+
terminal: false,
|
|
201
|
+
repetitions: prior.unchangedRuns,
|
|
202
|
+
totalSuppressions: this.totalSequenceSuppressions,
|
|
203
|
+
oscillation: true,
|
|
204
|
+
warn: true,
|
|
205
|
+
warnMessage: "This action sequence has returned after intervening actions and produced the same observable result repeatedly. Use the existing result or take a materially different action; another unchanged cycle will be blocked.",
|
|
206
|
+
};
|
|
207
|
+
}
|
|
184
208
|
return none;
|
|
185
209
|
}
|
|
186
210
|
if (!this.lastActionSequenceEligible) {
|
|
@@ -260,6 +284,7 @@ export class LoopGuard {
|
|
|
260
284
|
this.actionSequenceRepetitions = 0;
|
|
261
285
|
this.lastActionSequenceOutcome = undefined;
|
|
262
286
|
this.unchangedActionSequenceRuns = 0;
|
|
287
|
+
this.sequenceOutcomes.delete(signature);
|
|
263
288
|
return;
|
|
264
289
|
}
|
|
265
290
|
if (this.sequenceNeedsOutcomeComparison(calls)) {
|
|
@@ -269,6 +294,11 @@ export class LoopGuard {
|
|
|
269
294
|
? this.unchangedActionSequenceRuns + 1
|
|
270
295
|
: 1;
|
|
271
296
|
this.lastActionSequenceOutcome = comparableOutcome;
|
|
297
|
+
const prior = this.sequenceOutcomes.get(signature);
|
|
298
|
+
this.sequenceOutcomes.set(signature, {
|
|
299
|
+
fingerprint: comparableOutcome,
|
|
300
|
+
unchangedRuns: prior?.fingerprint === comparableOutcome ? prior.unchangedRuns + 1 : 1,
|
|
301
|
+
});
|
|
272
302
|
}
|
|
273
303
|
this.sequenceRunCounts.set(signature, (this.sequenceRunCounts.get(signature) ?? 0) + 1);
|
|
274
304
|
}
|
|
@@ -279,15 +309,18 @@ export class LoopGuard {
|
|
|
279
309
|
return this.resetSequenceCountBySignature(signature);
|
|
280
310
|
}
|
|
281
311
|
resetSequenceCountBySignature(signature) {
|
|
282
|
-
if (!this.sequenceRunCounts.has(signature)
|
|
312
|
+
if (!this.sequenceRunCounts.has(signature) &&
|
|
313
|
+
!this.sequenceOutcomes.has(signature))
|
|
283
314
|
return false;
|
|
284
315
|
this.sequenceRunCounts.delete(signature);
|
|
316
|
+
this.sequenceOutcomes.delete(signature);
|
|
285
317
|
this.actionSequenceRepetitions = 0;
|
|
286
318
|
this.consecutiveSequenceRepeats = 0;
|
|
287
319
|
return true;
|
|
288
320
|
}
|
|
289
321
|
resetAllSequenceCounts() {
|
|
290
322
|
this.sequenceRunCounts.clear();
|
|
323
|
+
this.sequenceOutcomes.clear();
|
|
291
324
|
this.actionSequenceRepetitions = 0;
|
|
292
325
|
this.consecutiveSequenceRepeats = 0;
|
|
293
326
|
this.lastActionSequenceOutcome = undefined;
|