@moretea-labs/forge 1.8.0 → 1.8.2

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.
Files changed (695) hide show
  1. package/AGENTS.md +73 -7
  2. package/CHANGELOG.md +34 -0
  3. package/CLAUDE.md +17 -2
  4. package/CONTRIBUTING.md +3 -2
  5. package/README.en.md +24 -3
  6. package/README.md +10 -6
  7. package/README.zh-CN.md +5 -3
  8. package/THIRD_PARTY_NOTICES.md +1 -2
  9. package/adapters/chatgpt/browser-delivery-host.ts +7 -1
  10. package/adapters/chatgpt/browser-delivery-runtime.ts +531 -56
  11. package/adapters/chatgpt/controller-binding-store.ts +101 -22
  12. package/adapters/chatgpt/controller-round-host.ts +15 -25
  13. package/adapters/chatgpt/controller-round-settlement-store.ts +58 -4
  14. package/adapters/chatgpt/provider-delivery.ts +229 -2
  15. package/adapters/chatgpt/work-conversation-binding-store.ts +99 -54
  16. package/adapters/computer/chatgpt-extension-target.ts +708 -0
  17. package/adapters/computer/chrome-extension/background.js +541 -0
  18. package/adapters/computer/chrome-extension/content.js +402 -0
  19. package/adapters/computer/chrome-extension/core.js +24 -0
  20. package/adapters/computer/chrome-extension/manifest.json +32 -0
  21. package/adapters/computer/desktop-operator-discovery.ts +11 -31
  22. package/adapters/computer/desktop-operator-provider.ts +18 -6
  23. package/adapters/computer/interaction-target-authority.ts +178 -24
  24. package/adapters/mcp/access-mode.ts +18 -39
  25. package/adapters/mcp/auth.ts +2 -7
  26. package/adapters/mcp/instructions.ts +6 -5
  27. package/adapters/mcp/multi-repository.ts +10 -47
  28. package/adapters/mcp/oauth.ts +73 -0
  29. package/adapters/mcp/paths.ts +4 -1
  30. package/adapters/mcp/runtime-gateway/bounded-result-runtime.ts +62 -0
  31. package/adapters/mcp/runtime-gateway/cognition-settlement.ts +201 -0
  32. package/adapters/mcp/runtime-gateway/context-adapter.ts +490 -113
  33. package/adapters/mcp/runtime-gateway/context-pack-sidecar.ts +83 -0
  34. package/adapters/mcp/runtime-gateway/controller-authority-adapter.ts +20 -5
  35. package/adapters/mcp/runtime-gateway/core-capability-adapter.ts +258 -0
  36. package/adapters/mcp/runtime-gateway/engineering-preconditions.ts +10 -27
  37. package/adapters/mcp/runtime-gateway/engineering-tool-contract.ts +15 -0
  38. package/adapters/mcp/runtime-gateway/execution-tools.ts +14 -54
  39. package/adapters/mcp/runtime-gateway/gateway-execution-adapter.ts +2 -1
  40. package/adapters/mcp/runtime-gateway/plugin-adapter.ts +132 -47
  41. package/adapters/mcp/runtime-gateway/process-tools.ts +173 -23
  42. package/adapters/mcp/runtime-gateway/protected-computer-adapter.ts +16 -4
  43. package/adapters/mcp/runtime-gateway/recovery-adapter.ts +69 -52
  44. package/adapters/mcp/runtime-gateway/repository-compat-adapter.ts +4 -35
  45. package/adapters/mcp/runtime-gateway/result-adapter.ts +10 -4
  46. package/adapters/mcp/runtime-gateway/router.ts +19 -507
  47. package/adapters/mcp/runtime-gateway/routing-policy.ts +506 -0
  48. package/adapters/mcp/runtime-gateway/runtime-observation-adapter.ts +15 -66
  49. package/adapters/mcp/runtime-gateway/runtime-readiness-observation.ts +218 -0
  50. package/adapters/mcp/runtime-gateway/runtime-tool-definitions.ts +123 -178
  51. package/adapters/mcp/runtime-gateway/runtime-tools.ts +11 -5
  52. package/adapters/mcp/runtime-gateway/scheduler-adapter.ts +37 -1
  53. package/adapters/mcp/runtime-gateway/shared-adapter.ts +20 -0
  54. package/adapters/mcp/runtime-gateway/status-inbox-adapter.ts +416 -270
  55. package/adapters/mcp/runtime-gateway/typescript-navigation-sidecar.ts +140 -0
  56. package/adapters/mcp/runtime-gateway/work-adapter.ts +262 -3123
  57. package/adapters/mcp/runtime-gateway/work-controller-operations.ts +257 -0
  58. package/adapters/mcp/runtime-gateway/work-detail-projection.ts +60 -0
  59. package/adapters/mcp/runtime-gateway/work-input-wire-migration.ts +229 -0
  60. package/adapters/mcp/runtime-gateway/work-learning-operations.ts +145 -0
  61. package/adapters/mcp/runtime-gateway/work-list-projection.ts +38 -0
  62. package/adapters/mcp/runtime-gateway/work-plan-operations.ts +382 -0
  63. package/adapters/mcp/runtime-gateway/work-repair-adapter.ts +308 -0
  64. package/adapters/mcp/runtime-gateway/work-requirement-operations.ts +148 -0
  65. package/adapters/mcp/runtime-gateway/work-semantic-operations.ts +320 -0
  66. package/adapters/mcp/runtime-gateway/work-workflow-operations.ts +113 -0
  67. package/adapters/mcp/runtime-gateway/workflow-supervisor-adapter.ts +180 -0
  68. package/adapters/mcp/server.ts +91 -26
  69. package/adapters/mcp/setup.ts +5 -13
  70. package/adapters/mcp/tool-mapping/access-tools.ts +0 -6
  71. package/adapters/mcp/tool-mapping/legacy-tool-service.ts +703 -3092
  72. package/adapters/mcp/tool-mapping/post-finalize-work-attribution.ts +5 -10
  73. package/adapters/mcp/tool-mapping/repository-tools.ts +170 -213
  74. package/adapters/mcp/toolset-names.ts +11 -37
  75. package/adapters/mcp/toolset.ts +19 -92
  76. package/{src/cli → adapters}/mcp/transports/AGENTS.md +5 -5
  77. package/{src/cli → adapters}/mcp/transports/CLAUDE.md +5 -5
  78. package/adapters/mcp/transports/http-observation.ts +377 -0
  79. package/adapters/mcp/transports/http-post-lifecycle.ts +19 -0
  80. package/adapters/mcp/transports/http.ts +200 -683
  81. package/adapters/mcp/transports/oauth-http.ts +322 -0
  82. package/adapters/mcp/transports/session-registry.ts +6 -0
  83. package/adapters/mcp/tunnels/openai-secure-tunnel.ts +89 -5
  84. package/adapters/mcp/types.ts +0 -6
  85. package/assets/hooks/lib/session-state.sh +0 -38
  86. package/assets/hooks/post-bash.sh +1 -1
  87. package/assets/hooks/post-tool-observer.sh +0 -5
  88. package/assets/hooks/prompt-guard.sh +0 -55
  89. package/assets/partials/04-project-structure.partial.md +1 -1
  90. package/assets/partials/07-footer.partial.md +1 -1
  91. package/assets/partials-agents/02-operating-mode.partial.md +1 -1
  92. package/assets/partials-agents/08-deep-docs.partial.md +1 -1
  93. package/assets/plugin-registry.v1.json +6 -4
  94. package/assets/reference-configs/agentic-development-flow.md +26 -1
  95. package/assets/reference-configs/external-tooling.md +0 -76
  96. package/assets/reference-configs/global-working-rules.md +19 -0
  97. package/assets/reference-configs/release-deploy.md +1 -1
  98. package/assets/templates/helpers/architecture-queue.sh +1 -1
  99. package/assets/templates/helpers/check-agent-tooling.sh +1 -327
  100. package/assets/templates/helpers/check-task-workflow.sh +1 -1
  101. package/assets/templates/helpers/ensure-task-workflow.sh +0 -14
  102. package/assets/templates/helpers/migrate-project-template.sh +2 -2
  103. package/assets/workflow-contract.v1.json +0 -2
  104. package/docs/README.md +5 -2
  105. package/docs/architecture/CURRENT.md +205 -51
  106. package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +14 -5
  107. package/docs/architecture/decisions/20260823-immediate-controller-relay.md +6 -3
  108. package/docs/architecture/decisions/20260904-ios-device-migration-baseline.md +42 -0
  109. package/docs/architecture/decisions/20260907-assistant-learning-loop.md +2 -0
  110. package/docs/architecture/decisions/20260907-controller-round-transition-policy.md +19 -4
  111. package/docs/architecture/decisions/20260916-workflow-supervisor-authority.md +249 -0
  112. package/docs/architecture/decisions/20260917-cognitive-memory-foundation.md +82 -0
  113. package/docs/architecture/decisions/20260918-stable-candidate-release-lifecycle.md +234 -0
  114. package/docs/architecture/decisions/20260919-autonomous-work-liveness.md +62 -0
  115. package/docs/architecture/decisions/20260924-thin-semantic-working-context.md +74 -0
  116. package/docs/architecture/decisions/20261001-supervisor-turn-authority.md +342 -0
  117. package/docs/architecture/decisions/20261005-forge-v3-desktop-client-boundary.md +77 -0
  118. package/docs/architecture/decisions/20261009-exact-code-context-discovery.md +19 -0
  119. package/docs/architecture/decisions/20261009-generated-xcode-cache-retention.md +37 -0
  120. package/docs/architecture/decisions/20261011-autonomous-continuation-convergence.md +597 -0
  121. package/docs/architecture/decisions/20261017-edit-session-finalization-reconciliation.md +17 -0
  122. package/docs/architecture/decisions/20261019-retire-host-skills.md +16 -0
  123. package/docs/architecture/diagrams/agentic-dev-plugin-architecture.html +1 -1
  124. package/docs/architecture/domains/public-surface.md +3 -5
  125. package/docs/architecture/domains/verification.md +6 -5
  126. package/docs/architecture/domains/workflow-engine.md +6 -0
  127. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +3 -3
  128. package/docs/architecture/requests/2026-09-04-computer-plugin-workflow-taxonomy.md +4 -4
  129. package/docs/architecture/reviews/20261015-code-search-runtime-acceptance.md +75 -0
  130. package/docs/forge-plugin-management.md +16 -4
  131. package/docs/operations/controller-browser-plugin.md +23 -0
  132. package/docs/operations/controller-performance-and-502.md +17 -0
  133. package/docs/operations/controller-reliability-runbook.md +2 -2
  134. package/docs/operations/features.md +6 -7
  135. package/docs/operations/features.zh-CN.md +1 -1
  136. package/docs/operations/github-repository.md +4 -4
  137. package/docs/operations/github-semantic-release-projection.md +20 -0
  138. package/docs/operations/homebrew.md +2 -2
  139. package/docs/operations/mcp-tool-exposure.md +13 -52
  140. package/docs/operations/releasing.md +2 -0
  141. package/docs/operations/runtime-performance-diagnostics.md +8 -0
  142. package/docs/operations/standalone-disaster-recovery.md +15 -7
  143. package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
  144. package/docs/tutorials/03-first-repository-task.md +2 -0
  145. package/docs/wiki/Computer-and-Plugins.md +78 -0
  146. package/docs/wiki/Computer-and-Plugins.zh-CN.md +88 -0
  147. package/docs/wiki/Home.md +16 -2
  148. package/docs/wiki/Implementation.md +25 -13
  149. package/docs/wiki/Installation.md +28 -32
  150. package/docs/wiki/Integrations.md +4 -0
  151. package/docs/wiki/Quick-Start.md +35 -22
  152. package/docs/wiki/Releases-and-Upgrades.md +15 -25
  153. package/docs/wiki/_Sidebar.md +5 -1
  154. package/package.json +25 -25
  155. package/packages/kernel/cognition/api/index.ts +6 -0
  156. package/packages/kernel/cognition/application/activation-service.ts +451 -0
  157. package/packages/kernel/cognition/application/consolidation-service.ts +185 -0
  158. package/packages/kernel/cognition/application/legacy-experience-adapter.ts +38 -0
  159. package/packages/kernel/cognition/application/memory-service.ts +64 -0
  160. package/packages/kernel/cognition/domain/learning.ts +106 -0
  161. package/packages/kernel/cognition/domain/memory.ts +254 -0
  162. package/packages/kernel/controller/api/index.ts +1 -0
  163. package/packages/kernel/controller/application/continuation-service.ts +281 -0
  164. package/packages/kernel/controller/application/controller-round-service.ts +12 -0
  165. package/packages/kernel/controller/domain/controller-round-transition-policy.ts +242 -21
  166. package/packages/kernel/controller/domain/controller-round.ts +4 -1
  167. package/packages/kernel/controller/domain/execution-quality.ts +3 -1
  168. package/packages/kernel/controller/infrastructure/controller-round-store.ts +689 -103
  169. package/packages/kernel/controller/infrastructure/controller-session-store.ts +348 -97
  170. package/packages/kernel/controller/ports/controller-host.ts +2 -0
  171. package/packages/kernel/identity/api/index.ts +10 -0
  172. package/packages/kernel/identity/domain/activity-projection.ts +43 -0
  173. package/packages/kernel/identity/domain/capability-broker.ts +60 -0
  174. package/packages/kernel/identity/domain/grant.ts +72 -0
  175. package/packages/kernel/identity/domain/owned-resource.ts +116 -0
  176. package/packages/kernel/identity/domain/user-request.ts +93 -0
  177. package/packages/kernel/identity/infrastructure/activity-projection-store.ts +87 -0
  178. package/packages/kernel/identity/infrastructure/capability-broker.ts +81 -0
  179. package/packages/kernel/identity/infrastructure/grant-store.ts +284 -0
  180. package/packages/kernel/identity/infrastructure/owned-resource-store.ts +259 -0
  181. package/packages/kernel/identity/infrastructure/user-request-store.ts +182 -0
  182. package/packages/kernel/scheduler/api/index.ts +0 -2
  183. package/packages/kernel/scheduler/application/eligibility.ts +4 -1
  184. package/packages/kernel/scheduler/application/schedule-service.ts +3 -0
  185. package/packages/kernel/scheduler/application/settlement.ts +0 -15
  186. package/packages/kernel/scheduler/domain/schedule.ts +87 -0
  187. package/packages/kernel/scheduler/infrastructure/schedule-store.ts +166 -143
  188. package/packages/kernel/work/api/index.ts +3 -2
  189. package/packages/kernel/work/application/work-service.ts +18 -42
  190. package/packages/kernel/work/domain/current-task-lineage.ts +104 -0
  191. package/packages/kernel/work/domain/engineering-design.ts +10 -5
  192. package/packages/kernel/work/domain/engineering-profile.ts +8 -12
  193. package/packages/kernel/work/domain/evaluation-promotion-receipt.ts +186 -0
  194. package/packages/kernel/work/domain/execution-concurrency.ts +19 -26
  195. package/packages/kernel/work/domain/execution-snapshot.ts +0 -31
  196. package/packages/kernel/work/domain/implementation-review.ts +14 -331
  197. package/packages/kernel/work/domain/objective-graph.ts +119 -0
  198. package/packages/kernel/work/domain/project-engineering-contract.ts +23 -1
  199. package/packages/kernel/work/domain/repository-completion-receipt.ts +1 -1
  200. package/packages/kernel/work/domain/state-machine.ts +34 -65
  201. package/packages/kernel/work/domain/types.ts +57 -51
  202. package/packages/kernel/work/infrastructure/work-contract-store.ts +847 -729
  203. package/packages/kernel/work/ports/work-contract-store.ts +5 -2
  204. package/packages/plugin-runtime/browser/provider-registry.ts +12 -36
  205. package/packages/plugin-runtime/browser/session-authority.ts +2 -1
  206. package/packages/plugin-runtime/computer/chatgpt-identity.ts +24 -0
  207. package/packages/plugin-runtime/computer/conversation-target.ts +153 -0
  208. package/packages/plugin-runtime/computer/index.ts +2 -0
  209. package/packages/plugin-runtime/computer/target-authority.ts +26 -1
  210. package/packages/plugin-runtime/external/unix-jsonl-transport.ts +142 -18
  211. package/packages/protocols/computer/contract.ts +27 -1
  212. package/scripts/activate-source-baseline.ts +7 -9
  213. package/scripts/assemble-template.ts +11 -72
  214. package/scripts/canary-controller-semantic-wait.ts +12 -24
  215. package/scripts/check-mcp-compatibility.ts +94 -201
  216. package/scripts/check-package-identity.mjs +0 -5
  217. package/scripts/check-runtime-architecture.mjs +921 -239
  218. package/scripts/forge-local-recovery-helper.mjs +93 -15
  219. package/scripts/init-project.sh +0 -46
  220. package/scripts/install-ios-hid-toolchain.sh +60 -0
  221. package/scripts/install-standalone-recovery.ts +1 -1
  222. package/scripts/lib/project-init-lib.sh +6 -3
  223. package/scripts/migrate-windows-wsl-controller-home.ts +2 -0
  224. package/scripts/open-source-audit-allowlist.txt +1 -3
  225. package/scripts/run-bounded-command.mjs +5 -0
  226. package/scripts/run-governed-gate.ts +2 -1
  227. package/scripts/run-mobile-monitor-bridge.ts +0 -1
  228. package/scripts/smoke-control-plane-failure-domain.ts +94 -0
  229. package/scripts/smoke-ios-physical-device.ts +38 -10
  230. package/scripts/smoke-mcp-http-runtime.ts +12 -8
  231. package/scripts/smoke-mcp-tool-surface.ts +27 -41
  232. package/scripts/smoke-runtime-recovery.ts +12 -43
  233. package/scripts/smoke-schedule-engine.ts +23 -15
  234. package/scripts/smoke-unattended-transport-recovery.ts +223 -0
  235. package/scripts/smoke-user-request-continuation-restart.ts +232 -0
  236. package/scripts/smoke-workflow-supervisor-chrome-adapter.ts +95 -0
  237. package/scripts/smoke-workflow-supervisor-process-restart.ts +276 -0
  238. package/scripts/smoke-workflow-supervisor-restart-recovery.ts +150 -0
  239. package/scripts/smoke-workflow-supervisor.ts +103 -0
  240. package/scripts/sync-generated-authority.mjs +0 -1
  241. package/scripts/verify-forge-runtime.sh +2 -1
  242. package/src/cli/agent-jobs/executor-health.ts +12 -35
  243. package/src/cli/agent-jobs/integration.ts +20 -51
  244. package/src/cli/agent-jobs/job-manager.ts +7 -3
  245. package/src/cli/chatgpt-browser/file-policy.ts +2 -2
  246. package/src/cli/commands/brain-assistant.ts +27 -13
  247. package/src/cli/commands/brain.ts +13 -15
  248. package/src/cli/commands/chatgpt.ts +1 -163
  249. package/src/cli/commands/doctor.ts +1 -143
  250. package/src/cli/commands/global-runtime.ts +3 -196
  251. package/src/cli/commands/init-hook.ts +6 -23
  252. package/src/cli/commands/init.ts +3 -252
  253. package/src/cli/commands/mcp.ts +0 -5
  254. package/src/cli/commands/prompt-guard-decision.ts +0 -2
  255. package/src/cli/commands/recovery.ts +137 -135
  256. package/src/cli/commands/repository.ts +17 -1
  257. package/src/cli/commands/runtime.ts +3 -3
  258. package/src/cli/commands/setup-execution.ts +41 -0
  259. package/src/cli/commands/setup-profile.ts +8 -0
  260. package/src/cli/controller/check-runner.ts +13 -2
  261. package/src/cli/controller/completion-backlog.ts +3 -3
  262. package/src/cli/controller/completion-orchestrator.ts +5 -44
  263. package/src/cli/controller/completion-target.ts +3 -72
  264. package/src/cli/controller/composite-operations.ts +1 -1
  265. package/src/cli/controller/context/instruction-context.ts +1 -1
  266. package/src/cli/controller/context/known-paths.ts +2 -2
  267. package/src/cli/controller/context/query-planning.ts +11 -4
  268. package/src/cli/controller/context/rule-resolution.ts +2 -2
  269. package/src/cli/controller/context/source-materializer.ts +83 -102
  270. package/src/cli/controller/context/structural-provider.ts +84 -0
  271. package/src/cli/controller/context/structural.ts +6 -6
  272. package/src/cli/controller/context/types.ts +8 -9
  273. package/src/cli/controller/context-pack.ts +107 -84
  274. package/src/cli/controller/execution-completion.ts +4 -7
  275. package/src/cli/controller/execution-policy.ts +36 -153
  276. package/src/cli/controller/governance.ts +2 -3
  277. package/src/cli/controller/issue-store.ts +4 -99
  278. package/src/cli/controller/launch-agents.ts +59 -18
  279. package/src/cli/controller/operational-plan.ts +25 -52
  280. package/src/cli/controller/runtime-config.ts +5 -1
  281. package/src/cli/controller/stuck-state-migration.ts +2 -3
  282. package/src/cli/controller/systemd-user.ts +42 -10
  283. package/src/cli/editing/edit-session.ts +18 -12
  284. package/src/cli/github/github.ts +4 -4
  285. package/src/cli/github/semantic-projection.ts +174 -0
  286. package/src/cli/hook/prompt-intents.ts +0 -9
  287. package/src/cli/index.ts +1 -43
  288. package/src/cli/local-bridge/connector-freshness.ts +1 -12
  289. package/src/cli/local-bridge/console-automations.ts +19 -14
  290. package/src/cli/local-bridge/console-view-models.ts +4 -13
  291. package/src/cli/local-bridge/facade-api.ts +64 -193
  292. package/src/cli/local-bridge/server.ts +24 -147
  293. package/src/cli/local-bridge/types.ts +0 -1
  294. package/src/cli/mcp/oauth-client-retirement.ts +74 -0
  295. package/src/cli/repositories/command-classifier.ts +0 -9
  296. package/src/cli/repositories/command-executor.ts +29 -23
  297. package/src/cli/repositories/command-scope.ts +37 -18
  298. package/src/cli/repositories/controller-home.ts +48 -0
  299. package/src/cli/repositories/ephemeral-workspace.ts +20 -30
  300. package/src/cli/repositories/git-command-executor.ts +2 -2
  301. package/src/cli/repositories/locks.ts +20 -0
  302. package/src/cli/repositories/registry.ts +79 -12
  303. package/src/cli/repositories/safe-patch.ts +2 -12
  304. package/src/cli/repositories/structured-git.ts +101 -5
  305. package/src/cli/repository/inspector.ts +185 -343
  306. package/src/cli/repository/session-cache.ts +92 -6
  307. package/src/effects/process-runner.ts +17 -1
  308. package/src/runtime/context/assistant-context.ts +20 -7
  309. package/src/runtime/context/assistant-work-context.ts +89 -27
  310. package/src/runtime/context/automatic-learning.ts +565 -0
  311. package/src/runtime/context/cognitive-attention.ts +173 -0
  312. package/src/runtime/context/cognitive-skill-canary.ts +158 -0
  313. package/src/runtime/context/context-closure.ts +46 -9
  314. package/src/runtime/context/context-pack-process.ts +103 -0
  315. package/src/runtime/context/context-plane.ts +1 -9
  316. package/src/runtime/context/direct-controller-learning.ts +298 -0
  317. package/src/runtime/context/generic-lsp-provider.ts +1 -1
  318. package/src/runtime/context/semantic-navigation-contract.ts +16 -0
  319. package/src/runtime/context/semantic-navigation.ts +7 -35
  320. package/src/runtime/context/typescript-navigation-process.ts +145 -0
  321. package/src/runtime/context/typescript-navigation.ts +89 -3
  322. package/src/runtime/control-plane/cleanup-artifact-retention.ts +215 -12
  323. package/src/runtime/control-plane/concurrency/work-execution-concurrency.ts +9 -47
  324. package/src/runtime/control-plane/execution/controller-authority-recovery.ts +34 -4
  325. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +29 -20
  326. package/src/runtime/control-plane/execution/execution-identity.ts +23 -3
  327. package/src/runtime/control-plane/execution/repository-work-attribution.ts +7 -30
  328. package/src/runtime/control-plane/execution/retained-work-resume.ts +206 -199
  329. package/src/runtime/control-plane/execution/session-store.ts +31 -1
  330. package/src/runtime/control-plane/execution/validation.ts +6 -8
  331. package/src/runtime/control-plane/execution/work-authority-reconciler.ts +13 -42
  332. package/src/runtime/control-plane/execution/work-check-evidence.ts +137 -0
  333. package/src/runtime/control-plane/execution/work-completion-authority.ts +30 -85
  334. package/src/runtime/control-plane/execution/work-delivery-service.ts +616 -0
  335. package/src/runtime/control-plane/execution/work-evidence-policy.ts +12 -50
  336. package/src/runtime/control-plane/execution/work-execution-support.ts +50 -149
  337. package/src/runtime/control-plane/execution/work-handle-authority.ts +197 -110
  338. package/src/runtime/control-plane/execution/work-handle-store.ts +72 -44
  339. package/src/runtime/control-plane/execution/work-head-settlement.ts +53 -20
  340. package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +52 -29
  341. package/src/runtime/control-plane/execution/work-operation-service.ts +60 -34
  342. package/src/runtime/control-plane/execution/work-preparation-service.ts +231 -267
  343. package/src/runtime/control-plane/execution/work-process-evidence.ts +2 -2
  344. package/src/runtime/control-plane/execution/work-remote-delivery.ts +2 -3
  345. package/src/runtime/control-plane/execution/work-revision-diff.ts +39 -0
  346. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +201 -199
  347. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +33 -85
  348. package/src/runtime/control-plane/execution/work-verification-service.ts +406 -50
  349. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +6 -2
  350. package/src/runtime/control-plane/facade/capability-registry.ts +364 -37
  351. package/src/runtime/control-plane/facade/check-normalization.ts +3 -9
  352. package/src/runtime/control-plane/facade/codex-delegation.ts +10 -11
  353. package/src/runtime/control-plane/facade/controller-connection.ts +135 -0
  354. package/src/runtime/control-plane/facade/goal-workloop-access.ts +1 -20
  355. package/src/runtime/control-plane/facade/goal-workloop.ts +281 -1753
  356. package/src/runtime/control-plane/facade/handoff-inbox-application.ts +12 -25
  357. package/src/runtime/control-plane/facade/handoff-inbox-store.ts +256 -52
  358. package/src/runtime/control-plane/facade/index.ts +0 -1
  359. package/src/runtime/control-plane/facade/operation-digest.ts +12 -15
  360. package/src/runtime/control-plane/facade/plan-contract-store.ts +451 -991
  361. package/src/runtime/control-plane/facade/policy-gate.ts +0 -23
  362. package/src/runtime/control-plane/facade/repository-work-admission.ts +12 -22
  363. package/src/runtime/control-plane/facade/requirement-authority.ts +102 -199
  364. package/src/runtime/control-plane/facade/requirement-board.ts +3 -3
  365. package/src/runtime/control-plane/facade/rh-work-operation-contract.ts +51 -14
  366. package/src/runtime/control-plane/facade/self-healing-loop.ts +18 -53
  367. package/src/runtime/control-plane/facade/suggested-actions.ts +15 -18
  368. package/src/runtime/control-plane/facade/types.ts +49 -108
  369. package/src/runtime/control-plane/facade/work-continuation.ts +9 -9
  370. package/src/runtime/control-plane/generated-cache-retention.ts +206 -59
  371. package/src/runtime/control-plane/global-scheduler/autonomous-continuation.ts +248 -0
  372. package/src/runtime/control-plane/global-scheduler/durable-admission.ts +1 -1
  373. package/src/runtime/control-plane/global-scheduler/maintenance.ts +256 -117
  374. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -12
  375. package/src/runtime/control-plane/global-scheduler/scheduler.ts +66 -40
  376. package/src/runtime/control-plane/global-scheduler/wake-signal.ts +42 -2
  377. package/src/runtime/control-plane/governance/access-policy.ts +19 -2
  378. package/src/runtime/control-plane/governance/authorization.ts +20 -3
  379. package/src/runtime/control-plane/governance/external-effects.ts +1 -1
  380. package/src/runtime/control-plane/launcher/chatgpt-round-continuation.ts +63 -300
  381. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +29 -300
  382. package/src/runtime/control-plane/launcher/local-conversation-controller.ts +238 -0
  383. package/src/runtime/control-plane/launcher/provider-mcp-bootstrap.ts +5 -2
  384. package/src/runtime/control-plane/launcher/thin-launcher.ts +96 -240
  385. package/src/runtime/control-plane/persistence/cognition-store.ts +820 -0
  386. package/src/runtime/control-plane/persistence/experience-store.ts +162 -29
  387. package/src/runtime/control-plane/persistence/requirement-store.ts +216 -74
  388. package/src/runtime/control-plane/persistence/sqlite-store.ts +113 -6
  389. package/src/runtime/control-plane/release-retention.ts +135 -47
  390. package/src/runtime/control-plane/repository-namespace-retention.ts +2 -2
  391. package/src/runtime/control-plane/runtime-cleanup.ts +295 -107
  392. package/src/runtime/control-plane/workspace/project-onboarding.ts +80 -0
  393. package/src/runtime/control-plane/workspace/semantic-sync-service.ts +19 -5
  394. package/src/runtime/control-plane/workspace/workspace-store.ts +169 -0
  395. package/src/runtime/diagnostics/incident-repair.ts +313 -146
  396. package/src/runtime/diagnostics/mcp-timing.ts +114 -0
  397. package/src/runtime/evidence/artifact-store.ts +158 -40
  398. package/src/runtime/evidence/evidence-store.ts +112 -8
  399. package/src/runtime/evidence/output-handle-index.ts +225 -0
  400. package/src/runtime/evidence/result-store.ts +158 -44
  401. package/src/runtime/evidence/sensitive-output.ts +22 -2
  402. package/src/runtime/execution/jobs/child-reference.ts +11 -0
  403. package/src/runtime/execution/jobs/receipt-recovery.ts +1 -11
  404. package/src/runtime/execution/jobs/store.ts +3 -4
  405. package/src/runtime/execution/managed-workspace.ts +57 -0
  406. package/src/runtime/execution/process-runtime/check-facade.ts +1 -1
  407. package/src/runtime/execution/process-runtime/check-result-retention.ts +2 -2
  408. package/src/runtime/execution/process-runtime/check-result.ts +105 -1
  409. package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +18 -8
  410. package/src/runtime/execution/process-runtime/command-facade.ts +82 -30
  411. package/src/runtime/execution/process-runtime/gc.ts +15 -2
  412. package/src/runtime/execution/process-runtime/handle-index.ts +176 -0
  413. package/src/runtime/execution/process-runtime/host-command-lane.ts +139 -0
  414. package/src/runtime/execution/process-runtime/index.ts +3 -0
  415. package/src/runtime/execution/process-runtime/lightweight-managed.ts +251 -72
  416. package/src/runtime/execution/process-runtime/persisted-check.ts +3 -3
  417. package/src/runtime/execution/process-runtime/process-runner-entry.ts +47 -5
  418. package/src/runtime/execution/process-runtime/process-scope.ts +160 -0
  419. package/src/runtime/execution/process-runtime/resource-claims.ts +65 -61
  420. package/src/runtime/execution/process-runtime/runtime.ts +55 -18
  421. package/src/runtime/execution/process-runtime/store.ts +30 -2
  422. package/src/runtime/execution/process-runtime/types.ts +6 -1
  423. package/src/runtime/execution/thin-harness/execution-router.ts +16 -16
  424. package/src/runtime/execution/thin-harness/fast-executor.ts +2 -2
  425. package/src/runtime/execution/thin-harness/search-worker.ts +2 -2
  426. package/src/runtime/execution/workers/executor.ts +3 -8
  427. package/src/runtime/maintenance/cleanup.ts +41 -5
  428. package/src/runtime/platform/service-inventory.ts +130 -0
  429. package/src/runtime/platform/service-manager.ts +8 -0
  430. package/src/runtime/plugins/action-application.ts +97 -29
  431. package/src/runtime/plugins/app-store-connect-adapter.ts +290 -18
  432. package/src/runtime/plugins/browser-adapter.ts +1124 -333
  433. package/src/runtime/plugins/browser-automation-service.ts +23 -3
  434. package/src/runtime/plugins/browser-macos-bridge.ts +431 -137
  435. package/src/runtime/plugins/browser-manifest-surface.ts +47 -12
  436. package/src/runtime/plugins/browser-native-session-service.ts +63 -13
  437. package/src/runtime/plugins/browser-registration.ts +18 -0
  438. package/src/runtime/plugins/browser-runtime.ts +40 -36
  439. package/src/runtime/plugins/browser-session-authority.ts +2 -2
  440. package/src/runtime/plugins/browser-session-store.ts +46 -76
  441. package/src/runtime/plugins/capability-authorization-grants.ts +258 -62
  442. package/src/runtime/plugins/computer-chatgpt-browser-adapter-installer.ts +228 -0
  443. package/src/runtime/plugins/computer-registration.ts +298 -20
  444. package/src/runtime/plugins/desktop-operator-external-policy.ts +36 -4
  445. package/src/runtime/plugins/desktop-operator-registration.ts +12 -4
  446. package/src/runtime/plugins/external-adapter.ts +42 -6
  447. package/src/runtime/plugins/external-registration.ts +21 -1
  448. package/src/runtime/plugins/github-adapter.ts +30 -3
  449. package/src/runtime/plugins/gmail-adapter.ts +189 -3
  450. package/src/runtime/plugins/google-calendar-adapter.ts +2 -2
  451. package/src/runtime/plugins/google-shared.ts +24 -12
  452. package/src/runtime/plugins/google-tasks-adapter.ts +2 -2
  453. package/src/runtime/plugins/ios/remote-xpc-hid.ts +70 -30
  454. package/src/runtime/plugins/ios-adapter.ts +46 -41
  455. package/src/runtime/plugins/ios-agent-device.ts +54 -4
  456. package/src/runtime/plugins/ios-device-ownership.ts +103 -0
  457. package/src/runtime/plugins/ios-physical-device.ts +497 -79
  458. package/src/runtime/plugins/lightweight-action.ts +208 -2
  459. package/src/runtime/plugins/local-system-adapter.ts +12 -100
  460. package/src/runtime/plugins/managed-process-adapter.ts +12 -5
  461. package/src/runtime/plugins/plugin-action-sidecar.ts +17 -13
  462. package/src/runtime/plugins/plugin-management-adapter.ts +1 -1
  463. package/src/runtime/plugins/store.ts +682 -435
  464. package/src/runtime/plugins/types.ts +24 -0
  465. package/src/runtime/plugins/xiaohongshu-publish.ts +16 -0
  466. package/src/runtime/projections/git-status-sampler.ts +2 -19
  467. package/src/runtime/projections/invalidation.ts +7 -3
  468. package/src/runtime/projections/materialized-view.ts +80 -36
  469. package/src/runtime/recovery/actions.ts +4 -4
  470. package/src/runtime/recovery/capability-action-application.ts +46 -45
  471. package/src/runtime/recovery/lifecycle-inventory.ts +30 -40
  472. package/src/runtime/recovery/maintenance-executor.ts +374 -123
  473. package/src/runtime/recovery/probe.ts +2 -2
  474. package/src/runtime/recovery/store.ts +29 -11
  475. package/src/runtime/release/release-coordinator.ts +312 -0
  476. package/src/runtime/release/release-session.ts +716 -0
  477. package/src/runtime/release/release-state-migration.ts +25 -0
  478. package/src/runtime/resources/leases/store.ts +56 -25
  479. package/src/runtime/root/computer-composition.ts +191 -6
  480. package/src/runtime/root/controller-progression-composition.ts +254 -0
  481. package/src/runtime/root/controller-round-composition.ts +20 -1
  482. package/src/runtime/root/deployment-topology.ts +106 -0
  483. package/src/runtime/root/entry.ts +4 -3
  484. package/src/runtime/root/known-good-recovery.ts +184 -0
  485. package/src/runtime/root/local-bridge.ts +0 -1
  486. package/src/runtime/root/mcp-transport.ts +111 -18
  487. package/src/runtime/root/ownership.ts +261 -9
  488. package/src/runtime/root/package-connector-service.ts +227 -29
  489. package/src/runtime/root/package-runtime-release.ts +117 -30
  490. package/src/runtime/root/package-runtime-service.ts +24 -24
  491. package/src/runtime/root/release-execution-canary.ts +57 -12
  492. package/src/runtime/root/release-loader.ts +90 -8
  493. package/src/runtime/root/release-manifest.ts +80 -40
  494. package/src/runtime/root/release-materialize.ts +372 -106
  495. package/src/runtime/root/release-store.ts +395 -36
  496. package/src/runtime/root/runtime-lane.ts +191 -0
  497. package/src/runtime/root/runtime.ts +160 -29
  498. package/src/runtime/root/scheduled-controller-composition.ts +29 -3
  499. package/src/runtime/root/service-runner.ts +2 -2
  500. package/src/runtime/root/service.ts +126 -44
  501. package/src/runtime/root/status.ts +48 -0
  502. package/src/runtime/root/types.ts +32 -9
  503. package/src/runtime/root/workflow-supervisor-composition.ts +681 -0
  504. package/src/runtime/root/workflow-supervisor-runtime.ts +564 -0
  505. package/src/runtime/root/write-fence.ts +50 -2
  506. package/src/runtime/safe-tooling/google-credential-store.ts +67 -22
  507. package/src/runtime/safe-tooling/google-oauth-broker.ts +25 -7
  508. package/src/runtime/safe-tooling/ios-development.ts +22 -8
  509. package/src/runtime/safe-tooling/job-summary.ts +1 -1
  510. package/src/runtime/safe-tooling/workspace-auth.ts +5 -2
  511. package/src/runtime/shared/atomic-text-file.ts +21 -0
  512. package/src/runtime/shared/bounded-child-supervisor.ts +9 -1
  513. package/src/runtime/shared/json-files.ts +8 -3
  514. package/src/runtime/shared/process-environment.ts +20 -9
  515. package/src/runtime/shared/response-budget.ts +1 -3
  516. package/src/runtime/standalone-recovery/controller-home-migration.ts +16 -24
  517. package/src/runtime/standalone-recovery/core.ts +3792 -417
  518. package/src/runtime/standalone-recovery/entry.ts +507 -45
  519. package/src/runtime/standalone-recovery/installer.ts +262 -148
  520. package/src/runtime/standalone-recovery/mcp-server.ts +29 -193
  521. package/src/runtime/standalone-recovery/operation-lock.ts +12 -2
  522. package/src/runtime/standalone-recovery/performance.ts +54 -16
  523. package/src/runtime/standalone-recovery/release.ts +53 -5
  524. package/src/runtime/standalone-recovery/service-labels.ts +5 -2
  525. package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +5 -2
  526. package/src/runtime/workflow/schedules/browser-probe.ts +17 -6
  527. package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +11 -3
  528. package/src/runtime/workflow/schedules/engine.ts +166 -178
  529. package/src/runtime/workflow/schedules/pending-activation.ts +11 -4
  530. package/src/runtime/workflow/schedules/work-continuation.ts +95 -11
  531. package/src/runtime/workflows/runtime.ts +15 -19
  532. package/src/testing/test-governance.ts +5 -1
  533. package/supervisor/chatgpt-conversation.ts +23 -0
  534. package/supervisor/client.ts +218 -0
  535. package/supervisor/control-plane.ts +963 -0
  536. package/supervisor/entry.ts +15 -0
  537. package/supervisor/forge-validators.ts +147 -0
  538. package/supervisor/index.ts +5 -0
  539. package/supervisor/native-browser-adapter.ts +1151 -0
  540. package/supervisor/native-messaging/host.ts +58 -0
  541. package/supervisor/native-messaging/manifest.ts +26 -0
  542. package/supervisor/native-messaging/protocol.ts +27 -0
  543. package/supervisor/paths.ts +18 -0
  544. package/supervisor/protocol.ts +250 -0
  545. package/supervisor/server.ts +412 -0
  546. package/supervisor/store.ts +1870 -0
  547. package/supervisor/tsconfig.json +8 -0
  548. package/supervisor/types.ts +261 -0
  549. package/SKILL.md +0 -427
  550. package/adapters/chatgpt/controller-host.ts +0 -119
  551. package/adapters/mcp/controller-round-compatibility.ts +0 -184
  552. package/adapters/mcp/frozen-client-semantic-compatibility.ts +0 -292
  553. package/adapters/mcp/runtime-gateway/work-compat-adapter.ts +0 -502
  554. package/adapters/mcp/runtime-gateway/work-validation-reconciler.ts +0 -1
  555. package/adapters/mcp/toolset-selection.ts +0 -41
  556. package/agents/openai.yaml +0 -4
  557. package/assets/skill-hooks.json +0 -41
  558. package/assets/skill-version.json +0 -189
  559. package/assets/skills/claude-review/SKILL.md +0 -231
  560. package/assets/skills/codex-review/SKILL.md +0 -103
  561. package/assets/templates/helpers/check-skill-version.ts +0 -193
  562. package/packages/kernel/progression/api/index.ts +0 -2
  563. package/packages/kernel/progression/application/projector.ts +0 -211
  564. package/packages/kernel/progression/domain/types.ts +0 -116
  565. package/packages/kernel/progression/index.ts +0 -1
  566. package/packages/kernel/scheduler/application/continuation-service.ts +0 -212
  567. package/packages/kernel/scheduler/domain/continuation.ts +0 -38
  568. package/packages/kernel/scheduler/infrastructure/continuation-dispatch-store.ts +0 -38
  569. package/packages/kernel/work/domain/admission-policy.ts +0 -34
  570. package/scripts/benchmark-background-check-overlap.ts +0 -228
  571. package/scripts/benchmark-computer-hotpath.ts +0 -255
  572. package/scripts/benchmark-controller-hotpath.ts +0 -212
  573. package/scripts/benchmark-controller-round2.ts +0 -191
  574. package/scripts/benchmark-ios-agent-device.ts +0 -511
  575. package/scripts/benchmark-mcp-host.sh +0 -117
  576. package/scripts/benchmark-mcp-transport.ts +0 -169
  577. package/scripts/benchmark-operational-memory-activation.ts +0 -235
  578. package/scripts/benchmark-operational-shadow.ts +0 -28
  579. package/scripts/benchmark-quality-harness.ts +0 -146
  580. package/scripts/benchmark-route-session-concurrency.ts +0 -915
  581. package/scripts/benchmark-thin-harness-gateway-ab.ts +0 -632
  582. package/scripts/benchmark-thin-harness-mcp-e2e.ts +0 -498
  583. package/scripts/benchmark-thin-harness.ts +0 -251
  584. package/scripts/benchmark-typescript-navigation.ts +0 -186
  585. package/scripts/benchmark-work-efficiency.ts +0 -334
  586. package/scripts/build-controller-ui.ts +0 -28
  587. package/scripts/check-npm-release.sh +0 -32
  588. package/scripts/check-public-release-surface.sh +0 -19
  589. package/scripts/check-release-published.sh +0 -57
  590. package/scripts/check-release-readiness.sh +0 -37
  591. package/scripts/check-release-version.mjs +0 -74
  592. package/scripts/check-skill-version.ts +0 -5
  593. package/scripts/check-tarball-install-smoke.sh +0 -150
  594. package/scripts/ensure-codegraph.sh +0 -16
  595. package/scripts/package-source-archive.sh +0 -147
  596. package/scripts/public-release-files.txt +0 -39
  597. package/scripts/public-release.ts +0 -174
  598. package/scripts/publish-release-tarball.sh +0 -27
  599. package/scripts/route-nl-vs-ts-eval.ts +0 -679
  600. package/scripts/run-skill-hook.ts +0 -244
  601. package/scripts/stage-runtime-release.ts +0 -44
  602. package/scripts/sync-codex-installed-copies.sh +0 -182
  603. package/src/cli/commands/tools.ts +0 -167
  604. package/src/cli/controller/progress.ts +0 -656
  605. package/src/cli/controller/work-mode.ts +0 -181
  606. package/src/cli/local-bridge/console-assets.ts +0 -17
  607. package/src/cli/local-bridge/dashboard.ts +0 -17
  608. package/src/cli/local-bridge/frontend/src/App.tsx +0 -10
  609. package/src/cli/local-bridge/frontend/src/components/Button.tsx +0 -1
  610. package/src/cli/local-bridge/frontend/src/components/DetailPane.tsx +0 -3
  611. package/src/cli/local-bridge/frontend/src/components/SearchField.tsx +0 -1
  612. package/src/cli/local-bridge/frontend/src/components/SectionHeader.tsx +0 -1
  613. package/src/cli/local-bridge/frontend/src/components/Segmented.tsx +0 -1
  614. package/src/cli/local-bridge/frontend/src/components/StatusText.tsx +0 -3
  615. package/src/cli/local-bridge/frontend/src/design/icons.tsx +0 -11
  616. package/src/cli/local-bridge/frontend/src/design/tokens.css +0 -8
  617. package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +0 -153
  618. package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +0 -37
  619. package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +0 -183
  620. package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +0 -2
  621. package/src/cli/local-bridge/frontend/src/features/system/SystemView.tsx +0 -2
  622. package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +0 -4
  623. package/src/cli/local-bridge/frontend/src/lib/api.ts +0 -30
  624. package/src/cli/local-bridge/frontend/src/lib/format.ts +0 -4
  625. package/src/cli/local-bridge/frontend/src/lib/routes.ts +0 -7
  626. package/src/cli/local-bridge/frontend/src/main.tsx +0 -1
  627. package/src/cli/local-bridge/frontend/src/shell/AppShell.tsx +0 -1
  628. package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +0 -2
  629. package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +0 -4
  630. package/src/cli/local-bridge/frontend/src/styles.css +0 -28
  631. package/src/cli/local-bridge/frontend/src/types.ts +0 -15
  632. package/src/cli/local-bridge/frontend/src/vite-env.d.ts +0 -1
  633. package/src/cli/local-bridge/frontend/vite.config.ts +0 -27
  634. package/src/cli/local-bridge/ui-dist/app.css +0 -1
  635. package/src/cli/local-bridge/ui-dist/app.js +0 -11228
  636. package/src/cli/mcp/access-mode.ts +0 -2
  637. package/src/cli/mcp/access-tools.ts +0 -2
  638. package/src/cli/mcp/audit.ts +0 -2
  639. package/src/cli/mcp/auth.ts +0 -2
  640. package/src/cli/mcp/instructions.ts +0 -2
  641. package/src/cli/mcp/legacy-context.ts +0 -2
  642. package/src/cli/mcp/legacy-tool-service.ts +0 -2
  643. package/src/cli/mcp/multi-repository.ts +0 -2
  644. package/src/cli/mcp/oauth.ts +0 -2
  645. package/src/cli/mcp/openai-secure-tunnel.ts +0 -2
  646. package/src/cli/mcp/paths.ts +0 -2
  647. package/src/cli/mcp/policy.ts +0 -2
  648. package/src/cli/mcp/post-finalize-work-attribution.ts +0 -2
  649. package/src/cli/mcp/proxy-env.ts +0 -2
  650. package/src/cli/mcp/readiness-projection.ts +0 -2
  651. package/src/cli/mcp/redaction.ts +0 -2
  652. package/src/cli/mcp/repo.ts +0 -2
  653. package/src/cli/mcp/repository-tools.ts +0 -2
  654. package/src/cli/mcp/server.ts +0 -2
  655. package/src/cli/mcp/setup.ts +0 -2
  656. package/src/cli/mcp/tool-capability-cache.ts +0 -2
  657. package/src/cli/mcp/tool-contract.ts +0 -2
  658. package/src/cli/mcp/tools.ts +0 -2
  659. package/src/cli/mcp/toolset-names.ts +0 -2
  660. package/src/cli/mcp/toolset-selection.ts +0 -2
  661. package/src/cli/mcp/toolset.ts +0 -2
  662. package/src/cli/mcp/transports/http.ts +0 -2
  663. package/src/cli/mcp/transports/session-registry.ts +0 -2
  664. package/src/cli/mcp/transports/stdio.ts +0 -2
  665. package/src/cli/mcp/types.ts +0 -2
  666. package/src/cli/mcp/umbrella-tools.ts +0 -2
  667. package/src/cli/tools/codegraph.ts +0 -695
  668. package/src/core/adoption/helper-wrapper-plan.ts +0 -159
  669. package/src/runtime/context/codegraph-cache-boundary.ts +0 -255
  670. package/src/runtime/context/codegraph-read-provider.ts +0 -611
  671. package/src/runtime/context/codegraph-sidecar.cjs +0 -248
  672. package/src/runtime/control-plane/codegraph-cache-retention.ts +0 -164
  673. package/src/runtime/control-plane/execution/content-equivalent-commit-authority.ts +0 -169
  674. package/src/runtime/control-plane/execution/direct-canonical-work-reconciliation.ts +0 -85
  675. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +0 -655
  676. package/src/runtime/control-plane/execution/work-finalization-service.ts +0 -2850
  677. package/src/runtime/control-plane/execution/work-path-scope.ts +0 -37
  678. package/src/runtime/control-plane/execution/work-task-receipt.ts +0 -468
  679. package/src/runtime/control-plane/facade/controller-round-relay.ts +0 -3
  680. package/src/runtime/control-plane/facade/work-admission-policy.ts +0 -142
  681. package/src/runtime/control-plane/facade/work-implementation-review.ts +0 -2
  682. package/src/runtime/control-plane/facade/work-state-machine.ts +0 -2
  683. package/src/runtime/control-plane/facade/work-task-projection.ts +0 -66
  684. package/src/runtime/control-plane/routing/index.ts +0 -1
  685. package/src/runtime/control-plane/routing/route-policy.ts +0 -401
  686. package/src/runtime/control-plane/routing/workspace-admission.ts +0 -70
  687. package/src/runtime/gateway/mcp/execution-tools.ts +0 -2
  688. package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +0 -2
  689. package/src/runtime/gateway/mcp/persisted-check-process.ts +0 -2
  690. package/src/runtime/gateway/mcp/process-tools.ts +0 -2
  691. package/src/runtime/gateway/mcp/router.ts +0 -2
  692. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +0 -2
  693. package/src/runtime/gateway/mcp/runtime-tools.ts +0 -2
  694. package/src/runtime/gateway/mcp/work-validation-reconciler.ts +0 -2
  695. package/src/runtime/plugins/browser-provider-registry.ts +0 -2
@@ -1,66 +0,0 @@
1
- import type { ControllerTask, TaskStatus } from '../../../cli/controller/types';
2
- import { isRepositoryCompletionReceipt, type WorkContract, type WorkRisk } from './types';
3
-
4
- /**
5
- * Legacy Task statuses are a read-model vocabulary. They are intentionally
6
- * derived from Work and never fed back into Work or Requirement state.
7
- */
8
- export function taskStatusFromWork(work: Pick<WorkContract, 'status' | 'phase'>): TaskStatus {
9
- if (work.status === 'completed') return 'done';
10
- if (work.status === 'cancelled') return 'cancelled';
11
- if (work.status === 'failed') return 'changes_requested';
12
- if (work.status === 'blocked') return 'blocked';
13
- if (work.status === 'running') {
14
- return work.phase === 'verification' ? 'verifying' : work.phase === 'delivery' ? 'integrating' : work.phase === 'cleanup' ? 'cleanup_pending' : 'running';
15
- }
16
- if (work.status === 'ready') return 'ready_to_integrate';
17
- return 'planned';
18
- }
19
-
20
- function workRiskToTaskRisk(risk: WorkRisk): ControllerTask['risk'] {
21
- return risk;
22
- }
23
-
24
- /**
25
- * Project one Work into the old ControllerTask shape for compatibility UIs and
26
- * readers. The source Task object is not mutated and its duplicated contract
27
- * fields are never consulted by this projection.
28
- */
29
- export function projectControllerTaskFromWork(
30
- task: ControllerTask,
31
- work: WorkContract,
32
- ): ControllerTask {
33
- const projected: ControllerTask = {
34
- ...task,
35
- workId: work.workId,
36
- objective: work.objective,
37
- allowedPaths: [...work.allowedPaths],
38
- forbiddenPaths: [...work.forbiddenPaths],
39
- checks: [...work.checks],
40
- acceptanceCriteria: [...work.acceptanceCriteria],
41
- risk: workRiskToTaskRisk(work.risk),
42
- // A reviewed legacy outcome is user-facing evidence. Historical failed or
43
- // cancelled execution facts cannot move it backwards.
44
- status: task.status === 'done' && work.status !== 'completed' ? 'done' : taskStatusFromWork(work),
45
- };
46
- if (work.completionReceipt && projected.verification && isRepositoryCompletionReceipt(work.completionReceipt)) {
47
- projected.verification = {
48
- ...projected.verification,
49
- completionReceipt: work.completionReceipt,
50
- };
51
- }
52
- return projected;
53
- }
54
-
55
- export function taskExecutionContractFromWork(work: WorkContract): Pick<ControllerTask, 'workId' | 'objective' | 'allowedPaths' | 'forbiddenPaths' | 'checks' | 'acceptanceCriteria' | 'risk' | 'status'> {
56
- return {
57
- workId: work.workId,
58
- objective: work.objective,
59
- allowedPaths: [...work.allowedPaths],
60
- forbiddenPaths: [...work.forbiddenPaths],
61
- checks: [...work.checks],
62
- acceptanceCriteria: [...work.acceptanceCriteria],
63
- risk: workRiskToTaskRisk(work.risk),
64
- status: taskStatusFromWork(work),
65
- };
66
- }
@@ -1 +0,0 @@
1
- export * from './route-policy';
@@ -1,401 +0,0 @@
1
- import { createHash } from 'crypto';
2
-
3
- export const ROUTE_POLICY_VERSION = 'route-policy-v5' as const;
4
-
5
- export type RouteExecutionMode = 'direct_control' | 'goal_workloop' | 'handoff_only';
6
- export type RouteWorkMode = 'direct_edit' | 'bounded_work' | 'quick_agent' | 'issue_task';
7
- export type RouteExecutionPath = 'fast' | 'durable';
8
- export type RouteExecutorKind = 'direct_edit' | 'local_cli' | 'remote_api' | 'cloud_agent' | 'external_controller' | 'handoff_only';
9
- export type RouteApprovalState = 'approval_not_required' | 'normal_authorization_required' | 'strong_confirmation_required' | 'blocked_by_policy';
10
- export type ExplicitTaskMode = 'direct' | 'plan' | 'debug' | 'review' | 'release' | 'scale';
11
-
12
- export interface RouteReason {
13
- code: string;
14
- message: string;
15
- }
16
-
17
- export interface RouteContextHints {
18
- preferredProviderId?: string;
19
- allowedProviderIds?: readonly string[];
20
- forbiddenProviderIds?: readonly string[];
21
- }
22
-
23
- export interface RouteProviderSnapshot {
24
- providerId: string;
25
- kind: 'direct_edit' | 'local_cli' | 'remote_api' | 'cloud_agent' | 'handoff_only';
26
- status: string;
27
- capabilities: readonly string[];
28
- directDispatch: boolean;
29
- }
30
-
31
- export interface RoutePolicyInput {
32
- intent: {
33
- objective: string;
34
- scopeClear: boolean;
35
- mutation?: boolean;
36
- taskIntent?: string;
37
- expectedFiles?: number;
38
- expectedChangedLines?: number;
39
- requiresInvestigation?: boolean;
40
- requiresLongRunningChecks?: boolean;
41
- requiresParallelism?: boolean;
42
- needsDependencies?: boolean;
43
- requiresIndependentDeliverables?: boolean;
44
- independentTaskCount?: number;
45
- agentRequested?: boolean;
46
- /** Explicit operator mode. It overrides heuristic topology, never policy gates. */
47
- explicitMode?: ExplicitTaskMode;
48
- preferredProviderId?: string;
49
- allowedProviderIds?: readonly string[];
50
- forbiddenProviderIds?: readonly string[];
51
- lastProviderId?: string;
52
- lastFailureClass?: string;
53
- };
54
- workspace: {
55
- knownPaths?: readonly string[];
56
- dirty?: boolean;
57
- checkoutId?: string;
58
- fingerprint?: string;
59
- /** Canonical typed placement constraint resolved before routing. */
60
- placement?: 'current' | 'isolated' | 'auto';
61
- /** Admission fence: Direct Control/current-main mutation is not permitted. */
62
- directMainProhibited?: boolean;
63
- };
64
- policy: {
65
- risk?: string;
66
- policyBlocked?: boolean;
67
- requiresApproval?: boolean;
68
- requiresUserApproval?: boolean;
69
- approvalConfirmed?: boolean;
70
- destructive?: boolean;
71
- remoteWrite?: boolean;
72
- secretAccess?: boolean;
73
- };
74
- capabilities: {
75
- requiresWorker?: boolean;
76
- requiresExternalEffect?: boolean;
77
- requiredProviderCapabilities?: readonly string[];
78
- providers?: readonly RouteProviderSnapshot[];
79
- routingOrders?: Readonly<Record<string, readonly string[] | undefined>>;
80
- defaultProviders?: Readonly<Record<string, string | undefined>>;
81
- };
82
- recovery: {
83
- required?: boolean;
84
- isolationRequired?: boolean;
85
- };
86
- }
87
-
88
- export interface RouteDecision {
89
- executionMode: RouteExecutionMode;
90
- executorKind: RouteExecutorKind;
91
- selectedProviderId: string | null;
92
- workMode: RouteWorkMode;
93
- executionPath: RouteExecutionPath;
94
- requiresWork: boolean;
95
- requiresApproval: boolean;
96
- requiresIsolation: boolean;
97
- requiresRecovery: boolean;
98
- createHandoff: boolean;
99
- waitForUser: boolean;
100
- approvalState: RouteApprovalState;
101
- alternatives: string[];
102
- reasons: RouteReason[];
103
- inputFingerprint: string;
104
- policyVersion: typeof ROUTE_POLICY_VERSION;
105
- }
106
-
107
- const PROTECTED_PATH = /(^|\/)(\.github|\.git|.*\.xcodeproj|.*\.xcworkspace)(\/|$)/;
108
-
109
- function canonical(value: unknown): unknown {
110
- if (Array.isArray(value)) return value.map(canonical);
111
- if (!value || typeof value !== 'object') return value;
112
- return Object.fromEntries(Object.entries(value as Record<string, unknown>)
113
- .filter(([, item]) => item !== undefined)
114
- .sort(([left], [right]) => left.localeCompare(right))
115
- .map(([key, item]) => [key, canonical(item)]));
116
- }
117
-
118
- export function routePolicyInputFingerprint(input: RoutePolicyInput): string {
119
- return createHash('sha256').update(JSON.stringify(canonical(input))).digest('hex');
120
- }
121
-
122
- export function applyRouteContextHints(input: RoutePolicyInput, hints: RouteContextHints | undefined): RoutePolicyInput {
123
- if (!hints) return input;
124
- return {
125
- ...input,
126
- intent: {
127
- ...input.intent,
128
- preferredProviderId: input.intent.preferredProviderId ?? hints.preferredProviderId,
129
- allowedProviderIds: input.intent.allowedProviderIds ?? hints.allowedProviderIds,
130
- forbiddenProviderIds: input.intent.forbiddenProviderIds ?? hints.forbiddenProviderIds,
131
- },
132
- };
133
- }
134
-
135
- function ready(provider: RouteProviderSnapshot, required: readonly string[]): boolean {
136
- return provider.directDispatch
137
- && provider.status === 'ready'
138
- && provider.kind !== 'handoff_only'
139
- && provider.providerId !== 'chatgpt_handoff'
140
- && required.every((capability) => provider.capabilities.includes(capability));
141
- }
142
-
143
- function routingKey(input: RoutePolicyInput): string {
144
- const taskIntent = input.intent.taskIntent ?? 'implementation';
145
- const failure = input.intent.lastFailureClass;
146
- const repair = taskIntent === 'code_repair'
147
- || taskIntent === 'verification_repair'
148
- || failure === 'test_failure'
149
- || failure === 'typecheck_failure'
150
- || failure === 'source_defect'
151
- || (input.intent.lastProviderId === 'codex_cli' && (failure === 'provider_unavailable' || failure === 'unknown'));
152
- if (taskIntent === 'deterministic_edit') return 'deterministic_edit';
153
- if (repair) return 'repair';
154
- if (taskIntent === 'architecture_planning') return 'planning';
155
- if (taskIntent === 'review') return 'review';
156
- if (taskIntent === 'browser_automation') return 'browser_planning';
157
- if (taskIntent === 'ios_build_or_sim') return 'ios_analysis';
158
- return 'implementation';
159
- }
160
-
161
- const KIND_RANK: Record<RouteProviderSnapshot['kind'], number> = {
162
- direct_edit: 0,
163
- local_cli: 10,
164
- remote_api: 20,
165
- cloud_agent: 30,
166
- handoff_only: 90,
167
- };
168
-
169
- const PREFERRED_CAPABILITY: Record<string, string | undefined> = {
170
- deterministic_edit: 'code_patch',
171
- implementation: 'code_patch',
172
- repair: 'test_failure_repair',
173
- planning: 'architecture_planning',
174
- review: 'code_review',
175
- browser_planning: 'browser_planning',
176
- ios_analysis: 'ios_log_analysis',
177
- };
178
-
179
- function providerOrder(input: RoutePolicyInput, key: string, providers: readonly RouteProviderSnapshot[]): string[] {
180
- const configured = input.capabilities.routingOrders?.[key];
181
- let order = configured?.length
182
- ? [...configured]
183
- : providers
184
- .map((provider, index) => ({ provider, index }))
185
- .filter(({ provider }) => provider.kind !== 'handoff_only' && provider.providerId !== 'chatgpt_handoff')
186
- .filter(({ provider }) => key === 'deterministic_edit' || provider.kind !== 'direct_edit')
187
- .sort((left, right) => {
188
- const preferred = PREFERRED_CAPABILITY[key];
189
- const leftSupports = preferred ? left.provider.capabilities.includes(preferred) : true;
190
- const rightSupports = preferred ? right.provider.capabilities.includes(preferred) : true;
191
- if (leftSupports !== rightSupports) return leftSupports ? -1 : 1;
192
- return KIND_RANK[left.provider.kind] - KIND_RANK[right.provider.kind]
193
- || left.index - right.index
194
- || left.provider.providerId.localeCompare(right.provider.providerId);
195
- })
196
- .map(({ provider }) => provider.providerId);
197
- const configuredDefault = input.capabilities.defaultProviders?.[key];
198
- if (configuredDefault && configuredDefault !== 'chatgpt_handoff') {
199
- order = [configuredDefault, ...order.filter((providerId) => providerId !== configuredDefault)];
200
- }
201
- if (input.intent.preferredProviderId) {
202
- order = [input.intent.preferredProviderId, ...order.filter((providerId) => providerId !== input.intent.preferredProviderId)];
203
- }
204
- if (key === 'repair' && input.intent.lastProviderId) {
205
- order = [...order.filter((providerId) => providerId !== input.intent.lastProviderId), input.intent.lastProviderId];
206
- }
207
- return [...new Set([...order, 'chatgpt_handoff'])];
208
- }
209
-
210
- function selectProvider(input: RoutePolicyInput): { provider: RouteProviderSnapshot | null; alternatives: string[]; key: string } {
211
- const providers = input.capabilities.providers;
212
- if (!providers) return { provider: null, alternatives: [], key: routingKey(input) };
213
- const required = input.capabilities.requiredProviderCapabilities ?? [];
214
- const allowed = new Set(input.intent.allowedProviderIds ?? []);
215
- const forbidden = new Set(input.intent.forbiddenProviderIds ?? []);
216
- const alternatives = providers
217
- .filter((provider) => ready(provider, required))
218
- .filter((provider) => !forbidden.has(provider.providerId))
219
- .filter((provider) => allowed.size === 0 || allowed.has(provider.providerId))
220
- .map((provider) => provider.providerId)
221
- .sort();
222
- const key = routingKey(input);
223
- const byId = new Map(providers.map((provider) => [provider.providerId, provider]));
224
- for (const providerId of providerOrder(input, key, providers)) {
225
- if (providerId === 'chatgpt_handoff' || forbidden.has(providerId)) continue;
226
- if (allowed.size > 0 && !allowed.has(providerId)) continue;
227
- const provider = byId.get(providerId);
228
- if (provider && ready(provider, required)) return { provider, alternatives, key };
229
- }
230
- const fallback = input.capabilities.routingOrders?.fallback ?? [];
231
- for (const providerId of fallback) {
232
- if (forbidden.has(providerId) || (allowed.size > 0 && !allowed.has(providerId))) continue;
233
- const provider = byId.get(providerId);
234
- if (provider && ready(provider, required)) return { provider, alternatives, key: 'fallback' };
235
- }
236
- return { provider: null, alternatives, key };
237
- }
238
-
239
- function decisionBase(input: RoutePolicyInput, reasons: RouteReason[]): Pick<RouteDecision, 'inputFingerprint' | 'policyVersion' | 'reasons'> {
240
- return { inputFingerprint: routePolicyInputFingerprint(input), policyVersion: ROUTE_POLICY_VERSION, reasons };
241
- }
242
-
243
- export function decideRoute(input: RoutePolicyInput): RouteDecision {
244
- const reasons: RouteReason[] = [];
245
- const objective = input.intent.objective.trim();
246
- const paths = [...new Set((input.workspace.knownPaths ?? []).map((path) => path.trim()).filter(Boolean))].sort();
247
- const expectedFiles = Math.max(0, Math.trunc(input.intent.expectedFiles ?? paths.length));
248
- const expectedChangedLines = Math.max(0, Math.trunc(input.intent.expectedChangedLines ?? 0));
249
- const independentTaskCount = Math.max(0, Math.trunc(input.intent.independentTaskCount ?? 0));
250
- const risk = input.policy.risk ?? (input.intent.mutation === false ? 'readonly' : 'local_repo_write');
251
- const mutation = input.intent.mutation ?? risk !== 'readonly';
252
- const destructive = input.policy.destructive === true || risk === 'destructive' || risk === 'destructive_remote';
253
- const remoteWrite = input.policy.remoteWrite === true || risk === 'remote_write' || risk === 'destructive_remote';
254
- const secretAccess = input.policy.secretAccess === true || risk === 'raw_secret_config';
255
- const approvalRequired = input.policy.requiresApproval === true || input.policy.requiresUserApproval === true || destructive || remoteWrite || secretAccess;
256
- const approvalConfirmed = input.policy.approvalConfirmed === true;
257
- const protectedPath = paths.some((path) => PROTECTED_PATH.test(path));
258
- const explicitMode = input.intent.explicitMode;
259
- const explicitParallelMode = explicitMode === 'scale';
260
- const placementIsolationRequired = input.workspace.placement === 'isolated'
261
- || input.workspace.directMainProhibited === true;
262
- const requiresIsolation = placementIsolationRequired
263
- || input.recovery.isolationRequired === true
264
- || explicitParallelMode;
265
- const requiresRecovery = input.recovery.required === true
266
- || explicitMode === 'release'
267
- || explicitMode === 'scale';
268
- const coordinationRequired = explicitParallelMode || input.intent.requiresIndependentDeliverables === true
269
- || independentTaskCount >= 3;
270
-
271
- if (input.policy.policyBlocked === true) {
272
- reasons.push({ code: 'policy_blocked', message: 'Policy blocks execution until authorization or scope changes.' });
273
- return {
274
- executionMode: 'handoff_only', executorKind: 'handoff_only', selectedProviderId: null,
275
- workMode: 'direct_edit', executionPath: 'durable', requiresWork: false, requiresApproval: true,
276
- requiresIsolation, requiresRecovery, createHandoff: true, waitForUser: true,
277
- approvalState: 'blocked_by_policy', alternatives: [], ...decisionBase(input, reasons),
278
- };
279
- }
280
- if (!objective) {
281
- reasons.push({ code: 'objective_missing', message: 'A non-empty objective is required before execution.' });
282
- return {
283
- executionMode: 'handoff_only', executorKind: 'handoff_only', selectedProviderId: null,
284
- workMode: 'direct_edit', executionPath: 'durable', requiresWork: false, requiresApproval: false,
285
- requiresIsolation, requiresRecovery, createHandoff: true, waitForUser: true,
286
- approvalState: 'approval_not_required', alternatives: [], ...decisionBase(input, reasons),
287
- };
288
- }
289
- if (input.policy.requiresUserApproval === true && !approvalConfirmed) {
290
- reasons.push({ code: 'user_decision_required', message: 'The architecture or execution strategy change requires an explicit user decision.' });
291
- return {
292
- executionMode: 'handoff_only', executorKind: 'handoff_only', selectedProviderId: null,
293
- workMode: 'direct_edit', executionPath: 'durable', requiresWork: false, requiresApproval: true,
294
- requiresIsolation, requiresRecovery, createHandoff: true, waitForUser: true,
295
- approvalState: 'normal_authorization_required', alternatives: [], ...decisionBase(input, reasons),
296
- };
297
- }
298
- if ((!input.intent.scopeClear && (destructive || remoteWrite || secretAccess)) || (approvalRequired && !approvalConfirmed)) {
299
- reasons.push({
300
- code: !input.intent.scopeClear ? 'high_risk_scope_incomplete' : 'authorization_required',
301
- message: !input.intent.scopeClear
302
- ? 'High-risk work requires a complete scope before execution.'
303
- : 'The requested side effect requires explicit authorization before execution.',
304
- });
305
- return {
306
- executionMode: 'handoff_only', executorKind: 'handoff_only', selectedProviderId: null,
307
- workMode: 'direct_edit', executionPath: 'durable', requiresWork: false, requiresApproval: true,
308
- requiresIsolation, requiresRecovery, createHandoff: true, waitForUser: true,
309
- approvalState: destructive || secretAccess ? 'strong_confirmation_required' : 'normal_authorization_required',
310
- alternatives: [], ...decisionBase(input, reasons),
311
- };
312
- }
313
-
314
- if (input.workspace.dirty && mutation) {
315
- reasons.push({
316
- code: 'dirty_workspace_preserve_existing_changes',
317
- message: 'The checkout is already dirty; preserve unrelated changes and treat inspected/actual scope as evidence instead of creating Work solely for adoption.',
318
- });
319
- }
320
- if (explicitMode) reasons.push({ code: `explicit_${explicitMode}`, message: `Explicit -${explicitMode} mode overrides automatic work topology while policy gates remain authoritative.` });
321
- if (protectedPath) reasons.push({ code: 'protected_path', message: 'The predicted scope includes a protected or release-sensitive path.' });
322
- if (requiresRecovery) reasons.push({ code: 'recovery_required', message: 'The operation needs resumable Work and bounded recovery.' });
323
- if (input.workspace.placement === 'isolated') reasons.push({ code: 'placement_isolated', message: 'Typed Work admission requires an isolated workspace.' });
324
- if (input.workspace.directMainProhibited === true) reasons.push({ code: 'direct_main_prohibited', message: 'Typed Work admission forbids the Direct Control/current-main mutation lane.' });
325
- if (requiresIsolation) reasons.push({ code: 'isolation_required', message: 'The operation requires an isolated checkout or serialized lane.' });
326
- if (input.intent.requiresLongRunningChecks) reasons.push({ code: 'long_checks', message: 'Long-running checks may use a lightweight handle; duration alone does not require durable Work.' });
327
- if (input.intent.requiresInvestigation) reasons.push({ code: 'investigation', message: 'Investigation is required before or during implementation.' });
328
- if (input.intent.needsDependencies) reasons.push({ code: 'dependencies', message: 'Dependency ordering requires durable Work.' });
329
- if (coordinationRequired) reasons.push({ code: 'independent_deliverables', message: 'Multiple independent deliverables require durable PlanContract/Work coordination.' });
330
-
331
- const explicitBoundedMode = explicitMode === 'plan'
332
- || explicitMode === 'release';
333
- const directModeCanRemainFast = explicitMode === 'direct'
334
- && !requiresIsolation
335
- && !requiresRecovery
336
- && !coordinationRequired;
337
- const complex = directModeCanRemainFast
338
- ? false
339
- : coordinationRequired
340
- || explicitBoundedMode
341
- || requiresRecovery
342
- || requiresIsolation
343
- || input.intent.agentRequested === true
344
- || input.capabilities.requiresWorker === true
345
- || input.capabilities.requiresExternalEffect === true
346
- || input.intent.needsDependencies === true
347
- || destructive
348
- || remoteWrite
349
- || secretAccess;
350
- const executionMode: RouteExecutionMode = complex ? 'goal_workloop' : 'direct_control';
351
- // Work topology is independent from executor/provider choice. Independent or
352
- // parallel deliverables stay in the durable Goal Workloop and are decomposed by
353
- // PlanContract/Work rather than introducing another project-level lifecycle.
354
- const workMode: RouteWorkMode = directModeCanRemainFast
355
- ? 'direct_edit'
356
- : coordinationRequired
357
- ? 'bounded_work'
358
- : input.intent.agentRequested
359
- ? expectedFiles > 10 || expectedChangedLines > 1_500 ? 'issue_task' : 'quick_agent'
360
- : complex
361
- ? 'bounded_work'
362
- : 'direct_edit';
363
- const executionPath: RouteExecutionPath = complex ? 'durable' : 'fast';
364
- const providerSelection = selectProvider(input);
365
- const providersWereSupplied = input.capabilities.providers !== undefined;
366
- if (providersWereSupplied && !providerSelection.provider) {
367
- reasons.push({ code: 'provider_unavailable', message: 'No allowed provider with the required capabilities is ready.' });
368
- return {
369
- executionMode: 'handoff_only', executorKind: 'handoff_only', selectedProviderId: 'chatgpt_handoff',
370
- workMode, executionPath: 'durable', requiresWork: mutation || requiresRecovery, requiresApproval: false,
371
- requiresIsolation, requiresRecovery, createHandoff: true, waitForUser: false,
372
- approvalState: 'approval_not_required', alternatives: providerSelection.alternatives,
373
- ...decisionBase(input, reasons),
374
- };
375
- }
376
- const selectedProvider = providerSelection.provider;
377
- const executorKind: RouteExecutorKind = selectedProvider?.kind
378
- ?? (input.capabilities.requiresWorker ? 'external_controller' : 'direct_edit');
379
- if (selectedProvider) reasons.push({ code: 'provider_selected', message: `Selected ${selectedProvider.providerId} using ${providerSelection.key} order.` });
380
- if (reasons.length === 0) reasons.push({ code: executionMode === 'direct_control' ? 'bounded_direct' : 'durable_work', message: executionMode === 'direct_control' ? 'Bounded supervised work stays on Direct Control.' : 'The operation requires a durable Goal Workloop.' });
381
-
382
- return {
383
- executionMode,
384
- executorKind,
385
- selectedProviderId: selectedProvider?.providerId ?? null,
386
- workMode,
387
- executionPath,
388
- // Direct Control is intentionally contract-free. Persistence belongs to
389
- // Goal Workloop/Agent tiers; bounded direct edits rely on the
390
- // existing permission, patch, Process, and evidence boundaries instead.
391
- requiresWork: executionMode !== 'direct_control',
392
- requiresApproval: approvalRequired,
393
- requiresIsolation,
394
- requiresRecovery,
395
- createHandoff: false,
396
- waitForUser: false,
397
- approvalState: 'approval_not_required',
398
- alternatives: providerSelection.alternatives,
399
- ...decisionBase(input, reasons),
400
- };
401
- }
@@ -1,70 +0,0 @@
1
- export type WorkspacePlacementMode = 'current' | 'isolated' | 'auto';
2
-
3
- export interface WorkspaceAdmissionConstraintInput {
4
- workspaceMode?: WorkspacePlacementMode;
5
- requireWorktree?: boolean;
6
- /**
7
- * Forbid repository mutation through the current/direct-main lane. This is
8
- * an admission constraint, not a routing hint: callers must never silently
9
- * downgrade it to Direct Control.
10
- */
11
- directMainProhibited?: boolean;
12
- }
13
-
14
- export interface WorkspaceAdmissionConstraint {
15
- workspaceMode: WorkspacePlacementMode;
16
- requireWorktree: boolean;
17
- directMainProhibited: boolean;
18
- requiresIsolation: boolean;
19
- }
20
-
21
- export type WorkspaceAdmissionResolution =
22
- | { ok: true; constraint: WorkspaceAdmissionConstraint }
23
- | { ok: false; code: 'WORKSPACE_PLACEMENT_CONSTRAINT_CONFLICT'; message: string };
24
-
25
- /**
26
- * Canonicalize Work placement before Route Policy runs. Placement is a policy
27
- * fence: explicit isolation / direct-main prohibition has precedence over an
28
- * operator request for the fast Direct Control topology.
29
- */
30
- export function resolveWorkspaceAdmissionConstraint(
31
- input: WorkspaceAdmissionConstraintInput = {},
32
- ): WorkspaceAdmissionResolution {
33
- const workspaceMode = input.workspaceMode ?? 'auto';
34
- const directMainProhibited = input.directMainProhibited === true;
35
-
36
- if (workspaceMode === 'current' && input.requireWorktree === true) {
37
- return {
38
- ok: false,
39
- code: 'WORKSPACE_PLACEMENT_CONSTRAINT_CONFLICT',
40
- message: 'workspaceMode=current conflicts with requireWorktree=true.',
41
- };
42
- }
43
- if (workspaceMode === 'isolated' && input.requireWorktree === false) {
44
- return {
45
- ok: false,
46
- code: 'WORKSPACE_PLACEMENT_CONSTRAINT_CONFLICT',
47
- message: 'workspaceMode=isolated conflicts with requireWorktree=false.',
48
- };
49
- }
50
- if (workspaceMode === 'current' && directMainProhibited) {
51
- return {
52
- ok: false,
53
- code: 'WORKSPACE_PLACEMENT_CONSTRAINT_CONFLICT',
54
- message: 'workspaceMode=current conflicts with directMainProhibited=true because the current lane cannot prove a non-main placement at admission time.',
55
- };
56
- }
57
-
58
- const requiresIsolation = workspaceMode === 'isolated'
59
- || input.requireWorktree === true
60
- || directMainProhibited;
61
- return {
62
- ok: true,
63
- constraint: {
64
- workspaceMode: requiresIsolation ? 'isolated' : workspaceMode,
65
- requireWorktree: requiresIsolation,
66
- directMainProhibited,
67
- requiresIsolation,
68
- },
69
- };
70
- }
@@ -1,2 +0,0 @@
1
- /** @deprecated Kernel V2 compatibility shim. MCP gateway mapping authority lives in adapters/mcp. */
2
- export * from '../../../../adapters/mcp/runtime-gateway/execution-tools';
@@ -1,2 +0,0 @@
1
- /** @deprecated Kernel V2 compatibility shim. MCP gateway mapping authority lives in adapters/mcp. */
2
- export * from '../../../../adapters/mcp/runtime-gateway/legacy-ios-tool-adapter';
@@ -1,2 +0,0 @@
1
- /** @deprecated Kernel V2 compatibility shim. MCP gateway mapping authority lives in adapters/mcp. */
2
- export * from '../../../../adapters/mcp/runtime-gateway/persisted-check-process';
@@ -1,2 +0,0 @@
1
- /** @deprecated Kernel V2 compatibility shim. MCP gateway mapping authority lives in adapters/mcp. */
2
- export * from '../../../../adapters/mcp/runtime-gateway/process-tools';
@@ -1,2 +0,0 @@
1
- /** @deprecated Kernel V2 compatibility shim. MCP gateway mapping authority lives in adapters/mcp. */
2
- export * from '../../../../adapters/mcp/runtime-gateway/router';
@@ -1,2 +0,0 @@
1
- /** @deprecated Kernel V2 compatibility shim. MCP gateway mapping authority lives in adapters/mcp. */
2
- export * from '../../../../adapters/mcp/runtime-gateway/runtime-tool-definitions';
@@ -1,2 +0,0 @@
1
- /** @deprecated Kernel V2 compatibility shim. MCP gateway mapping authority lives in adapters/mcp. */
2
- export * from '../../../../adapters/mcp/runtime-gateway/runtime-tools';
@@ -1,2 +0,0 @@
1
- /** @deprecated Kernel V2 compatibility shim. MCP gateway mapping authority lives in adapters/mcp. */
2
- export * from '../../../../adapters/mcp/runtime-gateway/work-validation-reconciler';
@@ -1,2 +0,0 @@
1
- /** @deprecated C0 compatibility shim. Browser provider selection lives in packages/plugin-runtime/browser. */
2
- export * from '../../../packages/plugin-runtime/browser/provider-registry';