claude-code-plus-plus 0.1.0 → 0.2.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/dist/app.d.ts +52 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +318 -0
- package/dist/app.js.map +1 -0
- package/dist/cli/commands/index.d.ts +5 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +5 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/start.d.ts +16 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +20 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parser.d.ts +31 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +112 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/validators.d.ts +46 -0
- package/dist/cli/validators.d.ts.map +1 -0
- package/dist/cli/validators.js +149 -0
- package/dist/cli/validators.js.map +1 -0
- package/dist/config/defaults.d.ts +14 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +27 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +12 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +38 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +107 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/paths.d.ts +47 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +86 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/schema.d.ts +15 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +32 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/index.d.ts +13 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +13 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/session/index.d.ts +7 -0
- package/dist/core/session/index.d.ts.map +1 -0
- package/dist/core/session/index.js +6 -0
- package/dist/core/session/index.js.map +1 -0
- package/dist/core/session/session-manager.d.ts +46 -0
- package/dist/core/session/session-manager.d.ts.map +1 -0
- package/dist/core/session/session-manager.js +245 -0
- package/dist/core/session/session-manager.js.map +1 -0
- package/dist/core/session/session.d.ts +44 -0
- package/dist/core/session/session.d.ts.map +1 -0
- package/dist/core/session/session.js +78 -0
- package/dist/core/session/session.js.map +1 -0
- package/dist/core/terminal/index.d.ts +7 -0
- package/dist/core/terminal/index.d.ts.map +1 -0
- package/dist/core/terminal/index.js +6 -0
- package/dist/core/terminal/index.js.map +1 -0
- package/dist/core/terminal/terminal-manager.d.ts +36 -0
- package/dist/core/terminal/terminal-manager.d.ts.map +1 -0
- package/dist/core/terminal/terminal-manager.js +182 -0
- package/dist/core/terminal/terminal-manager.js.map +1 -0
- package/dist/core/terminal/terminal.d.ts +27 -0
- package/dist/core/terminal/terminal.d.ts.map +1 -0
- package/dist/core/terminal/terminal.js +38 -0
- package/dist/core/terminal/terminal.js.map +1 -0
- package/dist/core/workspace/index.d.ts +7 -0
- package/dist/core/workspace/index.d.ts.map +1 -0
- package/dist/core/workspace/index.js +6 -0
- package/dist/core/workspace/index.js.map +1 -0
- package/dist/core/workspace/workspace-manager.d.ts +59 -0
- package/dist/core/workspace/workspace-manager.d.ts.map +1 -0
- package/dist/core/workspace/workspace-manager.js +224 -0
- package/dist/core/workspace/workspace-manager.js.map +1 -0
- package/dist/core/workspace/workspace.d.ts +56 -0
- package/dist/core/workspace/workspace.d.ts.map +1 -0
- package/dist/core/workspace/workspace.js +96 -0
- package/dist/core/workspace/workspace.js.map +1 -0
- package/dist/core/worktree/index.d.ts +7 -0
- package/dist/core/worktree/index.d.ts.map +1 -0
- package/dist/core/worktree/index.js +6 -0
- package/dist/core/worktree/index.js.map +1 -0
- package/dist/core/worktree/worktree-manager.d.ts +47 -0
- package/dist/core/worktree/worktree-manager.d.ts.map +1 -0
- package/dist/core/worktree/worktree-manager.js +170 -0
- package/dist/core/worktree/worktree-manager.js.map +1 -0
- package/dist/core/worktree/worktree.d.ts +35 -0
- package/dist/core/worktree/worktree.d.ts.map +1 -0
- package/dist/core/worktree/worktree.js +50 -0
- package/dist/core/worktree/worktree.js.map +1 -0
- package/dist/events/bus.d.ts +76 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/bus.js +223 -0
- package/dist/events/bus.js.map +1 -0
- package/dist/events/handlers/index.d.ts +28 -0
- package/dist/events/handlers/index.d.ts.map +1 -0
- package/dist/events/handlers/index.js +44 -0
- package/dist/events/handlers/index.js.map +1 -0
- package/dist/events/handlers/session-events.d.ts +12 -0
- package/dist/events/handlers/session-events.d.ts.map +1 -0
- package/dist/events/handlers/session-events.js +38 -0
- package/dist/events/handlers/session-events.js.map +1 -0
- package/dist/events/handlers/terminal-events.d.ts +12 -0
- package/dist/events/handlers/terminal-events.d.ts.map +1 -0
- package/dist/events/handlers/terminal-events.js +37 -0
- package/dist/events/handlers/terminal-events.js.map +1 -0
- package/dist/events/handlers/ui-events.d.ts +11 -0
- package/dist/events/handlers/ui-events.d.ts.map +1 -0
- package/dist/events/handlers/ui-events.js +202 -0
- package/dist/events/handlers/ui-events.js.map +1 -0
- package/dist/events/index.d.ts +9 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +10 -0
- package/dist/events/index.js.map +1 -0
- package/dist/git/index.d.ts +5 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +5 -0
- package/dist/git/index.js.map +1 -0
- package/dist/git/worktree.d.ts +44 -0
- package/dist/git/worktree.d.ts.map +1 -0
- package/dist/git/worktree.js +158 -0
- package/dist/git/worktree.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -144
- package/dist/index.js.map +1 -1
- package/dist/launcher/index.d.ts +24 -0
- package/dist/launcher/index.d.ts.map +1 -0
- package/dist/launcher/index.js +226 -0
- package/dist/launcher/index.js.map +1 -0
- package/dist/multiplexer/base.d.ts +73 -0
- package/dist/multiplexer/base.d.ts.map +1 -0
- package/dist/multiplexer/base.js +68 -0
- package/dist/multiplexer/base.js.map +1 -0
- package/dist/multiplexer/factory.d.ts +28 -0
- package/dist/multiplexer/factory.d.ts.map +1 -0
- package/dist/multiplexer/factory.js +72 -0
- package/dist/multiplexer/factory.js.map +1 -0
- package/dist/multiplexer/index.d.ts +14 -0
- package/dist/multiplexer/index.d.ts.map +1 -0
- package/dist/multiplexer/index.js +15 -0
- package/dist/multiplexer/index.js.map +1 -0
- package/dist/multiplexer/tmux/index.d.ts +9 -0
- package/dist/multiplexer/tmux/index.d.ts.map +1 -0
- package/dist/multiplexer/tmux/index.js +7 -0
- package/dist/multiplexer/tmux/index.js.map +1 -0
- package/dist/multiplexer/tmux/tmux-commands.d.ts +96 -0
- package/dist/multiplexer/tmux/tmux-commands.d.ts.map +1 -0
- package/dist/multiplexer/tmux/tmux-commands.js +282 -0
- package/dist/multiplexer/tmux/tmux-commands.js.map +1 -0
- package/dist/multiplexer/tmux/tmux-config.d.ts +57 -0
- package/dist/multiplexer/tmux/tmux-config.d.ts.map +1 -0
- package/dist/multiplexer/tmux/tmux-config.js +103 -0
- package/dist/multiplexer/tmux/tmux-config.js.map +1 -0
- package/dist/multiplexer/tmux/tmux-multiplexer.d.ts +94 -0
- package/dist/multiplexer/tmux/tmux-multiplexer.d.ts.map +1 -0
- package/dist/multiplexer/tmux/tmux-multiplexer.js +302 -0
- package/dist/multiplexer/tmux/tmux-multiplexer.js.map +1 -0
- package/dist/multiplexer/windows/index.d.ts +5 -0
- package/dist/multiplexer/windows/index.d.ts.map +1 -0
- package/dist/multiplexer/windows/index.js +5 -0
- package/dist/multiplexer/windows/index.js.map +1 -0
- package/dist/multiplexer/windows/windows-multiplexer.d.ts +61 -0
- package/dist/multiplexer/windows/windows-multiplexer.d.ts.map +1 -0
- package/dist/multiplexer/windows/windows-multiplexer.js +151 -0
- package/dist/multiplexer/windows/windows-multiplexer.js.map +1 -0
- package/dist/platform/clipboard.d.ts +26 -0
- package/dist/platform/clipboard.d.ts.map +1 -0
- package/dist/platform/clipboard.js +154 -0
- package/dist/platform/clipboard.js.map +1 -0
- package/dist/platform/detector.d.ts +78 -0
- package/dist/platform/detector.d.ts.map +1 -0
- package/dist/platform/detector.js +169 -0
- package/dist/platform/detector.js.map +1 -0
- package/dist/platform/index.d.ts +14 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +15 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/paths.d.ts +63 -0
- package/dist/platform/paths.d.ts.map +1 -0
- package/dist/platform/paths.js +149 -0
- package/dist/platform/paths.js.map +1 -0
- package/dist/platform/shell.d.ts +43 -0
- package/dist/platform/shell.d.ts.map +1 -0
- package/dist/platform/shell.js +187 -0
- package/dist/platform/shell.js.map +1 -0
- package/dist/services/claude/claude-detector.d.ts +37 -0
- package/dist/services/claude/claude-detector.d.ts.map +1 -0
- package/dist/services/claude/claude-detector.js +83 -0
- package/dist/services/claude/claude-detector.js.map +1 -0
- package/dist/services/claude/claude-service.d.ts +57 -0
- package/dist/services/claude/claude-service.d.ts.map +1 -0
- package/dist/services/claude/claude-service.js +108 -0
- package/dist/services/claude/claude-service.js.map +1 -0
- package/dist/services/claude/index.d.ts +7 -0
- package/dist/services/claude/index.d.ts.map +1 -0
- package/dist/services/claude/index.js +6 -0
- package/dist/services/claude/index.js.map +1 -0
- package/dist/services/git/branch-service.d.ts +64 -0
- package/dist/services/git/branch-service.d.ts.map +1 -0
- package/dist/services/git/branch-service.js +217 -0
- package/dist/services/git/branch-service.js.map +1 -0
- package/dist/services/git/git-service.d.ts +44 -0
- package/dist/services/git/git-service.d.ts.map +1 -0
- package/dist/services/git/git-service.js +145 -0
- package/dist/services/git/git-service.js.map +1 -0
- package/dist/services/git/index.d.ts +8 -0
- package/dist/services/git/index.d.ts.map +1 -0
- package/dist/services/git/index.js +7 -0
- package/dist/services/git/index.js.map +1 -0
- package/dist/services/git/worktree-service.d.ts +61 -0
- package/dist/services/git/worktree-service.d.ts.map +1 -0
- package/dist/services/git/worktree-service.js +243 -0
- package/dist/services/git/worktree-service.js.map +1 -0
- package/dist/services/index.d.ts +12 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +12 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/process/index.d.ts +8 -0
- package/dist/services/process/index.d.ts.map +1 -0
- package/dist/services/process/index.js +6 -0
- package/dist/services/process/index.js.map +1 -0
- package/dist/services/process/process-monitor.d.ts +98 -0
- package/dist/services/process/process-monitor.d.ts.map +1 -0
- package/dist/services/process/process-monitor.js +173 -0
- package/dist/services/process/process-monitor.js.map +1 -0
- package/dist/services/process/process-spawner.d.ts +55 -0
- package/dist/services/process/process-spawner.d.ts.map +1 -0
- package/dist/services/process/process-spawner.js +93 -0
- package/dist/services/process/process-spawner.js.map +1 -0
- package/dist/sidebar/app.d.ts +70 -0
- package/dist/sidebar/app.d.ts.map +1 -0
- package/dist/sidebar/app.js +1203 -0
- package/dist/sidebar/app.js.map +1 -0
- package/dist/sidebar/index.d.ts +8 -0
- package/dist/sidebar/index.d.ts.map +1 -0
- package/dist/sidebar/index.js +26 -0
- package/dist/sidebar/index.js.map +1 -0
- package/dist/sidebar/input.d.ts +33 -0
- package/dist/sidebar/input.d.ts.map +1 -0
- package/dist/sidebar/input.js +153 -0
- package/dist/sidebar/input.js.map +1 -0
- package/dist/sidebar/render.d.ts +73 -0
- package/dist/sidebar/render.d.ts.map +1 -0
- package/dist/sidebar/render.js +403 -0
- package/dist/sidebar/render.js.map +1 -0
- package/dist/state/actions.d.ts +49 -0
- package/dist/state/actions.d.ts.map +1 -0
- package/dist/state/actions.js +512 -0
- package/dist/state/actions.js.map +1 -0
- package/dist/state/index.d.ts +16 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +28 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/middleware/index.d.ts +7 -0
- package/dist/state/middleware/index.d.ts.map +1 -0
- package/dist/state/middleware/index.js +6 -0
- package/dist/state/middleware/index.js.map +1 -0
- package/dist/state/middleware/logger.d.ts +22 -0
- package/dist/state/middleware/logger.d.ts.map +1 -0
- package/dist/state/middleware/logger.js +45 -0
- package/dist/state/middleware/logger.js.map +1 -0
- package/dist/state/middleware/persistence.d.ts +29 -0
- package/dist/state/middleware/persistence.d.ts.map +1 -0
- package/dist/state/middleware/persistence.js +71 -0
- package/dist/state/middleware/persistence.js.map +1 -0
- package/dist/state/persistence/file-adapter.d.ts +48 -0
- package/dist/state/persistence/file-adapter.d.ts.map +1 -0
- package/dist/state/persistence/file-adapter.js +96 -0
- package/dist/state/persistence/file-adapter.js.map +1 -0
- package/dist/state/persistence/index.d.ts +8 -0
- package/dist/state/persistence/index.d.ts.map +1 -0
- package/dist/state/persistence/index.js +6 -0
- package/dist/state/persistence/index.js.map +1 -0
- package/dist/state/persistence/serializer.d.ts +41 -0
- package/dist/state/persistence/serializer.d.ts.map +1 -0
- package/dist/state/persistence/serializer.js +114 -0
- package/dist/state/persistence/serializer.js.map +1 -0
- package/dist/state/selectors.d.ts +67 -0
- package/dist/state/selectors.d.ts.map +1 -0
- package/dist/state/selectors.js +177 -0
- package/dist/state/selectors.js.map +1 -0
- package/dist/state/store.d.ts +86 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +161 -0
- package/dist/state/store.js.map +1 -0
- package/dist/state/types.d.ts +269 -0
- package/dist/state/types.d.ts.map +1 -0
- package/dist/state/types.js +7 -0
- package/dist/state/types.js.map +1 -0
- package/dist/terminal/bar-handler.d.ts +15 -0
- package/dist/terminal/bar-handler.d.ts.map +1 -0
- package/dist/terminal/bar-handler.js +242 -0
- package/dist/terminal/bar-handler.js.map +1 -0
- package/dist/terminal/bar-render.d.ts +33 -0
- package/dist/terminal/bar-render.d.ts.map +1 -0
- package/dist/terminal/bar-render.js +122 -0
- package/dist/terminal/bar-render.js.map +1 -0
- package/dist/terminal/index.d.ts +8 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +9 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/tmux/commands.d.ts +26 -0
- package/dist/tmux/commands.d.ts.map +1 -0
- package/dist/tmux/commands.js +67 -0
- package/dist/tmux/commands.js.map +1 -0
- package/dist/tmux/index.d.ts +6 -0
- package/dist/tmux/index.d.ts.map +1 -0
- package/dist/tmux/index.js +16 -0
- package/dist/tmux/index.js.map +1 -0
- package/dist/tmux/pane.d.ts +111 -0
- package/dist/tmux/pane.d.ts.map +1 -0
- package/dist/tmux/pane.js +206 -0
- package/dist/tmux/pane.js.map +1 -0
- package/dist/types/config.d.ts +103 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/entities.d.ts +88 -0
- package/dist/types/entities.d.ts.map +1 -0
- package/dist/types/entities.js +8 -0
- package/dist/types/entities.js.map +1 -0
- package/dist/types/events.d.ts +156 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +8 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/multiplexer.d.ts +238 -0
- package/dist/types/multiplexer.d.ts.map +1 -0
- package/dist/types/multiplexer.js +8 -0
- package/dist/types/multiplexer.js.map +1 -0
- package/dist/types.d.ts +67 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -2
- package/dist/types.js.map +1 -1
- package/dist/ui/components/base.d.ts +155 -0
- package/dist/ui/components/base.d.ts.map +1 -0
- package/dist/ui/components/base.js +269 -0
- package/dist/ui/components/base.js.map +1 -0
- package/dist/ui/components/index.d.ts +10 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +10 -0
- package/dist/ui/components/index.js.map +1 -0
- package/dist/ui/components/input-field.d.ts +98 -0
- package/dist/ui/components/input-field.d.ts.map +1 -0
- package/dist/ui/components/input-field.js +274 -0
- package/dist/ui/components/input-field.js.map +1 -0
- package/dist/ui/components/list.d.ts +94 -0
- package/dist/ui/components/list.d.ts.map +1 -0
- package/dist/ui/components/list.js +294 -0
- package/dist/ui/components/list.js.map +1 -0
- package/dist/ui/components/modal.d.ts +83 -0
- package/dist/ui/components/modal.d.ts.map +1 -0
- package/dist/ui/components/modal.js +249 -0
- package/dist/ui/components/modal.js.map +1 -0
- package/dist/ui/components/tabs.d.ts +97 -0
- package/dist/ui/components/tabs.d.ts.map +1 -0
- package/dist/ui/components/tabs.js +252 -0
- package/dist/ui/components/tabs.js.map +1 -0
- package/dist/ui/components/text.d.ts +60 -0
- package/dist/ui/components/text.d.ts.map +1 -0
- package/dist/ui/components/text.js +224 -0
- package/dist/ui/components/text.js.map +1 -0
- package/dist/ui/index.d.ts +12 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +18 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/input/index.d.ts +8 -0
- package/dist/ui/input/index.d.ts.map +1 -0
- package/dist/ui/input/index.js +8 -0
- package/dist/ui/input/index.js.map +1 -0
- package/dist/ui/input/input-manager.d.ts +83 -0
- package/dist/ui/input/input-manager.d.ts.map +1 -0
- package/dist/ui/input/input-manager.js +200 -0
- package/dist/ui/input/input-manager.js.map +1 -0
- package/dist/ui/input/keybindings.d.ts +47 -0
- package/dist/ui/input/keybindings.d.ts.map +1 -0
- package/dist/ui/input/keybindings.js +168 -0
- package/dist/ui/input/keybindings.js.map +1 -0
- package/dist/ui/input/keyboard.d.ts +24 -0
- package/dist/ui/input/keyboard.d.ts.map +1 -0
- package/dist/ui/input/keyboard.js +230 -0
- package/dist/ui/input/keyboard.js.map +1 -0
- package/dist/ui/input/mouse.d.ts +44 -0
- package/dist/ui/input/mouse.d.ts.map +1 -0
- package/dist/ui/input/mouse.js +161 -0
- package/dist/ui/input/mouse.js.map +1 -0
- package/dist/ui/layout/box.d.ts +63 -0
- package/dist/ui/layout/box.d.ts.map +1 -0
- package/dist/ui/layout/box.js +160 -0
- package/dist/ui/layout/box.js.map +1 -0
- package/dist/ui/layout/constraints.d.ts +77 -0
- package/dist/ui/layout/constraints.d.ts.map +1 -0
- package/dist/ui/layout/constraints.js +154 -0
- package/dist/ui/layout/constraints.js.map +1 -0
- package/dist/ui/layout/flex.d.ts +59 -0
- package/dist/ui/layout/flex.d.ts.map +1 -0
- package/dist/ui/layout/flex.js +163 -0
- package/dist/ui/layout/flex.js.map +1 -0
- package/dist/ui/layout/index.d.ts +7 -0
- package/dist/ui/layout/index.d.ts.map +1 -0
- package/dist/ui/layout/index.js +7 -0
- package/dist/ui/layout/index.js.map +1 -0
- package/dist/ui/modals/delete-modal.d.ts +27 -0
- package/dist/ui/modals/delete-modal.d.ts.map +1 -0
- package/dist/ui/modals/delete-modal.js +59 -0
- package/dist/ui/modals/delete-modal.js.map +1 -0
- package/dist/ui/modals/index.d.ts +7 -0
- package/dist/ui/modals/index.d.ts.map +1 -0
- package/dist/ui/modals/index.js +7 -0
- package/dist/ui/modals/index.js.map +1 -0
- package/dist/ui/modals/input-modal.d.ts +66 -0
- package/dist/ui/modals/input-modal.d.ts.map +1 -0
- package/dist/ui/modals/input-modal.js +185 -0
- package/dist/ui/modals/input-modal.js.map +1 -0
- package/dist/ui/modals/quit-modal.d.ts +30 -0
- package/dist/ui/modals/quit-modal.d.ts.map +1 -0
- package/dist/ui/modals/quit-modal.js +65 -0
- package/dist/ui/modals/quit-modal.js.map +1 -0
- package/dist/ui/renderer/ansi.d.ts +206 -0
- package/dist/ui/renderer/ansi.d.ts.map +1 -0
- package/dist/ui/renderer/ansi.js +318 -0
- package/dist/ui/renderer/ansi.js.map +1 -0
- package/dist/ui/renderer/canvas.d.ts +126 -0
- package/dist/ui/renderer/canvas.d.ts.map +1 -0
- package/dist/ui/renderer/canvas.js +346 -0
- package/dist/ui/renderer/canvas.js.map +1 -0
- package/dist/ui/renderer/colors.d.ts +65 -0
- package/dist/ui/renderer/colors.d.ts.map +1 -0
- package/dist/ui/renderer/colors.js +260 -0
- package/dist/ui/renderer/colors.js.map +1 -0
- package/dist/ui/renderer/index.d.ts +8 -0
- package/dist/ui/renderer/index.d.ts.map +1 -0
- package/dist/ui/renderer/index.js +8 -0
- package/dist/ui/renderer/index.js.map +1 -0
- package/dist/ui/renderer/symbols.d.ts +176 -0
- package/dist/ui/renderer/symbols.d.ts.map +1 -0
- package/dist/ui/renderer/symbols.js +246 -0
- package/dist/ui/renderer/symbols.js.map +1 -0
- package/dist/ui/views/index.d.ts +7 -0
- package/dist/ui/views/index.d.ts.map +1 -0
- package/dist/ui/views/index.js +7 -0
- package/dist/ui/views/index.js.map +1 -0
- package/dist/ui/views/sidebar-view.d.ts +89 -0
- package/dist/ui/views/sidebar-view.d.ts.map +1 -0
- package/dist/ui/views/sidebar-view.js +259 -0
- package/dist/ui/views/sidebar-view.js.map +1 -0
- package/dist/ui/views/terminal-bar-view.d.ts +67 -0
- package/dist/ui/views/terminal-bar-view.d.ts.map +1 -0
- package/dist/ui/views/terminal-bar-view.js +172 -0
- package/dist/ui/views/terminal-bar-view.js.map +1 -0
- package/dist/ui/views/welcome-view.d.ts +34 -0
- package/dist/ui/views/welcome-view.d.ts.map +1 -0
- package/dist/ui/views/welcome-view.js +116 -0
- package/dist/ui/views/welcome-view.js.map +1 -0
- package/dist/utils/async.d.ts +68 -0
- package/dist/utils/async.d.ts.map +1 -0
- package/dist/utils/async.js +138 -0
- package/dist/utils/async.js.map +1 -0
- package/dist/utils/errors.d.ts +136 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +224 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/id.d.ts +51 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +79 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +19 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +75 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +212 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/string.d.ts +71 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/string.js +163 -0
- package/dist/utils/string.js.map +1 -0
- package/dist/utils/validation.d.ts +72 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +196 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Defines the shape of the application state.
|
|
5
|
+
*/
|
|
6
|
+
import type { Workspace, Session, Terminal, Worktree } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Modal types
|
|
9
|
+
*/
|
|
10
|
+
export type ModalType = 'quit' | 'delete-worktree' | 'delete-session' | 'create-worktree' | 'create-session' | 'rename-worktree' | 'rename-session';
|
|
11
|
+
/**
|
|
12
|
+
* Sidebar UI state
|
|
13
|
+
*/
|
|
14
|
+
export interface SidebarState {
|
|
15
|
+
/** Currently selected index in the list */
|
|
16
|
+
selectedIndex: number;
|
|
17
|
+
/** Whether the sidebar is collapsed */
|
|
18
|
+
collapsed: boolean;
|
|
19
|
+
/** Scroll offset for long lists */
|
|
20
|
+
scrollOffset: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Terminal bar UI state
|
|
24
|
+
*/
|
|
25
|
+
export interface TerminalBarState {
|
|
26
|
+
/** Whether the terminal bar is visible */
|
|
27
|
+
visible: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Modal UI state
|
|
31
|
+
*/
|
|
32
|
+
export interface ModalState {
|
|
33
|
+
/** Current modal type, null if no modal */
|
|
34
|
+
type: ModalType | null;
|
|
35
|
+
/** Modal-specific data */
|
|
36
|
+
data: unknown;
|
|
37
|
+
/** Selection within modal (for confirmation dialogs) */
|
|
38
|
+
selection: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Input mode state (for text input fields)
|
|
42
|
+
*/
|
|
43
|
+
export interface InputModeState {
|
|
44
|
+
/** Whether input mode is active */
|
|
45
|
+
active: boolean;
|
|
46
|
+
/** Field being edited */
|
|
47
|
+
field: string;
|
|
48
|
+
/** Current input value */
|
|
49
|
+
value: string;
|
|
50
|
+
/** Cursor position within the value */
|
|
51
|
+
cursorPos: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* UI state
|
|
55
|
+
*/
|
|
56
|
+
export interface UIState {
|
|
57
|
+
sidebar: SidebarState;
|
|
58
|
+
terminalBar: TerminalBarState;
|
|
59
|
+
modal: ModalState;
|
|
60
|
+
inputMode: InputModeState;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Application status state
|
|
64
|
+
*/
|
|
65
|
+
export interface StatusState {
|
|
66
|
+
/** Whether a loading operation is in progress */
|
|
67
|
+
loading: boolean;
|
|
68
|
+
/** Current error message, null if no error */
|
|
69
|
+
error: string | null;
|
|
70
|
+
/** Status message to display */
|
|
71
|
+
message: string | null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Complete application state
|
|
75
|
+
*/
|
|
76
|
+
export interface AppState {
|
|
77
|
+
/** Workspace data (null before initialization) */
|
|
78
|
+
workspace: Workspace | null;
|
|
79
|
+
/** UI state */
|
|
80
|
+
ui: UIState;
|
|
81
|
+
/** Application status */
|
|
82
|
+
status: StatusState;
|
|
83
|
+
/** State version for migrations */
|
|
84
|
+
version: number;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Action types for state mutations
|
|
88
|
+
*/
|
|
89
|
+
export type ActionType = 'WORKSPACE_LOAD' | 'WORKSPACE_UPDATE' | 'SESSION_CREATE' | 'SESSION_DELETE' | 'SESSION_ACTIVATE' | 'SESSION_RENAME' | 'SESSION_UPDATE' | 'TERMINAL_CREATE' | 'TERMINAL_DELETE' | 'TERMINAL_ACTIVATE' | 'TERMINAL_RENAME' | 'WORKTREE_CREATE' | 'WORKTREE_DELETE' | 'WORKTREE_RENAME' | 'UI_SELECT' | 'UI_SCROLL' | 'UI_TOGGLE_SIDEBAR' | 'UI_SHOW_MODAL' | 'UI_CLOSE_MODAL' | 'UI_MODAL_SELECT' | 'UI_INPUT_START' | 'UI_INPUT_UPDATE' | 'UI_INPUT_END' | 'STATUS_SET_LOADING' | 'STATUS_SET_ERROR' | 'STATUS_SET_MESSAGE' | 'STATUS_CLEAR';
|
|
90
|
+
/**
|
|
91
|
+
* Base action interface
|
|
92
|
+
*/
|
|
93
|
+
export interface Action {
|
|
94
|
+
type: ActionType;
|
|
95
|
+
payload?: unknown;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Typed action interfaces
|
|
99
|
+
*/
|
|
100
|
+
export interface WorkspaceLoadAction extends Action {
|
|
101
|
+
type: 'WORKSPACE_LOAD';
|
|
102
|
+
payload: Workspace;
|
|
103
|
+
}
|
|
104
|
+
export interface WorkspaceUpdateAction extends Action {
|
|
105
|
+
type: 'WORKSPACE_UPDATE';
|
|
106
|
+
payload: Partial<Workspace>;
|
|
107
|
+
}
|
|
108
|
+
export interface SessionCreateAction extends Action {
|
|
109
|
+
type: 'SESSION_CREATE';
|
|
110
|
+
payload: {
|
|
111
|
+
worktreeId: string;
|
|
112
|
+
session: Session;
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export interface SessionDeleteAction extends Action {
|
|
116
|
+
type: 'SESSION_DELETE';
|
|
117
|
+
payload: {
|
|
118
|
+
sessionId: string;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export interface SessionActivateAction extends Action {
|
|
122
|
+
type: 'SESSION_ACTIVATE';
|
|
123
|
+
payload: {
|
|
124
|
+
sessionId: string;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export interface SessionRenameAction extends Action {
|
|
128
|
+
type: 'SESSION_RENAME';
|
|
129
|
+
payload: {
|
|
130
|
+
sessionId: string;
|
|
131
|
+
title: string;
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
export interface SessionUpdateAction extends Action {
|
|
135
|
+
type: 'SESSION_UPDATE';
|
|
136
|
+
payload: {
|
|
137
|
+
sessionId: string;
|
|
138
|
+
updates: Partial<Session>;
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
export interface TerminalCreateAction extends Action {
|
|
142
|
+
type: 'TERMINAL_CREATE';
|
|
143
|
+
payload: {
|
|
144
|
+
sessionId: string;
|
|
145
|
+
terminal: Terminal;
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
export interface TerminalDeleteAction extends Action {
|
|
149
|
+
type: 'TERMINAL_DELETE';
|
|
150
|
+
payload: {
|
|
151
|
+
sessionId: string;
|
|
152
|
+
terminalId: string;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export interface TerminalActivateAction extends Action {
|
|
156
|
+
type: 'TERMINAL_ACTIVATE';
|
|
157
|
+
payload: {
|
|
158
|
+
sessionId: string;
|
|
159
|
+
terminalIndex: number;
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
export interface TerminalRenameAction extends Action {
|
|
163
|
+
type: 'TERMINAL_RENAME';
|
|
164
|
+
payload: {
|
|
165
|
+
sessionId: string;
|
|
166
|
+
terminalId: string;
|
|
167
|
+
title: string;
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
export interface WorktreeCreateAction extends Action {
|
|
171
|
+
type: 'WORKTREE_CREATE';
|
|
172
|
+
payload: Worktree;
|
|
173
|
+
}
|
|
174
|
+
export interface WorktreeDeleteAction extends Action {
|
|
175
|
+
type: 'WORKTREE_DELETE';
|
|
176
|
+
payload: {
|
|
177
|
+
worktreeId: string;
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
export interface WorktreeRenameAction extends Action {
|
|
181
|
+
type: 'WORKTREE_RENAME';
|
|
182
|
+
payload: {
|
|
183
|
+
worktreeId: string;
|
|
184
|
+
branch: string;
|
|
185
|
+
path: string;
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
export interface UISelectAction extends Action {
|
|
189
|
+
type: 'UI_SELECT';
|
|
190
|
+
payload: {
|
|
191
|
+
index: number;
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
export interface UIScrollAction extends Action {
|
|
195
|
+
type: 'UI_SCROLL';
|
|
196
|
+
payload: {
|
|
197
|
+
offset: number;
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
export interface UIToggleSidebarAction extends Action {
|
|
201
|
+
type: 'UI_TOGGLE_SIDEBAR';
|
|
202
|
+
}
|
|
203
|
+
export interface UIShowModalAction extends Action {
|
|
204
|
+
type: 'UI_SHOW_MODAL';
|
|
205
|
+
payload: {
|
|
206
|
+
type: ModalType;
|
|
207
|
+
data?: unknown;
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
export interface UICloseModalAction extends Action {
|
|
211
|
+
type: 'UI_CLOSE_MODAL';
|
|
212
|
+
}
|
|
213
|
+
export interface UIModalSelectAction extends Action {
|
|
214
|
+
type: 'UI_MODAL_SELECT';
|
|
215
|
+
payload: {
|
|
216
|
+
selection: number;
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
export interface UIInputStartAction extends Action {
|
|
220
|
+
type: 'UI_INPUT_START';
|
|
221
|
+
payload: {
|
|
222
|
+
field: string;
|
|
223
|
+
initialValue?: string;
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
export interface UIInputUpdateAction extends Action {
|
|
227
|
+
type: 'UI_INPUT_UPDATE';
|
|
228
|
+
payload: {
|
|
229
|
+
value: string;
|
|
230
|
+
cursorPos: number;
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
export interface UIInputEndAction extends Action {
|
|
234
|
+
type: 'UI_INPUT_END';
|
|
235
|
+
}
|
|
236
|
+
export interface StatusSetLoadingAction extends Action {
|
|
237
|
+
type: 'STATUS_SET_LOADING';
|
|
238
|
+
payload: {
|
|
239
|
+
loading: boolean;
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
export interface StatusSetErrorAction extends Action {
|
|
243
|
+
type: 'STATUS_SET_ERROR';
|
|
244
|
+
payload: {
|
|
245
|
+
error: string | null;
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
export interface StatusSetMessageAction extends Action {
|
|
249
|
+
type: 'STATUS_SET_MESSAGE';
|
|
250
|
+
payload: {
|
|
251
|
+
message: string | null;
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
export interface StatusClearAction extends Action {
|
|
255
|
+
type: 'STATUS_CLEAR';
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Union of all action types
|
|
259
|
+
*/
|
|
260
|
+
export type AppAction = WorkspaceLoadAction | WorkspaceUpdateAction | SessionCreateAction | SessionDeleteAction | SessionActivateAction | SessionRenameAction | SessionUpdateAction | TerminalCreateAction | TerminalDeleteAction | TerminalActivateAction | TerminalRenameAction | WorktreeCreateAction | WorktreeDeleteAction | WorktreeRenameAction | UISelectAction | UIScrollAction | UIToggleSidebarAction | UIShowModalAction | UICloseModalAction | UIModalSelectAction | UIInputStartAction | UIInputUpdateAction | UIInputEndAction | StatusSetLoadingAction | StatusSetErrorAction | StatusSetMessageAction | StatusClearAction;
|
|
261
|
+
/**
|
|
262
|
+
* State listener callback type
|
|
263
|
+
*/
|
|
264
|
+
export type StateListener = (state: AppState, prevState: AppState) => void;
|
|
265
|
+
/**
|
|
266
|
+
* Middleware function type
|
|
267
|
+
*/
|
|
268
|
+
export type Middleware = (state: AppState, action: AppAction, next: () => AppState) => AppState;
|
|
269
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Terminal Bar Handler
|
|
4
|
+
*
|
|
5
|
+
* Lightweight process that runs in the 1-row terminal bar pane.
|
|
6
|
+
* Handles mouse clicks and keyboard input, sending commands to the sidebar.
|
|
7
|
+
*
|
|
8
|
+
* Communication:
|
|
9
|
+
* - Receives render data from sidebar via environment or stdin
|
|
10
|
+
* - Sends actions to sidebar via tmux send-keys
|
|
11
|
+
*
|
|
12
|
+
* Usage: node bar-handler.js <sidebarPaneId> <sessionId>
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=bar-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-handler.d.ts","sourceRoot":"","sources":["../../src/terminal/bar-handler.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Terminal Bar Handler
|
|
4
|
+
*
|
|
5
|
+
* Lightweight process that runs in the 1-row terminal bar pane.
|
|
6
|
+
* Handles mouse clicks and keyboard input, sending commands to the sidebar.
|
|
7
|
+
*
|
|
8
|
+
* Communication:
|
|
9
|
+
* - Receives render data from sidebar via environment or stdin
|
|
10
|
+
* - Sends actions to sidebar via tmux send-keys
|
|
11
|
+
*
|
|
12
|
+
* Usage: node bar-handler.js <sidebarPaneId> <sessionId>
|
|
13
|
+
*/
|
|
14
|
+
import { execSync } from 'child_process';
|
|
15
|
+
import { renderTerminalBar, findClickedTab } from './bar-render';
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// ANSI Escape Codes
|
|
18
|
+
// ============================================================================
|
|
19
|
+
const ESC = '\x1b';
|
|
20
|
+
const CSI = `${ESC}[`;
|
|
21
|
+
const ansi = {
|
|
22
|
+
clearScreen: `${CSI}2J`,
|
|
23
|
+
moveTo: (row, col) => `${CSI}${row};${col}H`,
|
|
24
|
+
reset: `${CSI}0m`,
|
|
25
|
+
hideCursor: `${CSI}?25l`,
|
|
26
|
+
showCursor: `${CSI}?25h`,
|
|
27
|
+
enableMouse: `${CSI}?1000h${CSI}?1006h`,
|
|
28
|
+
disableMouse: `${CSI}?1000l${CSI}?1006l`,
|
|
29
|
+
};
|
|
30
|
+
let state = {
|
|
31
|
+
sidebarPaneId: '',
|
|
32
|
+
sessionId: '',
|
|
33
|
+
terminals: [],
|
|
34
|
+
activeIndex: 0,
|
|
35
|
+
tabPositions: [],
|
|
36
|
+
};
|
|
37
|
+
let running = false;
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Communication with Sidebar
|
|
40
|
+
// ============================================================================
|
|
41
|
+
/**
|
|
42
|
+
* Send a command to the sidebar via tmux send-keys
|
|
43
|
+
* Protocol: Ctrl+U followed by "TERM:<action>:<data>" then Enter
|
|
44
|
+
*/
|
|
45
|
+
function sendToSidebar(action, data = '') {
|
|
46
|
+
try {
|
|
47
|
+
// Send Ctrl+U to clear any existing input and enter terminal command mode
|
|
48
|
+
execSync(`tmux send-keys -t ${state.sidebarPaneId} C-u`, { stdio: 'ignore' });
|
|
49
|
+
// Send the command
|
|
50
|
+
const cmd = data ? `TERM:${action}:${data}` : `TERM:${action}`;
|
|
51
|
+
execSync(`tmux send-keys -t ${state.sidebarPaneId} -l "${cmd}"`, { stdio: 'ignore' });
|
|
52
|
+
// Send Enter to execute
|
|
53
|
+
execSync(`tmux send-keys -t ${state.sidebarPaneId} Enter`, { stdio: 'ignore' });
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
// Failed to send - sidebar may have exited
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// ============================================================================
|
|
60
|
+
// Rendering
|
|
61
|
+
// ============================================================================
|
|
62
|
+
function render() {
|
|
63
|
+
const width = process.stdout.columns || 80;
|
|
64
|
+
const { output, tabPositions } = renderTerminalBar(state.terminals, state.activeIndex, width);
|
|
65
|
+
state.tabPositions = tabPositions;
|
|
66
|
+
process.stdout.write(output);
|
|
67
|
+
}
|
|
68
|
+
// ============================================================================
|
|
69
|
+
// Input Handling
|
|
70
|
+
// ============================================================================
|
|
71
|
+
function handleInput(data) {
|
|
72
|
+
const input = data.toString();
|
|
73
|
+
// Check for render command from sidebar: "RENDER:<json>"
|
|
74
|
+
if (input.startsWith('RENDER:')) {
|
|
75
|
+
try {
|
|
76
|
+
const json = input.slice(7).trim();
|
|
77
|
+
const renderData = JSON.parse(json);
|
|
78
|
+
state.terminals = renderData.terminals || [];
|
|
79
|
+
state.activeIndex = renderData.activeIndex || 0;
|
|
80
|
+
render();
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
// Invalid render data
|
|
84
|
+
}
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
// Check for SGR mouse events: \x1b[<button;col;rowM or \x1b[<button;col;rowm
|
|
88
|
+
const mouseMatch = input.match(/\x1b\[<(\d+);(\d+);(\d+)([Mm])/);
|
|
89
|
+
if (mouseMatch) {
|
|
90
|
+
const button = parseInt(mouseMatch[1], 10);
|
|
91
|
+
const col = parseInt(mouseMatch[2], 10);
|
|
92
|
+
const row = parseInt(mouseMatch[3], 10);
|
|
93
|
+
const isRelease = mouseMatch[4] === 'm';
|
|
94
|
+
// Handle left click release on row 1
|
|
95
|
+
if (button === 0 && isRelease && row === 1) {
|
|
96
|
+
handleTabClick(col);
|
|
97
|
+
}
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
// Handle keyboard input
|
|
101
|
+
const key = input;
|
|
102
|
+
// Number keys 1-9: switch to tab
|
|
103
|
+
if (key >= '1' && key <= '9') {
|
|
104
|
+
const tabIndex = parseInt(key, 10) - 1;
|
|
105
|
+
if (tabIndex < state.terminals.length) {
|
|
106
|
+
sendToSidebar('switch', String(tabIndex));
|
|
107
|
+
}
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// Tab: cycle forward
|
|
111
|
+
if (key === '\t') {
|
|
112
|
+
cycleTab(1);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// Shift+Tab: cycle backward
|
|
116
|
+
if (key === '\x1b[Z') {
|
|
117
|
+
cycleTab(-1);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
// h or left arrow: previous
|
|
121
|
+
if (key === 'h' || key === '\x1b[D') {
|
|
122
|
+
cycleTab(-1);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
// l or right arrow: next
|
|
126
|
+
if (key === 'l' || key === '\x1b[C') {
|
|
127
|
+
cycleTab(1);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// n or c: new terminal
|
|
131
|
+
if (key === 'n' || key === 'c') {
|
|
132
|
+
sendToSidebar('new');
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// d: delete current terminal
|
|
136
|
+
if (key === 'd') {
|
|
137
|
+
if (state.terminals.length > 0) {
|
|
138
|
+
sendToSidebar('delete', String(state.activeIndex));
|
|
139
|
+
}
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
// Enter: focus the terminal pane
|
|
143
|
+
if (key === '\r') {
|
|
144
|
+
sendToSidebar('focus');
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
// Escape: focus sidebar
|
|
148
|
+
if (key === '\x1b' && input.length === 1) {
|
|
149
|
+
sendToSidebar('escape');
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function handleTabClick(col) {
|
|
154
|
+
const clickedIndex = findClickedTab(col, state.tabPositions);
|
|
155
|
+
if (clickedIndex === null)
|
|
156
|
+
return;
|
|
157
|
+
if (clickedIndex === -1) {
|
|
158
|
+
// Clicked [+] button
|
|
159
|
+
sendToSidebar('new');
|
|
160
|
+
}
|
|
161
|
+
else if (clickedIndex !== state.activeIndex) {
|
|
162
|
+
// Clicked a different tab
|
|
163
|
+
sendToSidebar('switch', String(clickedIndex));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function cycleTab(direction) {
|
|
167
|
+
if (state.terminals.length === 0)
|
|
168
|
+
return;
|
|
169
|
+
const newIndex = state.activeIndex + direction;
|
|
170
|
+
if (newIndex >= 0 && newIndex < state.terminals.length) {
|
|
171
|
+
sendToSidebar('switch', String(newIndex));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// ============================================================================
|
|
175
|
+
// Lifecycle
|
|
176
|
+
// ============================================================================
|
|
177
|
+
function start() {
|
|
178
|
+
running = true;
|
|
179
|
+
// Set up terminal
|
|
180
|
+
process.stdout.write(ansi.hideCursor);
|
|
181
|
+
process.stdout.write(ansi.enableMouse);
|
|
182
|
+
// Set up raw mode for input
|
|
183
|
+
if (process.stdin.isTTY) {
|
|
184
|
+
process.stdin.setRawMode(true);
|
|
185
|
+
}
|
|
186
|
+
process.stdin.resume();
|
|
187
|
+
process.stdin.on('data', handleInput);
|
|
188
|
+
// Handle resize
|
|
189
|
+
process.stdout.on('resize', () => {
|
|
190
|
+
render();
|
|
191
|
+
});
|
|
192
|
+
// Initial render
|
|
193
|
+
render();
|
|
194
|
+
}
|
|
195
|
+
function stop() {
|
|
196
|
+
running = false;
|
|
197
|
+
process.stdout.write(ansi.disableMouse);
|
|
198
|
+
process.stdout.write(ansi.showCursor);
|
|
199
|
+
process.stdout.write(ansi.reset);
|
|
200
|
+
if (process.stdin.isTTY) {
|
|
201
|
+
process.stdin.setRawMode(false);
|
|
202
|
+
}
|
|
203
|
+
process.stdin.pause();
|
|
204
|
+
}
|
|
205
|
+
// ============================================================================
|
|
206
|
+
// Main
|
|
207
|
+
// ============================================================================
|
|
208
|
+
async function main() {
|
|
209
|
+
const args = process.argv.slice(2);
|
|
210
|
+
if (args.length < 2) {
|
|
211
|
+
console.error('Usage: bar-handler <sidebarPaneId> <sessionId>');
|
|
212
|
+
process.exit(1);
|
|
213
|
+
}
|
|
214
|
+
state.sidebarPaneId = args[0];
|
|
215
|
+
state.sessionId = args[1];
|
|
216
|
+
// Parse initial state from remaining args or stdin
|
|
217
|
+
if (args[2]) {
|
|
218
|
+
try {
|
|
219
|
+
const initialData = JSON.parse(args[2]);
|
|
220
|
+
state.terminals = initialData.terminals || [];
|
|
221
|
+
state.activeIndex = initialData.activeIndex || 0;
|
|
222
|
+
}
|
|
223
|
+
catch (err) {
|
|
224
|
+
// Invalid initial data
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Handle graceful shutdown
|
|
228
|
+
process.on('SIGTERM', () => {
|
|
229
|
+
stop();
|
|
230
|
+
process.exit(0);
|
|
231
|
+
});
|
|
232
|
+
process.on('SIGINT', () => {
|
|
233
|
+
stop();
|
|
234
|
+
process.exit(0);
|
|
235
|
+
});
|
|
236
|
+
start();
|
|
237
|
+
}
|
|
238
|
+
main().catch((err) => {
|
|
239
|
+
console.error('Terminal bar handler error:', err);
|
|
240
|
+
process.exit(1);
|
|
241
|
+
});
|
|
242
|
+
//# sourceMappingURL=bar-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-handler.js","sourceRoot":"","sources":["../../src/terminal/bar-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal Bar Rendering
|
|
3
|
+
*
|
|
4
|
+
* Pure functions for rendering the terminal tab bar with ANSI codes.
|
|
5
|
+
* The tab bar is a single row showing terminal tabs with keyboard hints on the right.
|
|
6
|
+
*/
|
|
7
|
+
import type { Terminal } from '../types';
|
|
8
|
+
export interface TabPosition {
|
|
9
|
+
index: number;
|
|
10
|
+
startCol: number;
|
|
11
|
+
endCol: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Render the terminal tab bar as a single row
|
|
15
|
+
*
|
|
16
|
+
* @param terminals - Array of terminals
|
|
17
|
+
* @param activeIndex - Index of the active terminal
|
|
18
|
+
* @param width - Available width in columns
|
|
19
|
+
* @returns Object with ANSI output string and tab positions for click handling
|
|
20
|
+
*/
|
|
21
|
+
export declare function renderTerminalBar(terminals: Terminal[], activeIndex: number, width: number): {
|
|
22
|
+
output: string;
|
|
23
|
+
tabPositions: TabPosition[];
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Find which tab was clicked based on column position
|
|
27
|
+
*
|
|
28
|
+
* @param col - Column position of click (1-indexed)
|
|
29
|
+
* @param tabPositions - Array of tab positions
|
|
30
|
+
* @returns Tab index, -1 for new terminal button, or null if no tab clicked
|
|
31
|
+
*/
|
|
32
|
+
export declare function findClickedTab(col: number, tabPositions: TabPosition[]): number | null;
|
|
33
|
+
//# sourceMappingURL=bar-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-render.d.ts","sourceRoot":"","sources":["../../src/terminal/bar-render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AA+BzC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,QAAQ,EAAE,EACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAgFjD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,IAAI,CAOtF"}
|