@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
@@ -8,18 +8,22 @@ import { repositoryToolDefinitions } from '../tool-mapping/repository-tools';
8
8
  import { runtimeToolDefinitions } from './runtime-tool-definitions';
9
9
  import { executionToolDefinitions } from './execution-tools';
10
10
  import { processToolDefinitions } from './process-tools';
11
- import type { ExecutionTimeoutPolicy } from '../../../src/runtime/execution/jobs/types';
12
- import { classifyRepositoryCommand } from '../../../src/cli/repositories/command-classifier';
13
- import {
14
- isFastEligibleTool,
15
- routeExecution,
16
- type ExecutionDecision,
17
- } from '../../../src/runtime/execution/thin-harness';
18
- import { classifyRepositoryCommandRoute } from '../../../src/runtime/execution/process-runtime';
19
11
  import { executeGatewayRoutedOperation } from './gateway-execution-adapter';
20
- import { isProcessIsolatedReadDiagnostic } from '../../../src/runtime/diagnostics/process-facade';
12
+ import { classifyGatewayExecutionPath } from './routing-policy';
13
+ export {
14
+ classifyGatewayExecutionPath,
15
+ executionTimeoutPolicyForMcpCall,
16
+ gatewayRouteBehaviorSnapshot,
17
+ isDirectHotReadTool,
18
+ isGatewayIsolatedTool,
19
+ isSelfManagedDurableTool,
20
+ operationExecutionTimeoutMsForMcpCall,
21
+ runsAsInteractiveSyncWrite,
22
+ waitTimeoutMs,
23
+ wantsWaitForResult,
24
+ } from './routing-policy';
25
+ export type { GatewayRouteBehaviorSnapshot } from './routing-policy';
21
26
 
22
- const DIRECT_REPOSITORY_TOOLS = new Set(['repository_list', 'repository_get', 'repository_workbench', 'repository_command_preview']);
23
27
  export const RETIRED_AGENT_OPERATIONS = new Set([
24
28
  'dispatch_task',
25
29
  'launch_issue',
@@ -29,271 +33,11 @@ export const RETIRED_AGENT_OPERATIONS = new Set([
29
33
  'submit_local_job',
30
34
  ]);
31
35
 
32
- // Explicitly authorized bounded control-plane writes whose handlers already own
33
- // their mutation boundary. These must not be promoted to retired ExecutionJobs.
34
- const DIRECT_CONTROL_WRITE_TOOLS = new Set([
35
- 'runtime_maintenance_apply',
36
- // Protected credential preparation and physical input own their authorization boundary.
37
- // Neither may be promoted into Process/ExecutionJob persistence or replay.
38
- 'computer_console_unlock_prepare',
39
- 'computer_console_unlock',
40
- ]);
41
-
42
36
  // Historical ExecutionJobs remain readable migration evidence only.
43
37
  function executionJobCreationRetired(): boolean {
44
38
  return true;
45
39
  }
46
40
 
47
- /**
48
- * Tools whose Fast/Durable boundary is owned by Thin Harness classification.
49
- * Gateway must classify BEFORE creating an ExecutionJob so short readonly
50
- * repository commands do not pay queue/worker overhead.
51
- */
52
- const THIN_ROUTED_TOOLS = new Set([
53
- 'repository_command_execute',
54
- 'repository_safe_patch_apply',
55
- 'repository_safe_patch_plan',
56
- 'repository_git_status',
57
- 'repository_git_diff',
58
- 'repository_git_commit',
59
- 'git_stage_paths',
60
- 'git_commit_paths',
61
- 'git_diff_paths',
62
- 'apply_patch',
63
- 'apply_edit_operations',
64
- 'search_repository',
65
- 'read_file_range',
66
- 'read_repository_file',
67
- // Checks and edit verification use Process Runtime unless multi-phase/release requires Durable.
68
- 'run_check',
69
- 'verify_edit_session',
70
- ]);
71
-
72
- /** Blocking native host tools must never execute on the public MCP event loop. */
73
- const GATEWAY_ISOLATED_TOOLS = new Set([
74
- // Native Apple tooling uses synchronous xcodebuild/simctl subprocesses.
75
- 'ios_review_packet', 'ios_xcode_status', 'ios_simulators_list', 'ios_project_discover',
76
- 'ios_schemes_list', 'ios_simulator_boot', 'ios_app_build', 'ios_app_install',
77
- 'ios_app_launch', 'ios_simulator_screenshot', 'ios_simulator_log_tail', 'ios_ui_smoke_test',
78
- // Diagnostics and maintenance perform process-table and recursive filesystem scans.
79
- 'workflow_watchdog_report', 'runtime_cleanup_preview', 'runtime_cleanup_apply',
80
- 'runtime_maintenance_status', 'runtime_maintenance_apply',
81
- // Release and recovery operations may spawn Git/process checks or restart managed children.
82
- 'release_gate', 'runtime_recovery', 'capability_recovery',
83
- ]);
84
-
85
- export function isGatewayIsolatedTool(name: string): boolean {
86
- return GATEWAY_ISOLATED_TOOLS.has(name);
87
- }
88
-
89
- /**
90
- * Tools that own their execution boundary and must never fall through to
91
- * retired generic ExecutionJob creation. Legacy iOS atomics are compatibility
92
- * adapters over the typed iOS plugin authority.
93
- */
94
- const SELF_MANAGED_DURABLE_TOOLS = new Set([
95
- 'plugin_action_execute',
96
- 'ios_xcode_status', 'ios_simulators_list', 'ios_project_discover', 'ios_schemes_list',
97
- 'ios_simulator_boot', 'ios_app_build', 'ios_app_install', 'ios_app_launch',
98
- 'ios_simulator_screenshot', 'ios_simulator_log_tail', 'ios_ui_smoke_test',
99
- ]);
100
-
101
- export function isSelfManagedDurableTool(name: string): boolean {
102
- return SELF_MANAGED_DURABLE_TOOLS.has(name);
103
- }
104
- /** High-frequency bounded reads execute in the current MCP request. */
105
- const DIRECT_HOT_READ_TOOLS = new Set([
106
- 'get_task_run', 'get_task_run_events', 'get_task_run_log',
107
- 'get_job', 'list_jobs',
108
- 'work_get', 'work_list', 'work_status_digest', 'work_result_summary',
109
- 'controller_ready', 'repository_runtime_snapshot',
110
- 'rh_status', 'rh_context', 'rh_inbox',
111
- 'repository_git_status', 'repository_git_diff', 'git_diff_paths',
112
- ]);
113
-
114
- export function isDirectHotReadTool(name: string): boolean {
115
- return DIRECT_HOT_READ_TOOLS.has(name);
116
- }
117
- /** Small interactive development writes: run synchronously by default so ChatGPT/GUI get immediate results. */
118
- const INTERACTIVE_SYNC_WRITE_TOOLS = new Set([
119
- 'repository_safe_patch_apply',
120
- 'repository_git_create_branch',
121
- 'repository_git_switch_branch',
122
- 'repository_git_merge_branch',
123
- 'repository_git_delete_branch',
124
- 'repository_git_commit',
125
- 'repository_git_finish_workflow',
126
- 'begin_edit_session',
127
- 'apply_patch',
128
- 'apply_edit_operations',
129
- 'create_edit_savepoint',
130
- 'git_stage_paths',
131
- 'git_commit_paths',
132
- // Recovery writes against an existing Run must remain available while legacy
133
- // Runs are the very thing preventing runtime-storage relocation. These tools
134
- // do not create new execution ownership or dispatch new work.
135
- 'finish_task_run',
136
- 'cancel_task_run',
137
- ]);
138
- const AGENT_DELEGATION_TOOLS = new Set([
139
- 'dispatch_task',
140
- 'launch_issue',
141
- 'dispatch_ready_tasks',
142
- 'retry_task_run',
143
- 'quick_agent_session',
144
- ]);
145
- const EXPLICIT_EXTERNAL_CONTROLLER_TOOLS = new Set([
146
- 'publish_issue_to_github',
147
- 'close_github_issue',
148
- 'request_release_gate',
149
- ]);
150
-
151
- const GATEWAY_ROUTE_BEHAVIOR_PROBES: ReadonlyArray<{
152
- id: string;
153
- operation: string;
154
- args: Record<string, unknown>;
155
- }> = [
156
- { id: 'hot-read', operation: 'controller_ready', args: {} },
157
- { id: 'isolated-read-diagnostic', operation: 'workflow_watchdog_report', args: {} },
158
- { id: 'readonly-command', operation: 'repository_command_execute', args: { command: ['git', 'status', '--short'] } },
159
- { id: 'managed-local-command', operation: 'repository_command_execute', args: { command: ['bun', 'run', 'check:type'], timeout_ms: 120_000 } },
160
- { id: 'focused-check', operation: 'run_check', args: { check_id: 'package:check:type' } },
161
- { id: 'release-check', operation: 'run_check', args: { check_id: 'package:check:release' } },
162
- { id: 'interactive-write', operation: 'repository_safe_patch_apply', args: { operations: [] } },
163
- { id: 'external-controller', operation: 'request_release_gate', args: {} },
164
- { id: 'unknown-tool', operation: '__route_behavior_probe_unknown__', args: {} },
165
- ];
166
-
167
- export interface GatewayRouteBehaviorSnapshot {
168
- schemaVersion: 1;
169
- fingerprint: string;
170
- probeCount: number;
171
- probes: Array<{
172
- id: string;
173
- operation: string;
174
- path: 'direct' | 'fast' | 'durable' | 'reject';
175
- reasons: string[];
176
- decision?: {
177
- mode: string;
178
- risk: string;
179
- estimatedClass: string;
180
- requiresIsolation: boolean;
181
- requiresRecovery: boolean;
182
- effects: Record<string, boolean>;
183
- };
184
- }>;
185
- }
186
-
187
- /**
188
- * Fingerprint the real Gateway classifier over a fixed, bounded behavior matrix.
189
- * This is deliberately distinct from the MCP schema/tool-surface fingerprint.
190
- */
191
- export function gatewayRouteBehaviorSnapshot(): GatewayRouteBehaviorSnapshot {
192
- const probes = GATEWAY_ROUTE_BEHAVIOR_PROBES.map((probe) => {
193
- const classification = classifyGatewayExecutionPath(probe.operation, probe.args);
194
- return {
195
- id: probe.id,
196
- operation: probe.operation,
197
- path: classification.path,
198
- reasons: [...classification.reasons],
199
- ...(classification.decision ? {
200
- decision: {
201
- mode: classification.decision.mode,
202
- risk: classification.decision.risk,
203
- estimatedClass: classification.decision.estimatedClass,
204
- requiresIsolation: classification.decision.requiresIsolation,
205
- requiresRecovery: classification.decision.requiresRecovery,
206
- effects: { ...classification.decision.effects },
207
- },
208
- } : {}),
209
- };
210
- });
211
- return {
212
- schemaVersion: 1,
213
- fingerprint: createHash('sha256').update(JSON.stringify(probes)).digest('hex'),
214
- probeCount: probes.length,
215
- probes,
216
- };
217
- }
218
- const MAX_DURABLE_TIMEOUT_MS = 24 * 60 * 60_000;
219
-
220
- function durableTimeoutMs(value: unknown, fallback: number): number {
221
- if (typeof value !== 'number' || !Number.isFinite(value)) return fallback;
222
- return Math.max(1_000, Math.min(Math.trunc(value), MAX_DURABLE_TIMEOUT_MS));
223
- }
224
-
225
- function wantsAsyncExecution(args: Record<string, unknown>): boolean {
226
- return args.apply_mode === 'async'
227
- || args.mode === 'async'
228
- || args.mode === 'durable'
229
- || args.async === true
230
- || args.background === true;
231
- }
232
-
233
- /** Release checks cross the external Controller boundary when explicitly
234
- * requested asynchronously; ordinary checks remain Process-Runtime local. */
235
- function isReleaseCheckId(value: unknown): boolean {
236
- const id = typeof value === 'string' ? value.trim().toLowerCase() : '';
237
- return id === 'check:release' || id === 'package:check:release';
238
- }
239
-
240
- export function runsAsInteractiveSyncWrite(
241
- name: string,
242
- args: Record<string, unknown> = {},
243
- ): boolean {
244
- return INTERACTIVE_SYNC_WRITE_TOOLS.has(name) && !wantsAsyncExecution(args);
245
- }
246
-
247
- export function wantsWaitForResult(args: Record<string, unknown>): boolean {
248
- return args.wait === true
249
- || args.await_result === true
250
- || args.wait_for_result === true;
251
- }
252
-
253
- export function waitTimeoutMs(args: Record<string, unknown>): number {
254
- const explicitInteractiveWait = args.interactive_wait_ms ?? args.wait_ms;
255
- if (typeof explicitInteractiveWait === 'number' && Number.isFinite(explicitInteractiveWait)) {
256
- return Math.max(200, Math.min(Math.trunc(explicitInteractiveWait), 120_000));
257
- }
258
- if (typeof args.timeout_ms === 'number' && Number.isFinite(args.timeout_ms) && wantsWaitForResult(args)) {
259
- return Math.max(200, Math.min(Math.trunc(args.timeout_ms), 120_000));
260
- }
261
- return 15_000;
262
- }
263
-
264
- export function operationExecutionTimeoutMsForMcpCall(
265
- name: string,
266
- args: Record<string, unknown>,
267
- ): number {
268
- const requested = args.execution_timeout_ms ?? args.timeout_ms;
269
- return durableTimeoutMs(requested, AGENT_DELEGATION_TOOLS.has(name) ? 60 * 60_000 : 15 * 60_000);
270
- }
271
-
272
- /**
273
- * Build independent budgets for the durable Parent Job. Agent delegation keeps
274
- * the caller's operation execution budget on the Child Run; the Parent only
275
- * receives enough execution time to create and durably associate that child.
276
- */
277
- export function executionTimeoutPolicyForMcpCall(
278
- name: string,
279
- args: Record<string, unknown>,
280
- ): ExecutionTimeoutPolicy {
281
- const operationExecutionMs = operationExecutionTimeoutMsForMcpCall(name, args);
282
- const agentDelegation = AGENT_DELEGATION_TOOLS.has(name);
283
- return {
284
- admissionTimeoutMs: durableTimeoutMs(
285
- args.admission_timeout_ms,
286
- agentDelegation ? 5 * 60_000 : operationExecutionMs,
287
- ),
288
- queueTimeoutMs: durableTimeoutMs(
289
- args.queue_timeout_ms,
290
- agentDelegation ? MAX_DURABLE_TIMEOUT_MS : operationExecutionMs,
291
- ),
292
- executionTimeoutMs: agentDelegation ? 120_000 : operationExecutionMs,
293
- interactiveWaitMs: waitTimeoutMs(args),
294
- };
295
- }
296
-
297
41
  function result(value: Record<string, unknown>, isError = false): CallToolResult {
298
42
  return {
299
43
  content: [{ type: 'text', text: JSON.stringify(value, null, 2) }],
@@ -304,7 +48,6 @@ function result(value: Record<string, unknown>, isError = false): CallToolResult
304
48
 
305
49
  export function getMcpToolDefinition(ctx: MultiRepositoryMcpToolContext, name: string): McpToolDefinition | undefined {
306
50
  const currentDefinitions = [...runtimeToolDefinitions, ...executionToolDefinitions, ...processToolDefinitions, ...repositoryToolDefinitions];
307
- if (ctx.toolset !== 'full') return currentDefinitions.find((tool) => tool.name === name);
308
51
  return [...currentDefinitions, ...buildMultiRepositoryToolDefinitions(ctx)].find((tool) => tool.name === name);
309
52
  }
310
53
 
@@ -312,236 +55,6 @@ export function getMcpToolDefinition(ctx: MultiRepositoryMcpToolContext, name: s
312
55
  * Classify Gateway execution path before any ExecutionJob is created.
313
56
  * Fast decisions short-circuit durable queueing so Thin Harness owns the request.
314
57
  */
315
- export function classifyGatewayExecutionPath(
316
- name: string,
317
- args: Record<string, unknown> = {},
318
- opts: { allowReadOnly?: boolean; forceDurable?: boolean; definition?: McpToolDefinition } = {},
319
- ): {
320
- path: 'direct' | 'fast' | 'durable' | 'reject';
321
- reasons: string[];
322
- decision?: ExecutionDecision;
323
- } {
324
- // Heavy read-only diagnostics must leave the Gateway event loop before the
325
- // generic read-only shortcut. Process Runtime preserves the same request and
326
- // returns either the completed JSON or a queryable process handle.
327
- if (isProcessIsolatedReadDiagnostic(name)) {
328
- return { path: 'fast', reasons: ['isolated_read_diagnostic_process'] };
329
- }
330
- // Registered bounded reads execute through their real handler.
331
- if (opts.definition?.annotations?.readOnlyHint === true) {
332
- return { path: 'direct', reasons: ['registered_readonly_tool'] };
333
- }
334
- if (name.startsWith('repository_') && DIRECT_REPOSITORY_TOOLS.has(name)) {
335
- return { path: 'direct', reasons: ['direct_repository_tool'] };
336
- }
337
- if (isDirectHotReadTool(name)) {
338
- return { path: 'direct', reasons: ['direct_hot_read'] };
339
- }
340
- if (runsAsInteractiveSyncWrite(name, args)) {
341
- return { path: 'direct', reasons: ['interactive_sync_write'] };
342
- }
343
- if (isSelfManagedDurableTool(name)) {
344
- return { path: 'direct', reasons: ['self_managed_durable_boundary'] };
345
- }
346
- if (DIRECT_CONTROL_WRITE_TOOLS.has(name) && !wantsAsyncExecution(args)) {
347
- return { path: 'direct', reasons: ['bounded_direct_control_write'] };
348
- }
349
- if (EXPLICIT_EXTERNAL_CONTROLLER_TOOLS.has(name)) {
350
- return { path: 'durable', reasons: ['explicit_external_controller_boundary'] };
351
- }
352
- if (opts.forceDurable === true || isGatewayIsolatedTool(name)) {
353
- return {
354
- path: 'durable',
355
- reasons: opts.forceDurable ? ['force_durable'] : ['gateway_isolated_tool'],
356
- };
357
- }
358
- const selfManagedProcessAsync = (
359
- name === 'repository_command_execute'
360
- || name === 'run_check'
361
- || name === 'verify_edit_session'
362
- ) && (
363
- args.apply_mode === 'async'
364
- || args.mode === 'async'
365
- || args.async === true
366
- || args.background === true
367
- ) && !(name === 'run_check' && isReleaseCheckId(args.check_id ?? args.checkId));
368
- // Async on Process-Runtime-owned tools means return the managed Process
369
- // handle immediately. It must not promote local work into the retired
370
- // ExecutionJob path. Explicit durable mode still crosses the external
371
- // Controller boundary.
372
- if (wantsAsyncExecution(args) && !selfManagedProcessAsync) {
373
- return {
374
- path: 'durable',
375
- reasons: ['caller_requested_async_or_durable'],
376
- };
377
- }
378
- // run_check: Process Runtime for ordinary checks; Durable only for release/multi-phase.
379
- if (name === 'run_check') {
380
- const checkId = String(args.check_id ?? args.checkId ?? '').trim();
381
- const batchCheckIds = Array.isArray(args.check_ids)
382
- ? args.check_ids.map((value) => String(value).trim()).filter(Boolean)
383
- : [];
384
- if (args.mode === 'durable' || args.force_durable === true) {
385
- return { path: 'durable', reasons: ['caller_requested_durable_check'] };
386
- }
387
- if (isReleaseCheckId(checkId) && batchCheckIds.length === 0) {
388
- return { path: 'durable', reasons: ['release_check_requires_durable_boundary'] };
389
- }
390
- // Gateway owns transport placement, not Check lifecycle semantics. Until
391
- // the registered ControllerCheck is resolved by the Check owner below,
392
- // never infer Durable handling from a caller-provided id string.
393
- // Route as "fast" so shouldCreateDurableJob returns false; actual execution
394
- // uses Process Runtime (direct or managed handle) in routeDurableMcpCall / legacy handler.
395
- return {
396
- path: 'fast',
397
- reasons: ['run_check_process_runtime'],
398
- decision: {
399
- mode: 'fast',
400
- reasons: ['run_check_process_runtime'],
401
- risk: 'workspace_write',
402
- estimatedClass: 'short',
403
- requiresIsolation: false,
404
- requiresRecovery: false,
405
- effects: {
406
- readsWorkspace: true,
407
- mutatesWorkspace: true,
408
- mutatesGitRefs: false,
409
- remoteWrite: false,
410
- },
411
- },
412
- };
413
- }
414
-
415
- // verify_edit_session is a Process Runtime orchestration surface. It may
416
- // return a managed handle, but it must never be promoted to a retired
417
- // ExecutionJob/LocalJob merely because the edit session has checks.
418
- if (name === 'verify_edit_session') {
419
- if (args.mode === 'durable' || args.force_durable === true) {
420
- return { path: 'durable', reasons: ['caller_requested_durable_edit_verification'] };
421
- }
422
- return {
423
- path: 'fast',
424
- reasons: ['verify_edit_session_process_runtime'],
425
- decision: {
426
- mode: 'fast',
427
- reasons: ['verify_edit_session_process_runtime'],
428
- risk: 'workspace_write',
429
- estimatedClass: 'short',
430
- requiresIsolation: false,
431
- requiresRecovery: false,
432
- effects: {
433
- readsWorkspace: true,
434
- mutatesWorkspace: true,
435
- mutatesGitRefs: false,
436
- remoteWrite: false,
437
- },
438
- },
439
- };
440
- }
441
-
442
- // repository_command_execute has one authoritative classifier. Process Runtime
443
- // owns every local single-process command regardless of timeout. Async requests
444
- // stay here and return a handle; explicit durable mode remains an external-
445
- // Controller boundary.
446
- if (name === 'repository_command_execute') {
447
- const command = args.command;
448
- if (!(typeof command === 'string' || Array.isArray(command))) {
449
- return { path: 'reject', reasons: ['repository_command_missing'] };
450
- }
451
- const route = classifyRepositoryCommandRoute(command as string | string[], {
452
- defaultBranch: typeof args.default_branch === 'string' ? args.default_branch : undefined,
453
- timeoutMs: typeof args.timeout_ms === 'number' ? args.timeout_ms : undefined,
454
- });
455
- if (route.route === 'process_direct' || route.route === 'process_managed') {
456
- const commandClassification = classifyRepositoryCommand(
457
- command as string | string[],
458
- typeof args.default_branch === 'string' ? args.default_branch : undefined,
459
- );
460
- const risk = commandClassification.risk === 'readonly'
461
- ? 'readonly'
462
- : commandClassification.risk === 'remote_write'
463
- ? 'remote_write'
464
- : commandClassification.risk === 'destructive'
465
- ? 'destructive'
466
- : 'workspace_write';
467
- const reasons = ['repository_command_process_runtime', route.reason];
468
- return {
469
- path: 'fast',
470
- reasons,
471
- decision: {
472
- mode: 'fast',
473
- reasons,
474
- risk,
475
- estimatedClass: route.route === 'process_direct' ? 'short' : 'long',
476
- requiresIsolation: false,
477
- requiresRecovery: false,
478
- effects: {
479
- readsWorkspace: true,
480
- mutatesWorkspace: risk !== 'readonly',
481
- mutatesGitRefs: risk !== 'readonly' && /(?:^|\s)git\s+(?:commit|merge|branch|switch|checkout|reset|rebase|tag)\b/i.test(
482
- Array.isArray(command) ? command.join(' ') : command,
483
- ),
484
- remoteWrite: risk === 'remote_write',
485
- },
486
- },
487
- };
488
- }
489
- if (route.route === 'reject') return { path: 'reject', reasons: [route.reason] };
490
- return { path: 'durable', reasons: [route.reason] };
491
- }
492
-
493
- if (THIN_ROUTED_TOOLS.has(name)) {
494
- const decision = routeExecution({
495
- operation: name,
496
- mode: args.mode === 'fast' ? 'fast' : 'auto',
497
- background: args.background === true || args.apply_mode === 'async' || args.async === true,
498
- requiresRecovery: args.requires_recovery === true,
499
- requiresIsolation: args.isolation === 'new_worktree' || args.requires_isolation === true,
500
- requiresWorktree: args.isolation === 'new_worktree',
501
- agentRun: name === 'quick_agent_session' || name === 'dispatch_task',
502
- remoteWrite: name.includes('push') || name === 'publish_issue_to_github',
503
- timeoutMs: typeof args.timeout_ms === 'number' ? args.timeout_ms : undefined,
504
- command: args.command as string | string[] | undefined,
505
- paths: Array.isArray(args.paths) ? args.paths.map(String) : undefined,
506
- allowedPaths: Array.isArray(args.allowed_paths) ? args.allowed_paths.map(String) : undefined,
507
- patchOperationCount: Array.isArray(args.operations) ? args.operations.length : undefined,
508
- patchPaths: Array.isArray(args.operations)
509
- ? args.operations
510
- .filter((entry): entry is Record<string, unknown> => typeof entry === 'object' && entry !== null)
511
- .map((entry) => String(entry.path ?? '').trim())
512
- .filter(Boolean)
513
- : undefined,
514
- });
515
- if (decision.mode === 'fast') {
516
- return {
517
- path: 'fast',
518
- reasons: decision.reasons,
519
- decision,
520
- };
521
- }
522
- if (decision.mode === 'reject') {
523
- return { path: 'reject', reasons: decision.reasons, decision };
524
- }
525
- // Keep isFastEligibleTool as a secondary guard for tools whose operation
526
- // name maps to a Fast allowlist entry but routeExecution used a durable alias.
527
- if (isFastEligibleTool(name, args)) {
528
- return {
529
- path: 'fast',
530
- reasons: ['thin_router_fast_eligible'],
531
- };
532
- }
533
- return {
534
- path: 'durable',
535
- reasons: decision.reasons.length > 0 ? decision.reasons : ['thin_router_requires_durable'],
536
- decision,
537
- };
538
- }
539
- if (opts.definition) {
540
- return { path: 'direct', reasons: ['registered_tool_direct_handler'] };
541
- }
542
- return { path: 'reject', reasons: ['tool_not_found'] };
543
- }
544
-
545
58
  export function shouldCreateDurableJob(
546
59
  ctx: MultiRepositoryMcpToolContext,
547
60
  name: string,
@@ -659,8 +172,8 @@ export async function routeDurableMcpCall(
659
172
  mode: 'reject',
660
173
  path: 'reject',
661
174
  rejectCode: 'AGENT_RUN_DEPRECATED',
662
- message: 'Kernel-managed Agent Runs are retired. Create or resume a WorkContract, claim it, then start the external Controller through rh_work.launcher_start.',
663
- migration: ['rh_work.plan_create', 'rh_work.controller_claim', 'rh_work.launcher_start', 'rh_inbox.create'],
175
+ message: 'Kernel-managed Agent Runs are retired. When durable continuation is actually needed, create or resume the semantic Work and start the external Controller through rh_work.launcher_start; mechanical ControllerRound ownership is internal.',
176
+ migration: ['rh_work.plan_create', 'rh_work.launcher_start', 'rh_inbox.create'],
664
177
  });
665
178
  }
666
179
 
@@ -698,11 +211,11 @@ export async function routeDurableMcpCall(
698
211
  }, true);
699
212
  }
700
213
 
701
- // repository_command_execute has its own durable boundary: non-destructive
214
+ // execute_command has its own durable boundary: non-destructive
702
215
  // remote writes run through the durable Process Runtime, while destructive or
703
216
  // explicitly delegated commands are refused by the repository facade itself.
704
217
  // Do not intercept that tool with the retired ExecutionJob gate here.
705
- if (classification.path === 'durable' && executionJobCreationRetired() && name !== 'repository_command_execute') {
218
+ if (classification.path === 'durable' && executionJobCreationRetired() && name !== 'execute_command') {
706
219
  return result({
707
220
  accepted: false,
708
221
  mode: 'external_controller_required',
@@ -713,8 +226,7 @@ export async function routeDurableMcpCall(
713
226
  ...(classification.decision ? { decision: classification.decision } : {}),
714
227
  },
715
228
  rejectCode: 'EXECUTION_JOB_RETIRED',
716
- message: 'This operation requires an explicitly claimed external Controller; the Kernel no longer creates ExecutionJobs.',
717
- suggestedOperation: 'Create or resume a WorkContract, claim it with controller_claim, then use Process Runtime commands or rh_work.launcher_start.',
229
+ message: 'This operation needs external Controller or authorized domain capability; Forge does not create Work/Plans or prescribe a workflow to fulfill it.',
718
230
  });
719
231
  }
720
232