claude-code-plus-plus 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/index.js +5 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/start.js +4 -1
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/index.js +18 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/parser.js +8 -3
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/validators.js +30 -20
- package/dist/cli/validators.js.map +1 -1
- package/dist/config/defaults.js +10 -5
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.js +24 -4
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.js +29 -20
- package/dist/config/loader.js.map +1 -1
- package/dist/config/paths.js +30 -21
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schema.js +6 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/git/index.js +6 -1
- package/dist/git/index.js.map +1 -1
- package/dist/git/worktree.js +18 -13
- package/dist/git/worktree.js.map +1 -1
- package/dist/index.js +41 -6
- package/dist/index.js.map +1 -1
- package/dist/launcher/index.d.ts.map +1 -1
- package/dist/launcher/index.js +60 -26
- package/dist/launcher/index.js.map +1 -1
- package/dist/platform/clipboard.js +22 -15
- package/dist/platform/clipboard.js.map +1 -1
- package/dist/platform/detector.js +37 -22
- package/dist/platform/detector.js.map +1 -1
- package/dist/platform/index.js +42 -4
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/paths.js +61 -48
- package/dist/platform/paths.js.map +1 -1
- package/dist/platform/shell.js +35 -27
- package/dist/platform/shell.js.map +1 -1
- package/dist/sidebar/app.d.ts.map +1 -1
- package/dist/sidebar/app.js +73 -39
- package/dist/sidebar/app.js.map +1 -1
- package/dist/sidebar/index.js +4 -2
- package/dist/sidebar/index.js.map +1 -1
- package/dist/sidebar/input.js +12 -5
- package/dist/sidebar/input.js.map +1 -1
- package/dist/sidebar/render.js +102 -90
- package/dist/sidebar/render.js.map +1 -1
- package/dist/terminal/bar-handler.js +9 -7
- package/dist/terminal/bar-handler.js.map +1 -1
- package/dist/terminal/bar-render.js +6 -2
- package/dist/terminal/bar-render.js.map +1 -1
- package/dist/terminal/index.js +6 -1
- package/dist/terminal/index.js.map +1 -1
- package/dist/tmux/commands.js +18 -11
- package/dist/tmux/commands.js.map +1 -1
- package/dist/tmux/index.js +33 -7
- package/dist/tmux/index.js.map +1 -1
- package/dist/tmux/pane.js +76 -51
- package/dist/tmux/pane.js.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/async.js +16 -7
- package/dist/utils/async.js.map +1 -1
- package/dist/utils/errors.js +31 -14
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/id.js +19 -10
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/index.js +65 -6
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.js +17 -10
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/string.js +22 -10
- package/dist/utils/string.js.map +1 -1
- package/dist/utils/validation.js +28 -13
- package/dist/utils/validation.js.map +1 -1
- package/package.json +4 -4
- package/dist/app.d.ts +0 -52
- package/dist/app.d.ts.map +0 -1
- package/dist/app.js +0 -318
- package/dist/app.js.map +0 -1
- package/dist/core/index.d.ts +0 -14
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -14
- package/dist/core/index.js.map +0 -1
- package/dist/core/session/index.d.ts +0 -7
- package/dist/core/session/index.d.ts.map +0 -1
- package/dist/core/session/index.js +0 -6
- package/dist/core/session/index.js.map +0 -1
- package/dist/core/session/session-manager.d.ts +0 -46
- package/dist/core/session/session-manager.d.ts.map +0 -1
- package/dist/core/session/session-manager.js +0 -245
- package/dist/core/session/session-manager.js.map +0 -1
- package/dist/core/session/session.d.ts +0 -44
- package/dist/core/session/session.d.ts.map +0 -1
- package/dist/core/session/session.js +0 -78
- package/dist/core/session/session.js.map +0 -1
- package/dist/core/terminal/index.d.ts +0 -7
- package/dist/core/terminal/index.d.ts.map +0 -1
- package/dist/core/terminal/index.js +0 -6
- package/dist/core/terminal/index.js.map +0 -1
- package/dist/core/terminal/terminal-manager.d.ts +0 -36
- package/dist/core/terminal/terminal-manager.d.ts.map +0 -1
- package/dist/core/terminal/terminal-manager.js +0 -182
- package/dist/core/terminal/terminal-manager.js.map +0 -1
- package/dist/core/terminal/terminal.d.ts +0 -27
- package/dist/core/terminal/terminal.d.ts.map +0 -1
- package/dist/core/terminal/terminal.js +0 -38
- package/dist/core/terminal/terminal.js.map +0 -1
- package/dist/core/workspace/index.d.ts +0 -7
- package/dist/core/workspace/index.d.ts.map +0 -1
- package/dist/core/workspace/index.js +0 -6
- package/dist/core/workspace/index.js.map +0 -1
- package/dist/core/workspace/workspace-manager.d.ts +0 -59
- package/dist/core/workspace/workspace-manager.d.ts.map +0 -1
- package/dist/core/workspace/workspace-manager.js +0 -224
- package/dist/core/workspace/workspace-manager.js.map +0 -1
- package/dist/core/workspace/workspace.d.ts +0 -56
- package/dist/core/workspace/workspace.d.ts.map +0 -1
- package/dist/core/workspace/workspace.js +0 -96
- package/dist/core/workspace/workspace.js.map +0 -1
- package/dist/core/worktree/index.d.ts +0 -7
- package/dist/core/worktree/index.d.ts.map +0 -1
- package/dist/core/worktree/index.js +0 -6
- package/dist/core/worktree/index.js.map +0 -1
- package/dist/core/worktree/worktree-manager.d.ts +0 -47
- package/dist/core/worktree/worktree-manager.d.ts.map +0 -1
- package/dist/core/worktree/worktree-manager.js +0 -170
- package/dist/core/worktree/worktree-manager.js.map +0 -1
- package/dist/core/worktree/worktree.d.ts +0 -35
- package/dist/core/worktree/worktree.d.ts.map +0 -1
- package/dist/core/worktree/worktree.js +0 -50
- package/dist/core/worktree/worktree.js.map +0 -1
- package/dist/core/worktree-manager.d.ts +0 -26
- package/dist/core/worktree-manager.d.ts.map +0 -1
- package/dist/core/worktree-manager.js +0 -177
- package/dist/core/worktree-manager.js.map +0 -1
- package/dist/events/bus.d.ts +0 -76
- package/dist/events/bus.d.ts.map +0 -1
- package/dist/events/bus.js +0 -223
- package/dist/events/bus.js.map +0 -1
- package/dist/events/handlers/index.d.ts +0 -28
- package/dist/events/handlers/index.d.ts.map +0 -1
- package/dist/events/handlers/index.js +0 -44
- package/dist/events/handlers/index.js.map +0 -1
- package/dist/events/handlers/session-events.d.ts +0 -12
- package/dist/events/handlers/session-events.d.ts.map +0 -1
- package/dist/events/handlers/session-events.js +0 -38
- package/dist/events/handlers/session-events.js.map +0 -1
- package/dist/events/handlers/terminal-events.d.ts +0 -12
- package/dist/events/handlers/terminal-events.d.ts.map +0 -1
- package/dist/events/handlers/terminal-events.js +0 -37
- package/dist/events/handlers/terminal-events.js.map +0 -1
- package/dist/events/handlers/ui-events.d.ts +0 -11
- package/dist/events/handlers/ui-events.d.ts.map +0 -1
- package/dist/events/handlers/ui-events.js +0 -202
- package/dist/events/handlers/ui-events.js.map +0 -1
- package/dist/events/index.d.ts +0 -9
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/index.js +0 -10
- package/dist/events/index.js.map +0 -1
- package/dist/multiplexer/base.d.ts +0 -73
- package/dist/multiplexer/base.d.ts.map +0 -1
- package/dist/multiplexer/base.js +0 -68
- package/dist/multiplexer/base.js.map +0 -1
- package/dist/multiplexer/factory.d.ts +0 -28
- package/dist/multiplexer/factory.d.ts.map +0 -1
- package/dist/multiplexer/factory.js +0 -72
- package/dist/multiplexer/factory.js.map +0 -1
- package/dist/multiplexer/index.d.ts +0 -14
- package/dist/multiplexer/index.d.ts.map +0 -1
- package/dist/multiplexer/index.js +0 -15
- package/dist/multiplexer/index.js.map +0 -1
- package/dist/multiplexer/tmux/index.d.ts +0 -9
- package/dist/multiplexer/tmux/index.d.ts.map +0 -1
- package/dist/multiplexer/tmux/index.js +0 -7
- package/dist/multiplexer/tmux/index.js.map +0 -1
- package/dist/multiplexer/tmux/tmux-commands.d.ts +0 -96
- package/dist/multiplexer/tmux/tmux-commands.d.ts.map +0 -1
- package/dist/multiplexer/tmux/tmux-commands.js +0 -282
- package/dist/multiplexer/tmux/tmux-commands.js.map +0 -1
- package/dist/multiplexer/tmux/tmux-config.d.ts +0 -57
- package/dist/multiplexer/tmux/tmux-config.d.ts.map +0 -1
- package/dist/multiplexer/tmux/tmux-config.js +0 -103
- package/dist/multiplexer/tmux/tmux-config.js.map +0 -1
- package/dist/multiplexer/tmux/tmux-multiplexer.d.ts +0 -94
- package/dist/multiplexer/tmux/tmux-multiplexer.d.ts.map +0 -1
- package/dist/multiplexer/tmux/tmux-multiplexer.js +0 -302
- package/dist/multiplexer/tmux/tmux-multiplexer.js.map +0 -1
- package/dist/multiplexer/windows/index.d.ts +0 -5
- package/dist/multiplexer/windows/index.d.ts.map +0 -1
- package/dist/multiplexer/windows/index.js +0 -5
- package/dist/multiplexer/windows/index.js.map +0 -1
- package/dist/multiplexer/windows/windows-multiplexer.d.ts +0 -61
- package/dist/multiplexer/windows/windows-multiplexer.d.ts.map +0 -1
- package/dist/multiplexer/windows/windows-multiplexer.js +0 -151
- package/dist/multiplexer/windows/windows-multiplexer.js.map +0 -1
- package/dist/services/claude/claude-detector.d.ts +0 -37
- package/dist/services/claude/claude-detector.d.ts.map +0 -1
- package/dist/services/claude/claude-detector.js +0 -83
- package/dist/services/claude/claude-detector.js.map +0 -1
- package/dist/services/claude/claude-service.d.ts +0 -57
- package/dist/services/claude/claude-service.d.ts.map +0 -1
- package/dist/services/claude/claude-service.js +0 -108
- package/dist/services/claude/claude-service.js.map +0 -1
- package/dist/services/claude/index.d.ts +0 -7
- package/dist/services/claude/index.d.ts.map +0 -1
- package/dist/services/claude/index.js +0 -6
- package/dist/services/claude/index.js.map +0 -1
- package/dist/services/git/branch-service.d.ts +0 -64
- package/dist/services/git/branch-service.d.ts.map +0 -1
- package/dist/services/git/branch-service.js +0 -217
- package/dist/services/git/branch-service.js.map +0 -1
- package/dist/services/git/git-service.d.ts +0 -44
- package/dist/services/git/git-service.d.ts.map +0 -1
- package/dist/services/git/git-service.js +0 -145
- package/dist/services/git/git-service.js.map +0 -1
- package/dist/services/git/index.d.ts +0 -8
- package/dist/services/git/index.d.ts.map +0 -1
- package/dist/services/git/index.js +0 -7
- package/dist/services/git/index.js.map +0 -1
- package/dist/services/git/worktree-service.d.ts +0 -61
- package/dist/services/git/worktree-service.d.ts.map +0 -1
- package/dist/services/git/worktree-service.js +0 -243
- package/dist/services/git/worktree-service.js.map +0 -1
- package/dist/services/index.d.ts +0 -12
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/index.js +0 -12
- package/dist/services/index.js.map +0 -1
- package/dist/services/process/index.d.ts +0 -8
- package/dist/services/process/index.d.ts.map +0 -1
- package/dist/services/process/index.js +0 -6
- package/dist/services/process/index.js.map +0 -1
- package/dist/services/process/process-monitor.d.ts +0 -98
- package/dist/services/process/process-monitor.d.ts.map +0 -1
- package/dist/services/process/process-monitor.js +0 -173
- package/dist/services/process/process-monitor.js.map +0 -1
- package/dist/services/process/process-spawner.d.ts +0 -55
- package/dist/services/process/process-spawner.d.ts.map +0 -1
- package/dist/services/process/process-spawner.js +0 -93
- package/dist/services/process/process-spawner.js.map +0 -1
- package/dist/sidebar.d.ts +0 -13
- package/dist/sidebar.d.ts.map +0 -1
- package/dist/sidebar.js +0 -1535
- package/dist/sidebar.js.map +0 -1
- package/dist/state/actions.d.ts +0 -49
- package/dist/state/actions.d.ts.map +0 -1
- package/dist/state/actions.js +0 -512
- package/dist/state/actions.js.map +0 -1
- package/dist/state/index.d.ts +0 -16
- package/dist/state/index.d.ts.map +0 -1
- package/dist/state/index.js +0 -28
- package/dist/state/index.js.map +0 -1
- package/dist/state/middleware/index.d.ts +0 -7
- package/dist/state/middleware/index.d.ts.map +0 -1
- package/dist/state/middleware/index.js +0 -6
- package/dist/state/middleware/index.js.map +0 -1
- package/dist/state/middleware/logger.d.ts +0 -22
- package/dist/state/middleware/logger.d.ts.map +0 -1
- package/dist/state/middleware/logger.js +0 -45
- package/dist/state/middleware/logger.js.map +0 -1
- package/dist/state/middleware/persistence.d.ts +0 -29
- package/dist/state/middleware/persistence.d.ts.map +0 -1
- package/dist/state/middleware/persistence.js +0 -71
- package/dist/state/middleware/persistence.js.map +0 -1
- package/dist/state/persistence/file-adapter.d.ts +0 -48
- package/dist/state/persistence/file-adapter.d.ts.map +0 -1
- package/dist/state/persistence/file-adapter.js +0 -96
- package/dist/state/persistence/file-adapter.js.map +0 -1
- package/dist/state/persistence/index.d.ts +0 -8
- package/dist/state/persistence/index.d.ts.map +0 -1
- package/dist/state/persistence/index.js +0 -6
- package/dist/state/persistence/index.js.map +0 -1
- package/dist/state/persistence/serializer.d.ts +0 -41
- package/dist/state/persistence/serializer.d.ts.map +0 -1
- package/dist/state/persistence/serializer.js +0 -114
- package/dist/state/persistence/serializer.js.map +0 -1
- package/dist/state/selectors.d.ts +0 -67
- package/dist/state/selectors.d.ts.map +0 -1
- package/dist/state/selectors.js +0 -177
- package/dist/state/selectors.js.map +0 -1
- package/dist/state/store.d.ts +0 -86
- package/dist/state/store.d.ts.map +0 -1
- package/dist/state/store.js +0 -161
- package/dist/state/store.js.map +0 -1
- package/dist/state/types.d.ts +0 -269
- package/dist/state/types.d.ts.map +0 -1
- package/dist/state/types.js +0 -7
- package/dist/state/types.js.map +0 -1
- package/dist/state.d.ts +0 -53
- package/dist/state.d.ts.map +0 -1
- package/dist/state.js +0 -101
- package/dist/state.js.map +0 -1
- package/dist/terminal-manager.d.ts +0 -16
- package/dist/terminal-manager.d.ts.map +0 -1
- package/dist/terminal-manager.js +0 -364
- package/dist/terminal-manager.js.map +0 -1
- package/dist/tmux.d.ts +0 -163
- package/dist/tmux.d.ts.map +0 -1
- package/dist/tmux.js +0 -360
- package/dist/tmux.js.map +0 -1
- package/dist/types/config.d.ts +0 -103
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -7
- package/dist/types/config.js.map +0 -1
- package/dist/types/entities.d.ts +0 -88
- package/dist/types/entities.d.ts.map +0 -1
- package/dist/types/entities.js +0 -8
- package/dist/types/entities.js.map +0 -1
- package/dist/types/events.d.ts +0 -156
- package/dist/types/events.d.ts.map +0 -1
- package/dist/types/events.js +0 -8
- package/dist/types/events.js.map +0 -1
- package/dist/types/index.d.ts +0 -11
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -8
- package/dist/types/index.js.map +0 -1
- package/dist/types/multiplexer.d.ts +0 -238
- package/dist/types/multiplexer.d.ts.map +0 -1
- package/dist/types/multiplexer.js +0 -8
- package/dist/types/multiplexer.js.map +0 -1
- package/dist/ui/components/base.d.ts +0 -155
- package/dist/ui/components/base.d.ts.map +0 -1
- package/dist/ui/components/base.js +0 -269
- package/dist/ui/components/base.js.map +0 -1
- package/dist/ui/components/index.d.ts +0 -10
- package/dist/ui/components/index.d.ts.map +0 -1
- package/dist/ui/components/index.js +0 -10
- package/dist/ui/components/index.js.map +0 -1
- package/dist/ui/components/input-field.d.ts +0 -98
- package/dist/ui/components/input-field.d.ts.map +0 -1
- package/dist/ui/components/input-field.js +0 -274
- package/dist/ui/components/input-field.js.map +0 -1
- package/dist/ui/components/list.d.ts +0 -94
- package/dist/ui/components/list.d.ts.map +0 -1
- package/dist/ui/components/list.js +0 -294
- package/dist/ui/components/list.js.map +0 -1
- package/dist/ui/components/modal.d.ts +0 -83
- package/dist/ui/components/modal.d.ts.map +0 -1
- package/dist/ui/components/modal.js +0 -249
- package/dist/ui/components/modal.js.map +0 -1
- package/dist/ui/components/tabs.d.ts +0 -97
- package/dist/ui/components/tabs.d.ts.map +0 -1
- package/dist/ui/components/tabs.js +0 -252
- package/dist/ui/components/tabs.js.map +0 -1
- package/dist/ui/components/text.d.ts +0 -60
- package/dist/ui/components/text.d.ts.map +0 -1
- package/dist/ui/components/text.js +0 -224
- package/dist/ui/components/text.js.map +0 -1
- package/dist/ui/index.d.ts +0 -12
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js +0 -18
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/input/index.d.ts +0 -8
- package/dist/ui/input/index.d.ts.map +0 -1
- package/dist/ui/input/index.js +0 -8
- package/dist/ui/input/index.js.map +0 -1
- package/dist/ui/input/input-manager.d.ts +0 -83
- package/dist/ui/input/input-manager.d.ts.map +0 -1
- package/dist/ui/input/input-manager.js +0 -200
- package/dist/ui/input/input-manager.js.map +0 -1
- package/dist/ui/input/keybindings.d.ts +0 -47
- package/dist/ui/input/keybindings.d.ts.map +0 -1
- package/dist/ui/input/keybindings.js +0 -168
- package/dist/ui/input/keybindings.js.map +0 -1
- package/dist/ui/input/keyboard.d.ts +0 -24
- package/dist/ui/input/keyboard.d.ts.map +0 -1
- package/dist/ui/input/keyboard.js +0 -230
- package/dist/ui/input/keyboard.js.map +0 -1
- package/dist/ui/input/mouse.d.ts +0 -44
- package/dist/ui/input/mouse.d.ts.map +0 -1
- package/dist/ui/input/mouse.js +0 -161
- package/dist/ui/input/mouse.js.map +0 -1
- package/dist/ui/layout/box.d.ts +0 -63
- package/dist/ui/layout/box.d.ts.map +0 -1
- package/dist/ui/layout/box.js +0 -160
- package/dist/ui/layout/box.js.map +0 -1
- package/dist/ui/layout/constraints.d.ts +0 -77
- package/dist/ui/layout/constraints.d.ts.map +0 -1
- package/dist/ui/layout/constraints.js +0 -154
- package/dist/ui/layout/constraints.js.map +0 -1
- package/dist/ui/layout/flex.d.ts +0 -59
- package/dist/ui/layout/flex.d.ts.map +0 -1
- package/dist/ui/layout/flex.js +0 -163
- package/dist/ui/layout/flex.js.map +0 -1
- package/dist/ui/layout/index.d.ts +0 -7
- package/dist/ui/layout/index.d.ts.map +0 -1
- package/dist/ui/layout/index.js +0 -7
- package/dist/ui/layout/index.js.map +0 -1
- package/dist/ui/modals/delete-modal.d.ts +0 -27
- package/dist/ui/modals/delete-modal.d.ts.map +0 -1
- package/dist/ui/modals/delete-modal.js +0 -59
- package/dist/ui/modals/delete-modal.js.map +0 -1
- package/dist/ui/modals/index.d.ts +0 -7
- package/dist/ui/modals/index.d.ts.map +0 -1
- package/dist/ui/modals/index.js +0 -7
- package/dist/ui/modals/index.js.map +0 -1
- package/dist/ui/modals/input-modal.d.ts +0 -66
- package/dist/ui/modals/input-modal.d.ts.map +0 -1
- package/dist/ui/modals/input-modal.js +0 -185
- package/dist/ui/modals/input-modal.js.map +0 -1
- package/dist/ui/modals/quit-modal.d.ts +0 -30
- package/dist/ui/modals/quit-modal.d.ts.map +0 -1
- package/dist/ui/modals/quit-modal.js +0 -65
- package/dist/ui/modals/quit-modal.js.map +0 -1
- package/dist/ui/renderer/ansi.d.ts +0 -206
- package/dist/ui/renderer/ansi.d.ts.map +0 -1
- package/dist/ui/renderer/ansi.js +0 -318
- package/dist/ui/renderer/ansi.js.map +0 -1
- package/dist/ui/renderer/canvas.d.ts +0 -126
- package/dist/ui/renderer/canvas.d.ts.map +0 -1
- package/dist/ui/renderer/canvas.js +0 -346
- package/dist/ui/renderer/canvas.js.map +0 -1
- package/dist/ui/renderer/colors.d.ts +0 -65
- package/dist/ui/renderer/colors.d.ts.map +0 -1
- package/dist/ui/renderer/colors.js +0 -260
- package/dist/ui/renderer/colors.js.map +0 -1
- package/dist/ui/renderer/index.d.ts +0 -8
- package/dist/ui/renderer/index.d.ts.map +0 -1
- package/dist/ui/renderer/index.js +0 -8
- package/dist/ui/renderer/index.js.map +0 -1
- package/dist/ui/renderer/symbols.d.ts +0 -176
- package/dist/ui/renderer/symbols.d.ts.map +0 -1
- package/dist/ui/renderer/symbols.js +0 -246
- package/dist/ui/renderer/symbols.js.map +0 -1
- package/dist/ui/views/index.d.ts +0 -7
- package/dist/ui/views/index.d.ts.map +0 -1
- package/dist/ui/views/index.js +0 -7
- package/dist/ui/views/index.js.map +0 -1
- package/dist/ui/views/sidebar-view.d.ts +0 -89
- package/dist/ui/views/sidebar-view.d.ts.map +0 -1
- package/dist/ui/views/sidebar-view.js +0 -259
- package/dist/ui/views/sidebar-view.js.map +0 -1
- package/dist/ui/views/terminal-bar-view.d.ts +0 -67
- package/dist/ui/views/terminal-bar-view.d.ts.map +0 -1
- package/dist/ui/views/terminal-bar-view.js +0 -172
- package/dist/ui/views/terminal-bar-view.js.map +0 -1
- package/dist/ui/views/welcome-view.d.ts +0 -34
- package/dist/ui/views/welcome-view.d.ts.map +0 -1
- package/dist/ui/views/welcome-view.js +0 -116
- package/dist/ui/views/welcome-view.js.map +0 -1
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Terminal Manager
|
|
3
|
-
*
|
|
4
|
-
* Manages the lifecycle of terminal panes within sessions.
|
|
5
|
-
*/
|
|
6
|
-
import { getLogger, TerminalError } from '../../utils';
|
|
7
|
-
import { getEventBus } from '../../events';
|
|
8
|
-
import { getStore, actions, selectSessionById } from '../../state';
|
|
9
|
-
import { createTerminal, generateTerminalTitle } from './terminal';
|
|
10
|
-
const logger = getLogger().child('terminal-manager');
|
|
11
|
-
/**
|
|
12
|
-
* Terminal manager class
|
|
13
|
-
*/
|
|
14
|
-
export class TerminalManager {
|
|
15
|
-
multiplexer;
|
|
16
|
-
constructor(multiplexer) {
|
|
17
|
-
this.multiplexer = multiplexer;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Create a new terminal for a session
|
|
21
|
-
*/
|
|
22
|
-
async create(sessionId, worktreePath, options = {}) {
|
|
23
|
-
const store = getStore();
|
|
24
|
-
const eventBus = getEventBus();
|
|
25
|
-
const state = store.getState();
|
|
26
|
-
// Find session
|
|
27
|
-
const session = selectSessionById(state, sessionId);
|
|
28
|
-
if (!session) {
|
|
29
|
-
throw new TerminalError('Session not found', { terminalId: sessionId });
|
|
30
|
-
}
|
|
31
|
-
const terminalNumber = session.terminals.length + 1;
|
|
32
|
-
const title = options.title ?? generateTerminalTitle(terminalNumber);
|
|
33
|
-
logger.debug('Creating terminal', { sessionId, title });
|
|
34
|
-
// Determine where to split from
|
|
35
|
-
let targetPaneId = null;
|
|
36
|
-
if (session.terminals.length === 0) {
|
|
37
|
-
// First terminal - split from main pane
|
|
38
|
-
targetPaneId = session.panes.main;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
// Additional terminal - split from current active terminal
|
|
42
|
-
const activeTerminal = session.terminals[session.activeTerminalIndex];
|
|
43
|
-
targetPaneId = activeTerminal?.paneId ?? session.panes.main;
|
|
44
|
-
}
|
|
45
|
-
if (!targetPaneId) {
|
|
46
|
-
throw new TerminalError('No pane available to split from');
|
|
47
|
-
}
|
|
48
|
-
// Create the terminal pane
|
|
49
|
-
const paneId = await this.multiplexer.createPane({
|
|
50
|
-
targetPaneId,
|
|
51
|
-
orientation: 'vertical',
|
|
52
|
-
size: session.terminals.length === 0 ? { percent: 30 } : { percent: 50 },
|
|
53
|
-
cwd: worktreePath,
|
|
54
|
-
});
|
|
55
|
-
// Create terminal entity
|
|
56
|
-
const terminal = createTerminal({
|
|
57
|
-
sessionId,
|
|
58
|
-
title,
|
|
59
|
-
paneId,
|
|
60
|
-
});
|
|
61
|
-
// If this is not the first terminal, hide the previously active one
|
|
62
|
-
if (session.terminals.length > 0) {
|
|
63
|
-
const activeTerminal = session.terminals[session.activeTerminalIndex];
|
|
64
|
-
if (activeTerminal?.paneId) {
|
|
65
|
-
await this.multiplexer.hidePane(activeTerminal.paneId);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
// Update state
|
|
69
|
-
store.dispatch(actions.createTerminal(sessionId, terminal));
|
|
70
|
-
store.dispatch(actions.activateTerminal(sessionId, session.terminals.length));
|
|
71
|
-
// Emit event
|
|
72
|
-
eventBus.emit('terminal:created', { terminal, sessionId });
|
|
73
|
-
logger.debug('Terminal created', { terminalId: terminal.id });
|
|
74
|
-
return terminal;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Delete a terminal
|
|
78
|
-
*/
|
|
79
|
-
async delete(sessionId, terminalId) {
|
|
80
|
-
const store = getStore();
|
|
81
|
-
const eventBus = getEventBus();
|
|
82
|
-
const state = store.getState();
|
|
83
|
-
// Find session and terminal
|
|
84
|
-
const session = selectSessionById(state, sessionId);
|
|
85
|
-
if (!session) {
|
|
86
|
-
throw new TerminalError('Session not found');
|
|
87
|
-
}
|
|
88
|
-
const terminalIndex = session.terminals.findIndex((t) => t.id === terminalId);
|
|
89
|
-
const terminal = session.terminals[terminalIndex];
|
|
90
|
-
if (!terminal) {
|
|
91
|
-
throw new TerminalError('Terminal not found', { terminalId });
|
|
92
|
-
}
|
|
93
|
-
logger.debug('Deleting terminal', { sessionId, terminalId });
|
|
94
|
-
// Kill the pane
|
|
95
|
-
if (terminal.paneId) {
|
|
96
|
-
try {
|
|
97
|
-
await this.multiplexer.destroyPane(terminal.paneId);
|
|
98
|
-
}
|
|
99
|
-
catch {
|
|
100
|
-
// Pane may already be gone
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// If deleting the active terminal, switch to another one
|
|
104
|
-
if (terminalIndex === session.activeTerminalIndex && session.terminals.length > 1) {
|
|
105
|
-
const newIndex = terminalIndex === 0 ? 1 : terminalIndex - 1;
|
|
106
|
-
const newTerminal = session.terminals[newIndex];
|
|
107
|
-
if (newTerminal?.paneId) {
|
|
108
|
-
// Show the new terminal
|
|
109
|
-
// This will be handled after state update
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Update state
|
|
113
|
-
store.dispatch(actions.deleteTerminal(sessionId, terminalId));
|
|
114
|
-
// Emit event
|
|
115
|
-
eventBus.emit('terminal:deleted', { terminalId, sessionId });
|
|
116
|
-
logger.debug('Terminal deleted', { terminalId });
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Switch to a terminal
|
|
120
|
-
*/
|
|
121
|
-
async activate(sessionId, terminalIndex, targetPaneId) {
|
|
122
|
-
const store = getStore();
|
|
123
|
-
const eventBus = getEventBus();
|
|
124
|
-
const state = store.getState();
|
|
125
|
-
const session = selectSessionById(state, sessionId);
|
|
126
|
-
if (!session) {
|
|
127
|
-
throw new TerminalError('Session not found');
|
|
128
|
-
}
|
|
129
|
-
const terminal = session.terminals[terminalIndex];
|
|
130
|
-
if (!terminal) {
|
|
131
|
-
throw new TerminalError('Terminal not found');
|
|
132
|
-
}
|
|
133
|
-
const previousIndex = session.activeTerminalIndex;
|
|
134
|
-
const previousTerminal = session.terminals[previousIndex];
|
|
135
|
-
logger.debug('Activating terminal', { sessionId, terminalIndex });
|
|
136
|
-
// Hide the current terminal
|
|
137
|
-
if (previousTerminal?.paneId && previousIndex !== terminalIndex) {
|
|
138
|
-
await this.multiplexer.hidePane(previousTerminal.paneId);
|
|
139
|
-
}
|
|
140
|
-
// Show the new terminal
|
|
141
|
-
if (terminal.paneId) {
|
|
142
|
-
await this.multiplexer.showPane({
|
|
143
|
-
paneId: terminal.paneId,
|
|
144
|
-
targetPaneId,
|
|
145
|
-
direction: 'down',
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
// Update state
|
|
149
|
-
store.dispatch(actions.activateTerminal(sessionId, terminalIndex));
|
|
150
|
-
// Emit event
|
|
151
|
-
eventBus.emit('terminal:activated', {
|
|
152
|
-
terminalId: terminal.id,
|
|
153
|
-
sessionId,
|
|
154
|
-
previousTerminalId: previousTerminal?.id ?? null,
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Rename a terminal
|
|
159
|
-
*/
|
|
160
|
-
rename(sessionId, terminalId, title) {
|
|
161
|
-
const store = getStore();
|
|
162
|
-
const eventBus = getEventBus();
|
|
163
|
-
const state = store.getState();
|
|
164
|
-
const session = selectSessionById(state, sessionId);
|
|
165
|
-
const terminal = session?.terminals.find((t) => t.id === terminalId);
|
|
166
|
-
const oldTitle = terminal?.title ?? '';
|
|
167
|
-
logger.debug('Renaming terminal', { terminalId, oldTitle, newTitle: title });
|
|
168
|
-
store.dispatch(actions.renameTerminal(sessionId, terminalId, title));
|
|
169
|
-
eventBus.emit('terminal:renamed', {
|
|
170
|
-
terminalId,
|
|
171
|
-
oldTitle,
|
|
172
|
-
newTitle: title,
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Create a terminal manager
|
|
178
|
-
*/
|
|
179
|
-
export function createTerminalManager(multiplexer) {
|
|
180
|
-
return new TerminalManager(multiplexer);
|
|
181
|
-
}
|
|
182
|
-
//# sourceMappingURL=terminal-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../../src/core/terminal/terminal-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Terminal Entity
|
|
3
|
-
*
|
|
4
|
-
* Factory functions for creating Terminal objects.
|
|
5
|
-
*/
|
|
6
|
-
import type { Terminal } from '../../types';
|
|
7
|
-
/**
|
|
8
|
-
* Options for creating a new terminal
|
|
9
|
-
*/
|
|
10
|
-
export interface CreateTerminalOptions {
|
|
11
|
-
sessionId: string;
|
|
12
|
-
title?: string;
|
|
13
|
-
paneId?: string;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Create a new terminal
|
|
17
|
-
*/
|
|
18
|
-
export declare function createTerminal(options: CreateTerminalOptions): Terminal;
|
|
19
|
-
/**
|
|
20
|
-
* Generate a default terminal title based on count
|
|
21
|
-
*/
|
|
22
|
-
export declare function generateTerminalTitle(terminalNumber: number): string;
|
|
23
|
-
/**
|
|
24
|
-
* Clone a terminal with a new ID
|
|
25
|
-
*/
|
|
26
|
-
export declare function cloneTerminal(terminal: Terminal, overrides?: Partial<Terminal>): Terminal;
|
|
27
|
-
//# sourceMappingURL=terminal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../../src/core/terminal/terminal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,QAAQ,CAUvE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,EAClB,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAC5B,QAAQ,CAQV"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Terminal Entity
|
|
3
|
-
*
|
|
4
|
-
* Factory functions for creating Terminal objects.
|
|
5
|
-
*/
|
|
6
|
-
import { generateId } from '../../utils';
|
|
7
|
-
/**
|
|
8
|
-
* Create a new terminal
|
|
9
|
-
*/
|
|
10
|
-
export function createTerminal(options) {
|
|
11
|
-
const { sessionId, title, paneId } = options;
|
|
12
|
-
return {
|
|
13
|
-
id: generateId(8),
|
|
14
|
-
sessionId,
|
|
15
|
-
paneId: paneId ?? null,
|
|
16
|
-
title: title ?? 'Terminal',
|
|
17
|
-
createdAt: new Date(),
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Generate a default terminal title based on count
|
|
22
|
-
*/
|
|
23
|
-
export function generateTerminalTitle(terminalNumber) {
|
|
24
|
-
return `Terminal ${terminalNumber}`;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Clone a terminal with a new ID
|
|
28
|
-
*/
|
|
29
|
-
export function cloneTerminal(terminal, overrides) {
|
|
30
|
-
return {
|
|
31
|
-
...terminal,
|
|
32
|
-
id: generateId(8),
|
|
33
|
-
createdAt: new Date(),
|
|
34
|
-
paneId: null,
|
|
35
|
-
...overrides,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=terminal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/core/terminal/terminal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAWzC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC3D,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE7C,OAAO;QACL,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QACjB,SAAS;QACT,MAAM,EAAE,MAAM,IAAI,IAAI;QACtB,KAAK,EAAE,KAAK,IAAI,UAAU;QAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,cAAsB;IAC1D,OAAO,YAAY,cAAc,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAkB,EAClB,SAA6B;IAE7B,OAAO;QACL,GAAG,QAAQ;QACX,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QACjB,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,MAAM,EAAE,IAAI;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workspace Module
|
|
3
|
-
*/
|
|
4
|
-
export { createWorkspace, addWorktreeToWorkspace, removeWorktreeFromWorkspace, getActiveSession, getMainWorktree, getAllSessions, getTotalSessionCount, findWorktreeBySessionId, findWorktreeByBranch, findWorktreeById, } from './workspace';
|
|
5
|
-
export type { CreateWorkspaceOptions } from './workspace';
|
|
6
|
-
export { WorkspaceManager, createWorkspaceManager } from './workspace-manager';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/workspace/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,2BAA2B,EAC3B,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workspace Module
|
|
3
|
-
*/
|
|
4
|
-
export { createWorkspace, addWorktreeToWorkspace, removeWorktreeFromWorkspace, getActiveSession, getMainWorktree, getAllSessions, getTotalSessionCount, findWorktreeBySessionId, findWorktreeByBranch, findWorktreeById, } from './workspace';
|
|
5
|
-
export { WorkspaceManager, createWorkspaceManager } from './workspace-manager';
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/workspace/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,2BAA2B,EAC3B,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workspace Manager
|
|
3
|
-
*
|
|
4
|
-
* Manages the lifecycle of workspaces and coordinates between
|
|
5
|
-
* worktrees, sessions, and terminals.
|
|
6
|
-
*/
|
|
7
|
-
import type { Workspace, Worktree, Session, IMultiplexer } from '../../types';
|
|
8
|
-
/**
|
|
9
|
-
* Workspace manager class
|
|
10
|
-
*/
|
|
11
|
-
export declare class WorkspaceManager {
|
|
12
|
-
private multiplexer;
|
|
13
|
-
private worktreesBasePath;
|
|
14
|
-
constructor(multiplexer: IMultiplexer, worktreesBasePath: string);
|
|
15
|
-
/**
|
|
16
|
-
* Initialize workspace for a repository
|
|
17
|
-
*/
|
|
18
|
-
initialize(projectPath: string, multiplexerSessionId: string): Promise<Workspace>;
|
|
19
|
-
/**
|
|
20
|
-
* Get the current workspace
|
|
21
|
-
*/
|
|
22
|
-
getWorkspace(): Workspace | null;
|
|
23
|
-
/**
|
|
24
|
-
* Get the main worktree
|
|
25
|
-
*/
|
|
26
|
-
getMainWorktree(): Worktree | undefined;
|
|
27
|
-
/**
|
|
28
|
-
* Get worktree by ID
|
|
29
|
-
*/
|
|
30
|
-
getWorktreeById(worktreeId: string): Worktree | undefined;
|
|
31
|
-
/**
|
|
32
|
-
* Switch to a different session
|
|
33
|
-
*/
|
|
34
|
-
switchSession(sessionId: string, sidebarPaneId: string): Promise<void>;
|
|
35
|
-
/**
|
|
36
|
-
* Create a new worktree with a session
|
|
37
|
-
*/
|
|
38
|
-
createWorktreeWithSession(branch: string, sidebarPaneId: string, sessionTitle?: string): Promise<{
|
|
39
|
-
worktree: Worktree;
|
|
40
|
-
session: Session;
|
|
41
|
-
}>;
|
|
42
|
-
/**
|
|
43
|
-
* Delete a worktree and all its sessions
|
|
44
|
-
*/
|
|
45
|
-
deleteWorktree(worktreeId: string): Promise<void>;
|
|
46
|
-
/**
|
|
47
|
-
* Create a session in a worktree
|
|
48
|
-
*/
|
|
49
|
-
createSession(worktreeId: string, sidebarPaneId: string, title?: string): Promise<Session>;
|
|
50
|
-
/**
|
|
51
|
-
* Clean up and shutdown workspace
|
|
52
|
-
*/
|
|
53
|
-
shutdown(reason?: 'user' | 'error' | 'detach'): Promise<void>;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Create a workspace manager
|
|
57
|
-
*/
|
|
58
|
-
export declare function createWorkspaceManager(multiplexer: IMultiplexer, worktreesBasePath: string): WorkspaceManager;
|
|
59
|
-
//# sourceMappingURL=workspace-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-manager.d.ts","sourceRoot":"","sources":["../../../src/core/workspace/workspace-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY9E;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM;IAKhE;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAwCvF;;OAEG;IACH,YAAY,IAAI,SAAS,GAAG,IAAI;IAKhC;;OAEG;IACH,eAAe,IAAI,QAAQ,GAAG,SAAS;IAKvC;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAMzD;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B5E;;OAEG;IACG,yBAAyB,CAC7B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAoCpD;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCvD;;OAEG;IACG,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;IA0BnB;;OAEG;IACG,QAAQ,CAAC,MAAM,GAAE,MAAM,GAAG,OAAO,GAAG,QAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAsC5E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,YAAY,EACzB,iBAAiB,EAAE,MAAM,GACxB,gBAAgB,CAElB"}
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workspace Manager
|
|
3
|
-
*
|
|
4
|
-
* Manages the lifecycle of workspaces and coordinates between
|
|
5
|
-
* worktrees, sessions, and terminals.
|
|
6
|
-
*/
|
|
7
|
-
import { getLogger, AppError, WorktreeError, NotFoundError } from '../../utils';
|
|
8
|
-
import { getEventBus } from '../../events';
|
|
9
|
-
import { getStore, actions, selectWorkspace, selectMainWorktree, selectSessionById } from '../../state';
|
|
10
|
-
import { getGitService, getWorktreeService } from '../../services';
|
|
11
|
-
import { createWorkspace, findWorktreeById } from './workspace';
|
|
12
|
-
import { createWorktreeManager, worktreesFromInfoList } from '../worktree';
|
|
13
|
-
import { createSessionManager } from '../session';
|
|
14
|
-
import { createTerminalManager } from '../terminal';
|
|
15
|
-
const logger = getLogger().child('workspace-manager');
|
|
16
|
-
/**
|
|
17
|
-
* Workspace manager class
|
|
18
|
-
*/
|
|
19
|
-
export class WorkspaceManager {
|
|
20
|
-
multiplexer;
|
|
21
|
-
worktreesBasePath;
|
|
22
|
-
constructor(multiplexer, worktreesBasePath) {
|
|
23
|
-
this.multiplexer = multiplexer;
|
|
24
|
-
this.worktreesBasePath = worktreesBasePath;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Initialize workspace for a repository
|
|
28
|
-
*/
|
|
29
|
-
async initialize(projectPath, multiplexerSessionId) {
|
|
30
|
-
const eventBus = getEventBus();
|
|
31
|
-
const store = getStore();
|
|
32
|
-
const gitService = getGitService();
|
|
33
|
-
const worktreeService = getWorktreeService();
|
|
34
|
-
logger.info('Initializing workspace', { projectPath });
|
|
35
|
-
// Validate repository
|
|
36
|
-
if (!gitService.isGitRepository(projectPath)) {
|
|
37
|
-
throw new AppError(`Not a git repository: ${projectPath}`, 'INVALID_REPOSITORY');
|
|
38
|
-
}
|
|
39
|
-
// Create workspace
|
|
40
|
-
const workspace = createWorkspace({
|
|
41
|
-
projectPath,
|
|
42
|
-
multiplexerSessionId,
|
|
43
|
-
});
|
|
44
|
-
// Load existing worktrees
|
|
45
|
-
const worktreeInfos = worktreeService.list(projectPath);
|
|
46
|
-
const worktrees = worktreesFromInfoList(worktreeInfos);
|
|
47
|
-
// Update workspace with worktrees
|
|
48
|
-
workspace.worktrees = worktrees;
|
|
49
|
-
// Update state
|
|
50
|
-
store.dispatch(actions.loadWorkspace(workspace));
|
|
51
|
-
// Emit event
|
|
52
|
-
eventBus.emit('workspace:loaded', { workspace });
|
|
53
|
-
logger.info('Workspace initialized', {
|
|
54
|
-
workspaceId: workspace.id,
|
|
55
|
-
worktreeCount: worktrees.length,
|
|
56
|
-
});
|
|
57
|
-
return workspace;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Get the current workspace
|
|
61
|
-
*/
|
|
62
|
-
getWorkspace() {
|
|
63
|
-
const state = getStore().getState();
|
|
64
|
-
return selectWorkspace(state);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Get the main worktree
|
|
68
|
-
*/
|
|
69
|
-
getMainWorktree() {
|
|
70
|
-
const state = getStore().getState();
|
|
71
|
-
return selectMainWorktree(state);
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Get worktree by ID
|
|
75
|
-
*/
|
|
76
|
-
getWorktreeById(worktreeId) {
|
|
77
|
-
const workspace = this.getWorkspace();
|
|
78
|
-
if (!workspace)
|
|
79
|
-
return undefined;
|
|
80
|
-
return findWorktreeById(workspace, worktreeId);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Switch to a different session
|
|
84
|
-
*/
|
|
85
|
-
async switchSession(sessionId, sidebarPaneId) {
|
|
86
|
-
const eventBus = getEventBus();
|
|
87
|
-
const store = getStore();
|
|
88
|
-
const state = store.getState();
|
|
89
|
-
const workspace = selectWorkspace(state);
|
|
90
|
-
if (!workspace) {
|
|
91
|
-
throw new AppError('No workspace initialized', 'NO_WORKSPACE');
|
|
92
|
-
}
|
|
93
|
-
const session = selectSessionById(state, sessionId);
|
|
94
|
-
if (!session) {
|
|
95
|
-
throw new NotFoundError('Session', sessionId);
|
|
96
|
-
}
|
|
97
|
-
const previousSessionId = workspace.activeSessionId;
|
|
98
|
-
logger.debug('Switching session', { from: previousSessionId, to: sessionId });
|
|
99
|
-
// Use session manager to handle the switch
|
|
100
|
-
const sessionManager = createSessionManager(this.multiplexer);
|
|
101
|
-
await sessionManager.activate(sessionId, sidebarPaneId);
|
|
102
|
-
// Emit event
|
|
103
|
-
eventBus.emit('session:activated', {
|
|
104
|
-
sessionId,
|
|
105
|
-
previousSessionId,
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Create a new worktree with a session
|
|
110
|
-
*/
|
|
111
|
-
async createWorktreeWithSession(branch, sidebarPaneId, sessionTitle) {
|
|
112
|
-
const workspace = this.getWorkspace();
|
|
113
|
-
if (!workspace) {
|
|
114
|
-
throw new AppError('No workspace initialized', 'NO_WORKSPACE');
|
|
115
|
-
}
|
|
116
|
-
// Create worktree manager
|
|
117
|
-
const worktreeManager = createWorktreeManager(workspace.projectPath, this.worktreesBasePath);
|
|
118
|
-
// Create the worktree
|
|
119
|
-
const worktree = await worktreeManager.create(branch);
|
|
120
|
-
// Create session manager and terminal manager
|
|
121
|
-
const sessionManager = createSessionManager(this.multiplexer);
|
|
122
|
-
const terminalManager = createTerminalManager(this.multiplexer);
|
|
123
|
-
// Create initial session
|
|
124
|
-
const session = await sessionManager.create(worktree.id, worktree.path, branch, {
|
|
125
|
-
title: sessionTitle,
|
|
126
|
-
targetPaneId: sidebarPaneId,
|
|
127
|
-
});
|
|
128
|
-
// Create initial terminal for the session
|
|
129
|
-
await terminalManager.create(session.id, worktree.path);
|
|
130
|
-
return { worktree, session };
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Delete a worktree and all its sessions
|
|
134
|
-
*/
|
|
135
|
-
async deleteWorktree(worktreeId) {
|
|
136
|
-
const workspace = this.getWorkspace();
|
|
137
|
-
if (!workspace) {
|
|
138
|
-
throw new AppError('No workspace initialized', 'NO_WORKSPACE');
|
|
139
|
-
}
|
|
140
|
-
const worktree = findWorktreeById(workspace, worktreeId);
|
|
141
|
-
if (!worktree) {
|
|
142
|
-
throw new NotFoundError('Worktree', worktreeId);
|
|
143
|
-
}
|
|
144
|
-
if (worktree.isMain) {
|
|
145
|
-
throw new WorktreeError('Cannot delete main worktree');
|
|
146
|
-
}
|
|
147
|
-
logger.debug('Deleting worktree', { worktreeId, sessionCount: worktree.sessions.length });
|
|
148
|
-
// Delete all sessions in the worktree
|
|
149
|
-
const sessionManager = createSessionManager(this.multiplexer);
|
|
150
|
-
for (const session of worktree.sessions) {
|
|
151
|
-
await sessionManager.delete(session.id);
|
|
152
|
-
}
|
|
153
|
-
// Delete the worktree
|
|
154
|
-
const worktreeManager = createWorktreeManager(workspace.projectPath, this.worktreesBasePath);
|
|
155
|
-
await worktreeManager.delete(worktreeId);
|
|
156
|
-
// If the active session was in this worktree, clear it
|
|
157
|
-
if (worktree.sessions.some((s) => s.id === workspace.activeSessionId)) {
|
|
158
|
-
const store = getStore();
|
|
159
|
-
store.dispatch(actions.activateSession(''));
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Create a session in a worktree
|
|
164
|
-
*/
|
|
165
|
-
async createSession(worktreeId, sidebarPaneId, title) {
|
|
166
|
-
const worktree = this.getWorktreeById(worktreeId);
|
|
167
|
-
if (!worktree) {
|
|
168
|
-
throw new NotFoundError('Worktree', worktreeId);
|
|
169
|
-
}
|
|
170
|
-
const sessionManager = createSessionManager(this.multiplexer);
|
|
171
|
-
const terminalManager = createTerminalManager(this.multiplexer);
|
|
172
|
-
// Create session
|
|
173
|
-
const session = await sessionManager.create(worktreeId, worktree.path, worktree.branch, {
|
|
174
|
-
title,
|
|
175
|
-
targetPaneId: sidebarPaneId,
|
|
176
|
-
});
|
|
177
|
-
// Create initial terminal
|
|
178
|
-
await terminalManager.create(session.id, worktree.path);
|
|
179
|
-
return session;
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Clean up and shutdown workspace
|
|
183
|
-
*/
|
|
184
|
-
async shutdown(reason = 'user') {
|
|
185
|
-
const eventBus = getEventBus();
|
|
186
|
-
const store = getStore();
|
|
187
|
-
const workspace = this.getWorkspace();
|
|
188
|
-
if (!workspace) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
logger.info('Shutting down workspace', { workspaceId: workspace.id });
|
|
192
|
-
// Emit shutdown event
|
|
193
|
-
eventBus.emit('app:shutdown', { reason });
|
|
194
|
-
// Clean up tmux sessions
|
|
195
|
-
const sessionManager = createSessionManager(this.multiplexer);
|
|
196
|
-
for (const worktree of workspace.worktrees) {
|
|
197
|
-
for (const session of worktree.sessions) {
|
|
198
|
-
try {
|
|
199
|
-
await sessionManager.delete(session.id);
|
|
200
|
-
}
|
|
201
|
-
catch {
|
|
202
|
-
// Ignore errors during shutdown
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
// Clear state
|
|
207
|
-
store.dispatch(actions.loadWorkspace({
|
|
208
|
-
id: '',
|
|
209
|
-
projectPath: '',
|
|
210
|
-
projectName: '',
|
|
211
|
-
multiplexerSessionId: '',
|
|
212
|
-
worktrees: [],
|
|
213
|
-
activeSessionId: null,
|
|
214
|
-
}));
|
|
215
|
-
logger.info('Workspace shutdown complete');
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Create a workspace manager
|
|
220
|
-
*/
|
|
221
|
-
export function createWorkspaceManager(multiplexer, worktreesBasePath) {
|
|
222
|
-
return new WorkspaceManager(multiplexer, worktreesBasePath);
|
|
223
|
-
}
|
|
224
|
-
//# sourceMappingURL=workspace-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-manager.js","sourceRoot":"","sources":["../../../src/core/workspace/workspace-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workspace Entity
|
|
3
|
-
*
|
|
4
|
-
* Factory functions for creating Workspace objects.
|
|
5
|
-
* A workspace represents the entire application state for a repository.
|
|
6
|
-
*/
|
|
7
|
-
import type { Workspace, Worktree, Session } from '../../types';
|
|
8
|
-
/**
|
|
9
|
-
* Options for creating a new workspace
|
|
10
|
-
*/
|
|
11
|
-
export interface CreateWorkspaceOptions {
|
|
12
|
-
projectPath: string;
|
|
13
|
-
projectName?: string;
|
|
14
|
-
multiplexerSessionId?: string;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create a new workspace
|
|
18
|
-
*/
|
|
19
|
-
export declare function createWorkspace(options: CreateWorkspaceOptions): Workspace;
|
|
20
|
-
/**
|
|
21
|
-
* Add a worktree to workspace
|
|
22
|
-
*/
|
|
23
|
-
export declare function addWorktreeToWorkspace(workspace: Workspace, worktree: Worktree): Workspace;
|
|
24
|
-
/**
|
|
25
|
-
* Remove a worktree from workspace
|
|
26
|
-
*/
|
|
27
|
-
export declare function removeWorktreeFromWorkspace(workspace: Workspace, worktreeId: string): Workspace;
|
|
28
|
-
/**
|
|
29
|
-
* Get the active session from workspace
|
|
30
|
-
*/
|
|
31
|
-
export declare function getActiveSession(workspace: Workspace): Session | undefined;
|
|
32
|
-
/**
|
|
33
|
-
* Get the main worktree from workspace
|
|
34
|
-
*/
|
|
35
|
-
export declare function getMainWorktree(workspace: Workspace): Worktree | undefined;
|
|
36
|
-
/**
|
|
37
|
-
* Get all sessions across all worktrees
|
|
38
|
-
*/
|
|
39
|
-
export declare function getAllSessions(workspace: Workspace): Session[];
|
|
40
|
-
/**
|
|
41
|
-
* Get total session count
|
|
42
|
-
*/
|
|
43
|
-
export declare function getTotalSessionCount(workspace: Workspace): number;
|
|
44
|
-
/**
|
|
45
|
-
* Find worktree containing a session
|
|
46
|
-
*/
|
|
47
|
-
export declare function findWorktreeBySessionId(workspace: Workspace, sessionId: string): Worktree | undefined;
|
|
48
|
-
/**
|
|
49
|
-
* Find worktree by branch name
|
|
50
|
-
*/
|
|
51
|
-
export declare function findWorktreeByBranch(workspace: Workspace, branch: string): Worktree | undefined;
|
|
52
|
-
/**
|
|
53
|
-
* Find worktree by ID
|
|
54
|
-
*/
|
|
55
|
-
export declare function findWorktreeById(workspace: Workspace, worktreeId: string): Worktree | undefined;
|
|
56
|
-
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/core/workspace/workspace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGhE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAW1E;AAUD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,GACjB,SAAS,CAKX;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,GACjB,SAAS,CAKX;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAO1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAE1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,GAChB,QAAQ,GAAG,SAAS,CAItB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,QAAQ,GAAG,SAAS,CAEtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,GACjB,QAAQ,GAAG,SAAS,CAEtB"}
|