@pentoshi/clai 2.0.62 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +262 -368
- package/dist/agent/context-manager.d.ts +5 -0
- package/dist/agent/context-manager.js +14 -2
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/events.d.ts +4 -1
- package/dist/agent/runner.js +150 -83
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/tool-call-parser.d.ts +15 -0
- package/dist/agent/tool-call-parser.js +171 -2
- package/dist/agent/tool-call-parser.js.map +1 -1
- package/dist/app/adapters/agent-event-adapter.d.ts +29 -0
- package/dist/app/adapters/agent-event-adapter.js +143 -0
- package/dist/app/adapters/agent-event-adapter.js.map +1 -0
- package/dist/app/adapters/current-agent-adapter.d.ts +7 -0
- package/dist/app/adapters/current-agent-adapter.js +27 -0
- package/dist/app/adapters/current-agent-adapter.js.map +1 -0
- package/dist/app/adapters/current-jobs-adapter.d.ts +4 -0
- package/dist/app/adapters/current-jobs-adapter.js +13 -0
- package/dist/app/adapters/current-jobs-adapter.js.map +1 -0
- package/dist/app/adapters/current-store-adapter.d.ts +3 -0
- package/dist/app/adapters/current-store-adapter.js +22 -0
- package/dist/app/adapters/current-store-adapter.js.map +1 -0
- package/dist/app/adapters/current-terminal-adapter.d.ts +9 -0
- package/dist/app/adapters/current-terminal-adapter.js +31 -0
- package/dist/app/adapters/current-terminal-adapter.js.map +1 -0
- package/dist/app/adapters/current-updates-adapter.d.ts +7 -0
- package/dist/app/adapters/current-updates-adapter.js +31 -0
- package/dist/app/adapters/current-updates-adapter.js.map +1 -0
- package/dist/app/adapters/in-memory-clipboard-adapter.d.ts +10 -0
- package/dist/app/adapters/in-memory-clipboard-adapter.js +20 -0
- package/dist/app/adapters/in-memory-clipboard-adapter.js.map +1 -0
- package/dist/app/commands/command.d.ts +24 -0
- package/dist/app/commands/command.js +4 -0
- package/dist/app/commands/command.js.map +1 -0
- package/dist/app/commands/registry.d.ts +45 -0
- package/dist/app/commands/registry.js +164 -0
- package/dist/app/commands/registry.js.map +1 -0
- package/dist/app/controllers/disposable.d.ts +15 -0
- package/dist/app/controllers/disposable.js +38 -0
- package/dist/app/controllers/disposable.js.map +1 -0
- package/dist/app/controllers/job-controller.d.ts +22 -0
- package/dist/app/controllers/job-controller.js +35 -0
- package/dist/app/controllers/job-controller.js.map +1 -0
- package/dist/app/controllers/plan-controller.d.ts +31 -0
- package/dist/app/controllers/plan-controller.js +69 -0
- package/dist/app/controllers/plan-controller.js.map +1 -0
- package/dist/app/controllers/session-controller.d.ts +167 -0
- package/dist/app/controllers/session-controller.js +467 -0
- package/dist/app/controllers/session-controller.js.map +1 -0
- package/dist/app/controllers/turn-controller.d.ts +52 -0
- package/dist/app/controllers/turn-controller.js +118 -0
- package/dist/app/controllers/turn-controller.js.map +1 -0
- package/dist/app/events/app-event.d.ts +118 -0
- package/dist/app/events/app-event.js +25 -0
- package/dist/app/events/app-event.js.map +1 -0
- package/dist/app/events/event-buffer.d.ts +51 -0
- package/dist/app/events/event-buffer.js +109 -0
- package/dist/app/events/event-buffer.js.map +1 -0
- package/dist/app/events/sequencer.d.ts +32 -0
- package/dist/app/events/sequencer.js +55 -0
- package/dist/app/events/sequencer.js.map +1 -0
- package/dist/app/ports/agent-port.d.ts +29 -0
- package/dist/app/ports/agent-port.js +2 -0
- package/dist/app/ports/agent-port.js.map +1 -0
- package/dist/app/ports/clipboard-port.d.ts +9 -0
- package/dist/app/ports/clipboard-port.js +2 -0
- package/dist/app/ports/clipboard-port.js.map +1 -0
- package/dist/app/ports/confirm-port.d.ts +17 -0
- package/dist/app/ports/confirm-port.js +2 -0
- package/dist/app/ports/confirm-port.js.map +1 -0
- package/dist/app/ports/jobs-port.d.ts +18 -0
- package/dist/app/ports/jobs-port.js +2 -0
- package/dist/app/ports/jobs-port.js.map +1 -0
- package/dist/app/ports/persistence-port.d.ts +21 -0
- package/dist/app/ports/persistence-port.js +2 -0
- package/dist/app/ports/persistence-port.js.map +1 -0
- package/dist/app/ports/secret-port.d.ts +12 -0
- package/dist/app/ports/secret-port.js +2 -0
- package/dist/app/ports/secret-port.js.map +1 -0
- package/dist/app/ports/terminal-port.d.ts +18 -0
- package/dist/app/ports/terminal-port.js +2 -0
- package/dist/app/ports/terminal-port.js.map +1 -0
- package/dist/app/ports/updates-port.d.ts +12 -0
- package/dist/app/ports/updates-port.js +2 -0
- package/dist/app/ports/updates-port.js.map +1 -0
- package/dist/commands/doctor.js +9 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/update.js +1 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/dist/llm/router.js +4 -2
- package/dist/llm/router.js.map +1 -1
- package/dist/prompts/index.d.ts +1 -1
- package/dist/prompts/index.js +5 -3
- package/dist/prompts/index.js.map +1 -1
- package/dist/repl/slash-commands.js +1 -1
- package/dist/repl/slash-commands.js.map +1 -1
- package/dist/repl.js +35 -107
- package/dist/repl.js.map +1 -1
- package/dist/store/config.js +3 -1
- package/dist/store/config.js.map +1 -1
- package/dist/store/history.d.ts +26 -2
- package/dist/store/history.js +383 -72
- package/dist/store/history.js.map +1 -1
- package/dist/store/logs.js +3 -3
- package/dist/store/logs.js.map +1 -1
- package/dist/store/paths.d.ts +6 -0
- package/dist/store/paths.js +38 -0
- package/dist/store/paths.js.map +1 -0
- package/dist/store/plan.js +8 -5
- package/dist/store/plan.js.map +1 -1
- package/dist/tools/jobs.js +2 -2
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/registry.js +117 -46
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/shell.js +2 -2
- package/dist/tools/shell.js.map +1 -1
- package/dist/tui/state.js +20 -17
- package/dist/tui/state.js.map +1 -1
- package/dist/tui-v2/actions/action-id.d.ts +14 -0
- package/dist/tui-v2/actions/action-id.js +109 -0
- package/dist/tui-v2/actions/action-id.js.map +1 -0
- package/dist/tui-v2/actions/action-router.d.ts +18 -0
- package/dist/tui-v2/actions/action-router.js +62 -0
- package/dist/tui-v2/actions/action-router.js.map +1 -0
- package/dist/tui-v2/actions/chord-from-key.d.ts +26 -0
- package/dist/tui-v2/actions/chord-from-key.js +45 -0
- package/dist/tui-v2/actions/chord-from-key.js.map +1 -0
- package/dist/tui-v2/actions/keymap.d.ts +24 -0
- package/dist/tui-v2/actions/keymap.js +134 -0
- package/dist/tui-v2/actions/keymap.js.map +1 -0
- package/dist/tui-v2/app/App.d.ts +13 -0
- package/dist/tui-v2/app/App.js +320 -0
- package/dist/tui-v2/app/App.js.map +1 -0
- package/dist/tui-v2/app/command-handlers.d.ts +8 -0
- package/dist/tui-v2/app/command-handlers.js +66 -0
- package/dist/tui-v2/app/command-handlers.js.map +1 -0
- package/dist/tui-v2/app/commands/config-commands.d.ts +14 -0
- package/dist/tui-v2/app/commands/config-commands.js +161 -0
- package/dist/tui-v2/app/commands/config-commands.js.map +1 -0
- package/dist/tui-v2/app/commands/key-commands.d.ts +9 -0
- package/dist/tui-v2/app/commands/key-commands.js +263 -0
- package/dist/tui-v2/app/commands/key-commands.js.map +1 -0
- package/dist/tui-v2/app/commands/picker-commands.d.ts +24 -0
- package/dist/tui-v2/app/commands/picker-commands.js +423 -0
- package/dist/tui-v2/app/commands/picker-commands.js.map +1 -0
- package/dist/tui-v2/app/commands/session-commands.d.ts +19 -0
- package/dist/tui-v2/app/commands/session-commands.js +162 -0
- package/dist/tui-v2/app/commands/session-commands.js.map +1 -0
- package/dist/tui-v2/app/plan-lifecycle.d.ts +16 -0
- package/dist/tui-v2/app/plan-lifecycle.js +59 -0
- package/dist/tui-v2/app/plan-lifecycle.js.map +1 -0
- package/dist/tui-v2/app/providers.d.ts +17 -0
- package/dist/tui-v2/app/providers.js +32 -0
- package/dist/tui-v2/app/providers.js.map +1 -0
- package/dist/tui-v2/bootstrap/capabilities.d.ts +35 -0
- package/dist/tui-v2/bootstrap/capabilities.js +93 -0
- package/dist/tui-v2/bootstrap/capabilities.js.map +1 -0
- package/dist/tui-v2/bootstrap/composition-root.d.ts +85 -0
- package/dist/tui-v2/bootstrap/composition-root.js +131 -0
- package/dist/tui-v2/bootstrap/composition-root.js.map +1 -0
- package/dist/tui-v2/bootstrap/disable-native-selection.d.ts +11 -0
- package/dist/tui-v2/bootstrap/disable-native-selection.js +13 -0
- package/dist/tui-v2/bootstrap/disable-native-selection.js.map +1 -0
- package/dist/tui-v2/bootstrap/lifecycle.d.ts +62 -0
- package/dist/tui-v2/bootstrap/lifecycle.js +123 -0
- package/dist/tui-v2/bootstrap/lifecycle.js.map +1 -0
- package/dist/tui-v2/bootstrap/osc52-clipboard.d.ts +28 -0
- package/dist/tui-v2/bootstrap/osc52-clipboard.js +44 -0
- package/dist/tui-v2/bootstrap/osc52-clipboard.js.map +1 -0
- package/dist/tui-v2/bootstrap/overlay-ports.d.ts +12 -0
- package/dist/{tui/confirm.js → tui-v2/bootstrap/overlay-ports.js} +17 -25
- package/dist/tui-v2/bootstrap/overlay-ports.js.map +1 -0
- package/dist/tui-v2/bootstrap/pager-export.d.ts +24 -0
- package/dist/tui-v2/bootstrap/pager-export.js +87 -0
- package/dist/tui-v2/bootstrap/pager-export.js.map +1 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.d.ts +15 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.js +95 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -0
- package/dist/tui-v2/bootstrap/ui-selection.d.ts +30 -0
- package/dist/tui-v2/bootstrap/ui-selection.js +59 -0
- package/dist/tui-v2/bootstrap/ui-selection.js.map +1 -0
- package/dist/tui-v2/components/completion/completion-menu.d.ts +23 -0
- package/dist/tui-v2/components/completion/completion-menu.js +84 -0
- package/dist/tui-v2/components/completion/completion-menu.js.map +1 -0
- package/dist/tui-v2/components/jobs/jobs-panel.d.ts +16 -0
- package/dist/tui-v2/components/jobs/jobs-panel.js +92 -0
- package/dist/tui-v2/components/jobs/jobs-panel.js.map +1 -0
- package/dist/tui-v2/components/modal/confirm-modal.d.ts +21 -0
- package/dist/tui-v2/components/modal/confirm-modal.js +71 -0
- package/dist/tui-v2/components/modal/confirm-modal.js.map +1 -0
- package/dist/tui-v2/components/modal/prompt-actions-modal.d.ts +15 -0
- package/dist/tui-v2/components/modal/prompt-actions-modal.js +80 -0
- package/dist/tui-v2/components/modal/prompt-actions-modal.js.map +1 -0
- package/dist/tui-v2/components/modal/secret-modal.d.ts +24 -0
- package/dist/tui-v2/components/modal/secret-modal.js +50 -0
- package/dist/tui-v2/components/modal/secret-modal.js.map +1 -0
- package/dist/tui-v2/components/overlay/overlay-host.d.ts +17 -0
- package/dist/tui-v2/components/overlay/overlay-host.js +28 -0
- package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -0
- package/dist/tui-v2/components/pager/pager.d.ts +20 -0
- package/dist/tui-v2/components/pager/pager.js +396 -0
- package/dist/tui-v2/components/pager/pager.js.map +1 -0
- package/dist/tui-v2/components/picker/picker.d.ts +17 -0
- package/dist/tui-v2/components/picker/picker.js +222 -0
- package/dist/tui-v2/components/picker/picker.js.map +1 -0
- package/dist/tui-v2/components/plan/plan-view.d.ts +20 -0
- package/dist/tui-v2/components/plan/plan-view.js +116 -0
- package/dist/tui-v2/components/plan/plan-view.js.map +1 -0
- package/dist/tui-v2/components/queue/queue-panel.d.ts +23 -0
- package/dist/tui-v2/components/queue/queue-panel.js +58 -0
- package/dist/tui-v2/components/queue/queue-panel.js.map +1 -0
- package/dist/tui-v2/components/status/status-line.d.ts +27 -0
- package/dist/tui-v2/components/status/status-line.js +158 -0
- package/dist/tui-v2/components/status/status-line.js.map +1 -0
- package/dist/tui-v2/components/toast/toast-host.d.ts +15 -0
- package/dist/tui-v2/components/toast/toast-host.js +48 -0
- package/dist/tui-v2/components/toast/toast-host.js.map +1 -0
- package/dist/tui-v2/components/transcript/assistant-message.d.ts +20 -0
- package/dist/tui-v2/components/transcript/assistant-message.js +35 -0
- package/dist/tui-v2/components/transcript/assistant-message.js.map +1 -0
- package/dist/tui-v2/components/transcript/compacted-row.d.ts +19 -0
- package/dist/tui-v2/components/transcript/compacted-row.js +94 -0
- package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -0
- package/dist/tui-v2/components/transcript/intro-card.d.ts +19 -0
- package/dist/tui-v2/components/transcript/intro-card.js +50 -0
- package/dist/tui-v2/components/transcript/intro-card.js.map +1 -0
- package/dist/tui-v2/components/transcript/linkable-text.d.ts +21 -0
- package/dist/tui-v2/components/transcript/linkable-text.js +46 -0
- package/dist/tui-v2/components/transcript/linkable-text.js.map +1 -0
- package/dist/tui-v2/components/transcript/notice-row.d.ts +14 -0
- package/dist/tui-v2/components/transcript/notice-row.js +40 -0
- package/dist/tui-v2/components/transcript/notice-row.js.map +1 -0
- package/dist/tui-v2/components/transcript/search-bar.d.ts +19 -0
- package/dist/tui-v2/components/transcript/search-bar.js +7 -0
- package/dist/tui-v2/components/transcript/search-bar.js.map +1 -0
- package/dist/tui-v2/components/transcript/thinking-block.d.ts +22 -0
- package/dist/tui-v2/components/transcript/thinking-block.js +27 -0
- package/dist/tui-v2/components/transcript/thinking-block.js.map +1 -0
- package/dist/tui-v2/components/transcript/tool-card.d.ts +26 -0
- package/dist/tui-v2/components/transcript/tool-card.js +175 -0
- package/dist/tui-v2/components/transcript/tool-card.js.map +1 -0
- package/dist/tui-v2/components/transcript/transcript-row.d.ts +25 -0
- package/dist/tui-v2/components/transcript/transcript-row.js +30 -0
- package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -0
- package/dist/tui-v2/components/transcript/transcript-scroll-port.d.ts +52 -0
- package/dist/tui-v2/components/transcript/transcript-scroll-port.js +86 -0
- package/dist/tui-v2/components/transcript/transcript-scroll-port.js.map +1 -0
- package/dist/tui-v2/components/transcript/transcript-view.d.ts +24 -0
- package/dist/tui-v2/components/transcript/transcript-view.js +403 -0
- package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -0
- package/dist/tui-v2/components/transcript/use-click-without-drag.d.ts +13 -0
- package/dist/tui-v2/components/transcript/use-click-without-drag.js +35 -0
- package/dist/tui-v2/components/transcript/use-click-without-drag.js.map +1 -0
- package/dist/tui-v2/components/transcript/use-native-selection-copy.d.ts +10 -0
- package/dist/tui-v2/components/transcript/use-native-selection-copy.js +37 -0
- package/dist/tui-v2/components/transcript/use-native-selection-copy.js.map +1 -0
- package/dist/tui-v2/components/transcript/use-transcript-selection.d.ts +23 -0
- package/dist/tui-v2/components/transcript/use-transcript-selection.js +136 -0
- package/dist/tui-v2/components/transcript/use-transcript-selection.js.map +1 -0
- package/dist/tui-v2/components/transcript/user-message.d.ts +10 -0
- package/dist/tui-v2/components/transcript/user-message.js +23 -0
- package/dist/tui-v2/components/transcript/user-message.js.map +1 -0
- package/dist/tui-v2/composer/arrow-intent.d.ts +23 -0
- package/dist/tui-v2/composer/arrow-intent.js +35 -0
- package/dist/tui-v2/composer/arrow-intent.js.map +1 -0
- package/dist/tui-v2/composer/completion.d.ts +37 -0
- package/dist/tui-v2/composer/completion.js +67 -0
- package/dist/tui-v2/composer/completion.js.map +1 -0
- package/dist/tui-v2/composer/composer-editor.d.ts +33 -0
- package/dist/tui-v2/composer/composer-editor.js +620 -0
- package/dist/tui-v2/composer/composer-editor.js.map +1 -0
- package/dist/tui-v2/composer/composer-height.d.ts +21 -0
- package/dist/tui-v2/composer/composer-height.js +29 -0
- package/dist/tui-v2/composer/composer-height.js.map +1 -0
- package/dist/tui-v2/composer/composer-meta.d.ts +9 -0
- package/dist/tui-v2/composer/composer-meta.js +38 -0
- package/dist/tui-v2/composer/composer-meta.js.map +1 -0
- package/dist/tui-v2/composer/history-nav.d.ts +15 -0
- package/dist/tui-v2/composer/history-nav.js +16 -0
- package/dist/tui-v2/composer/history-nav.js.map +1 -0
- package/dist/tui-v2/composer/newline-hint.d.ts +13 -0
- package/dist/tui-v2/composer/newline-hint.js +13 -0
- package/dist/tui-v2/composer/newline-hint.js.map +1 -0
- package/dist/tui-v2/composer/paste-placeholder.d.ts +35 -0
- package/dist/tui-v2/composer/paste-placeholder.js +55 -0
- package/dist/tui-v2/composer/paste-placeholder.js.map +1 -0
- package/dist/tui-v2/composer/prompt-history.d.ts +22 -0
- package/dist/tui-v2/composer/prompt-history.js +51 -0
- package/dist/tui-v2/composer/prompt-history.js.map +1 -0
- package/dist/tui-v2/composer/secret-buffer.d.ts +20 -0
- package/dist/tui-v2/composer/secret-buffer.js +42 -0
- package/dist/tui-v2/composer/secret-buffer.js.map +1 -0
- package/dist/tui-v2/composer/textarea-keybindings.d.ts +22 -0
- package/dist/tui-v2/composer/textarea-keybindings.js +27 -0
- package/dist/tui-v2/composer/textarea-keybindings.js.map +1 -0
- package/dist/tui-v2/controllers/focus-controller.d.ts +30 -0
- package/dist/tui-v2/controllers/focus-controller.js +80 -0
- package/dist/tui-v2/controllers/focus-controller.js.map +1 -0
- package/dist/tui-v2/controllers/overlay-controller.d.ts +99 -0
- package/dist/tui-v2/controllers/overlay-controller.js +195 -0
- package/dist/tui-v2/controllers/overlay-controller.js.map +1 -0
- package/dist/tui-v2/controllers/selection-controller.d.ts +76 -0
- package/dist/tui-v2/controllers/selection-controller.js +238 -0
- package/dist/tui-v2/controllers/selection-controller.js.map +1 -0
- package/dist/tui-v2/controllers/toast-controller.d.ts +35 -0
- package/dist/tui-v2/controllers/toast-controller.js +88 -0
- package/dist/tui-v2/controllers/toast-controller.js.map +1 -0
- package/dist/tui-v2/layout/compute-layout.d.ts +59 -0
- package/dist/tui-v2/layout/compute-layout.js +170 -0
- package/dist/tui-v2/layout/compute-layout.js.map +1 -0
- package/dist/tui-v2/rendering/ansi-to-styled.d.ts +17 -0
- package/dist/tui-v2/rendering/ansi-to-styled.js +217 -0
- package/dist/tui-v2/rendering/ansi-to-styled.js.map +1 -0
- package/dist/tui-v2/rendering/batch-sections.d.ts +45 -0
- package/dist/tui-v2/rendering/batch-sections.js +109 -0
- package/dist/tui-v2/rendering/batch-sections.js.map +1 -0
- package/dist/tui-v2/rendering/link-detector.d.ts +16 -0
- package/dist/tui-v2/rendering/link-detector.js +43 -0
- package/dist/tui-v2/rendering/link-detector.js.map +1 -0
- package/dist/tui-v2/rendering/open-tool-output.d.ts +28 -0
- package/dist/tui-v2/rendering/open-tool-output.js +138 -0
- package/dist/tui-v2/rendering/open-tool-output.js.map +1 -0
- package/dist/tui-v2/rendering/picker-filter.d.ts +22 -0
- package/dist/tui-v2/rendering/picker-filter.js +68 -0
- package/dist/tui-v2/rendering/picker-filter.js.map +1 -0
- package/dist/tui-v2/rendering/plan-view.d.ts +32 -0
- package/dist/tui-v2/rendering/plan-view.js +196 -0
- package/dist/tui-v2/rendering/plan-view.js.map +1 -0
- package/dist/tui-v2/rendering/render-markdown-lines.d.ts +29 -0
- package/dist/tui-v2/rendering/render-markdown-lines.js +46 -0
- package/dist/tui-v2/rendering/render-markdown-lines.js.map +1 -0
- package/dist/tui-v2/rendering/sanitize-display.d.ts +13 -0
- package/dist/tui-v2/rendering/sanitize-display.js +24 -0
- package/dist/tui-v2/rendering/sanitize-display.js.map +1 -0
- package/dist/tui-v2/rendering/theme.d.ts +67 -0
- package/dist/tui-v2/rendering/theme.js +74 -0
- package/dist/tui-v2/rendering/theme.js.map +1 -0
- package/dist/tui-v2/rendering/tool-presenter.d.ts +39 -0
- package/dist/tui-v2/rendering/tool-presenter.js +207 -0
- package/dist/tui-v2/rendering/tool-presenter.js.map +1 -0
- package/dist/tui-v2/rendering/transcript-export.d.ts +11 -0
- package/dist/tui-v2/rendering/transcript-export.js +18 -0
- package/dist/tui-v2/rendering/transcript-export.js.map +1 -0
- package/dist/tui-v2/rendering/transcript-semantic.d.ts +17 -0
- package/dist/tui-v2/rendering/transcript-semantic.js +67 -0
- package/dist/tui-v2/rendering/transcript-semantic.js.map +1 -0
- package/dist/tui-v2/state/pager-search.d.ts +22 -0
- package/dist/tui-v2/state/pager-search.js +78 -0
- package/dist/tui-v2/state/pager-search.js.map +1 -0
- package/dist/tui-v2/state/semantic-document.d.ts +34 -0
- package/dist/tui-v2/state/semantic-document.js +201 -0
- package/dist/tui-v2/state/semantic-document.js.map +1 -0
- package/dist/tui-v2/state/transcript-compaction.d.ts +24 -0
- package/dist/tui-v2/state/transcript-compaction.js +79 -0
- package/dist/tui-v2/state/transcript-compaction.js.map +1 -0
- package/dist/tui-v2/state/transcript-hydrate.d.ts +27 -0
- package/dist/tui-v2/state/transcript-hydrate.js +272 -0
- package/dist/tui-v2/state/transcript-hydrate.js.map +1 -0
- package/dist/tui-v2/state/transcript-reducer.d.ts +10 -0
- package/dist/tui-v2/state/transcript-reducer.js +281 -0
- package/dist/tui-v2/state/transcript-reducer.js.map +1 -0
- package/dist/tui-v2/state/transcript-search.d.ts +17 -0
- package/dist/tui-v2/state/transcript-search.js +38 -0
- package/dist/tui-v2/state/transcript-search.js.map +1 -0
- package/dist/tui-v2/state/transcript-store.d.ts +32 -0
- package/dist/tui-v2/state/transcript-store.js +66 -0
- package/dist/tui-v2/state/transcript-store.js.map +1 -0
- package/dist/tui-v2/state/transcript-struct.d.ts +15 -0
- package/dist/tui-v2/state/transcript-struct.js +133 -0
- package/dist/tui-v2/state/transcript-struct.js.map +1 -0
- package/dist/tui-v2/state/transcript-types.d.ts +76 -0
- package/dist/tui-v2/state/transcript-types.js +65 -0
- package/dist/tui-v2/state/transcript-types.js.map +1 -0
- package/dist/tui-v2/state/use-overlay.d.ts +3 -0
- package/dist/tui-v2/state/use-overlay.js +6 -0
- package/dist/tui-v2/state/use-overlay.js.map +1 -0
- package/dist/tui-v2/state/use-plan.d.ts +4 -0
- package/dist/tui-v2/state/use-plan.js +6 -0
- package/dist/tui-v2/state/use-plan.js.map +1 -0
- package/dist/tui-v2/state/use-session-state.d.ts +2 -0
- package/dist/tui-v2/state/use-session-state.js +7 -0
- package/dist/tui-v2/state/use-session-state.js.map +1 -0
- package/dist/tui-v2/state/use-toast.d.ts +3 -0
- package/dist/tui-v2/state/use-toast.js +15 -0
- package/dist/tui-v2/state/use-toast.js.map +1 -0
- package/dist/tui-v2/state/use-transcript-store.d.ts +10 -0
- package/dist/tui-v2/state/use-transcript-store.js +12 -0
- package/dist/tui-v2/state/use-transcript-store.js.map +1 -0
- package/dist/ui/intro-card.js +3 -3
- package/dist/ui/intro-card.js.map +1 -1
- package/dist/ui/intro-header.d.ts +23 -0
- package/dist/ui/intro-header.js +232 -0
- package/dist/ui/intro-header.js.map +1 -0
- package/dist/ui/markdown.js +0 -1
- package/dist/ui/markdown.js.map +1 -1
- package/dist/ui/mentions.d.ts +9 -2
- package/dist/ui/mentions.js +102 -4
- package/dist/ui/mentions.js.map +1 -1
- package/dist/ui/output-pane.js +1 -1
- package/dist/ui/output-pane.js.map +1 -1
- package/dist/ui/plan-pane.d.ts +8 -0
- package/dist/ui/plan-pane.js +38 -0
- package/dist/ui/plan-pane.js.map +1 -1
- package/dist/ui/wordmark.d.ts +5 -0
- package/dist/ui/wordmark.js +6 -1
- package/dist/ui/wordmark.js.map +1 -1
- package/package.json +14 -10
- package/dist/tui/App.d.ts +0 -12
- package/dist/tui/App.js +0 -2174
- package/dist/tui/App.js.map +0 -1
- package/dist/tui/components/ConfirmModal.d.ts +0 -9
- package/dist/tui/components/ConfirmModal.js +0 -55
- package/dist/tui/components/ConfirmModal.js.map +0 -1
- package/dist/tui/components/JobsPanel.d.ts +0 -11
- package/dist/tui/components/JobsPanel.js +0 -55
- package/dist/tui/components/JobsPanel.js.map +0 -1
- package/dist/tui/components/Pager.d.ts +0 -14
- package/dist/tui/components/Pager.js +0 -56
- package/dist/tui/components/Pager.js.map +0 -1
- package/dist/tui/components/PickerPanel.d.ts +0 -15
- package/dist/tui/components/PickerPanel.js +0 -126
- package/dist/tui/components/PickerPanel.js.map +0 -1
- package/dist/tui/components/PlanSidebar.d.ts +0 -6
- package/dist/tui/components/PlanSidebar.js +0 -99
- package/dist/tui/components/PlanSidebar.js.map +0 -1
- package/dist/tui/components/SecretInputPanel.d.ts +0 -7
- package/dist/tui/components/SecretInputPanel.js +0 -38
- package/dist/tui/components/SecretInputPanel.js.map +0 -1
- package/dist/tui/confirm.d.ts +0 -16
- package/dist/tui/confirm.js.map +0 -1
- package/dist/tui/default.d.ts +0 -6
- package/dist/tui/default.js +0 -11
- package/dist/tui/default.js.map +0 -1
- package/dist/tui/hooks/useAgentRunner.d.ts +0 -73
- package/dist/tui/hooks/useAgentRunner.js +0 -277
- package/dist/tui/hooks/useAgentRunner.js.map +0 -1
- package/dist/tui/hooks/useJobs.d.ts +0 -7
- package/dist/tui/hooks/useJobs.js +0 -39
- package/dist/tui/hooks/useJobs.js.map +0 -1
- package/dist/tui/hooks/useSpinner.d.ts +0 -5
- package/dist/tui/hooks/useSpinner.js +0 -21
- package/dist/tui/hooks/useSpinner.js.map +0 -1
- package/dist/tui/hooks/useTerminalSize.d.ts +0 -9
- package/dist/tui/hooks/useTerminalSize.js +0 -26
- package/dist/tui/hooks/useTerminalSize.js.map +0 -1
- package/dist/tui/index.d.ts +0 -10
- package/dist/tui/index.js +0 -37
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/key-intent.d.ts +0 -36
- package/dist/tui/key-intent.js +0 -54
- package/dist/tui/key-intent.js.map +0 -1
- package/dist/tui/mouse.d.ts +0 -8
- package/dist/tui/mouse.js +0 -34
- package/dist/tui/mouse.js.map +0 -1
- package/dist/tui/plan-sidebar-lines.d.ts +0 -2
- package/dist/tui/plan-sidebar-lines.js +0 -140
- package/dist/tui/plan-sidebar-lines.js.map +0 -1
- package/dist/tui/render-lines.d.ts +0 -22
- package/dist/tui/render-lines.js +0 -611
- package/dist/tui/render-lines.js.map +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized transcript entities (V2-050).
|
|
3
|
+
*
|
|
4
|
+
* Items are keyed by a stable domain id — never an array index — so a
|
|
5
|
+
* component can subscribe by id and the ScrollBox can give every row a
|
|
6
|
+
* stable renderable id (ARCHITECTURE "Every dynamic row has a stable domain
|
|
7
|
+
* id"). `order` is the append order; `byId` is the normalized lookup.
|
|
8
|
+
*/
|
|
9
|
+
import type { ToolCallId, TurnId } from "../../app/events/app-event.js";
|
|
10
|
+
interface ItemBase {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly sequence: number;
|
|
13
|
+
readonly turnId: TurnId | undefined;
|
|
14
|
+
readonly timestamp: number;
|
|
15
|
+
}
|
|
16
|
+
export interface UserItem extends ItemBase {
|
|
17
|
+
readonly kind: "user";
|
|
18
|
+
readonly text: string;
|
|
19
|
+
}
|
|
20
|
+
export interface AssistantItem extends ItemBase {
|
|
21
|
+
readonly kind: "assistant";
|
|
22
|
+
readonly text: string;
|
|
23
|
+
readonly streaming: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface ThinkingItem extends ItemBase {
|
|
26
|
+
readonly kind: "thinking";
|
|
27
|
+
readonly content: string;
|
|
28
|
+
readonly streaming: boolean;
|
|
29
|
+
}
|
|
30
|
+
export type ToolStatus = "running" | "ok" | "failed" | "blocked";
|
|
31
|
+
export interface ToolItem extends ItemBase {
|
|
32
|
+
readonly kind: "tool";
|
|
33
|
+
readonly toolCallId: ToolCallId;
|
|
34
|
+
readonly name: string;
|
|
35
|
+
readonly argsDisplay: string;
|
|
36
|
+
readonly status: ToolStatus;
|
|
37
|
+
readonly exitCode: number | undefined;
|
|
38
|
+
readonly summary: string | undefined;
|
|
39
|
+
readonly artifactPath: string | undefined;
|
|
40
|
+
readonly reason: string | undefined;
|
|
41
|
+
readonly outputBytes: number;
|
|
42
|
+
}
|
|
43
|
+
export type NoticeLevel = "info" | "warn" | "error";
|
|
44
|
+
export interface NoticeItem extends ItemBase {
|
|
45
|
+
readonly kind: "notice";
|
|
46
|
+
readonly level: NoticeLevel;
|
|
47
|
+
readonly text: string;
|
|
48
|
+
}
|
|
49
|
+
export interface CompactedItem extends ItemBase {
|
|
50
|
+
readonly kind: "compacted";
|
|
51
|
+
readonly summary: string;
|
|
52
|
+
readonly beforeTokens: number;
|
|
53
|
+
readonly afterTokens: number;
|
|
54
|
+
}
|
|
55
|
+
export type TranscriptItem = UserItem | AssistantItem | ThinkingItem | ToolItem | NoticeItem | CompactedItem;
|
|
56
|
+
export interface TranscriptState {
|
|
57
|
+
readonly order: readonly string[];
|
|
58
|
+
readonly byId: ReadonlyMap<string, TranscriptItem>;
|
|
59
|
+
/** Open streaming item id per kind, cleared once the final event lands. */
|
|
60
|
+
readonly pendingAssistantId: string | undefined;
|
|
61
|
+
readonly pendingThinkingId: string | undefined;
|
|
62
|
+
readonly lastSequence: number;
|
|
63
|
+
/** "step N" text from the most recent `status` event while a turn runs. */
|
|
64
|
+
readonly runningStatus: string | undefined;
|
|
65
|
+
readonly expandThinkingGlobal: boolean;
|
|
66
|
+
readonly expandOutputGlobal: boolean;
|
|
67
|
+
/** Per-item expand/collapse override; absent means "inherit the global". */
|
|
68
|
+
readonly itemOverrides: ReadonlyMap<string, boolean>;
|
|
69
|
+
}
|
|
70
|
+
export declare const EMPTY_TRANSCRIPT_STATE: TranscriptState;
|
|
71
|
+
/** CHAT-005/006/007: a per-item override always wins over the global toggle. */
|
|
72
|
+
export declare function isItemExpanded(state: TranscriptState, item: TranscriptItem): boolean;
|
|
73
|
+
export declare function transcriptItems(state: TranscriptState): TranscriptItem[];
|
|
74
|
+
/** Plain text a search/export pass should scan for a given item. */
|
|
75
|
+
export declare function itemSearchText(item: TranscriptItem): string;
|
|
76
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized transcript entities (V2-050).
|
|
3
|
+
*
|
|
4
|
+
* Items are keyed by a stable domain id — never an array index — so a
|
|
5
|
+
* component can subscribe by id and the ScrollBox can give every row a
|
|
6
|
+
* stable renderable id (ARCHITECTURE "Every dynamic row has a stable domain
|
|
7
|
+
* id"). `order` is the append order; `byId` is the normalized lookup.
|
|
8
|
+
*/
|
|
9
|
+
export const EMPTY_TRANSCRIPT_STATE = {
|
|
10
|
+
order: [],
|
|
11
|
+
byId: new Map(),
|
|
12
|
+
pendingAssistantId: undefined,
|
|
13
|
+
pendingThinkingId: undefined,
|
|
14
|
+
lastSequence: 0,
|
|
15
|
+
runningStatus: undefined,
|
|
16
|
+
expandThinkingGlobal: false,
|
|
17
|
+
expandOutputGlobal: false,
|
|
18
|
+
itemOverrides: new Map(),
|
|
19
|
+
};
|
|
20
|
+
/** CHAT-005/006/007: a per-item override always wins over the global toggle. */
|
|
21
|
+
export function isItemExpanded(state, item) {
|
|
22
|
+
const override = state.itemOverrides.get(item.id);
|
|
23
|
+
if (override !== undefined)
|
|
24
|
+
return override;
|
|
25
|
+
if (item.kind === "thinking")
|
|
26
|
+
return state.expandThinkingGlobal;
|
|
27
|
+
// Compacted memory cards share Ctrl+O with tool OUTPUT (classic parity).
|
|
28
|
+
if (item.kind === "tool" || item.kind === "compacted") {
|
|
29
|
+
return state.expandOutputGlobal;
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
export function transcriptItems(state) {
|
|
34
|
+
const items = [];
|
|
35
|
+
for (const id of state.order) {
|
|
36
|
+
const item = state.byId.get(id);
|
|
37
|
+
if (item)
|
|
38
|
+
items.push(item);
|
|
39
|
+
}
|
|
40
|
+
return items;
|
|
41
|
+
}
|
|
42
|
+
/** Plain text a search/export pass should scan for a given item. */
|
|
43
|
+
export function itemSearchText(item) {
|
|
44
|
+
switch (item.kind) {
|
|
45
|
+
case "user":
|
|
46
|
+
return item.text;
|
|
47
|
+
case "assistant":
|
|
48
|
+
return item.text;
|
|
49
|
+
case "thinking":
|
|
50
|
+
return item.content;
|
|
51
|
+
case "tool":
|
|
52
|
+
return [item.name, item.argsDisplay, item.summary, item.reason]
|
|
53
|
+
.filter((part) => Boolean(part))
|
|
54
|
+
.join("\n");
|
|
55
|
+
case "notice":
|
|
56
|
+
return item.text;
|
|
57
|
+
case "compacted":
|
|
58
|
+
return item.summary;
|
|
59
|
+
default: {
|
|
60
|
+
const unreachable = item;
|
|
61
|
+
throw new Error(`unhandled transcript item: ${JSON.stringify(unreachable)}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=transcript-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-types.js","sourceRoot":"","sources":["../../../src/tui-v2/state/transcript-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiFH,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,IAAI,GAAG,EAAE;IACf,kBAAkB,EAAE,SAAS;IAC7B,iBAAiB,EAAE,SAAS;IAC5B,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,SAAS;IACxB,oBAAoB,EAAE,KAAK;IAC3B,kBAAkB,EAAE,KAAK;IACzB,aAAa,EAAE,IAAI,GAAG,EAAE;CACzB,CAAC;AAEF,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,KAAsB,EAAE,IAAoB;IACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC,oBAAoB,CAAC;IAChE,yEAAyE;IACzE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC,kBAAkB,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;iBAC5D,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,IAAI,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** React binding for `OverlayController`, mirroring `use-transcript-store.ts`. */
|
|
2
|
+
import { useSyncExternalStore } from "react";
|
|
3
|
+
export function useOverlayState(controller) {
|
|
4
|
+
return useSyncExternalStore((listener) => controller.subscribe(listener), () => controller.getState());
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=use-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-overlay.js","sourceRoot":"","sources":["../../../src/tui-v2/state/use-overlay.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAG7C,MAAM,UAAU,eAAe,CAAC,UAA6B;IAC3D,OAAO,oBAAoB,CACzB,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC5C,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** React binding for `PlanController` (V2-070), mirroring `use-transcript-store.ts`. */
|
|
2
|
+
import type { PlanController } from "../../app/controllers/plan-controller.js";
|
|
3
|
+
import type { SessionPlan } from "../../store/plan.js";
|
|
4
|
+
export declare function usePlan(controller: PlanController): SessionPlan | undefined;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** React binding for `PlanController` (V2-070), mirroring `use-transcript-store.ts`. */
|
|
2
|
+
import { useSyncExternalStore } from "react";
|
|
3
|
+
export function usePlan(controller) {
|
|
4
|
+
return useSyncExternalStore((listener) => controller.subscribe(listener), () => controller.current());
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=use-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-plan.js","sourceRoot":"","sources":["../../../src/tui-v2/state/use-plan.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAExF,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAI7C,MAAM,UAAU,OAAO,CAAC,UAA0B;IAChD,OAAO,oBAAoB,CACzB,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC5C,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
export function useSessionState(session) {
|
|
3
|
+
const [state, setState] = useState(() => session.getState());
|
|
4
|
+
useEffect(() => session.subscribe(() => setState(session.getState())), [session]);
|
|
5
|
+
return state;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=use-session-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-session-state.js","sourceRoot":"","sources":["../../../src/tui-v2/state/use-session-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,UAAU,eAAe,CAAC,OAA0B;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** React subscription hook for ToastController. */
|
|
2
|
+
import { useCallback, useRef, useSyncExternalStore } from "react";
|
|
3
|
+
export function useToastState(toast) {
|
|
4
|
+
// Cache snapshot so useSyncExternalStore only re-renders when the toast
|
|
5
|
+
// list identity changes (ToastController replaces the array on mutate).
|
|
6
|
+
const cache = useRef(toast.getToasts());
|
|
7
|
+
const getSnapshot = useCallback(() => {
|
|
8
|
+
const next = toast.getToasts();
|
|
9
|
+
if (next !== cache.current)
|
|
10
|
+
cache.current = next;
|
|
11
|
+
return cache.current;
|
|
12
|
+
}, [toast]);
|
|
13
|
+
return useSyncExternalStore((onStoreChange) => toast.subscribe(onStoreChange), getSnapshot, getSnapshot);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=use-toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-toast.js","sourceRoot":"","sources":["../../../src/tui-v2/state/use-toast.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGlE,MAAM,UAAU,aAAa,CAAC,KAAsB;IAClD,wEAAwE;IACxE,wEAAwE;IACxE,MAAM,KAAK,GAAG,MAAM,CAAuB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,IAAI,KAAK,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACjD,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,OAAO,oBAAoB,CACzB,CAAC,aAAa,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,EACjD,WAAW,EACX,WAAW,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React binding for `TranscriptStore` (V2-050).
|
|
3
|
+
*
|
|
4
|
+
* Isolated to this one file so the store, reducer, and types stay renderer-
|
|
5
|
+
* independent (see `test/tui-v2/architecture.test.ts`); every transcript
|
|
6
|
+
* component reads state through this hook instead of subscribing by hand.
|
|
7
|
+
*/
|
|
8
|
+
import type { TranscriptStore } from "./transcript-store.js";
|
|
9
|
+
import type { TranscriptState } from "./transcript-types.js";
|
|
10
|
+
export declare function useTranscriptState(store: TranscriptStore): TranscriptState;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React binding for `TranscriptStore` (V2-050).
|
|
3
|
+
*
|
|
4
|
+
* Isolated to this one file so the store, reducer, and types stay renderer-
|
|
5
|
+
* independent (see `test/tui-v2/architecture.test.ts`); every transcript
|
|
6
|
+
* component reads state through this hook instead of subscribing by hand.
|
|
7
|
+
*/
|
|
8
|
+
import { useSyncExternalStore } from "react";
|
|
9
|
+
export function useTranscriptState(store) {
|
|
10
|
+
return useSyncExternalStore((listener) => store.subscribe(listener), () => store.getState());
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=use-transcript-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-transcript-store.js","sourceRoot":"","sources":["../../../src/tui-v2/state/use-transcript-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAI7C,MAAM,UAAU,kBAAkB,CAAC,KAAsB;IACvD,OAAO,oBAAoB,CACzB,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EACvC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CACvB,CAAC;AACJ,CAAC"}
|
package/dist/ui/intro-card.js
CHANGED
|
@@ -57,9 +57,9 @@ export function renderIntroCard(opts) {
|
|
|
57
57
|
parts.push(badgeLine);
|
|
58
58
|
}
|
|
59
59
|
// Shortcuts — pick a set that fits the terminal width
|
|
60
|
-
const fullShortcuts = "ESC abort │ Ctrl+C
|
|
61
|
-
const shortShortcuts = "ESC abort │ Ctrl+C
|
|
62
|
-
const miniShortcuts = "ESC abort │
|
|
60
|
+
const fullShortcuts = "ESC abort │ Ctrl+C quit │ @ files │ /history past chats │ Ctrl+T thinking │ Ctrl+O output";
|
|
61
|
+
const shortShortcuts = "ESC abort │ Ctrl+C quit │ @ files │ /history │ Ctrl+T think │ Ctrl+O out";
|
|
62
|
+
const miniShortcuts = "ESC abort │ /history │ /help";
|
|
63
63
|
const shortcutsText = cols >= 110
|
|
64
64
|
? fullShortcuts
|
|
65
65
|
: cols >= 80
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intro-card.js","sourceRoot":"","sources":["../../src/ui/intro-card.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"intro-card.js","sourceRoot":"","sources":["../../src/ui/intro-card.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAW/C,kDAAkD;AAClD,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,0EAA0E;AAC1E,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAClC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAC3C,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACvC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAEjB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,gDAAgD;IAChD,MAAM,OAAO,GAAG,yFAAyF,CAAC;IAC1G,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5D,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CACtI,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,iFAAiF;IACjF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IAC3C,mDAAmD;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,kCAAkC;IAC1E,KAAK,CAAC,IAAI,CACR,GAAG,CACD;QACE,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;QAC7D,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE;QAC5E,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE;QAChF,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC3D,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;KAC9D,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CACxC,CACF,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,kEAAkE;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI,CACvD,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CACtC,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI,CACvD,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CACxC,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,SAAS,KAAK,SAAS,EAAE,CAAC;IACjD,2EAA2E;IAC3E,wEAAwE;IACxE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3E,IAAI,WAAW,GAAG,IAAI,EAAE,CAAC;QACvB,wBAAwB;QACxB,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAED,sDAAsD;IACtD,MAAM,aAAa,GACjB,qGAAqG,CAAC;IACxG,MAAM,cAAc,GAClB,0EAA0E,CAAC;IAC7E,MAAM,aAAa,GACjB,8BAA8B,CAAC;IACjC,MAAM,aAAa,GACjB,IAAI,IAAI,GAAG;QACT,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,IAAI,IAAI,EAAE;YACV,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,aAAa,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared TUI intro / model card: two-partition box with CLAI wordmark +
|
|
3
|
+
* session info (workdir/model/provider/version + mode/permission badges),
|
|
4
|
+
* plus centered tagline and welcome line.
|
|
5
|
+
*
|
|
6
|
+
* Used by the legacy Ink TUI and OpenTUI v2 so both show the same card.
|
|
7
|
+
* Width is a hard budget: when the chat pane shrinks (plan split / overlay),
|
|
8
|
+
* the card reflows so borders never overflow or "break".
|
|
9
|
+
*/
|
|
10
|
+
export interface IntroHeaderOptions {
|
|
11
|
+
width: number;
|
|
12
|
+
version: string;
|
|
13
|
+
mode: string;
|
|
14
|
+
provider: string;
|
|
15
|
+
model: string;
|
|
16
|
+
permissions: string;
|
|
17
|
+
workdir: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Full startup intro card as ANSI lines. Always the first transcript block;
|
|
21
|
+
* it scrolls up naturally with the conversation.
|
|
22
|
+
*/
|
|
23
|
+
export declare function renderIntroHeaderLines(opts: IntroHeaderOptions): string[];
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared TUI intro / model card: two-partition box with CLAI wordmark +
|
|
3
|
+
* session info (workdir/model/provider/version + mode/permission badges),
|
|
4
|
+
* plus centered tagline and welcome line.
|
|
5
|
+
*
|
|
6
|
+
* Used by the legacy Ink TUI and OpenTUI v2 so both show the same card.
|
|
7
|
+
* Width is a hard budget: when the chat pane shrinks (plan split / overlay),
|
|
8
|
+
* the card reflows so borders never overflow or "break".
|
|
9
|
+
*/
|
|
10
|
+
import chalk from "chalk";
|
|
11
|
+
import { renderWordmark, wordmarkWidth, WORDMARK_TOP_HEX } from "./wordmark.js";
|
|
12
|
+
/** Card frame — same magenta as the top of the CLAI wordmark "I". */
|
|
13
|
+
const cardBorder = chalk.hex(WORDMARK_TOP_HEX);
|
|
14
|
+
/** Truncate long text in the middle (avoids importing from tui/). */
|
|
15
|
+
function truncateMiddle(text, maxWidth) {
|
|
16
|
+
if (maxWidth <= 0)
|
|
17
|
+
return "";
|
|
18
|
+
if (text.length <= maxWidth)
|
|
19
|
+
return text;
|
|
20
|
+
if (maxWidth <= 1)
|
|
21
|
+
return "…";
|
|
22
|
+
const keep = maxWidth - 1;
|
|
23
|
+
const head = Math.ceil(keep * 0.6);
|
|
24
|
+
const tail = Math.floor(keep * 0.4);
|
|
25
|
+
return `${text.slice(0, head)}…${text.slice(Math.max(0, text.length - tail))}`;
|
|
26
|
+
}
|
|
27
|
+
function stripAnsiLen(s) {
|
|
28
|
+
return s.replace(/\x1b\[[0-9;]*m/g, "").length;
|
|
29
|
+
}
|
|
30
|
+
function padCell(content, width) {
|
|
31
|
+
const len = stripAnsiLen(content);
|
|
32
|
+
if (len > width) {
|
|
33
|
+
// Hard-clip ANSI-aware by stripping for length then re-padding plain.
|
|
34
|
+
const plain = content.replace(/\x1b\[[0-9;]*m/g, "");
|
|
35
|
+
return truncateMiddle(plain, width);
|
|
36
|
+
}
|
|
37
|
+
if (len === width)
|
|
38
|
+
return content;
|
|
39
|
+
return content + " ".repeat(width - len);
|
|
40
|
+
}
|
|
41
|
+
function centerCell(content, width) {
|
|
42
|
+
const len = stripAnsiLen(content);
|
|
43
|
+
if (len > width) {
|
|
44
|
+
const plain = content.replace(/\x1b\[[0-9;]*m/g, "");
|
|
45
|
+
return truncateMiddle(plain, width);
|
|
46
|
+
}
|
|
47
|
+
if (len === width)
|
|
48
|
+
return content;
|
|
49
|
+
const total = width - len;
|
|
50
|
+
const left = Math.floor(total / 2);
|
|
51
|
+
return " ".repeat(left) + content + " ".repeat(total - left);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Full startup intro card as ANSI lines. Always the first transcript block;
|
|
55
|
+
* it scrolls up naturally with the conversation.
|
|
56
|
+
*/
|
|
57
|
+
export function renderIntroHeaderLines(opts) {
|
|
58
|
+
// Always emit truecolor SGR so OpenTUI (and non-TTY tests) get the same
|
|
59
|
+
// colored layout as a real interactive terminal.
|
|
60
|
+
const prevLevel = chalk.level;
|
|
61
|
+
if (chalk.level < 3)
|
|
62
|
+
chalk.level = 3;
|
|
63
|
+
try {
|
|
64
|
+
return renderIntroHeaderLinesInner(opts);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
chalk.level = prevLevel;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function renderIntroHeaderLinesInner(opts) {
|
|
71
|
+
const version = opts.version || "0.0.0";
|
|
72
|
+
const mode = opts.mode || "agent";
|
|
73
|
+
const provider = opts.provider || "openai";
|
|
74
|
+
const model = opts.model || "gpt-4";
|
|
75
|
+
const permissions = opts.permissions || "default";
|
|
76
|
+
const cwd = opts.workdir;
|
|
77
|
+
// Hard budget: never wider than the pane we were given (plan pane must not
|
|
78
|
+
// clip mid-border). Prefer a small outer margin when the pane allows it.
|
|
79
|
+
const pane = Math.max(24, opts.width);
|
|
80
|
+
// Card outer plain width target (including the leading two spaces on each row).
|
|
81
|
+
const totalWidth = Math.max(20, pane);
|
|
82
|
+
// Row shape: " " + "│ " + left + " │ " + right + " │"
|
|
83
|
+
// Leading indent (2) + borders/padding (7) = 9 fixed columns.
|
|
84
|
+
const LEAD = 2;
|
|
85
|
+
const OVERHEAD = 7;
|
|
86
|
+
const wmLines = renderWordmark("CLAI", "").split("\n");
|
|
87
|
+
const wmWidth = wordmarkWidth("CLAI");
|
|
88
|
+
const available = Math.max(12, totalWidth - LEAD - OVERHEAD);
|
|
89
|
+
// Side-by-side needs room for the wordmark + a usable info column.
|
|
90
|
+
// Below that threshold, fall back to a stacked compact card so borders stay
|
|
91
|
+
// intact when Ctrl+H opens the plan pane.
|
|
92
|
+
const minSideBySide = wmWidth + 2 + 18;
|
|
93
|
+
if (available < minSideBySide) {
|
|
94
|
+
return renderCompactCard({
|
|
95
|
+
totalWidth,
|
|
96
|
+
version,
|
|
97
|
+
mode,
|
|
98
|
+
provider,
|
|
99
|
+
model,
|
|
100
|
+
permissions,
|
|
101
|
+
cwd,
|
|
102
|
+
wmLines,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// Fit left/right exactly into `available` — never let mins overflow the pane.
|
|
106
|
+
let leftWidth = Math.max(wmWidth + 2, Math.floor(available * 0.38));
|
|
107
|
+
let rightWidth = available - leftWidth;
|
|
108
|
+
if (rightWidth < 16) {
|
|
109
|
+
rightWidth = 16;
|
|
110
|
+
leftWidth = available - rightWidth;
|
|
111
|
+
}
|
|
112
|
+
if (leftWidth < wmWidth) {
|
|
113
|
+
leftWidth = Math.min(wmWidth, available - 12);
|
|
114
|
+
rightWidth = available - leftWidth;
|
|
115
|
+
}
|
|
116
|
+
const CHIP_LABEL = Math.min(8, Math.max(4, rightWidth - 10));
|
|
117
|
+
const chip = (label) => chalk.bgHex("#334155").whiteBright.bold(` ${label.padEnd(CHIP_LABEL).slice(0, CHIP_LABEL)} `);
|
|
118
|
+
const CHIP_WIDTH = CHIP_LABEL + 2;
|
|
119
|
+
const infoRow = (label, value, colorFn) => {
|
|
120
|
+
const room = Math.max(2, rightWidth - CHIP_WIDTH - 1);
|
|
121
|
+
const shownValue = value.length > room ? truncateMiddle(value, room) : value;
|
|
122
|
+
return chip(label) + " " + colorFn(shownValue);
|
|
123
|
+
};
|
|
124
|
+
const modeBanner = chalk.bgHex("#B45309").whiteBright.bold(` ${mode.toUpperCase()} MODE `);
|
|
125
|
+
const permBgColor = permissions === "allow-all" ? "#15803d" : "#334155";
|
|
126
|
+
const permissionsBanner = chalk.bgHex(permBgColor).whiteBright.bold(` ${permissions.toUpperCase()} `);
|
|
127
|
+
const permLabel = chalk.bgHex("#334155").whiteBright.bold(` PERMISSION `);
|
|
128
|
+
const rightRows = [
|
|
129
|
+
"",
|
|
130
|
+
infoRow("workdir", cwd, chalk.white),
|
|
131
|
+
infoRow("model", model, chalk.cyan),
|
|
132
|
+
infoRow("provider", provider, chalk.green),
|
|
133
|
+
infoRow("version", version, chalk.white),
|
|
134
|
+
"",
|
|
135
|
+
modeBanner,
|
|
136
|
+
"",
|
|
137
|
+
`${permLabel} ${permissionsBanner}`,
|
|
138
|
+
"",
|
|
139
|
+
];
|
|
140
|
+
const rowCount = Math.max(wmLines.length, rightRows.length);
|
|
141
|
+
// Border segments: "╭" + "─"*(left+2) + "┬" + "─"*(right+2) + "╮"
|
|
142
|
+
// plain length = left + right + 7, plus LEAD indent = totalWidth budget.
|
|
143
|
+
const top = " " +
|
|
144
|
+
cardBorder(`╭${"─".repeat(leftWidth + 2)}┬${"─".repeat(rightWidth + 2)}╮`);
|
|
145
|
+
const bottom = " " +
|
|
146
|
+
cardBorder(`╰${"─".repeat(leftWidth + 2)}┴${"─".repeat(rightWidth + 2)}╯`);
|
|
147
|
+
const middle = [];
|
|
148
|
+
const wmPadTop = Math.floor((rowCount - wmLines.length) / 2);
|
|
149
|
+
const wmPadBot = rowCount - wmLines.length - wmPadTop;
|
|
150
|
+
const paddedWm = [
|
|
151
|
+
...Array(wmPadTop).fill(""),
|
|
152
|
+
...wmLines,
|
|
153
|
+
...Array(wmPadBot).fill(""),
|
|
154
|
+
];
|
|
155
|
+
for (let i = 0; i < rowCount; i++) {
|
|
156
|
+
const leftCell = centerCell(paddedWm[i] ?? "", leftWidth);
|
|
157
|
+
const rightCell = padCell(rightRows[i] ?? "", rightWidth);
|
|
158
|
+
middle.push(" " +
|
|
159
|
+
cardBorder("│") +
|
|
160
|
+
` ${leftCell} ` +
|
|
161
|
+
cardBorder("│") +
|
|
162
|
+
` ${rightCell} ` +
|
|
163
|
+
cardBorder("│"));
|
|
164
|
+
}
|
|
165
|
+
const boxOuterWidth = LEAD + leftWidth + rightWidth + OVERHEAD;
|
|
166
|
+
const centerIndent = (plainLen) => {
|
|
167
|
+
const indent = Math.max(0, Math.floor((boxOuterWidth - plainLen) / 2));
|
|
168
|
+
return " ".repeat(indent);
|
|
169
|
+
};
|
|
170
|
+
const taglineBudget = Math.max(12, boxOuterWidth);
|
|
171
|
+
const tagline = available >= 60
|
|
172
|
+
? "AI-powered terminal assistant · ask & agent modes for shell, files & security workflows"
|
|
173
|
+
: "AI terminal assistant · ask & agent modes";
|
|
174
|
+
const welcome = `Welcome to clai v${version}! `;
|
|
175
|
+
const welcomeHint = available >= 52
|
|
176
|
+
? "/history past chats · /help commands"
|
|
177
|
+
: "/history · /help";
|
|
178
|
+
const welcomeFull = welcome + welcomeHint;
|
|
179
|
+
return [
|
|
180
|
+
"",
|
|
181
|
+
top,
|
|
182
|
+
...middle,
|
|
183
|
+
bottom,
|
|
184
|
+
"",
|
|
185
|
+
centerIndent(Math.min(tagline.length, taglineBudget)) +
|
|
186
|
+
chalk.white(truncateMiddle(tagline, taglineBudget)),
|
|
187
|
+
centerIndent(Math.min(welcomeFull.length, taglineBudget)) +
|
|
188
|
+
chalk.green.bold(truncateMiddle(welcome, Math.max(8, taglineBudget - welcomeHint.length))) +
|
|
189
|
+
chalk.cyan(welcomeHint.length + welcome.length <= taglineBudget ? welcomeHint : ""),
|
|
190
|
+
];
|
|
191
|
+
}
|
|
192
|
+
/** Narrow-pane card: wordmark on top, info stacked below — borders always fit. */
|
|
193
|
+
function renderCompactCard(args) {
|
|
194
|
+
const { totalWidth, version, mode, provider, model, permissions, cwd, wmLines } = args;
|
|
195
|
+
// Outer line budget includes the two-space indent + border glyphs.
|
|
196
|
+
// top = " " + "╭" + "─"*N + "╮" → plain length 4 + N, so N = totalWidth - 4.
|
|
197
|
+
const rule = Math.max(8, totalWidth - 4);
|
|
198
|
+
const inner = Math.max(6, rule - 2); // content between "│ " and " │"
|
|
199
|
+
const top = " " + cardBorder(`╭${"─".repeat(rule)}╮`);
|
|
200
|
+
const bottom = " " + cardBorder(`╰${"─".repeat(rule)}╯`);
|
|
201
|
+
const row = (content) => " " + cardBorder("│") + ` ${padCell(content, inner)} ` + cardBorder("│");
|
|
202
|
+
const chip = (label, value, colorFn) => {
|
|
203
|
+
const shortLabel = label.slice(0, Math.min(label.length, 4));
|
|
204
|
+
const labelPart = chalk.bgHex("#334155").whiteBright.bold(` ${shortLabel} `);
|
|
205
|
+
const room = Math.max(2, inner - stripAnsiLen(` ${shortLabel} `) - 1);
|
|
206
|
+
return labelPart + " " + colorFn(truncateMiddle(value, room));
|
|
207
|
+
};
|
|
208
|
+
const modeBanner = chalk.bgHex("#B45309").whiteBright.bold(truncateMiddle(` ${mode.toUpperCase()} MODE `, inner));
|
|
209
|
+
const permBg = permissions === "allow-all" ? "#15803d" : "#334155";
|
|
210
|
+
const permBanner = chalk.bgHex(permBg).whiteBright.bold(truncateMiddle(` ${permissions.toUpperCase()} `, inner));
|
|
211
|
+
const welcomePlain = `Welcome to clai v${version}! /history · /help`;
|
|
212
|
+
const welcome = " " +
|
|
213
|
+
chalk.green.bold(truncateMiddle(`Welcome to clai v${version}! `, Math.max(8, totalWidth - 16))) +
|
|
214
|
+
chalk.cyan(totalWidth >= 40 ? "/history · /help" : totalWidth >= 28 ? "/history" : "");
|
|
215
|
+
const lines = ["", top];
|
|
216
|
+
for (const wm of wmLines) {
|
|
217
|
+
lines.push(row(centerCell(wm, inner)));
|
|
218
|
+
}
|
|
219
|
+
lines.push(row(""));
|
|
220
|
+
lines.push(row(chip("workdir", cwd, chalk.white)));
|
|
221
|
+
lines.push(row(chip("model", model, chalk.cyan)));
|
|
222
|
+
lines.push(row(chip("provider", provider, chalk.green)));
|
|
223
|
+
lines.push(row(chip("version", version, chalk.white)));
|
|
224
|
+
lines.push(row(""));
|
|
225
|
+
lines.push(row(modeBanner));
|
|
226
|
+
lines.push(row(permBanner));
|
|
227
|
+
lines.push(bottom);
|
|
228
|
+
lines.push("");
|
|
229
|
+
lines.push(welcome.length > 0 ? welcome : " " + chalk.green(truncateMiddle(welcomePlain, totalWidth)));
|
|
230
|
+
return lines;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=intro-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intro-header.js","sourceRoot":"","sources":["../../src/ui/intro-header.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/markdown.js
CHANGED