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/core/config.ts
DELETED
|
@@ -1,405 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configuration management for global and project configs
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
existsSync,
|
|
7
|
-
mkdirSync,
|
|
8
|
-
readFileSync,
|
|
9
|
-
writeFileSync,
|
|
10
|
-
readdirSync,
|
|
11
|
-
statSync,
|
|
12
|
-
chmodSync,
|
|
13
|
-
} from 'fs'
|
|
14
|
-
import { join, dirname } from 'path'
|
|
15
|
-
import { homedir } from 'os'
|
|
16
|
-
import type { GlobalConfig, ProjectConfig, NotificationConfig, EventsConfig } from '../types/config.js'
|
|
17
|
-
import {
|
|
18
|
-
DEFAULT_GLOBAL_CONFIG,
|
|
19
|
-
DEFAULT_NOTIFICATION_CONFIG,
|
|
20
|
-
DEFAULT_EVENTS_CONFIG,
|
|
21
|
-
createDefaultProjectConfig,
|
|
22
|
-
} from '../types/config.js'
|
|
23
|
-
import { SpacesError } from '../types/errors.js'
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Get the global gitspace directory path
|
|
27
|
-
*/
|
|
28
|
-
export function getGitspaceDir(): string {
|
|
29
|
-
return join(homedir(), 'gitspace')
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @deprecated Use getGitspaceDir() instead
|
|
34
|
-
*/
|
|
35
|
-
export function getSpacesDir(): string {
|
|
36
|
-
return getGitspaceDir()
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Get the global config file path
|
|
41
|
-
*/
|
|
42
|
-
export function getGlobalConfigPath(): string {
|
|
43
|
-
return join(getSpacesDir(), '.config.json')
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Get a project directory path
|
|
48
|
-
*/
|
|
49
|
-
export function getProjectDir(projectName: string): string {
|
|
50
|
-
return join(getSpacesDir(), projectName)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Get a project config file path
|
|
55
|
-
*/
|
|
56
|
-
export function getProjectConfigPath(projectName: string): string {
|
|
57
|
-
return join(getProjectDir(projectName), '.config.json')
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Get the base repository directory for a project
|
|
62
|
-
*/
|
|
63
|
-
export function getProjectBaseDir(projectName: string): string {
|
|
64
|
-
return join(getProjectDir(projectName), 'base')
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Get the workspaces directory for a project
|
|
69
|
-
*/
|
|
70
|
-
export function getProjectWorkspacesDir(projectName: string): string {
|
|
71
|
-
return join(getProjectDir(projectName), 'workspaces')
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Initialize global config with defaults
|
|
76
|
-
*/
|
|
77
|
-
function initializeGlobalConfig(): GlobalConfig {
|
|
78
|
-
return {
|
|
79
|
-
...DEFAULT_GLOBAL_CONFIG,
|
|
80
|
-
projectsDir: getSpacesDir(),
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Read global configuration
|
|
86
|
-
*/
|
|
87
|
-
export function readGlobalConfig(): GlobalConfig {
|
|
88
|
-
const configPath = getGlobalConfigPath()
|
|
89
|
-
|
|
90
|
-
if (!existsSync(configPath)) {
|
|
91
|
-
// Return default config if file doesn't exist
|
|
92
|
-
return initializeGlobalConfig()
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
try {
|
|
96
|
-
const content = readFileSync(configPath, 'utf-8')
|
|
97
|
-
const config = JSON.parse(content) as GlobalConfig
|
|
98
|
-
|
|
99
|
-
// Merge with defaults to ensure all fields exist
|
|
100
|
-
return {
|
|
101
|
-
...initializeGlobalConfig(),
|
|
102
|
-
...config,
|
|
103
|
-
}
|
|
104
|
-
} catch (error) {
|
|
105
|
-
throw new SpacesError(
|
|
106
|
-
`Failed to read global config: ${
|
|
107
|
-
error instanceof Error ? error.message : 'Unknown error'
|
|
108
|
-
}`,
|
|
109
|
-
'SYSTEM_ERROR',
|
|
110
|
-
2
|
|
111
|
-
)
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Write global configuration
|
|
117
|
-
*/
|
|
118
|
-
export function writeGlobalConfig(config: GlobalConfig): void {
|
|
119
|
-
const configPath = getGlobalConfigPath()
|
|
120
|
-
const spacesDir = dirname(configPath)
|
|
121
|
-
|
|
122
|
-
// Ensure spaces directory exists
|
|
123
|
-
if (!existsSync(spacesDir)) {
|
|
124
|
-
mkdirSync(spacesDir, { recursive: true })
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
try {
|
|
128
|
-
writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8')
|
|
129
|
-
chmodSync(configPath, 0o600)
|
|
130
|
-
} catch (error) {
|
|
131
|
-
throw new SpacesError(
|
|
132
|
-
`Failed to write global config: ${
|
|
133
|
-
error instanceof Error ? error.message : 'Unknown error'
|
|
134
|
-
}`,
|
|
135
|
-
'SYSTEM_ERROR',
|
|
136
|
-
2
|
|
137
|
-
)
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Update global configuration
|
|
143
|
-
*/
|
|
144
|
-
export function updateGlobalConfig(
|
|
145
|
-
updates: Partial<GlobalConfig>
|
|
146
|
-
): GlobalConfig {
|
|
147
|
-
const config = readGlobalConfig()
|
|
148
|
-
const updated = { ...config, ...updates }
|
|
149
|
-
writeGlobalConfig(updated)
|
|
150
|
-
return updated
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Read project configuration
|
|
155
|
-
*/
|
|
156
|
-
export function readProjectConfig(projectName: string): ProjectConfig {
|
|
157
|
-
const configPath = getProjectConfigPath(projectName)
|
|
158
|
-
|
|
159
|
-
if (!existsSync(configPath)) {
|
|
160
|
-
throw new SpacesError(`Project "${projectName}" not found`, 'USER_ERROR', 1)
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
try {
|
|
164
|
-
const content = readFileSync(configPath, 'utf-8')
|
|
165
|
-
return JSON.parse(content) as ProjectConfig
|
|
166
|
-
} catch (error) {
|
|
167
|
-
throw new SpacesError(
|
|
168
|
-
`Failed to read project config for "${projectName}": ${
|
|
169
|
-
error instanceof Error ? error.message : 'Unknown error'
|
|
170
|
-
}`,
|
|
171
|
-
'SYSTEM_ERROR',
|
|
172
|
-
2
|
|
173
|
-
)
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Write project configuration
|
|
179
|
-
*/
|
|
180
|
-
export function writeProjectConfig(
|
|
181
|
-
projectName: string,
|
|
182
|
-
config: ProjectConfig
|
|
183
|
-
): void {
|
|
184
|
-
const configPath = getProjectConfigPath(projectName)
|
|
185
|
-
const projectDir = dirname(configPath)
|
|
186
|
-
|
|
187
|
-
// Ensure project directory exists
|
|
188
|
-
if (!existsSync(projectDir)) {
|
|
189
|
-
mkdirSync(projectDir, { recursive: true })
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
try {
|
|
193
|
-
writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8')
|
|
194
|
-
chmodSync(configPath, 0o600)
|
|
195
|
-
} catch (error) {
|
|
196
|
-
throw new SpacesError(
|
|
197
|
-
`Failed to write project config for "${projectName}": ${
|
|
198
|
-
error instanceof Error ? error.message : 'Unknown error'
|
|
199
|
-
}`,
|
|
200
|
-
'SYSTEM_ERROR',
|
|
201
|
-
2
|
|
202
|
-
)
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Update project configuration
|
|
208
|
-
*/
|
|
209
|
-
export function updateProjectConfig(
|
|
210
|
-
projectName: string,
|
|
211
|
-
updates: Partial<ProjectConfig>
|
|
212
|
-
): ProjectConfig {
|
|
213
|
-
const config = readProjectConfig(projectName)
|
|
214
|
-
const updated = { ...config, ...updates }
|
|
215
|
-
writeProjectConfig(projectName, updated)
|
|
216
|
-
return updated
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Get current project name from env var or global config
|
|
221
|
-
* Resolution order:
|
|
222
|
-
* 1. SPACES_CURRENT_PROJECT environment variable
|
|
223
|
-
* 2. currentProject field in global config
|
|
224
|
-
* 3. null if neither is set
|
|
225
|
-
*/
|
|
226
|
-
export function getCurrentProject(): string | null {
|
|
227
|
-
// Check environment variable first
|
|
228
|
-
const envProject = process.env.SPACES_CURRENT_PROJECT
|
|
229
|
-
if (envProject) {
|
|
230
|
-
return envProject
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
// Fall back to global config
|
|
234
|
-
const globalConfig = readGlobalConfig()
|
|
235
|
-
return globalConfig.currentProject
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Set current project in global config
|
|
240
|
-
*/
|
|
241
|
-
export function setCurrentProject(projectName: string): void {
|
|
242
|
-
updateGlobalConfig({ currentProject: projectName })
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* Check if the global config exists (first-time setup check)
|
|
247
|
-
*/
|
|
248
|
-
export function isFirstTimeSetup(): boolean {
|
|
249
|
-
return !existsSync(getGlobalConfigPath())
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Initialize spaces directory and config for first-time setup
|
|
254
|
-
*/
|
|
255
|
-
export function initializeSpaces(): void {
|
|
256
|
-
const spacesDir = getSpacesDir()
|
|
257
|
-
|
|
258
|
-
// Create spaces directory if it doesn't exist
|
|
259
|
-
if (!existsSync(spacesDir)) {
|
|
260
|
-
mkdirSync(spacesDir, { recursive: true })
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// Create global config if it doesn't exist
|
|
264
|
-
if (!existsSync(getGlobalConfigPath())) {
|
|
265
|
-
writeGlobalConfig(initializeGlobalConfig())
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Get all project names
|
|
271
|
-
*/
|
|
272
|
-
export function getAllProjectNames(): string[] {
|
|
273
|
-
const spacesDir = getSpacesDir()
|
|
274
|
-
|
|
275
|
-
if (!existsSync(spacesDir)) {
|
|
276
|
-
return []
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
try {
|
|
280
|
-
const entries = readdirSync(spacesDir) as string[]
|
|
281
|
-
|
|
282
|
-
// Filter to only directories that have a .config.json file
|
|
283
|
-
return entries.filter((entry: string) => {
|
|
284
|
-
const projectDir = join(spacesDir, entry)
|
|
285
|
-
const configPath = join(projectDir, '.config.json')
|
|
286
|
-
return (
|
|
287
|
-
statSync(projectDir).isDirectory() &&
|
|
288
|
-
existsSync(configPath) &&
|
|
289
|
-
entry !== 'app' // Exclude the app directory
|
|
290
|
-
)
|
|
291
|
-
})
|
|
292
|
-
} catch (error) {
|
|
293
|
-
throw new SpacesError(
|
|
294
|
-
`Failed to list projects: ${
|
|
295
|
-
error instanceof Error ? error.message : 'Unknown error'
|
|
296
|
-
}`,
|
|
297
|
-
'SYSTEM_ERROR',
|
|
298
|
-
2
|
|
299
|
-
)
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* Check if a project exists
|
|
305
|
-
*/
|
|
306
|
-
export function projectExists(projectName: string): boolean {
|
|
307
|
-
const configPath = getProjectConfigPath(projectName)
|
|
308
|
-
return existsSync(configPath)
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* Create a new project configuration
|
|
313
|
-
*/
|
|
314
|
-
export function createProject(
|
|
315
|
-
projectName: string,
|
|
316
|
-
repository: string,
|
|
317
|
-
baseBranch: string
|
|
318
|
-
): ProjectConfig {
|
|
319
|
-
const config = createDefaultProjectConfig(
|
|
320
|
-
projectName,
|
|
321
|
-
repository,
|
|
322
|
-
baseBranch
|
|
323
|
-
)
|
|
324
|
-
|
|
325
|
-
// Create project directories
|
|
326
|
-
const projectDir = getProjectDir(projectName)
|
|
327
|
-
const baseDir = getProjectBaseDir(projectName)
|
|
328
|
-
const workspacesDir = getProjectWorkspacesDir(projectName)
|
|
329
|
-
|
|
330
|
-
mkdirSync(projectDir, { recursive: true })
|
|
331
|
-
mkdirSync(baseDir, { recursive: true })
|
|
332
|
-
mkdirSync(workspacesDir, { recursive: true })
|
|
333
|
-
|
|
334
|
-
// Write project config
|
|
335
|
-
writeProjectConfig(projectName, config)
|
|
336
|
-
|
|
337
|
-
return config
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
// ============================================================================
|
|
341
|
-
// Notification Config Helpers
|
|
342
|
-
// ============================================================================
|
|
343
|
-
|
|
344
|
-
/**
|
|
345
|
-
* Get notification configuration (with defaults for missing fields)
|
|
346
|
-
*/
|
|
347
|
-
export function getNotificationConfig(): NotificationConfig {
|
|
348
|
-
const globalConfig = readGlobalConfig()
|
|
349
|
-
const userConfig = globalConfig.notifications
|
|
350
|
-
|
|
351
|
-
if (!userConfig) {
|
|
352
|
-
return { ...DEFAULT_NOTIFICATION_CONFIG }
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
// Merge with defaults to ensure all fields exist
|
|
356
|
-
return {
|
|
357
|
-
enabled: userConfig.enabled ?? DEFAULT_NOTIFICATION_CONFIG.enabled,
|
|
358
|
-
minCommandDurationMs:
|
|
359
|
-
userConfig.minCommandDurationMs ??
|
|
360
|
-
DEFAULT_NOTIFICATION_CONFIG.minCommandDurationMs,
|
|
361
|
-
types: {
|
|
362
|
-
...DEFAULT_NOTIFICATION_CONFIG.types,
|
|
363
|
-
...userConfig.types,
|
|
364
|
-
},
|
|
365
|
-
toast: {
|
|
366
|
-
...DEFAULT_NOTIFICATION_CONFIG.toast,
|
|
367
|
-
...userConfig.toast,
|
|
368
|
-
},
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
/**
|
|
373
|
-
* Update notification configuration
|
|
374
|
-
*/
|
|
375
|
-
export function updateNotificationConfig(
|
|
376
|
-
updates: Partial<NotificationConfig>
|
|
377
|
-
): NotificationConfig {
|
|
378
|
-
const current = getNotificationConfig()
|
|
379
|
-
const updated: NotificationConfig = {
|
|
380
|
-
...current,
|
|
381
|
-
...updates,
|
|
382
|
-
types: {
|
|
383
|
-
...current.types,
|
|
384
|
-
...(updates.types || {}),
|
|
385
|
-
},
|
|
386
|
-
toast: {
|
|
387
|
-
...current.toast,
|
|
388
|
-
...(updates.toast || {}),
|
|
389
|
-
},
|
|
390
|
-
}
|
|
391
|
-
updateGlobalConfig({ notifications: updated })
|
|
392
|
-
return updated
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
/**
|
|
396
|
-
* Get events config for a project, falling back to defaults
|
|
397
|
-
*/
|
|
398
|
-
export function getProjectEventsConfig(projectName: string): EventsConfig {
|
|
399
|
-
try {
|
|
400
|
-
const config = readProjectConfig(projectName)
|
|
401
|
-
return config.events ?? { ...DEFAULT_EVENTS_CONFIG }
|
|
402
|
-
} catch {
|
|
403
|
-
return { ...DEFAULT_EVENTS_CONFIG }
|
|
404
|
-
}
|
|
405
|
-
}
|