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
|
@@ -1,443 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Remote session protocol - encrypted messages between client and machine
|
|
3
|
-
*
|
|
4
|
-
* These messages are sent over the encrypted channel after X3DH handshake.
|
|
5
|
-
*
|
|
6
|
-
* ## Protocol Layers
|
|
7
|
-
*
|
|
8
|
-
* 1. **Browsing Mode**: Uses JSON-RPC style messages (list_workspaces, attach_session, etc.)
|
|
9
|
-
* - Client sends: ClientToMachineMessage
|
|
10
|
-
* - Machine responds: MachineToClientMessage
|
|
11
|
-
*
|
|
12
|
-
* 2. **Attached Mode**: Uses binary framing with tmux-lite protocol
|
|
13
|
-
* - STREAM_ID.DATA (0): Raw PTY bytes (stdin/stdout)
|
|
14
|
-
* - STREAM_ID.CONTROL (1): JSON SessionCtrl messages (resize, detach, attach-init)
|
|
15
|
-
* - See src/lib/tmux-lite/protocol.ts for SessionCtrl/SessionEvent types
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
// Re-export InboxItem from tmux-lite protocol
|
|
19
|
-
export type { InboxItem } from "../tmux-lite/protocol.js";
|
|
20
|
-
export type { ReviewOperation, ReviewResult } from "../../types/review.js";
|
|
21
|
-
export type {
|
|
22
|
-
BundleRefreshPlan,
|
|
23
|
-
BundleRefreshSubmission,
|
|
24
|
-
} from "../../types/bundle-refresh.js";
|
|
25
|
-
|
|
26
|
-
// Re-export attached mode control types from tmux-lite
|
|
27
|
-
// These are used in attached mode for resize/detach/attach-init
|
|
28
|
-
export type { SessionCtrl, SessionEvent } from "../tmux-lite/protocol.js";
|
|
29
|
-
|
|
30
|
-
// ============================================================================
|
|
31
|
-
// Client → Machine Messages (Browsing Mode)
|
|
32
|
-
// ============================================================================
|
|
33
|
-
|
|
34
|
-
/** Request list of workspaces on the machine */
|
|
35
|
-
export interface ListWorkspacesRequest {
|
|
36
|
-
type: "list_workspaces";
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/** Request list of sessions, optionally filtered by workspace */
|
|
40
|
-
export interface ListSessionsRequest {
|
|
41
|
-
type: "list_sessions";
|
|
42
|
-
workspaceId?: string; // Filter by workspace, or all if omitted
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** Attach to a session (existing or new) */
|
|
46
|
-
export interface AttachSessionRequest {
|
|
47
|
-
type: "attach_session";
|
|
48
|
-
sessionId?: string; // Attach to existing session
|
|
49
|
-
workspaceId?: string; // Create new session in workspace
|
|
50
|
-
sessionName?: string; // Name for new session (optional)
|
|
51
|
-
cols?: number; // Terminal dimensions
|
|
52
|
-
rows?: number;
|
|
53
|
-
scriptPolicy?: 'auto' | 'skip';
|
|
54
|
-
command?: string; // Command to run (process sessions)
|
|
55
|
-
args?: string[]; // Command arguments
|
|
56
|
-
env?: Record<string, string>; // Environment variables
|
|
57
|
-
/** When true, the server blocks PTY writes from this client */
|
|
58
|
-
viewOnly?: boolean;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/** Request wide events for a workspace */
|
|
62
|
-
export interface GetEventsRequest {
|
|
63
|
-
type: "get_events";
|
|
64
|
-
workspacePath: string;
|
|
65
|
-
processName?: string;
|
|
66
|
-
filter?: import("../../types/events.js").WideEventFilter;
|
|
67
|
-
limit?: number;
|
|
68
|
-
sinceMs?: number;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/** Start a process in a workspace */
|
|
72
|
-
export interface StartProcessRequest {
|
|
73
|
-
type: "start_process";
|
|
74
|
-
workspaceId: string;
|
|
75
|
-
processName: string;
|
|
76
|
-
instance?: number;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/** Stop a process in a workspace */
|
|
80
|
-
export interface StopProcessRequest {
|
|
81
|
-
type: "stop_process";
|
|
82
|
-
workspaceId: string;
|
|
83
|
-
processName: string;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/** Request list of projects on the machine */
|
|
87
|
-
export interface ListProjectsRequest {
|
|
88
|
-
type: "list_projects";
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/** Kill a session */
|
|
92
|
-
export interface KillSessionRequest {
|
|
93
|
-
type: "kill_session";
|
|
94
|
-
sessionId: string;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/** Delete a workspace */
|
|
98
|
-
export interface DeleteWorkspaceRequest {
|
|
99
|
-
type: "delete_workspace";
|
|
100
|
-
workspaceId: string;
|
|
101
|
-
projectName: string; // Needed to locate workspace
|
|
102
|
-
scriptPolicy?: 'auto' | 'skip';
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/** Request inbox items */
|
|
106
|
-
export interface GetInboxRequest {
|
|
107
|
-
type: "get_inbox";
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/** Clear inbox item(s) */
|
|
111
|
-
export interface ClearInboxRequest {
|
|
112
|
-
type: "clear_inbox";
|
|
113
|
-
id?: string; // If omitted, clears all
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/** Mark inbox item as read */
|
|
117
|
-
export interface MarkInboxReadRequest {
|
|
118
|
-
type: "mark_inbox_read";
|
|
119
|
-
id: string;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/** Request current notification configuration */
|
|
123
|
-
export interface GetNotificationConfigRequest {
|
|
124
|
-
type: "get_notification_config";
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/** Update notification configuration */
|
|
128
|
-
export interface UpdateNotificationConfigRequest {
|
|
129
|
-
type: "update_notification_config";
|
|
130
|
-
config: import("../../notifications/types.js").NotificationConfig;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/** Request bundle refresh plan for a workspace */
|
|
134
|
-
export interface GetBundleRefreshPlanRequest {
|
|
135
|
-
type: "get_bundle_refresh_plan";
|
|
136
|
-
projectName: string;
|
|
137
|
-
workspaceId: string;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/** Apply bundle refresh submission for a workspace */
|
|
141
|
-
export interface ApplyBundleRefreshRequest {
|
|
142
|
-
type: "apply_bundle_refresh";
|
|
143
|
-
projectName: string;
|
|
144
|
-
workspaceId: string;
|
|
145
|
-
submission: import("../../types/bundle-refresh.js").BundleRefreshSubmission;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Review operation request — wraps all review sub-operations in a single
|
|
150
|
-
* message type, matched to its response by requestId.
|
|
151
|
-
*/
|
|
152
|
-
export interface ReviewRequest {
|
|
153
|
-
type: "review_request";
|
|
154
|
-
/** Unique ID for correlating request → response */
|
|
155
|
-
requestId: string;
|
|
156
|
-
operation: import("../../types/review.js").ReviewOperation;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// ============================================================================
|
|
160
|
-
// Machine → Client Messages (Browsing Mode)
|
|
161
|
-
// ============================================================================
|
|
162
|
-
|
|
163
|
-
/** Workspace information */
|
|
164
|
-
export interface WorkspaceInfo {
|
|
165
|
-
id: string; // Canonical workspace id: project:workspace
|
|
166
|
-
name: string; // Display name
|
|
167
|
-
path: string; // Full path
|
|
168
|
-
projectName: string; // Parent project name
|
|
169
|
-
branch?: string; // Git branch if available
|
|
170
|
-
sessionCount: number; // Number of active sessions
|
|
171
|
-
isStale?: boolean; // No activity for 30+ days
|
|
172
|
-
serveDomain?: string; // Hosting domain for process ports
|
|
173
|
-
processes?: { name: string; instances?: number; ports?: import("../../types/processes.js").ProcessPortConfig[] }[];
|
|
174
|
-
processConfigError?: string;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/** Session information */
|
|
178
|
-
export interface SessionInfo {
|
|
179
|
-
id: string;
|
|
180
|
-
name: string; // Display name (project:workspace:num)
|
|
181
|
-
workspaceId: string;
|
|
182
|
-
attached: boolean; // Currently attached by another client
|
|
183
|
-
createdAt: number;
|
|
184
|
-
processTitle?: string; // Current process (e.g., "vim", "npm run dev")
|
|
185
|
-
exitCode?: number; // If session has exited
|
|
186
|
-
processName?: string; // Managed process name
|
|
187
|
-
processInstance?: number; // Managed process instance number
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/** Response with workspace list */
|
|
191
|
-
export interface WorkspaceListResponse {
|
|
192
|
-
type: "workspace_list";
|
|
193
|
-
workspaces: WorkspaceInfo[];
|
|
194
|
-
savedEventFilters?: import("../../types/events.js").SavedEventFilter[];
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/** Response with session list */
|
|
198
|
-
export interface SessionListResponse {
|
|
199
|
-
type: "session_list";
|
|
200
|
-
sessions: SessionInfo[];
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/** Session attached successfully - transitions to attached mode */
|
|
204
|
-
export interface AttachedResponse {
|
|
205
|
-
type: "attached";
|
|
206
|
-
sessionId: string;
|
|
207
|
-
sessionName: string;
|
|
208
|
-
cols: number;
|
|
209
|
-
rows: number;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/** Detached from session - back to browsing mode */
|
|
213
|
-
export interface DetachedResponse {
|
|
214
|
-
type: "detached";
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/** Session exited */
|
|
218
|
-
export interface SessionExitedResponse {
|
|
219
|
-
type: "session_exited";
|
|
220
|
-
sessionId: string;
|
|
221
|
-
exitCode: number;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/** Error response */
|
|
225
|
-
export interface ErrorResponse {
|
|
226
|
-
type: "error";
|
|
227
|
-
code: string;
|
|
228
|
-
message: string;
|
|
229
|
-
workspaceId?: string;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/** Project information */
|
|
233
|
-
export interface ProjectInfo {
|
|
234
|
-
name: string;
|
|
235
|
-
repository: string;
|
|
236
|
-
workspaceCount: number;
|
|
237
|
-
isCurrent: boolean;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/** Response with project list */
|
|
241
|
-
export interface ProjectListResponse {
|
|
242
|
-
type: "project_list";
|
|
243
|
-
projects: ProjectInfo[];
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
/** Session killed response */
|
|
247
|
-
export interface SessionKilledResponse {
|
|
248
|
-
type: "session_killed";
|
|
249
|
-
sessionId: string;
|
|
250
|
-
workspaceId: string;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/** Workspace deleted response */
|
|
254
|
-
export interface WorkspaceDeletedResponse {
|
|
255
|
-
type: "workspace_deleted";
|
|
256
|
-
workspaceId: string;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
/** Response with inbox items */
|
|
260
|
-
export interface InboxListResponse {
|
|
261
|
-
type: "inbox_list";
|
|
262
|
-
items: import("../tmux-lite/protocol.js").InboxItem[];
|
|
263
|
-
unreadCount: number;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
/** Inbox item(s) cleared response */
|
|
267
|
-
export interface InboxClearedResponse {
|
|
268
|
-
type: "inbox_cleared";
|
|
269
|
-
id?: string; // Which item was cleared, or undefined if all cleared
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
/** Inbox item marked as read response */
|
|
273
|
-
export interface InboxMarkedReadResponse {
|
|
274
|
-
type: "inbox_marked_read";
|
|
275
|
-
id: string;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
/** Current notification configuration */
|
|
279
|
-
export interface NotificationConfigResponse {
|
|
280
|
-
type: "notification_config";
|
|
281
|
-
config: import("../../notifications/types.js").NotificationConfig;
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/** Notification configuration updated */
|
|
285
|
-
export interface NotificationConfigUpdatedResponse {
|
|
286
|
-
type: "notification_config_updated";
|
|
287
|
-
config: import("../../notifications/types.js").NotificationConfig;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
/** Script output during attach_session (streams lifecycle script output) */
|
|
291
|
-
export interface ScriptOutputResponse {
|
|
292
|
-
type: "script_output";
|
|
293
|
-
/** Current script phase (pre, setup, select, remove) */
|
|
294
|
-
phase: "pre" | "setup" | "select" | "remove";
|
|
295
|
-
/** ANSI output data (base64 encoded for binary safety) */
|
|
296
|
-
data: string;
|
|
297
|
-
/** Whether scripts are complete */
|
|
298
|
-
done?: boolean;
|
|
299
|
-
/** Exit code if scripts failed (only when done=true) */
|
|
300
|
-
exitCode?: number;
|
|
301
|
-
/** Error message if scripts failed (only when done=true) */
|
|
302
|
-
error?: string;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/** Bundle refresh plan response */
|
|
306
|
-
export interface BundleRefreshPlanResponse {
|
|
307
|
-
type: "bundle_refresh_plan";
|
|
308
|
-
plan: import("../../types/bundle-refresh.js").BundleRefreshPlan;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/** Bundle refresh applied successfully */
|
|
312
|
-
export interface BundleRefreshAppliedResponse {
|
|
313
|
-
type: "bundle_refresh_applied";
|
|
314
|
-
projectName: string;
|
|
315
|
-
workspaceId: string;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
/** Review operation response — carries either a result or an error */
|
|
319
|
-
export interface ReviewResponse {
|
|
320
|
-
type: "review_response";
|
|
321
|
-
/** Matches the requestId from the ReviewRequest */
|
|
322
|
-
requestId: string;
|
|
323
|
-
result?: import("../../types/review.js").ReviewResult;
|
|
324
|
-
error?: { code: string; message: string };
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
/** Response with wide events list */
|
|
328
|
-
export interface EventsListResponse {
|
|
329
|
-
type: "events_list";
|
|
330
|
-
workspaceId: string;
|
|
331
|
-
events: import("../../types/events.js").WideEvent[];
|
|
332
|
-
liveEventIds: string[];
|
|
333
|
-
savedEventFilters?: import("../../types/events.js").SavedEventFilter[];
|
|
334
|
-
requestId?: string;
|
|
335
|
-
chunkIndex?: number;
|
|
336
|
-
totalChunks?: number;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
/** Process started response */
|
|
340
|
-
export interface ProcessStartedResponse {
|
|
341
|
-
type: "process_started";
|
|
342
|
-
workspaceId: string;
|
|
343
|
-
processName: string;
|
|
344
|
-
sessionId?: string;
|
|
345
|
-
sessionIds?: string[];
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
/** Process stopped response */
|
|
349
|
-
export interface ProcessStoppedResponse {
|
|
350
|
-
type: "process_stopped";
|
|
351
|
-
workspaceId: string;
|
|
352
|
-
processName: string;
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
// ============================================================================
|
|
356
|
-
// Union Types
|
|
357
|
-
// ============================================================================
|
|
358
|
-
|
|
359
|
-
/** All messages from client to machine (browsing mode) */
|
|
360
|
-
export type ClientToMachineMessage =
|
|
361
|
-
| ListWorkspacesRequest
|
|
362
|
-
| ListSessionsRequest
|
|
363
|
-
| AttachSessionRequest
|
|
364
|
-
| ListProjectsRequest
|
|
365
|
-
| KillSessionRequest
|
|
366
|
-
| DeleteWorkspaceRequest
|
|
367
|
-
| GetInboxRequest
|
|
368
|
-
| ClearInboxRequest
|
|
369
|
-
| MarkInboxReadRequest
|
|
370
|
-
| GetNotificationConfigRequest
|
|
371
|
-
| UpdateNotificationConfigRequest
|
|
372
|
-
| GetBundleRefreshPlanRequest
|
|
373
|
-
| ApplyBundleRefreshRequest
|
|
374
|
-
| ReviewRequest
|
|
375
|
-
| GetEventsRequest
|
|
376
|
-
| StartProcessRequest
|
|
377
|
-
| StopProcessRequest;
|
|
378
|
-
|
|
379
|
-
/** All messages from machine to client (browsing mode) */
|
|
380
|
-
export type MachineToClientMessage =
|
|
381
|
-
| WorkspaceListResponse
|
|
382
|
-
| SessionListResponse
|
|
383
|
-
| AttachedResponse
|
|
384
|
-
| DetachedResponse
|
|
385
|
-
| SessionExitedResponse
|
|
386
|
-
| ErrorResponse
|
|
387
|
-
| ProjectListResponse
|
|
388
|
-
| SessionKilledResponse
|
|
389
|
-
| WorkspaceDeletedResponse
|
|
390
|
-
| InboxListResponse
|
|
391
|
-
| InboxClearedResponse
|
|
392
|
-
| InboxMarkedReadResponse
|
|
393
|
-
| NotificationConfigResponse
|
|
394
|
-
| NotificationConfigUpdatedResponse
|
|
395
|
-
| ScriptOutputResponse
|
|
396
|
-
| BundleRefreshPlanResponse
|
|
397
|
-
| BundleRefreshAppliedResponse
|
|
398
|
-
| ReviewResponse
|
|
399
|
-
| EventsListResponse
|
|
400
|
-
| ProcessStartedResponse
|
|
401
|
-
| ProcessStoppedResponse;
|
|
402
|
-
|
|
403
|
-
/** All remote session messages */
|
|
404
|
-
export type RemoteSessionMessage =
|
|
405
|
-
| ClientToMachineMessage
|
|
406
|
-
| MachineToClientMessage;
|
|
407
|
-
|
|
408
|
-
// ============================================================================
|
|
409
|
-
// Parsing
|
|
410
|
-
// ============================================================================
|
|
411
|
-
|
|
412
|
-
/**
|
|
413
|
-
* Parse a remote session message from JSON
|
|
414
|
-
*/
|
|
415
|
-
export function parseRemoteMessage(json: string): RemoteSessionMessage | null {
|
|
416
|
-
try {
|
|
417
|
-
const msg = JSON.parse(json);
|
|
418
|
-
if (!msg || typeof msg.type !== "string") {
|
|
419
|
-
return null;
|
|
420
|
-
}
|
|
421
|
-
return msg as RemoteSessionMessage;
|
|
422
|
-
} catch {
|
|
423
|
-
return null;
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
/**
|
|
428
|
-
* Serialize a remote session message to JSON
|
|
429
|
-
*/
|
|
430
|
-
export function serializeRemoteMessage(msg: RemoteSessionMessage): string {
|
|
431
|
-
return JSON.stringify(msg);
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
/**
|
|
435
|
-
* Check if a message is a browse command (workspace/session listing)
|
|
436
|
-
*/
|
|
437
|
-
export function isBrowseMessage(msg: RemoteSessionMessage): msg is
|
|
438
|
-
| ListWorkspacesRequest
|
|
439
|
-
| ListSessionsRequest
|
|
440
|
-
| AttachSessionRequest
|
|
441
|
-
| GetEventsRequest {
|
|
442
|
-
return ["list_workspaces", "list_sessions", "attach_session", "get_events"].includes(msg.type);
|
|
443
|
-
}
|