@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,7 +1,8 @@
1
1
  import { readFileSync, statSync } from 'fs';
2
2
  import type { Command } from 'commander';
3
3
  import { recordExperience, retractExperience, supersedeExperience, type ExperienceDraft } from '../../../packages/kernel/memory/api/index';
4
- import { controllerExperienceStore } from '../../runtime/control-plane/persistence/experience-store';
4
+ import { controllerExperienceStore, workExperienceProvenance } from '../../runtime/control-plane/persistence/experience-store';
5
+ import { getWorkContract } from '../../../packages/kernel/work/api/index';
5
6
  import { prepareAssistantWorkContext } from '../../runtime/context/assistant-work-context';
6
7
 
7
8
  function readBoundedJson(path: string): unknown {
@@ -17,21 +18,34 @@ export function addBrainAssistantCommands(brain: Command): void {
17
18
  .action((options: { controllerHome: string; repoId: string; workId: string; query?: string; channel?: string; account?: string; locale?: string }) => {
18
19
  console.log(JSON.stringify(prepareAssistantWorkContext({ ...options, applicability: { channel: options.channel, account: options.account, locale: options.locale } }) ?? { status: 'project_contract_missing' }, null, 2));
19
20
  });
20
- const experience = brain.command('experience').description('Submit or withdraw Controller-authored, evidence-backed experience');
21
+ const experience = brain.command('experience').description('Submit or withdraw Work-authored, evidence-backed advisory experience');
21
22
  for (const operation of ['record', 'supersede', 'retract'] as const) {
22
23
  experience.command(operation)
23
24
  .requiredOption('--controller-home <path>').requiredOption('--repo-id <id>').requiredOption('--work-id <id>')
24
- .requiredOption('--controller-id <id>').requiredOption('--authority-env <name>', 'Environment variable containing the current Controller capability')
25
- .requiredOption('--input <path>', 'Bounded JSON API input; never include the Controller capability')
26
- .action((options: { controllerHome: string; repoId: string; workId: string; controllerId: string; authorityEnv: string; input: string }) => {
27
- if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(options.authorityEnv)) throw new Error('BRAIN_AUTHORITY_ENV_INVALID');
28
- const authorityId = process.env[options.authorityEnv];
29
- if (!authorityId) throw new Error('BRAIN_CONTROLLER_AUTHORITY_REQUIRED');
30
- const store = controllerExperienceStore({ ...options, identity: { workId: options.workId, controllerId: options.controllerId, authorityId } });
31
- const data = readBoundedJson(options.input);
32
- const result = operation === 'record' ? recordExperience(store, data as ExperienceDraft)
33
- : operation === 'supersede' ? supersedeExperience(store, data as Parameters<typeof supersedeExperience>[1])
34
- : retractExperience(store, data as Parameters<typeof retractExperience>[1]);
25
+ .requiredOption('--input <path>', 'Bounded JSON API input; source Work provenance is derived by Forge')
26
+ .action((options: { controllerHome: string; repoId: string; workId: string; input: string }) => {
27
+ const work = getWorkContract({ controllerHome: options.controllerHome, repoId: options.repoId }, options.workId);
28
+ if (!work) throw new Error(`BRAIN_WORK_NOT_FOUND: ${options.workId}`);
29
+ const sourceRoundId = workExperienceProvenance(work);
30
+ const store = controllerExperienceStore({ ...options, identity: { workId: options.workId } });
31
+ const raw = readBoundedJson(options.input);
32
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) throw new Error('BRAIN_INPUT_OBJECT_REQUIRED');
33
+ const data = raw as Record<string, unknown>;
34
+ const result = operation === 'record'
35
+ ? recordExperience(store, { ...data, sourceWorkId: options.workId, sourceRoundId } as ExperienceDraft)
36
+ : operation === 'supersede'
37
+ ? (() => {
38
+ const input = data as Parameters<typeof supersedeExperience>[1];
39
+ return supersedeExperience(store, {
40
+ ...input,
41
+ draft: { ...input.draft, sourceWorkId: options.workId, sourceRoundId },
42
+ });
43
+ })()
44
+ : retractExperience(store, {
45
+ ...(data as Parameters<typeof retractExperience>[1]),
46
+ sourceWorkId: options.workId,
47
+ sourceRoundId,
48
+ });
35
49
  console.log(JSON.stringify(result, null, 2));
36
50
  });
37
51
  }
@@ -14,7 +14,7 @@ import { configuredBrainRoot } from './brain-root';
14
14
  import { addBrainAssistantCommands } from './brain-assistant';
15
15
  import { resolveRepoPreferredControllerHome } from '../repositories/controller-home';
16
16
  import { findRegisteredRepositoryByCheckoutRoot } from '../repositories/registry';
17
- import { getWorkContract, validateWorkSemantics } from '../../../packages/kernel/work/api/index';
17
+ import { getWorkContract, semanticWorkState } from '../../../packages/kernel/work/api/index';
18
18
 
19
19
  export type BrainLifecycle = 'always-sync' | 'archive-only' | 'never-sync';
20
20
  export type BrainCategory = 'decisions' | 'runbooks' | 'patterns' | 'references';
@@ -561,38 +561,36 @@ function modernBrainPromotionSource(repoRoot: string, opts: BrainPromoteOptions,
561
561
  return { sources: [], sections: [], relatedPlan: work.planId ?? '', terminalAt: '', outcome: '', sourceWork: workId, completionReceipt: '', workScope: '' };
562
562
  }
563
563
  const workScope = `${work.scopeRef.kind}:${work.scopeRef.id}`;
564
- if (work.status !== 'completed' || !work.completionReceipt) {
565
- issue(issues, 'error', `Brain promotion requires a completed Work with a durable completion receipt: ${workId}`);
564
+ if (semanticWorkState(work) !== 'completed') {
565
+ issue(issues, 'error', `Brain promotion requires a semantically completed Work: ${workId}`);
566
566
  return { sources: [], sections: [], relatedPlan: work.planId ?? '', terminalAt: '', outcome: '', sourceWork: workId, completionReceipt: '', workScope };
567
567
  }
568
- try {
569
- validateWorkSemantics(work);
570
- } catch (error) {
571
- issue(issues, 'error', `Work completion evidence is invalid for Brain promotion: ${error instanceof Error ? error.message : String(error)}`);
572
- return { sources: [], sections: [], relatedPlan: work.planId ?? '', terminalAt: '', outcome: '', sourceWork: workId, completionReceipt: work.completionReceipt.receiptId, workScope };
573
- }
574
568
  const receipt = work.completionReceipt;
575
- const repositoryDetails = ('targetRevision' in receipt)
569
+ const semanticResultRefs = [...new Set((work.semanticResultRefs ?? []).map((value) => value.trim()).filter(Boolean))];
570
+ const repositoryDetails = receipt && 'targetRevision' in receipt
576
571
  ? [`- Target revision: ${receipt.targetRevision}`, `- Changed paths: ${receipt.changedPaths.length}`]
577
572
  : [];
573
+ const legacyReceiptDetails = receipt
574
+ ? [`- Legacy completion receipt: ${receipt.receiptId}`, `- Legacy completion source: ${receipt.source}`]
575
+ : ['- Legacy completion receipt: none (not required for semantic completion)'];
578
576
  const section = [
579
577
  `## Source: work:${work.workId}`,
580
578
  '',
581
579
  `- Objective: ${work.objective}`,
582
580
  `- Completion outcome: ${work.completionOutcome ?? 'completed'}`,
583
- `- Completion receipt: ${receipt.receiptId}`,
584
- `- Completion authority: ${receipt.source}`,
581
+ `- Semantic result refs: ${semanticResultRefs.length ? semanticResultRefs.join(', ') : '(none recorded)'}`,
585
582
  `- Work scope: ${workScope}`,
583
+ ...legacyReceiptDetails,
586
584
  ...repositoryDetails,
587
585
  '',
588
586
  'This entry is promoted from validated durable Work metadata. Raw process logs, credentials, and chat history are not copied into Brain.',
589
587
  '',
590
588
  ].join('\n');
591
589
  return {
592
- sources: [`work:${work.workId}`, `completion:${receipt.receiptId}`],
593
- sections: [section], relatedPlan: work.planId ?? '', terminalAt: receipt.recordedAt,
590
+ sources: [`work:${work.workId}`, ...semanticResultRefs, ...(receipt ? [`completion:${receipt.receiptId}`] : [])],
591
+ sections: [section], relatedPlan: work.planId ?? '', terminalAt: work.semanticUpdatedAt ?? work.updatedAt,
594
592
  outcome: work.completionOutcome ?? 'completed', sourceWork: work.workId,
595
- completionReceipt: receipt.receiptId, workScope,
593
+ completionReceipt: receipt?.receiptId ?? '', workScope,
596
594
  };
597
595
  }
598
596
 
@@ -13,12 +13,7 @@ import {
13
13
  } from '../chatgpt-browser/engine';
14
14
  import type { BrowserProviderName, BrowserSessionStatus, NativeBrowserChannel, ThinkingLevel } from '../chatgpt-browser/types';
15
15
  import { durableControllerHome } from '../repositories/controller-home';
16
- import {
17
- runWorkChatgptContinuation,
18
- type ChatgptAutomationReasoning,
19
- type ChatgptAutomationTabPolicy,
20
- } from '../../runtime/control-plane/launcher/chatgpt-work-continuation';
21
- import { closeChatgptControllerRoundFromSource, continueChatgptControllerRoundFromSource, openChatgptControllerRoundFromSource } from '../../runtime/control-plane/launcher/chatgpt-round-continuation';
16
+ import { closeChatgptControllerRoundFromSource } from '../../runtime/control-plane/launcher/chatgpt-round-continuation';
22
17
 
23
18
  interface BrowserCommonOptions {
24
19
  repo?: string;
@@ -81,43 +76,6 @@ interface BrowserConsultOptions extends BrowserCommonOptions {
81
76
  headless?: boolean;
82
77
  }
83
78
 
84
- interface WorkChatgptContinueOptions extends BrowserCommonOptions {
85
- controllerHome: string;
86
- repoId: string;
87
- workId: string;
88
- prompt: string;
89
- title?: string;
90
- session?: string;
91
- conversationUrl?: string;
92
- model?: string;
93
- reasoning?: string;
94
- tabPolicy?: string;
95
- timeoutMs?: string;
96
- controllerAuthorityId?: string;
97
- relayScopeId?: string;
98
- }
99
-
100
- interface SourceRoundOpenOptions extends BrowserCommonOptions {
101
- controllerHome?: string;
102
- repoId: string;
103
- workId: string;
104
- controllerId: string;
105
- principalId: string;
106
- controllerInstanceId?: string;
107
- continuationPrompt?: string;
108
- timeoutMs?: string;
109
- }
110
-
111
- interface SourceRoundContinueOptions extends BrowserCommonOptions {
112
- controllerHome?: string;
113
- repoId: string;
114
- workId: string;
115
- controllerAuthorityId: string;
116
- relayScopeId: string;
117
- reason?: string;
118
- timeoutMs?: string;
119
- }
120
-
121
79
  interface SourceRoundCloseOptions extends BrowserCommonOptions {
122
80
  controllerHome?: string;
123
81
  repoId: string;
@@ -156,18 +114,6 @@ interface BrowserFollowupOptions extends BrowserCommonOptions {
156
114
  oracleBin?: string;
157
115
  }
158
116
 
159
- function parseAutomationReasoning(value?: string): ChatgptAutomationReasoning | undefined {
160
- if (value === undefined) return undefined;
161
- if (value === 'medium' || value === 'high' || value === 'xhigh') return value;
162
- throw new Error(`invalid --reasoning "${value}" (expected: medium, high, xhigh)`);
163
- }
164
-
165
- function parseAutomationTabPolicy(value?: string): ChatgptAutomationTabPolicy | undefined {
166
- if (value === undefined) return undefined;
167
- if (value === 'auto' || value === 'reuse' || value === 'new') return value;
168
- throw new Error(`invalid --tab-policy "${value}" (expected: auto, reuse, new)`);
169
- }
170
-
171
117
  function parseProvider(value?: string): BrowserProviderName {
172
118
  if (value === undefined || value === 'oracle') return 'oracle';
173
119
  if (value === 'native') return 'native';
@@ -435,114 +381,6 @@ export function buildChatgptCommand(): Command {
435
381
  });
436
382
  });
437
383
 
438
- const workContinue = new Command('work-continue')
439
- .description('Internal: continue one Forge Work in its bound ChatGPT Web conversation')
440
- .option('--repo <path>', 'Repository root for the Work browser session', '.')
441
- .requiredOption('--controller-home <path>', 'Explicit Controller Home containing the authoritative Work and conversation binding')
442
- .requiredOption('--repo-id <repo-id>', 'Stable Forge repository id')
443
- .requiredOption('--work-id <work-id>', 'Stable Forge Work id')
444
- .requiredOption('--prompt <text>', 'Bounded continuation prompt')
445
- .option('--title <title>', 'Human-readable local conversation alias')
446
- .option('--session <session-id>', 'Saved browser session to seed or resume the Work binding')
447
- .option('--conversation-url <url>', 'Explicit ChatGPT conversation URL to seed the binding')
448
- .option('--model <label>', 'Requested ChatGPT automation model', 'gpt-5.6')
449
- .option('--reasoning <level>', 'Reasoning level: medium|high|xhigh', 'high')
450
- .option('--tab-policy <policy>', 'Browser tab policy: auto|reuse|new', 'auto')
451
- .option('--timeout-ms <ms>', 'Assistant timeout in milliseconds')
452
- .option('--controller-authority-id <id>', 'Durable ControllerRound authority for source-mode continuation')
453
- .option('--relay-scope-id <id>', 'Durable ControllerRound relay scope paired with controller authority')
454
- .action((rawOpts: WorkChatgptContinueOptions) => {
455
- void runChatgptAction(async () => {
456
- const result = await runWorkChatgptContinuation({
457
- controllerHome: durableControllerHome(rawOpts.controllerHome),
458
- repoId: rawOpts.repoId,
459
- repoRoot: resolveRepoRoot(rawOpts.repo),
460
- workId: rawOpts.workId,
461
- prompt: rawOpts.prompt,
462
- controllerAuthorityId: rawOpts.controllerAuthorityId,
463
- relayScopeId: rawOpts.relayScopeId,
464
- title: rawOpts.title,
465
- browserSessionId: rawOpts.session,
466
- conversationUrl: rawOpts.conversationUrl,
467
- model: rawOpts.model,
468
- reasoning: parseAutomationReasoning(rawOpts.reasoning),
469
- tabPolicy: parseAutomationTabPolicy(rawOpts.tabPolicy),
470
- timeoutMs: parsePositiveInteger('timeout-ms', rawOpts.timeoutMs),
471
- });
472
- console.log(JSON.stringify({
473
- status: result.status,
474
- provider: result.provider,
475
- sessionId: result.browserSessionId,
476
- conversationUrl: result.conversationUrl,
477
- conversationId: result.conversationId,
478
- localAlias: result.localAlias,
479
- resumedFromBinding: result.resumedFromBinding,
480
- model: result.model,
481
- reasoning: result.reasoning,
482
- tabPolicy: result.tabPolicy,
483
- executionPreferenceVerified: result.executionPreferenceVerified,
484
- error: result.error,
485
- }, null, 2));
486
- });
487
- });
488
- chatgpt.addCommand(workContinue, { hidden: true });
489
-
490
- const roundOpen = new Command('round-open')
491
- .description('Internal: open and dispatch one ChatGPT ControllerRound from current source')
492
- .option('--repo <path>', 'Repository root used by the ChatGPT Browser delivery host', '.')
493
- .option('--controller-home <path>', 'Explicit Controller Home containing ControllerRound authority; defaults to canonical user-level Forge Controller Home')
494
- .requiredOption('--repo-id <repo-id>', 'Stable Forge repository id')
495
- .requiredOption('--work-id <work-id>', 'Forge Work id to dispatch')
496
- .requiredOption('--controller-id <id>', 'Authenticated ChatGPT controller id/principal identity')
497
- .requiredOption('--principal-id <id>', 'Authenticated ChatGPT principal id')
498
- .option('--controller-instance-id <id>', 'Source launcher instance identity')
499
- .option('--continuation-prompt <text>', 'Bounded source-mode continuation instruction')
500
- .option('--timeout-ms <ms>', 'Assistant dispatch timeout in milliseconds')
501
- .action((rawOpts: SourceRoundOpenOptions) => {
502
- void runChatgptAction(async () => {
503
- const result = await openChatgptControllerRoundFromSource({
504
- controllerHome: durableControllerHome(rawOpts.controllerHome),
505
- repoId: rawOpts.repoId,
506
- repoRoot: resolveRepoRoot(rawOpts.repo),
507
- workId: rawOpts.workId,
508
- controllerId: rawOpts.controllerId,
509
- principalId: rawOpts.principalId,
510
- controllerInstanceId: rawOpts.controllerInstanceId,
511
- continuationPrompt: rawOpts.continuationPrompt,
512
- timeoutMs: parsePositiveInteger('timeout-ms', rawOpts.timeoutMs),
513
- });
514
- console.log(JSON.stringify(result, null, 2));
515
- });
516
- });
517
- chatgpt.addCommand(roundOpen, { hidden: true });
518
-
519
- const roundContinue = new Command('round-continue')
520
- .description('Internal: close one claimed ChatGPT ControllerRound and immediately dispatch its successor from current source')
521
- .option('--repo <path>', 'Repository root used by the ChatGPT Browser delivery host', '.')
522
- .option('--controller-home <path>', 'Explicit Controller Home containing ControllerRound authority; defaults to canonical user-level Forge Controller Home')
523
- .requiredOption('--repo-id <repo-id>', 'Stable Forge repository id')
524
- .requiredOption('--work-id <work-id>', 'Currently claimed Forge Work id')
525
- .requiredOption('--controller-authority-id <id>', 'Exact durable ControllerRound authority')
526
- .requiredOption('--relay-scope-id <id>', 'Exact durable ControllerRound relay scope')
527
- .option('--reason <text>', 'Bounded semantic continuation reason')
528
- .option('--timeout-ms <ms>', 'Assistant dispatch timeout in milliseconds')
529
- .action((rawOpts: SourceRoundContinueOptions) => {
530
- void runChatgptAction(async () => {
531
- const result = await continueChatgptControllerRoundFromSource({
532
- controllerHome: durableControllerHome(rawOpts.controllerHome),
533
- repoId: rawOpts.repoId,
534
- repoRoot: resolveRepoRoot(rawOpts.repo),
535
- workId: rawOpts.workId,
536
- controllerAuthorityId: rawOpts.controllerAuthorityId,
537
- relayScopeId: rawOpts.relayScopeId,
538
- reason: rawOpts.reason,
539
- timeoutMs: parsePositiveInteger('timeout-ms', rawOpts.timeoutMs),
540
- });
541
- console.log(JSON.stringify(result, null, 2));
542
- });
543
- });
544
- chatgpt.addCommand(roundContinue, { hidden: true });
545
-
546
384
  const roundClose = new Command('round-close')
547
385
  .description('Internal: reconcile and close one claimed ChatGPT ControllerRound from current source without dispatching a successor')
548
386
  .option('--controller-home <path>', 'Explicit Controller Home containing ControllerRound authority; defaults to canonical user-level Forge Controller Home')
@@ -2,7 +2,7 @@
2
2
  * `forge doctor` — read-only readiness diagnostics.
3
3
  *
4
4
  * Built-in checks: PATH resolution, CLI version, per-host install detection,
5
- * Codex user-level trust state count, and target-aware CodeGraph readiness.
5
+ * Codex user-level trust state count, and current-source tool readiness.
6
6
  * Never mutates.
7
7
  */
8
8
 
@@ -11,7 +11,6 @@ import * as os from 'os';
11
11
  import * as path from 'path';
12
12
  import { spawnSync } from 'child_process';
13
13
  import { ALL_TARGETS } from '../installer/targets/registry';
14
- import { checkCodegraph, type CodegraphCheckResult } from '../tools/codegraph';
15
14
  import { CLI_VERSION } from './status';
16
15
  import { runSecurityScan, type SecurityScanReport } from './security';
17
16
  import { isOptIn, resolveHooksDir, resolveRepoRoot } from '../hook/runtime';
@@ -225,142 +224,6 @@ function checkCodexTrustState(): DoctorCheckResult {
225
224
  }
226
225
  }
227
226
 
228
- function doctorStatusForCodegraph(status: CodegraphCheckResult['status']): CheckStatus {
229
- if (status === 'present') return 'ok';
230
- if (status === 'missing') return 'fail';
231
- return 'warn';
232
- }
233
-
234
- function formatCodegraphDetail(result: CodegraphCheckResult): string {
235
- const raw = result.raw as Record<string, any>;
236
- const indexStatus = raw.project_index?.status ?? 'unknown';
237
- const codexMcpStatus = raw.mcp_hosts?.codex?.status ?? 'unknown';
238
- const claudeMcpStatus = raw.mcp_hosts?.claude?.status ?? 'unknown';
239
- const bits = [
240
- result.reason,
241
- `source=${result.resolution.source}`,
242
- `version=${result.resolution.version ?? 'unknown'}`,
243
- `codex-mcp=${codexMcpStatus}`,
244
- `claude-mcp=${claudeMcpStatus}`,
245
- `index=${indexStatus}`,
246
- ];
247
- if (result.resolution.globalFallbackUsed) bits.push('global-fallback=true');
248
- const remediation = codegraphRemediation(result);
249
- if (remediation) bits.push(`remediation=${remediation}`);
250
- return bits.join('; ');
251
- }
252
-
253
- function codegraphRemediation(result: CodegraphCheckResult): string | null {
254
- if (result.status === 'present') return null;
255
-
256
- const raw = result.raw as Record<string, any>;
257
- if (result.resolution.source === 'missing') {
258
- return String(raw.install_command ?? 'bash scripts/ensure-codegraph.sh');
259
- }
260
- if (result.resolution.globalFallbackUsed) {
261
- return String(raw.install_command ?? 'bun install');
262
- }
263
- if (raw.mcp_hosts?.codex?.status !== 'configured' || raw.mcp_hosts?.claude?.status !== 'configured') {
264
- return String(raw.mcp_install_command ?? 'forge tools configure codegraph --target both --location global');
265
- }
266
- if (raw.project_index?.status === 'not-initialized') {
267
- return String(raw.init_command ?? 'bash scripts/ensure-codegraph.sh --init');
268
- }
269
- if (raw.project_index?.status === 'stale') {
270
- return String(raw.sync_command ?? 'bash scripts/ensure-codegraph.sh --sync');
271
- }
272
- return String(raw.ensure_command ?? raw.sync_command ?? 'bash scripts/ensure-codegraph.sh --check');
273
- }
274
-
275
- interface CodegraphProbe {
276
- result?: CodegraphCheckResult;
277
- error?: Error;
278
- }
279
-
280
- function probeCodegraph(cwd: string): CodegraphProbe {
281
- try {
282
- return { result: checkCodegraph({ repoRoot: cwd, host: 'both' }) };
283
- } catch (err) {
284
- return { error: err as Error };
285
- }
286
- }
287
-
288
- function checkCodegraphReadiness(probe: CodegraphProbe): DoctorCheckResult {
289
- const id = 'codegraph-readiness';
290
- const describe = 'CodeGraph CLI, MCP, and project index readiness';
291
- if (probe.result) {
292
- return {
293
- id,
294
- describe,
295
- status: doctorStatusForCodegraph(probe.result.status),
296
- detail: formatCodegraphDetail(probe.result),
297
- };
298
- }
299
- return {
300
- id,
301
- describe,
302
- status: 'fail',
303
- detail: `error checking CodeGraph readiness: ${probe.error?.message ?? 'unknown error'}`,
304
- };
305
- }
306
-
307
- function checkCodegraphMcpHost(probe: CodegraphProbe, host: 'codex' | 'claude'): DoctorCheckResult {
308
- const id = `${host}-codegraph-mcp`;
309
- const describe = `${host === 'codex' ? 'Codex' : 'Claude Code'} CodeGraph MCP config`;
310
- if (!probe.result) {
311
- return {
312
- id,
313
- describe,
314
- status: 'fail',
315
- detail: `error checking CodeGraph MCP config: ${probe.error?.message ?? 'unknown error'}`,
316
- };
317
- }
318
-
319
- const raw = probe.result.raw as Record<string, any>;
320
- const entry = raw.mcp_hosts?.[host];
321
- if (entry?.status === 'configured') {
322
- return { id, describe, status: 'ok', detail: entry.reason ?? 'configured' };
323
- }
324
- return {
325
- id,
326
- describe,
327
- status: 'warn',
328
- detail: `${entry?.reason ?? 'missing'}; remediation=forge tools configure codegraph --target ${host} --location global`,
329
- };
330
- }
331
-
332
- function checkCodegraphIndex(probe: CodegraphProbe): DoctorCheckResult {
333
- const id = 'codegraph-index';
334
- const describe = 'CodeGraph project index';
335
- if (!probe.result) {
336
- return {
337
- id,
338
- describe,
339
- status: 'fail',
340
- detail: `error checking CodeGraph index: ${probe.error?.message ?? 'unknown error'}`,
341
- };
342
- }
343
-
344
- const raw = probe.result.raw as Record<string, any>;
345
- const indexStatus = raw.project_index?.status ?? 'unknown';
346
- const status: CheckStatus = indexStatus === 'up-to-date'
347
- ? 'ok'
348
- : indexStatus === 'stale' || indexStatus === 'unknown'
349
- ? 'warn'
350
- : 'fail';
351
- const remediation = indexStatus === 'not-initialized'
352
- ? raw.init_command
353
- : indexStatus === 'stale'
354
- ? raw.sync_command
355
- : raw.ensure_command;
356
- return {
357
- id,
358
- describe,
359
- status,
360
- detail: `index=${indexStatus}${remediation ? `; remediation=${remediation}` : ''}`,
361
- };
362
- }
363
-
364
227
  function checkSecurityConfig(report: SecurityScanReport): DoctorCheckResult {
365
228
  const id = 'security-config';
366
229
  const describe = 'Local hook and VS Code automatic task security scan';
@@ -451,7 +314,6 @@ function checkHookScriptDrift(cwd: string): DoctorCheckResult {
451
314
 
452
315
  export function runDoctor(cwd: string = process.cwd()): DoctorReport {
453
316
  const checks: DoctorCheckResult[] = [];
454
- const codegraphProbe = probeCodegraph(cwd);
455
317
  const securityReport = runSecurityScan({ cwd });
456
318
  checks.push(checkPath());
457
319
  checks.push(checkVersion());
@@ -462,10 +324,6 @@ export function runDoctor(cwd: string = process.cwd()): DoctorReport {
462
324
  }
463
325
  }
464
326
  checks.push(checkCodexTrustState());
465
- checks.push(checkCodegraphReadiness(codegraphProbe));
466
- checks.push(checkCodegraphMcpHost(codegraphProbe, 'codex'));
467
- checks.push(checkCodegraphMcpHost(codegraphProbe, 'claude'));
468
- checks.push(checkCodegraphIndex(codegraphProbe));
469
327
  checks.push(checkSecurityConfig(securityReport));
470
328
  checks.push(checkHookScriptDrift(cwd));
471
329
  checks.push(checkBootstrapLifecycle());