@pentoshi/clai 2.0.61 → 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 +210 -91
- 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
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
2
|
-
const FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
3
|
-
/**
|
|
4
|
-
* Returns the current spinner glyph, advancing on a timer while `active`.
|
|
5
|
-
* No-op (and steady frame) when inactive so idle renders stay still.
|
|
6
|
-
*/
|
|
7
|
-
// Ink redraws the whole terminal tree per frame. Four frames per second is
|
|
8
|
-
// still responsive while avoiding needless CPU and battery use during waits.
|
|
9
|
-
export function useSpinner(active, intervalMs = 250) {
|
|
10
|
-
const [frame, setFrame] = useState(0);
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
if (!active)
|
|
13
|
-
return;
|
|
14
|
-
const timer = setInterval(() => {
|
|
15
|
-
setFrame((f) => (f + 1) % FRAMES.length);
|
|
16
|
-
}, intervalMs);
|
|
17
|
-
return () => clearInterval(timer);
|
|
18
|
-
}, [active, intervalMs]);
|
|
19
|
-
return FRAMES[active ? frame : 0];
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=useSpinner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSpinner.js","sourceRoot":"","sources":["../../../src/tui/hooks/useSpinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAElE;;;GAGG;AACH,2EAA2E;AAC3E,6EAA6E;AAC7E,MAAM,UAAU,UAAU,CAAC,MAAe,EAAE,UAAU,GAAG,GAAG;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC,EAAE,UAAU,CAAC,CAAC;QACf,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;AACrC,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export interface TermSize {
|
|
2
|
-
columns: number;
|
|
3
|
-
rows: number;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Tracks the terminal size and updates on SIGWINCH-style resize events so the
|
|
7
|
-
* full-screen layout can reflow and keep the composer pinned to the bottom.
|
|
8
|
-
*/
|
|
9
|
-
export declare function useTerminalSize(): TermSize;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
2
|
-
import { useStdout } from "ink";
|
|
3
|
-
/**
|
|
4
|
-
* Tracks the terminal size and updates on SIGWINCH-style resize events so the
|
|
5
|
-
* full-screen layout can reflow and keep the composer pinned to the bottom.
|
|
6
|
-
*/
|
|
7
|
-
export function useTerminalSize() {
|
|
8
|
-
const { stdout } = useStdout();
|
|
9
|
-
const [size, setSize] = useState({
|
|
10
|
-
columns: stdout?.columns ?? 80,
|
|
11
|
-
rows: stdout?.rows ?? 24,
|
|
12
|
-
});
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
if (!stdout)
|
|
15
|
-
return;
|
|
16
|
-
const onResize = () => {
|
|
17
|
-
setSize({ columns: stdout.columns ?? 80, rows: stdout.rows ?? 24 });
|
|
18
|
-
};
|
|
19
|
-
stdout.on("resize", onResize);
|
|
20
|
-
return () => {
|
|
21
|
-
stdout.off("resize", onResize);
|
|
22
|
-
};
|
|
23
|
-
}, [stdout]);
|
|
24
|
-
return size;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=useTerminalSize.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTerminalSize.js","sourceRoot":"","sources":["../../../src/tui/hooks/useTerminalSize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAOhC;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAW;QACzC,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;QAC9B,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE;KACzB,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/tui/index.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Mode, ProviderId } from "../types.js";
|
|
2
|
-
export declare const TUI_ENTER_SEQUENCE = "\u001B[?1049h\u001B[2J\u001B[H";
|
|
3
|
-
export declare const TUI_EXIT_SEQUENCE = "\u001B[?1006l\u001B[?1000l\u001B[?1049l";
|
|
4
|
-
export interface StartTuiOptions {
|
|
5
|
-
mode?: Mode | undefined;
|
|
6
|
-
provider?: ProviderId | undefined;
|
|
7
|
-
model?: string | undefined;
|
|
8
|
-
noHistory?: boolean | undefined;
|
|
9
|
-
}
|
|
10
|
-
export declare function startTui(opts?: StartTuiOptions): Promise<void>;
|
package/dist/tui/index.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { render } from "ink";
|
|
2
|
-
import { createElement } from "react";
|
|
3
|
-
import { getConfig, getProviderModel } from "../store/config.js";
|
|
4
|
-
import { getCurrentVersion } from "../commands/update.js";
|
|
5
|
-
import { App } from "./App.js";
|
|
6
|
-
export const TUI_ENTER_SEQUENCE = "\x1b[?1049h\x1b[2J\x1b[H";
|
|
7
|
-
export const TUI_EXIT_SEQUENCE = "\x1b[?1006l\x1b[?1000l\x1b[?1049l";
|
|
8
|
-
export async function startTui(opts = {}) {
|
|
9
|
-
const config = getConfig();
|
|
10
|
-
const provider = opts.provider ?? config.defaultProvider;
|
|
11
|
-
const model = opts.model ?? getProviderModel(provider);
|
|
12
|
-
const mode = opts.mode ?? config.defaultMode;
|
|
13
|
-
// Enter and clear the alternate screen before Ink's first paint. Doing this
|
|
14
|
-
// in a React effect erases that first frame and leaves a blank terminal
|
|
15
|
-
// until a resize causes another render (notably in macOS Terminal).
|
|
16
|
-
const alternateScreen = Boolean(process.stdout.isTTY);
|
|
17
|
-
if (alternateScreen)
|
|
18
|
-
process.stdout.write(TUI_ENTER_SEQUENCE);
|
|
19
|
-
try {
|
|
20
|
-
const app = render(createElement(App, {
|
|
21
|
-
version: getCurrentVersion(),
|
|
22
|
-
initialMode: mode,
|
|
23
|
-
provider,
|
|
24
|
-
initialModel: model,
|
|
25
|
-
noHistory: opts.noHistory,
|
|
26
|
-
}), {
|
|
27
|
-
// We own Ctrl+C handling (abort vs. exit), so Ink must not exit on it.
|
|
28
|
-
exitOnCtrlC: false,
|
|
29
|
-
});
|
|
30
|
-
await app.waitUntilExit();
|
|
31
|
-
}
|
|
32
|
-
finally {
|
|
33
|
-
if (alternateScreen)
|
|
34
|
-
process.stdout.write(TUI_EXIT_SEQUENCE);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=index.js.map
|
package/dist/tui/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AASrE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB,EAAE;IACvD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAC;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC;IAE7C,4EAA4E;IAC5E,wEAAwE;IACxE,oEAAoE;IACpE,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,eAAe;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAChB,aAAa,CAAC,GAAG,EAAE;YACjB,OAAO,EAAE,iBAAiB,EAAE;YAC5B,WAAW,EAAE,IAAI;YACjB,QAAQ;YACR,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,EACF;YACE,uEAAuE;YACvE,WAAW,EAAE,KAAK;SACnB,CACF,CAAC;QACF,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;YAAS,CAAC;QACT,IAAI,eAAe;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
|
package/dist/tui/key-intent.d.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Composer key-intent helpers.
|
|
3
|
-
*
|
|
4
|
-
* Deciding whether a keypress should insert a newline (vs. submit the prompt)
|
|
5
|
-
* has to work across every OS and terminal, so it can't rely on Shift+Enter:
|
|
6
|
-
* most terminals send a bare CR (`\r`) for Shift+Enter, identical to plain
|
|
7
|
-
* Enter, and the ones that disambiguate use the kitty/CSI-u keyboard protocol
|
|
8
|
-
* which Ink's key parser does not understand (it would surface as garbage
|
|
9
|
-
* text). The reliably-detectable, cross-platform newline keys are:
|
|
10
|
-
*
|
|
11
|
-
* - Ctrl+J — the raw line-feed control code (U+000A). Every terminal on
|
|
12
|
-
* macOS, Linux and Windows sends it, and Ink reports it as ch="\n" with
|
|
13
|
-
* no ctrl flag (name "enter", distinct from Enter's name "return").
|
|
14
|
-
* - Alt/Option+Enter — sent as ESC+CR; Ink strips the ESC and delivers a
|
|
15
|
-
* bare "\r" with key.return === false, so it is distinguishable from a
|
|
16
|
-
* submitting Enter (which always arrives with key.return === true).
|
|
17
|
-
* - Shift+Enter / Meta+Enter — honoured too, for the minority of terminals
|
|
18
|
-
* that DO report the modifier alongside Return.
|
|
19
|
-
*/
|
|
20
|
-
export interface KeyLike {
|
|
21
|
-
return?: boolean;
|
|
22
|
-
shift?: boolean;
|
|
23
|
-
meta?: boolean;
|
|
24
|
-
ctrl?: boolean;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* True when a keypress should insert a newline into the composer instead of
|
|
28
|
-
* submitting. Plain Enter (`\r` with key.return) always submits.
|
|
29
|
-
*/
|
|
30
|
-
export declare function isComposerNewline(ch: string, key: KeyLike): boolean;
|
|
31
|
-
/**
|
|
32
|
-
* OS-appropriate hint for the newline key, shown in the composer placeholder.
|
|
33
|
-
* Ctrl+J is the universal fallback that works everywhere; the OS-idiomatic
|
|
34
|
-
* modifier+Enter is listed first where it commonly works.
|
|
35
|
-
*/
|
|
36
|
-
export declare function newlineHint(platform?: NodeJS.Platform): string;
|
package/dist/tui/key-intent.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Composer key-intent helpers.
|
|
3
|
-
*
|
|
4
|
-
* Deciding whether a keypress should insert a newline (vs. submit the prompt)
|
|
5
|
-
* has to work across every OS and terminal, so it can't rely on Shift+Enter:
|
|
6
|
-
* most terminals send a bare CR (`\r`) for Shift+Enter, identical to plain
|
|
7
|
-
* Enter, and the ones that disambiguate use the kitty/CSI-u keyboard protocol
|
|
8
|
-
* which Ink's key parser does not understand (it would surface as garbage
|
|
9
|
-
* text). The reliably-detectable, cross-platform newline keys are:
|
|
10
|
-
*
|
|
11
|
-
* - Ctrl+J — the raw line-feed control code (U+000A). Every terminal on
|
|
12
|
-
* macOS, Linux and Windows sends it, and Ink reports it as ch="\n" with
|
|
13
|
-
* no ctrl flag (name "enter", distinct from Enter's name "return").
|
|
14
|
-
* - Alt/Option+Enter — sent as ESC+CR; Ink strips the ESC and delivers a
|
|
15
|
-
* bare "\r" with key.return === false, so it is distinguishable from a
|
|
16
|
-
* submitting Enter (which always arrives with key.return === true).
|
|
17
|
-
* - Shift+Enter / Meta+Enter — honoured too, for the minority of terminals
|
|
18
|
-
* that DO report the modifier alongside Return.
|
|
19
|
-
*/
|
|
20
|
-
/**
|
|
21
|
-
* True when a keypress should insert a newline into the composer instead of
|
|
22
|
-
* submitting. Plain Enter (`\r` with key.return) always submits.
|
|
23
|
-
*/
|
|
24
|
-
export function isComposerNewline(ch, key) {
|
|
25
|
-
// Terminals that report the modifier with Return: Shift+Enter / Meta+Enter.
|
|
26
|
-
if (key.return && (key.shift || key.meta))
|
|
27
|
-
return true;
|
|
28
|
-
// Plain Enter submits — never a newline.
|
|
29
|
-
if (key.return)
|
|
30
|
-
return false;
|
|
31
|
-
// Ctrl+J (line feed) and Alt/Option+Enter (ESC+CR → bare CR without the
|
|
32
|
-
// Return flag) both insert a newline on every OS. Guard against modified
|
|
33
|
-
// control chords so Ctrl+<other> / Meta+<other> don't count.
|
|
34
|
-
if (!key.ctrl && !key.meta && (ch === "\n" || ch === "\r" || ch === "\r\n")) {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* OS-appropriate hint for the newline key, shown in the composer placeholder.
|
|
41
|
-
* Ctrl+J is the universal fallback that works everywhere; the OS-idiomatic
|
|
42
|
-
* modifier+Enter is listed first where it commonly works.
|
|
43
|
-
*/
|
|
44
|
-
export function newlineHint(platform = process.platform) {
|
|
45
|
-
switch (platform) {
|
|
46
|
-
case "darwin":
|
|
47
|
-
return "⌥+return or ⌃J for newline";
|
|
48
|
-
case "win32":
|
|
49
|
-
return "alt+enter or ctrl+j for newline";
|
|
50
|
-
default:
|
|
51
|
-
return "alt+enter or ctrl+j for newline";
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=key-intent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"key-intent.js","sourceRoot":"","sources":["../../src/tui/key-intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAU,EAAE,GAAY;IACxD,4EAA4E;IAC5E,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,yCAAyC;IACzC,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC7B,wEAAwE;IACxE,yEAAyE;IACzE,6DAA6D;IAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,WAA4B,OAAO,CAAC,QAAQ;IACtE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,4BAA4B,CAAC;QACtC,KAAK,OAAO;YACV,OAAO,iCAAiC,CAAC;QAC3C;YACE,OAAO,iCAAiC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
package/dist/tui/mouse.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export declare const ENABLE_MOUSE_REPORTING = "\u001B[?1002h\u001B[?1006h";
|
|
2
|
-
export declare const DISABLE_MOUSE_REPORTING = "\u001B[?1006l\u001B[?1002l\u001B[?1000l";
|
|
3
|
-
/** Decode an SGR mouse-report chunk. -1 is wheel up, +1 is wheel down. */
|
|
4
|
-
export declare function mouseWheelDirection(data: string): -1 | 0 | 1;
|
|
5
|
-
/** True when a key chunk is a terminal mouse report, including split chunks. */
|
|
6
|
-
export declare function isMouseReport(data: string): boolean;
|
|
7
|
-
/** Remove mouse reports from a chunk before it reaches the composer. */
|
|
8
|
-
export declare function stripMouseReports(data: string): string;
|
package/dist/tui/mouse.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
const SGR_MOUSE_RE = /\x1b?\[?<(?<button>\d+);\d+;\d+[mM]/g;
|
|
2
|
-
const PARTIAL_SGR_MOUSE_RE = /(?:\x1b?\[?<)?(?:6[45]|[0-9]{1,3});\d+;\d+[mM]/g;
|
|
3
|
-
export const ENABLE_MOUSE_REPORTING = "\x1b[?1002h\x1b[?1006h";
|
|
4
|
-
export const DISABLE_MOUSE_REPORTING = "\x1b[?1006l\x1b[?1002l\x1b[?1000l";
|
|
5
|
-
/** Decode an SGR mouse-report chunk. -1 is wheel up, +1 is wheel down. */
|
|
6
|
-
export function mouseWheelDirection(data) {
|
|
7
|
-
for (const match of data.matchAll(SGR_MOUSE_RE)) {
|
|
8
|
-
if (match.groups?.button === "64")
|
|
9
|
-
return -1;
|
|
10
|
-
if (match.groups?.button === "65")
|
|
11
|
-
return 1;
|
|
12
|
-
}
|
|
13
|
-
for (const match of data.matchAll(PARTIAL_SGR_MOUSE_RE)) {
|
|
14
|
-
const button = match[0].match(/(?:<)?(\d+);/)?.[1];
|
|
15
|
-
if (button === "64")
|
|
16
|
-
return -1;
|
|
17
|
-
if (button === "65")
|
|
18
|
-
return 1;
|
|
19
|
-
}
|
|
20
|
-
return 0;
|
|
21
|
-
}
|
|
22
|
-
/** True when a key chunk is a terminal mouse report, including split chunks. */
|
|
23
|
-
export function isMouseReport(data) {
|
|
24
|
-
SGR_MOUSE_RE.lastIndex = 0;
|
|
25
|
-
PARTIAL_SGR_MOUSE_RE.lastIndex = 0;
|
|
26
|
-
return SGR_MOUSE_RE.test(data) || PARTIAL_SGR_MOUSE_RE.test(data);
|
|
27
|
-
}
|
|
28
|
-
/** Remove mouse reports from a chunk before it reaches the composer. */
|
|
29
|
-
export function stripMouseReports(data) {
|
|
30
|
-
return data
|
|
31
|
-
.replace(SGR_MOUSE_RE, "")
|
|
32
|
-
.replace(PARTIAL_SGR_MOUSE_RE, "");
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=mouse.js.map
|
package/dist/tui/mouse.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mouse.js","sourceRoot":"","sources":["../../src/tui/mouse.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAC5D,MAAM,oBAAoB,GAAG,iDAAiD,CAAC;AAE/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAC/D,MAAM,CAAC,MAAM,uBAAuB,GAAG,mCAAmC,CAAC;AAE3E,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC;IAC3B,oBAAoB,CAAC,SAAS,GAAG,CAAC,CAAC;IACnC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI;SACR,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import stringWidth from "string-width";
|
|
3
|
-
import { wrapAnsiLine } from "../ui/markdown.js";
|
|
4
|
-
const taskGlyph = {
|
|
5
|
-
pending: "○",
|
|
6
|
-
in_progress: "◆",
|
|
7
|
-
done: "✓",
|
|
8
|
-
failed: "!",
|
|
9
|
-
skipped: "–",
|
|
10
|
-
};
|
|
11
|
-
const taskColorFn = {
|
|
12
|
-
pending: chalk.gray,
|
|
13
|
-
in_progress: chalk.cyan,
|
|
14
|
-
done: chalk.green,
|
|
15
|
-
failed: chalk.red,
|
|
16
|
-
skipped: chalk.gray,
|
|
17
|
-
};
|
|
18
|
-
function padTo(text, width) {
|
|
19
|
-
const w = stringWidth(text.replace(/\x1b\[[0-9;]*m/g, ""));
|
|
20
|
-
return w < width ? text + " ".repeat(width - w) : text;
|
|
21
|
-
}
|
|
22
|
-
export function renderPlanSidebarLines(plan, width, height) {
|
|
23
|
-
const innerHeight = Math.max(1, height - 2); // top + bottom border
|
|
24
|
-
const contentWidth = Math.max(8, width - 4); // border(1)+pad(1) each side
|
|
25
|
-
const done = plan.tasks.filter((task) => task.state === "done").length;
|
|
26
|
-
const percent = plan.tasks.length
|
|
27
|
-
? Math.round((done / plan.tasks.length) * 100)
|
|
28
|
-
: 0;
|
|
29
|
-
const rowHeight = (index) => {
|
|
30
|
-
const task = plan.tasks[index];
|
|
31
|
-
const prefix = `${taskGlyph[task.state]} ${index + 1}. `;
|
|
32
|
-
const prefixWidth = stringWidth(prefix);
|
|
33
|
-
const textWidth = Math.max(4, contentWidth - prefixWidth);
|
|
34
|
-
const fullText = `${task.title}${task.note ? ` — ${task.note}` : ""}`;
|
|
35
|
-
return Math.max(1, wrapAnsiLine(fullText, textWidth).length);
|
|
36
|
-
};
|
|
37
|
-
const rowLines = (index) => {
|
|
38
|
-
const task = plan.tasks[index];
|
|
39
|
-
const color = taskColorFn[task.state];
|
|
40
|
-
const prefix = `${taskGlyph[task.state]} ${index + 1}. `;
|
|
41
|
-
const prefixWidth = stringWidth(prefix);
|
|
42
|
-
const dim = task.state === "done" || task.state === "skipped";
|
|
43
|
-
const bold = task.state === "in_progress";
|
|
44
|
-
const body = `${task.title}${task.note ? ` — ${task.note}` : ""}`;
|
|
45
|
-
const wrapWidth = Math.max(4, contentWidth - prefixWidth);
|
|
46
|
-
const wrapped = wrapAnsiLine(body, wrapWidth);
|
|
47
|
-
const styledPrefix = bold ? chalk.bold(color(prefix)) : color(prefix);
|
|
48
|
-
return wrapped.map((piece, i) => {
|
|
49
|
-
let styledPiece = color(piece);
|
|
50
|
-
if (dim)
|
|
51
|
-
styledPiece = chalk.dim(styledPiece);
|
|
52
|
-
if (bold)
|
|
53
|
-
styledPiece = chalk.bold(styledPiece);
|
|
54
|
-
return i === 0
|
|
55
|
-
? styledPrefix + styledPiece
|
|
56
|
-
: " ".repeat(prefixWidth) + styledPiece;
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
const footerText = plan.status === "draft"
|
|
60
|
-
? "/implement to approve · Ctrl+H to hide"
|
|
61
|
-
: "Ctrl+H to hide · Ctrl+P for details";
|
|
62
|
-
const footerLines = wrapAnsiLine(footerText, contentWidth).map((l) => chalk.dim(l));
|
|
63
|
-
const head = [];
|
|
64
|
-
head.push(chalk.bold.cyan("● LIVE PLAN VIEW"));
|
|
65
|
-
for (const g of wrapAnsiLine(plan.goal, contentWidth))
|
|
66
|
-
head.push(chalk.bold(g));
|
|
67
|
-
head.push(chalk.dim(`${plan.status.replace("_", " ")} · ${done}/${plan.tasks.length} · ${percent}%`));
|
|
68
|
-
head.push(""); // marginTop before task list
|
|
69
|
-
const tasksSectionBudget = Math.max(1, innerHeight - head.length - footerLines.length);
|
|
70
|
-
const inProgress = plan.tasks.findIndex((t) => t.state === "in_progress");
|
|
71
|
-
const firstPending = plan.tasks.findIndex((t) => t.state === "pending");
|
|
72
|
-
const focus = Math.max(0, inProgress >= 0 ? inProgress : firstPending);
|
|
73
|
-
const getSliceHeight = (startIdx, endIdx) => {
|
|
74
|
-
let h = 0;
|
|
75
|
-
if (startIdx > 0)
|
|
76
|
-
h += 1;
|
|
77
|
-
for (let i = startIdx; i <= endIdx; i++) {
|
|
78
|
-
h += rowHeight(i);
|
|
79
|
-
}
|
|
80
|
-
if (endIdx < plan.tasks.length - 1)
|
|
81
|
-
h += 1;
|
|
82
|
-
return h;
|
|
83
|
-
};
|
|
84
|
-
let start = focus;
|
|
85
|
-
let end = focus;
|
|
86
|
-
if (plan.tasks.length > 0) {
|
|
87
|
-
let currentHeight = getSliceHeight(start, end);
|
|
88
|
-
while (true) {
|
|
89
|
-
let expanded = false;
|
|
90
|
-
if (end < plan.tasks.length - 1) {
|
|
91
|
-
const nextHeight = getSliceHeight(start, end + 1);
|
|
92
|
-
if (nextHeight <= tasksSectionBudget) {
|
|
93
|
-
end += 1;
|
|
94
|
-
currentHeight = nextHeight;
|
|
95
|
-
expanded = true;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
if (start > 0) {
|
|
99
|
-
const nextHeight = getSliceHeight(start - 1, end);
|
|
100
|
-
if (nextHeight <= tasksSectionBudget) {
|
|
101
|
-
start -= 1;
|
|
102
|
-
currentHeight = nextHeight;
|
|
103
|
-
expanded = true;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
if (!expanded)
|
|
107
|
-
break;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
const taskSection = [];
|
|
111
|
-
if (start > 0) {
|
|
112
|
-
taskSection.push(chalk.dim(`↑ ${start} earlier task${start === 1 ? "" : "s"}`));
|
|
113
|
-
}
|
|
114
|
-
for (let index = start; index <= end; index++) {
|
|
115
|
-
taskSection.push(...rowLines(index));
|
|
116
|
-
}
|
|
117
|
-
const hiddenBelow = plan.tasks.length - end - 1;
|
|
118
|
-
if (hiddenBelow > 0) {
|
|
119
|
-
taskSection.push(chalk.dim(`↓ ${hiddenBelow} more task${hiddenBelow === 1 ? "" : "s"}`));
|
|
120
|
-
}
|
|
121
|
-
const body = [...head, ...taskSection];
|
|
122
|
-
const spacer = Math.max(0, innerHeight - body.length - footerLines.length);
|
|
123
|
-
for (let i = 0; i < spacer; i += 1)
|
|
124
|
-
body.push("");
|
|
125
|
-
body.push(...footerLines);
|
|
126
|
-
while (body.length > innerHeight) {
|
|
127
|
-
body.splice(body.length - footerLines.length - 1, 1);
|
|
128
|
-
}
|
|
129
|
-
const gray = chalk.gray;
|
|
130
|
-
const horizontal = gray("─".repeat(Math.max(0, width - 2)));
|
|
131
|
-
const out = [gray("┌") + horizontal + gray("┐")];
|
|
132
|
-
for (let i = 0; i < innerHeight; i += 1) {
|
|
133
|
-
const content = body[i] ?? "";
|
|
134
|
-
const inner = " " + padTo(content, contentWidth) + " ";
|
|
135
|
-
out.push(gray("│") + padTo(inner, width - 2) + gray("│"));
|
|
136
|
-
}
|
|
137
|
-
out.push(gray("└") + horizontal + gray("┘"));
|
|
138
|
-
return out;
|
|
139
|
-
}
|
|
140
|
-
//# sourceMappingURL=plan-sidebar-lines.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plan-sidebar-lines.js","sourceRoot":"","sources":["../../src/tui/plan-sidebar-lines.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { TranscriptItem, TuiState } from "./state.js";
|
|
2
|
-
export interface RenderCtx {
|
|
3
|
-
width: number;
|
|
4
|
-
thinkingExpanded: boolean;
|
|
5
|
-
outputExpanded: boolean;
|
|
6
|
-
running: boolean;
|
|
7
|
-
version?: string | undefined;
|
|
8
|
-
mode?: string | undefined;
|
|
9
|
-
provider?: string | undefined;
|
|
10
|
-
model?: string | undefined;
|
|
11
|
-
permissions?: string | undefined;
|
|
12
|
-
/** The dedicated live-plan pane owns plan rendering when one exists. */
|
|
13
|
-
hidePlanItems?: boolean | undefined;
|
|
14
|
-
}
|
|
15
|
-
export declare function renderItemLines(item: TranscriptItem, ctx: RenderCtx): string[];
|
|
16
|
-
/**
|
|
17
|
-
* Flatten the whole transcript (plus any transient streaming text) into a
|
|
18
|
-
* single array of ANSI lines, separated by blank lines, ready for the
|
|
19
|
-
* scrolling viewport. Rendering to lines (rather than Ink boxes) lets toggles
|
|
20
|
-
* like Ctrl+T / Ctrl+O recompute in place and lets us pin the composer.
|
|
21
|
-
*/
|
|
22
|
-
export declare function renderTranscriptLines(state: TuiState, ctx: RenderCtx): string[];
|