@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.
- package/AGENTS.md +5 -2
- package/CHANGELOG.md +20 -0
- package/README.en.md +24 -3
- package/README.md +10 -6
- package/README.zh-CN.md +5 -3
- package/THIRD_PARTY_NOTICES.md +1 -2
- package/adapters/chatgpt/browser-delivery-runtime.ts +5 -3
- package/adapters/chatgpt/provider-delivery.ts +1 -1
- package/adapters/chatgpt/work-conversation-binding-store.ts +20 -1
- package/adapters/computer/chatgpt-extension-target.ts +295 -50
- package/adapters/computer/chrome-extension/background.js +227 -71
- package/adapters/computer/chrome-extension/content.js +181 -157
- package/adapters/computer/chrome-extension/manifest.json +3 -1
- package/adapters/computer/desktop-operator-provider.ts +18 -6
- package/adapters/computer/interaction-target-authority.ts +39 -9
- package/adapters/mcp/access-mode.ts +18 -39
- package/adapters/mcp/auth.ts +2 -6
- package/adapters/mcp/instructions.ts +2 -2
- package/adapters/mcp/multi-repository.ts +7 -28
- package/adapters/mcp/runtime-gateway/context-adapter.ts +79 -40
- package/adapters/mcp/runtime-gateway/context-pack-sidecar.ts +7 -15
- package/adapters/mcp/runtime-gateway/execution-tools.ts +7 -13
- package/adapters/mcp/runtime-gateway/plugin-adapter.ts +16 -3
- package/adapters/mcp/runtime-gateway/process-tools.ts +3 -21
- package/adapters/mcp/runtime-gateway/router.ts +3 -5
- package/adapters/mcp/runtime-gateway/routing-policy.ts +17 -10
- package/adapters/mcp/runtime-gateway/runtime-observation-adapter.ts +1 -1
- package/adapters/mcp/runtime-gateway/runtime-tool-definitions.ts +14 -9
- package/adapters/mcp/runtime-gateway/runtime-tools.ts +1 -5
- package/adapters/mcp/runtime-gateway/scheduler-adapter.ts +36 -1
- package/adapters/mcp/runtime-gateway/status-inbox-adapter.ts +58 -4
- package/adapters/mcp/runtime-gateway/typescript-navigation-sidecar.ts +7 -3
- package/adapters/mcp/runtime-gateway/work-adapter.ts +16 -16
- package/adapters/mcp/runtime-gateway/work-input-wire-migration.ts +0 -17
- package/adapters/mcp/runtime-gateway/work-semantic-operations.ts +69 -12
- package/adapters/mcp/runtime-gateway/workflow-supervisor-adapter.ts +26 -2
- package/adapters/mcp/server.ts +24 -3
- package/adapters/mcp/setup.ts +4 -10
- package/adapters/mcp/tool-mapping/access-tools.ts +0 -6
- package/adapters/mcp/tool-mapping/legacy-tool-service.ts +672 -2935
- package/adapters/mcp/tool-mapping/post-finalize-work-attribution.ts +1 -1
- package/adapters/mcp/tool-mapping/repository-tools.ts +52 -86
- package/adapters/mcp/toolset-names.ts +11 -42
- package/adapters/mcp/toolset.ts +16 -90
- package/{src/cli → adapters}/mcp/transports/AGENTS.md +5 -5
- package/{src/cli → adapters}/mcp/transports/CLAUDE.md +5 -5
- package/adapters/mcp/transports/http-observation.ts +18 -6
- package/adapters/mcp/transports/http-post-lifecycle.ts +19 -0
- package/adapters/mcp/transports/http.ts +54 -14
- package/adapters/mcp/types.ts +0 -6
- package/assets/hooks/lib/session-state.sh +0 -38
- package/assets/hooks/post-bash.sh +1 -1
- package/assets/hooks/post-tool-observer.sh +0 -5
- package/assets/hooks/prompt-guard.sh +0 -55
- package/assets/partials/04-project-structure.partial.md +1 -1
- package/assets/partials/07-footer.partial.md +1 -1
- package/assets/partials-agents/02-operating-mode.partial.md +1 -1
- package/assets/partials-agents/08-deep-docs.partial.md +1 -1
- package/assets/reference-configs/agentic-development-flow.md +1 -1
- package/assets/reference-configs/external-tooling.md +0 -76
- package/assets/reference-configs/release-deploy.md +1 -1
- package/assets/templates/helpers/architecture-queue.sh +1 -1
- package/assets/templates/helpers/check-agent-tooling.sh +1 -327
- package/assets/templates/helpers/check-task-workflow.sh +1 -1
- package/assets/templates/helpers/ensure-task-workflow.sh +0 -14
- package/assets/templates/helpers/migrate-project-template.sh +2 -2
- package/assets/workflow-contract.v1.json +0 -2
- package/docs/README.md +5 -2
- package/docs/architecture/CURRENT.md +114 -30
- package/docs/architecture/decisions/20260904-ios-device-migration-baseline.md +42 -0
- package/docs/architecture/decisions/20260918-stable-candidate-release-lifecycle.md +15 -2
- package/docs/architecture/decisions/20260924-thin-semantic-working-context.md +4 -2
- package/docs/architecture/decisions/20261001-supervisor-turn-authority.md +109 -4
- package/docs/architecture/decisions/20261009-exact-code-context-discovery.md +19 -0
- package/docs/architecture/decisions/20261009-generated-xcode-cache-retention.md +37 -0
- package/docs/architecture/decisions/20261011-autonomous-continuation-convergence.md +597 -0
- package/docs/architecture/decisions/20261017-edit-session-finalization-reconciliation.md +17 -0
- package/docs/architecture/decisions/20261019-retire-host-skills.md +16 -0
- package/docs/architecture/diagrams/agentic-dev-plugin-architecture.html +1 -1
- package/docs/architecture/domains/public-surface.md +3 -5
- package/docs/architecture/domains/verification.md +5 -5
- package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +2 -2
- package/docs/architecture/requests/2026-09-04-computer-plugin-workflow-taxonomy.md +4 -4
- package/docs/architecture/reviews/20261015-code-search-runtime-acceptance.md +75 -0
- package/docs/forge-plugin-management.md +14 -2
- package/docs/operations/controller-browser-plugin.md +23 -0
- package/docs/operations/features.md +6 -7
- package/docs/operations/features.zh-CN.md +1 -1
- package/docs/operations/github-repository.md +4 -4
- package/docs/operations/github-semantic-release-projection.md +20 -0
- package/docs/operations/homebrew.md +2 -2
- package/docs/operations/mcp-tool-exposure.md +13 -54
- package/docs/operations/runtime-performance-diagnostics.md +8 -0
- package/docs/operations/standalone-disaster-recovery.md +1 -1
- package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
- package/docs/tutorials/03-first-repository-task.md +2 -0
- package/docs/wiki/Computer-and-Plugins.md +78 -0
- package/docs/wiki/Computer-and-Plugins.zh-CN.md +88 -0
- package/docs/wiki/Home.md +16 -2
- package/docs/wiki/Implementation.md +24 -12
- package/docs/wiki/Installation.md +28 -32
- package/docs/wiki/Integrations.md +4 -0
- package/docs/wiki/Quick-Start.md +35 -22
- package/docs/wiki/Releases-and-Upgrades.md +15 -25
- package/docs/wiki/_Sidebar.md +5 -1
- package/package.json +1 -12
- package/packages/kernel/controller/infrastructure/controller-session-store.ts +63 -38
- package/packages/kernel/identity/infrastructure/activity-projection-store.ts +10 -0
- package/packages/kernel/scheduler/application/eligibility.ts +4 -1
- package/packages/kernel/scheduler/infrastructure/schedule-store.ts +13 -10
- package/packages/kernel/work/application/work-service.ts +1 -0
- package/packages/kernel/work/domain/repository-completion-receipt.ts +1 -1
- package/packages/kernel/work/domain/state-machine.ts +9 -2
- package/packages/kernel/work/infrastructure/work-contract-store.ts +28 -1
- package/packages/plugin-runtime/browser/provider-registry.ts +12 -36
- package/packages/plugin-runtime/computer/conversation-target.ts +17 -7
- package/scripts/assemble-template.ts +11 -72
- package/scripts/check-mcp-compatibility.ts +55 -74
- package/scripts/check-package-identity.mjs +0 -5
- package/scripts/check-runtime-architecture.mjs +305 -28
- package/scripts/init-project.sh +0 -46
- package/scripts/install-ios-hid-toolchain.sh +60 -0
- package/scripts/install-standalone-recovery.ts +1 -1
- package/scripts/lib/project-init-lib.sh +3 -3
- package/scripts/migrate-windows-wsl-controller-home.ts +2 -0
- package/scripts/open-source-audit-allowlist.txt +0 -1
- package/scripts/run-governed-gate.ts +2 -0
- package/scripts/smoke-ios-physical-device.ts +38 -10
- package/scripts/smoke-mcp-http-runtime.ts +7 -8
- package/scripts/smoke-mcp-tool-surface.ts +27 -41
- package/scripts/smoke-workflow-supervisor-chrome-adapter.ts +6 -3
- package/scripts/sync-generated-authority.mjs +0 -1
- package/src/cli/agent-jobs/executor-health.ts +1 -1
- package/src/cli/agent-jobs/integration.ts +2 -2
- package/src/cli/chatgpt-browser/file-policy.ts +2 -2
- package/src/cli/commands/doctor.ts +1 -143
- package/src/cli/commands/global-runtime.ts +3 -196
- package/src/cli/commands/init-hook.ts +6 -23
- package/src/cli/commands/init.ts +3 -252
- package/src/cli/commands/mcp.ts +0 -5
- package/src/cli/commands/prompt-guard-decision.ts +0 -2
- package/src/cli/commands/recovery.ts +2 -14
- package/src/cli/commands/repository.ts +17 -1
- package/src/cli/commands/setup-execution.ts +41 -0
- package/src/cli/controller/completion-orchestrator.ts +1 -1
- package/src/cli/controller/composite-operations.ts +1 -1
- package/src/cli/controller/context/instruction-context.ts +1 -1
- package/src/cli/controller/context/known-paths.ts +2 -2
- package/src/cli/controller/context/query-planning.ts +11 -4
- package/src/cli/controller/context/rule-resolution.ts +2 -2
- package/src/cli/controller/context/source-materializer.ts +2 -2
- package/src/cli/controller/context/structural-provider.ts +84 -0
- package/src/cli/controller/context/structural.ts +6 -6
- package/src/cli/controller/context/types.ts +8 -9
- package/src/cli/controller/context-pack.ts +97 -76
- package/src/cli/controller/operational-plan.ts +1 -1
- package/src/cli/controller/systemd-user.ts +4 -10
- package/src/cli/editing/edit-session.ts +17 -5
- package/src/cli/github/github.ts +4 -4
- package/src/cli/github/semantic-projection.ts +174 -0
- package/src/cli/hook/prompt-intents.ts +0 -9
- package/src/cli/index.ts +1 -43
- package/src/cli/local-bridge/connector-freshness.ts +1 -12
- package/src/cli/local-bridge/console-automations.ts +1 -1
- package/src/cli/local-bridge/console-view-models.ts +1 -1
- package/src/cli/local-bridge/facade-api.ts +0 -2
- package/src/cli/repositories/command-classifier.ts +0 -9
- package/src/cli/repositories/command-scope.ts +2 -2
- package/src/cli/repositories/locks.ts +20 -0
- package/src/cli/repositories/registry.ts +2 -1
- package/src/cli/repositories/safe-patch.ts +2 -12
- package/src/cli/repositories/structured-git.ts +39 -3
- package/src/cli/repository/inspector.ts +185 -343
- package/src/effects/process-runner.ts +17 -1
- package/src/runtime/context/generic-lsp-provider.ts +1 -1
- package/src/runtime/context/semantic-navigation-contract.ts +7 -0
- package/src/runtime/context/semantic-navigation.ts +1 -1
- package/src/runtime/control-plane/cleanup-artifact-retention.ts +4 -4
- package/src/runtime/control-plane/execution/work-delivery-service.ts +150 -31
- package/src/runtime/control-plane/execution/work-handle-authority.ts +12 -4
- package/src/runtime/control-plane/execution/work-handle-store.ts +53 -1
- package/src/runtime/control-plane/execution/work-operation-service.ts +20 -10
- package/src/runtime/control-plane/execution/work-preparation-service.ts +108 -4
- package/src/runtime/control-plane/execution/work-process-evidence.ts +2 -2
- package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +28 -13
- package/src/runtime/control-plane/execution/work-validation-reconciler.ts +5 -1
- package/src/runtime/control-plane/execution/work-verification-snapshot.ts +1 -1
- package/src/runtime/control-plane/facade/capability-registry.ts +2 -0
- package/src/runtime/control-plane/facade/work-continuation.ts +1 -1
- package/src/runtime/control-plane/generated-cache-retention.ts +114 -63
- package/src/runtime/control-plane/global-scheduler/maintenance.ts +20 -8
- package/src/runtime/control-plane/global-scheduler/reconciliation.ts +1 -11
- package/src/runtime/control-plane/governance/external-effects.ts +1 -1
- package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +1 -0
- package/src/runtime/control-plane/runtime-cleanup.ts +12 -93
- package/src/runtime/evidence/sensitive-output.ts +22 -2
- package/src/runtime/execution/jobs/child-reference.ts +11 -0
- package/src/runtime/execution/jobs/receipt-recovery.ts +1 -11
- package/src/runtime/execution/process-runtime/command-facade.ts +3 -3
- package/src/runtime/execution/process-runtime/runtime.ts +20 -16
- package/src/runtime/execution/thin-harness/execution-router.ts +16 -16
- package/src/runtime/execution/thin-harness/fast-executor.ts +2 -2
- package/src/runtime/execution/thin-harness/search-worker.ts +2 -2
- package/src/runtime/execution/workers/executor.ts +1 -2
- package/src/runtime/maintenance/cleanup.ts +41 -5
- package/src/runtime/plugins/action-application.ts +12 -1
- package/src/runtime/plugins/app-store-connect-adapter.ts +252 -4
- package/src/runtime/plugins/browser-adapter.ts +381 -313
- package/src/runtime/plugins/browser-macos-bridge.ts +114 -112
- package/src/runtime/plugins/browser-manifest-surface.ts +2 -1
- package/src/runtime/plugins/browser-registration.ts +2 -0
- package/src/runtime/plugins/browser-runtime.ts +26 -35
- package/src/runtime/plugins/computer-chatgpt-browser-adapter-installer.ts +11 -2
- package/src/runtime/plugins/computer-registration.ts +76 -9
- package/src/runtime/plugins/github-adapter.ts +30 -3
- package/src/runtime/plugins/gmail-adapter.ts +166 -1
- package/src/runtime/plugins/google-shared.ts +10 -5
- package/src/runtime/plugins/ios/remote-xpc-hid.ts +70 -30
- package/src/runtime/plugins/ios-adapter.ts +45 -40
- package/src/runtime/plugins/ios-agent-device.ts +54 -4
- package/src/runtime/plugins/ios-device-ownership.ts +103 -0
- package/src/runtime/plugins/ios-physical-device.ts +497 -79
- package/src/runtime/plugins/local-system-adapter.ts +1 -99
- package/src/runtime/plugins/store.ts +80 -7
- package/src/runtime/plugins/types.ts +4 -0
- package/src/runtime/projections/git-status-sampler.ts +2 -19
- package/src/runtime/recovery/actions.ts +1 -1
- package/src/runtime/recovery/lifecycle-inventory.ts +1 -11
- package/src/runtime/recovery/probe.ts +2 -2
- package/src/runtime/release/release-coordinator.ts +20 -4
- package/src/runtime/root/controller-progression-composition.ts +67 -5
- package/src/runtime/root/package-connector-service.ts +123 -11
- package/src/runtime/root/package-runtime-release.ts +6 -18
- package/src/runtime/root/package-runtime-service.ts +7 -13
- package/src/runtime/root/release-execution-canary.ts +18 -5
- package/src/runtime/root/release-manifest.ts +0 -34
- package/src/runtime/root/release-materialize.ts +0 -78
- package/src/runtime/root/runtime.ts +1 -2
- package/src/runtime/root/scheduled-controller-composition.ts +2 -1
- package/src/runtime/root/service.ts +90 -11
- package/src/runtime/root/types.ts +0 -6
- package/src/runtime/root/workflow-supervisor-composition.ts +207 -19
- package/src/runtime/root/workflow-supervisor-runtime.ts +365 -10
- package/src/runtime/safe-tooling/google-credential-store.ts +1 -11
- package/src/runtime/safe-tooling/ios-development.ts +22 -8
- package/src/runtime/safe-tooling/job-summary.ts +1 -1
- package/src/runtime/safe-tooling/workspace-auth.ts +4 -1
- package/src/runtime/shared/atomic-text-file.ts +21 -0
- package/src/runtime/shared/json-files.ts +8 -3
- package/src/runtime/standalone-recovery/core.ts +189 -174
- package/src/runtime/standalone-recovery/entry.ts +62 -30
- package/src/runtime/standalone-recovery/operation-lock.ts +11 -1
- package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +1 -0
- package/src/runtime/workflow/schedules/engine.ts +36 -14
- package/src/runtime/workflow/schedules/pending-activation.ts +11 -4
- package/src/runtime/workflow/schedules/work-continuation.ts +51 -6
- package/supervisor/client.ts +31 -14
- package/supervisor/control-plane.ts +210 -115
- package/supervisor/forge-validators.ts +88 -21
- package/supervisor/native-browser-adapter.ts +393 -28
- package/supervisor/native-messaging/host.ts +21 -2
- package/supervisor/protocol.ts +74 -26
- package/supervisor/server.ts +16 -8
- package/supervisor/store.ts +476 -57
- package/supervisor/types.ts +19 -13
- package/SKILL.md +0 -427
- package/adapters/computer/chatgpt-target-router.ts +0 -103
- package/adapters/mcp/runtime-gateway/automation-receipt-adapter.ts +0 -87
- package/adapters/mcp/runtime-gateway/work-validation-reconciler.ts +0 -1
- package/adapters/mcp/toolset-selection.ts +0 -41
- package/agents/openai.yaml +0 -4
- package/assets/skill-hooks.json +0 -41
- package/assets/skill-version.json +0 -189
- package/assets/skills/claude-review/SKILL.md +0 -231
- package/assets/skills/codex-review/SKILL.md +0 -103
- package/assets/templates/helpers/check-skill-version.ts +0 -193
- package/scripts/check-skill-version.ts +0 -5
- package/scripts/ensure-codegraph.sh +0 -16
- package/scripts/run-skill-hook.ts +0 -244
- package/scripts/sync-codex-installed-copies.sh +0 -182
- package/src/cli/commands/tools.ts +0 -167
- package/src/cli/mcp/access-mode.ts +0 -2
- package/src/cli/mcp/access-tools.ts +0 -2
- package/src/cli/mcp/audit.ts +0 -2
- package/src/cli/mcp/auth.ts +0 -2
- package/src/cli/mcp/instructions.ts +0 -2
- package/src/cli/mcp/legacy-context.ts +0 -2
- package/src/cli/mcp/legacy-tool-service.ts +0 -2
- package/src/cli/mcp/multi-repository.ts +0 -2
- package/src/cli/mcp/oauth.ts +0 -2
- package/src/cli/mcp/openai-secure-tunnel.ts +0 -2
- package/src/cli/mcp/paths.ts +0 -2
- package/src/cli/mcp/policy.ts +0 -2
- package/src/cli/mcp/post-finalize-work-attribution.ts +0 -2
- package/src/cli/mcp/proxy-env.ts +0 -2
- package/src/cli/mcp/readiness-projection.ts +0 -2
- package/src/cli/mcp/redaction.ts +0 -2
- package/src/cli/mcp/repo.ts +0 -2
- package/src/cli/mcp/repository-tools.ts +0 -2
- package/src/cli/mcp/server.ts +0 -2
- package/src/cli/mcp/setup.ts +0 -2
- package/src/cli/mcp/tool-capability-cache.ts +0 -2
- package/src/cli/mcp/tool-contract.ts +0 -2
- package/src/cli/mcp/tools.ts +0 -2
- package/src/cli/mcp/toolset-names.ts +0 -2
- package/src/cli/mcp/toolset-selection.ts +0 -2
- package/src/cli/mcp/toolset.ts +0 -2
- package/src/cli/mcp/transports/http.ts +0 -2
- package/src/cli/mcp/transports/session-registry.ts +0 -2
- package/src/cli/mcp/transports/stdio.ts +0 -2
- package/src/cli/mcp/types.ts +0 -2
- package/src/cli/mcp/umbrella-tools.ts +0 -2
- package/src/cli/tools/codegraph.ts +0 -695
- package/src/core/adoption/helper-wrapper-plan.ts +0 -159
- package/src/runtime/context/codegraph-cache-boundary.ts +0 -255
- package/src/runtime/context/codegraph-read-provider.ts +0 -611
- package/src/runtime/context/codegraph-sidecar.cjs +0 -248
- package/src/runtime/control-plane/codegraph-cache-retention.ts +0 -164
- package/src/runtime/gateway/mcp/execution-tools.ts +0 -2
- package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +0 -2
- package/src/runtime/gateway/mcp/persisted-check-process.ts +0 -2
- package/src/runtime/gateway/mcp/process-tools.ts +0 -2
- package/src/runtime/gateway/mcp/router.ts +0 -2
- package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +0 -2
- package/src/runtime/gateway/mcp/runtime-tools.ts +0 -2
- package/src/runtime/gateway/mcp/work-validation-reconciler.ts +0 -2
- package/src/runtime/plugins/browser-provider-registry.ts +0 -2
- 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 '../
|
|
6
|
-
import { runtimePolicy } from '../
|
|
7
|
-
import { buildMcpToolDefinitions } from '../
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
const
|
|
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
|
|
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', '
|
|
27
|
+
'repository_list', 'repository_get', 'repository_register', 'execute_command',
|
|
33
28
|
'read_repository_file', 'repository_safe_patch_apply', 'run_check', 'plugin_action_execute',
|
|
34
|
-
'
|
|
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
|
|
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.
|
|
43
|
-
//
|
|
44
|
-
|
|
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[] = [...
|
|
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(
|
|
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') !==
|
|
120
|
-
failures.push(`
|
|
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 !==
|
|
123
|
-
failures.push(`stable ChatGPT tool-name fingerprint changed: ${defaultFingerprint} != ${
|
|
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(`
|
|
127
|
-
} else if (stableSchemaFingerprint !==
|
|
128
|
-
failures.push(`
|
|
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 >
|
|
131
|
-
failures.push(`
|
|
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(`
|
|
134
|
-
if (missingDefault.length) failures.push(`
|
|
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(`
|
|
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(
|
|
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
|
-
|
|
174
|
-
|
|
175
|
-
stableSchemaFingerprint,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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");
|