gitspace 0.2.0-rc.20 → 0.2.0-rc.21
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/package.json +11 -6
- package/.claude/settings.local.json +0 -10
- package/.gitspace/bundle.json +0 -50
- package/.gitspace/events.json +0 -11
- package/.gitspace/processes.json +0 -23
- package/.gitspace/scripts/select/01-status.sh +0 -39
- package/.gitspace/scripts/setup/01-install-deps.sh +0 -12
- package/.gitspace/scripts/setup/02-typecheck.sh +0 -16
- package/AGENTS.md +0 -469
- package/CLAUDE.md +0 -1
- package/bun.lock +0 -794
- package/docs/CONNECTION.md +0 -623
- package/docs/GATEWAY-WORKER.md +0 -319
- package/docs/GETTING-STARTED.md +0 -448
- package/docs/GITSPACE-PLATFORM.md +0 -1819
- package/docs/INFRASTRUCTURE.md +0 -1347
- package/docs/PROTOCOL.md +0 -619
- package/docs/QUICKSTART.md +0 -183
- package/docs/RELAY.md +0 -327
- package/docs/REMOTE-DESIGN.md +0 -554
- package/docs/ROADMAP.md +0 -564
- package/docs/SITE_DOCS_FIGMA_MAKE.md +0 -1176
- package/docs/STACK-DESIGN.md +0 -588
- package/docs/UNIFIED_ARCHITECTURE.md +0 -138
- package/experiments/pty-benchmark.ts +0 -148
- package/experiments/pty-latency.ts +0 -100
- package/experiments/router/client.ts +0 -199
- package/experiments/router/protocol.ts +0 -74
- package/experiments/router/router.ts +0 -217
- package/experiments/router/session.ts +0 -180
- package/experiments/router/test.ts +0 -133
- package/experiments/socket-bandwidth.ts +0 -77
- package/homebrew/gitspace.rb +0 -45
- package/landing-page/ATTRIBUTIONS.md +0 -3
- package/landing-page/README.md +0 -11
- package/landing-page/bun.lock +0 -801
- package/landing-page/guidelines/Guidelines.md +0 -61
- package/landing-page/index.html +0 -37
- package/landing-page/package.json +0 -90
- package/landing-page/postcss.config.mjs +0 -15
- package/landing-page/public/_redirects +0 -1
- package/landing-page/public/favicon.png +0 -0
- package/landing-page/src/app/App.tsx +0 -53
- package/landing-page/src/app/components/figma/ImageWithFallback.tsx +0 -27
- package/landing-page/src/app/components/ui/accordion.tsx +0 -66
- package/landing-page/src/app/components/ui/alert-dialog.tsx +0 -157
- package/landing-page/src/app/components/ui/alert.tsx +0 -66
- package/landing-page/src/app/components/ui/aspect-ratio.tsx +0 -11
- package/landing-page/src/app/components/ui/avatar.tsx +0 -53
- package/landing-page/src/app/components/ui/badge.tsx +0 -46
- package/landing-page/src/app/components/ui/breadcrumb.tsx +0 -109
- package/landing-page/src/app/components/ui/button.tsx +0 -57
- package/landing-page/src/app/components/ui/calendar.tsx +0 -75
- package/landing-page/src/app/components/ui/card.tsx +0 -92
- package/landing-page/src/app/components/ui/carousel.tsx +0 -241
- package/landing-page/src/app/components/ui/chart.tsx +0 -353
- package/landing-page/src/app/components/ui/checkbox.tsx +0 -32
- package/landing-page/src/app/components/ui/collapsible.tsx +0 -33
- package/landing-page/src/app/components/ui/command.tsx +0 -177
- package/landing-page/src/app/components/ui/context-menu.tsx +0 -252
- package/landing-page/src/app/components/ui/dialog.tsx +0 -135
- package/landing-page/src/app/components/ui/drawer.tsx +0 -132
- package/landing-page/src/app/components/ui/dropdown-menu.tsx +0 -257
- package/landing-page/src/app/components/ui/form.tsx +0 -168
- package/landing-page/src/app/components/ui/hover-card.tsx +0 -44
- package/landing-page/src/app/components/ui/input-otp.tsx +0 -77
- package/landing-page/src/app/components/ui/input.tsx +0 -21
- package/landing-page/src/app/components/ui/label.tsx +0 -24
- package/landing-page/src/app/components/ui/menubar.tsx +0 -276
- package/landing-page/src/app/components/ui/navigation-menu.tsx +0 -168
- package/landing-page/src/app/components/ui/pagination.tsx +0 -127
- package/landing-page/src/app/components/ui/popover.tsx +0 -48
- package/landing-page/src/app/components/ui/progress.tsx +0 -31
- package/landing-page/src/app/components/ui/radio-group.tsx +0 -45
- package/landing-page/src/app/components/ui/resizable.tsx +0 -56
- package/landing-page/src/app/components/ui/scroll-area.tsx +0 -58
- package/landing-page/src/app/components/ui/select.tsx +0 -189
- package/landing-page/src/app/components/ui/separator.tsx +0 -28
- package/landing-page/src/app/components/ui/sheet.tsx +0 -139
- package/landing-page/src/app/components/ui/sidebar.tsx +0 -726
- package/landing-page/src/app/components/ui/skeleton.tsx +0 -13
- package/landing-page/src/app/components/ui/slider.tsx +0 -63
- package/landing-page/src/app/components/ui/sonner.tsx +0 -25
- package/landing-page/src/app/components/ui/switch.tsx +0 -31
- package/landing-page/src/app/components/ui/table.tsx +0 -116
- package/landing-page/src/app/components/ui/tabs.tsx +0 -66
- package/landing-page/src/app/components/ui/textarea.tsx +0 -18
- package/landing-page/src/app/components/ui/toggle-group.tsx +0 -73
- package/landing-page/src/app/components/ui/toggle.tsx +0 -47
- package/landing-page/src/app/components/ui/tooltip.tsx +0 -61
- package/landing-page/src/app/components/ui/use-mobile.ts +0 -21
- package/landing-page/src/app/components/ui/utils.ts +0 -6
- package/landing-page/src/components/docs/DocsContent.tsx +0 -801
- package/landing-page/src/components/docs/DocsSidebar.tsx +0 -90
- package/landing-page/src/components/landing/CTA.tsx +0 -59
- package/landing-page/src/components/landing/Comparison.tsx +0 -84
- package/landing-page/src/components/landing/FaultyTerminal.tsx +0 -424
- package/landing-page/src/components/landing/Features.tsx +0 -201
- package/landing-page/src/components/landing/Hero.tsx +0 -142
- package/landing-page/src/components/landing/Pricing.tsx +0 -140
- package/landing-page/src/components/landing/Roadmap.tsx +0 -86
- package/landing-page/src/components/landing/Security.tsx +0 -81
- package/landing-page/src/components/landing/TerminalWindow.tsx +0 -27
- package/landing-page/src/components/landing/UseCases.tsx +0 -55
- package/landing-page/src/components/landing/Workflow.tsx +0 -101
- package/landing-page/src/components/layout/DashboardNavbar.tsx +0 -37
- package/landing-page/src/components/layout/Footer.tsx +0 -55
- package/landing-page/src/components/layout/LandingNavbar.tsx +0 -82
- package/landing-page/src/components/ui/badge.tsx +0 -39
- package/landing-page/src/components/ui/breadcrumb.tsx +0 -115
- package/landing-page/src/components/ui/button.tsx +0 -57
- package/landing-page/src/components/ui/card.tsx +0 -79
- package/landing-page/src/components/ui/mock-terminal.tsx +0 -68
- package/landing-page/src/components/ui/separator.tsx +0 -28
- package/landing-page/src/lib/utils.ts +0 -6
- package/landing-page/src/main.tsx +0 -10
- package/landing-page/src/pages/Dashboard.tsx +0 -133
- package/landing-page/src/pages/DocsPage.tsx +0 -79
- package/landing-page/src/pages/LandingPage.tsx +0 -31
- package/landing-page/src/pages/TerminalView.tsx +0 -106
- package/landing-page/src/styles/fonts.css +0 -0
- package/landing-page/src/styles/index.css +0 -3
- package/landing-page/src/styles/tailwind.css +0 -4
- package/landing-page/src/styles/theme.css +0 -181
- package/landing-page/vite.config.ts +0 -19
- package/scripts/GHOSTTY_TAB_BUG.md +0 -106
- package/scripts/build.ts +0 -298
- package/scripts/migrate-secrets.ts +0 -77
- package/scripts/release.ts +0 -140
- package/scripts/sample-events.ts +0 -263
- package/scripts/test-tabs-minimal.ts +0 -68
- package/scripts/test-tabs-workaround.ts +0 -95
- package/scripts/test-tabs.ts +0 -171
- package/src/__tests__/test-utils.ts +0 -298
- package/src/app/input/__tests__/sessionCommands.test.ts +0 -40
- package/src/app/input/sessionCommands.ts +0 -94
- package/src/app/session/__tests__/useAttachController.test.ts +0 -229
- package/src/app/session/createSessionBackend.bun.ts +0 -76
- package/src/app/session/createSessionBackend.web.ts +0 -104
- package/src/app/session/types.ts +0 -16
- package/src/app/session/useAttachController.ts +0 -220
- package/src/app/session/useProcessActions.ts +0 -201
- package/src/app/session/useSessionClient.ts +0 -35
- package/src/app/session/useWorkspaceDeleteFlow.ts +0 -170
- package/src/app.tui.tsx +0 -2929
- package/src/app.web.tsx +0 -1454
- package/src/commands/__tests__/connect-key.test.ts +0 -10
- package/src/commands/__tests__/events.test.ts +0 -201
- package/src/commands/__tests__/notifications.test.ts +0 -349
- package/src/commands/__tests__/process.test.ts +0 -251
- package/src/commands/__tests__/serve-messages.test.ts +0 -190
- package/src/commands/__tests__/serve-process-hosting.test.ts +0 -63
- package/src/commands/access.ts +0 -298
- package/src/commands/add.ts +0 -455
- package/src/commands/auth.ts +0 -369
- package/src/commands/bundle.ts +0 -232
- package/src/commands/config.ts +0 -242
- package/src/commands/connect-key.ts +0 -1
- package/src/commands/connect.ts +0 -576
- package/src/commands/directory.ts +0 -16
- package/src/commands/events.ts +0 -157
- package/src/commands/host.ts +0 -566
- package/src/commands/identity.ts +0 -184
- package/src/commands/linear.ts +0 -717
- package/src/commands/list.ts +0 -181
- package/src/commands/migrate.ts +0 -52
- package/src/commands/notifications.ts +0 -351
- package/src/commands/process.ts +0 -104
- package/src/commands/relay.ts +0 -315
- package/src/commands/remove.ts +0 -279
- package/src/commands/review.ts +0 -787
- package/src/commands/serve.ts +0 -1946
- package/src/commands/share.ts +0 -451
- package/src/commands/status.ts +0 -125
- package/src/commands/switch.ts +0 -361
- package/src/commands/tmux.ts +0 -317
- package/src/components/DPad.web.tsx +0 -343
- package/src/components/DiffViewer.web.tsx +0 -1192
- package/src/components/Events.tsx +0 -137
- package/src/components/Events.tui.tsx +0 -129
- package/src/components/Events.web.tsx +0 -386
- package/src/components/FloatingControls.web.tsx +0 -112
- package/src/components/FloatingJogWheel.web.tsx +0 -240
- package/src/components/Flow.tsx +0 -458
- package/src/components/Flow.tui.tsx +0 -343
- package/src/components/Flow.web.tsx +0 -442
- package/src/components/Inbox.tsx +0 -448
- package/src/components/Inbox.tui.tsx +0 -262
- package/src/components/Inbox.web.tsx +0 -329
- package/src/components/MachineList.tsx +0 -187
- package/src/components/MachineList.tui.tsx +0 -161
- package/src/components/MachineList.web.tsx +0 -210
- package/src/components/NumPad.web.tsx +0 -270
- package/src/components/ProjectList.tsx +0 -175
- package/src/components/ProjectList.tui.tsx +0 -109
- package/src/components/ProjectList.web.tsx +0 -143
- package/src/components/ProjectOnboardingStep.ts +0 -23
- package/src/components/ProjectOnboardingStep.tui.tsx +0 -88
- package/src/components/ProjectOnboardingStep.web.tsx +0 -59
- package/src/components/RemoteMachineScreen.tui.tsx +0 -690
- package/src/components/ScriptTerminal.tui.tsx +0 -160
- package/src/components/ScriptTerminal.web.tsx +0 -89
- package/src/components/SessionTerminal.tui.tsx +0 -406
- package/src/components/SessionTerminal.web.tsx +0 -467
- package/src/components/SpacesBrowser.tsx +0 -540
- package/src/components/SpacesBrowser.tui.tsx +0 -258
- package/src/components/SpacesBrowser.web.tsx +0 -332
- package/src/components/TerminalControls.web.tsx +0 -464
- package/src/components/ThreadPanel.web.tsx +0 -798
- package/src/components/__tests__/SpacesBrowser.test.ts +0 -541
- package/src/components/__tests__/SpacesBrowser.tui.test.tsx +0 -249
- package/src/components/__tests__/script-terminal-buffer.tui.test.ts +0 -72
- package/src/components/index.ts +0 -105
- package/src/components/review-decision-colors.ts +0 -11
- package/src/components/script-terminal-buffer.tui.ts +0 -37
- package/src/components/session-terminal-page-navigation.ts +0 -48
- package/src/components/terminal-bracketed-paste.tui.test.ts +0 -43
- package/src/components/terminal-bracketed-paste.tui.ts +0 -46
- package/src/core/__tests__/access.test.ts +0 -240
- package/src/core/__tests__/bundle-refresh.test.ts +0 -567
- package/src/core/__tests__/bundle.test.ts +0 -209
- package/src/core/__tests__/github-review.test.ts +0 -781
- package/src/core/__tests__/project-lifecycle.test.ts +0 -137
- package/src/core/__tests__/workspace-lifecycle.test.ts +0 -159
- package/src/core/__tests__/workspace.test.ts +0 -149
- package/src/core/access.ts +0 -277
- package/src/core/bundle-refresh.ts +0 -1064
- package/src/core/bundle.ts +0 -326
- package/src/core/config.ts +0 -405
- package/src/core/git.ts +0 -768
- package/src/core/github-review.ts +0 -761
- package/src/core/github.ts +0 -151
- package/src/core/identity.ts +0 -631
- package/src/core/linear.ts +0 -403
- package/src/core/preferences-service.ts +0 -17
- package/src/core/project-catalog.ts +0 -52
- package/src/core/project-lifecycle.ts +0 -163
- package/src/core/review-executor.ts +0 -316
- package/src/core/review.ts +0 -407
- package/src/core/secret-runtime.ts +0 -167
- package/src/core/shell.ts +0 -117
- package/src/core/trusted-relays.ts +0 -315
- package/src/core/workspace-lifecycle.ts +0 -216
- package/src/core/workspace.ts +0 -363
- package/src/hooks/__tests__/useLocalSession.tui.test.ts +0 -557
- package/src/hooks/index.ts +0 -8
- package/src/hooks/index.tui.ts +0 -32
- package/src/hooks/useDaemonStatus.tui.ts +0 -174
- package/src/hooks/useLocalSession.tui.ts +0 -395
- package/src/hooks/useRelayConnection.web.ts +0 -54
- package/src/hooks/useRemoteMachines.tui.ts +0 -166
- package/src/hooks/useRemoteTerminal.tui.ts +0 -22
- package/src/hooks/useReview.web.ts +0 -248
- package/src/hooks/useTerminal.web.ts +0 -36
- package/src/hooks/useUserActivity.ts +0 -61
- package/src/hooks/useVisualViewport.web.ts +0 -104
- package/src/index.ts +0 -1376
- package/src/lib/events/__tests__/collector-filter.test.ts +0 -105
- package/src/lib/events/__tests__/store-query.test.ts +0 -103
- package/src/lib/events/collector.ts +0 -494
- package/src/lib/events/filters.ts +0 -26
- package/src/lib/events/index.ts +0 -11
- package/src/lib/events/indexer.ts +0 -14
- package/src/lib/events/paths.ts +0 -69
- package/src/lib/events/reader.ts +0 -212
- package/src/lib/events/store.ts +0 -141
- package/src/lib/invite.web.ts +0 -58
- package/src/lib/preferences-service.web.ts +0 -41
- package/src/lib/processes/__tests__/config.test.ts +0 -83
- package/src/lib/processes/__tests__/names.test.ts +0 -125
- package/src/lib/processes/__tests__/schema.test.ts +0 -208
- package/src/lib/processes/__tests__/watchdog.test.ts +0 -210
- package/src/lib/processes/autostart.ts +0 -16
- package/src/lib/processes/config.ts +0 -187
- package/src/lib/processes/control.ts +0 -53
- package/src/lib/processes/editor.ts +0 -32
- package/src/lib/processes/events-config.ts +0 -37
- package/src/lib/processes/index.ts +0 -14
- package/src/lib/processes/instances.ts +0 -20
- package/src/lib/processes/manager.ts +0 -131
- package/src/lib/processes/names.ts +0 -71
- package/src/lib/processes/registry.ts +0 -26
- package/src/lib/processes/runner.ts +0 -211
- package/src/lib/processes/scheduler.ts +0 -17
- package/src/lib/processes/schema.ts +0 -74
- package/src/lib/processes/session-list.ts +0 -15
- package/src/lib/processes/state.ts +0 -82
- package/src/lib/processes/watchdog.test.ts +0 -79
- package/src/lib/processes/watchdog.ts +0 -106
- package/src/lib/remote-session/__tests__/protocol.test.ts +0 -291
- package/src/lib/remote-session/index.ts +0 -7
- package/src/lib/remote-session/protocol.ts +0 -443
- package/src/lib/remote-session/session-handler.ts +0 -1298
- package/src/lib/remote-session/workspace-scanner.ts +0 -161
- package/src/lib/sonner.web.ts +0 -1
- package/src/lib/storage/identity-store.web.ts +0 -94
- package/src/lib/tmux-lite/README.md +0 -81
- package/src/lib/tmux-lite/cli.ts +0 -855
- package/src/lib/tmux-lite/crypto/__tests__/helpers/handshake-runner.ts +0 -349
- package/src/lib/tmux-lite/crypto/__tests__/helpers/mock-relay.ts +0 -291
- package/src/lib/tmux-lite/crypto/__tests__/helpers/test-identities.ts +0 -142
- package/src/lib/tmux-lite/crypto/__tests__/integration/authorization.integration.test.ts +0 -339
- package/src/lib/tmux-lite/crypto/__tests__/integration/e2e-communication.integration.test.ts +0 -477
- package/src/lib/tmux-lite/crypto/__tests__/integration/error-handling.integration.test.ts +0 -499
- package/src/lib/tmux-lite/crypto/__tests__/integration/handshake.integration.test.ts +0 -371
- package/src/lib/tmux-lite/crypto/__tests__/integration/security.integration.test.ts +0 -573
- package/src/lib/tmux-lite/crypto/access-control.test.ts +0 -512
- package/src/lib/tmux-lite/crypto/access-control.ts +0 -320
- package/src/lib/tmux-lite/crypto/frames.test.ts +0 -262
- package/src/lib/tmux-lite/crypto/frames.ts +0 -141
- package/src/lib/tmux-lite/crypto/handshake.ts +0 -894
- package/src/lib/tmux-lite/crypto/identity.test.ts +0 -220
- package/src/lib/tmux-lite/crypto/identity.ts +0 -286
- package/src/lib/tmux-lite/crypto/index.ts +0 -51
- package/src/lib/tmux-lite/crypto/invites.test.ts +0 -381
- package/src/lib/tmux-lite/crypto/invites.ts +0 -215
- package/src/lib/tmux-lite/crypto/keyexchange.ts +0 -435
- package/src/lib/tmux-lite/crypto/keys.test.ts +0 -58
- package/src/lib/tmux-lite/crypto/keys.ts +0 -47
- package/src/lib/tmux-lite/crypto/secretbox.test.ts +0 -169
- package/src/lib/tmux-lite/crypto/secretbox.ts +0 -124
- package/src/lib/tmux-lite/handshake-handler.ts +0 -451
- package/src/lib/tmux-lite/process-run.integration.test.ts +0 -266
- package/src/lib/tmux-lite/protocol.test.ts +0 -307
- package/src/lib/tmux-lite/protocol.ts +0 -291
- package/src/lib/tmux-lite/relay-client.ts +0 -506
- package/src/lib/tmux-lite/server-lifecycle.test.ts +0 -212
- package/src/lib/tmux-lite/server.ts +0 -1412
- package/src/lib/tmux-lite/shell-integration.sh +0 -37
- package/src/lib/tmux-lite/terminal-queries.test.ts +0 -54
- package/src/lib/tmux-lite/terminal-queries.ts +0 -49
- package/src/notifications/__tests__/useNotifications.test.ts +0 -739
- package/src/notifications/index.ts +0 -32
- package/src/notifications/policy.test.ts +0 -424
- package/src/notifications/policy.ts +0 -139
- package/src/notifications/types.ts +0 -82
- package/src/notifications/useNotifications.ts +0 -350
- package/src/pages/ReviewPage.web.tsx +0 -511
- package/src/preferences/index.ts +0 -1
- package/src/preferences/types.ts +0 -9
- package/src/relay/__tests__/e2e-flow.test.ts +0 -1284
- package/src/relay/__tests__/helpers/auth.ts +0 -354
- package/src/relay/__tests__/helpers/ports.ts +0 -51
- package/src/relay/__tests__/protocol-validation.test.ts +0 -265
- package/src/relay/authorization.ts +0 -303
- package/src/relay/embedded-assets.generated.d.ts +0 -15
- package/src/relay/identity.ts +0 -352
- package/src/relay/index.ts +0 -57
- package/src/relay/pipes.test.ts +0 -427
- package/src/relay/pipes.ts +0 -195
- package/src/relay/protocol.ts +0 -804
- package/src/relay/registries.test.ts +0 -437
- package/src/relay/registries.ts +0 -593
- package/src/relay/server.test.ts +0 -1323
- package/src/relay/server.ts +0 -1128
- package/src/relay/signing.ts +0 -238
- package/src/relay/types.ts +0 -69
- package/src/relay-client/__tests__/machine-directory-client.test.ts +0 -152
- package/src/relay-client/__tests__/useMachineDirectory.test.ts +0 -172
- package/src/relay-client/adapters/browser.ts +0 -27
- package/src/relay-client/adapters/node.ts +0 -29
- package/src/relay-client/index.ts +0 -33
- package/src/relay-client/machine-directory-client.ts +0 -244
- package/src/relay-client/useMachineDirectory.ts +0 -175
- package/src/serve/client-session-manager.ts +0 -635
- package/src/serve/daemon.ts +0 -497
- package/src/serve/pty-session.ts +0 -236
- package/src/serve/types.ts +0 -174
- package/src/session/__tests__/backend-manager.test.ts +0 -101
- package/src/session/__tests__/local-session-backend.test.ts +0 -1129
- package/src/session/__tests__/reducer.test.ts +0 -80
- package/src/session/__tests__/remote-session-backend.test.ts +0 -995
- package/src/session/__tests__/session-name.test.ts +0 -35
- package/src/session/__tests__/useBundleRefreshAttachFlow.test.ts +0 -431
- package/src/session/__tests__/useRemoteSessionClient.test.ts +0 -424
- package/src/session/__tests__/workspace-shell-hooks.integration.test.ts +0 -268
- package/src/session/__tests__/workspace-shell-hooks.test.ts +0 -24
- package/src/session/adapters/browser-remote.ts +0 -101
- package/src/session/adapters/node-remote.ts +0 -135
- package/src/session/backend-key.ts +0 -5
- package/src/session/backend-manager.ts +0 -80
- package/src/session/backend.ts +0 -93
- package/src/session/backends/local-session-backend.ts +0 -1119
- package/src/session/backends/remote-session-backend.ts +0 -1378
- package/src/session/crypto/__tests__/web-terminal.test.ts +0 -1158
- package/src/session/crypto/frames.web.ts +0 -205
- package/src/session/crypto/handshake.web.ts +0 -396
- package/src/session/crypto/identity.web.ts +0 -133
- package/src/session/crypto/keyexchange.web.ts +0 -246
- package/src/session/crypto/relay-signing.web.ts +0 -53
- package/src/session/events.ts +0 -38
- package/src/session/index.ts +0 -116
- package/src/session/reducer.ts +0 -274
- package/src/session/selectors.ts +0 -28
- package/src/session/session-name.ts +0 -50
- package/src/session/types.ts +0 -101
- package/src/session/useBundleRefreshAttachFlow.ts +0 -608
- package/src/session/useRemoteSessionClient.ts +0 -424
- package/src/session/useSessionEngine.ts +0 -432
- package/src/session/workspace-shell-hooks.ts +0 -35
- package/src/tui/__tests__/input-text.test.ts +0 -24
- package/src/tui/__tests__/local-terminal-sync.test.ts +0 -82
- package/src/tui/__tests__/session-terminal-page-navigation.test.ts +0 -94
- package/src/tui/app.tsx +0 -2
- package/src/tui/index.ts +0 -18
- package/src/tui/input-text.ts +0 -38
- package/src/tui/local-terminal-sync.ts +0 -41
- package/src/types/bundle-refresh.ts +0 -42
- package/src/types/bundle.ts +0 -130
- package/src/types/config.ts +0 -287
- package/src/types/errors.ts +0 -292
- package/src/types/events.ts +0 -91
- package/src/types/identity.ts +0 -284
- package/src/types/processes.ts +0 -45
- package/src/types/review.ts +0 -349
- package/src/types/script-phase.ts +0 -3
- package/src/types/workspace-fuzzy.ts +0 -49
- package/src/types/workspace.ts +0 -151
- package/src/utils/__tests__/onboarding.test.ts +0 -358
- package/src/utils/__tests__/run-scripts.test.ts +0 -535
- package/src/utils/__tests__/run-workspace-scripts.test.ts +0 -406
- package/src/utils/__tests__/workspace-setup.integration.test.ts +0 -633
- package/src/utils/__tests__/workspace-state.test.ts +0 -78
- package/src/utils/bun-socket-writer.ts +0 -80
- package/src/utils/clipboard.ts +0 -53
- package/src/utils/deps.test.ts +0 -31
- package/src/utils/deps.ts +0 -145
- package/src/utils/device.web.ts +0 -163
- package/src/utils/fuzzy-match.ts +0 -125
- package/src/utils/hostnames.ts +0 -43
- package/src/utils/hunk-header.ts +0 -17
- package/src/utils/id.ts +0 -9
- package/src/utils/logger.ts +0 -127
- package/src/utils/markdown.ts +0 -254
- package/src/utils/normalize-env-key.ts +0 -13
- package/src/utils/onboarding.ts +0 -279
- package/src/utils/prompts.ts +0 -176
- package/src/utils/run-commands.ts +0 -112
- package/src/utils/run-scripts.ts +0 -337
- package/src/utils/run-workspace-scripts.ts +0 -355
- package/src/utils/sanitize.test.ts +0 -149
- package/src/utils/sanitize.ts +0 -162
- package/src/utils/secrets.ts +0 -836
- package/src/utils/shell-escape.ts +0 -40
- package/src/utils/utf8.ts +0 -79
- package/src/utils/workspace-id.ts +0 -55
- package/src/utils/workspace-state.ts +0 -427
- package/src/version.generated.d.ts +0 -2
- package/todo-security.md +0 -92
- package/tsconfig.json +0 -29
- package/web/README.md +0 -73
- package/web/bun.lock +0 -675
- package/web/eslint.config.js +0 -23
- package/web/index.css +0 -249
- package/web/index.html +0 -16
- package/web/main.tsx +0 -10
- package/web/package.json +0 -39
- package/web/public/vite.svg +0 -1
- package/web/tsconfig.app.json +0 -35
- package/web/tsconfig.json +0 -7
- package/web/tsconfig.node.json +0 -26
- package/web/vite.config.ts +0 -39
- package/worker/bun.lock +0 -237
- package/worker/package.json +0 -22
- package/worker/schema.sql +0 -96
- package/worker/src/handlers/auth.ts +0 -451
- package/worker/src/handlers/subdomains.ts +0 -376
- package/worker/src/handlers/user.ts +0 -98
- package/worker/src/index.ts +0 -70
- package/worker/src/middleware/auth.ts +0 -152
- package/worker/src/services/cloudflare.ts +0 -609
- package/worker/src/types.ts +0 -96
- package/worker/tsconfig.json +0 -15
- package/worker/wrangler.toml +0 -26
package/src/tui/input-text.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
interface KeyboardLikeInput {
|
|
2
|
-
raw?: string;
|
|
3
|
-
ctrl?: boolean;
|
|
4
|
-
meta?: boolean;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Remove control characters and line breaks from pasted/typed text.
|
|
9
|
-
*/
|
|
10
|
-
export function normalizeInputText(text: string): string {
|
|
11
|
-
return text
|
|
12
|
-
.replace(/\r\n?/g, '')
|
|
13
|
-
.replace(/[\u0000-\u001F\u007F]/g, '')
|
|
14
|
-
.replace(/\u001b\[[0-9;?]*[A-Za-z]/g, '');
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Extract printable keyboard text chunk for text-entry fields.
|
|
19
|
-
*/
|
|
20
|
-
export function getKeyboardInputChunk(key: KeyboardLikeInput): string | null {
|
|
21
|
-
if (!key.raw || key.ctrl || key.meta) {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const normalized = normalizeInputText(key.raw);
|
|
26
|
-
if (!normalized) {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return normalized;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Extract numeric-only text chunk (for numeric inputs).
|
|
35
|
-
*/
|
|
36
|
-
export function getNumericInputChunk(text: string): string {
|
|
37
|
-
return text.replace(/[^0-9]/g, '');
|
|
38
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export type AppView = 'machines' | 'projects' | 'terminal' | 'inbox' | 'scripts' | 'events'
|
|
2
|
-
|
|
3
|
-
export type LocalSessionStatus = 'disconnected' | 'connecting' | 'connected' | 'error'
|
|
4
|
-
export type LocalSessionMode = 'browsing' | 'attached'
|
|
5
|
-
|
|
6
|
-
export interface LocalScriptState {
|
|
7
|
-
isRunning: boolean
|
|
8
|
-
error?: string
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export type LocalTerminalSyncAction =
|
|
12
|
-
| 'none'
|
|
13
|
-
| 'show-connection-error'
|
|
14
|
-
| 'return-to-projects'
|
|
15
|
-
|
|
16
|
-
export function resolveLocalTerminalSyncAction(params: {
|
|
17
|
-
isLocalMachineContext: boolean
|
|
18
|
-
view: AppView
|
|
19
|
-
localSessionStatus: LocalSessionStatus
|
|
20
|
-
localSessionMode: LocalSessionMode
|
|
21
|
-
localScriptState: LocalScriptState | null
|
|
22
|
-
isSessionSwitching: boolean
|
|
23
|
-
}): LocalTerminalSyncAction {
|
|
24
|
-
if (!params.isLocalMachineContext || params.view !== 'terminal') {
|
|
25
|
-
return 'none'
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (params.isSessionSwitching) {
|
|
29
|
-
return 'none'
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (params.localSessionStatus === 'error') {
|
|
33
|
-
return 'show-connection-error'
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (params.localSessionMode === 'browsing' && params.localScriptState === null) {
|
|
37
|
-
return 'return-to-projects'
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return 'none'
|
|
41
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { ConfirmStepResult } from './bundle.js';
|
|
2
|
-
|
|
3
|
-
export type BundleRefreshStepType = 'input' | 'secret' | 'confirm' | 'info';
|
|
4
|
-
|
|
5
|
-
export interface BundleRefreshStep {
|
|
6
|
-
id: string;
|
|
7
|
-
type: BundleRefreshStepType;
|
|
8
|
-
title: string;
|
|
9
|
-
description: string;
|
|
10
|
-
required?: boolean;
|
|
11
|
-
configKey?: string;
|
|
12
|
-
defaultValue?: string;
|
|
13
|
-
validationPattern?: string;
|
|
14
|
-
validationMessage?: string;
|
|
15
|
-
checkCommand?: string;
|
|
16
|
-
installUrl?: string;
|
|
17
|
-
confirmPrompt?: string;
|
|
18
|
-
hasExistingSecret?: boolean;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface BundleRefreshPlan {
|
|
22
|
-
projectName: string;
|
|
23
|
-
workspaceId: string;
|
|
24
|
-
workspaceName: string;
|
|
25
|
-
workspacePath: string;
|
|
26
|
-
hasBundle: boolean;
|
|
27
|
-
hasChanged: boolean;
|
|
28
|
-
scope?: string;
|
|
29
|
-
bundleSource?: 'workspace' | 'base';
|
|
30
|
-
baselineSource?: 'scope' | 'base' | 'inferred' | 'none';
|
|
31
|
-
details: string;
|
|
32
|
-
currentHash?: string;
|
|
33
|
-
previousHash?: string;
|
|
34
|
-
steps: BundleRefreshStep[];
|
|
35
|
-
autoConfirmResults: Record<string, ConfirmStepResult>;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface BundleRefreshSubmission {
|
|
39
|
-
inputValues: Record<string, string>;
|
|
40
|
-
secretValues: Record<string, string>;
|
|
41
|
-
confirmResults: Record<string, ConfirmStepResult>;
|
|
42
|
-
}
|
package/src/types/bundle.ts
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for Spaces bundle configuration
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Onboarding step types
|
|
7
|
-
*/
|
|
8
|
-
export type OnboardingStepType = 'info' | 'confirm' | 'secret' | 'input';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Base interface for all onboarding steps
|
|
12
|
-
*/
|
|
13
|
-
interface BaseOnboardingStep {
|
|
14
|
-
/** Unique identifier for the step */
|
|
15
|
-
id: string;
|
|
16
|
-
/** Step type */
|
|
17
|
-
type: OnboardingStepType;
|
|
18
|
-
/** Display title for the step */
|
|
19
|
-
title: string;
|
|
20
|
-
/** Description/instructions for the user */
|
|
21
|
-
description: string;
|
|
22
|
-
/** Whether this step is required (default: true) */
|
|
23
|
-
required?: boolean;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Info step - Display information, user just acknowledges
|
|
28
|
-
*/
|
|
29
|
-
export interface InfoStep extends BaseOnboardingStep {
|
|
30
|
-
type: 'info';
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Confirm step - Verify something is installed or done
|
|
35
|
-
*/
|
|
36
|
-
export interface ConfirmStep extends BaseOnboardingStep {
|
|
37
|
-
type: 'confirm';
|
|
38
|
-
/** Command to check if installed (optional) */
|
|
39
|
-
checkCommand?: string;
|
|
40
|
-
/** URL for installation instructions (optional) */
|
|
41
|
-
installUrl?: string;
|
|
42
|
-
/** Confirmation prompt text (default: "Continue?") */
|
|
43
|
-
confirmPrompt?: string;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Secret step - Collect sensitive value (masked input)
|
|
48
|
-
*/
|
|
49
|
-
export interface SecretStep extends BaseOnboardingStep {
|
|
50
|
-
type: 'secret';
|
|
51
|
-
/** Key to store the value under in project keychain secrets */
|
|
52
|
-
configKey: string;
|
|
53
|
-
/** Validation regex pattern (optional) */
|
|
54
|
-
validationPattern?: string;
|
|
55
|
-
/** Validation error message (optional) */
|
|
56
|
-
validationMessage?: string;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Input step - Collect non-secret value
|
|
61
|
-
*/
|
|
62
|
-
export interface InputStep extends BaseOnboardingStep {
|
|
63
|
-
type: 'input';
|
|
64
|
-
/** Key to store the value under in project config */
|
|
65
|
-
configKey: string;
|
|
66
|
-
/** Default value (optional) */
|
|
67
|
-
defaultValue?: string;
|
|
68
|
-
/** Validation regex pattern (optional) */
|
|
69
|
-
validationPattern?: string;
|
|
70
|
-
/** Validation error message (optional) */
|
|
71
|
-
validationMessage?: string;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export type OnboardingStep = InfoStep | ConfirmStep | SecretStep | InputStep;
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Persisted status for a confirm step.
|
|
78
|
-
*/
|
|
79
|
-
export type ConfirmStepStatus = 'passed' | 'skipped';
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Result metadata for a confirm step.
|
|
83
|
-
*/
|
|
84
|
-
export interface ConfirmStepResult {
|
|
85
|
-
status: ConfirmStepStatus;
|
|
86
|
-
/** Command that was checked (if any) */
|
|
87
|
-
checkCommand?: string;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Bundle manifest schema (bundle.json)
|
|
92
|
-
*/
|
|
93
|
-
export interface SpacesBundle {
|
|
94
|
-
/** Bundle schema version */
|
|
95
|
-
version: '1.0';
|
|
96
|
-
/** Bundle name (for display) */
|
|
97
|
-
name: string;
|
|
98
|
-
/** Bundle description (optional) */
|
|
99
|
-
description?: string;
|
|
100
|
-
/** Onboarding steps to run before project setup */
|
|
101
|
-
onboarding?: OnboardingStep[];
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Result of running onboarding steps
|
|
106
|
-
*/
|
|
107
|
-
export interface OnboardingResult {
|
|
108
|
-
/** Values from input steps (stored in project config) */
|
|
109
|
-
inputValues: Record<string, string>;
|
|
110
|
-
/** Values from secret steps (stored in keychain) */
|
|
111
|
-
secretValues: Record<string, string>;
|
|
112
|
-
/** Results from confirm steps, keyed by step id */
|
|
113
|
-
confirmResults: Record<string, ConfirmStepResult>;
|
|
114
|
-
/** Whether onboarding completed successfully */
|
|
115
|
-
completed: boolean;
|
|
116
|
-
/** Step ID where user cancelled (if applicable) */
|
|
117
|
-
cancelledAt?: string;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Loaded bundle with source information
|
|
122
|
-
*/
|
|
123
|
-
export interface LoadedBundle {
|
|
124
|
-
/** The bundle manifest */
|
|
125
|
-
bundle: SpacesBundle;
|
|
126
|
-
/** Path to the bundle directory (for script copying) */
|
|
127
|
-
bundleDir: string;
|
|
128
|
-
/** Source description for logging */
|
|
129
|
-
source: string;
|
|
130
|
-
}
|
package/src/types/config.ts
DELETED
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for GitSpace CLI configuration
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Notification type toggles
|
|
7
|
-
*/
|
|
8
|
-
export interface NotificationTypeConfig {
|
|
9
|
-
/** Notify on process exit (default: true) */
|
|
10
|
-
exit: boolean;
|
|
11
|
-
/** Notify when terminal goes idle after activity (default: true) */
|
|
12
|
-
idle: boolean;
|
|
13
|
-
/** Notify on terminal bell (default: true) */
|
|
14
|
-
bell: boolean;
|
|
15
|
-
/** Notify on terminal title change (default: true) */
|
|
16
|
-
title: boolean;
|
|
17
|
-
/** Notify on OSC sequences (9, 99, 777) (default: true) */
|
|
18
|
-
osc: boolean;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Toast notification settings
|
|
23
|
-
*/
|
|
24
|
-
export interface NotificationToastConfig {
|
|
25
|
-
/** Whether toast notifications are enabled (default: true) */
|
|
26
|
-
enabled: boolean;
|
|
27
|
-
/** Hold toasts when user is idle for this duration (ms). 0 = disabled. (default: 15000) */
|
|
28
|
-
holdWhenIdleMs: number;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Notification configuration
|
|
33
|
-
*/
|
|
34
|
-
export interface NotificationConfig {
|
|
35
|
-
/** Whether notifications are enabled globally (default: true) */
|
|
36
|
-
enabled: boolean;
|
|
37
|
-
/** Minimum command duration (ms) before notifying on completion (default: 10000) */
|
|
38
|
-
minCommandDurationMs: number;
|
|
39
|
-
/** Which notification types are enabled */
|
|
40
|
-
types: NotificationTypeConfig;
|
|
41
|
-
/** Toast notification settings */
|
|
42
|
-
toast: NotificationToastConfig;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Default notification type config
|
|
47
|
-
*/
|
|
48
|
-
export const DEFAULT_NOTIFICATION_TYPES: NotificationTypeConfig = {
|
|
49
|
-
exit: true,
|
|
50
|
-
idle: true,
|
|
51
|
-
bell: true,
|
|
52
|
-
title: true,
|
|
53
|
-
osc: true,
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Default notification config
|
|
58
|
-
*/
|
|
59
|
-
export const DEFAULT_NOTIFICATION_CONFIG: NotificationConfig = {
|
|
60
|
-
enabled: true,
|
|
61
|
-
minCommandDurationMs: 10000,
|
|
62
|
-
types: { ...DEFAULT_NOTIFICATION_TYPES },
|
|
63
|
-
toast: { enabled: true, holdWhenIdleMs: 15000 },
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Wide event ingestion mode
|
|
68
|
-
*/
|
|
69
|
-
export type EventsIngestionMode = 'prefix' | 'json';
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Field mapping for wide events
|
|
73
|
-
*/
|
|
74
|
-
export interface EventsFieldConfig {
|
|
75
|
-
/** Field name for the event name */
|
|
76
|
-
name: string;
|
|
77
|
-
/** Field name for the event ID */
|
|
78
|
-
id: string;
|
|
79
|
-
/** Field name for the event level */
|
|
80
|
-
level: string;
|
|
81
|
-
/** Field name for the timestamp */
|
|
82
|
-
timestamp: string;
|
|
83
|
-
/** Field name for the message */
|
|
84
|
-
message: string;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Rotation settings for wide event logs
|
|
89
|
-
*/
|
|
90
|
-
export interface EventsRotationConfig {
|
|
91
|
-
/** Max file size in bytes before rotation */
|
|
92
|
-
maxBytes: number;
|
|
93
|
-
/** Max file age in minutes before rotation */
|
|
94
|
-
maxMinutes: number;
|
|
95
|
-
/** Number of files to retain */
|
|
96
|
-
keepFiles: number;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Wide event configuration
|
|
101
|
-
*/
|
|
102
|
-
export interface EventsConfig {
|
|
103
|
-
/** Enable wide event collection */
|
|
104
|
-
enabled: boolean;
|
|
105
|
-
/** Ingestion mode (prefix required or json matching) */
|
|
106
|
-
mode: EventsIngestionMode;
|
|
107
|
-
/** Prefix for event lines when mode is prefix */
|
|
108
|
-
prefix: string;
|
|
109
|
-
/** Field mapping */
|
|
110
|
-
fields: EventsFieldConfig;
|
|
111
|
-
/** Rotation settings */
|
|
112
|
-
rotation: EventsRotationConfig;
|
|
113
|
-
/** Correlation field for aggregating wide events */
|
|
114
|
-
correlationField?: string;
|
|
115
|
-
/** Aggregate wide events as source events stream in */
|
|
116
|
-
aggregateMode?: 'stream';
|
|
117
|
-
/** Max timeline entries per wide event */
|
|
118
|
-
maxTimeline?: number;
|
|
119
|
-
/** Minimum interval between wide event updates (ms) */
|
|
120
|
-
updateIntervalMs?: number;
|
|
121
|
-
/** Snapshot cache size per workspace (bytes) */
|
|
122
|
-
snapshotCacheMaxBytes?: number;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Default wide event configuration
|
|
127
|
-
*/
|
|
128
|
-
export const DEFAULT_EVENTS_CONFIG: EventsConfig = {
|
|
129
|
-
enabled: true,
|
|
130
|
-
mode: 'prefix',
|
|
131
|
-
prefix: '@event',
|
|
132
|
-
fields: {
|
|
133
|
-
name: 'event',
|
|
134
|
-
id: 'eventId',
|
|
135
|
-
level: 'level',
|
|
136
|
-
timestamp: 'timestamp',
|
|
137
|
-
message: 'message',
|
|
138
|
-
},
|
|
139
|
-
rotation: {
|
|
140
|
-
maxBytes: 25_000_000,
|
|
141
|
-
maxMinutes: 60,
|
|
142
|
-
keepFiles: 20,
|
|
143
|
-
},
|
|
144
|
-
correlationField: 'requestId',
|
|
145
|
-
aggregateMode: 'stream',
|
|
146
|
-
maxTimeline: 200,
|
|
147
|
-
updateIntervalMs: 250,
|
|
148
|
-
snapshotCacheMaxBytes: 64 * 1024 * 1024,
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Linear team info stored in config
|
|
153
|
-
*/
|
|
154
|
-
export interface LinearTeamInfo {
|
|
155
|
-
/** Team ID from Linear */
|
|
156
|
-
id: string;
|
|
157
|
-
/** Team key (e.g., "ENG") */
|
|
158
|
-
key: string;
|
|
159
|
-
/** Team name (e.g., "Engineering") */
|
|
160
|
-
name: string;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Global configuration stored in ~/gitspace/.config.json
|
|
165
|
-
*/
|
|
166
|
-
export interface GlobalConfig {
|
|
167
|
-
/** Name of the currently active project */
|
|
168
|
-
currentProject: string | null;
|
|
169
|
-
/** Path to the projects directory (default: ~/gitspace) */
|
|
170
|
-
projectsDir: string;
|
|
171
|
-
/** Default base branch for new projects (default: "main") */
|
|
172
|
-
defaultBaseBranch: string;
|
|
173
|
-
/** Number of days before a workspace is considered stale (default: 30) */
|
|
174
|
-
staleDays: number;
|
|
175
|
-
/** Linear teams the user has access to (user-level config) */
|
|
176
|
-
linearTeams?: LinearTeamInfo[];
|
|
177
|
-
/** Default Linear team key for new projects */
|
|
178
|
-
linearDefaultTeam?: string;
|
|
179
|
-
/** Notification settings */
|
|
180
|
-
notifications?: NotificationConfig;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Persisted per-workspace bundle metadata.
|
|
185
|
-
*/
|
|
186
|
-
export interface WorkspaceBundleState {
|
|
187
|
-
/** Key used for this scope (workspace name or "__base__") */
|
|
188
|
-
scope: string;
|
|
189
|
-
/** Hash of the bundle that was last processed for this scope */
|
|
190
|
-
bundleHash: string;
|
|
191
|
-
/** Input config keys required by this workspace bundle */
|
|
192
|
-
requiredInputKeys: string[];
|
|
193
|
-
/** Secret config keys required by this workspace bundle */
|
|
194
|
-
requiredSecretKeys: string[];
|
|
195
|
-
/** Confirm-step fingerprints currently referenced by this workspace bundle */
|
|
196
|
-
confirmFingerprints: string[];
|
|
197
|
-
/** ISO timestamp when this state was last updated */
|
|
198
|
-
updatedAt: string;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Persisted history for a confirm/check step.
|
|
203
|
-
*/
|
|
204
|
-
export interface BundleConfirmHistoryEntry {
|
|
205
|
-
/** Fingerprint hash of the confirm step definition */
|
|
206
|
-
fingerprint: string;
|
|
207
|
-
/** Step id from bundle.json */
|
|
208
|
-
stepId: string;
|
|
209
|
-
/** checkCommand value, if present */
|
|
210
|
-
checkCommand?: string;
|
|
211
|
-
/** Last known status */
|
|
212
|
-
status: 'passed' | 'skipped';
|
|
213
|
-
/** Scope that last evaluated this step */
|
|
214
|
-
scope: string;
|
|
215
|
-
/** Bundle hash that produced this history entry */
|
|
216
|
-
bundleHash: string;
|
|
217
|
-
/** ISO timestamp when this was checked */
|
|
218
|
-
checkedAt: string;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Project-specific configuration stored in ~/gitspace/{PROJECT_NAME}/.config.json
|
|
223
|
-
*/
|
|
224
|
-
export interface ProjectConfig {
|
|
225
|
-
/** Project name */
|
|
226
|
-
name: string;
|
|
227
|
-
/** GitHub repository in owner/repo format */
|
|
228
|
-
repository: string;
|
|
229
|
-
/** Base branch for creating worktrees */
|
|
230
|
-
baseBranch: string;
|
|
231
|
-
/** Wide events configuration */
|
|
232
|
-
events?: EventsConfig;
|
|
233
|
-
/**
|
|
234
|
-
* @deprecated Use user-level Linear config instead.
|
|
235
|
-
* Kept for backwards compatibility - will be migrated on first access.
|
|
236
|
-
*/
|
|
237
|
-
linearApiKey?: string;
|
|
238
|
-
/**
|
|
239
|
-
* @deprecated Use linearTeams instead.
|
|
240
|
-
* Kept for backwards compatibility - will be migrated on first access.
|
|
241
|
-
*/
|
|
242
|
-
linearTeamKey?: string;
|
|
243
|
-
/** Linear teams this project uses (subset of user's teams) */
|
|
244
|
-
linearTeams?: string[];
|
|
245
|
-
/** ISO timestamp when project was created */
|
|
246
|
-
createdAt: string;
|
|
247
|
-
/** ISO timestamp when project was last accessed */
|
|
248
|
-
lastAccessed: string;
|
|
249
|
-
/** Custom values collected during bundle onboarding (from input steps) */
|
|
250
|
-
bundleValues?: Record<string, string>;
|
|
251
|
-
/** Keys of secrets stored in OS keychain via Bun.secrets (from secret steps) */
|
|
252
|
-
bundleSecretKeys?: string[];
|
|
253
|
-
/** Per-workspace bundle metadata keyed by workspace scope */
|
|
254
|
-
bundleWorkspaceState?: Record<string, WorkspaceBundleState>;
|
|
255
|
-
/** History of confirm/check steps keyed by step fingerprint */
|
|
256
|
-
bundleConfirmHistory?: Record<string, BundleConfirmHistoryEntry>;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* Default global configuration values
|
|
261
|
-
*/
|
|
262
|
-
export const DEFAULT_GLOBAL_CONFIG: GlobalConfig = {
|
|
263
|
-
currentProject: null,
|
|
264
|
-
projectsDir: '', // Will be set to ~/gitspace at runtime
|
|
265
|
-
defaultBaseBranch: 'main',
|
|
266
|
-
staleDays: 30,
|
|
267
|
-
notifications: { ...DEFAULT_NOTIFICATION_CONFIG },
|
|
268
|
-
};
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Create default project configuration
|
|
272
|
-
*/
|
|
273
|
-
export function createDefaultProjectConfig(
|
|
274
|
-
name: string,
|
|
275
|
-
repository: string,
|
|
276
|
-
baseBranch: string
|
|
277
|
-
): ProjectConfig {
|
|
278
|
-
const now = new Date().toISOString();
|
|
279
|
-
return {
|
|
280
|
-
name,
|
|
281
|
-
repository,
|
|
282
|
-
baseBranch,
|
|
283
|
-
createdAt: now,
|
|
284
|
-
lastAccessed: now,
|
|
285
|
-
events: { ...DEFAULT_EVENTS_CONFIG },
|
|
286
|
-
};
|
|
287
|
-
}
|