@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
@@ -1,47 +1,45 @@
1
1
  import { readFileSync } from 'fs';
2
2
  import { FORGE_TOOL_SURFACE, FORGE_VERSION, forgeToolSurfaceFingerprint } from '../src/cli/controller/runtime-config';
3
- import { injectAutomationEnvelopeFields } from '../adapters/mcp/runtime-gateway/automation-receipt-adapter';
4
3
  import { injectCognitionSettlementFields } from '../adapters/mcp/runtime-gateway/cognition-settlement';
5
- import { injectDurableCommandFields } from '../src/runtime/gateway/mcp/router';
6
- import { runtimePolicy } from '../src/cli/mcp/multi-repository';
7
- import { buildMcpToolDefinitions } from '../src/cli/mcp/tools';
8
- import { accessToolDefinitions } from '../src/cli/mcp/access-tools';
9
- import { repositoryToolDefinitions } from '../src/cli/mcp/repository-tools';
10
- import { runtimeToolDefinitions } from '../src/runtime/gateway/mcp/runtime-tools';
11
- import { executionToolDefinitions } from '../src/runtime/gateway/mcp/execution-tools';
12
- import { processToolDefinitions } from '../src/runtime/gateway/mcp/process-tools';
13
- import {
14
- ADVANCED_CONTROLLER_TOOL_NAMES,
15
- CORE_CONTROLLER_TOOL_NAMES,
16
- DEFAULT_CONTROLLER_TOOL_NAMES,
17
- PREFERRED_FACADE_TOOL_NAMES,
18
- STABLE_CONTROLLER_TOOL_NAMES,
19
- } from '../src/cli/mcp/toolset';
4
+ import { injectDurableCommandFields } from '../adapters/mcp/runtime-gateway/router';
5
+ import { runtimePolicy } from '../adapters/mcp/multi-repository';
6
+ import { buildMcpToolDefinitions } from '../adapters/mcp/tool-mapping/tools';
7
+ import { controllerExposureSnapshot } from '../adapters/mcp/toolset';
8
+ import type { MultiRepositoryMcpToolContext } from '../adapters/mcp/multi-repository';
9
+ import { accessToolDefinitions } from '../adapters/mcp/tool-mapping/access-tools';
10
+ import { repositoryToolDefinitions } from '../adapters/mcp/tool-mapping/repository-tools';
11
+ import { runtimeToolDefinitions } from '../adapters/mcp/runtime-gateway/runtime-tools';
12
+ import { executionToolDefinitions } from '../adapters/mcp/runtime-gateway/execution-tools';
13
+ import { processToolDefinitions } from '../adapters/mcp/runtime-gateway/process-tools';
14
+ import { PREFERRED_CONTROLLER_TOOL_NAMES, PREFERRED_FACADE_TOOL_NAMES } from '../adapters/mcp/toolset';
20
15
 
21
- // The served ChatGPT schema is intentionally much smaller than the exhaustive
22
- // compatibility catalog. Keep a tight budget so accidental tool additions are
23
- // caught before they become discovery latency and schema-cache churn.
24
- const MAX_DEFAULT_TOOL_COUNT = 24;
16
+ // The preferred model-routing list remains small; actual tools/list always
17
+ // exposes the complete authoritative registry, without exposure modes.
18
+ const MAX_PREFERRED_TOOL_COUNT = 24;
19
+ const EXPECTED_EXPOSED_NAME_FINGERPRINT = '10db066a55335555';
25
20
 
26
21
  // #197 decomposition authority: the public/frozen Tool Contract is an explicit
27
22
  // baseline, independent from whichever internal adapter currently defines a
28
23
  // tool. Adapter extraction may move implementation ownership without silently
29
24
  // changing names, descriptions, input schemas, or annotations.
30
- const EXPECTED_STABLE_CONTROLLER_TOOL_NAMES = [
25
+ const EXPECTED_PREFERRED_CONTROLLER_TOOL_NAMES = [
31
26
  'rh_access', 'rh_status', 'rh_inbox', 'rh_context', 'rh_work', 'capability_execute',
32
- 'repository_list', 'repository_get', 'repository_register', 'repository_command_execute',
27
+ 'repository_list', 'repository_get', 'repository_register', 'execute_command',
33
28
  'read_repository_file', 'repository_safe_patch_apply', 'run_check', 'plugin_action_execute',
34
- 'process_exec', 'process_get', 'process_wait', 'process_logs', 'process_cancel', 'result_read', 'result_search',
29
+ 'process_get', 'process_wait', 'process_logs', 'process_cancel', 'result_read', 'result_search',
35
30
  ] as const;
36
31
  // The stable bounded surface now includes the generic typed capability executor
37
32
  // already shipped on main. V3 Work objective relations intentionally extend only
38
33
  // the existing rh_work input schema; both changes must invalidate stale Connector
39
34
  // schema snapshots without adding a parallel execution or graph authority.
40
- const EXPECTED_STABLE_TOOL_NAME_FINGERPRINT = 'b25da75c1f774e66';
35
+ const EXPECTED_PREFERRED_TOOL_NAME_FINGERPRINT = 'f22e635a213b45fa';
41
36
  // Every public object-schema tool carries shared transport metadata only through
42
- // the final tools/list materialization path. Automation and Cognition settlement
43
- // revisions intentionally invalidate stale Connector schema snapshots.
44
- const EXPECTED_STABLE_TOOL_SCHEMA_FINGERPRINT = '643521037647c28a';
37
+ // the final tools/list materialization path. Tool schema revisions
38
+ // intentionally invalidate stale Connector schema snapshots.
39
+ // 2026-10-15: rh_context gained model-authored search_terms in 5a0f8d839.
40
+ // Removing only that property from the current frozen surface reproduces the
41
+ // preceding 9bd588d157f66fdf fingerprint; the new surface is intentional.
42
+ const EXPECTED_PREFERRED_TOOL_SCHEMA_FINGERPRINT = '793a6c1d07070dc2';
45
43
 
46
44
  const policy = runtimePolicy(process.cwd(), {
47
45
  profile: 'controller',
@@ -63,34 +61,19 @@ const sourceGroups = Object.fromEntries(
63
61
  const allDefinitions = Object.values(sourceDefinitionGroups).flat();
64
62
  const definitionByName = new Map(allDefinitions.map((tool) => [tool.name, tool]));
65
63
  const fullNames = [...new Set(Object.values(sourceGroups).flat())];
66
- const defaultNames: string[] = [...DEFAULT_CONTROLLER_TOOL_NAMES];
67
- const coreNames: string[] = [...CORE_CONTROLLER_TOOL_NAMES];
68
- const advancedNames: string[] = [...ADVANCED_CONTROLLER_TOOL_NAMES];
69
- const catalogNames: string[] = [...STABLE_CONTROLLER_TOOL_NAMES];
64
+ const defaultNames: string[] = [...PREFERRED_CONTROLLER_TOOL_NAMES];
70
65
  const preferredNames: string[] = [...PREFERRED_FACADE_TOOL_NAMES];
71
66
  const defaultFingerprint = forgeToolSurfaceFingerprint(defaultNames);
72
67
  const stableDefinitions = defaultNames
73
68
  .map((name) => definitionByName.get(name)).filter((tool) => tool !== undefined)
74
- .map((tool) => injectCognitionSettlementFields(injectAutomationEnvelopeFields(injectDurableCommandFields(tool))));
69
+ .map((tool) => injectCognitionSettlementFields(injectDurableCommandFields(tool)));
75
70
  const stableSchemaFingerprint = forgeToolSurfaceFingerprint(stableDefinitions);
76
- const catalogFingerprint = forgeToolSurfaceFingerprint(catalogNames);
77
71
  const fullFingerprint = forgeToolSurfaceFingerprint(fullNames);
78
72
  const duplicateDefault = defaultNames.filter((name, index) => defaultNames.indexOf(name) !== index);
79
73
  const missingDefault = defaultNames.filter((name) => !fullNames.includes(name));
80
- const missingCatalog = catalogNames.filter((name) => !fullNames.includes(name));
81
74
  const sourceCollisions = Object.entries(sourceGroups).flatMap(([group, names], groupIndex, entries) =>
82
75
  names.filter((name) => entries.slice(0, groupIndex).some(([, earlier]) => earlier.includes(name)))
83
76
  .map((name) => `${group}:${name}`));
84
- const currentToolNames = new Set([
85
- ...sourceGroups.runtime,
86
- ...sourceGroups.execution,
87
- ...sourceGroups.process,
88
- ...sourceGroups.access,
89
- ...sourceGroups.repository,
90
- ]);
91
- const legacyHandlerSource = readFileSync(new URL('../src/cli/mcp/legacy-tool-service.ts', import.meta.url), 'utf8');
92
- const legacyHandlerNames = [...legacyHandlerSource.matchAll(/case\s+["']([^"']+)["']\s*:/g)].map((match) => match[1]);
93
- const legacyHandlerCollisions = [...new Set(legacyHandlerNames.filter((name) => currentToolNames.has(name)))].sort();
94
77
  const recoveryMcpSource = readFileSync(new URL('../src/runtime/standalone-recovery/mcp-server.ts', import.meta.url), 'utf8');
95
78
  const recoveryStatelessMarkers = [
96
79
  'createMcpHandler',
@@ -116,37 +99,38 @@ for (const marker of recoverySessionAuthorityMarkers) {
116
99
  failures.push(`Standalone Recovery MCP must not own transport-session state: found ${marker}`);
117
100
  }
118
101
  }
119
- if (defaultNames.join('\n') !== EXPECTED_STABLE_CONTROLLER_TOOL_NAMES.join('\n')) {
120
- failures.push(`stable ChatGPT Tool Contract names changed: ${defaultNames.join(', ')}`);
102
+ if (defaultNames.join('\n') !== EXPECTED_PREFERRED_CONTROLLER_TOOL_NAMES.join('\n')) {
103
+ failures.push(`preferred-name schema contract names changed: ${defaultNames.join(', ')}`);
121
104
  }
122
- if (defaultFingerprint !== EXPECTED_STABLE_TOOL_NAME_FINGERPRINT) {
123
- failures.push(`stable ChatGPT tool-name fingerprint changed: ${defaultFingerprint} != ${EXPECTED_STABLE_TOOL_NAME_FINGERPRINT}`);
105
+ if (defaultFingerprint !== EXPECTED_PREFERRED_TOOL_NAME_FINGERPRINT) {
106
+ failures.push(`stable ChatGPT tool-name fingerprint changed: ${defaultFingerprint} != ${EXPECTED_PREFERRED_TOOL_NAME_FINGERPRINT}`);
124
107
  }
125
108
  if (stableDefinitions.length !== defaultNames.length) {
126
- failures.push(`stable ChatGPT Tool Contract definitions are incomplete: ${stableDefinitions.length}/${defaultNames.length}`);
127
- } else if (stableSchemaFingerprint !== EXPECTED_STABLE_TOOL_SCHEMA_FINGERPRINT) {
128
- failures.push(`stable ChatGPT Tool Contract schema fingerprint changed: ${stableSchemaFingerprint} != ${EXPECTED_STABLE_TOOL_SCHEMA_FINGERPRINT}`);
109
+ failures.push(`preferred-name schema contract definitions are incomplete: ${stableDefinitions.length}/${defaultNames.length}`);
110
+ } else if (stableSchemaFingerprint !== EXPECTED_PREFERRED_TOOL_SCHEMA_FINGERPRINT) {
111
+ failures.push(`preferred-name schema contract schema fingerprint changed: ${stableSchemaFingerprint} != ${EXPECTED_PREFERRED_TOOL_SCHEMA_FINGERPRINT}`);
129
112
  }
130
- if (defaultNames.length > MAX_DEFAULT_TOOL_COUNT) {
131
- failures.push(`default ChatGPT tools/list exceeds the schema budget: ${defaultNames.length} > ${MAX_DEFAULT_TOOL_COUNT}`);
113
+ if (defaultNames.length > MAX_PREFERRED_TOOL_COUNT) {
114
+ failures.push(`preferred controller tool list exceeds its advisory size budget: ${defaultNames.length} > ${MAX_PREFERRED_TOOL_COUNT}`);
132
115
  }
133
- if (duplicateDefault.length) failures.push(`default duplicate names: ${[...new Set(duplicateDefault)].join(', ')}`);
134
- if (missingDefault.length) failures.push(`default tools missing from registered definitions: ${missingDefault.join(', ')}`);
135
- if (missingCatalog.length) failures.push(`compatibility catalog tools missing from registered definitions: ${missingCatalog.join(', ')}`);
116
+ if (duplicateDefault.length) failures.push(`preferred-name duplicate names: ${[...new Set(duplicateDefault)].join(', ')}`);
117
+ if (missingDefault.length) failures.push(`preferred tools missing from registered definitions: ${missingDefault.join(', ')}`);
136
118
  if (sourceCollisions.length) failures.push(`tool schema authority collisions: ${sourceCollisions.join(', ')}`);
137
- if (legacyHandlerCollisions.length) failures.push(`legacy execution authority collisions: ${legacyHandlerCollisions.join(', ')}`);
138
- if (coreNames.join('\n') !== defaultNames.join('\n')) {
139
- failures.push('core surface must alias the bounded default ChatGPT surface');
140
- }
141
- if (advancedNames.join('\n') !== defaultNames.join('\n')) {
142
- failures.push('advanced surface must alias the bounded default ChatGPT surface');
143
- }
144
119
  for (const name of ['rh_access', 'rh_status', 'rh_inbox', 'rh_context', 'rh_work']) {
145
120
  if (!preferredNames.includes(name)) failures.push(`preferred facade surface missing: ${name}`);
146
- if (!defaultNames.includes(name)) failures.push(`default surface missing facade tool: ${name}`);
121
+ if (!defaultNames.includes(name)) failures.push(`preferred list missing facade tool: ${name}`);
147
122
  }
148
123
  if (fullNames.length < defaultNames.length) {
149
- failures.push(`full compatibility surface is smaller than default surface: ${fullNames.length} < ${defaultNames.length}`);
124
+ failures.push('complete MCP registry is missing preferred capability names');
125
+ }
126
+ if (fullFingerprint !== EXPECTED_EXPOSED_NAME_FINGERPRINT) {
127
+ failures.push(`complete MCP tool-name fingerprint changed: ${fullFingerprint} != ${EXPECTED_EXPOSED_NAME_FINGERPRINT}`);
128
+ }
129
+ const projectedNames = controllerExposureSnapshot({
130
+ policy, toolset: 'full', controllerHome: process.cwd(), repoRoot: process.cwd(),
131
+ } as MultiRepositoryMcpToolContext).actualToolNames.sort();
132
+ if (projectedNames.join('\n') !== [...fullNames].sort().join('\n')) {
133
+ failures.push('controller_capabilities expectation differs from the complete MCP registry');
150
134
  }
151
135
 
152
136
  const rhWorkDefinition = runtimeToolDefinitions.find((tool) => tool.name === 'rh_work');
@@ -170,16 +154,13 @@ console.log(JSON.stringify({
170
154
  status: 'ok',
171
155
  toolSurface: FORGE_TOOL_SURFACE,
172
156
  version: FORGE_VERSION,
173
- stableToolCount: defaultNames.length,
174
- stableFingerprint: defaultFingerprint,
175
- stableSchemaFingerprint,
176
- defaultToolBudget: MAX_DEFAULT_TOOL_COUNT,
177
- compatibilityCatalogToolCount: catalogNames.length,
178
- compatibilityCatalogFingerprint: catalogFingerprint,
179
- fullCompatibilityToolCount: fullNames.length,
180
- fullCompatibilityFingerprint: fullFingerprint,
157
+ preferredToolCount: defaultNames.length,
158
+ preferredFingerprint: defaultFingerprint,
159
+ preferredSchemaFingerprint: stableSchemaFingerprint,
160
+ preferredToolBudget: MAX_PREFERRED_TOOL_COUNT,
161
+ exposedToolCount: fullNames.length,
162
+ exposedNameFingerprint: fullFingerprint,
181
163
  sourceToolCounts: Object.fromEntries(Object.entries(sourceGroups).map(([name, tools]) => [name, tools.length])),
182
164
  sourceCollisions: [...new Set(sourceCollisions)].sort(),
183
- legacyHandlerCollisions,
184
165
  accessModeChangesSchema: false,
185
166
  }, null, 2));
@@ -8,7 +8,6 @@ const scriptDir = dirname(fileURLToPath(import.meta.url));
8
8
  const root = resolve(scriptDir, "..");
9
9
  const pkg = JSON.parse(readFileSync(resolve(root, "package.json"), "utf8"));
10
10
  const lock = JSON.parse(readFileSync(resolve(root, "package-lock.json"), "utf8"));
11
- const skill = JSON.parse(readFileSync(resolve(root, "assets/skill-version.json"), "utf8"));
12
11
 
13
12
  const expectedName = "@moretea-labs/forge";
14
13
  const requiredFiles = [
@@ -62,10 +61,6 @@ function requireReusableTarballPublisher() {
62
61
  if (pkg.name !== expectedName) fail(`package.json name is ${pkg.name}`);
63
62
  const versionMatch = String(pkg.version ?? "").match(/^(\d+\.\d+\.\d+)(?:-rc\.(\d+))?$/);
64
63
  if (!versionMatch) fail(`package.json version is not a stable or rc semantic version: ${pkg.version}`);
65
- const coreVersion = versionMatch[1];
66
- if (coreVersion !== skill.version || coreVersion !== skill.templateVersion) {
67
- fail(`package core version ${coreVersion} must match workflow versions ${skill.version}/${skill.templateVersion}`);
68
- }
69
64
  if (pkg.publishConfig?.access !== "public") fail("publishConfig.access must be public");
70
65
  if (pkg.publishConfig?.provenance !== true) fail("publishConfig.provenance must be true");
71
66
  if (pkg.publishConfig?.tag !== undefined) fail("publishConfig.tag must be omitted");