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/types/review.ts
DELETED
|
@@ -1,349 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Review system types
|
|
3
|
-
*
|
|
4
|
-
* Supports threaded code review with hunk-level approve/reject decisions,
|
|
5
|
-
* line-range comments, file-level notes, and workspace-level notes.
|
|
6
|
-
* Bidirectionally syncs with GitHub PR review comments.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
// ============================================================================
|
|
10
|
-
// Thread Targets
|
|
11
|
-
// ============================================================================
|
|
12
|
-
|
|
13
|
-
/** Attach to a specific diff hunk (@@ block) — can carry an approve/reject decision */
|
|
14
|
-
export interface HunkTarget {
|
|
15
|
-
kind: 'hunk';
|
|
16
|
-
file: string;
|
|
17
|
-
/** The @@ -start,lines +start,lines @@ header string — used as stable hunk ID */
|
|
18
|
-
hunkHeader: string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/** Attach to a range of lines in a file */
|
|
22
|
-
export interface LineTarget {
|
|
23
|
-
kind: 'line';
|
|
24
|
-
file: string;
|
|
25
|
-
startLine: number;
|
|
26
|
-
endLine: number;
|
|
27
|
-
/** Which side of the diff — LEFT (old) or RIGHT (new) */
|
|
28
|
-
side: 'LEFT' | 'RIGHT';
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** Attach to an entire file */
|
|
32
|
-
export interface FileTarget {
|
|
33
|
-
kind: 'file';
|
|
34
|
-
file: string;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/** Attach to the workspace as a whole — general review comment */
|
|
38
|
-
export interface WorkspaceTarget {
|
|
39
|
-
kind: 'workspace';
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export type ThreadTarget = HunkTarget | LineTarget | FileTarget | WorkspaceTarget;
|
|
43
|
-
|
|
44
|
-
// ============================================================================
|
|
45
|
-
// Hunk Decision
|
|
46
|
-
// ============================================================================
|
|
47
|
-
|
|
48
|
-
/** Decision on a diff hunk — only valid when thread target is 'hunk' */
|
|
49
|
-
export type HunkDecision = 'approved' | 'rejected' | 'pending';
|
|
50
|
-
|
|
51
|
-
// ============================================================================
|
|
52
|
-
// Comment (thread reply)
|
|
53
|
-
// ============================================================================
|
|
54
|
-
|
|
55
|
-
export interface ReviewComment {
|
|
56
|
-
id: string;
|
|
57
|
-
/** The thread this comment belongs to */
|
|
58
|
-
threadId: string;
|
|
59
|
-
body: string;
|
|
60
|
-
/** 'local' for locally-authored, or GitHub username when imported */
|
|
61
|
-
author: string;
|
|
62
|
-
createdAt: string;
|
|
63
|
-
/** Set when synced from/to GitHub */
|
|
64
|
-
githubId?: number;
|
|
65
|
-
/** Set for local comments once they have been pushed to GitHub */
|
|
66
|
-
syncedToGitHubAt?: string;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// ============================================================================
|
|
70
|
-
// Thread (the unified container for all review activity)
|
|
71
|
-
// ============================================================================
|
|
72
|
-
|
|
73
|
-
export interface ReviewThread {
|
|
74
|
-
id: string;
|
|
75
|
-
target: ThreadTarget;
|
|
76
|
-
/**
|
|
77
|
-
* Approve/reject decision — only populated when target.kind === 'hunk'.
|
|
78
|
-
* undefined means not yet reviewed (equivalent to 'pending').
|
|
79
|
-
*/
|
|
80
|
-
decision?: HunkDecision;
|
|
81
|
-
/** Whether this thread has been resolved */
|
|
82
|
-
resolved: boolean;
|
|
83
|
-
/** Flat list: first comment is the root, subsequent are replies */
|
|
84
|
-
comments: ReviewComment[];
|
|
85
|
-
createdAt: string;
|
|
86
|
-
updatedAt: string;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// ============================================================================
|
|
90
|
-
// Review Session (the notes.json file content)
|
|
91
|
-
// ============================================================================
|
|
92
|
-
|
|
93
|
-
export interface ReviewSession {
|
|
94
|
-
version: '1.0';
|
|
95
|
-
workspaceName: string;
|
|
96
|
-
baseBranch: string;
|
|
97
|
-
/** Set when associated with a GitHub PR */
|
|
98
|
-
prNumber: number | null;
|
|
99
|
-
threads: ReviewThread[];
|
|
100
|
-
createdAt: string;
|
|
101
|
-
updatedAt: string;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// ============================================================================
|
|
105
|
-
// Derived Statuses (computed, never stored)
|
|
106
|
-
// ============================================================================
|
|
107
|
-
|
|
108
|
-
/** Per-file review status derived from hunk decisions */
|
|
109
|
-
export type FileReviewStatus =
|
|
110
|
-
| 'not_reviewed' // No hunk decisions made
|
|
111
|
-
| 'in_progress' // Some hunks reviewed, some pending
|
|
112
|
-
| 'approved' // All hunks approved, none rejected
|
|
113
|
-
| 'needs_changes'; // At least one hunk rejected
|
|
114
|
-
|
|
115
|
-
/** Overall workspace review status derived from all files */
|
|
116
|
-
export type WorkspaceReviewStatus =
|
|
117
|
-
| 'not_started' // No threads at all
|
|
118
|
-
| 'in_progress' // Some threads exist but not all hunks reviewed
|
|
119
|
-
| 'approved' // All files approved
|
|
120
|
-
| 'changes_required'; // At least one file needs changes
|
|
121
|
-
|
|
122
|
-
/** Summary of a file's review state */
|
|
123
|
-
export interface FileReviewSummary {
|
|
124
|
-
file: string;
|
|
125
|
-
status: FileReviewStatus;
|
|
126
|
-
totalHunks: number;
|
|
127
|
-
approvedHunks: number;
|
|
128
|
-
rejectedHunks: number;
|
|
129
|
-
pendingHunks: number;
|
|
130
|
-
threadCount: number;
|
|
131
|
-
unresolvedThreadCount: number;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// ============================================================================
|
|
135
|
-
// Review Operations (the request/response contract for WebSocket messages)
|
|
136
|
-
// ============================================================================
|
|
137
|
-
|
|
138
|
-
/** Operations that can be sent from client to machine */
|
|
139
|
-
export type ReviewOperation =
|
|
140
|
-
| { op: 'get_threads'; projectName: string; workspaceName: string }
|
|
141
|
-
| {
|
|
142
|
-
op: 'create_thread';
|
|
143
|
-
projectName: string;
|
|
144
|
-
workspaceName: string;
|
|
145
|
-
target: ThreadTarget;
|
|
146
|
-
body: string;
|
|
147
|
-
decision?: HunkDecision;
|
|
148
|
-
}
|
|
149
|
-
| {
|
|
150
|
-
op: 'add_reply';
|
|
151
|
-
projectName: string;
|
|
152
|
-
workspaceName: string;
|
|
153
|
-
threadId: string;
|
|
154
|
-
body: string;
|
|
155
|
-
}
|
|
156
|
-
| {
|
|
157
|
-
op: 'update_thread';
|
|
158
|
-
projectName: string;
|
|
159
|
-
workspaceName: string;
|
|
160
|
-
threadId: string;
|
|
161
|
-
resolved?: boolean;
|
|
162
|
-
decision?: HunkDecision;
|
|
163
|
-
}
|
|
164
|
-
| {
|
|
165
|
-
op: 'update_comment';
|
|
166
|
-
projectName: string;
|
|
167
|
-
workspaceName: string;
|
|
168
|
-
threadId: string;
|
|
169
|
-
commentId: string;
|
|
170
|
-
body: string;
|
|
171
|
-
}
|
|
172
|
-
| {
|
|
173
|
-
op: 'delete_comment';
|
|
174
|
-
projectName: string;
|
|
175
|
-
workspaceName: string;
|
|
176
|
-
threadId: string;
|
|
177
|
-
commentId: string;
|
|
178
|
-
}
|
|
179
|
-
| { op: 'get_changed_files'; projectName: string; workspaceName: string }
|
|
180
|
-
| { op: 'get_diff'; projectName: string; workspaceName: string }
|
|
181
|
-
| {
|
|
182
|
-
op: 'get_file_diff';
|
|
183
|
-
projectName: string;
|
|
184
|
-
workspaceName: string;
|
|
185
|
-
filePath: string;
|
|
186
|
-
prevFilePath?: string;
|
|
187
|
-
}
|
|
188
|
-
| {
|
|
189
|
-
op: 'get_file_versions';
|
|
190
|
-
projectName: string;
|
|
191
|
-
workspaceName: string;
|
|
192
|
-
filePath: string;
|
|
193
|
-
/** Optional old path for renames (rename from) */
|
|
194
|
-
prevFilePath?: string;
|
|
195
|
-
}
|
|
196
|
-
| {
|
|
197
|
-
op: 'get_file_context_range';
|
|
198
|
-
projectName: string;
|
|
199
|
-
workspaceName: string;
|
|
200
|
-
filePath: string;
|
|
201
|
-
/** Optional old path for renames (rename from) */
|
|
202
|
-
prevFilePath?: string;
|
|
203
|
-
/** 1-based inclusive range on old/base side. Omit for full file */
|
|
204
|
-
oldStart?: number;
|
|
205
|
-
/** 1-based inclusive range on old/base side. Omit for full file */
|
|
206
|
-
oldEnd?: number;
|
|
207
|
-
/** 1-based inclusive range on new/head side. Omit for full file */
|
|
208
|
-
newStart?: number;
|
|
209
|
-
/** 1-based inclusive range on new/head side. Omit for full file */
|
|
210
|
-
newEnd?: number;
|
|
211
|
-
}
|
|
212
|
-
| { op: 'import_github'; projectName: string; workspaceName: string; prNumber?: number }
|
|
213
|
-
| { op: 'push_github'; projectName: string; workspaceName: string; prNumber?: number };
|
|
214
|
-
|
|
215
|
-
export interface ReviewChangedFile {
|
|
216
|
-
filePath: string;
|
|
217
|
-
/** Optional old path for renames/copies (source path) */
|
|
218
|
-
prevFilePath?: string;
|
|
219
|
-
changeType: 'new' | 'deleted' | 'renamed' | 'copied' | 'modified';
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/** Results returned from machine to client */
|
|
223
|
-
export type ReviewResult =
|
|
224
|
-
| { op: 'threads'; threads: ReviewThread[] }
|
|
225
|
-
| { op: 'thread_created'; thread: ReviewThread }
|
|
226
|
-
| { op: 'thread_updated'; thread: ReviewThread }
|
|
227
|
-
| { op: 'comment_added'; thread: ReviewThread }
|
|
228
|
-
| { op: 'comment_updated'; thread: ReviewThread }
|
|
229
|
-
| { op: 'comment_deleted'; thread: ReviewThread }
|
|
230
|
-
| {
|
|
231
|
-
op: 'changed_files';
|
|
232
|
-
files: ReviewChangedFile[];
|
|
233
|
-
baseBranch: string;
|
|
234
|
-
headBranch: string;
|
|
235
|
-
}
|
|
236
|
-
| { op: 'diff'; diff: string; baseBranch: string; headBranch: string }
|
|
237
|
-
| {
|
|
238
|
-
op: 'file_diff';
|
|
239
|
-
filePath: string;
|
|
240
|
-
prevFilePath?: string;
|
|
241
|
-
diff: string;
|
|
242
|
-
}
|
|
243
|
-
| {
|
|
244
|
-
op: 'file_versions';
|
|
245
|
-
filePath: string;
|
|
246
|
-
prevFilePath?: string;
|
|
247
|
-
oldContents: string | null;
|
|
248
|
-
newContents: string | null;
|
|
249
|
-
}
|
|
250
|
-
| {
|
|
251
|
-
op: 'file_context_range';
|
|
252
|
-
filePath: string;
|
|
253
|
-
prevFilePath?: string;
|
|
254
|
-
oldStart: number;
|
|
255
|
-
oldLines: string[];
|
|
256
|
-
oldTotal: number;
|
|
257
|
-
newStart: number;
|
|
258
|
-
newLines: string[];
|
|
259
|
-
newTotal: number;
|
|
260
|
-
}
|
|
261
|
-
| { op: 'github_imported'; imported: number; threads: ReviewThread[] }
|
|
262
|
-
| { op: 'github_pushed'; prNumber: number; url: string };
|
|
263
|
-
|
|
264
|
-
// ============================================================================
|
|
265
|
-
// Helpers
|
|
266
|
-
// ============================================================================
|
|
267
|
-
|
|
268
|
-
/** Compute per-file review status from threads */
|
|
269
|
-
export function computeFileStatuses(threads: ReviewThread[]): Map<string, FileReviewSummary> {
|
|
270
|
-
const fileMap = new Map<string, FileReviewSummary>();
|
|
271
|
-
|
|
272
|
-
const getOrCreate = (file: string): FileReviewSummary => {
|
|
273
|
-
if (!fileMap.has(file)) {
|
|
274
|
-
fileMap.set(file, {
|
|
275
|
-
file,
|
|
276
|
-
status: 'not_reviewed',
|
|
277
|
-
totalHunks: 0,
|
|
278
|
-
approvedHunks: 0,
|
|
279
|
-
rejectedHunks: 0,
|
|
280
|
-
pendingHunks: 0,
|
|
281
|
-
threadCount: 0,
|
|
282
|
-
unresolvedThreadCount: 0,
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
return fileMap.get(file)!;
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
for (const thread of threads) {
|
|
289
|
-
const file = thread.target.kind === 'workspace' ? null : thread.target.file;
|
|
290
|
-
if (!file) continue;
|
|
291
|
-
|
|
292
|
-
const summary = getOrCreate(file);
|
|
293
|
-
summary.threadCount++;
|
|
294
|
-
if (!thread.resolved) {
|
|
295
|
-
summary.unresolvedThreadCount++;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
if (thread.target.kind === 'hunk') {
|
|
299
|
-
summary.totalHunks++;
|
|
300
|
-
const decision = thread.decision ?? 'pending';
|
|
301
|
-
if (decision === 'approved') summary.approvedHunks++;
|
|
302
|
-
else if (decision === 'rejected') summary.rejectedHunks++;
|
|
303
|
-
else summary.pendingHunks++;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
// Compute derived status for each file
|
|
308
|
-
for (const summary of fileMap.values()) {
|
|
309
|
-
if (summary.totalHunks === 0) {
|
|
310
|
-
summary.status = 'not_reviewed';
|
|
311
|
-
} else if (summary.rejectedHunks > 0) {
|
|
312
|
-
summary.status = 'needs_changes';
|
|
313
|
-
} else if (summary.pendingHunks > 0) {
|
|
314
|
-
summary.status = 'in_progress';
|
|
315
|
-
} else {
|
|
316
|
-
summary.status = 'approved';
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
return fileMap;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
/** Compute overall workspace review status */
|
|
324
|
-
export function computeWorkspaceStatus(threads: ReviewThread[]): WorkspaceReviewStatus {
|
|
325
|
-
if (threads.length === 0) return 'not_started';
|
|
326
|
-
|
|
327
|
-
const fileStatuses = computeFileStatuses(threads);
|
|
328
|
-
|
|
329
|
-
// If all threads are workspace-level they don't appear in fileStatuses.
|
|
330
|
-
// Treat that as in_progress (reviewer has left notes but made no hunk decisions).
|
|
331
|
-
if (fileStatuses.size === 0) return 'in_progress';
|
|
332
|
-
|
|
333
|
-
let anyChangesRequired = false;
|
|
334
|
-
let anyInProgress = false;
|
|
335
|
-
let anyNotReviewed = false;
|
|
336
|
-
|
|
337
|
-
for (const summary of fileStatuses.values()) {
|
|
338
|
-
if (summary.status === 'needs_changes') anyChangesRequired = true;
|
|
339
|
-
else if (summary.status === 'in_progress') anyInProgress = true;
|
|
340
|
-
else if (summary.status === 'not_reviewed') anyNotReviewed = true;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
if (anyChangesRequired) return 'changes_required';
|
|
344
|
-
// Files with only non-hunk threads (comments but no hunk decisions) are
|
|
345
|
-
// 'not_reviewed'. That means the reviewer has started looking but hasn't
|
|
346
|
-
// approved/rejected anything — call that 'in_progress'.
|
|
347
|
-
if (anyInProgress || anyNotReviewed) return 'in_progress';
|
|
348
|
-
return 'approved';
|
|
349
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for workspace fuzzy matching
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* A workspace candidate for fuzzy matching
|
|
7
|
-
*/
|
|
8
|
-
export interface WorkspaceCandidate {
|
|
9
|
-
/** Workspace name */
|
|
10
|
-
name: string;
|
|
11
|
-
/** Absolute path to workspace */
|
|
12
|
-
path: string;
|
|
13
|
-
/** Current git branch */
|
|
14
|
-
branch: string;
|
|
15
|
-
/** Commits ahead of remote */
|
|
16
|
-
ahead: number;
|
|
17
|
-
/** Commits behind remote */
|
|
18
|
-
behind: number;
|
|
19
|
-
/** Number of uncommitted changes */
|
|
20
|
-
uncommittedChanges: number;
|
|
21
|
-
/** Last commit message */
|
|
22
|
-
lastCommit: string;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Result of fuzzy matching
|
|
27
|
-
*/
|
|
28
|
-
export interface FuzzyMatch {
|
|
29
|
-
/** Original candidate item */
|
|
30
|
-
item: WorkspaceCandidate;
|
|
31
|
-
/** Match score (0-100, higher is better) */
|
|
32
|
-
score: number;
|
|
33
|
-
/** Indices of matched characters in item.name */
|
|
34
|
-
matchedIndices: number[];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Workspace with ranking information
|
|
39
|
-
*/
|
|
40
|
-
export interface RankedWorkspace {
|
|
41
|
-
/** Workspace candidate */
|
|
42
|
-
workspace: WorkspaceCandidate;
|
|
43
|
-
/** Fuzzy match score */
|
|
44
|
-
matchScore: number;
|
|
45
|
-
/** Final ranking score (includes bonuses) */
|
|
46
|
-
finalScore: number;
|
|
47
|
-
/** Character indices that matched */
|
|
48
|
-
matchedIndices: number[];
|
|
49
|
-
}
|
package/src/types/workspace.ts
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for workspace management
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Information about a git worktree workspace
|
|
7
|
-
*/
|
|
8
|
-
export interface WorktreeInfo {
|
|
9
|
-
/** Workspace name (directory name) */
|
|
10
|
-
name: string
|
|
11
|
-
/** Absolute path to the workspace directory */
|
|
12
|
-
path: string
|
|
13
|
-
/** Current git branch */
|
|
14
|
-
branch: string
|
|
15
|
-
/** Number of commits ahead of base branch */
|
|
16
|
-
ahead: number
|
|
17
|
-
/** Number of commits behind base branch */
|
|
18
|
-
behind: number
|
|
19
|
-
/** Number of uncommitted changes */
|
|
20
|
-
uncommittedChanges: number
|
|
21
|
-
/** Last commit message */
|
|
22
|
-
lastCommit: string
|
|
23
|
-
/** Last commit date */
|
|
24
|
-
lastCommitDate: Date
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Project information for listing
|
|
29
|
-
*/
|
|
30
|
-
export interface ProjectInfo {
|
|
31
|
-
/** Project name */
|
|
32
|
-
name: string
|
|
33
|
-
/** GitHub repository (owner/repo) */
|
|
34
|
-
repository: string
|
|
35
|
-
/** Absolute path to project directory */
|
|
36
|
-
path: string
|
|
37
|
-
/** Number of workspaces in this project */
|
|
38
|
-
workspaceCount: number
|
|
39
|
-
/** Whether this is the current project */
|
|
40
|
-
isCurrent: boolean
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Dependency information
|
|
45
|
-
*/
|
|
46
|
-
export interface Dependency {
|
|
47
|
-
/** Display name of the dependency */
|
|
48
|
-
name: string
|
|
49
|
-
/** Command to check (e.g., "gh", "git") */
|
|
50
|
-
command: string
|
|
51
|
-
/** Arguments to run for version check */
|
|
52
|
-
checkArgs: string[]
|
|
53
|
-
/** URL for installation instructions */
|
|
54
|
-
installUrl: string
|
|
55
|
-
/** Optional custom auth check function */
|
|
56
|
-
authCheck?: () => Promise<boolean>
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Options for creating a workspace
|
|
61
|
-
*/
|
|
62
|
-
export interface CreateWorkspaceOptions {
|
|
63
|
-
/** Workspace name */
|
|
64
|
-
name: string
|
|
65
|
-
/** Branch name (defaults to workspace name) */
|
|
66
|
-
branchName?: string
|
|
67
|
-
/** Base branch to create from (defaults to project base branch) */
|
|
68
|
-
fromBranch?: string
|
|
69
|
-
/** Whether to skip opening interactive shell */
|
|
70
|
-
noShell?: boolean
|
|
71
|
-
/** Whether to skip running setup commands */
|
|
72
|
-
noSetup?: boolean
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Label attached to an issue
|
|
77
|
-
*/
|
|
78
|
-
export interface Label {
|
|
79
|
-
/** Unique identifier for the label */
|
|
80
|
-
id: string
|
|
81
|
-
/** Display name of the label */
|
|
82
|
-
name: string
|
|
83
|
-
/** Hex color code for the label */
|
|
84
|
-
color: string
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* User assigned to an issue
|
|
89
|
-
*/
|
|
90
|
-
export interface User {
|
|
91
|
-
/** Unique identifier for the user */
|
|
92
|
-
id: string
|
|
93
|
-
/** Display name of the user */
|
|
94
|
-
name: string
|
|
95
|
-
/** Email address of the user */
|
|
96
|
-
email: string
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Issue state information
|
|
101
|
-
*/
|
|
102
|
-
export interface IssueState {
|
|
103
|
-
/** Unique identifier for the state */
|
|
104
|
-
id: string
|
|
105
|
-
/** Display name of the state (e.g., "In Progress", "Done") */
|
|
106
|
-
name: string
|
|
107
|
-
/** State type (e.g., "started", "completed", "canceled") */
|
|
108
|
-
type: string
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Linear issue attachment
|
|
113
|
-
*/
|
|
114
|
-
export interface LinearAttachment {
|
|
115
|
-
/** Unique identifier for the attachment */
|
|
116
|
-
id: string
|
|
117
|
-
/** URL to the attachment */
|
|
118
|
-
url: string
|
|
119
|
-
/** Title of the attachment */
|
|
120
|
-
title: string | null
|
|
121
|
-
/** Source type (e.g., "upload", "url") */
|
|
122
|
-
sourceType: string | null
|
|
123
|
-
/** Creation timestamp */
|
|
124
|
-
createdAt: Date
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Linear issue for workspace creation
|
|
129
|
-
*/
|
|
130
|
-
export interface LinearIssue {
|
|
131
|
-
/** Issue ID */
|
|
132
|
-
id: string
|
|
133
|
-
/** Issue identifier (e.g., "ENG-123") */
|
|
134
|
-
identifier: string
|
|
135
|
-
/** Issue title */
|
|
136
|
-
title: string
|
|
137
|
-
/** Issue state */
|
|
138
|
-
state: Promise<IssueState> | undefined
|
|
139
|
-
/** Issue description/body (can be null) */
|
|
140
|
-
description: string | null
|
|
141
|
-
/** Web URL to view the issue */
|
|
142
|
-
url: string
|
|
143
|
-
/** User assigned to the issue (null if unassigned) */
|
|
144
|
-
assignee: Promise<User> | undefined
|
|
145
|
-
/** Timestamp when issue was created */
|
|
146
|
-
createdAt: Date
|
|
147
|
-
/** Timestamp when issue was last updated */
|
|
148
|
-
updatedAt: Date
|
|
149
|
-
/** Issue attachments (images, files, etc.) - lazy-loaded function */
|
|
150
|
-
attachments: () => Promise<LinearAttachment[]>
|
|
151
|
-
}
|