@moretea-labs/forge 1.7.2 → 1.8.1

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 (900) hide show
  1. package/AGENTS.md +121 -62
  2. package/CHANGELOG.md +40 -0
  3. package/CLAUDE.md +57 -62
  4. package/CONTRIBUTING.md +3 -2
  5. package/README.md +2 -2
  6. package/SKILL.md +0 -1
  7. package/THIRD_PARTY_NOTICES.md +5 -2
  8. package/adapters/browser/index.ts +2 -0
  9. package/adapters/chatgpt/browser-delivery-host.ts +77 -0
  10. package/adapters/chatgpt/browser-delivery-runtime.ts +1256 -0
  11. package/adapters/chatgpt/controller-binding-store.ts +134 -0
  12. package/adapters/chatgpt/controller-round-host.ts +68 -0
  13. package/adapters/chatgpt/controller-round-settlement-store.ts +99 -0
  14. package/adapters/chatgpt/provider-delivery.ts +340 -0
  15. package/adapters/chatgpt/work-conversation-binding-store.ts +218 -0
  16. package/adapters/chatgpt/wsl-bridge-delivery-host.ts +63 -0
  17. package/adapters/computer/chatgpt-extension-target.ts +463 -0
  18. package/adapters/computer/chatgpt-target-router.ts +103 -0
  19. package/adapters/computer/chrome-extension/background.js +385 -0
  20. package/adapters/computer/chrome-extension/content.js +378 -0
  21. package/adapters/computer/chrome-extension/core.js +24 -0
  22. package/adapters/computer/chrome-extension/manifest.json +30 -0
  23. package/adapters/computer/desktop-operator-contract.ts +7 -0
  24. package/adapters/computer/desktop-operator-discovery.ts +181 -0
  25. package/adapters/computer/desktop-operator-negotiation.ts +174 -0
  26. package/adapters/computer/desktop-operator-provider.ts +312 -0
  27. package/adapters/computer/index.ts +1 -0
  28. package/adapters/computer/interaction-target-authority.ts +1068 -0
  29. package/adapters/controller-process/binding-store.ts +34 -0
  30. package/adapters/controller-process/controller-host.ts +26 -0
  31. package/adapters/mcp/access-mode.ts +132 -0
  32. package/adapters/mcp/audit.ts +32 -0
  33. package/adapters/mcp/auth.ts +406 -0
  34. package/adapters/mcp/instructions.ts +37 -0
  35. package/adapters/mcp/legacy-context.ts +18 -0
  36. package/adapters/mcp/multi-repository.ts +421 -0
  37. package/adapters/mcp/oauth.ts +464 -0
  38. package/adapters/mcp/paths.ts +143 -0
  39. package/adapters/mcp/policy.ts +232 -0
  40. package/adapters/mcp/proxy-env.ts +62 -0
  41. package/adapters/mcp/readiness-projection.ts +24 -0
  42. package/adapters/mcp/redaction.ts +21 -0
  43. package/adapters/mcp/repo.ts +24 -0
  44. package/adapters/mcp/runtime-gateway/artifact-adapter.ts +52 -0
  45. package/adapters/mcp/runtime-gateway/automation-receipt-adapter.ts +87 -0
  46. package/adapters/mcp/runtime-gateway/bounded-result-runtime.ts +62 -0
  47. package/adapters/mcp/runtime-gateway/cognition-settlement.ts +201 -0
  48. package/adapters/mcp/runtime-gateway/context-adapter.ts +1167 -0
  49. package/adapters/mcp/runtime-gateway/context-pack-sidecar.ts +91 -0
  50. package/adapters/mcp/runtime-gateway/controller-authority-adapter.ts +206 -0
  51. package/adapters/mcp/runtime-gateway/core-capability-adapter.ts +258 -0
  52. package/adapters/mcp/runtime-gateway/engineering-preconditions.ts +130 -0
  53. package/adapters/mcp/runtime-gateway/engineering-tool-contract.ts +15 -0
  54. package/adapters/mcp/runtime-gateway/execution-control-adapter.ts +28 -0
  55. package/adapters/mcp/runtime-gateway/execution-tools.ts +173 -0
  56. package/adapters/mcp/runtime-gateway/filesystem-adapter.ts +38 -0
  57. package/adapters/mcp/runtime-gateway/gateway-execution-adapter.ts +412 -0
  58. package/adapters/mcp/runtime-gateway/legacy-ios-tool-adapter.ts +105 -0
  59. package/adapters/mcp/runtime-gateway/maintenance-adapter.ts +44 -0
  60. package/adapters/mcp/runtime-gateway/model-adapter.ts +63 -0
  61. package/adapters/mcp/runtime-gateway/persisted-check-process.ts +3 -0
  62. package/adapters/mcp/runtime-gateway/plugin-adapter.ts +380 -0
  63. package/adapters/mcp/runtime-gateway/process-tools.ts +457 -0
  64. package/adapters/mcp/runtime-gateway/protected-computer-adapter.ts +88 -0
  65. package/adapters/mcp/runtime-gateway/recovery-adapter.ts +285 -0
  66. package/adapters/mcp/runtime-gateway/recovery-client-adapter.ts +70 -0
  67. package/adapters/mcp/runtime-gateway/recovery-tool-contract.ts +99 -0
  68. package/adapters/mcp/runtime-gateway/repository-compat-adapter.ts +79 -0
  69. package/adapters/mcp/runtime-gateway/result-adapter.ts +114 -0
  70. package/adapters/mcp/runtime-gateway/router.ts +242 -0
  71. package/adapters/mcp/runtime-gateway/routing-policy.ts +499 -0
  72. package/adapters/mcp/runtime-gateway/runtime-observation-adapter.ts +1200 -0
  73. package/adapters/mcp/runtime-gateway/runtime-readiness-observation.ts +218 -0
  74. package/adapters/mcp/runtime-gateway/runtime-tool-definitions.ts +574 -0
  75. package/adapters/mcp/runtime-gateway/runtime-tool-shared.ts +27 -0
  76. package/adapters/mcp/runtime-gateway/runtime-tools.ts +78 -0
  77. package/adapters/mcp/runtime-gateway/scheduler-adapter.ts +187 -0
  78. package/adapters/mcp/runtime-gateway/shared-adapter.ts +45 -0
  79. package/adapters/mcp/runtime-gateway/status-inbox-adapter.ts +962 -0
  80. package/adapters/mcp/runtime-gateway/typescript-navigation-sidecar.ts +136 -0
  81. package/adapters/mcp/runtime-gateway/work-adapter.ts +325 -0
  82. package/adapters/mcp/runtime-gateway/work-controller-operations.ts +257 -0
  83. package/adapters/mcp/runtime-gateway/work-detail-projection.ts +60 -0
  84. package/adapters/mcp/runtime-gateway/work-input-wire-migration.ts +246 -0
  85. package/adapters/mcp/runtime-gateway/work-learning-operations.ts +145 -0
  86. package/adapters/mcp/runtime-gateway/work-list-projection.ts +38 -0
  87. package/adapters/mcp/runtime-gateway/work-plan-operations.ts +382 -0
  88. package/adapters/mcp/runtime-gateway/work-repair-adapter.ts +308 -0
  89. package/adapters/mcp/runtime-gateway/work-requirement-operations.ts +148 -0
  90. package/adapters/mcp/runtime-gateway/work-semantic-operations.ts +263 -0
  91. package/adapters/mcp/runtime-gateway/work-validation-reconciler.ts +1 -0
  92. package/adapters/mcp/runtime-gateway/work-workflow-operations.ts +113 -0
  93. package/adapters/mcp/runtime-gateway/workflow-supervisor-adapter.ts +156 -0
  94. package/adapters/mcp/server.ts +1092 -0
  95. package/adapters/mcp/setup.ts +789 -0
  96. package/adapters/mcp/tool-capability-cache.ts +87 -0
  97. package/adapters/mcp/tool-mapping/access-tools.ts +387 -0
  98. package/adapters/mcp/tool-mapping/legacy-tool-service.ts +5139 -0
  99. package/adapters/mcp/tool-mapping/post-finalize-work-attribution.ts +145 -0
  100. package/adapters/mcp/tool-mapping/repository-tools.ts +1682 -0
  101. package/adapters/mcp/tool-mapping/tools.ts +9 -0
  102. package/adapters/mcp/tool-mapping/umbrella-tools.ts +117 -0
  103. package/adapters/mcp/toolset-names.ts +79 -0
  104. package/adapters/mcp/toolset-selection.ts +41 -0
  105. package/adapters/mcp/toolset.ts +337 -0
  106. package/adapters/mcp/transports/http-observation.ts +365 -0
  107. package/adapters/mcp/transports/http.ts +933 -0
  108. package/adapters/mcp/transports/oauth-http.ts +322 -0
  109. package/adapters/mcp/transports/session-registry.ts +519 -0
  110. package/adapters/mcp/transports/stdio.ts +8 -0
  111. package/adapters/mcp/tunnels/openai-secure-tunnel.ts +223 -0
  112. package/adapters/mcp/types.ts +41 -0
  113. package/assets/AGENTS.md +2 -16
  114. package/assets/CLAUDE.md +2 -16
  115. package/assets/hooks/AGENTS.md +3 -14
  116. package/assets/hooks/CLAUDE.md +3 -14
  117. package/assets/hooks/hook-input.sh +9 -2
  118. package/assets/hooks/lib/workflow-state.sh +28 -10
  119. package/assets/hooks/prompt-guard.sh +63 -37
  120. package/assets/hooks/security-sentinel.sh +2 -1
  121. package/assets/hooks/session-start-context.sh +7 -5
  122. package/assets/hooks/stop-orchestrator.sh +13 -3
  123. package/assets/initializer-question-pack.v4.json +11 -7
  124. package/assets/partials/05-workflow.partial.md +18 -73
  125. package/assets/partials/07-footer.partial.md +1 -1
  126. package/assets/partials-agents/02-operating-mode.partial.md +1 -2
  127. package/assets/partials-agents/04-task-protocol.partial.md +14 -59
  128. package/assets/partials-agents/06-quality-safety.partial.md +11 -16
  129. package/assets/partials-agents/08-deep-docs.partial.md +1 -2
  130. package/assets/plan-map.json +11 -11
  131. package/assets/plugin-registry.v1.json +11 -3
  132. package/assets/plugin-trust-policy.v1.json +6 -0
  133. package/assets/recovery/ForgeRecovery.ps1 +100 -0
  134. package/assets/recovery/forge-wsl-rescue +271 -0
  135. package/assets/reference-configs/agentic-development-flow.md +25 -0
  136. package/assets/reference-configs/development-protocol.md +11 -15
  137. package/assets/reference-configs/document-generation.md +1 -1
  138. package/assets/reference-configs/global-working-rules.md +28 -1
  139. package/assets/reference-configs/harness-overview.md +22 -112
  140. package/assets/reference-configs/hook-operations.md +1 -1
  141. package/assets/reference-configs/sprint-contracts.md +2 -2
  142. package/assets/skill-version.json +2 -2
  143. package/assets/templates/helpers/architecture-event.ts +3 -34
  144. package/assets/templates/helpers/architecture-queue.sh +61 -10
  145. package/assets/templates/helpers/archive-workflow.sh +90 -180
  146. package/assets/templates/helpers/capability-config.ts +8 -11
  147. package/assets/templates/helpers/capability-resolver.ts +37 -19
  148. package/assets/templates/helpers/capture-plan.sh +2 -2
  149. package/assets/templates/helpers/check-architecture-sync.sh +1 -9
  150. package/assets/templates/helpers/check-task-sync.sh +82 -11
  151. package/assets/templates/helpers/check-task-workflow.sh +1 -3
  152. package/assets/templates/helpers/context-contract-sync.sh +1 -12
  153. package/assets/templates/helpers/contract-worktree.sh +26 -24
  154. package/assets/templates/helpers/ensure-task-workflow.sh +6 -8
  155. package/assets/templates/helpers/inspect-project-state.ts +1 -1
  156. package/assets/templates/helpers/migrate-project-template.sh +1 -1
  157. package/assets/templates/helpers/migrate-workflow-docs.ts +53 -239
  158. package/assets/templates/helpers/new-plan.sh +2 -2
  159. package/assets/templates/helpers/plan-to-todo.sh +3 -31
  160. package/assets/templates/helpers/sprint-backlog.sh +1 -1
  161. package/assets/templates/helpers/switch-plan.sh +1 -1
  162. package/assets/templates/helpers/workflow-contract.ts +1 -0
  163. package/assets/workflow-contract.v1.json +63 -171
  164. package/assets/workflows/xiaohongshu/xiaohongshu.collect-metrics.v1.draft.json +118 -0
  165. package/assets/workflows/xiaohongshu/xiaohongshu.publish-image-note.v1.draft.json +316 -0
  166. package/assets/workflows/xiaohongshu/xiaohongshu.publish-long-text.v1.draft.json +324 -0
  167. package/docs/architecture/CURRENT.md +233 -28
  168. package/docs/architecture/EVOLUTION.md +13 -0
  169. package/docs/architecture/decisions/20260801-controller-home-sqlite-state.md +2 -1
  170. package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +14 -5
  171. package/docs/architecture/decisions/20260823-immediate-controller-relay.md +6 -3
  172. package/docs/architecture/decisions/20260831-independent-windows-wsl-host-rescue.md +59 -0
  173. package/docs/architecture/decisions/20260904-ios-device-migration-baseline.md +120 -0
  174. package/docs/architecture/decisions/20260904-repository-runtime-data-boundary.md +42 -0
  175. package/docs/architecture/decisions/20260907-assistant-learning-loop.md +37 -0
  176. package/docs/architecture/decisions/20260907-controller-round-transition-policy.md +311 -0
  177. package/docs/architecture/decisions/20260907-maintenance-diagnosis-bounded-read.md +39 -0
  178. package/docs/architecture/decisions/20260916-workflow-supervisor-authority.md +249 -0
  179. package/docs/architecture/decisions/20260917-cognitive-memory-foundation.md +82 -0
  180. package/docs/architecture/decisions/20260918-stable-candidate-release-lifecycle.md +221 -0
  181. package/docs/architecture/decisions/20260919-autonomous-work-liveness.md +62 -0
  182. package/docs/architecture/decisions/20260924-thin-semantic-working-context.md +72 -0
  183. package/docs/architecture/decisions/20261001-supervisor-turn-authority.md +237 -0
  184. package/docs/architecture/decisions/20261005-forge-v3-desktop-client-boundary.md +77 -0
  185. package/docs/architecture/domains/verification.md +8 -0
  186. package/docs/architecture/domains/workflow-engine.md +7 -1
  187. package/docs/architecture/index.md +3 -3
  188. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +19 -8
  189. package/docs/architecture/requests/2026-09-04-computer-plugin-workflow-taxonomy.md +124 -0
  190. package/docs/forge-chatgpt-mcp-setup.md +5 -3
  191. package/docs/forge-plugin-management.md +20 -4
  192. package/docs/forge-runtime-self-healing-loop.md +2 -0
  193. package/docs/operations/benchmark-cross-version-freeze.md +38 -0
  194. package/docs/operations/controller-browser-plugin.md +3 -1
  195. package/docs/operations/controller-performance-and-502.md +17 -0
  196. package/docs/operations/controller-reliability-runbook.md +2 -2
  197. package/docs/operations/features.md +1 -1
  198. package/docs/operations/features.zh-CN.md +1 -1
  199. package/docs/operations/homebrew.md +2 -2
  200. package/docs/operations/mcp-tool-exposure.md +2 -0
  201. package/docs/operations/platform-support.md +16 -8
  202. package/docs/operations/platform-support.zh-CN.md +2 -2
  203. package/docs/operations/releasing.md +2 -0
  204. package/docs/operations/standalone-disaster-recovery.md +38 -5
  205. package/docs/operations/uu-remote-rescue.md +41 -0
  206. package/docs/operations/windows-wsl-host-rescue.md +133 -0
  207. package/docs/public-usage-guide.md +1 -1
  208. package/docs/public-usage-guide.zh-CN.md +1 -1
  209. package/docs/tutorials/01-install-and-start.md +1 -1
  210. package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
  211. package/docs/tutorials/02-connect-chatgpt.md +4 -4
  212. package/docs/tutorials/02-connect-chatgpt.zh-CN.md +4 -4
  213. package/docs/wiki/Implementation.md +1 -1
  214. package/package.json +46 -26
  215. package/packages/kernel/cognition/api/index.ts +6 -0
  216. package/packages/kernel/cognition/application/activation-service.ts +451 -0
  217. package/packages/kernel/cognition/application/consolidation-service.ts +185 -0
  218. package/packages/kernel/cognition/application/legacy-experience-adapter.ts +38 -0
  219. package/packages/kernel/cognition/application/memory-service.ts +64 -0
  220. package/packages/kernel/cognition/domain/learning.ts +106 -0
  221. package/packages/kernel/cognition/domain/memory.ts +254 -0
  222. package/packages/kernel/controller/api/index.ts +3 -0
  223. package/packages/kernel/controller/application/continuation-service.ts +281 -0
  224. package/packages/kernel/controller/application/controller-round-service.ts +41 -0
  225. package/packages/kernel/controller/application/controller-service.ts +30 -0
  226. package/packages/kernel/controller/domain/controller-round-transition-policy.ts +529 -0
  227. package/packages/kernel/controller/domain/controller-round.ts +110 -0
  228. package/packages/kernel/controller/domain/execution-quality.ts +135 -0
  229. package/packages/kernel/controller/domain/types.ts +56 -0
  230. package/packages/kernel/controller/index.ts +1 -0
  231. package/packages/kernel/controller/infrastructure/controller-binding-store.ts +84 -0
  232. package/packages/kernel/controller/infrastructure/controller-round-store.ts +1970 -0
  233. package/packages/kernel/controller/infrastructure/controller-session-store.ts +804 -0
  234. package/packages/kernel/controller/ports/controller-host.ts +18 -0
  235. package/packages/kernel/goal/api/index.ts +1 -0
  236. package/packages/kernel/goal/domain/types.ts +40 -0
  237. package/packages/kernel/goal/index.ts +1 -0
  238. package/packages/kernel/identity/api/index.ts +15 -0
  239. package/packages/kernel/identity/application/identity-service.ts +67 -0
  240. package/packages/kernel/identity/domain/activity-projection.ts +43 -0
  241. package/packages/kernel/identity/domain/capability-broker.ts +60 -0
  242. package/packages/kernel/identity/domain/grant.ts +72 -0
  243. package/packages/kernel/identity/domain/owned-resource.ts +116 -0
  244. package/packages/kernel/identity/domain/scope.ts +63 -0
  245. package/packages/kernel/identity/domain/semantic-sync.ts +81 -0
  246. package/packages/kernel/identity/domain/types.ts +44 -0
  247. package/packages/kernel/identity/domain/user-request.ts +93 -0
  248. package/packages/kernel/identity/domain/workspace.ts +56 -0
  249. package/packages/kernel/identity/index.ts +1 -0
  250. package/packages/kernel/identity/infrastructure/activity-projection-store.ts +77 -0
  251. package/packages/kernel/identity/infrastructure/capability-broker.ts +81 -0
  252. package/packages/kernel/identity/infrastructure/grant-store.ts +284 -0
  253. package/packages/kernel/identity/infrastructure/identity-store.ts +75 -0
  254. package/packages/kernel/identity/infrastructure/owned-resource-store.ts +259 -0
  255. package/packages/kernel/identity/infrastructure/user-request-store.ts +182 -0
  256. package/packages/kernel/memory/api/index.ts +5 -0
  257. package/packages/kernel/memory/application/experience-service.ts +118 -0
  258. package/packages/kernel/memory/application/outcome-service.ts +77 -0
  259. package/packages/kernel/memory/domain/experience.ts +103 -0
  260. package/packages/kernel/memory/domain/operational-prior.ts +92 -0
  261. package/packages/kernel/memory/index.ts +1 -0
  262. package/packages/kernel/scheduler/api/index.ts +4 -0
  263. package/packages/kernel/scheduler/application/eligibility.ts +252 -0
  264. package/packages/kernel/scheduler/application/schedule-service.ts +27 -0
  265. package/packages/kernel/scheduler/application/settlement.ts +182 -0
  266. package/packages/kernel/scheduler/domain/schedule.ts +236 -0
  267. package/packages/kernel/scheduler/index.ts +1 -0
  268. package/packages/kernel/scheduler/infrastructure/schedule-store.ts +805 -0
  269. package/packages/kernel/work/api/index.ts +16 -0
  270. package/packages/kernel/work/application/work-service.ts +123 -0
  271. package/packages/kernel/work/domain/check-receipt.ts +43 -0
  272. package/packages/kernel/work/domain/context-closure-receipt.ts +32 -0
  273. package/packages/kernel/work/domain/current-task-lineage.ts +104 -0
  274. package/packages/kernel/work/domain/engineering-contracts.ts +157 -0
  275. package/packages/kernel/work/domain/engineering-design.ts +286 -0
  276. package/packages/kernel/work/domain/engineering-profile.ts +238 -0
  277. package/packages/kernel/work/domain/evaluation-promotion-receipt.ts +186 -0
  278. package/packages/kernel/work/domain/execution-concurrency.ts +247 -0
  279. package/packages/kernel/work/domain/execution-snapshot.ts +2 -0
  280. package/packages/kernel/work/domain/implementation-review.ts +193 -0
  281. package/packages/kernel/work/domain/objective-graph.ts +119 -0
  282. package/packages/kernel/work/domain/project-engineering-contract.ts +224 -0
  283. package/packages/kernel/work/domain/repository-completion-receipt.ts +73 -0
  284. package/{src/runtime/control-plane/facade/work-state-machine.ts → packages/kernel/work/domain/state-machine.ts} +37 -66
  285. package/packages/kernel/work/domain/types.ts +534 -0
  286. package/packages/kernel/work/index.ts +1 -0
  287. package/packages/kernel/work/infrastructure/work-contract-store.ts +1967 -0
  288. package/packages/kernel/work/ports/work-contract-store.ts +21 -0
  289. package/packages/plugin-runtime/browser/index.ts +3 -0
  290. package/packages/plugin-runtime/browser/provider-registry.ts +110 -0
  291. package/packages/plugin-runtime/browser/runtime-contract.ts +150 -0
  292. package/packages/plugin-runtime/browser/session-authority.ts +62 -0
  293. package/packages/plugin-runtime/computer/chatgpt-identity.ts +24 -0
  294. package/packages/plugin-runtime/computer/conversation-target.ts +143 -0
  295. package/packages/plugin-runtime/computer/index.ts +8 -0
  296. package/packages/plugin-runtime/computer/provider-error.ts +26 -0
  297. package/packages/plugin-runtime/computer/provider-registration.ts +52 -0
  298. package/packages/plugin-runtime/computer/provider-registry.ts +63 -0
  299. package/packages/plugin-runtime/computer/provider.ts +19 -0
  300. package/packages/plugin-runtime/computer/target-authority.ts +215 -0
  301. package/packages/plugin-runtime/computer/target-persistence.ts +54 -0
  302. package/packages/plugin-runtime/external/index.ts +1 -0
  303. package/packages/plugin-runtime/external/unix-jsonl-transport.ts +581 -0
  304. package/packages/plugin-runtime/index.ts +3 -0
  305. package/packages/protocols/browser/index.ts +1 -0
  306. package/packages/protocols/browser/session.ts +98 -0
  307. package/packages/protocols/computer/contract.ts +225 -0
  308. package/packages/protocols/computer/index.ts +1 -0
  309. package/packages/protocols/failure/contract.ts +158 -0
  310. package/packages/protocols/failure/index.ts +1 -0
  311. package/packages/protocols/handoff/index.ts +1 -0
  312. package/packages/protocols/handoff/status.ts +22 -0
  313. package/packages/protocols/mcp/execution-context.ts +11 -0
  314. package/packages/protocols/mcp/index.ts +2 -0
  315. package/packages/protocols/mcp/tool-contract.ts +42 -0
  316. package/packages/workflow-runtime/api/index.ts +2 -0
  317. package/packages/workflow-runtime/application/interpreter.ts +342 -0
  318. package/packages/workflow-runtime/domain/workflow-asset.ts +223 -0
  319. package/packages/workflow-runtime/index.ts +1 -0
  320. package/scripts/activate-source-baseline.ts +7 -9
  321. package/scripts/assemble-template.ts +1 -1
  322. package/scripts/bootstrap-runtime-maintenance-recovery.sh +4 -1
  323. package/scripts/canary-chatgpt-provider-delivery.ts +97 -0
  324. package/scripts/canary-controller-semantic-wait.ts +183 -0
  325. package/scripts/canary-global-hook.sh +2 -2
  326. package/scripts/check-mcp-compatibility.ts +85 -7
  327. package/scripts/check-platform-support.mjs +28 -2
  328. package/scripts/check-public-docs.sh +1 -1
  329. package/scripts/check-repository-hygiene.mjs +92 -0
  330. package/scripts/check-runtime-architecture.mjs +1643 -127
  331. package/scripts/check-source-duplication.mjs +9 -1
  332. package/scripts/controller-ngrok-rotation.sh +5 -4
  333. package/scripts/create-project-dirs.sh +10 -74
  334. package/scripts/forge-local-recovery-helper.mjs +282 -0
  335. package/scripts/forge-uu-remote-rescue-helper.d.mts +31 -0
  336. package/scripts/forge-uu-remote-rescue-helper.mjs +409 -0
  337. package/scripts/forge-windows-host-recovery-helper.mjs +136 -0
  338. package/scripts/hook-shim.sh +2 -2
  339. package/scripts/init-project.sh +12 -70
  340. package/scripts/install-desktop-operator-registration.ts +4 -2
  341. package/scripts/install-independent-windows-wsl-recovery.ts +125 -0
  342. package/scripts/install-standalone-recovery.ts +122 -10
  343. package/scripts/install-uu-remote-rescue-registration.ts +74 -0
  344. package/scripts/install-windows-host-recovery-registration.ts +22 -0
  345. package/scripts/lib/controller-home-env.sh +6 -3
  346. package/scripts/lib/project-init-lib.sh +42 -582
  347. package/scripts/migrate-chatgpt-automation-schedules.ts +2 -2
  348. package/scripts/migrate-windows-wsl-controller-home.ts +306 -0
  349. package/scripts/open-source-audit-allowlist.txt +11 -1
  350. package/scripts/portability-bindings.mjs +70 -0
  351. package/scripts/run-bounded-command.mjs +60 -0
  352. package/scripts/run-bun-test-file.ts +22 -6
  353. package/scripts/run-governed-gate.ts +4 -2
  354. package/scripts/run-mobile-monitor-bridge.ts +0 -1
  355. package/scripts/smoke-control-plane-failure-domain.ts +94 -0
  356. package/scripts/smoke-mcp-http-runtime.ts +6 -1
  357. package/scripts/smoke-runtime-recovery.ts +13 -11
  358. package/scripts/smoke-schedule-engine.ts +24 -16
  359. package/scripts/smoke-unattended-transport-recovery.ts +223 -0
  360. package/scripts/smoke-user-request-continuation-restart.ts +232 -0
  361. package/scripts/smoke-workflow-supervisor-chrome-adapter.ts +92 -0
  362. package/scripts/smoke-workflow-supervisor-process-restart.ts +276 -0
  363. package/scripts/smoke-workflow-supervisor-restart-recovery.ts +150 -0
  364. package/scripts/smoke-workflow-supervisor.ts +103 -0
  365. package/scripts/test-governance.ts +51 -2
  366. package/scripts/verify-forge-runtime.sh +2 -1
  367. package/src/cli/agent-jobs/executor-health.ts +11 -34
  368. package/src/cli/agent-jobs/integration.ts +18 -49
  369. package/src/cli/agent-jobs/job-manager.ts +17 -4
  370. package/src/cli/chatgpt-browser/bind-server.ts +2 -1
  371. package/src/cli/chatgpt-browser/binding.ts +20 -10
  372. package/src/cli/chatgpt-browser/bridge-extension.ts +75 -0
  373. package/src/cli/chatgpt-browser/bridge-provider.ts +376 -11
  374. package/src/cli/chatgpt-browser/engine.ts +10 -11
  375. package/src/cli/chatgpt-browser/native-provider.ts +24 -83
  376. package/src/cli/chatgpt-browser/oracle-provider.ts +5 -3
  377. package/src/cli/chatgpt-browser/types.ts +1 -0
  378. package/src/cli/commands/bootstrap-control.ts +334 -0
  379. package/src/cli/commands/brain-assistant.ts +52 -0
  380. package/src/cli/commands/brain.ts +191 -40
  381. package/src/cli/commands/chatgpt.ts +32 -67
  382. package/src/cli/commands/computer.ts +437 -0
  383. package/src/cli/commands/doctor.ts +18 -1
  384. package/src/cli/commands/init-hook.ts +71 -61
  385. package/src/cli/commands/init.ts +3 -1
  386. package/src/cli/commands/mcp.ts +16 -10
  387. package/src/cli/commands/plugin.ts +38 -12
  388. package/src/cli/commands/recovery.ts +507 -80
  389. package/src/cli/commands/runtime.ts +12 -7
  390. package/src/cli/commands/setup-profile.ts +97 -39
  391. package/src/cli/commands/status.ts +2 -1
  392. package/src/cli/controller/check-runner.ts +500 -100
  393. package/src/cli/controller/completion-backlog.ts +3 -3
  394. package/src/cli/controller/completion-orchestrator.ts +4 -43
  395. package/src/cli/controller/completion-target.ts +3 -72
  396. package/src/cli/controller/context/source-materializer.ts +81 -100
  397. package/src/cli/controller/context/types.ts +7 -1
  398. package/src/cli/controller/context-pack.ts +28 -6
  399. package/src/cli/controller/execution-completion.ts +4 -7
  400. package/src/cli/controller/execution-policy.ts +36 -153
  401. package/src/cli/controller/governance.ts +2 -3
  402. package/src/cli/controller/issue-store.ts +4 -99
  403. package/src/cli/controller/launch-agents.ts +59 -18
  404. package/src/cli/controller/operational-plan.ts +24 -51
  405. package/src/cli/controller/runtime-config.ts +5 -1
  406. package/src/cli/controller/stuck-state-migration.ts +2 -3
  407. package/src/cli/controller/systemd-user.ts +148 -0
  408. package/src/cli/controller/types.ts +10 -70
  409. package/src/cli/controller/worklog.ts +67 -13
  410. package/src/cli/editing/edit-operation-contract.ts +92 -0
  411. package/src/cli/editing/edit-session.ts +290 -20
  412. package/src/cli/github/plugin.ts +17 -12
  413. package/src/cli/hook/route-registry.ts +3 -5
  414. package/src/cli/hook/runtime.ts +49 -3
  415. package/src/cli/index.ts +3 -0
  416. package/src/cli/local-bridge/connector-freshness.ts +2 -2
  417. package/src/cli/local-bridge/console-automations.ts +20 -15
  418. package/src/cli/local-bridge/console-view-models.ts +3 -12
  419. package/src/cli/local-bridge/facade-api.ts +105 -205
  420. package/src/cli/local-bridge/job-store.ts +1 -1
  421. package/src/cli/local-bridge/server.ts +48 -174
  422. package/src/cli/local-bridge/types.ts +0 -1
  423. package/src/cli/mcp/access-mode.ts +2 -132
  424. package/src/cli/mcp/access-tools.ts +2 -387
  425. package/src/cli/mcp/audit.ts +2 -32
  426. package/src/cli/mcp/auth.ts +2 -404
  427. package/src/cli/mcp/instructions.ts +2 -34
  428. package/src/cli/mcp/legacy-context.ts +2 -16
  429. package/src/cli/mcp/legacy-tool-service.ts +2 -5308
  430. package/src/cli/mcp/multi-repository.ts +2 -436
  431. package/src/cli/mcp/oauth-client-retirement.ts +74 -0
  432. package/src/cli/mcp/oauth.ts +2 -375
  433. package/src/cli/mcp/openai-secure-tunnel.ts +2 -0
  434. package/src/cli/mcp/paths.ts +2 -140
  435. package/src/cli/mcp/policy.ts +2 -232
  436. package/src/cli/mcp/post-finalize-work-attribution.ts +2 -150
  437. package/src/cli/mcp/proxy-env.ts +2 -62
  438. package/src/cli/mcp/readiness-projection.ts +2 -24
  439. package/src/cli/mcp/redaction.ts +2 -21
  440. package/src/cli/mcp/repo.ts +2 -24
  441. package/src/cli/mcp/repository-tools.ts +2 -1613
  442. package/src/cli/mcp/server.ts +2 -951
  443. package/src/cli/mcp/setup.ts +2 -737
  444. package/src/cli/mcp/tool-capability-cache.ts +2 -87
  445. package/src/cli/mcp/tool-contract.ts +2 -14
  446. package/src/cli/mcp/tools.ts +2 -9
  447. package/src/cli/mcp/toolset-names.ts +2 -70
  448. package/src/cli/mcp/toolset-selection.ts +2 -41
  449. package/src/cli/mcp/toolset.ts +2 -336
  450. package/src/cli/mcp/transports/AGENTS.md +1 -10
  451. package/src/cli/mcp/transports/CLAUDE.md +1 -10
  452. package/src/cli/mcp/transports/http.ts +2 -1414
  453. package/src/cli/mcp/transports/session-registry.ts +2 -490
  454. package/src/cli/mcp/transports/stdio.ts +2 -8
  455. package/src/cli/mcp/types.ts +2 -41
  456. package/src/cli/mcp/umbrella-tools.ts +2 -117
  457. package/src/cli/repositories/command-executor.ts +91 -39
  458. package/src/cli/repositories/command-scope.ts +139 -4
  459. package/src/cli/repositories/controller-home.ts +167 -1
  460. package/src/cli/repositories/ephemeral-workspace.ts +20 -30
  461. package/src/cli/repositories/git-command-executor.ts +2 -2
  462. package/src/cli/repositories/identity.ts +13 -0
  463. package/src/cli/repositories/registry.ts +145 -60
  464. package/src/cli/repositories/repository-snapshot.ts +53 -7
  465. package/src/cli/repositories/runtime-storage.ts +27 -2
  466. package/src/cli/repositories/safe-patch.ts +34 -38
  467. package/src/cli/repositories/selected-path-actions.ts +22 -2
  468. package/src/cli/repositories/structured-git.ts +167 -27
  469. package/src/cli/repository/session-cache.ts +92 -6
  470. package/src/cli/runtime/helper-runner.ts +7 -0
  471. package/src/cli/runtime-invocation.ts +8 -1
  472. package/src/cli/tools/codegraph.ts +44 -25
  473. package/src/core/adoption/manifest-templates.ts +1 -1
  474. package/src/core/adoption/plan.ts +3 -26
  475. package/src/core/adoption/workflow-contract-plan.ts +17 -9
  476. package/src/effects/process-runner.ts +8 -14
  477. package/src/runtime/context/assistant-context.ts +167 -0
  478. package/src/runtime/context/assistant-work-context.ts +209 -0
  479. package/src/runtime/context/automatic-learning.ts +565 -0
  480. package/src/runtime/context/codegraph-cache-boundary.ts +255 -0
  481. package/src/runtime/context/codegraph-read-provider.ts +55 -22
  482. package/src/runtime/context/codegraph-sidecar.cjs +8 -1
  483. package/src/runtime/context/cognitive-attention.ts +173 -0
  484. package/src/runtime/context/cognitive-skill-canary.ts +158 -0
  485. package/src/runtime/context/context-closure.ts +305 -0
  486. package/src/runtime/context/context-pack-process.ts +103 -0
  487. package/src/runtime/context/context-plane.ts +203 -0
  488. package/src/runtime/context/direct-controller-learning.ts +298 -0
  489. package/src/runtime/context/project-engineering-contract.ts +60 -0
  490. package/src/runtime/context/semantic-navigation-contract.ts +9 -0
  491. package/src/runtime/context/semantic-navigation.ts +6 -34
  492. package/src/runtime/context/typescript-navigation-process.ts +145 -0
  493. package/src/runtime/context/typescript-navigation.ts +89 -3
  494. package/src/runtime/control-plane/bootstrap/capability-provider.ts +74 -0
  495. package/src/runtime/control-plane/bootstrap/control-api.ts +57 -0
  496. package/src/runtime/control-plane/bootstrap/index.ts +5 -0
  497. package/src/runtime/control-plane/bootstrap/state-machine.ts +141 -0
  498. package/src/runtime/control-plane/bootstrap/store.ts +21 -0
  499. package/src/runtime/control-plane/bootstrap/types.ts +87 -0
  500. package/src/runtime/control-plane/cleanup-artifact-retention.ts +531 -0
  501. package/src/runtime/control-plane/codegraph-cache-retention.ts +164 -0
  502. package/src/runtime/control-plane/concurrency/work-execution-concurrency.ts +282 -0
  503. package/src/runtime/control-plane/execution/controller-authority-recovery.ts +380 -0
  504. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +113 -16
  505. package/src/runtime/control-plane/execution/execution-identity.ts +23 -3
  506. package/src/runtime/control-plane/execution/implementation-review-content.ts +95 -0
  507. package/src/runtime/control-plane/execution/repository-work-attribution.ts +7 -30
  508. package/src/runtime/control-plane/execution/retained-work-resume.ts +439 -102
  509. package/src/runtime/control-plane/execution/session-store.ts +31 -1
  510. package/src/runtime/control-plane/execution/validation.ts +34 -11
  511. package/src/runtime/control-plane/execution/work-authority-reconciler.ts +87 -0
  512. package/src/runtime/control-plane/execution/work-check-evidence.ts +137 -0
  513. package/src/runtime/control-plane/execution/work-completion-authority.ts +31 -44
  514. package/src/runtime/control-plane/execution/work-delivery-service.ts +497 -0
  515. package/src/runtime/control-plane/execution/work-evidence-policy.ts +46 -53
  516. package/src/runtime/control-plane/execution/work-execution-support.ts +85 -164
  517. package/src/runtime/control-plane/execution/work-handle-authority.ts +349 -73
  518. package/src/runtime/control-plane/execution/work-handle-store.ts +55 -2
  519. package/src/runtime/control-plane/execution/work-head-settlement.ts +108 -0
  520. package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +173 -28
  521. package/src/runtime/control-plane/execution/work-operation-service.ts +92 -40
  522. package/src/runtime/control-plane/execution/work-preparation-service.ts +145 -269
  523. package/src/runtime/control-plane/execution/work-remote-delivery.ts +2 -3
  524. package/src/runtime/control-plane/execution/work-revision-diff.ts +39 -0
  525. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +543 -225
  526. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +59 -45
  527. package/src/runtime/control-plane/execution/work-verification-context.ts +1 -1
  528. package/src/runtime/control-plane/execution/work-verification-service.ts +662 -52
  529. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +205 -16
  530. package/src/runtime/control-plane/facade/capability-registry.ts +380 -44
  531. package/src/runtime/control-plane/facade/check-normalization.ts +3 -9
  532. package/src/runtime/control-plane/facade/codex-delegation.ts +10 -11
  533. package/src/runtime/control-plane/facade/controller-connection.ts +135 -0
  534. package/src/runtime/control-plane/facade/controller-session-store.ts +2 -488
  535. package/src/runtime/control-plane/facade/goal-workloop-access.ts +6 -22
  536. package/src/runtime/control-plane/facade/goal-workloop.ts +565 -1202
  537. package/src/runtime/control-plane/facade/handoff-inbox-application.ts +145 -0
  538. package/src/runtime/control-plane/facade/handoff-inbox-store.ts +266 -52
  539. package/src/runtime/control-plane/facade/index.ts +4 -3
  540. package/src/runtime/control-plane/facade/operation-digest.ts +34 -73
  541. package/src/runtime/control-plane/facade/plan-contract-store.ts +671 -245
  542. package/src/runtime/control-plane/facade/policy-gate.ts +0 -23
  543. package/src/runtime/control-plane/facade/repository-work-admission.ts +31 -23
  544. package/src/runtime/control-plane/facade/requirement-authority.ts +121 -0
  545. package/src/runtime/control-plane/facade/requirement-board.ts +9 -4
  546. package/src/runtime/control-plane/facade/rh-work-operation-contract.ts +85 -0
  547. package/src/runtime/control-plane/facade/self-healing-loop.ts +18 -53
  548. package/src/runtime/control-plane/facade/semantic-admission.ts +8 -16
  549. package/src/runtime/control-plane/facade/suggested-actions.ts +15 -15
  550. package/src/runtime/control-plane/facade/types.ts +218 -620
  551. package/src/runtime/control-plane/facade/work-continuation.ts +8 -8
  552. package/src/runtime/control-plane/facade/work-contract-store.ts +2 -1043
  553. package/src/runtime/control-plane/generated-cache-retention.ts +336 -19
  554. package/src/runtime/control-plane/global-scheduler/autonomous-continuation.ts +248 -0
  555. package/src/runtime/control-plane/global-scheduler/durable-admission.ts +13 -2
  556. package/src/runtime/control-plane/global-scheduler/maintenance.ts +274 -84
  557. package/src/runtime/control-plane/global-scheduler/periodic-cleanup-entry.ts +55 -0
  558. package/src/runtime/control-plane/global-scheduler/periodic-cleanup-process.ts +98 -0
  559. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -2
  560. package/src/runtime/control-plane/global-scheduler/scheduler-worker-entry.ts +10 -0
  561. package/src/runtime/control-plane/global-scheduler/scheduler.ts +227 -109
  562. package/src/runtime/control-plane/global-scheduler/wake-signal.ts +42 -2
  563. package/src/runtime/control-plane/global-scheduler/worker-launch.ts +18 -6
  564. package/src/runtime/control-plane/governance/access-policy.ts +19 -2
  565. package/src/runtime/control-plane/governance/authorization.ts +20 -3
  566. package/src/runtime/control-plane/launcher/chatgpt-round-continuation.ts +160 -0
  567. package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +2 -177
  568. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +139 -670
  569. package/src/runtime/control-plane/launcher/local-conversation-controller.ts +238 -0
  570. package/src/runtime/control-plane/launcher/provider-mcp-bootstrap.ts +25 -6
  571. package/src/runtime/control-plane/launcher/thin-launcher.ts +96 -194
  572. package/src/runtime/control-plane/lifecycle-retention-metrics.ts +60 -0
  573. package/src/runtime/control-plane/persistence/cognition-store.ts +820 -0
  574. package/src/runtime/control-plane/persistence/experience-store.ts +302 -0
  575. package/src/runtime/control-plane/persistence/operational-prior-store.ts +348 -0
  576. package/src/runtime/control-plane/persistence/requirement-store.ts +230 -80
  577. package/src/runtime/control-plane/persistence/sqlite-store.ts +654 -78
  578. package/src/runtime/control-plane/persistence/workflow-content-store.ts +98 -0
  579. package/src/runtime/control-plane/persistence/workflow-registry-store.ts +186 -0
  580. package/src/runtime/control-plane/persistence/workflow-run-store.ts +123 -0
  581. package/src/runtime/control-plane/release-retention.ts +154 -26
  582. package/src/runtime/control-plane/repository-namespace-retention.ts +208 -0
  583. package/src/runtime/control-plane/runtime-cleanup.ts +844 -38
  584. package/src/runtime/control-plane/runtime-generation.ts +6 -0
  585. package/src/runtime/control-plane/workspace/project-onboarding.ts +80 -0
  586. package/src/runtime/control-plane/workspace/semantic-sync-service.ts +479 -0
  587. package/src/runtime/control-plane/workspace/workspace-store.ts +249 -0
  588. package/src/runtime/diagnostics/incident-repair.ts +573 -0
  589. package/src/runtime/diagnostics/mcp-timing.ts +239 -6
  590. package/src/runtime/diagnostics/performance.ts +6 -14
  591. package/src/runtime/diagnostics/read-only-tool.ts +1 -1
  592. package/src/runtime/evidence/artifact-store.ts +216 -35
  593. package/src/runtime/evidence/evidence-store.ts +112 -8
  594. package/src/runtime/evidence/operational-shadow.ts +38 -0
  595. package/src/runtime/evidence/output-handle-index.ts +225 -0
  596. package/src/runtime/evidence/process-check-receipt.ts +5 -43
  597. package/src/runtime/evidence/result-store.ts +158 -44
  598. package/src/runtime/evidence/sensitive-output.ts +4 -4
  599. package/src/runtime/execution/jobs/receipt-recovery.ts +1 -1
  600. package/src/runtime/execution/jobs/store.ts +124 -6
  601. package/src/runtime/execution/managed-workspace.ts +112 -5
  602. package/src/runtime/execution/process-runtime/canary.ts +19 -5
  603. package/src/runtime/execution/process-runtime/check-classification.ts +48 -0
  604. package/src/runtime/execution/process-runtime/check-facade.ts +24 -10
  605. package/src/runtime/execution/process-runtime/check-receipt.ts +1 -1
  606. package/src/runtime/execution/process-runtime/check-result-retention.ts +132 -0
  607. package/src/runtime/execution/process-runtime/check-result.ts +177 -2
  608. package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +58 -9
  609. package/src/runtime/execution/process-runtime/check-storage.ts +187 -0
  610. package/src/runtime/execution/process-runtime/command-facade.ts +117 -114
  611. package/src/runtime/execution/process-runtime/gc.ts +15 -2
  612. package/src/runtime/execution/process-runtime/handle-index.ts +176 -0
  613. package/src/runtime/execution/process-runtime/host-command-lane.ts +139 -0
  614. package/src/runtime/execution/process-runtime/index.ts +4 -0
  615. package/src/runtime/execution/process-runtime/interactive-admission.ts +2 -1
  616. package/src/runtime/execution/process-runtime/lightweight-managed.ts +283 -73
  617. package/src/runtime/execution/process-runtime/persisted-check.ts +130 -23
  618. package/src/runtime/execution/process-runtime/process-runner-entry.ts +47 -5
  619. package/src/runtime/execution/process-runtime/process-scope.ts +160 -0
  620. package/src/runtime/execution/process-runtime/resource-claims.ts +125 -64
  621. package/src/runtime/execution/process-runtime/runtime.ts +167 -17
  622. package/src/runtime/execution/process-runtime/store.ts +30 -2
  623. package/src/runtime/execution/process-runtime/types.ts +27 -0
  624. package/src/runtime/execution/workers/executor.ts +18 -19
  625. package/src/runtime/execution/workers/worker-entry.ts +1 -1
  626. package/src/runtime/gateway/mcp/execution-tools.ts +2 -207
  627. package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +2 -61
  628. package/src/runtime/gateway/mcp/persisted-check-process.ts +2 -3
  629. package/src/runtime/gateway/mcp/process-tools.ts +2 -289
  630. package/src/runtime/gateway/mcp/router.ts +2 -1125
  631. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +2 -565
  632. package/src/runtime/gateway/mcp/runtime-tools.ts +2 -6655
  633. package/src/runtime/gateway/mcp/work-validation-reconciler.ts +2 -1
  634. package/src/runtime/maintenance/cleanup.ts +38 -24
  635. package/src/runtime/platform/browser-product-discovery.ts +174 -0
  636. package/src/runtime/platform/computer-platform.ts +14 -0
  637. package/src/runtime/platform/executable-discovery.ts +54 -0
  638. package/src/runtime/platform/fetch-http-server.ts +90 -0
  639. package/src/runtime/platform/service-inventory.ts +130 -0
  640. package/src/runtime/platform/service-manager.ts +146 -0
  641. package/src/runtime/platform/windows-host-discovery.ts +118 -0
  642. package/src/runtime/platform/windows-recovery-deployment.ts +67 -0
  643. package/src/runtime/plugins/action-application.ts +192 -0
  644. package/src/runtime/plugins/app-store-connect-adapter.ts +47 -35
  645. package/src/runtime/plugins/browser-adapter.ts +898 -135
  646. package/src/runtime/plugins/browser-automation-service.ts +33 -34
  647. package/src/runtime/plugins/browser-macos-bridge.ts +386 -46
  648. package/src/runtime/plugins/browser-manifest-surface.ts +75 -17
  649. package/src/runtime/plugins/browser-native-session-service.ts +64 -14
  650. package/src/runtime/plugins/browser-provider-registry.ts +2 -109
  651. package/src/runtime/plugins/browser-registration.ts +32 -0
  652. package/src/runtime/plugins/browser-runtime-contract.ts +2 -154
  653. package/src/runtime/plugins/browser-runtime.ts +55 -10
  654. package/src/runtime/plugins/browser-session-authority.ts +101 -291
  655. package/src/runtime/plugins/browser-session-legacy-migration.ts +203 -0
  656. package/src/runtime/plugins/browser-session-store.ts +243 -80
  657. package/src/runtime/plugins/browser-session-types.ts +2 -98
  658. package/src/runtime/plugins/capability-authorization-grants.ts +272 -59
  659. package/src/runtime/plugins/catalog-trust.ts +82 -0
  660. package/src/runtime/plugins/computer-chatgpt-browser-adapter-installer.ts +219 -0
  661. package/src/runtime/plugins/computer-chatgpt-macos-target.ts +891 -0
  662. package/src/runtime/plugins/computer-registration.ts +1050 -0
  663. package/src/runtime/plugins/config-store.ts +119 -0
  664. package/src/runtime/plugins/desktop-operator-external-policy.ts +964 -0
  665. package/src/runtime/plugins/desktop-operator-registration.ts +123 -12
  666. package/src/runtime/plugins/errors.ts +8 -1
  667. package/src/runtime/plugins/external-adapter.ts +82 -323
  668. package/src/runtime/plugins/external-provider-policy.ts +48 -0
  669. package/src/runtime/plugins/external-registration.ts +30 -2
  670. package/src/runtime/plugins/external-unix-socket-probe.cjs +9 -3
  671. package/src/runtime/plugins/external-unix-socket.ts +64 -193
  672. package/src/runtime/plugins/first-party-external-registration.ts +163 -0
  673. package/src/runtime/plugins/first-party-registry.ts +3 -1
  674. package/src/runtime/plugins/github-adapter.ts +1 -2
  675. package/src/runtime/plugins/gmail-adapter.ts +29 -8
  676. package/src/runtime/plugins/google-calendar-adapter.ts +8 -8
  677. package/src/runtime/plugins/google-shared.ts +45 -53
  678. package/src/runtime/plugins/google-tasks-adapter.ts +8 -8
  679. package/src/runtime/plugins/ios-adapter.ts +2 -3
  680. package/src/runtime/plugins/lightweight-action.ts +208 -2
  681. package/src/runtime/plugins/local-system-adapter.ts +192 -2
  682. package/src/runtime/plugins/macos-capability-broker.ts +15 -105
  683. package/src/runtime/plugins/managed-process-adapter.ts +12 -5
  684. package/src/runtime/plugins/plugin-action-sidecar.ts +17 -13
  685. package/src/runtime/plugins/plugin-management-adapter.ts +1 -1
  686. package/src/runtime/plugins/resend-adapter.ts +15 -24
  687. package/src/runtime/plugins/store.ts +1003 -387
  688. package/src/runtime/plugins/types.ts +28 -1
  689. package/src/runtime/plugins/uu-remote-rescue-registration.ts +155 -0
  690. package/src/runtime/plugins/windows-host-recovery-install.ts +68 -0
  691. package/src/runtime/plugins/windows-host-recovery-registration.ts +85 -0
  692. package/src/runtime/plugins/xiaohongshu-publish.ts +102 -430
  693. package/src/runtime/projections/controller-context.ts +12 -6
  694. package/src/runtime/projections/git-status-sampler.ts +73 -22
  695. package/src/runtime/projections/invalidation.ts +7 -3
  696. package/src/runtime/projections/materialized-view.ts +93 -43
  697. package/src/runtime/recovery/actions.ts +3 -3
  698. package/src/runtime/recovery/capability-action-application.ts +229 -0
  699. package/src/runtime/recovery/index.ts +3 -0
  700. package/src/runtime/recovery/lifecycle-inventory.ts +338 -0
  701. package/src/runtime/recovery/local-jobs-repair.ts +14 -14
  702. package/src/runtime/recovery/maintenance-executor.ts +701 -168
  703. package/src/runtime/recovery/quarantine-retention.ts +256 -0
  704. package/src/runtime/recovery/store.ts +29 -11
  705. package/src/runtime/release/identity.ts +6 -0
  706. package/src/runtime/release/release-coordinator.ts +296 -0
  707. package/src/runtime/release/release-session.ts +716 -0
  708. package/src/runtime/release/release-state-migration.ts +25 -0
  709. package/src/runtime/resources/leases/store.ts +56 -25
  710. package/src/runtime/root/active-execution-power-assertion.ts +139 -0
  711. package/src/runtime/root/assistant-learning-loop.ts +45 -0
  712. package/src/runtime/root/browser-session-composition.ts +59 -0
  713. package/src/runtime/root/computer-composition.ts +376 -0
  714. package/src/runtime/root/computer-target-composition.ts +16 -0
  715. package/src/runtime/root/computer-target-persistence.ts +39 -0
  716. package/src/runtime/root/controller-progression-composition.ts +192 -0
  717. package/src/runtime/root/controller-round-composition.ts +126 -0
  718. package/src/runtime/root/controller-services.ts +2 -0
  719. package/src/runtime/root/deployment-topology.ts +106 -0
  720. package/src/runtime/root/entry.ts +8 -6
  721. package/src/runtime/root/gateway-adapter.ts +3 -3
  722. package/src/runtime/root/known-good-recovery.ts +184 -0
  723. package/src/runtime/root/local-bridge.ts +5 -3
  724. package/src/runtime/root/mcp-transport.ts +116 -23
  725. package/src/runtime/root/ownership.ts +261 -9
  726. package/src/runtime/root/package-connector-service.ts +212 -74
  727. package/src/runtime/root/package-runtime-release.ts +199 -33
  728. package/src/runtime/root/package-runtime-service.ts +77 -108
  729. package/src/runtime/root/release-execution-canary.ts +103 -0
  730. package/src/runtime/root/release-loader.ts +150 -0
  731. package/src/runtime/root/release-manifest.ts +185 -7
  732. package/src/runtime/root/release-materialize.ts +474 -31
  733. package/src/runtime/root/release-store.ts +425 -37
  734. package/src/runtime/root/runtime-lane.ts +191 -0
  735. package/src/runtime/root/runtime.ts +379 -32
  736. package/src/runtime/root/scheduled-controller-composition.ts +76 -0
  737. package/src/runtime/root/scheduler.ts +12 -4
  738. package/src/runtime/root/service-runner.ts +3 -3
  739. package/src/runtime/root/service.ts +73 -45
  740. package/src/runtime/root/status.ts +49 -0
  741. package/src/runtime/root/types.ts +55 -3
  742. package/src/runtime/root/workflow-supervisor-composition.ts +493 -0
  743. package/src/runtime/root/workflow-supervisor-runtime.ts +209 -0
  744. package/src/runtime/root/write-fence.ts +50 -2
  745. package/src/runtime/safe-tooling/google-credential-store.ts +76 -21
  746. package/src/runtime/safe-tooling/google-oauth-broker.ts +25 -7
  747. package/src/runtime/safe-tooling/workspace-auth.ts +1 -1
  748. package/src/runtime/shared/bounded-child-supervisor.ts +9 -1
  749. package/src/runtime/shared/local-bridge-surface.ts +1 -1
  750. package/src/runtime/shared/process-environment.ts +36 -10
  751. package/src/runtime/shared/response-budget.ts +1 -3
  752. package/src/runtime/shared/storage-capacity.ts +68 -0
  753. package/src/runtime/standalone-recovery/controller-home-migration.ts +1108 -0
  754. package/src/runtime/standalone-recovery/core.ts +4609 -495
  755. package/src/runtime/standalone-recovery/entry.ts +642 -81
  756. package/src/runtime/standalone-recovery/independent-host-rescue.ts +172 -0
  757. package/src/runtime/standalone-recovery/installer.ts +399 -177
  758. package/src/runtime/standalone-recovery/mcp-server.ts +79 -0
  759. package/src/runtime/standalone-recovery/mutation-identity-contract.ts +21 -0
  760. package/src/runtime/standalone-recovery/operation-lock.ts +160 -0
  761. package/src/runtime/standalone-recovery/performance.ts +173 -0
  762. package/src/runtime/standalone-recovery/release.ts +58 -5
  763. package/src/runtime/standalone-recovery/service-labels.ts +5 -2
  764. package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +5 -2
  765. package/src/runtime/watchdog/workflow-watchdog.ts +1 -1
  766. package/src/runtime/workflow/schedules/browser-probe.ts +17 -6
  767. package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +11 -4
  768. package/src/runtime/workflow/schedules/engine.ts +298 -484
  769. package/src/runtime/workflow/schedules/pending-activation.ts +1 -1
  770. package/src/runtime/workflow/schedules/settlement.ts +2 -191
  771. package/src/runtime/workflow/schedules/store.ts +2 -607
  772. package/src/runtime/workflow/schedules/types.ts +2 -127
  773. package/src/runtime/workflow/schedules/work-continuation.ts +220 -16
  774. package/src/runtime/workflows/first-party/xiaohongshu.ts +122 -0
  775. package/src/runtime/workflows/runtime.ts +482 -0
  776. package/src/testing/test-governance.ts +95 -30
  777. package/supervisor/chatgpt-conversation.ts +23 -0
  778. package/supervisor/client.ts +201 -0
  779. package/supervisor/control-plane.ts +868 -0
  780. package/supervisor/entry.ts +15 -0
  781. package/supervisor/forge-validators.ts +80 -0
  782. package/supervisor/index.ts +5 -0
  783. package/supervisor/native-browser-adapter.ts +786 -0
  784. package/supervisor/native-messaging/host.ts +39 -0
  785. package/supervisor/native-messaging/manifest.ts +26 -0
  786. package/supervisor/native-messaging/protocol.ts +27 -0
  787. package/supervisor/paths.ts +18 -0
  788. package/supervisor/protocol.ts +202 -0
  789. package/supervisor/server.ts +404 -0
  790. package/supervisor/store.ts +1451 -0
  791. package/supervisor/tsconfig.json +8 -0
  792. package/supervisor/types.ts +255 -0
  793. package/assets/templates/helpers/archive-architecture-request.sh +0 -244
  794. package/docs/architecture/history/README.md +0 -7
  795. package/docs/architecture/history/chatgpt-handoff-facade.md +0 -397
  796. package/docs/architecture/history/global-hook-runtime.md +0 -166
  797. package/docs/architecture/history/ios-semantic-automation-provider-v2.md +0 -170
  798. package/docs/architecture/requests/archive/2026/20260528-154740-ai-hooks-ai-hooks-hook-input-sh.md +0 -59
  799. package/docs/architecture/requests/archive/2026/20260528-154816-assets-hooks-assets-hooks-hook-input-sh.md +0 -59
  800. package/docs/architecture/requests/archive/2026/20260528-161851-ai-harness-workflow-contract-json-ai-harness-workflow-contract-json.md +0 -59
  801. package/docs/architecture/requests/archive/2026/20260528-161853-scripts-check-task-workflow-sh-scripts-check-task-workflow-sh.md +0 -59
  802. package/docs/architecture/requests/archive/2026/20260528-161911-assets-workflow-contract-v1-json-assets-workflow-contract-v1-json.md +0 -59
  803. package/docs/architecture/requests/archive/2026/20260528-222416-ai-hooks-ai-hooks-hook-input-sh.md +0 -59
  804. package/docs/architecture/requests/archive/2026/20260528-222444-ai-hooks-ai-hooks-pre-edit-guard-sh.md +0 -59
  805. package/docs/architecture/requests/archive/2026/20260528-222457-ai-hooks-ai-hooks-pre-edit-guard-sh.md +0 -59
  806. package/docs/architecture/requests/archive/2026/20260528-222648-ai-hooks-ai-hooks-pre-edit-guard-sh.md +0 -59
  807. package/docs/architecture/requests/archive/2026/20260528-222705-ai-hooks-ai-hooks-worktree-guard-sh.md +0 -59
  808. package/docs/architecture/requests/archive/2026/20260528-222726-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  809. package/docs/architecture/requests/archive/2026/20260528-222727-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  810. package/docs/architecture/requests/archive/2026/20260528-224736-ai-hooks-ai-hooks-hook-input-sh.md +0 -59
  811. package/docs/architecture/requests/archive/2026/20260528-233259-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  812. package/docs/architecture/requests/archive/2026/20260528-233335-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -59
  813. package/docs/architecture/requests/archive/2026/20260528-233456-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  814. package/docs/architecture/requests/archive/2026/20260528-233457-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -59
  815. package/docs/architecture/requests/archive/2026/20260528-233637-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  816. package/docs/architecture/requests/archive/2026/20260528-233638-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -59
  817. package/docs/architecture/requests/archive/2026/20260529-000322-root-package-json.md +0 -59
  818. package/docs/architecture/requests/archive/2026/20260529-004238-ai-hooks-ai-hooks-lib-workflow-state-sh.md +0 -59
  819. package/docs/architecture/requests/archive/2026/20260529-020654-ai-harness-policy-json-ai-harness-policy-json.md +0 -63
  820. package/docs/architecture/requests/archive/2026/20260529-094236-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -60
  821. package/docs/architecture/requests/archive/2026/20260529-094323-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -60
  822. package/docs/architecture/requests/archive/2026/20260529-094331-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -60
  823. package/docs/architecture/requests/archive/2026/20260529-094339-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -60
  824. package/docs/architecture/requests/archive/2026/20260529-094430-assets-hooks-assets-hooks-session-start-context-sh.md +0 -60
  825. package/docs/architecture/requests/archive/2026/20260529-094446-ai-hooks-ai-hooks-session-start-context-sh.md +0 -60
  826. package/docs/architecture/requests/archive/2026/20260613-002040-runtime-harness-hook-adapters.md +0 -68
  827. package/docs/architecture/requests/archive/2026/root.md +0 -68
  828. package/docs/architecture/requests/archive/2026/runtime-harness-hook-adapters.md +0 -76
  829. package/docs/architecture/requests/archive/2026/verification-evals-checks.md +0 -68
  830. package/docs/architecture/requests/archive/2026/workflow-engine-contract-assets.md +0 -69
  831. package/scripts/archive-architecture-request.sh +0 -4
  832. package/scripts/benchmark-background-check-overlap.ts +0 -228
  833. package/scripts/benchmark-controller-hotpath.ts +0 -212
  834. package/scripts/benchmark-controller-round2.ts +0 -139
  835. package/scripts/benchmark-ios-agent-device.ts +0 -514
  836. package/scripts/benchmark-mcp-host.sh +0 -117
  837. package/scripts/benchmark-mcp-transport.ts +0 -170
  838. package/scripts/benchmark-quality-harness.ts +0 -146
  839. package/scripts/benchmark-route-session-concurrency.ts +0 -915
  840. package/scripts/benchmark-thin-harness-gateway-ab.ts +0 -632
  841. package/scripts/benchmark-thin-harness-mcp-e2e.ts +0 -498
  842. package/scripts/benchmark-thin-harness.ts +0 -251
  843. package/scripts/benchmark-typescript-navigation.ts +0 -186
  844. package/scripts/benchmark-work-efficiency.ts +0 -334
  845. package/scripts/build-controller-ui.ts +0 -28
  846. package/scripts/check-npm-release.sh +0 -32
  847. package/scripts/check-public-release-surface.sh +0 -19
  848. package/scripts/check-release-published.sh +0 -57
  849. package/scripts/check-release-readiness.sh +0 -37
  850. package/scripts/check-release-version.mjs +0 -74
  851. package/scripts/check-tarball-install-smoke.sh +0 -67
  852. package/scripts/package-source-archive.sh +0 -147
  853. package/scripts/public-release-files.txt +0 -39
  854. package/scripts/public-release.ts +0 -174
  855. package/scripts/publish-release-tarball.sh +0 -27
  856. package/scripts/route-nl-vs-ts-eval.ts +0 -679
  857. package/scripts/run-skill-evals.ts +0 -1022
  858. package/scripts/stage-runtime-release.ts +0 -39
  859. package/src/cli/controller/progress.ts +0 -656
  860. package/src/cli/controller/work-mode.ts +0 -181
  861. package/src/cli/local-bridge/console-assets.ts +0 -17
  862. package/src/cli/local-bridge/dashboard.ts +0 -17
  863. package/src/cli/local-bridge/frontend/src/App.tsx +0 -10
  864. package/src/cli/local-bridge/frontend/src/components/Button.tsx +0 -1
  865. package/src/cli/local-bridge/frontend/src/components/DetailPane.tsx +0 -3
  866. package/src/cli/local-bridge/frontend/src/components/SearchField.tsx +0 -1
  867. package/src/cli/local-bridge/frontend/src/components/SectionHeader.tsx +0 -1
  868. package/src/cli/local-bridge/frontend/src/components/Segmented.tsx +0 -1
  869. package/src/cli/local-bridge/frontend/src/components/StatusText.tsx +0 -3
  870. package/src/cli/local-bridge/frontend/src/design/icons.tsx +0 -11
  871. package/src/cli/local-bridge/frontend/src/design/tokens.css +0 -8
  872. package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +0 -153
  873. package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +0 -37
  874. package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +0 -183
  875. package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +0 -2
  876. package/src/cli/local-bridge/frontend/src/features/system/SystemView.tsx +0 -2
  877. package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +0 -4
  878. package/src/cli/local-bridge/frontend/src/lib/api.ts +0 -30
  879. package/src/cli/local-bridge/frontend/src/lib/format.ts +0 -4
  880. package/src/cli/local-bridge/frontend/src/lib/routes.ts +0 -7
  881. package/src/cli/local-bridge/frontend/src/main.tsx +0 -1
  882. package/src/cli/local-bridge/frontend/src/shell/AppShell.tsx +0 -1
  883. package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +0 -2
  884. package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +0 -4
  885. package/src/cli/local-bridge/frontend/src/styles.css +0 -28
  886. package/src/cli/local-bridge/frontend/src/types.ts +0 -15
  887. package/src/cli/local-bridge/frontend/src/vite-env.d.ts +0 -1
  888. package/src/cli/local-bridge/frontend/vite.config.ts +0 -27
  889. package/src/cli/local-bridge/ui-dist/app.css +0 -1
  890. package/src/cli/local-bridge/ui-dist/app.js +0 -11228
  891. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +0 -385
  892. package/src/runtime/control-plane/execution/work-finalization-service.ts +0 -1913
  893. package/src/runtime/control-plane/execution/work-path-scope.ts +0 -37
  894. package/src/runtime/control-plane/execution/work-task-receipt.ts +0 -449
  895. package/src/runtime/control-plane/facade/controller-round-relay.ts +0 -1118
  896. package/src/runtime/control-plane/facade/work-admission-policy.ts +0 -93
  897. package/src/runtime/control-plane/facade/work-task-projection.ts +0 -66
  898. package/src/runtime/control-plane/routing/index.ts +0 -1
  899. package/src/runtime/control-plane/routing/route-policy.ts +0 -382
  900. package/src/runtime/control-plane/routing/workspace-admission.ts +0 -70
@@ -1,19 +1,37 @@
1
- import type { ProcessCheckReceiptEvidence } from '../../evidence/process-check-receipt';
2
- import type { CompletionReceipt as RepositoryCompletionReceipt } from '../../../cli/controller/types';
3
- import type { AccessMode } from '../governance/access-policy';
4
- import { decideRoute, type ExplicitTaskMode, type RouteDecision, type RoutePolicyInput } from '../routing/route-policy';
5
-
6
- export const EXECUTION_MODES = ['direct_control', 'goal_workloop', 'handoff_only'] as const;
7
- export type ExecutionMode = (typeof EXECUTION_MODES)[number];
8
-
9
- export const FACADE_TOOLS = ['rh_access', 'rh_status', 'rh_inbox', 'rh_context', 'rh_work'] as const;
1
+ import type {
2
+ WorkContract,
3
+ VerificationOutcome,
4
+ FacadeDetailLevel,
5
+ EvidenceRef,
6
+ SuggestedNextAction,
7
+ PolicyDecision,
8
+ } from '../../../../packages/kernel/work/domain/types';
9
+ export type {
10
+ FacadeDetailLevel,
11
+ EvidenceRef,
12
+ SuggestedNextAction,
13
+ PolicyDecision,
14
+ } from '../../../../packages/kernel/work/domain/types';
15
+ import {
16
+ TERMINAL_PLAN_CONTRACT_STATUSES,
17
+ type PlanContractStatus,
18
+ type PlanStepStatus,
19
+ } from '../../../../packages/kernel/goal/api/index';
20
+ export {
21
+ PLAN_CONTRACT_STATUSES,
22
+ TERMINAL_PLAN_CONTRACT_STATUSES,
23
+ PLAN_STEP_STATUSES,
24
+ type PlanContractStatus,
25
+ type PlanStepStatus,
26
+ } from '../../../../packages/kernel/goal/api/index';
27
+
28
+ export const FACADE_TOOLS = ['rh_access', 'rh_status', 'rh_inbox', 'rh_context', 'rh_work', 'capability_execute'] as const;
10
29
  export type FacadeTool = (typeof FACADE_TOOLS)[number];
11
30
  export type CapabilityExecutionSurface = FacadeTool | 'plugin_action_execute';
12
31
 
13
32
  export const FACADE_STATUSES = ['ok', 'blocked', 'failed', 'approval_required', 'not_found'] as const;
14
33
  export type FacadeStatus = (typeof FACADE_STATUSES)[number];
15
34
 
16
- export type FacadeDetailLevel = 'summary' | 'detail' | 'raw';
17
35
 
18
36
  export const CAPABILITY_DOMAINS = ['repository', 'plugin', 'controller', 'evidence', 'maintenance'] as const;
19
37
  export type CapabilityDomain = (typeof CAPABILITY_DOMAINS)[number];
@@ -55,266 +73,70 @@ export type PolicyDecisionKind = (typeof POLICY_DECISIONS)[number];
55
73
  export const HANDOFF_SEVERITIES = ['info', 'needs_review', 'blocked', 'failed', 'ready_to_continue'] as const;
56
74
  export type HandoffSeverity = (typeof HANDOFF_SEVERITIES)[number];
57
75
 
58
- export const HANDOFF_STATUSES = [
59
- 'pending',
60
- 'acknowledged',
61
- 'in_progress',
62
- 'resolved',
63
- 'dismissed',
64
- 'superseded',
65
- 'expired',
66
- ] as const;
67
- export type HandoffStatus = (typeof HANDOFF_STATUSES)[number];
68
-
69
- export const TERMINAL_HANDOFF_STATUSES: readonly HandoffStatus[] = [
70
- 'resolved',
71
- 'dismissed',
72
- 'superseded',
73
- 'expired',
74
- ] as const;
75
-
76
- export const WORK_CONTRACT_STATUSES = [
77
- 'open',
78
- 'running',
79
- 'blocked',
80
- 'ready',
81
- 'completed',
82
- 'failed',
83
- 'cancelled',
84
- ] as const;
85
- export type WorkContractStatus = (typeof WORK_CONTRACT_STATUSES)[number];
86
-
87
- /**
88
- * Work execution phases are intentionally small and technical. User-facing
89
- * Requirement lifecycle belongs to Requirement, not this projection.
90
- */
91
- export const WORK_PHASES = ['implementation', 'verification', 'delivery', 'cleanup'] as const;
92
- export type WorkPhase = (typeof WORK_PHASES)[number];
93
-
94
- export const WORK_PHASE_EVIDENCE_STATES = ['pending', 'active', 'satisfied', 'blocked', 'failed', 'skipped'] as const;
95
- export type WorkPhaseEvidenceState = (typeof WORK_PHASE_EVIDENCE_STATES)[number];
96
-
97
- /** Durable evidence checkpoint for one technical Work phase. */
98
- export interface WorkPhaseEvidence {
99
- state: WorkPhaseEvidenceState;
100
- source?: 'recorded' | 'legacy_inferred';
101
- summary: string;
102
- evidenceRefs: EvidenceRef[];
103
- recordedAt: string;
104
- receiptId?: string;
105
- }
106
-
107
- export type WorkPhaseEvidenceMap = Record<WorkPhase, WorkPhaseEvidence>;
108
-
109
- /** Risk is part of the Work contract, never of a mutable Task projection. */
110
- export const WORK_RISKS = ['readonly', 'low', 'medium', 'high', 'destructive'] as const;
111
- export type WorkRisk = (typeof WORK_RISKS)[number];
112
-
113
- export const TERMINAL_WORK_CONTRACT_STATUSES: readonly WorkContractStatus[] = [
114
- 'completed',
115
- 'failed',
116
- 'cancelled',
117
- ] as const;
118
-
119
- /** Independent semantic axes; `status` remains a compatibility projection. */
120
- export const WORK_KINDS = [
121
- 'repository_change',
122
- 'completed_no_change',
123
- 'read_only_review',
124
- 'investigation',
125
- 'local_effect',
126
- 'remote_effect',
127
- 'reconciliation',
128
- 'superseded',
129
- ] as const;
130
- export type WorkKind = (typeof WORK_KINDS)[number];
131
-
132
- export const DISPATCH_STATES = ['not_dispatched', 'claimed', 'launching', 'running', 'blocked', 'terminal'] as const;
133
- export type DispatchState = (typeof DISPATCH_STATES)[number];
134
-
135
- export const EVIDENCE_STATES = ['none', 'partial', 'valid', 'stale', 'contradictory', 'failed'] as const;
136
- export type EvidenceState = (typeof EVIDENCE_STATES)[number];
137
-
138
- export const COMPLETION_OUTCOMES = ['completed_changed', 'completed_no_change', 'completed_local', 'completed_remote', 'superseded'] as const;
139
- export type CompletionOutcome = (typeof COMPLETION_OUTCOMES)[number];
140
-
141
- /** Source-bound semantic evidence accumulated by a recoverable read-only review. */
142
- export interface ReadOnlyReviewEvidence {
143
- sourceRevision: string;
144
- workspaceFingerprint?: string;
145
- inspectedPaths: string[];
146
- findings: string[];
147
- recordedAt: string;
148
- }
149
-
150
- /** Controller-reviewed binding from one exact Work acceptance criterion to durable evidence. */
151
- export interface WorkSemanticAcceptanceEvidence {
152
- criterion: string;
153
- evidenceIds: string[];
154
- rationale: string;
155
- recordedAt: string;
156
- }
157
-
158
- /**
159
- * Terminal authority for a clean read-only review. This deliberately does not
160
- * impersonate repository delivery: it proves the reviewed source stayed at the
161
- * frozen base revision with no workspace delta and records the bounded review
162
- * scope that justified completed_no_change.
163
- */
164
- export interface ReadOnlyReviewCompletionReceipt {
165
- schemaVersion: 1;
166
- receiptId: string;
167
- source: 'read_only_review';
168
- workId: string;
169
- baseRevision: string;
170
- sourceRevision: string;
171
- workspaceFingerprint?: string;
172
- /** Explicit unchanged-workspace proof captured by the trusted finalizer. Must be empty. */
173
- workspaceChangedPaths: string[];
174
- inspectedPaths: string[];
175
- findingCount: 0;
176
- recordedAt: string;
177
- }
178
-
179
- /**
180
- * Terminal receipt for a bounded Controller-local side effect that is not a
181
- * repository delivery. Repository Task/Issue completion keeps using the
182
- * historical Git-oriented CompletionReceipt unchanged.
183
- */
184
- export interface LocalEffectCompletionReceipt {
185
- schemaVersion: 1;
186
- receiptId: string;
187
- source: 'local_effect';
188
- workId: string;
189
- operation: string;
190
- target: {
191
- kind: 'workspace_target' | 'controller_local';
192
- id: string;
193
- identityFingerprint?: string;
194
- };
195
- changed: boolean;
196
- recordedAt: string;
197
- }
198
-
199
- /** Durable completion authority for one typed remote effect. */
200
- export interface RemoteEffectCompletionReceipt {
201
- schemaVersion: 1;
202
- /** Plugin receipts retain their PLG-* id; repository Process effects use their canonical Process id. */
203
- receiptId: string;
204
- source: 'remote_effect';
205
- workId: string;
206
- /** Historical receipts omit this field and are interpreted as plugin_action. */
207
- authority?: 'plugin_action' | 'repository_process';
208
- pluginId?: string;
209
- actionId: string;
210
- requestId: string;
211
- semanticKey: string;
212
- resultDigest: string;
213
- processId?: string;
214
- recordedAt: string;
215
- }
216
-
217
- /**
218
- * Completion authority for a standalone Direct Edit that is not bound to the
219
- * retired Issue/Task completion model. Normal completion proves one finalized
220
- * edit session at an exact reachable Git revision. Historical completion may
221
- * instead reference one explicit reviewed reconciliation after exact revision,
222
- * path-scope, verification, reachability, and cleanup proof checks.
223
- */
224
- export interface DirectEditWorkCompletionReceipt {
225
- schemaVersion: 1;
226
- receiptId: string;
227
- source: 'direct_edit_work';
228
- workId: string;
229
- editSessionId?: string;
230
- reconciliationId?: string;
231
- targetBranch: string;
232
- targetRevision: string;
233
- sourceRevision?: string;
234
- baseRevision?: string;
235
- changedPaths: string[];
236
- delivery: RepositoryCompletionReceipt['delivery'];
237
- cleanup: RepositoryCompletionReceipt['cleanup'];
238
- verifiedAt: string;
239
- recordedAt: string;
240
- }
241
-
242
- export type WorkCompletionReceipt = RepositoryCompletionReceipt | DirectEditWorkCompletionReceipt | ReadOnlyReviewCompletionReceipt | LocalEffectCompletionReceipt | RemoteEffectCompletionReceipt;
243
-
244
- export function isRepositoryCompletionReceipt(
245
- receipt: WorkCompletionReceipt,
246
- ): receipt is RepositoryCompletionReceipt {
247
- return receipt.source !== 'local_effect'
248
- && receipt.source !== 'remote_effect'
249
- && receipt.source !== 'direct_edit_work'
250
- && receipt.source !== 'read_only_review';
251
- }
252
-
253
- export function isReadOnlyReviewCompletionReceipt(
254
- receipt: WorkCompletionReceipt,
255
- ): receipt is ReadOnlyReviewCompletionReceipt {
256
- return receipt.source === 'read_only_review';
257
- }
258
-
259
- export function isRemoteEffectCompletionReceipt(
260
- receipt: WorkCompletionReceipt,
261
- ): receipt is RemoteEffectCompletionReceipt {
262
- return receipt.source === 'remote_effect';
263
- }
264
-
265
- export function isDirectEditWorkCompletionReceipt(
266
- receipt: WorkCompletionReceipt,
267
- ): receipt is DirectEditWorkCompletionReceipt {
268
- return receipt.source === 'direct_edit_work';
269
- }
270
-
271
- /** A reviewed exception for historical/manual integration; never inferred automatically. */
272
- export const WORK_RECONCILIATION_METHODS = ['exact_commit', 'owned_path_tree', 'reviewed_patch_identity'] as const;
273
- export type WorkReconciliationMethod = (typeof WORK_RECONCILIATION_METHODS)[number];
274
-
275
- export const WORK_RECONCILIATION_OUTCOMES = ['accepted_equivalence', 'rejected_equivalence', 'superseded'] as const;
276
- export type WorkReconciliationOutcome = (typeof WORK_RECONCILIATION_OUTCOMES)[number];
277
-
278
- export const VERIFICATION_OUTCOMES = [
279
- 'valid_pass',
280
- 'valid_fail',
281
- 'invalid_check_id',
282
- 'infrastructure_failure',
283
- 'skipped',
284
- 'superseded',
285
- ] as const;
286
- export type VerificationOutcome = (typeof VERIFICATION_OUTCOMES)[number];
287
-
76
+ export { HANDOFF_STATUSES, TERMINAL_HANDOFF_STATUSES, isTerminalHandoffStatus, type HandoffStatus } from '../../../../packages/protocols/handoff/index';
77
+ import type { HandoffStatus } from '../../../../packages/protocols/handoff/index';
78
+
79
+ // Kernel V2: Work domain contracts are owned by packages/kernel/work/domain.
80
+ export {
81
+ SEMANTIC_WORK_STATES,
82
+ WORK_PHASES,
83
+ WORK_PHASE_EVIDENCE_STATES,
84
+ WORK_RISKS,
85
+ TERMINAL_SEMANTIC_WORK_STATES,
86
+ WORK_KINDS,
87
+ DISPATCH_STATES,
88
+ EVIDENCE_STATES,
89
+ COMPLETION_OUTCOMES,
90
+ WORK_RECONCILIATION_METHODS,
91
+ WORK_RECONCILIATION_OUTCOMES,
92
+ VERIFICATION_OUTCOMES,
93
+ isRepositoryCompletionReceipt,
94
+ isReadOnlyReviewCompletionReceipt,
95
+ isRemoteEffectCompletionReceipt,
96
+ isDirectEditWorkCompletionReceipt,
97
+ isTerminalSemanticWorkState,
98
+ } from '../../../../packages/kernel/work/domain/types';
99
+ export type {
100
+ SemanticWorkState,
101
+ WorkPhase,
102
+ WorkPhaseEvidenceState,
103
+ WorkPhaseEvidence,
104
+ WorkPhaseEvidenceMap,
105
+ WorkRisk,
106
+ WorkKind,
107
+ DispatchState,
108
+ EvidenceState,
109
+ CompletionOutcome,
110
+ ReadOnlyReviewEvidence,
111
+ WorkSemanticAcceptanceEvidence,
112
+ ReadOnlyReviewCompletionReceipt,
113
+ LocalEffectCompletionReceipt,
114
+ RemoteEffectCompletionReceipt,
115
+ DirectEditWorkCompletionReceipt,
116
+ WorkCompletionReceipt,
117
+ WorkReconciliationMethod,
118
+ WorkReconciliationOutcome,
119
+ VerificationOutcome,
120
+ WorkContractConstraints,
121
+ WorktreePolicy,
122
+ EvidencePolicy,
123
+ ApprovalPolicy,
124
+ RecoveryPolicy,
125
+ VerificationRecord,
126
+ WorkReconciliationRecord,
127
+ WorkContract,
128
+ SubmittedWorkOperation,
129
+ WorkContractStore,
130
+ } from '../../../../packages/kernel/work/domain/types';
288
131
  export const HANDOFF_CREATION_REASONS = [
289
132
  'policy_approval_required',
290
133
  'ambiguous_outcome',
291
134
  'missing_authorization',
292
135
  'invalid_objective',
293
- 'repeated_infrastructure_failure',
294
- 'codex_worker_requires_review',
295
136
  'destructive_action_requires_confirmation',
296
137
  ] as const;
297
138
  export type HandoffCreationReason = (typeof HANDOFF_CREATION_REASONS)[number];
298
139
 
299
- export interface EvidenceRef {
300
- evidenceId?: string;
301
- artifactId?: string;
302
- title: string;
303
- summary?: string;
304
- detailLevel?: FacadeDetailLevel;
305
- }
306
-
307
- export interface SuggestedNextAction {
308
- label: string;
309
- tool: FacadeTool;
310
- operation: string;
311
- payload?: Record<string, unknown>;
312
- risk: CapabilityRisk;
313
- confidence?: 'low' | 'medium' | 'high';
314
- reason?: string;
315
- fallback?: string;
316
- }
317
-
318
140
  export interface FacadeResult<TData = Record<string, unknown>> {
319
141
  schemaVersion: 1;
320
142
  status: FacadeStatus;
@@ -332,13 +154,12 @@ export interface HandoffCurrentState {
332
154
  issueId?: string;
333
155
  taskId?: string;
334
156
  workId?: string;
335
- mode?: ExecutionMode;
336
157
  statusSummary: string;
337
158
  blockedBy?: string[];
338
159
  changedFiles?: string[];
339
160
  checks?: Array<{ checkId: string; ok: boolean; summary?: string; outcome?: VerificationOutcome }>;
340
161
  /** Bounded durable Work semantics for a fresh controller session. */
341
- workSemantics?: Pick<WorkContract, 'phase' | 'status' | 'workKind' | 'dispatchState' | 'evidenceState' | 'completionOutcome'>;
162
+ workSemantics?: Pick<WorkContract, 'semanticState' | 'phase' | 'workKind' | 'dispatchState' | 'evidenceState' | 'completionOutcome'>;
342
163
  reconciliationRequired?: boolean;
343
164
  nextSafeAction?: string;
344
165
  }
@@ -356,6 +177,8 @@ export interface HandoffItem {
356
177
  id: string;
357
178
  repoId: string;
358
179
  workId?: string;
180
+ /** Canonical person-only blocker/decision authority when this legacy Handoff projects one. */
181
+ canonicalUserRequestId?: string;
359
182
  issueId?: string;
360
183
  taskId?: string;
361
184
  title: string;
@@ -386,263 +209,35 @@ export interface HandoffInboxStore {
386
209
  items: HandoffItem[];
387
210
  }
388
211
 
389
- export interface WorkContractConstraints {
390
- maxChangedFiles?: number;
391
- maxChangedLines?: number;
392
- allowCommit?: boolean;
393
- allowMerge?: boolean;
394
- allowCleanup?: boolean;
395
- allowDestructive?: boolean;
396
- requireHandoffOnAmbiguity?: boolean;
397
- /** Immutable execution-policy snapshot captured when work starts. */
398
- accessMode?: AccessMode;
399
- /** current is the stability-first default; isolated is opt-in or used for explicit parallelism. */
400
- workspaceMode?: 'current' | 'isolated' | 'auto';
401
- requireWorktree?: boolean;
402
- /** Admission fence: repository mutation must not use the Direct Control/current-main lane. */
403
- directMainProhibited?: boolean;
404
- /** True when a change alters the agreed architecture direction rather than only implementation details. */
405
- architectureStrategyChange?: boolean;
406
- /** True when the proposed change weakens the thin-harness / high-performance execution policy. */
407
- conflictsWithThinHarnessPolicy?: boolean;
408
- /** True when the change alters the default routing or execution mode visible to users. */
409
- changesDefaultExecutionStrategy?: boolean;
410
- /** Repository-change delivery must publish the exact integrated revision before Work terminalization. */
411
- remoteDeliveryRequired?: boolean;
412
- }
413
-
414
- export interface WorkContractDriverPolicy {
415
- preferred: 'direct_edit' | 'isolated_worktree' | 'external_controller' | 'handoff_only';
416
- allowWorker: boolean;
417
- allowDirectEdit: boolean;
418
- }
419
-
420
- export interface WorktreePolicy {
421
- required: boolean;
422
- reason?: string;
423
- ref?: string;
424
- }
425
-
426
- export interface EvidencePolicy {
427
- defaultDetailLevel: FacadeDetailLevel;
428
- allowRawOptIn: boolean;
429
- maxEvidenceRefs: number;
430
- }
431
-
432
- export interface ApprovalPolicy {
433
- required: boolean;
434
- reasons: string[];
435
- confirmed: boolean;
436
- }
437
-
438
- export interface RecoveryPolicy {
439
- allowSelfHealing: boolean;
440
- maxInfrastructureRetries: number;
441
- handoffOnAmbiguity: boolean;
442
- }
443
-
444
- export interface VerificationRecord {
445
- checkId: string;
446
- outcome: VerificationOutcome;
447
- summary: string;
448
- recordedAt: string;
449
- /** Exact checked revision. Absence denotes legacy/non-authoritative evidence. */
450
- sourceRevision?: string;
451
- /** Exact dirty-workspace content identity observed by the check. */
452
- workspaceFingerprint?: string;
453
- /** Hash of the check inputs that must match before this result can be reused. */
454
- verificationInputFingerprint?: string;
455
- /** Bounded identity of the command/configuration that produced the result. */
456
- commandFingerprint?: string;
457
- resultArtifactId?: string;
458
- startedAt?: string;
459
- completedAt?: string;
460
- supersedes?: string;
461
- staleReason?: string;
462
- evidenceRef?: EvidenceRef;
463
- receipt?: ProcessCheckReceiptEvidence;
464
- }
465
-
466
- /**
467
- * Durable human-reviewed reconciliation for a Work whose original finalization
468
- * facts cannot be recovered. It records an exception; it is not completion
469
- * evidence by itself.
470
- */
471
- export interface WorkReconciliationRecord {
472
- schemaVersion: 1;
473
- reconciliationId: string;
474
- originalExpectedRevision: string;
475
- observedTargetRevision: string;
476
- baseRevision: string;
477
- targetBranch: string;
478
- reachable: boolean;
479
- method: WorkReconciliationMethod;
480
- comparedPaths: string[];
481
- reviewer: string;
482
- reviewedAt: string;
483
- unrecoverableStages: string[];
484
- cleanupOwnershipProof: string;
485
- rationale: string;
486
- outcome: WorkReconciliationOutcome;
487
- }
488
-
489
- export interface WorkContract {
490
- schemaVersion: 1 | 2;
491
- workId: string;
492
- repoId: string;
493
- /** Execution identity snapshot. Optional only for legacy records. */
494
- checkoutId?: string;
495
- principalId?: string;
496
- controllerInstanceId?: string;
497
- baseRevision?: string;
498
- workspaceFingerprint?: string;
499
- routeDecisionFingerprint?: string;
500
- routeDecision?: RouteDecision;
501
- mode: ExecutionMode;
212
+ // Kernel V2: Controller session contracts are owned by packages/kernel/controller/domain.
213
+ export type {
214
+ ControllerType,
215
+ ControllerSession,
216
+ ControllerSessionStore,
217
+ ControllerBinding,
218
+ ControllerLease,
219
+ ControllerRoundContext,
220
+ } from '../../../../packages/kernel/controller/domain/types';
221
+ export interface PlanSemanticItem {
222
+ id: string;
502
223
  objective: string;
503
- acceptanceCriteria: string[];
504
- constraints: WorkContractConstraints;
505
- /** Risk is immutable contract input and is projected to legacy Task reads. */
506
- risk: WorkRisk;
507
- /** Technical phase; Requirement owns the user lifecycle. */
508
- phase: WorkPhase;
509
- /** Work-owned phase checkpoints. Task/Run/Process records may contribute evidence but cannot write this map directly. */
510
- phaseEvidence: WorkPhaseEvidenceMap;
511
- /** Explicit v2 execution semantics. `status` is retained for compatibility. */
512
- workKind: WorkKind;
513
- /** Primary is an objective-level business execution lane; execution_child is a resumable low-level operation handle owned by a primary Work or standalone caller. */
514
- lifecycleRole?: 'primary' | 'execution_child';
515
- /** Optional objective-level parent when this Work is only an execution child. */
516
- parentWorkId?: string;
517
- dispatchState: DispatchState;
518
- evidenceState: EvidenceState;
519
- completionOutcome?: CompletionOutcome;
520
- status: WorkContractStatus;
521
- createdAt: string;
522
- updatedAt: string;
523
- /** @deprecated Prefer Requirement/Plan/Work links; kept for compatibility reads only. */
524
- issueId?: string;
525
- taskId?: string;
526
- /** Stable Requirement authority that this Work may complete. */
527
- requirementId?: string;
528
- /** Work-owned completion receipt. Legacy Task receipts are projections only. */
529
- completionReceipt?: WorkCompletionReceipt;
530
- /** Provenance for complex work dispatched from a durable PlanContract step. */
531
- planId?: string;
532
- planStepId?: string;
533
- planSourceRevision?: string;
534
- scopeSummary?: string;
535
- /**
536
- * Discovery evidence, never an authorization boundary. Initial guesses,
537
- * inspected paths, and observed changes remain distinct so early retrieval
538
- * cannot masquerade as complete implementation scope.
539
- */
540
- scopeEvidence?: {
541
- initialLikelyPaths: string[];
542
- inspectedPaths: string[];
543
- actualChangedPaths: string[];
544
- recordedAt: string;
545
- };
546
- /** Source-bound semantic findings/scope for first-class recoverable read-only review Work. */
547
- readOnlyReviewEvidence?: ReadOnlyReviewEvidence;
548
- /** Explicit Controller-reviewed acceptance bindings. Mechanical evidence attribution alone never writes this field. */
549
- semanticAcceptanceEvidence?: WorkSemanticAcceptanceEvidence[];
550
- /** Explicit policy fence. This is not semantic completeness evidence. */
551
- allowedPaths: string[];
552
- forbiddenPaths: string[];
553
- checks: string[];
554
- driver: WorkContractDriverPolicy;
555
- worktreePolicy: WorktreePolicy;
556
- evidencePolicy: EvidencePolicy;
557
- approvalPolicy: ApprovalPolicy;
558
- recoveryPolicy: RecoveryPolicy;
559
- requestedBy: 'chatgpt' | 'user' | 'system' | 'scheduler';
560
- evidenceRefs: EvidenceRef[];
561
- handoffRefs: string[];
562
- suggestedNextActions: SuggestedNextAction[];
563
- policyDecisions: PolicyDecision[];
564
- checkRefs: VerificationRecord[];
565
- /** Reviewed historical/manual integration exceptions, retained for audit. */
566
- reconciliations: WorkReconciliationRecord[];
567
- continuationPrompt?: string;
568
- worktreeRef?: string;
569
- workerRef?: string;
570
- requestId?: string;
571
- /** Typed execution metadata; it does not imply ExecutionJob creation. */
572
- submittedOperation?: SubmittedWorkOperation;
573
- }
574
-
575
- /** Typed execution metadata retained on execution-child WorkContracts. */
576
- export interface SubmittedWorkOperation {
577
- name: string;
578
- semanticKey: string;
579
- argumentHash: string;
580
- mode: 'readonly' | 'mutating' | 'remote_write' | 'destructive';
581
- idempotent: boolean;
582
- replayable: boolean;
583
- resourceClaims: Array<{
584
- resourceKey: string;
585
- mode: string;
586
- quantity?: number;
587
- }>;
588
- }
589
-
590
- export interface WorkContractStore {
591
- schemaVersion: 1 | 2;
592
- updatedAt: string;
593
- contracts: WorkContract[];
594
- }
595
-
596
- export type ControllerType = 'chatgpt' | 'codex' | 'grok' | 'claude' | 'human';
597
-
598
- export interface ControllerSession {
599
- schemaVersion: 1;
600
- workId: string;
601
- controllerId: string;
602
- controllerType: ControllerType;
603
- sessionId: string;
604
- /** Authenticated authority that owned the claim; legacy records may omit it. */
605
- principalId?: string;
606
- /** Controller process/epoch that admitted the transport session. */
607
- controllerInstanceId?: string;
608
- /** Monotonic ownership fence. It changes only when ownership moves. */
609
- claimGeneration?: number;
610
- claimedAt: string;
611
- leaseExpiresAt: string;
224
+ dependencies: string[];
612
225
  }
613
226
 
614
- export interface ControllerSessionStore {
615
- schemaVersion: 1;
616
- updatedAt: string;
617
- sessions: ControllerSession[];
227
+ export interface PlanSemanticContext {
228
+ /** Requirement semantic revision used as planning provenance; never an execution gate. */
229
+ requirementBasisRevision?: number;
230
+ sourceBasisRevision: string;
231
+ goal: string;
232
+ nonGoals: string[];
233
+ assumptions: string[];
234
+ resolvedDecisions: string[];
235
+ stopConditions: string[];
236
+ replanConditions: string[];
237
+ integrationStrategy?: string;
238
+ items: PlanSemanticItem[];
618
239
  }
619
240
 
620
- export const PLAN_CONTRACT_STATUSES = [
621
- 'draft',
622
- 'inspecting',
623
- 'reviewing',
624
- 'approved',
625
- 'executing',
626
- 'replanning',
627
- 'verifying',
628
- 'ready_to_finalize',
629
- 'finalized',
630
- 'superseded',
631
- 'cancelled',
632
- 'invalidated_by_drift',
633
- ] as const;
634
- export type PlanContractStatus = (typeof PLAN_CONTRACT_STATUSES)[number];
635
-
636
- export const TERMINAL_PLAN_CONTRACT_STATUSES: readonly PlanContractStatus[] = [
637
- 'finalized',
638
- 'superseded',
639
- 'cancelled',
640
- 'invalidated_by_drift',
641
- ];
642
-
643
- export const PLAN_STEP_STATUSES = ['pending', 'ready', 'executing', 'validating', 'completed'] as const;
644
- export type PlanStepStatus = (typeof PLAN_STEP_STATUSES)[number];
645
-
646
241
  export interface PlanStep {
647
242
  id: string;
648
243
  objective: string;
@@ -662,10 +257,95 @@ export interface PlanStep {
662
257
  * A durable pre-execution decision record. WorkContract remains the unit that
663
258
  * owns dispatch, workspace, worker, and verification lifecycle.
664
259
  */
260
+ export const PLAN_OBLIGATION_DISPOSITIONS = ['keep', 'change', 'defer', 'drop'] as const;
261
+ export type PlanObligationDispositionKind = (typeof PLAN_OBLIGATION_DISPOSITIONS)[number];
262
+
263
+ export interface PlanObligationDisposition {
264
+ predecessorPlanId: string;
265
+ obligationId: string;
266
+ disposition: PlanObligationDispositionKind;
267
+ /** Successor locations such as step:<id>, acceptance:<id>:<index>, resolved_decision:<index>. */
268
+ successorRefs: string[];
269
+ /** Required for CHANGE/DEFER/DROP. KEEP may omit it. */
270
+ rationale?: string;
271
+ }
272
+
273
+ /**
274
+ * Immutable provenance for one predecessor delivery that may be reused by a
275
+ * successor Plan after approval. The Work itself remains historical and bound
276
+ * to the predecessor Plan; this record never transfers execution authority.
277
+ */
278
+ export interface PlanStepDeliveryCarry {
279
+ predecessorPlanId: string;
280
+ predecessorStepId: string;
281
+ successorStepId: string;
282
+ workId: string;
283
+ completionReceiptId: string;
284
+ deliveredSourceRevision: string;
285
+ recordedAt: string;
286
+ }
287
+
288
+ /** Mutable only until approval. A stable Plan may stage at most one next revision;
289
+ * the currently committed Plan fields remain authoritative until this draft is approved. */
290
+ export interface PlanRevisionDraft {
291
+ revision: number;
292
+ requestedRevisionLabel?: string;
293
+ sourceRevision: string;
294
+ goal: string;
295
+ nonGoals: string[];
296
+ assumptions: string[];
297
+ resolvedDecisions: string[];
298
+ stopConditions: string[];
299
+ replanConditions: string[];
300
+ integrationStrategy?: string;
301
+ steps: PlanStep[];
302
+ obligationDispositions?: PlanObligationDisposition[];
303
+ deliveryCarries?: PlanStepDeliveryCarry[];
304
+ createdAt: string;
305
+ updatedAt: string;
306
+ }
307
+
308
+ /** Immutable audit snapshot of one committed Plan revision. Historical revisions
309
+ * never own active scope, Work, scheduling, or admission authority. */
310
+ export interface PlanRevisionRecord {
311
+ schemaVersion: 1;
312
+ /** Node-local placement provenance; absent for a ForgeInstance-scoped Plan. */
313
+ repoId?: string;
314
+ planId: string;
315
+ revision: number;
316
+ requirementId?: string;
317
+ scopeKey: string;
318
+ sourceRevision: string;
319
+ goal: string;
320
+ nonGoals: string[];
321
+ assumptions: string[];
322
+ resolvedDecisions: string[];
323
+ stopConditions: string[];
324
+ replanConditions: string[];
325
+ integrationStrategy?: string;
326
+ status: PlanContractStatus;
327
+ steps: PlanStep[];
328
+ evidenceRefs: EvidenceRef[];
329
+ obligationDispositions?: PlanObligationDisposition[];
330
+ recordedAt: string;
331
+ reason?: string;
332
+ /** Compatibility label supplied by older successor-Plan clients. It is not a Plan identity. */
333
+ requestedRevisionLabel?: string;
334
+ }
335
+
665
336
  export interface PlanContract {
666
337
  schemaVersion: 1;
667
338
  planId: string;
668
- repoId: string;
339
+ /** Legacy PlanContract lifecycle revision retained during authority migration. */
340
+ revision?: number;
341
+ /** Thin model-authored Plan revision, independent from lifecycle/step execution updates. */
342
+ semanticRevision?: number;
343
+ /** Timestamp of the model-authored Plan content; lifecycle/step updates must not change it. */
344
+ semanticUpdatedAt?: string;
345
+ /** Thin model-authored working memory. Once present, legacy steps/status cannot rewrite semantic Plan content. */
346
+ semanticContext?: PlanSemanticContext;
347
+ /** @deprecated Node-local placement compatibility field; absent for a ForgeInstance-scoped Plan. */
348
+ repoId?: string;
669
349
  /** Stable Requirement owner. Legacy plans may omit this until portfolio migration. */
670
350
  requirementId?: string;
671
351
  scopeKey: string;
@@ -680,7 +360,17 @@ export interface PlanContract {
680
360
  status: PlanContractStatus;
681
361
  steps: PlanStep[];
682
362
  evidenceRefs: EvidenceRef[];
363
+ /** Historical predecessor Plans explicitly replaced by this Plan. */
364
+ supersedes?: string[];
683
365
  supersededBy?: string;
366
+ /** Bounded durable reason for the supersession edge. */
367
+ supersessionReason?: string;
368
+ /** Explicit reconciliation of unresolved predecessor obligations. */
369
+ obligationDispositions?: PlanObligationDisposition[];
370
+ /** Trusted, bounded delivery provenance derived only during canonical successor admission. */
371
+ deliveryCarries?: PlanStepDeliveryCarry[];
372
+ /** At most one staged next revision. It is not another active Plan authority. */
373
+ pendingRevision?: PlanRevisionDraft;
684
374
  createdAt: string;
685
375
  updatedAt: string;
686
376
  }
@@ -704,6 +394,8 @@ export interface CapabilityDescriptor {
704
394
  exposedVia: CapabilityExecutionSurface;
705
395
  schemaExposure: CapabilitySchemaExposure;
706
396
  summary: string;
397
+ /** Provider-declared semantic capabilities implemented by this executable action. */
398
+ semanticCapabilities?: string[];
707
399
  }
708
400
 
709
401
  export interface CapabilityGroupSummary {
@@ -717,37 +409,18 @@ export interface CapabilityGroupSummary {
717
409
  schemaExposures: CapabilitySchemaExposure[];
718
410
  }
719
411
 
720
- export interface PolicyDecision {
721
- decision: PolicyDecisionKind;
722
- reason: string;
723
- capabilityId?: string;
724
- approvalRequestId?: string;
725
- requiredConfirmationText?: string;
726
- warnings: string[];
727
- suggestedNextActions: SuggestedNextAction[];
728
- }
729
-
730
- export interface ExecutionModeSelectionInput {
412
+ /**
413
+ * Concrete mechanical facts about one Work start request. Forge validates and
414
+ * persists these; it never derives engineering method, worker/provider choice,
415
+ * verification, review, or completion from them. Choosing durable Work at all
416
+ * is the caller's explicit decision to invoke this capability.
417
+ */
418
+ export interface WorkStartFacts {
731
419
  objective?: string;
732
- expectedFiles?: number;
733
- expectedChangedLines?: number;
734
420
  scopeClear: boolean;
735
- knownPaths?: string[];
736
- workspaceDirty?: boolean;
737
- workspaceFingerprint?: string;
738
- checkoutId?: string;
739
- /** Canonical typed placement constraint; never inferred from objective text. */
740
- workspacePlacement?: 'current' | 'isolated' | 'auto';
741
- /** Admission fence that has precedence over explicit Direct routing. */
742
- directMainProhibited?: boolean;
743
- requiresInvestigation?: boolean;
744
- requiresLongRunningChecks?: boolean;
745
- requiresParallelism?: boolean;
746
- explicitMode?: ExplicitTaskMode;
747
- needsDependencies?: boolean;
421
+ mutation?: boolean;
748
422
  requiresRecovery?: boolean;
749
- /** True only when the user explicitly requested an agent/worker executor. Complexity alone must not enable workers. */
750
- requiresWorker?: boolean;
423
+ /** True when the request causes an effect outside the checkout (plugin action, remote publish). */
751
424
  requiresExternalEffect?: boolean;
752
425
  requiresApproval?: boolean;
753
426
  requiresUserApproval?: boolean;
@@ -755,81 +428,6 @@ export interface ExecutionModeSelectionInput {
755
428
  destructive?: boolean;
756
429
  remoteWrite?: boolean;
757
430
  secretAccess?: boolean;
758
- mutation?: boolean;
759
431
  risk?: CapabilityRisk;
760
- /** Migration/testing escape hatch: adapters must return this exact policy decision. */
761
- routePolicyInput?: RoutePolicyInput;
762
- }
763
-
764
- export interface ExecutionModeSelection {
765
- mode: ExecutionMode;
766
- reason: string;
767
- missingContractFields: string[];
768
- createWorkContract: boolean;
769
- createHandoff: boolean;
770
- requiresWork: boolean;
771
- routeDecision: RouteDecision;
772
- }
773
-
774
- export function isTerminalHandoffStatus(status: HandoffStatus): boolean {
775
- return TERMINAL_HANDOFF_STATUSES.includes(status);
776
- }
777
-
778
- export function isTerminalWorkContractStatus(status: WorkContractStatus): boolean {
779
- return TERMINAL_WORK_CONTRACT_STATUSES.includes(status);
780
- }
781
-
782
- /** @deprecated Compatibility adapter. Route Policy is the sole routing authority. */
783
- export function selectExecutionMode(input: ExecutionModeSelectionInput): ExecutionModeSelection {
784
- const missingContractFields: string[] = [];
785
- if (!input.scopeClear) missingContractFields.push('scopeSummary', 'acceptanceCriteria', 'allowedPaths');
786
- if (input.objective !== undefined && input.objective.trim().length === 0) missingContractFields.push('objective');
787
- const routeDecision = decideRoute(input.routePolicyInput ?? {
788
- intent: {
789
- objective: input.objective ?? (input.scopeClear ? 'bounded repository work' : ''),
790
- scopeClear: input.scopeClear,
791
- mutation: input.mutation ?? input.risk !== 'readonly',
792
- expectedFiles: input.expectedFiles,
793
- expectedChangedLines: input.expectedChangedLines,
794
- requiresInvestigation: input.requiresInvestigation,
795
- requiresLongRunningChecks: input.requiresLongRunningChecks,
796
- requiresParallelism: input.requiresParallelism,
797
- explicitMode: input.explicitMode,
798
- needsDependencies: input.needsDependencies,
799
- agentRequested: input.requiresWorker,
800
- },
801
- workspace: {
802
- knownPaths: input.knownPaths,
803
- dirty: input.workspaceDirty,
804
- checkoutId: input.checkoutId,
805
- fingerprint: input.workspaceFingerprint,
806
- placement: input.workspacePlacement,
807
- directMainProhibited: input.directMainProhibited,
808
- },
809
- policy: {
810
- risk: input.risk,
811
- requiresApproval: input.requiresApproval,
812
- requiresUserApproval: input.requiresUserApproval,
813
- approvalConfirmed: input.approvalConfirmed,
814
- destructive: input.destructive,
815
- remoteWrite: input.remoteWrite,
816
- secretAccess: input.secretAccess,
817
- },
818
- capabilities: {
819
- requiresWorker: input.requiresWorker,
820
- requiresExternalEffect: input.requiresExternalEffect,
821
- },
822
- recovery: {
823
- required: input.requiresRecovery,
824
- },
825
- });
826
- return {
827
- mode: routeDecision.executionMode,
828
- reason: routeDecision.reasons.map((reason) => reason.message).join(' '),
829
- missingContractFields: routeDecision.executionMode === 'handoff_only' && missingContractFields.length > 0 ? missingContractFields : [],
830
- createWorkContract: routeDecision.requiresWork,
831
- createHandoff: routeDecision.createHandoff,
832
- requiresWork: routeDecision.requiresWork,
833
- routeDecision,
834
- };
432
+ workspaceDirty?: boolean;
835
433
  }