.github/workflows/ci.yml | 9 +- .gitignore | 1 + .oxfmtrc.json | 3 +- .oxlintrc.json | 4 +- .plans/11-effect.md | 42 + .plans/12-effect-new.md | 58 + .plans/13-provider-service-integration-tests.md | 110 + .plans/14-server-authoritative-event-sourcing-cleanup.md | 215 + .plans/15-effect-server.md | 10 + .plans/16-pr89-review-remediation-phases.md | 145 + .plans/16c-pr89-remediation-checklist.md | 477 ++ .plans/17-claude-code.md | 546 +++ .plans/spec-1-1-cutover-plan.md | 201 + .plans/spec-contract-matrix.md | 401 ++ .test-favicon.mjs | 64 + .vscode/settings.json | 3 +- AGENTS.md | 2 +- README.md | 9 +- REMOTE.md | 65 + SPEC.md | 582 +++ TODO.md | 4 +- apps/desktop/package.json | 7 +- apps/desktop/scripts/dev-electron.mjs | 7 +- apps/desktop/scripts/electron-launcher.mjs | 53 +- apps/desktop/src/main.ts | 22 +- apps/desktop/src/preload.ts | 14 +- apps/server/integration/OrchestrationEngineHarness.integration.ts | 401 ++ apps/server/integration/TestProviderAdapter.integration.ts | 368 ++ apps/server/integration/fixtures/providerRuntime.ts | 138 + apps/server/integration/orchestrationEngine.integration.test.ts | 750 +++ apps/server/integration/providerService.integration.test.ts | 287 ++ apps/server/package.json | 15 +- apps/server/scripts/bundle-client.mjs | 21 - apps/server/scripts/bundle-client.ts | 19 + apps/server/src/checkpointing/Diffs.test.ts | 68 + apps/server/src/checkpointing/Diffs.ts | 27 + apps/server/src/checkpointing/Errors.ts | 43 + apps/server/src/checkpointing/Layers/CheckpointDiffQuery.test.ts | 193 + apps/server/src/checkpointing/Layers/CheckpointDiffQuery.ts | 169 + apps/server/src/checkpointing/Layers/CheckpointStore.ts | 282 ++ apps/server/src/checkpointing/Services/CheckpointDiffQuery.ts | 49 + apps/server/src/checkpointing/Services/CheckpointStore.ts | 100 + apps/server/src/checkpointing/Utils.ts | 28 + apps/server/src/codexAppServerManager.test.ts | 21 +- apps/server/src/codexAppServerManager.ts | 180 +- apps/server/src/codexTextGenerator.ts | 252 - apps/server/src/config.ts | 122 + apps/server/src/coreServices.ts | 32 - apps/server/src/filesystemCheckpointStore.test.ts | 243 - apps/server/src/filesystemCheckpointStore.ts | 322 -- apps/server/src/fixPath.ts | 18 - apps/server/src/git.test.ts | 930 ---- apps/server/src/git.ts | 740 --- apps/server/src/git/Errors.ts | 67 + apps/server/src/git/Layers/CodexTextGeneration.test.ts | 205 + apps/server/src/git/Layers/CodexTextGeneration.ts | 393 ++ apps/server/src/git/Layers/GitCore.test.ts | 1157 +++++ apps/server/src/git/Layers/GitCore.ts | 759 +++ apps/server/src/git/Layers/GitHubCli.ts | 178 + apps/server/src/git/Layers/GitManager.test.ts | 680 +++ apps/server/src/git/Layers/GitManager.ts | 420 ++ apps/server/src/git/Layers/GitService.test.ts | 59 + apps/server/src/git/Layers/GitService.ts | 144 + apps/server/src/git/Services/GitCore.ts | 148 + apps/server/src/git/Services/GitHubCli.ts | 68 + apps/server/src/git/Services/GitManager.ts | 43 + apps/server/src/git/Services/GitService.ts | 45 + apps/server/src/git/Services/TextGeneration.ts | 71 + apps/server/src/gitManager.test.ts | 547 --- apps/server/src/gitManager.ts | 524 -- apps/server/src/index.ts | 197 +- apps/server/src/keybindings.test.ts | 647 ++- apps/server/src/keybindings.ts | 706 ++- apps/server/src/main.test.ts | 242 + apps/server/src/main.ts | 321 ++ apps/server/src/open.test.ts | 95 + apps/server/src/open.ts | 135 + apps/server/src/orchestration/Errors.ts | 123 + apps/server/src/orchestration/Layers/CheckpointReactor.test.ts | 912 ++++ apps/server/src/orchestration/Layers/CheckpointReactor.ts | 737 +++ apps/server/src/orchestration/Layers/OrchestrationEngine.test.ts | 652 +++ apps/server/src/orchestration/Layers/OrchestrationEngine.ts | 246 + apps/server/src/orchestration/Layers/OrchestrationReactor.test.ts | 61 + apps/server/src/orchestration/Layers/OrchestrationReactor.ts | 30 + apps/server/src/orchestration/Layers/ProjectionPipeline.test.ts | 974 ++++ apps/server/src/orchestration/Layers/ProjectionPipeline.ts | 912 ++++ apps/server/src/orchestration/Layers/ProjectionSnapshotQuery.test.ts | 306 ++ apps/server/src/orchestration/Layers/ProjectionSnapshotQuery.ts | 520 ++ apps/server/src/orchestration/Layers/ProviderCommandReactor.test.ts | 493 ++ apps/server/src/orchestration/Layers/ProviderCommandReactor.ts | 430 ++ apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.test.ts | 751 +++ apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts | 639 +++ apps/server/src/orchestration/Schemas.ts | 42 + apps/server/src/orchestration/Services/CheckpointReactor.ts | 34 + apps/server/src/orchestration/Services/OrchestrationEngine.ts | 80 + apps/server/src/orchestration/Services/OrchestrationReactor.ts | 31 + apps/server/src/orchestration/Services/ProjectionPipeline.ts | 42 + apps/server/src/orchestration/Services/ProjectionSnapshotQuery.ts | 34 + apps/server/src/orchestration/Services/ProviderCommandReactor.ts | 34 + apps/server/src/orchestration/Services/ProviderRuntimeIngestion.ts | 34 + apps/server/src/orchestration/commandInvariants.test.ts | 189 + apps/server/src/orchestration/commandInvariants.ts | 121 + apps/server/src/orchestration/decider.projectScripts.test.ts | 183 + apps/server/src/orchestration/decider.ts | 526 ++ apps/server/src/orchestration/projector.test.ts | 755 +++ apps/server/src/orchestration/projector.ts | 522 ++ apps/server/src/os-jank.ts | 39 + apps/server/src/persistence/Errors.ts | 105 + apps/server/src/persistence/Layers/OrchestrationCommandReceipts.ts | 89 + apps/server/src/persistence/Layers/OrchestrationEventStore.test.ts | 119 + apps/server/src/persistence/Layers/OrchestrationEventStore.ts | 269 + apps/server/src/persistence/Layers/ProjectionCheckpoints.ts | 213 + apps/server/src/persistence/Layers/ProjectionPendingApprovals.ts | 136 + apps/server/src/persistence/Layers/ProjectionProjects.ts | 168 + apps/server/src/persistence/Layers/ProjectionState.ts | 116 + apps/server/src/persistence/Layers/ProjectionThreadActivities.ts | 136 + apps/server/src/persistence/Layers/ProjectionThreadMessages.ts | 123 + apps/server/src/persistence/Layers/ProjectionThreadSessions.ts | 119 + apps/server/src/persistence/Layers/ProjectionThreads.ts | 143 + apps/server/src/persistence/Layers/ProjectionTurns.ts | 335 ++ apps/server/src/persistence/Layers/ProviderSessionRuntime.ts | 204 + apps/server/src/persistence/Layers/ProviderSessions.ts | 225 + apps/server/src/persistence/Layers/Sqlite.ts | 57 + apps/server/src/persistence/Migrations.ts | 76 + apps/server/src/persistence/Migrations/001_OrchestrationEvents.ts | 44 + apps/server/src/persistence/Migrations/002_OrchestrationCommandReceipts.ts | 28 + apps/server/src/persistence/Migrations/003_CheckpointDiffBlobs.ts | 22 + apps/server/src/persistence/Migrations/004_ProviderSessionRuntime.ts | 35 + apps/server/src/persistence/Migrations/005_Projections.ts | 153 + apps/server/src/persistence/Migrations/006_ProjectionThreadSessionRuntimeModeColumns.ts | 30 + apps/server/src/persistence/NodeSqliteClient.test.ts | 30 + apps/server/src/persistence/NodeSqliteClient.ts | 241 + apps/server/src/persistence/Services/OrchestrationCommandReceipts.ts | 69 + apps/server/src/persistence/Services/OrchestrationEventStore.ts | 70 + apps/server/src/persistence/Services/ProjectionCheckpoints.ts | 93 + apps/server/src/persistence/Services/ProjectionPendingApprovals.ts | 91 + apps/server/src/persistence/Services/ProjectionProjects.ts | 79 + apps/server/src/persistence/Services/ProjectionState.ts | 64 + apps/server/src/persistence/Services/ProjectionThreadActivities.ts | 80 + apps/server/src/persistence/Services/ProjectionThreadMessages.ts | 79 + apps/server/src/persistence/Services/ProjectionThreadSessions.ts | 80 + apps/server/src/persistence/Services/ProjectionThreads.ts | 85 + apps/server/src/persistence/Services/ProjectionTurns.ts | 161 + apps/server/src/persistence/Services/ProviderSessionRuntime.ts | 87 + apps/server/src/persistence/Services/ProviderSessions.ts | 81 + apps/server/src/projectFaviconRoute.test.ts | 155 + apps/server/src/projectFaviconRoute.ts | 162 + apps/server/src/projectRegistry.test.ts | 113 - apps/server/src/projectRegistry.ts | 235 - apps/server/src/provider/Errors.ts | 163 + apps/server/src/provider/Layers/CodexAdapter.test.ts | 257 + apps/server/src/provider/Layers/CodexAdapter.ts | 581 +++ apps/server/src/provider/Layers/EventNdjsonLogger.test.ts | 37 + apps/server/src/provider/Layers/EventNdjsonLogger.ts | 66 + apps/server/src/provider/Layers/ProviderAdapterRegistry.test.ts | 54 + apps/server/src/provider/Layers/ProviderAdapterRegistry.ts | 49 + apps/server/src/provider/Layers/ProviderService.test.ts | 718 +++ apps/server/src/provider/Layers/ProviderService.ts | 579 +++ apps/server/src/provider/Layers/ProviderSessionDirectory.test.ts | 227 + apps/server/src/provider/Layers/ProviderSessionDirectory.ts | 196 + apps/server/src/provider/Services/CodexAdapter.ts | 30 + apps/server/src/provider/Services/ProviderAdapter.ts | 112 + apps/server/src/provider/Services/ProviderAdapterRegistry.ts | 42 + apps/server/src/provider/Services/ProviderService.ts | 109 + apps/server/src/provider/Services/ProviderSessionDirectory.ts | 102 + apps/server/src/providerManager.test.ts | 879 ---- apps/server/src/providerManager.ts | 642 --- apps/server/src/ptyAdapter.test.ts | 54 - apps/server/src/ptyAdapter.ts | 131 - apps/server/src/serverLayers.ts | 110 + apps/server/src/terminal/Layers/BunPTY.ts | 116 + apps/server/src/terminal/Layers/Manager.test.ts | 672 +++ apps/server/src/terminal/Layers/Manager.ts | 1224 +++++ apps/server/src/terminal/Layers/NodePTY.test.ts | 45 + apps/server/src/terminal/Layers/NodePTY.ts | 117 + apps/server/src/terminal/Services/Manager.ts | 117 + apps/server/src/terminal/Services/PTY.ts | 58 + apps/server/src/terminalManager.test.ts | 566 --- apps/server/src/terminalManager.ts | 1043 ---- apps/server/src/workspaceEntries.chunking.test.ts | 15 +- apps/server/src/workspaceEntries.test.ts | 48 +- apps/server/src/workspaceEntries.ts | 16 +- apps/server/src/wsServer.test.ts | 1462 ++++-- apps/server/src/wsServer.ts | 846 ++-- apps/server/tsconfig.json | 22 +- apps/server/tsdown.config.ts | 2 +- apps/web/package.json | 5 +- apps/web/src/appSettings.ts | 33 +- apps/web/src/components/BranchToolbar.logic.test.ts | 11 +- apps/web/src/components/BranchToolbar.logic.ts | 6 +- apps/web/src/components/BranchToolbar.tsx | 49 +- apps/web/src/components/ChatMarkdown.tsx | 43 +- apps/web/src/components/ChatView.tsx | 1378 +++--- apps/web/src/components/DiffPanel.tsx | 304 +- apps/web/src/components/DiffWorkerPoolProvider.tsx | 45 +- apps/web/src/components/GitActionsControl.tsx | 58 +- apps/web/src/components/ProjectScriptsControl.tsx | 60 +- apps/web/src/components/Sidebar.tsx | 854 ++-- apps/web/src/components/ThreadTerminalDrawer.tsx | 63 +- apps/web/src/components/ui/collapsible.tsx | 39 + apps/web/src/components/ui/combobox.tsx | 4 +- apps/web/src/components/ui/command.tsx | 5 +- apps/web/src/components/ui/sheet.tsx | 1 + apps/web/src/components/ui/sidebar.tsx | 991 ++++ apps/web/src/components/ui/toast.tsx | 10 +- apps/web/src/components/ui/toggle-group.tsx | 4 +- apps/web/src/components/ui/tooltip.tsx | 59 + apps/web/src/contextMenuFallback.ts | 6 +- apps/web/src/diffRouteSearch.test.ts | 23 +- apps/web/src/diffRouteSearch.ts | 13 +- apps/web/src/historyBootstrap.test.ts | 17 +- apps/web/src/hooks/useNativeApi.ts | 6 - apps/web/src/hooks/useTheme.ts | 22 +- apps/web/src/hooks/useTurnDiffSummaries.ts | 22 +- apps/web/src/index.css | 17 + apps/web/src/keybindings.test.ts | 26 +- apps/web/src/keybindings.ts | 8 + apps/web/src/lib/diffRendering.test.ts | 8 + apps/web/src/lib/gitReactQuery.test.ts | 33 + apps/web/src/lib/gitReactQuery.ts | 107 +- apps/web/src/lib/projectReactQuery.ts | 11 +- apps/web/src/lib/projectScriptKeybindings.test.ts | 83 + apps/web/src/lib/projectScriptKeybindings.ts | 59 + apps/web/src/lib/providerReactQuery.test.ts | 110 +- apps/web/src/lib/providerReactQuery.ts | 61 +- apps/web/src/lib/serverReactQuery.ts | 9 +- apps/web/src/lib/utils.ts | 9 + apps/web/src/markdown-links.test.ts | 49 + apps/web/src/markdown-links.ts | 134 + apps/web/src/model-logic.test.ts | 33 - apps/web/src/model-logic.ts | 10 - apps/web/src/nativeApi.ts | 26 + apps/web/src/persistenceSchema.test.ts | 507 -- apps/web/src/persistenceSchema.ts | 399 -- apps/web/src/projectScripts.ts | 28 +- apps/web/src/routes/__root.tsx | 353 +- apps/web/src/routes/_chat.$threadId.tsx | 189 +- apps/web/src/routes/_chat.index.tsx | 10 + apps/web/src/routes/_chat.settings.tsx | 461 +- apps/web/src/routes/_chat.tsx | 16 +- apps/web/src/session-logic.test.ts | 1027 +--- apps/web/src/session-logic.ts | 1001 +--- apps/web/src/store.test.ts | 952 +--- apps/web/src/store.ts | 750 +-- apps/web/src/terminalActivity.test.ts | 71 + apps/web/src/terminalActivity.ts | 14 + apps/web/src/threadFactory.ts | 42 - apps/web/src/types.ts | 52 +- apps/web/src/vite-env.d.ts | 11 +- apps/web/src/vscode-icons-language-associations.json | 482 +- apps/web/src/vscode-icons-manifest.json | 8352 +++++++++++++++++++++++++++++++- apps/web/src/workers/diffs.worker.ts | 1 - apps/web/src/worktreeCleanup.test.ts | 38 +- apps/web/src/worktreeCleanup.ts | 2 +- apps/web/src/wsNativeApi.test.ts | 310 ++ apps/web/src/wsNativeApi.ts | 119 +- apps/web/src/wsTransport.test.ts | 175 + apps/web/src/wsTransport.ts | 65 +- apps/web/tsconfig.json | 14 +- apps/web/vite.config.ts | 2 +- bun.lock | 193 +- docs/adr/0001-provider-runtime-lifecycle-ownership.md | 40 + package.json | 24 +- packages/contracts/package.json | 5 +- packages/contracts/src/agent.ts | 27 - packages/contracts/src/baseSchemas.ts | 42 + packages/contracts/src/editor.ts | 16 + packages/contracts/src/git.test.ts | 107 - packages/contracts/src/git.ts | 252 +- packages/contracts/src/index.ts | 8 +- packages/contracts/src/ipc.ts | 101 +- packages/contracts/src/keybindings.test.ts | 123 +- packages/contracts/src/keybindings.ts | 146 +- packages/contracts/src/model.ts | 4 + packages/contracts/src/orchestration.test.ts | 86 + packages/contracts/src/orchestration.ts | 897 ++++ packages/contracts/src/project.test.ts | 147 - packages/contracts/src/project.ts | 142 +- packages/contracts/src/provider.test.ts | 283 -- packages/contracts/src/provider.ts | 335 +- packages/contracts/src/providerRuntime.ts | 213 + packages/contracts/src/server.ts | 52 +- packages/contracts/src/terminal.test.ts | 229 +- packages/contracts/src/terminal.ts | 201 +- packages/contracts/src/todo.test.ts | 52 - packages/contracts/src/todo.ts | 19 - packages/contracts/src/ws.test.ts | 58 + packages/contracts/src/ws.ts | 157 +- packages/contracts/tsconfig.json | 14 + scripts/build-desktop-dmg.mjs | 53 +- scripts/dev-runner.mjs | 202 +- scripts/dev-runner.test.ts | 125 + turbo.json | 4 +- 293 files changed, 51753 insertions(+), 16653 deletions(-)