.github/workflows/ci.yml | 46 - apps/desktop/src/app/DesktopConnectionCatalogStore.test.ts | 297 ++ apps/desktop/src/app/DesktopConnectionCatalogStore.ts | 328 ++ apps/desktop/src/electron/ElectronSafeStorage.ts | 8 +- apps/desktop/src/ipc/DesktopIpcHandlers.ts | 18 +- apps/desktop/src/ipc/channels.ts | 8 +- apps/desktop/src/ipc/methods/cloudAuth.ts | 2 +- apps/desktop/src/ipc/methods/connectionCatalog.ts | 37 + apps/desktop/src/ipc/methods/savedEnvironments.ts | 76 - apps/desktop/src/ipc/methods/sshEnvironment.ts | 4 +- apps/desktop/src/main.ts | 3 +- apps/desktop/src/preload.ts | 14 +- apps/desktop/src/settings/DesktopSavedEnvironments.test.ts | 13 +- apps/desktop/src/settings/DesktopSavedEnvironments.ts | 45 +- apps/mobile/app.config.ts | 5 + apps/mobile/eas.json | 3 +- apps/mobile/package.json | 1 + apps/mobile/src/app/_layout.tsx | 13 +- apps/mobile/src/app/connections/new.tsx | 11 +- apps/mobile/src/app/index.tsx | 16 +- apps/mobile/src/app/new/add-project/repository.tsx | 2 +- apps/mobile/src/app/new/index.tsx | 30 +- apps/mobile/src/app/settings/environments.tsx | 395 +- apps/mobile/src/app/settings/index.tsx | 215 +- apps/mobile/src/components/ProjectFavicon.tsx | 63 +- apps/mobile/src/connection/catalog-store.ts | 122 + apps/mobile/src/connection/catalog.ts | 5 + apps/mobile/src/connection/migration.test.ts | 78 + apps/mobile/src/connection/migration.ts | 110 + apps/mobile/src/connection/onboarding.ts | 35 + apps/mobile/src/connection/platform.ts | 200 + apps/mobile/src/connection/runtime.ts | 16 + apps/mobile/src/connection/storage.test.ts | 84 + apps/mobile/src/connection/storage.ts | 432 ++ apps/mobile/src/features/agent-awareness/liveActivityPreferences.test.ts | 114 +- apps/mobile/src/features/agent-awareness/liveActivityPreferences.ts | 2 +- apps/mobile/src/features/agent-awareness/registrationPayload.ts | 4 +- apps/mobile/src/features/agent-awareness/remoteRegistration.test.ts | 238 +- apps/mobile/src/features/agent-awareness/remoteRegistration.ts | 179 +- apps/mobile/src/features/cloud/CloudAuthProvider.test.ts | 60 + apps/mobile/src/features/cloud/CloudAuthProvider.tsx | 139 +- apps/mobile/src/features/cloud/cloudDebugLog.ts | 18 + apps/mobile/src/features/cloud/cloudEnvironmentPresentation.test.ts | 88 + apps/mobile/src/features/cloud/cloudEnvironmentPresentation.ts | 53 + apps/mobile/src/features/cloud/dpop.test.ts | 12 +- apps/mobile/src/features/cloud/dpop.ts | 2 +- apps/mobile/src/features/cloud/linkEnvironment.test.ts | 16 +- apps/mobile/src/features/cloud/linkEnvironment.ts | 73 +- apps/mobile/src/features/cloud/managedRelayLayer.ts | 42 +- apps/mobile/src/features/cloud/managedRelayState.ts | 37 +- apps/mobile/src/features/cloud/managedRelayTokenStore.test.ts | 51 + apps/mobile/src/features/cloud/managedRelayTokenStore.ts | 107 + apps/mobile/src/features/cloud/publicConfig.test.ts | 8 +- apps/mobile/src/features/cloud/publicConfig.ts | 6 +- apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx | 91 +- apps/mobile/src/features/connection/ConnectionStatusDot.tsx | 17 +- apps/mobile/src/features/connection/EnvironmentConnectionNotice.tsx | 108 + apps/mobile/src/features/connection/connectionTone.ts | 16 +- apps/mobile/src/features/connection/environmentSections.test.ts | 130 + apps/mobile/src/features/connection/environmentSections.ts | 31 + apps/mobile/src/features/connection/useConnectionController.ts | 125 + apps/mobile/src/features/home/HomeScreen.tsx | 289 +- apps/mobile/src/features/observability/mobileTracing.test.ts | 53 - apps/mobile/src/features/observability/mobileTracing.ts | 44 - apps/mobile/src/features/observability/tracing.test.ts | 97 + apps/mobile/src/features/observability/tracing.ts | 41 + apps/mobile/src/features/projects/AddProjectScreen.tsx | 183 +- apps/mobile/src/features/review/ReviewSheet.tsx | 89 +- apps/mobile/src/features/review/reviewAvailability.test.ts | 47 + apps/mobile/src/features/review/reviewAvailability.ts | 19 + apps/mobile/src/features/review/reviewDiffPreviewState.ts | 110 - apps/mobile/src/features/review/useReviewSections.ts | 199 +- apps/mobile/src/features/terminal/ThreadTerminalPanel.tsx | 146 +- apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx | 789 ++-- apps/mobile/src/features/terminal/terminalMenu.test.ts | 2 +- apps/mobile/src/features/terminal/terminalMenu.ts | 2 +- apps/mobile/src/features/terminal/threadTerminalPanelModel.test.ts | 40 + apps/mobile/src/features/terminal/threadTerminalPanelModel.ts | 40 + apps/mobile/src/features/threads/NewTaskDraftScreen.tsx | 164 +- apps/mobile/src/features/threads/PendingApprovalCard.tsx | 2 +- apps/mobile/src/features/threads/PendingUserInputCard.tsx | 2 +- apps/mobile/src/features/threads/ThreadComposer.tsx | 257 +- apps/mobile/src/features/threads/ThreadDetailScreen.tsx | 40 +- apps/mobile/src/features/threads/ThreadFeed.tsx | 177 +- apps/mobile/src/features/threads/ThreadGitControls.tsx | 2 +- apps/mobile/src/features/threads/ThreadNavigationDrawer.tsx | 215 +- apps/mobile/src/features/threads/ThreadRouteScreen.tsx | 184 +- apps/mobile/src/features/threads/claudeEffortOptions.ts | 10 - apps/mobile/src/features/threads/git/GitBranchesSheet.tsx | 15 +- apps/mobile/src/features/threads/git/GitCommitSheet.tsx | 15 +- apps/mobile/src/features/threads/git/GitConfirmSheet.tsx | 2 +- apps/mobile/src/features/threads/git/GitOverviewSheet.tsx | 17 +- apps/mobile/src/features/threads/new-task-flow-provider.tsx | 213 +- apps/mobile/src/features/threads/threadContentPresentation.test.ts | 57 + apps/mobile/src/features/threads/threadContentPresentation.ts | 43 + apps/mobile/src/features/threads/threadPresentation.ts | 15 +- apps/mobile/src/features/threads/use-project-actions.ts | 272 +- apps/mobile/src/lib/authClientMetadata.ts | 2 +- apps/mobile/src/lib/connection.test.ts | 6 +- apps/mobile/src/lib/connection.ts | 58 +- apps/mobile/src/lib/layout.ts | 34 + apps/mobile/src/lib/mobileLayout.ts | 37 - apps/mobile/src/lib/modelOptions.test.ts | 52 + apps/mobile/src/lib/modelOptions.ts | 53 +- apps/mobile/src/lib/providerOptions.test.ts | 100 + apps/mobile/src/lib/providerOptions.ts | 141 + apps/mobile/src/lib/repositoryGroups.test.ts | 19 +- apps/mobile/src/lib/repositoryGroups.ts | 35 +- apps/mobile/src/lib/routes.ts | 4 +- apps/mobile/src/lib/runtime.ts | 28 +- apps/mobile/src/lib/storage.test.ts | 2 +- apps/mobile/src/lib/storage.ts | 104 +- apps/mobile/src/lib/threadActivity.ts | 15 +- apps/mobile/src/state/assets.ts | 29 + apps/mobile/src/state/auth.ts | 5 + apps/mobile/src/state/entities.ts | 59 + apps/mobile/src/state/environment-session-registry.ts | 48 - apps/mobile/src/state/environments.ts | 56 + apps/mobile/src/state/filesystem.ts | 5 + apps/mobile/src/state/git.ts | 5 + apps/mobile/src/state/orchestration.ts | 5 + apps/mobile/src/state/presentation.ts | 31 + apps/mobile/src/state/projects.ts | 12 + apps/mobile/src/state/queries.test.ts | 62 + apps/mobile/src/state/queries.ts | 134 + apps/mobile/src/state/query.ts | 36 + apps/mobile/src/state/queryTargets.ts | 51 + apps/mobile/src/state/relay.ts | 6 + apps/mobile/src/state/remote-runtime-types.ts | 23 +- apps/mobile/src/state/review.ts | 5 + apps/mobile/src/state/server.ts | 14 + apps/mobile/src/state/session.ts | 21 + apps/mobile/src/state/shell.ts | 17 + apps/mobile/src/state/sourceControl.ts | 5 + apps/mobile/src/state/terminal.ts | 5 + apps/mobile/src/state/thread-outbox-manager.ts | 108 + apps/mobile/src/state/thread-outbox-model.ts | 121 + apps/mobile/src/state/thread-outbox-storage.ts | 64 + apps/mobile/src/state/thread-outbox.test.ts | 227 + apps/mobile/src/state/thread-outbox.ts | 29 + apps/mobile/src/state/threads.ts | 45 + apps/mobile/src/state/use-atom-command.ts | 23 + apps/mobile/src/state/use-atom-query-runner.ts | 30 + apps/mobile/src/state/use-checkpoint-diff.ts | 16 - apps/mobile/src/state/use-composer-drafts.test.ts | 28 + apps/mobile/src/state/use-composer-drafts.ts | 85 +- apps/mobile/src/state/use-composer-path-search.ts | 47 +- apps/mobile/src/state/use-environment-runtime.ts | 76 - apps/mobile/src/state/use-filesystem-browse.ts | 82 - apps/mobile/src/state/use-remote-catalog.ts | 198 - apps/mobile/src/state/use-remote-environment-registry.test.ts | 430 -- apps/mobile/src/state/use-remote-environment-registry.ts | 873 +--- apps/mobile/src/state/use-selected-thread-commands.ts | 187 - apps/mobile/src/state/use-selected-thread-git-actions.ts | 449 +- apps/mobile/src/state/use-selected-thread-git-state.ts | 16 +- apps/mobile/src/state/use-selected-thread-requests.ts | 69 +- apps/mobile/src/state/use-shell-snapshot.ts | 111 - apps/mobile/src/state/use-source-control-discovery.ts | 78 - apps/mobile/src/state/use-terminal-session.ts | 142 +- apps/mobile/src/state/use-thread-composer-state.ts | 236 +- apps/mobile/src/state/use-thread-detail.ts | 82 +- apps/mobile/src/state/use-thread-outbox-drain.ts | 210 + apps/mobile/src/state/use-thread-outbox.ts | 28 + apps/mobile/src/state/use-thread-selection.ts | 76 +- apps/mobile/src/state/use-vcs-action-state.ts | 66 +- apps/mobile/src/state/use-vcs-refs.ts | 51 - apps/mobile/src/state/use-vcs-status.ts | 62 - apps/mobile/src/state/vcs.ts | 9 + apps/mobile/src/state/workspace.ts | 30 + apps/mobile/src/state/workspaceModel.test.ts | 123 + apps/mobile/src/state/workspaceModel.ts | 107 + apps/server/src/assets/AssetAccess.test.ts | 9 +- apps/server/src/auth/http.ts | 4 + apps/server/src/cloud/ManagedEndpointRuntime.test.ts | 23 +- apps/server/src/cloud/ManagedEndpointRuntime.ts | 51 +- apps/server/src/cloud/http.test.ts | 45 +- apps/server/src/cloud/http.ts | 18 +- apps/server/src/cloud/traceRelayRequest.ts | 21 + apps/server/src/git/GitManager.ts | 21 +- apps/server/src/git/GitWorkflowService.ts | 7 +- apps/server/src/http.ts | 3 +- apps/server/src/orchestration/Layers/ProviderCommandReactor.test.ts | 2 +- apps/server/src/relay/AgentAwarenessRelay.test.ts | 21 + apps/server/src/relay/AgentAwarenessRelay.ts | 72 +- apps/server/src/server.ts | 4 +- apps/server/src/terminal/Layers/Manager.test.ts | 49 + apps/server/src/terminal/Layers/Manager.ts | 28 +- apps/server/src/vcs/GitVcsDriver.ts | 5 + apps/server/src/vcs/GitVcsDriverCore.test.ts | 29 + apps/server/src/vcs/GitVcsDriverCore.ts | 12 +- apps/server/src/vcs/VcsStatusBroadcaster.test.ts | 147 +- apps/server/src/vcs/VcsStatusBroadcaster.ts | 16 +- apps/web/package.json | 9 +- apps/web/src/assets/assetUrls.test.ts | 15 + apps/web/src/assets/assetUrls.ts | 121 +- apps/web/src/browser/ElectronBrowserHost.tsx | 6 +- apps/web/src/browser/HostedBrowserWebview.tsx | 4 +- apps/web/src/browser/browserRecording.ts | 91 +- apps/web/src/browser/browserTargetResolver.test.ts | 22 +- apps/web/src/browser/browserTargetResolver.ts | 6 +- apps/web/src/browser/openFileInPreview.ts | 106 +- apps/web/src/clientPersistenceStorage.test.ts | 58 +- apps/web/src/clientPersistenceStorage.ts | 190 +- apps/web/src/cloud/dpop.test.ts | 43 +- apps/web/src/cloud/linkEnvironment.test.ts | 968 +---- apps/web/src/cloud/linkEnvironment.ts | 370 +- apps/web/src/cloud/linkEnvironmentAtoms.ts | 33 + apps/web/src/cloud/managedAuth.test.ts | 55 + apps/web/src/cloud/managedAuth.tsx | 111 +- apps/web/src/cloud/managedRelayLayer.ts | 34 +- apps/web/src/cloud/managedRelayState.ts | 32 +- apps/web/src/cloud/primaryCloudLinkState.ts | 58 +- apps/web/src/commandPaletteContext.tsx | 29 + apps/web/src/commandPaletteStore.ts | 32 - apps/web/src/components/AppSidebarLayout.tsx | 26 - apps/web/src/components/BranchToolbar.tsx | 20 +- apps/web/src/components/BranchToolbarBranchSelector.tsx | 169 +- apps/web/src/components/ChatMarkdown.browser.tsx | 892 ---- apps/web/src/components/ChatMarkdown.tsx | 223 +- apps/web/src/components/ChatView.browser.tsx | 7456 -------------------------------- apps/web/src/components/ChatView.logic.test.ts | 692 +-- apps/web/src/components/ChatView.logic.ts | 31 +- apps/web/src/components/ChatView.tsx | 2387 +++++----- apps/web/src/components/CommandPalette.logic.test.ts | 5 +- apps/web/src/components/CommandPalette.logic.ts | 8 +- apps/web/src/components/CommandPalette.tsx | 537 +-- apps/web/src/components/DiffPanel.tsx | 122 +- apps/web/src/components/DiffPanelShell.browser.tsx | 22 - apps/web/src/components/GitActionsControl.browser.tsx | 457 -- apps/web/src/components/GitActionsControl.tsx | 412 +- apps/web/src/components/KeybindingsToast.browser.tsx | 636 --- apps/web/src/components/KeybindingsUpdateToast.logic.test.ts | 73 + apps/web/src/components/KeybindingsUpdateToast.logic.ts | 45 + apps/web/src/components/PlanSidebar.tsx | 48 +- apps/web/src/components/ProjectFavicon.tsx | 42 +- apps/web/src/components/ProjectScriptsControl.tsx | 42 +- apps/web/src/components/ProviderUpdateLaunchNotification.logic.test.ts | 23 +- apps/web/src/components/ProviderUpdateLaunchNotification.logic.ts | 19 +- apps/web/src/components/ProviderUpdateLaunchNotification.tsx | 48 +- apps/web/src/components/PullRequestThreadDialog.tsx | 53 +- apps/web/src/components/Sidebar.dblclick.browser.tsx | 255 -- apps/web/src/components/Sidebar.logic.test.ts | 106 +- apps/web/src/components/Sidebar.logic.ts | 43 +- apps/web/src/components/Sidebar.tsx | 607 +-- apps/web/src/components/SlowRpcRequestToastCoordinator.tsx | 73 + apps/web/src/components/ThreadStatusIndicators.tsx | 50 +- apps/web/src/components/ThreadTerminalDrawer.browser.tsx | 425 -- apps/web/src/components/ThreadTerminalDrawer.tsx | 458 +- apps/web/src/components/WebSocketConnectionSurface.logic.test.ts | 114 - apps/web/src/components/WebSocketConnectionSurface.tsx | 427 -- apps/web/src/components/auth/PairingRouteSurface.tsx | 37 +- apps/web/src/components/chat/ChangedFilesTree.test.tsx | 58 +- apps/web/src/components/chat/ChatComposer.tsx | 16 +- apps/web/src/components/chat/ChatHeader.tsx | 25 +- apps/web/src/components/chat/CompactComposerControlsMenu.browser.tsx | 326 -- apps/web/src/components/chat/ComposerBannerStack.tsx | 12 +- apps/web/src/components/chat/ComposerPendingApprovalActions.tsx | 2 +- apps/web/src/components/chat/ComposerPendingReviewComments.browser.tsx | 41 - apps/web/src/components/chat/ExpandedImageDialog.tsx | 22 +- apps/web/src/components/chat/MessagesTimeline.browser.tsx | 477 -- apps/web/src/components/chat/MessagesTimeline.logic.test.ts | 137 +- apps/web/src/components/chat/MessagesTimeline.logic.ts | 13 +- apps/web/src/components/chat/MessagesTimeline.test.tsx | 6 + apps/web/src/components/chat/MessagesTimeline.tsx | 12 +- apps/web/src/components/chat/ModelPickerContent.tsx | 2 +- apps/web/src/components/chat/OpenInPicker.tsx | 42 +- apps/web/src/components/chat/ProposedPlanCard.tsx | 50 +- apps/web/src/components/chat/ProviderModelPicker.browser.tsx | 1316 ------ apps/web/src/components/chat/ProviderModelPicker.tsx | 8 - apps/web/src/components/clerk/DesktopClerkSignIn.browser.tsx | 71 - apps/web/src/components/cloud/RelayClientInstallDialog.browser.tsx | 47 - apps/web/src/components/desktop/SshPasswordPromptDialog.tsx | 100 +- apps/web/src/components/diffs/AnnotatableFileDiff.browser.tsx | 122 - apps/web/src/components/files/FilePreviewPanel.browser.tsx | 168 - apps/web/src/components/files/FilePreviewPanel.tsx | 56 +- apps/web/src/components/files/fileSaveCoordinator.test.ts | 21 +- apps/web/src/components/files/fileSaveCoordinator.ts | 19 +- apps/web/src/components/files/projectFilesQueryState.test.ts | 93 +- apps/web/src/components/files/projectFilesQueryState.ts | 151 +- apps/web/src/components/preview/AgentBrowserCursor.tsx | 28 +- apps/web/src/components/preview/PreviewAutomationOwner.test.ts | 31 + apps/web/src/components/preview/PreviewAutomationOwner.tsx | 209 +- apps/web/src/components/preview/PreviewChromeRow.browser.tsx | 85 - apps/web/src/components/preview/PreviewChromeRow.tsx | 9 +- apps/web/src/components/preview/PreviewView.tsx | 38 +- apps/web/src/components/preview/openDiscoveredPort.ts | 24 +- apps/web/src/components/preview/openPreviewSession.test.ts | 36 +- apps/web/src/components/preview/openPreviewSession.ts | 44 +- apps/web/src/components/preview/openTerminalLinkInPreview.ts | 39 +- apps/web/src/components/preview/previewSessionState.ts | 77 - apps/web/src/components/preview/usePreviewBridge.ts | 17 +- apps/web/src/components/preview/usePreviewSession.ts | 189 +- apps/web/src/components/settings/AddProviderInstanceDialog.tsx | 32 +- apps/web/src/components/settings/ConnectionsSettings.tsx | 1246 +++--- apps/web/src/components/settings/DiagnosticsSettings.tsx | 143 +- apps/web/src/components/settings/KeybindingsSettings.tsx | 129 +- apps/web/src/components/settings/ProviderInstanceCard.tsx | 6 +- apps/web/src/components/settings/SettingsPanels.browser.tsx | 1541 ------- apps/web/src/components/settings/SettingsPanels.tsx | 275 +- apps/web/src/components/settings/SourceControlSettings.tsx | 21 +- apps/web/src/components/sidebar/SidebarProviderUpdatePill.tsx | 5 +- apps/web/src/components/sidebar/SidebarUpdatePill.tsx | 13 +- apps/web/src/composerDraftStore.test.ts | 49 +- apps/web/src/composerDraftStore.ts | 72 +- apps/web/src/connection/catalog.ts | 5 + apps/web/src/connection/onboarding.ts | 38 + apps/web/src/connection/platform.test.ts | 88 + apps/web/src/connection/platform.ts | 352 ++ apps/web/src/connection/runtime.ts | 16 + apps/web/src/connection/storage.test.ts | 77 + apps/web/src/connection/storage.ts | 536 +++ apps/web/src/diffFileActions.test.ts | 2 +- apps/web/src/editorPreferences.ts | 71 +- apps/web/src/environmentApi.ts | 121 - apps/web/src/environmentGrouping.test.ts | 656 +-- apps/web/src/environments/primary/context.ts | 28 +- apps/web/src/environments/primary/httpClient.ts | 2 +- apps/web/src/environments/primary/index.ts | 1 - apps/web/src/environments/primary/target.ts | 8 +- apps/web/src/environments/runtime/catalog.test.ts | 188 - apps/web/src/environments/runtime/catalog.ts | 410 -- apps/web/src/environments/runtime/connection.test.ts | 295 -- apps/web/src/environments/runtime/connection.ts | 7 - apps/web/src/environments/runtime/index.ts | 32 - apps/web/src/environments/runtime/service.addSavedEnvironment.test.ts | 1111 ----- apps/web/src/environments/runtime/service.savedEnvironments.test.ts | 332 -- apps/web/src/environments/runtime/service.threadSubscriptions.test.ts | 667 --- apps/web/src/environments/runtime/service.ts | 2103 --------- apps/web/src/historyBootstrap.test.ts | 14 + apps/web/src/hooks/useCommitOnBlur.ts | 22 +- apps/web/src/hooks/useHandleNewThread.ts | 66 +- apps/web/src/hooks/useLocalStorage.ts | 116 +- apps/web/src/hooks/useResizableWidth.ts | 21 +- apps/web/src/hooks/useSettings.ts | 77 +- apps/web/src/hooks/useThreadActions.ts | 310 +- apps/web/src/hooks/useTurnDiffSummaries.ts | 8 +- apps/web/src/lib/archivedThreadsState.ts | 66 +- apps/web/src/lib/chatThreadActions.test.ts | 2 +- apps/web/src/lib/chatThreadActions.ts | 2 +- apps/web/src/lib/checkpointDiffState.ts | 61 +- apps/web/src/lib/composerPathSearchState.ts | 61 +- apps/web/src/lib/desktopUpdateReactQuery.test.ts | 50 - apps/web/src/lib/desktopUpdateReactQuery.ts | 42 - apps/web/src/lib/processDiagnosticsState.ts | 140 - apps/web/src/lib/projectPaths.ts | 2 +- apps/web/src/lib/runtime.ts | 32 +- apps/web/src/lib/sourceControlActions.ts | 487 +-- apps/web/src/lib/sourceControlDiscoveryState.ts | 95 - apps/web/src/lib/terminalUiStateCleanup.test.ts | 2 +- apps/web/src/lib/threadSort.test.ts | 22 +- apps/web/src/lib/threadSort.ts | 2 +- apps/web/src/lib/traceDiagnosticsState.ts | 65 - apps/web/src/lib/turnDiffTree.test.ts | 30 +- apps/web/src/lib/vcsRefState.ts | 48 - apps/web/src/lib/vcsStatusState.ts | 65 - apps/web/src/localApi.test.ts | 772 +--- apps/web/src/localApi.ts | 133 +- apps/web/src/logicalProject.ts | 48 +- apps/web/src/modelPickerOpenState.ts | 17 - apps/web/src/modelPickerVisibility.ts | 13 + apps/web/src/observability/clientTracing.ts | 39 +- apps/web/src/portDiscoveryState.ts | 53 +- apps/web/src/previewStateStore.test.ts | 138 +- apps/web/src/previewStateStore.ts | 414 +- apps/web/src/projectScripts.ts | 2 +- apps/web/src/rightPanelStore.test.ts | 2 +- apps/web/src/rightPanelStore.ts | 2 +- apps/web/src/router.ts | 14 +- apps/web/src/routes/__root.tsx | 278 +- apps/web/src/routes/_chat.$environmentId.$threadId.tsx | 43 +- apps/web/src/routes/_chat.draft.$draftId.tsx | 49 +- apps/web/src/routes/_chat.index.tsx | 8 +- apps/web/src/routes/_chat.tsx | 13 +- apps/web/src/rpc/serverState.test.ts | 369 -- apps/web/src/rpc/serverState.ts | 305 -- apps/web/src/rpc/transportError.ts | 2 +- apps/web/src/rpc/wsConnectionState.test.ts | 107 - apps/web/src/rpc/wsConnectionState.ts | 238 - apps/web/src/rpc/wsTransport.test.ts | 411 -- apps/web/src/rpc/wsTransport.ts | 63 - apps/web/src/session-logic.test.ts | 18 +- apps/web/src/session-logic.ts | 26 +- apps/web/src/shortcutModifierState.test.ts | 91 +- apps/web/src/shortcutModifierState.ts | 82 +- apps/web/src/sidebarProjectGrouping.ts | 4 +- apps/web/src/state/assets.ts | 5 + apps/web/src/state/auth.ts | 5 + apps/web/src/state/desktopNetworkAccess.test.ts | 50 + apps/web/src/state/desktopNetworkAccess.ts | 79 + apps/web/src/state/desktopSshHosts.test.ts | 41 + apps/web/src/state/desktopSshHosts.ts | 49 + apps/web/src/state/desktopUpdate.test.ts | 111 + apps/web/src/state/desktopUpdate.ts | 57 + apps/web/src/state/entities.ts | 197 + apps/web/src/state/environments.ts | 99 + apps/web/src/state/filesystem.ts | 5 + apps/web/src/state/git.ts | 5 + apps/web/src/state/orchestration.ts | 5 + apps/web/src/state/presentation.ts | 31 + apps/web/src/state/preview.ts | 5 + apps/web/src/state/projects.ts | 12 + apps/web/src/state/queries.ts | 257 ++ apps/web/src/state/query.ts | 36 + apps/web/src/state/relay.ts | 6 + apps/web/src/state/review.ts | 5 + apps/web/src/state/server.ts | 100 + apps/web/src/state/session.ts | 28 + apps/web/src/state/shell.ts | 17 + apps/web/src/state/sourceControl.ts | 5 + apps/web/src/state/sourceControlActions.ts | 356 ++ apps/web/src/state/terminal.ts | 5 + apps/web/src/state/terminalSessions.ts | 90 + apps/web/src/state/threads.ts | 45 + apps/web/src/state/use-atom-command.ts | 23 + apps/web/src/state/use-atom-query-runner.ts | 30 + apps/web/src/state/vcs.ts | 9 + apps/web/src/store.test.ts | 1083 ----- apps/web/src/store.ts | 2050 --------- apps/web/src/storeSelectors.ts | 68 - apps/web/src/terminalSessionState.ts | 77 - apps/web/src/terminalUiStateStore.test.ts | 26 +- apps/web/src/terminalUiStateStore.ts | 209 +- apps/web/src/threadDerivation.ts | 152 - apps/web/src/threadRoutes.test.ts | 2 +- apps/web/src/threadRoutes.ts | 2 +- apps/web/src/types.ts | 160 +- apps/web/src/uiStateStore.test.ts | 609 +-- apps/web/src/uiStateStore.ts | 499 +-- apps/web/src/worktreeCleanup.test.ts | 6 +- apps/web/src/worktreeCleanup.ts | 6 +- apps/web/test/authHttpHandlers.ts | 103 - apps/web/test/wsRpcHarness.ts | 185 - apps/web/vite.config.ts | 29 +- docs/architecture/connection-runtime.md | 137 + infra/relay/README.md | 2 +- infra/relay/src/auth/RelayTokens.test.ts | 8 +- infra/relay/src/auth/RelayTokens.ts | 19 + infra/relay/src/environments/EnvironmentConnector.test.ts | 1 + infra/relay/src/environments/EnvironmentConnector.ts | 46 +- infra/relay/src/http/Api.ts | 5 +- oxlint-plugin-t3code/rules/no-inline-schema-compile.ts | 4 + oxlint-plugin-t3code/rules/no-manual-effect-runtime-in-tests.ts | 2 +- packages/client-runtime/README.md | 31 + packages/client-runtime/package.json | 127 +- packages/client-runtime/src/addProject.test.ts | 146 - packages/client-runtime/src/addProject.ts | 224 - packages/client-runtime/src/advertisedEndpoint.test.ts | 61 - packages/client-runtime/src/advertisedEndpoint.ts | 1 - packages/client-runtime/src/archivedThreadsState.test.ts | 96 - packages/client-runtime/src/archivedThreadsState.ts | 138 - packages/client-runtime/src/authorization/index.ts | 4 + packages/client-runtime/src/authorization/layer.test.ts | 344 ++ packages/client-runtime/src/authorization/layer.ts | 268 ++ packages/client-runtime/src/authorization/remote.test.ts | 475 ++ packages/client-runtime/src/authorization/remote.ts | 214 + packages/client-runtime/src/authorization/service.ts | 39 + packages/client-runtime/src/authorization/tokenStore.ts | 30 + packages/client-runtime/src/checkpointDiffState.test.ts | 135 - packages/client-runtime/src/checkpointDiffState.ts | 313 -- packages/client-runtime/src/composerPathSearchState.test.ts | 185 - packages/client-runtime/src/composerPathSearchState.ts | 341 -- packages/client-runtime/src/connection/catalog.ts | 143 + packages/client-runtime/src/connection/connectivity.ts | 13 + packages/client-runtime/src/connection/driver.ts | 66 + packages/client-runtime/src/connection/errors.ts | 140 + packages/client-runtime/src/connection/index.ts | 12 + packages/client-runtime/src/connection/layer.ts | 46 + packages/client-runtime/src/connection/model.ts | 168 + packages/client-runtime/src/connection/onboarding.test.ts | 257 ++ packages/client-runtime/src/connection/onboarding.ts | 267 ++ packages/client-runtime/src/connection/presentation.test.ts | 184 + packages/client-runtime/src/connection/presentation.ts | 122 + packages/client-runtime/src/connection/registry.test.ts | 944 ++++ packages/client-runtime/src/connection/registry.ts | 576 +++ packages/client-runtime/src/connection/resolver.test.ts | 423 ++ packages/client-runtime/src/connection/resolver.ts | 257 ++ packages/client-runtime/src/connection/supervisor.test.ts | 847 ++++ packages/client-runtime/src/connection/supervisor.ts | 724 ++++ packages/client-runtime/src/connection/wakeups.ts | 11 + packages/client-runtime/src/environment/descriptor.ts | 17 + packages/client-runtime/src/environment/endpoint.test.ts | 61 + packages/client-runtime/src/environment/endpoint.ts | 9 + packages/client-runtime/src/environment/index.ts | 4 + packages/client-runtime/src/environment/knownEnvironment.test.ts | 66 + packages/client-runtime/src/environment/knownEnvironment.ts | 41 + packages/client-runtime/src/environment/scoped.ts | 69 + packages/client-runtime/src/environmentConnection.ts | 244 -- packages/client-runtime/src/environmentRuntimeState.test.ts | 75 - packages/client-runtime/src/environmentRuntimeState.ts | 104 - packages/client-runtime/src/errors/errorTrace.test.ts | 25 + packages/client-runtime/src/errors/errorTrace.ts | 18 + packages/client-runtime/src/errors/index.ts | 2 + packages/client-runtime/src/errors/transport.test.ts | 72 + packages/client-runtime/src/errors/transport.ts | 39 + packages/client-runtime/src/filesystemBrowseState.test.ts | 119 - packages/client-runtime/src/filesystemBrowseState.ts | 339 -- packages/client-runtime/src/gitActions.test.ts | 43 - packages/client-runtime/src/gitActions.ts | 440 -- packages/client-runtime/src/index.ts | 30 - packages/client-runtime/src/knownEnvironment.test.ts | 92 - packages/client-runtime/src/knownEnvironment.ts | 53 - packages/client-runtime/src/managedRelay.test.ts | 185 - packages/client-runtime/src/managedRelay.ts | 516 --- packages/client-runtime/src/managedRelayState.test.ts | 155 - packages/client-runtime/src/managedRelayState.ts | 289 -- packages/client-runtime/src/operations/commands.test.ts | 140 + packages/client-runtime/src/operations/commands.ts | 256 ++ packages/client-runtime/src/operations/index.ts | 2 + packages/client-runtime/src/operations/projects.test.ts | 146 + packages/client-runtime/src/operations/projects.ts | 224 + packages/client-runtime/src/platform/capabilities.ts | 61 + packages/client-runtime/src/platform/index.ts | 4 + packages/client-runtime/src/platform/persistence.ts | 84 + packages/client-runtime/src/platform/source.ts | 11 + packages/client-runtime/src/platform/storageDocument.test.ts | 146 + packages/client-runtime/src/platform/storageDocument.ts | 141 + packages/client-runtime/src/projectPaths.ts | 221 - packages/client-runtime/src/reconnectBackoff.test.ts | 65 - packages/client-runtime/src/reconnectBackoff.ts | 47 - packages/client-runtime/src/relay/discovery.test.ts | 371 ++ packages/client-runtime/src/relay/discovery.ts | 333 ++ packages/client-runtime/src/relay/index.ts | 3 + packages/client-runtime/src/relay/managedRelay.test.ts | 515 +++ packages/client-runtime/src/relay/managedRelay.ts | 764 ++++ packages/client-runtime/src/relay/managedRelayState.test.ts | 383 ++ packages/client-runtime/src/relay/managedRelayState.ts | 450 ++ packages/client-runtime/src/remote.test.ts | 475 -- packages/client-runtime/src/remote.ts | 371 -- packages/client-runtime/src/rpc/client.test.ts | 391 ++ packages/client-runtime/src/rpc/client.ts | 247 ++ packages/client-runtime/src/rpc/http.ts | 154 + packages/client-runtime/src/rpc/index.ts | 4 + packages/client-runtime/src/rpc/protocol.ts | 8 + packages/client-runtime/src/rpc/session.test.ts | 276 ++ packages/client-runtime/src/rpc/session.ts | 144 + packages/client-runtime/src/scoped.ts | 69 - packages/client-runtime/src/shellSnapshotReducer.test.ts | 163 - packages/client-runtime/src/shellSnapshotReducer.ts | 44 - packages/client-runtime/src/shellSnapshotState.test.ts | 128 - packages/client-runtime/src/shellSnapshotState.ts | 140 - packages/client-runtime/src/shellTypes.ts | 38 - packages/client-runtime/src/sourceControlDiscoveryState.test.ts | 309 -- packages/client-runtime/src/sourceControlDiscoveryState.ts | 401 -- packages/client-runtime/src/state/archivedThreads.test.ts | 15 + packages/client-runtime/src/state/archivedThreads.ts | 30 + packages/client-runtime/src/state/assets.test.ts | 82 + packages/client-runtime/src/state/assets.ts | 54 + packages/client-runtime/src/state/auth.test.ts | 79 + packages/client-runtime/src/state/auth.ts | 90 + packages/client-runtime/src/state/checkpointDiff.ts | 25 + packages/client-runtime/src/state/composerPathSearch.ts | 19 + packages/client-runtime/src/state/connections.ts | 120 + packages/client-runtime/src/state/entities.test.ts | 310 ++ packages/client-runtime/src/state/entities.ts | 81 + packages/client-runtime/src/state/filesystem.ts | 16 + packages/client-runtime/src/state/git.ts | 23 + packages/client-runtime/src/state/gitActions.ts | 440 ++ packages/client-runtime/src/state/models.ts | 53 + packages/client-runtime/src/state/orchestration.ts | 24 + packages/client-runtime/src/state/presentation.ts | 69 + packages/client-runtime/src/state/preview.ts | 103 + packages/client-runtime/src/state/projectCommands.ts | 106 + packages/client-runtime/src/state/projectEntities.ts | 105 + packages/client-runtime/src/state/projects.ts | 224 + packages/client-runtime/src/state/relayDiscovery.ts | 42 + packages/client-runtime/src/state/review.ts | 17 + packages/client-runtime/src/state/runtime.test.ts | 451 ++ packages/client-runtime/src/state/runtime.ts | 651 +++ packages/client-runtime/src/state/server.test.ts | 54 + packages/client-runtime/src/state/server.ts | 182 + packages/client-runtime/src/state/session.test.ts | 21 + packages/client-runtime/src/state/session.ts | 88 + packages/client-runtime/src/state/shell-sync.test.ts | 123 + packages/client-runtime/src/state/shell.test.ts | 130 + packages/client-runtime/src/state/shell.ts | 314 ++ packages/client-runtime/src/state/shellCommands.ts | 16 + packages/client-runtime/src/state/shellReducer.test.ts | 163 + packages/client-runtime/src/state/shellReducer.ts | 44 + packages/client-runtime/src/state/snapshots.ts | 20 + packages/client-runtime/src/state/sourceControl.ts | 41 + packages/client-runtime/src/state/terminal.ts | 95 + packages/client-runtime/src/state/terminalSession.test.ts | 187 + packages/client-runtime/src/state/terminalSession.ts | 194 + packages/client-runtime/src/state/threadCommands.ts | 140 + packages/client-runtime/src/state/threadDetail.ts | 185 + packages/client-runtime/src/state/threadReducer.test.ts | 700 +++ packages/client-runtime/src/state/threadReducer.ts | 547 +++ packages/client-runtime/src/state/threadShell.ts | 186 + packages/client-runtime/src/state/threads-sync.test.ts | 406 ++ packages/client-runtime/src/state/threads.ts | 269 ++ packages/client-runtime/src/state/vcs.ts | 85 + packages/client-runtime/src/state/vcsAction.test.ts | 342 ++ packages/client-runtime/src/state/vcsAction.ts | 499 +++ packages/client-runtime/src/state/vcsCommandScheduler.ts | 13 + packages/client-runtime/src/state/vcsRef.ts | 9 + packages/client-runtime/src/state/vcsStatus.ts | 6 + packages/client-runtime/src/terminalSessionState.test.ts | 558 --- packages/client-runtime/src/terminalSessionState.ts | 605 --- packages/client-runtime/src/threadDetailReducer.test.ts | 657 --- packages/client-runtime/src/threadDetailReducer.ts | 576 --- packages/client-runtime/src/threadDetailState.test.ts | 322 -- packages/client-runtime/src/threadDetailState.ts | 444 -- packages/client-runtime/src/transportError.test.ts | 61 - packages/client-runtime/src/transportError.ts | 34 - packages/client-runtime/src/vcsActionState.test.ts | 292 -- packages/client-runtime/src/vcsActionState.ts | 458 -- packages/client-runtime/src/vcsRefState.test.ts | 399 -- packages/client-runtime/src/vcsRefState.ts | 451 -- packages/client-runtime/src/vcsStatusState.test.ts | 363 -- packages/client-runtime/src/vcsStatusState.ts | 306 -- packages/client-runtime/src/wsRpcClient.test.ts | 186 - packages/client-runtime/src/wsRpcClient.ts | 440 -- packages/client-runtime/src/wsRpcProtocol.ts | 319 -- packages/client-runtime/src/wsTransport.test.ts | 959 ---- packages/client-runtime/src/wsTransport.ts | 377 -- packages/client-runtime/tsconfig.json | 1 - packages/contracts/src/ipc.ts | 17 +- packages/contracts/src/relay.ts | 1 + packages/shared/package.json | 8 +- packages/shared/src/Net.test.ts | 4 +- packages/shared/src/Net.ts | 95 +- packages/shared/src/relayJwt.ts | 3 +- packages/shared/src/relayTracing.ts | 73 +- pnpm-lock.yaml | 265 +- vite.config.ts | 17 +- 625 files changed, 40782 insertions(+), 57237 deletions(-)