@moretea-labs/forge 1.8.1 → 1.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/AGENTS.md +5 -2
  2. package/CHANGELOG.md +20 -0
  3. package/README.en.md +24 -3
  4. package/README.md +10 -6
  5. package/README.zh-CN.md +5 -3
  6. package/THIRD_PARTY_NOTICES.md +1 -2
  7. package/adapters/chatgpt/browser-delivery-runtime.ts +5 -3
  8. package/adapters/chatgpt/provider-delivery.ts +1 -1
  9. package/adapters/chatgpt/work-conversation-binding-store.ts +20 -1
  10. package/adapters/computer/chatgpt-extension-target.ts +295 -50
  11. package/adapters/computer/chrome-extension/background.js +227 -71
  12. package/adapters/computer/chrome-extension/content.js +181 -157
  13. package/adapters/computer/chrome-extension/manifest.json +3 -1
  14. package/adapters/computer/desktop-operator-provider.ts +18 -6
  15. package/adapters/computer/interaction-target-authority.ts +39 -9
  16. package/adapters/mcp/access-mode.ts +18 -39
  17. package/adapters/mcp/auth.ts +2 -6
  18. package/adapters/mcp/instructions.ts +2 -2
  19. package/adapters/mcp/multi-repository.ts +7 -28
  20. package/adapters/mcp/runtime-gateway/context-adapter.ts +79 -40
  21. package/adapters/mcp/runtime-gateway/context-pack-sidecar.ts +7 -15
  22. package/adapters/mcp/runtime-gateway/execution-tools.ts +7 -13
  23. package/adapters/mcp/runtime-gateway/plugin-adapter.ts +16 -3
  24. package/adapters/mcp/runtime-gateway/process-tools.ts +3 -21
  25. package/adapters/mcp/runtime-gateway/router.ts +3 -5
  26. package/adapters/mcp/runtime-gateway/routing-policy.ts +17 -10
  27. package/adapters/mcp/runtime-gateway/runtime-observation-adapter.ts +1 -1
  28. package/adapters/mcp/runtime-gateway/runtime-tool-definitions.ts +14 -9
  29. package/adapters/mcp/runtime-gateway/runtime-tools.ts +1 -5
  30. package/adapters/mcp/runtime-gateway/scheduler-adapter.ts +36 -1
  31. package/adapters/mcp/runtime-gateway/status-inbox-adapter.ts +58 -4
  32. package/adapters/mcp/runtime-gateway/typescript-navigation-sidecar.ts +7 -3
  33. package/adapters/mcp/runtime-gateway/work-adapter.ts +16 -16
  34. package/adapters/mcp/runtime-gateway/work-input-wire-migration.ts +0 -17
  35. package/adapters/mcp/runtime-gateway/work-semantic-operations.ts +69 -12
  36. package/adapters/mcp/runtime-gateway/workflow-supervisor-adapter.ts +26 -2
  37. package/adapters/mcp/server.ts +24 -3
  38. package/adapters/mcp/setup.ts +4 -10
  39. package/adapters/mcp/tool-mapping/access-tools.ts +0 -6
  40. package/adapters/mcp/tool-mapping/legacy-tool-service.ts +672 -2935
  41. package/adapters/mcp/tool-mapping/post-finalize-work-attribution.ts +1 -1
  42. package/adapters/mcp/tool-mapping/repository-tools.ts +52 -86
  43. package/adapters/mcp/toolset-names.ts +11 -42
  44. package/adapters/mcp/toolset.ts +16 -90
  45. package/{src/cli → adapters}/mcp/transports/AGENTS.md +5 -5
  46. package/{src/cli → adapters}/mcp/transports/CLAUDE.md +5 -5
  47. package/adapters/mcp/transports/http-observation.ts +18 -6
  48. package/adapters/mcp/transports/http-post-lifecycle.ts +19 -0
  49. package/adapters/mcp/transports/http.ts +54 -14
  50. package/adapters/mcp/types.ts +0 -6
  51. package/assets/hooks/lib/session-state.sh +0 -38
  52. package/assets/hooks/post-bash.sh +1 -1
  53. package/assets/hooks/post-tool-observer.sh +0 -5
  54. package/assets/hooks/prompt-guard.sh +0 -55
  55. package/assets/partials/04-project-structure.partial.md +1 -1
  56. package/assets/partials/07-footer.partial.md +1 -1
  57. package/assets/partials-agents/02-operating-mode.partial.md +1 -1
  58. package/assets/partials-agents/08-deep-docs.partial.md +1 -1
  59. package/assets/reference-configs/agentic-development-flow.md +1 -1
  60. package/assets/reference-configs/external-tooling.md +0 -76
  61. package/assets/reference-configs/release-deploy.md +1 -1
  62. package/assets/templates/helpers/architecture-queue.sh +1 -1
  63. package/assets/templates/helpers/check-agent-tooling.sh +1 -327
  64. package/assets/templates/helpers/check-task-workflow.sh +1 -1
  65. package/assets/templates/helpers/ensure-task-workflow.sh +0 -14
  66. package/assets/templates/helpers/migrate-project-template.sh +2 -2
  67. package/assets/workflow-contract.v1.json +0 -2
  68. package/docs/README.md +5 -2
  69. package/docs/architecture/CURRENT.md +114 -30
  70. package/docs/architecture/decisions/20260904-ios-device-migration-baseline.md +42 -0
  71. package/docs/architecture/decisions/20260918-stable-candidate-release-lifecycle.md +15 -2
  72. package/docs/architecture/decisions/20260924-thin-semantic-working-context.md +4 -2
  73. package/docs/architecture/decisions/20261001-supervisor-turn-authority.md +109 -4
  74. package/docs/architecture/decisions/20261009-exact-code-context-discovery.md +19 -0
  75. package/docs/architecture/decisions/20261009-generated-xcode-cache-retention.md +37 -0
  76. package/docs/architecture/decisions/20261011-autonomous-continuation-convergence.md +597 -0
  77. package/docs/architecture/decisions/20261017-edit-session-finalization-reconciliation.md +17 -0
  78. package/docs/architecture/decisions/20261019-retire-host-skills.md +16 -0
  79. package/docs/architecture/diagrams/agentic-dev-plugin-architecture.html +1 -1
  80. package/docs/architecture/domains/public-surface.md +3 -5
  81. package/docs/architecture/domains/verification.md +5 -5
  82. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +2 -2
  83. package/docs/architecture/requests/2026-09-04-computer-plugin-workflow-taxonomy.md +4 -4
  84. package/docs/architecture/reviews/20261015-code-search-runtime-acceptance.md +75 -0
  85. package/docs/forge-plugin-management.md +14 -2
  86. package/docs/operations/controller-browser-plugin.md +23 -0
  87. package/docs/operations/features.md +6 -7
  88. package/docs/operations/features.zh-CN.md +1 -1
  89. package/docs/operations/github-repository.md +4 -4
  90. package/docs/operations/github-semantic-release-projection.md +20 -0
  91. package/docs/operations/homebrew.md +2 -2
  92. package/docs/operations/mcp-tool-exposure.md +13 -54
  93. package/docs/operations/runtime-performance-diagnostics.md +8 -0
  94. package/docs/operations/standalone-disaster-recovery.md +1 -1
  95. package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
  96. package/docs/tutorials/03-first-repository-task.md +2 -0
  97. package/docs/wiki/Computer-and-Plugins.md +78 -0
  98. package/docs/wiki/Computer-and-Plugins.zh-CN.md +88 -0
  99. package/docs/wiki/Home.md +16 -2
  100. package/docs/wiki/Implementation.md +24 -12
  101. package/docs/wiki/Installation.md +28 -32
  102. package/docs/wiki/Integrations.md +4 -0
  103. package/docs/wiki/Quick-Start.md +35 -22
  104. package/docs/wiki/Releases-and-Upgrades.md +15 -25
  105. package/docs/wiki/_Sidebar.md +5 -1
  106. package/package.json +1 -12
  107. package/packages/kernel/controller/infrastructure/controller-session-store.ts +63 -38
  108. package/packages/kernel/identity/infrastructure/activity-projection-store.ts +10 -0
  109. package/packages/kernel/scheduler/application/eligibility.ts +4 -1
  110. package/packages/kernel/scheduler/infrastructure/schedule-store.ts +13 -10
  111. package/packages/kernel/work/application/work-service.ts +1 -0
  112. package/packages/kernel/work/domain/repository-completion-receipt.ts +1 -1
  113. package/packages/kernel/work/domain/state-machine.ts +9 -2
  114. package/packages/kernel/work/infrastructure/work-contract-store.ts +28 -1
  115. package/packages/plugin-runtime/browser/provider-registry.ts +12 -36
  116. package/packages/plugin-runtime/computer/conversation-target.ts +17 -7
  117. package/scripts/assemble-template.ts +11 -72
  118. package/scripts/check-mcp-compatibility.ts +55 -74
  119. package/scripts/check-package-identity.mjs +0 -5
  120. package/scripts/check-runtime-architecture.mjs +305 -28
  121. package/scripts/init-project.sh +0 -46
  122. package/scripts/install-ios-hid-toolchain.sh +60 -0
  123. package/scripts/install-standalone-recovery.ts +1 -1
  124. package/scripts/lib/project-init-lib.sh +3 -3
  125. package/scripts/migrate-windows-wsl-controller-home.ts +2 -0
  126. package/scripts/open-source-audit-allowlist.txt +0 -1
  127. package/scripts/run-governed-gate.ts +2 -0
  128. package/scripts/smoke-ios-physical-device.ts +38 -10
  129. package/scripts/smoke-mcp-http-runtime.ts +7 -8
  130. package/scripts/smoke-mcp-tool-surface.ts +27 -41
  131. package/scripts/smoke-workflow-supervisor-chrome-adapter.ts +6 -3
  132. package/scripts/sync-generated-authority.mjs +0 -1
  133. package/src/cli/agent-jobs/executor-health.ts +1 -1
  134. package/src/cli/agent-jobs/integration.ts +2 -2
  135. package/src/cli/chatgpt-browser/file-policy.ts +2 -2
  136. package/src/cli/commands/doctor.ts +1 -143
  137. package/src/cli/commands/global-runtime.ts +3 -196
  138. package/src/cli/commands/init-hook.ts +6 -23
  139. package/src/cli/commands/init.ts +3 -252
  140. package/src/cli/commands/mcp.ts +0 -5
  141. package/src/cli/commands/prompt-guard-decision.ts +0 -2
  142. package/src/cli/commands/recovery.ts +2 -14
  143. package/src/cli/commands/repository.ts +17 -1
  144. package/src/cli/commands/setup-execution.ts +41 -0
  145. package/src/cli/controller/completion-orchestrator.ts +1 -1
  146. package/src/cli/controller/composite-operations.ts +1 -1
  147. package/src/cli/controller/context/instruction-context.ts +1 -1
  148. package/src/cli/controller/context/known-paths.ts +2 -2
  149. package/src/cli/controller/context/query-planning.ts +11 -4
  150. package/src/cli/controller/context/rule-resolution.ts +2 -2
  151. package/src/cli/controller/context/source-materializer.ts +2 -2
  152. package/src/cli/controller/context/structural-provider.ts +84 -0
  153. package/src/cli/controller/context/structural.ts +6 -6
  154. package/src/cli/controller/context/types.ts +8 -9
  155. package/src/cli/controller/context-pack.ts +97 -76
  156. package/src/cli/controller/operational-plan.ts +1 -1
  157. package/src/cli/controller/systemd-user.ts +4 -10
  158. package/src/cli/editing/edit-session.ts +17 -5
  159. package/src/cli/github/github.ts +4 -4
  160. package/src/cli/github/semantic-projection.ts +174 -0
  161. package/src/cli/hook/prompt-intents.ts +0 -9
  162. package/src/cli/index.ts +1 -43
  163. package/src/cli/local-bridge/connector-freshness.ts +1 -12
  164. package/src/cli/local-bridge/console-automations.ts +1 -1
  165. package/src/cli/local-bridge/console-view-models.ts +1 -1
  166. package/src/cli/local-bridge/facade-api.ts +0 -2
  167. package/src/cli/repositories/command-classifier.ts +0 -9
  168. package/src/cli/repositories/command-scope.ts +2 -2
  169. package/src/cli/repositories/locks.ts +20 -0
  170. package/src/cli/repositories/registry.ts +2 -1
  171. package/src/cli/repositories/safe-patch.ts +2 -12
  172. package/src/cli/repositories/structured-git.ts +39 -3
  173. package/src/cli/repository/inspector.ts +185 -343
  174. package/src/effects/process-runner.ts +17 -1
  175. package/src/runtime/context/generic-lsp-provider.ts +1 -1
  176. package/src/runtime/context/semantic-navigation-contract.ts +7 -0
  177. package/src/runtime/context/semantic-navigation.ts +1 -1
  178. package/src/runtime/control-plane/cleanup-artifact-retention.ts +4 -4
  179. package/src/runtime/control-plane/execution/work-delivery-service.ts +150 -31
  180. package/src/runtime/control-plane/execution/work-handle-authority.ts +12 -4
  181. package/src/runtime/control-plane/execution/work-handle-store.ts +53 -1
  182. package/src/runtime/control-plane/execution/work-operation-service.ts +20 -10
  183. package/src/runtime/control-plane/execution/work-preparation-service.ts +108 -4
  184. package/src/runtime/control-plane/execution/work-process-evidence.ts +2 -2
  185. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +28 -13
  186. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +5 -1
  187. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +1 -1
  188. package/src/runtime/control-plane/facade/capability-registry.ts +2 -0
  189. package/src/runtime/control-plane/facade/work-continuation.ts +1 -1
  190. package/src/runtime/control-plane/generated-cache-retention.ts +114 -63
  191. package/src/runtime/control-plane/global-scheduler/maintenance.ts +20 -8
  192. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +1 -11
  193. package/src/runtime/control-plane/governance/external-effects.ts +1 -1
  194. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +1 -0
  195. package/src/runtime/control-plane/runtime-cleanup.ts +12 -93
  196. package/src/runtime/evidence/sensitive-output.ts +22 -2
  197. package/src/runtime/execution/jobs/child-reference.ts +11 -0
  198. package/src/runtime/execution/jobs/receipt-recovery.ts +1 -11
  199. package/src/runtime/execution/process-runtime/command-facade.ts +3 -3
  200. package/src/runtime/execution/process-runtime/runtime.ts +20 -16
  201. package/src/runtime/execution/thin-harness/execution-router.ts +16 -16
  202. package/src/runtime/execution/thin-harness/fast-executor.ts +2 -2
  203. package/src/runtime/execution/thin-harness/search-worker.ts +2 -2
  204. package/src/runtime/execution/workers/executor.ts +1 -2
  205. package/src/runtime/maintenance/cleanup.ts +41 -5
  206. package/src/runtime/plugins/action-application.ts +12 -1
  207. package/src/runtime/plugins/app-store-connect-adapter.ts +252 -4
  208. package/src/runtime/plugins/browser-adapter.ts +381 -313
  209. package/src/runtime/plugins/browser-macos-bridge.ts +114 -112
  210. package/src/runtime/plugins/browser-manifest-surface.ts +2 -1
  211. package/src/runtime/plugins/browser-registration.ts +2 -0
  212. package/src/runtime/plugins/browser-runtime.ts +26 -35
  213. package/src/runtime/plugins/computer-chatgpt-browser-adapter-installer.ts +11 -2
  214. package/src/runtime/plugins/computer-registration.ts +76 -9
  215. package/src/runtime/plugins/github-adapter.ts +30 -3
  216. package/src/runtime/plugins/gmail-adapter.ts +166 -1
  217. package/src/runtime/plugins/google-shared.ts +10 -5
  218. package/src/runtime/plugins/ios/remote-xpc-hid.ts +70 -30
  219. package/src/runtime/plugins/ios-adapter.ts +45 -40
  220. package/src/runtime/plugins/ios-agent-device.ts +54 -4
  221. package/src/runtime/plugins/ios-device-ownership.ts +103 -0
  222. package/src/runtime/plugins/ios-physical-device.ts +497 -79
  223. package/src/runtime/plugins/local-system-adapter.ts +1 -99
  224. package/src/runtime/plugins/store.ts +80 -7
  225. package/src/runtime/plugins/types.ts +4 -0
  226. package/src/runtime/projections/git-status-sampler.ts +2 -19
  227. package/src/runtime/recovery/actions.ts +1 -1
  228. package/src/runtime/recovery/lifecycle-inventory.ts +1 -11
  229. package/src/runtime/recovery/probe.ts +2 -2
  230. package/src/runtime/release/release-coordinator.ts +20 -4
  231. package/src/runtime/root/controller-progression-composition.ts +67 -5
  232. package/src/runtime/root/package-connector-service.ts +123 -11
  233. package/src/runtime/root/package-runtime-release.ts +6 -18
  234. package/src/runtime/root/package-runtime-service.ts +7 -13
  235. package/src/runtime/root/release-execution-canary.ts +18 -5
  236. package/src/runtime/root/release-manifest.ts +0 -34
  237. package/src/runtime/root/release-materialize.ts +0 -78
  238. package/src/runtime/root/runtime.ts +1 -2
  239. package/src/runtime/root/scheduled-controller-composition.ts +2 -1
  240. package/src/runtime/root/service.ts +90 -11
  241. package/src/runtime/root/types.ts +0 -6
  242. package/src/runtime/root/workflow-supervisor-composition.ts +207 -19
  243. package/src/runtime/root/workflow-supervisor-runtime.ts +365 -10
  244. package/src/runtime/safe-tooling/google-credential-store.ts +1 -11
  245. package/src/runtime/safe-tooling/ios-development.ts +22 -8
  246. package/src/runtime/safe-tooling/job-summary.ts +1 -1
  247. package/src/runtime/safe-tooling/workspace-auth.ts +4 -1
  248. package/src/runtime/shared/atomic-text-file.ts +21 -0
  249. package/src/runtime/shared/json-files.ts +8 -3
  250. package/src/runtime/standalone-recovery/core.ts +189 -174
  251. package/src/runtime/standalone-recovery/entry.ts +62 -30
  252. package/src/runtime/standalone-recovery/operation-lock.ts +11 -1
  253. package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +1 -0
  254. package/src/runtime/workflow/schedules/engine.ts +36 -14
  255. package/src/runtime/workflow/schedules/pending-activation.ts +11 -4
  256. package/src/runtime/workflow/schedules/work-continuation.ts +51 -6
  257. package/supervisor/client.ts +31 -14
  258. package/supervisor/control-plane.ts +210 -115
  259. package/supervisor/forge-validators.ts +88 -21
  260. package/supervisor/native-browser-adapter.ts +393 -28
  261. package/supervisor/native-messaging/host.ts +21 -2
  262. package/supervisor/protocol.ts +74 -26
  263. package/supervisor/server.ts +16 -8
  264. package/supervisor/store.ts +476 -57
  265. package/supervisor/types.ts +19 -13
  266. package/SKILL.md +0 -427
  267. package/adapters/computer/chatgpt-target-router.ts +0 -103
  268. package/adapters/mcp/runtime-gateway/automation-receipt-adapter.ts +0 -87
  269. package/adapters/mcp/runtime-gateway/work-validation-reconciler.ts +0 -1
  270. package/adapters/mcp/toolset-selection.ts +0 -41
  271. package/agents/openai.yaml +0 -4
  272. package/assets/skill-hooks.json +0 -41
  273. package/assets/skill-version.json +0 -189
  274. package/assets/skills/claude-review/SKILL.md +0 -231
  275. package/assets/skills/codex-review/SKILL.md +0 -103
  276. package/assets/templates/helpers/check-skill-version.ts +0 -193
  277. package/scripts/check-skill-version.ts +0 -5
  278. package/scripts/ensure-codegraph.sh +0 -16
  279. package/scripts/run-skill-hook.ts +0 -244
  280. package/scripts/sync-codex-installed-copies.sh +0 -182
  281. package/src/cli/commands/tools.ts +0 -167
  282. package/src/cli/mcp/access-mode.ts +0 -2
  283. package/src/cli/mcp/access-tools.ts +0 -2
  284. package/src/cli/mcp/audit.ts +0 -2
  285. package/src/cli/mcp/auth.ts +0 -2
  286. package/src/cli/mcp/instructions.ts +0 -2
  287. package/src/cli/mcp/legacy-context.ts +0 -2
  288. package/src/cli/mcp/legacy-tool-service.ts +0 -2
  289. package/src/cli/mcp/multi-repository.ts +0 -2
  290. package/src/cli/mcp/oauth.ts +0 -2
  291. package/src/cli/mcp/openai-secure-tunnel.ts +0 -2
  292. package/src/cli/mcp/paths.ts +0 -2
  293. package/src/cli/mcp/policy.ts +0 -2
  294. package/src/cli/mcp/post-finalize-work-attribution.ts +0 -2
  295. package/src/cli/mcp/proxy-env.ts +0 -2
  296. package/src/cli/mcp/readiness-projection.ts +0 -2
  297. package/src/cli/mcp/redaction.ts +0 -2
  298. package/src/cli/mcp/repo.ts +0 -2
  299. package/src/cli/mcp/repository-tools.ts +0 -2
  300. package/src/cli/mcp/server.ts +0 -2
  301. package/src/cli/mcp/setup.ts +0 -2
  302. package/src/cli/mcp/tool-capability-cache.ts +0 -2
  303. package/src/cli/mcp/tool-contract.ts +0 -2
  304. package/src/cli/mcp/tools.ts +0 -2
  305. package/src/cli/mcp/toolset-names.ts +0 -2
  306. package/src/cli/mcp/toolset-selection.ts +0 -2
  307. package/src/cli/mcp/toolset.ts +0 -2
  308. package/src/cli/mcp/transports/http.ts +0 -2
  309. package/src/cli/mcp/transports/session-registry.ts +0 -2
  310. package/src/cli/mcp/transports/stdio.ts +0 -2
  311. package/src/cli/mcp/types.ts +0 -2
  312. package/src/cli/mcp/umbrella-tools.ts +0 -2
  313. package/src/cli/tools/codegraph.ts +0 -695
  314. package/src/core/adoption/helper-wrapper-plan.ts +0 -159
  315. package/src/runtime/context/codegraph-cache-boundary.ts +0 -255
  316. package/src/runtime/context/codegraph-read-provider.ts +0 -611
  317. package/src/runtime/context/codegraph-sidecar.cjs +0 -248
  318. package/src/runtime/control-plane/codegraph-cache-retention.ts +0 -164
  319. package/src/runtime/gateway/mcp/execution-tools.ts +0 -2
  320. package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +0 -2
  321. package/src/runtime/gateway/mcp/persisted-check-process.ts +0 -2
  322. package/src/runtime/gateway/mcp/process-tools.ts +0 -2
  323. package/src/runtime/gateway/mcp/router.ts +0 -2
  324. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +0 -2
  325. package/src/runtime/gateway/mcp/runtime-tools.ts +0 -2
  326. package/src/runtime/gateway/mcp/work-validation-reconciler.ts +0 -2
  327. package/src/runtime/plugins/browser-provider-registry.ts +0 -2
  328. package/src/runtime/plugins/computer-chatgpt-macos-target.ts +0 -891
@@ -28,7 +28,6 @@ export interface McpServeOptions {
28
28
  devRunnerAgents?: string;
29
29
  devRunnerTimeoutMs?: string;
30
30
  devRunnerMaxTimeoutMs?: string;
31
- toolset?: 'facade' | 'core' | 'advanced' | 'full';
32
31
  }
33
32
 
34
33
  interface McpAccessOptions {
@@ -105,7 +104,6 @@ async function runRepositoryAccessCommand(
105
104
  repo: rawOpts.repo ?? '.',
106
105
  controllerHome: rawOpts.controllerHome,
107
106
  profile: 'controller',
108
- toolset: 'core',
109
107
  });
110
108
  const result = callAccessTool(ctx, toolName, {
111
109
  repo_id: rawOpts.repoId,
@@ -170,7 +168,6 @@ export function buildMcpCommand(): Command {
170
168
  .option('--host <host>', 'HTTP bind host', '127.0.0.1')
171
169
  .option('--port <port>', 'HTTP bind port', '8765')
172
170
  .option('--profile <profile>', 'MCP profile: planner|executor|orchestrator|controller', 'controller')
173
- .option('--toolset <toolset>', 'Controller toolset: facade|core|advanced|full (default advanced; facade is an explicit five-tool ChatGPT surface)')
174
171
  .option('--auth <mode>', 'HTTP auth mode: oauth|bearer|none', 'oauth')
175
172
  .option('--enable-chatgpt-browser', 'Expose tools that operate the user logged-in ChatGPT Web browser session')
176
173
  .option('--enable-dev-runner', 'Enable local Codex/Claude task runners for controller or orchestrator profiles')
@@ -191,7 +188,6 @@ export function buildMcpCommand(): Command {
191
188
  repo: rawOpts.repo ?? '.',
192
189
  controllerHome: rawOpts.controllerHome,
193
190
  profile: rawOpts.profile,
194
- toolset: rawOpts.toolset,
195
191
  enableChatgptBrowser: rawOpts.enableChatgptBrowser === true,
196
192
  enableDevRunner: rawOpts.enableDevRunner,
197
193
  devRunnerAgents: rawOpts.devRunnerAgents,
@@ -206,7 +202,6 @@ export function buildMcpCommand(): Command {
206
202
  repo: rawOpts.repo,
207
203
  controllerHome: rawOpts.controllerHome,
208
204
  profile: rawOpts.profile,
209
- toolset: rawOpts.toolset,
210
205
  host: rawOpts.host,
211
206
  port: parsePort(rawOpts.port),
212
207
  auth: rawOpts.auth,
@@ -18,7 +18,6 @@ import {
18
18
  isAgenticPackagingIntent,
19
19
  isBugFixIntent,
20
20
  isBugOrHuntIntent,
21
- isCodegraphRouteIntent,
22
21
  isDoneIntent,
23
22
  isEmbeddedApprovedPlanIntent,
24
23
  isExecutionApprovalIntent,
@@ -185,7 +184,6 @@ export function runPromptGuardVerdictFromPrompt(prompt: string): PromptGuardVerd
185
184
  plan_discussion_continuation: bit(decisionFacts.planningDiscussion),
186
185
  trigger_question: bit(isTriggerQuestionPrompt(ctx)),
187
186
  agentic_packaging: bit(isAgenticPackagingIntent(ctx)),
188
- codegraph_route: bit(isCodegraphRouteIntent(ctx)),
189
187
  nontrivial_code_task: bit(isNontrivialCodeTaskIntent(ctx)),
190
188
  health_route: bit(isHealthRouteIntent(ctx)),
191
189
  spa_day: bit(isSpaDayIntent(ctx)),
@@ -61,7 +61,6 @@ import {
61
61
  scheduleLinuxControllerHomeMigration,
62
62
  type RecoveryControllerHomeMigrationPreflight,
63
63
  } from '../../runtime/standalone-recovery/controller-home-migration';
64
- import { configureCodegraph, ensureCodegraph } from '../tools/codegraph';
65
64
  import { isProcessAlive } from '../../runtime/shared/process-tree';
66
65
  import { systemdUserServicePid, systemdUserUnitName, systemdUserUnitPath } from '../controller/systemd-user';
67
66
  import { installWindowsHostRecoveryPlugin } from '../../runtime/plugins/windows-host-recovery-install';
@@ -749,13 +748,11 @@ export function buildRecoveryCommand(): Command {
749
748
  .requiredOption('--repo <path>', 'Forge source repository root used for Recovery and Runtime immutable releases')
750
749
  .requiredOption('--primary-connector-service-label <label>', 'Primary OAuth/Connector launchd label')
751
750
  .option('--primary-connector-service-plist <path>', 'Absolute primary OAuth/Connector launchd plist path')
752
- .option('--configure-codegraph', 'Initialize/sync CodeGraph and configure repository-scoped MCP for Codex and Claude during the bootstrap')
753
751
  .action(async (opts: {
754
752
  controllerHome: string;
755
753
  repo: string;
756
754
  primaryConnectorServiceLabel: string;
757
755
  primaryConnectorServicePlist?: string;
758
- configureCodegraph?: boolean;
759
756
  }) => {
760
757
  const home = resolveControllerHome(opts.controllerHome);
761
758
  const repoRoot = resolve(opts.repo);
@@ -793,18 +790,9 @@ export function buildRecoveryCommand(): Command {
793
790
  process.exitCode = 1;
794
791
  return;
795
792
  }
796
- let codegraph: Record<string, unknown> | undefined;
797
- let codegraphOk = true;
798
- if (opts.configureCodegraph === true) {
799
- const ensured = ensureCodegraph({ repoRoot, init: true, sync: true, host: 'both' });
800
- const configured = configureCodegraph({ repoRoot, target: 'both', location: 'global' });
801
- codegraphOk = !ensured.actions.some((entry) => entry.status === 'failed')
802
- && !configured.actions.some((entry) => entry.status === 'failed');
803
- codegraph = { ensured, configured };
804
- }
805
793
  const connector = await restartPrimaryConnector(refreshed);
806
- const ok = connector.ok && codegraphOk;
807
- output({ ok, phase: !connector.ok ? 'connector_restart' : !codegraphOk ? 'codegraph_configuration' : 'complete', recovery: installed, runtime, ...(codegraph ? { codegraph } : {}), connector });
794
+ const ok = connector.ok;
795
+ output({ ok, phase: !connector.ok ? 'connector_restart' : 'complete', recovery: installed, runtime, connector });
808
796
  if (!ok) process.exitCode = 1;
809
797
  });
810
798
 
@@ -106,7 +106,23 @@ export function buildRepositoryCommand(): Command {
106
106
  .argument('<repo-id>', 'Stable repository ID'))
107
107
  .action((repoId: string, opts: { controllerHome?: string; json?: boolean }) => {
108
108
  const repository = getRepository(repoId, opts.controllerHome, { includeRemoved: true });
109
- output({ validation: validateRepository(repoId, opts.controllerHome), ...initializeRepository(repository, opts.controllerHome) }, opts.json === true);
109
+ const validation = validateRepository(repoId, opts.controllerHome);
110
+ if (opts.json === true) {
111
+ output({ validation, ...initializeRepository(repository, opts.controllerHome) }, true);
112
+ return;
113
+ }
114
+ // The default validation view is bounded even when the repository has
115
+ // thousands of historical checkout records. Full audit data is opt-in.
116
+ output({
117
+ validation,
118
+ repository: repositorySummary(repository),
119
+ checkouts: {
120
+ total: repository.checkouts.length,
121
+ active: repository.checkouts.filter((checkout) => !checkout.lifecycle || checkout.lifecycle === 'active').length,
122
+ archived: repository.checkouts.filter((checkout) => checkout.lifecycle === 'archived').length,
123
+ removed: repository.checkouts.filter((checkout) => checkout.lifecycle === 'removed').length,
124
+ },
125
+ }, false);
110
126
  });
111
127
 
112
128
  common(command.command('command')
@@ -0,0 +1,41 @@
1
+ /** Shared synchronous setup/adoption command execution; no Runtime or Work authority. */
2
+ import { runProcess as runBoundedProcess } from '../../effects/process-runner';
3
+
4
+ export interface SetupExecutionStep {
5
+ step: string;
6
+ status: "ok" | "skipped" | "failed";
7
+ command?: string[];
8
+ detail?: string;
9
+ stdout?: string;
10
+ stderr?: string;
11
+ }
12
+
13
+ export function runSetupProcess(command: string, args: string[], cwd: string, env?: NodeJS.ProcessEnv): SetupExecutionStep {
14
+ const result = runBoundedProcess(command, args, { cwd, env });
15
+
16
+ return {
17
+ step: "",
18
+ status: result.ok ? "ok" : "failed",
19
+ command: [...result.command],
20
+ stdout: result.stdout,
21
+ stderr: result.stderr || result.error,
22
+ };
23
+ }
24
+
25
+ export function withProcessEnv<T>(env: NodeJS.ProcessEnv | undefined, fn: () => T): T {
26
+ if (!env) return fn();
27
+ const previous = new Map<string, string | undefined>();
28
+ for (const [key, value] of Object.entries(env)) {
29
+ previous.set(key, process.env[key]);
30
+ if (value === undefined) delete process.env[key];
31
+ else process.env[key] = value;
32
+ }
33
+ try {
34
+ return fn();
35
+ } finally {
36
+ for (const [key, value] of previous) {
37
+ if (value === undefined) delete process.env[key];
38
+ else process.env[key] = value;
39
+ }
40
+ }
41
+ }
@@ -6,7 +6,7 @@ import { getAgentJob, markAgentJobClosure, markAgentJobReviewedCompletion, recor
6
6
  import type { AgentJobMeta } from '../agent-jobs/types';
7
7
  import { cleanupIntegratedWorktree, cleanupNoChangeWorktree, integrateAgentJob, IntegrationReviewRequiredError, taskRunDiff } from '../agent-jobs/integration';
8
8
  import { finalizeEditSession, getEditSession, revalidateEditSessionOwnership, rollbackEditSession, verifyEditSession } from '../editing/edit-session';
9
- import { getMcpPolicy } from '../mcp/policy';
9
+ import { getMcpPolicy } from '../../../adapters/mcp/policy';
10
10
  import { resolveRepoPreferredControllerHome } from '../repositories/controller-home';
11
11
  import { withControllerLock } from '../repositories/locks';
12
12
  import { listActiveLeases } from '../../runtime/resources/leases/store';
@@ -2,7 +2,7 @@ import { existsSync, readFileSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { createHash } from 'crypto';
4
4
  import { runProcess } from '../../effects/process-runner';
5
- import { resolveMcpRepoRoot } from '../mcp/repo';
5
+ import { resolveMcpRepoRoot } from '../../../adapters/mcp/repo';
6
6
  import { listControllerChecks, runControllerCheck } from './check-runner';
7
7
  import {
8
8
  compositeFailed,
@@ -1,6 +1,6 @@
1
1
  import { readFileSync } from 'fs';
2
2
  import { posix, resolve } from 'path';
3
- import type { McpPolicy } from '../../mcp/types';
3
+ import type { McpPolicy } from '../../../../adapters/mcp/types';
4
4
  import { readableFile } from './known-paths';
5
5
 
6
6
  const CONTRACT_NAMES = ['AGENTS.md', 'CLAUDE.md'] as const;
@@ -1,6 +1,6 @@
1
1
  import { existsSync, lstatSync, readdirSync, statSync } from 'fs';
2
- import { globMatches, resolveMcpPath } from '../../mcp/paths';
3
- import type { McpPolicy } from '../../mcp/types';
2
+ import { globMatches, resolveMcpPath } from '../../../../adapters/mcp/paths';
3
+ import type { McpPolicy } from '../../../../adapters/mcp/types';
4
4
 
5
5
  export function looksLikeGlob(path: string): boolean { return /[*?{[]/.test(path); }
6
6
  export function coveredByGlob(path: string, globs: string[]): boolean {
@@ -1,8 +1,8 @@
1
1
  import type { ControllerContextImpactDomain, ControllerContextRetrievalMode } from './types';
2
2
 
3
3
  export const DEFAULT_MAX_FILES = 8;
4
- export const DEFAULT_MAX_SNIPPETS = 20;
5
- export const DEFAULT_MAX_CHARS_PER_SNIPPET = 8000;
4
+ export const DEFAULT_MAX_SNIPPETS = 12;
5
+ export const DEFAULT_MAX_CHARS_PER_SNIPPET = 1800;
6
6
  export const DEFAULT_SEARCH_EXCLUDE_GLOBS = [
7
7
  '.git/**', '_ops/**', '.forge/**', '.ai/harness/**', 'node_modules/**', 'dist/**', 'coverage/**', '**/*.bak',
8
8
  ] as const;
@@ -47,13 +47,20 @@ export function pathNoisePenalty(path: string, intent: string, retrievalMode: Co
47
47
  export function textTokens(value: string): string[] {
48
48
  const split = value.replace(/([a-z0-9])([A-Z])/g, '$1 $2').split(/[^\p{L}\p{N}_./:-]+/u)
49
49
  .map((entry) => entry.trim()).filter(Boolean);
50
- return Array.from(new Set(split
50
+ // Preserve full code needles before their broad camel-case fragments.
51
+ return Array.from(new Set([...codeShapedAnchors(value), ...split]
51
52
  .map((entry) => entry.replace(/^[\'"`]+|[\'"`]+$/g, ''))
52
53
  .filter((entry) => entry.length >= 3)
53
54
  .filter((entry) => !STOPWORDS.has(entry.toLowerCase()))
54
55
  .filter((entry) => !/^\d+$/.test(entry)))).slice(0, 12);
55
56
  }
56
57
 
58
+ /** Split explicit multi-symbol input into independent exact needles before search. */
59
+ export function explicitCodeQueries(searchTerms: readonly string[] | undefined): string[] {
60
+ // Camel-case fragments are hints, not separately mandatory matches.
61
+ return Array.from(new Set((searchTerms ?? []).flatMap(codeShapedAnchors))).slice(0, 4);
62
+ }
63
+
57
64
  /** A caller-supplied symbol or path is an exact retrieval needle, not a broad hint. */
58
65
  export function isCodeShapedTerm(value: string): boolean {
59
66
  const term = value.trim();
@@ -77,7 +84,7 @@ function codeShapedAnchors(value: string): string[] {
77
84
  }
78
85
 
79
86
  /**
80
- * CodeGraph's semantic query cost grows materially with long natural-language
87
+ * Structural providers' query cost grows materially with long natural-language
81
88
  * prompts. Keep short intents exact, but compact long intents around concrete
82
89
  * code anchors plus bounded semantic tokens. This affects only structural
83
90
  * discovery; lexical search and raw-source retrieval still consume the full
@@ -1,7 +1,7 @@
1
1
  import { closeSync, openSync, readSync, statSync } from 'fs';
2
2
  import { extname, resolve } from 'path';
3
- import { globMatches } from '../../mcp/paths';
4
- import type { McpPolicy } from '../../mcp/types';
3
+ import { globMatches } from '../../../../adapters/mcp/paths';
4
+ import type { McpPolicy } from '../../../../adapters/mcp/types';
5
5
  import { readableFile } from './known-paths';
6
6
 
7
7
  export const GOVERNANCE_RULES_PATH = '.ai/context/governance-rules.json';
@@ -1,6 +1,6 @@
1
- import type { McpPolicy } from '../../mcp/types';
1
+ import type { McpPolicy } from '../../../../adapters/mcp/types';
2
2
  import { extractTypeScriptSourceSymbolsInSidecar } from '../../../runtime/context/typescript-navigation-process';
3
- import { redactMcpText } from '../../mcp/redaction';
3
+ import { redactMcpText } from '../../../../adapters/mcp/redaction';
4
4
  import { readRepositoryRange, type RepositoryReadSession } from '../../repository/inspector';
5
5
 
6
6
  const DEFAULT_CONTEXT_BEFORE = 12;
@@ -0,0 +1,84 @@
1
+ export type StructuralReadOperation = 'status' | 'search' | 'context' | 'impact' | 'file_dependencies';
2
+ export type StructuralProviderStatus = 'ready' | 'stale' | 'unavailable' | 'degraded';
3
+
4
+ export interface StructuralNodeSummary {
5
+ id: string;
6
+ kind: string;
7
+ name: string;
8
+ qualifiedName?: string;
9
+ filePath: string;
10
+ language?: string;
11
+ startLine: number;
12
+ endLine: number;
13
+ signature?: string;
14
+ }
15
+
16
+ export interface StructuralIndexMetadata {
17
+ initialized: boolean;
18
+ lastIndexedAt: number | null;
19
+ buildVersion: string | null;
20
+ extractionVersion: number | null;
21
+ staleEngine: boolean;
22
+ changedFiles: {
23
+ added: string[];
24
+ modified: string[];
25
+ removed: string[];
26
+ };
27
+ ignoredChangedFileCount?: number;
28
+ }
29
+
30
+ export interface StructuralReadRequest {
31
+ operation: StructuralReadOperation;
32
+ query?: string;
33
+ nodeId?: string;
34
+ filePath?: string;
35
+ limit?: number;
36
+ maxNodes?: number;
37
+ maxDepth?: number;
38
+ refresh?: 'if_stale';
39
+ }
40
+
41
+ export interface StructuralReadProviderResponse {
42
+ schemaVersion: 1;
43
+ provider: 'none';
44
+ operation: StructuralReadOperation;
45
+ ok: boolean;
46
+ status: StructuralProviderStatus;
47
+ metadata?: StructuralIndexMetadata;
48
+ result?: Record<string, unknown>;
49
+ error?: {
50
+ code: string;
51
+ message: string;
52
+ };
53
+ timingsMs: {
54
+ total: number;
55
+ process?: number;
56
+ open?: number;
57
+ query?: number;
58
+ };
59
+ }
60
+
61
+ export function unavailableStructuralProvider(
62
+ _repoRoot: string,
63
+ request: StructuralReadRequest,
64
+ ): StructuralReadProviderResponse {
65
+ return {
66
+ schemaVersion: 1,
67
+ provider: 'none',
68
+ operation: request.operation,
69
+ ok: false,
70
+ status: 'unavailable',
71
+ error: {
72
+ code: 'STRUCTURAL_PROVIDER_UNAVAILABLE',
73
+ message: 'Integrated CodeGraph structural indexing has been decommissioned; use current raw source, lexical search, known_paths, or semantic_navigation.',
74
+ },
75
+ timingsMs: { total: 0 },
76
+ };
77
+ }
78
+
79
+ export async function unavailableStructuralProviderAsync(
80
+ repoRoot: string,
81
+ request: StructuralReadRequest,
82
+ ): Promise<StructuralReadProviderResponse> {
83
+ return unavailableStructuralProvider(repoRoot, request);
84
+ }
@@ -1,15 +1,15 @@
1
- import type { CodeGraphNodeSummary, CodeGraphReadProviderResponse } from '../../../runtime/context/codegraph-read-provider';
1
+ import type { StructuralNodeSummary, StructuralReadProviderResponse } from './structural-provider';
2
2
 
3
- export function structuralResult(response: CodeGraphReadProviderResponse): {
4
- nodes: CodeGraphNodeSummary[];
5
- entryPoints: CodeGraphNodeSummary[];
3
+ export function structuralResult(response: StructuralReadProviderResponse): {
4
+ nodes: StructuralNodeSummary[];
5
+ entryPoints: StructuralNodeSummary[];
6
6
  relatedFiles: string[];
7
7
  truncated: boolean;
8
8
  } {
9
9
  const result = response.result ?? {};
10
10
  return {
11
- nodes: Array.isArray(result.nodes) ? result.nodes as CodeGraphNodeSummary[] : [],
12
- entryPoints: Array.isArray(result.entryPoints) ? result.entryPoints as CodeGraphNodeSummary[] : [],
11
+ nodes: Array.isArray(result.nodes) ? result.nodes as StructuralNodeSummary[] : [],
12
+ entryPoints: Array.isArray(result.entryPoints) ? result.entryPoints as StructuralNodeSummary[] : [],
13
13
  relatedFiles: Array.isArray(result.relatedFiles) ? result.relatedFiles.filter((value): value is string => typeof value === 'string') : [],
14
14
  truncated: result.truncated === true,
15
15
  };
@@ -1,7 +1,6 @@
1
1
  import type { RepositoryReadSession } from '../../repository/inspector';
2
- import type { CodeGraphIndexMetadata, CodeGraphNodeSummary, CodeGraphReadProviderResponse } from '../../../runtime/context/codegraph-read-provider';
3
- import type { queryCodeGraphReadProvider, queryCodeGraphReadProviderAsync } from '../../../runtime/context/codegraph-read-provider';
4
2
  import type { MaterializedSourceSnippet } from './source-materializer';
3
+ import type { StructuralIndexMetadata, StructuralNodeSummary, StructuralReadProviderResponse, unavailableStructuralProvider, unavailableStructuralProviderAsync } from './structural-provider';
5
4
 
6
5
  export const CONTEXT_PACK_SCHEMA_VERSION = 11;
7
6
  export type StructuralContextMode = 'off' | 'auto' | 'required';
@@ -37,8 +36,8 @@ export interface ControllerContextPackOptions {
37
36
  }
38
37
 
39
38
  export interface ControllerContextPackDependencies {
40
- queryCodeGraph?: typeof queryCodeGraphReadProvider;
41
- queryCodeGraphAsync?: typeof queryCodeGraphReadProviderAsync;
39
+ queryStructural?: typeof unavailableStructuralProvider;
40
+ queryStructuralAsync?: typeof unavailableStructuralProviderAsync;
42
41
  }
43
42
 
44
43
  export type ControllerContextPackSnippet = MaterializedSourceSnippet;
@@ -186,7 +185,7 @@ export interface ControllerContextPackProjection {
186
185
  };
187
186
  };
188
187
  structuralContext: {
189
- provider: 'codegraph';
188
+ provider: 'none';
190
189
  requestedMode: StructuralContextMode;
191
190
  status: 'disabled' | 'ready' | 'stale' | 'unavailable' | 'degraded';
192
191
  requiredSatisfied: boolean;
@@ -194,11 +193,11 @@ export interface ControllerContextPackProjection {
194
193
  overlayChangedFiles: string[];
195
194
  baselineRevisionMatches: boolean;
196
195
  query?: string;
197
- entryPoints: Array<Pick<CodeGraphNodeSummary, 'id' | 'kind' | 'name' | 'filePath' | 'startLine' | 'endLine'>>;
196
+ entryPoints: Array<Pick<StructuralNodeSummary, 'id' | 'kind' | 'name' | 'filePath' | 'startLine' | 'endLine'>>;
198
197
  relatedFiles: string[];
199
- metadata?: Pick<CodeGraphIndexMetadata, 'initialized' | 'lastIndexedAt' | 'buildVersion' | 'extractionVersion' | 'staleEngine' | 'changedFiles' | 'ignoredChangedFileCount'>;
198
+ metadata?: Pick<StructuralIndexMetadata, 'initialized' | 'lastIndexedAt' | 'buildVersion' | 'extractionVersion' | 'staleEngine' | 'changedFiles' | 'ignoredChangedFileCount'>;
200
199
  fallbackReason?: string;
201
- timingsMs?: CodeGraphReadProviderResponse['timingsMs'];
200
+ timingsMs?: StructuralReadProviderResponse['timingsMs'];
202
201
  truncated: boolean;
203
202
  };
204
203
  impactContext: {
@@ -212,7 +211,7 @@ export interface ControllerContextPackProjection {
212
211
  relevantChecks: string[];
213
212
  architectureContracts: string[];
214
213
  coverageGaps: string[];
215
- relationSources: Array<'codegraph' | 'lexical' | 'forge_checks'>;
214
+ relationSources: Array<'structural' | 'lexical' | 'forge_checks'>;
216
215
  freshness: {
217
216
  structuralStatus: 'disabled' | 'ready' | 'stale' | 'unavailable' | 'degraded';
218
217
  lastIndexedAt?: number | null;