@moretea-labs/forge 1.5.1 → 1.7.0
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 +2 -0
- package/CHANGELOG.md +46 -0
- package/CLAUDE.md +2 -0
- package/DESIGN.md +7 -2
- package/README.md +4 -4
- package/README.zh-CN.md +2 -2
- package/SKILL.md +2 -2
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/agents/openai.yaml +1 -1
- package/assets/hooks/hook-input.sh +11 -8
- package/assets/hooks/lib/session-state.sh +10 -7
- package/assets/hooks/lib/workflow-state.sh +13 -177
- package/assets/hooks/post-tool-observer.sh +8 -2
- package/assets/hooks/pre-edit-guard.sh +8 -39
- package/assets/hooks/prompt-guard.sh +7 -83
- package/assets/hooks/session-start-context.sh +56 -1
- package/assets/partials/05-workflow.partial.md +1 -1
- package/assets/partials-agents/03-orchestration.partial.md +1 -1
- package/assets/plugin-registry.v1.json +54 -3
- package/assets/reference-configs/document-generation.md +1 -1
- package/assets/reference-configs/harness-overview.md +1 -1
- package/assets/reference-configs/hook-operations.md +1 -1
- package/assets/reference-configs/sprint-contracts.md +3 -3
- package/assets/skill-version.json +2 -2
- package/assets/templates/contract.template.md +2 -7
- package/assets/templates/helpers/capture-plan.sh +2 -2
- package/assets/templates/helpers/check-task-workflow.sh +4 -4
- package/assets/templates/helpers/contract-worktree.sh +1 -21
- package/assets/templates/helpers/ensure-task-workflow.sh +13 -38
- package/assets/templates/helpers/migrate-project-template.sh +22 -45
- package/assets/templates/helpers/new-plan.sh +1 -1
- package/assets/templates/helpers/plan-to-todo.sh +12 -37
- package/assets/templates/helpers/ship-worktrees.sh +2 -29
- package/assets/templates/helpers/sprint-backlog.sh +6 -6
- package/assets/templates/helpers/verify-contract.sh +1 -111
- package/assets/templates/helpers/verify-sprint.sh +3 -180
- package/assets/templates/plan.template.md +1 -1
- package/assets/templates/review.template.md +9 -34
- package/assets/workflow-contract.v1.json +10 -19
- package/docs/README.md +10 -10
- package/docs/architecture/CURRENT.md +170 -0
- package/docs/architecture/EVOLUTION.md +42 -0
- package/docs/architecture/current/README.md +4 -156
- package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +2 -2
- package/docs/architecture/decisions/20260823-immediate-controller-relay.md +53 -0
- package/docs/architecture/decisions/20260826-browser-runtime-v2.md +73 -0
- package/docs/architecture/history/README.md +7 -0
- package/docs/architecture/{chatgpt-handoff-facade.md → history/chatgpt-handoff-facade.md} +4 -0
- package/docs/architecture/{global-hook-runtime.md → history/global-hook-runtime.md} +7 -3
- package/docs/architecture/{ios-semantic-automation-provider-v2.md → history/ios-semantic-automation-provider-v2.md} +6 -2
- package/docs/architecture/history.md +3 -34
- package/docs/architecture/index.md +15 -98
- package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +1 -1
- package/docs/architecture/reviews/2026-08-22-semantic-harness-convergence-acceptance.md +39 -0
- package/docs/architecture/versions/1.6.md +38 -0
- package/docs/architecture/versions/1.7.md +41 -0
- package/docs/forge-chatgpt-browser-engine.md +2 -2
- package/docs/forge-chatgpt-mcp-setup.md +4 -28
- package/docs/forge-chatgpt-supervised-automation.md +3 -3
- package/docs/forge-github-issue-launcher.md +1 -1
- package/docs/forge-runtime-self-healing-loop.md +1 -1
- package/docs/operations/controller-browser-plugin.md +38 -22
- package/docs/operations/controller-performance-and-502.md +124 -0
- package/docs/operations/controller-reliability-runbook.md +1 -1
- package/docs/operations/features.md +3 -3
- package/docs/operations/github-repository.md +1 -1
- package/docs/operations/homebrew.md +2 -2
- package/docs/operations/mcp-tool-exposure.md +5 -3
- package/docs/tutorials/01-install-and-start.md +1 -1
- package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
- package/docs/wiki/Architecture.md +6 -6
- package/docs/wiki/Implementation.md +2 -2
- package/docs/wiki/Installation.md +1 -1
- package/docs/wiki/Integrations.md +2 -2
- package/docs/wiki/Quick-Start.md +1 -1
- package/docs/wiki/Work-Lifecycle.md +1 -1
- package/package.json +29 -10
- package/scripts/activate-source-baseline.ts +17 -13
- package/scripts/benchmark-background-check-overlap.ts +228 -0
- package/scripts/benchmark-mcp-host.sh +117 -0
- package/scripts/benchmark-mcp-transport.ts +170 -0
- package/scripts/benchmark-quality-harness.ts +146 -0
- package/scripts/benchmark-route-session-concurrency.ts +207 -6
- package/scripts/benchmark-thin-harness-mcp-e2e.ts +7 -1
- package/scripts/benchmark-typescript-navigation.ts +186 -0
- package/scripts/benchmark-work-efficiency.ts +334 -0
- package/scripts/capture-plan.sh +3 -3
- package/scripts/check-agent-tooling.sh +8 -35
- package/scripts/check-architecture-sync.sh +17 -86
- package/scripts/check-mcp-compatibility.ts +14 -0
- package/scripts/check-public-docs.sh +14 -1
- package/scripts/check-runtime-architecture.mjs +107 -64
- package/scripts/check-stable-baseline.ts +92 -0
- package/scripts/check-task-workflow.sh +4 -4
- package/scripts/contract-worktree.sh +1 -21
- package/scripts/ensure-task-workflow.sh +22 -55
- package/scripts/host-temporary-cloud-mcp-e2e.sh +265 -0
- package/scripts/install-standalone-recovery.ts +24 -0
- package/scripts/lib/project-init-lib.sh +15 -44
- package/scripts/migrate-chatgpt-automation-schedules.ts +64 -0
- package/scripts/migrate-project-template.sh +23 -1179
- package/scripts/new-plan.sh +1 -1
- package/scripts/plan-to-todo.sh +11 -36
- package/scripts/run-governed-gate.ts +2 -1
- package/scripts/ship-worktrees.sh +2 -29
- package/scripts/smoke-ios-physical-device.ts +4 -2
- package/scripts/smoke-runtime-recovery.ts +1 -35
- package/scripts/smoke-schedule-engine.ts +1 -20
- package/scripts/sprint-backlog.sh +1 -1
- package/scripts/verify-contract.sh +1 -111
- package/scripts/verify-forge-runtime.sh +0 -1
- package/scripts/verify-sprint.sh +3 -180
- package/scripts/workflow-contract.ts +1 -5
- package/src/cli/commands/chatgpt.ts +31 -2
- package/src/cli/commands/init-hook.ts +3 -3
- package/src/cli/commands/mcp.ts +9 -5
- package/src/cli/commands/plugin.ts +37 -10
- package/src/cli/commands/recovery.ts +25 -3
- package/src/cli/commands/runtime.ts +55 -3
- package/src/cli/commands/security.ts +12 -1
- package/src/cli/commands/setup-profile.ts +31 -21
- package/src/cli/controller/check-runner.ts +106 -3
- package/src/cli/controller/composite-result.ts +1 -1
- package/src/cli/controller/context/focus.ts +51 -0
- package/src/cli/controller/context/instruction-context.ts +114 -0
- package/src/cli/controller/context/known-paths.ts +76 -0
- package/src/cli/controller/context/query-planning.ts +110 -0
- package/src/cli/controller/context/rule-resolution.ts +532 -0
- package/src/cli/controller/context/source-materializer.ts +278 -0
- package/src/cli/controller/context/structural.ts +16 -0
- package/src/cli/controller/context/types.ts +286 -0
- package/src/cli/controller/context-pack.ts +898 -430
- package/src/cli/controller/launch-agents.ts +77 -2
- package/src/cli/controller/operational-plan.ts +2 -2
- package/src/cli/controller/work-mode.ts +6 -4
- package/src/cli/editing/edit-session.ts +60 -7
- package/src/cli/github/github.ts +133 -0
- package/src/cli/hook/prompt-guard-decision.ts +17 -18
- package/src/cli/hook/prompt-intents.ts +1 -1
- package/src/cli/installer/managed-entries.ts +15 -1
- package/src/cli/local-bridge/console-automations.ts +225 -67
- package/src/cli/local-bridge/console-view-models.ts +3 -35
- package/src/cli/local-bridge/facade-api.ts +2 -217
- package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
- package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +153 -3
- package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
- package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +183 -3
- package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +1 -1
- package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +4 -3
- package/src/cli/local-bridge/frontend/src/lib/api.ts +18 -11
- package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
- package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +1 -1
- package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +4 -3
- package/src/cli/local-bridge/frontend/src/styles.css +27 -11
- package/src/cli/local-bridge/frontend/src/types.ts +8 -7
- package/src/cli/local-bridge/job-store.ts +1 -490
- package/src/cli/local-bridge/server.ts +29 -532
- package/src/cli/local-bridge/ui-dist/app.css +1 -1
- package/src/cli/local-bridge/ui-dist/app.js +5101 -4967
- package/src/cli/mcp/auth.ts +5 -5
- package/src/cli/mcp/instructions.ts +3 -2
- package/src/cli/mcp/legacy-tool-service.ts +0 -189
- package/src/cli/mcp/multi-repository.ts +16 -5
- package/src/cli/mcp/oauth.ts +175 -26
- package/src/cli/mcp/paths.ts +8 -2
- package/src/cli/mcp/repository-tools.ts +356 -101
- package/src/cli/mcp/server.ts +625 -54
- package/src/cli/mcp/tool-capability-cache.ts +1 -1
- package/src/cli/mcp/toolset-selection.ts +1 -1
- package/src/cli/mcp/toolset.ts +42 -5
- package/src/cli/mcp/transports/http.ts +125 -15
- package/src/cli/mcp/transports/session-registry.ts +67 -5
- package/src/cli/mcp/types.ts +3 -3
- package/src/cli/repositories/command-classifier.ts +209 -14
- package/src/cli/repositories/command-executor.ts +55 -521
- package/src/cli/repositories/command-process.ts +108 -0
- package/src/cli/repositories/command-scope.ts +99 -41
- package/src/cli/repositories/controller-home.ts +7 -8
- package/src/cli/repositories/git-command-executor.ts +2 -0
- package/src/cli/repositories/locks.ts +53 -16
- package/src/cli/repositories/repository-snapshot.ts +121 -0
- package/src/cli/repositories/safe-patch.ts +6 -4
- package/src/cli/repositories/selected-path-actions.ts +17 -9
- package/src/cli/repositories/structured-git.ts +110 -10
- package/src/cli/repository/inspector.ts +565 -62
- package/src/cli/repository/session-cache.ts +58 -17
- package/src/cli/v81-entry.ts +1 -4
- package/src/effects/fs-transaction.ts +85 -17
- package/src/runtime/context/codegraph-read-provider.ts +233 -2
- package/src/runtime/context/codegraph-sidecar.cjs +74 -40
- package/src/runtime/context/generic-lsp-provider.ts +355 -0
- package/src/runtime/context/lsp-client.ts +283 -0
- package/src/runtime/context/semantic-navigation.ts +275 -0
- package/src/runtime/context/swift-navigation.ts +565 -0
- package/src/runtime/context/typescript-navigation.ts +226 -0
- package/src/runtime/control-plane/dispatch-priority.ts +28 -0
- package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +196 -2
- package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
- package/src/runtime/control-plane/execution/execution-identity.ts +65 -14
- package/src/runtime/control-plane/execution/session-store.ts +18 -0
- package/src/runtime/control-plane/execution/validation.ts +15 -2
- package/src/runtime/control-plane/execution/verification-evidence.ts +58 -3
- package/src/runtime/control-plane/execution/work-handle-store.ts +27 -2
- package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +258 -0
- package/src/runtime/control-plane/execution/work-remote-delivery.ts +215 -0
- package/src/runtime/control-plane/execution/work-task-receipt.ts +54 -11
- package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +175 -8
- package/src/runtime/control-plane/execution/work-validation-reconciler.ts +28 -21
- package/src/runtime/control-plane/execution/work-verification-snapshot.ts +87 -9
- package/src/runtime/control-plane/facade/capability-registry.ts +129 -25
- package/src/runtime/control-plane/facade/controller-round-relay.ts +991 -0
- package/src/runtime/control-plane/facade/controller-session-store.ts +144 -14
- package/src/runtime/control-plane/facade/goal-workloop-access.ts +9 -2
- package/src/runtime/control-plane/facade/goal-workloop.ts +885 -105
- package/src/runtime/control-plane/facade/index.ts +1 -0
- package/src/runtime/control-plane/facade/plan-contract-store.ts +211 -26
- package/src/runtime/control-plane/facade/requirement-board.ts +24 -8
- package/src/runtime/control-plane/facade/semantic-admission.ts +205 -0
- package/src/runtime/control-plane/facade/suggested-actions.ts +5 -1
- package/src/runtime/control-plane/facade/types.ts +55 -11
- package/src/runtime/control-plane/facade/work-contract-store.ts +204 -73
- package/src/runtime/control-plane/generated-cache-retention.ts +271 -0
- package/src/runtime/control-plane/global-scheduler/config.ts +44 -0
- package/src/runtime/control-plane/global-scheduler/dispatch-capacity.ts +80 -0
- package/src/runtime/control-plane/global-scheduler/durable-admission.ts +46 -0
- package/src/runtime/control-plane/global-scheduler/maintenance.ts +145 -0
- package/src/runtime/control-plane/global-scheduler/projection-refresh.ts +84 -0
- package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -3
- package/src/runtime/control-plane/global-scheduler/scheduler.ts +273 -542
- package/src/runtime/control-plane/global-scheduler/source-scan.ts +59 -0
- package/src/runtime/control-plane/global-scheduler/state.ts +88 -0
- package/src/runtime/control-plane/global-scheduler/worker-attachment.ts +57 -0
- package/src/runtime/control-plane/global-scheduler/worker-exit-decision.ts +38 -0
- package/src/runtime/control-plane/global-scheduler/worker-exit-reconciler.ts +175 -0
- package/src/runtime/control-plane/global-scheduler/worker-launch.ts +111 -0
- package/src/runtime/control-plane/global-scheduler/worker-lifecycle-store.ts +64 -0
- package/src/runtime/control-plane/global-scheduler/worker-lifecycle.ts +150 -0
- package/src/runtime/control-plane/global-scheduler/worker-process.ts +119 -0
- package/src/runtime/control-plane/global-scheduler/worker-stderr.ts +60 -0
- package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +50 -0
- package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +642 -51
- package/src/runtime/control-plane/launcher/launch-reservation-store.ts +40 -0
- package/src/runtime/control-plane/launcher/thin-launcher.ts +194 -10
- package/src/runtime/control-plane/persistence/controller-home-migration.ts +487 -0
- package/src/runtime/control-plane/persistence/requirement-store.ts +15 -11
- package/src/runtime/control-plane/persistence/sqlite-store.ts +33 -2
- package/src/runtime/control-plane/release-retention.ts +62 -2
- package/src/runtime/control-plane/routing/route-policy.ts +7 -16
- package/src/runtime/control-plane/runtime-status-client.ts +0 -2
- package/src/runtime/diagnostics/mcp-timing.ts +19 -0
- package/src/runtime/diagnostics/mcp-transport-benchmark.ts +129 -0
- package/src/runtime/diagnostics/performance.ts +24 -1
- package/src/runtime/evidence/event-ledger.ts +1 -1
- package/src/runtime/execution/jobs/store.ts +58 -4
- package/src/runtime/execution/jobs/types.ts +1 -1
- package/src/runtime/execution/managed-workspace.ts +203 -1
- package/src/runtime/execution/process-runtime/check-facade.ts +52 -14
- package/src/runtime/execution/process-runtime/check-result.ts +63 -2
- package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
- package/src/runtime/execution/process-runtime/command-facade.ts +346 -40
- package/src/runtime/execution/process-runtime/gc.ts +98 -12
- package/src/runtime/execution/process-runtime/lightweight-managed.ts +1184 -0
- package/src/runtime/execution/process-runtime/persisted-check.ts +57 -6
- package/src/runtime/execution/process-runtime/resource-claims.ts +97 -8
- package/src/runtime/execution/process-runtime/runtime.ts +59 -4
- package/src/runtime/execution/process-runtime/store.ts +7 -0
- package/src/runtime/execution/process-runtime/types.ts +2 -0
- package/src/runtime/execution/thin-harness/async-process.ts +12 -2
- package/src/runtime/execution/thin-harness/search-worker.ts +54 -5
- package/src/runtime/execution/workers/executor.ts +0 -48
- package/src/runtime/gateway/mcp/execution-tools.ts +1219 -126
- package/src/runtime/gateway/mcp/process-tools.ts +83 -37
- package/src/runtime/gateway/mcp/router.ts +185 -83
- package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +546 -0
- package/src/runtime/gateway/mcp/runtime-tools.ts +2555 -1616
- package/src/runtime/model-clients/deepseek-adapter.ts +0 -32
- package/src/runtime/plugins/app-store-connect-adapter.ts +123 -19
- package/src/runtime/plugins/browser-adapter.ts +2925 -318
- package/src/runtime/plugins/browser-automation-service.ts +10 -0
- package/src/runtime/plugins/browser-handoff-host.ts +6 -31
- package/src/runtime/plugins/browser-handoff.ts +92 -5
- package/src/runtime/plugins/browser-macos-bridge.ts +586 -45
- package/src/runtime/plugins/browser-node-bridge.ts +6 -34
- package/src/runtime/plugins/browser-provider-registry.ts +109 -0
- package/src/runtime/plugins/browser-runtime-contract.ts +152 -0
- package/src/runtime/plugins/browser-runtime.ts +183 -0
- package/src/runtime/plugins/browser-session-authority.ts +332 -0
- package/src/runtime/plugins/capability-authorization-grants.ts +354 -0
- package/src/runtime/plugins/desktop-operator-registration.ts +15 -12
- package/src/runtime/plugins/external-adapter.ts +324 -3
- package/src/runtime/plugins/external-registration.ts +84 -5
- package/src/runtime/plugins/external-unix-socket.ts +7 -1
- package/src/runtime/plugins/first-party-registry.ts +4 -2
- package/src/runtime/plugins/github-adapter.ts +125 -0
- package/src/runtime/plugins/gmail-adapter.ts +28 -2
- package/src/runtime/plugins/ios/agent-device-provider.ts +1 -1
- package/src/runtime/plugins/ios/agent-device-typed-provider.ts +52 -9
- package/src/runtime/plugins/ios/remote-xpc-hid.ts +1171 -0
- package/src/runtime/plugins/ios-adapter.ts +106 -16
- package/src/runtime/plugins/ios-agent-device.ts +234 -64
- package/src/runtime/plugins/ios-physical-device.ts +1143 -392
- package/src/runtime/plugins/lightweight-action.ts +153 -0
- package/src/runtime/plugins/local-system-adapter.ts +125 -8
- package/src/runtime/plugins/macos-capability-broker.ts +55 -9
- package/src/runtime/plugins/plugin-action-sidecar.ts +59 -0
- package/src/runtime/plugins/plugin-management-adapter.ts +181 -0
- package/src/runtime/plugins/resend-adapter.ts +1 -1
- package/src/runtime/plugins/store.ts +366 -24
- package/src/runtime/plugins/types.ts +39 -2
- package/src/runtime/plugins/xiaohongshu-publish.ts +515 -0
- package/src/runtime/projections/git-status-sampler.ts +16 -16
- package/src/runtime/projections/materialized-view.ts +28 -10
- package/src/runtime/recovery/actions.ts +0 -10
- package/src/runtime/recovery/classifier.ts +0 -9
- package/src/runtime/recovery/maintenance-executor.ts +415 -18
- package/src/runtime/recovery/probe.ts +0 -1
- package/src/runtime/recovery/types.ts +0 -1
- package/src/runtime/root/mcp-transport.ts +180 -10
- package/src/runtime/root/package-connector-service.ts +186 -8
- package/src/runtime/root/package-runtime-release.ts +143 -17
- package/src/runtime/root/package-runtime-service.ts +430 -22
- package/src/runtime/root/release-manifest.ts +7 -2
- package/src/runtime/root/release-materialize.ts +162 -19
- package/src/runtime/root/release-store.ts +48 -11
- package/src/runtime/root/runtime.ts +23 -5
- package/src/runtime/root/service.ts +100 -27
- package/src/runtime/root/types.ts +2 -0
- package/src/runtime/safe-tooling/index.ts +0 -1
- package/src/runtime/safe-tooling/ios-development.ts +321 -63
- package/src/runtime/safe-tooling/types.ts +0 -30
- package/src/runtime/shared/trusted-executable.ts +62 -0
- package/src/runtime/shared/trusted-node-executable.ts +48 -0
- package/src/runtime/standalone-recovery/core.ts +702 -94
- package/src/runtime/standalone-recovery/entry.ts +99 -23
- package/src/runtime/standalone-recovery/installer.ts +19 -3
- package/src/runtime/standalone-recovery/service-labels.ts +2 -0
- package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +160 -0
- package/src/runtime/workflow/schedules/browser-probe.ts +258 -0
- package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +40 -0
- package/src/runtime/workflow/schedules/engine.ts +509 -80
- package/src/runtime/workflow/schedules/github-issue-watch.ts +158 -0
- package/src/runtime/workflow/schedules/settlement.ts +48 -4
- package/src/runtime/workflow/schedules/store.ts +131 -10
- package/src/runtime/workflow/schedules/types.ts +6 -3
- package/src/runtime/workflow/schedules/work-continuation.ts +120 -34
- package/src/testing/test-governance.ts +8 -40
- package/assets/reference-configs/heartbeat-triage.md +0 -57
- package/assets/templates/helpers/harness-trace-grade.sh +0 -150
- package/assets/templates/helpers/heartbeat-triage.sh +0 -361
- package/assets/templates/helpers/maintenance-triage.sh +0 -167
- package/bin/forge-desktop-helper.mjs +0 -204
- package/docs/architecture/current/approved-target-architecture.zh-CN.md +0 -1501
- package/docs/architecture/current/architecture-invariants.md +0 -331
- package/docs/architecture/current/automation-and-schedule-engine.md +0 -453
- package/docs/architecture/current/codegraph-context-provider.md +0 -226
- package/docs/architecture/current/control-plane-authority-inventory.md +0 -94
- package/docs/architecture/current/controller-repository-decoupling.md +0 -148
- package/docs/architecture/current/dispatch-and-agent-strategy.md +0 -354
- package/docs/architecture/current/entity-model.md +0 -592
- package/docs/architecture/current/external-plugin-governance.md +0 -396
- package/docs/architecture/current/failure-recovery.md +0 -447
- package/docs/architecture/current/governance.md +0 -213
- package/docs/architecture/current/human-interaction-plane.md +0 -87
- package/docs/architecture/current/implementation-status.md +0 -128
- package/docs/architecture/current/job-and-run-lifecycle.md +0 -413
- package/docs/architecture/current/legacy-governance.md +0 -58
- package/docs/architecture/current/local-workspace-target-grants.md +0 -70
- package/docs/architecture/current/migration-roadmap.md +0 -105
- package/docs/architecture/current/multi-repository-execution.md +0 -371
- package/docs/architecture/current/operations-runbook.md +0 -45
- package/docs/architecture/current/peer-supercontroller-runtime.md +0 -32
- package/docs/architecture/current/personal-assistant-plugin-baseline.md +0 -206
- package/docs/architecture/current/repository-access-modes.md +0 -102
- package/docs/architecture/current/route-policy.md +0 -15
- package/docs/architecture/current/route-session-concurrency.md +0 -85
- package/docs/architecture/current/runtime-architecture-simplification.md +0 -214
- package/docs/architecture/current/runtime-directory-map.md +0 -49
- package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +0 -85
- package/docs/architecture/current/scheduler-and-resource-claims.md +0 -422
- package/docs/architecture/current/session-aware-execution-and-authorization.md +0 -77
- package/docs/architecture/current/system-overview.md +0 -144
- package/docs/architecture/current/target-requirements-traceability.md +0 -202
- package/docs/architecture/current/thin-harness-governance-policy.md +0 -32
- package/docs/architecture/current/thin-harness-v1.md +0 -311
- package/docs/architecture/current/verification-and-release-gates.md +0 -391
- package/docs/forge-autonomous-goal-loop.md +0 -9
- package/docs/forge-provider-configuration.md +0 -7
- package/docs/operations/chatgpt-personal-assistant-runtime.md +0 -83
- package/docs/operations/controller-desktop-plugin.md +0 -112
- package/docs/operations/gmail-assistant-routines.md +0 -186
- package/docs/operations/personal-assistant-operator-guide.md +0 -61
- package/docs/operations/provider-configuration.md +0 -31
- package/scripts/harness-trace-grade.sh +0 -150
- package/scripts/heartbeat-triage.sh +0 -361
- package/scripts/maintenance-triage.sh +0 -167
- package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +0 -2
- package/src/cli/repositories/goal-registry.ts +0 -239
- package/src/runtime/assistant/action-proposals.ts +0 -279
- package/src/runtime/assistant/intent.ts +0 -395
- package/src/runtime/assistant/model-provider.ts +0 -460
- package/src/runtime/assistant/openapi.ts +0 -223
- package/src/runtime/assistant/policy.ts +0 -89
- package/src/runtime/assistant/readiness.ts +0 -258
- package/src/runtime/assistant/routine-runtime.ts +0 -477
- package/src/runtime/assistant/schedule-binding.ts +0 -171
- package/src/runtime/assistant/standing-grants.ts +0 -375
- package/src/runtime/assistant/store.ts +0 -243
- package/src/runtime/assistant/types.ts +0 -135
- package/src/runtime/control-plane/goal-loop/config-facade.ts +0 -700
- package/src/runtime/control-plane/goal-loop/config-store.ts +0 -570
- package/src/runtime/control-plane/goal-loop/config-types.ts +0 -213
- package/src/runtime/control-plane/goal-loop/executor-router.ts +0 -109
- package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +0 -149
- package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +0 -304
- package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +0 -1001
- package/src/runtime/control-plane/goal-loop/handoff-packet.ts +0 -160
- package/src/runtime/control-plane/goal-loop/index.ts +0 -13
- package/src/runtime/control-plane/goal-loop/local-tools.ts +0 -290
- package/src/runtime/control-plane/goal-loop/policy-gates.ts +0 -203
- package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +0 -93
- package/src/runtime/control-plane/goal-loop/provider-registry.ts +0 -545
- package/src/runtime/control-plane/goal-loop/types.ts +0 -378
- package/src/runtime/control-plane/startup-recovery.ts +0 -198
- package/src/runtime/gateway/mcp/resource-policy.ts +0 -186
- package/src/runtime/personal-assistant/gmail-triage-manager.ts +0 -231
- package/src/runtime/personal-assistant/reporting-runtime.ts +0 -344
- package/src/runtime/personal-assistant/triage-runtime.ts +0 -748
- package/src/runtime/plugins/desktop-adapter.ts +0 -374
- package/src/runtime/safe-tooling/browser-safe.ts +0 -133
- package/src/runtime/workflow/findings/store.ts +0 -204
- package/src/runtime/workflow/findings/types.ts +0 -58
- package/src/runtime/workflow/portfolio/engine.ts +0 -20
- package/src/runtime/workflow/portfolio/store.ts +0 -185
- package/src/runtime/workflow/portfolio/types.ts +0 -29
|
@@ -39,6 +39,130 @@ Call `GET /health` on the local MCP endpoint. The response includes:
|
|
|
39
39
|
|
|
40
40
|
A growing `rejectedOverload` value with no matching capacity-eviction or close activity means clients are submitting protected work faster than the Controller can accept it. A pool full of stream-only sessions should now self-recover. Retrying with backoff is preferable to increasing every limit.
|
|
41
41
|
|
|
42
|
+
## Runtime Activation Failure Looks Like a 502 (2026-08-23 incident)
|
|
43
|
+
|
|
44
|
+
When a new Runtime release activation fails, the public MCP path can return
|
|
45
|
+
HTTP `500` on `initialize`, which the tunnel surfaces as a `502`-style
|
|
46
|
+
connection failure. The chain observed on 2026-08-23:
|
|
47
|
+
|
|
48
|
+
1. A Runtime release activation started a new `mcp serve` process while the
|
|
49
|
+
launchd gateway already owned `127.0.0.1:8767`. The new process failed to
|
|
50
|
+
bind (`Failed to start server. Is port 8767 in use?`) but did **not exit**;
|
|
51
|
+
it kept running as an orphan (`PPID 1`) spinning at ~98% CPU.
|
|
52
|
+
2. The canonical Runtime (port 8765) failed to start for the new release
|
|
53
|
+
(`RUNTIME_RELEASE_AUTHORITY_MISMATCH` in
|
|
54
|
+
`runtime/service/logs/stderr.log`), so the gateway could not complete MCP
|
|
55
|
+
`initialize` and returned HTTP 500.
|
|
56
|
+
3. `tunnel-client` posted the upstream error to the control plane
|
|
57
|
+
(`dispatcher received MCP upstream error`, `upstream_status=500`,
|
|
58
|
+
`rpc_method=initialize`), which the remote client saw as a failed
|
|
59
|
+
connection / 502.
|
|
60
|
+
|
|
61
|
+
Diagnostic fingerprint:
|
|
62
|
+
|
|
63
|
+
- `gateway.stderr.log` contains `Failed to start server. Is port 8767 in use?`
|
|
64
|
+
- `runtime/service/logs/stderr.log` contains repeated
|
|
65
|
+
`RUNTIME_RELEASE_AUTHORITY_MISMATCH`
|
|
66
|
+
- recovery watchdog log shows `restart_primary_runtime` attempts followed by
|
|
67
|
+
`action":"rollback"` restoring the previous release
|
|
68
|
+
- a stray `bun ... mcp serve` process with `PPID 1` and high `%CPU`
|
|
69
|
+
|
|
70
|
+
Remediation:
|
|
71
|
+
|
|
72
|
+
- The standalone Recovery watchdog automatically rolls back after the bounded
|
|
73
|
+
restart budget is exhausted; wait for `action":"healthy"` in
|
|
74
|
+
`recovery/audit/watchdog.log` before doing anything else.
|
|
75
|
+
- Kill the orphaned `mcp serve` child of the failed release (verify it holds no
|
|
76
|
+
listening sockets first); it only burns CPU after a failed port bind.
|
|
77
|
+
- Verify the canonical Runtime answers `initialize` on its own port and that
|
|
78
|
+
the tunnel log shows no new `upstream_status=500` entries.
|
|
79
|
+
|
|
80
|
+
Known code defect to fix: `mcp serve` should exit with a non-zero status when
|
|
81
|
+
the requested port is already in use instead of staying alive in a hot loop.
|
|
82
|
+
|
|
83
|
+
## Connector/Activation Recovery Gaps Behind Intermittent 502 (2026-08-27)
|
|
84
|
+
|
|
85
|
+
A second class of intermittent `502` was traced to release/Connector coherence rather
|
|
86
|
+
than to a permanently dead Recovery service.
|
|
87
|
+
|
|
88
|
+
Observed evidence:
|
|
89
|
+
|
|
90
|
+
- a live Forge MCP request returned `502` while independent Recovery observed the
|
|
91
|
+
Canonical Runtime briefly as `RUNTIME_NOT_RUNNING`; the Runtime became ready again
|
|
92
|
+
a few seconds later after release authority reverted to the prior package release;
|
|
93
|
+
- separate MCP connection failures also occurred while independent Recovery still
|
|
94
|
+
observed the Canonical Runtime as ready, proving that not every `502` is a whole-
|
|
95
|
+
Runtime failure;
|
|
96
|
+
- the persistent package Connector health probe accepted any received HTTP status,
|
|
97
|
+
so `500`/`502` could be classified as healthy and the broken service reused;
|
|
98
|
+
- detached macOS package activation scheduled the Runtime switch and then rebound the
|
|
99
|
+
Connector to the candidate release before the activation helper committed the
|
|
100
|
+
Runtime service. If helper activation failed, Runtime authority/service rolled back
|
|
101
|
+
while Connector authority/plist could remain on the candidate generation;
|
|
102
|
+
- standalone Recovery's Connector action previously restarted the already-installed
|
|
103
|
+
launchd service. A stale/mutable launch spec therefore remained stale after restart.
|
|
104
|
+
|
|
105
|
+
Corrected invariants:
|
|
106
|
+
|
|
107
|
+
1. Connector reuse accepts only the expected MCP/OAuth endpoint semantics (`200` or
|
|
108
|
+
the unauthenticated `401` Bearer challenge); `5xx` is always unhealthy.
|
|
109
|
+
2. Detached activation does not switch the Connector in the installer. The activation
|
|
110
|
+
helper installs the Runtime service first and only then commits the Connector to the
|
|
111
|
+
same immutable package release. A Runtime activation failure therefore leaves the
|
|
112
|
+
prior Connector generation untouched.
|
|
113
|
+
3. Connector-only Recovery first reconciles the canonical package Connector against
|
|
114
|
+
the active immutable Runtime release, then verifies local ownership/public MCP, and
|
|
115
|
+
only then decides whether a launchd/tunnel restart is still required.
|
|
116
|
+
4. Whole-Runtime rollback remains deliberately stricter than Connector recovery. A
|
|
117
|
+
known-good Runtime is not rolled back merely because its Connector or external
|
|
118
|
+
tunnel drifted; those hops must be repaired independently.
|
|
119
|
+
5. Recovery `runtime_status` reports bounded Watchdog decision evidence (last action,
|
|
120
|
+
reason and restart/failure counters) so incident review can distinguish "Recovery
|
|
121
|
+
never fired" from "Recovery fired and the client observed the bounded outage".
|
|
122
|
+
|
|
123
|
+
## Session Continuation Fails With 404 MCP_TOOL_SURFACE_CHANGED (2026-08-23)
|
|
124
|
+
|
|
125
|
+
Second incident on the same day, different failure mode. After a session is
|
|
126
|
+
created, every follow-up (`notifications/initialized`, `tools/call`) returned
|
|
127
|
+
HTTP 404 with:
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
{"error":"session_not_found","code":"MCP_TOOL_SURFACE_CHANGED",
|
|
131
|
+
"message":"MCP Runtime tool surface changed; initialize a new session so tools/list is refreshed.",
|
|
132
|
+
"recoverable":true,"action":"reinitialize",
|
|
133
|
+
"previousFingerprint":"<session>","currentFingerprint":"<published>"}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Root cause: the Gateway session fence compares the **live** Runtime schema
|
|
137
|
+
fingerprint captured at `initialize` (`readCanonicalRuntimeToolSchema` ->
|
|
138
|
+
`proxy.listTools()`) against the **published** fingerprint in
|
|
139
|
+
`runtime/status.json`. The Runtime publishes `status.json` once at startup and
|
|
140
|
+
does not republish when its live tool surface changes at runtime (e.g. a
|
|
141
|
+
plugin registers or code edits change the tool set). Once the two values
|
|
142
|
+
diverge, every session continuation is rejected as a tool-surface change, so
|
|
143
|
+
the tunnel/connector appears broken even though `/health` shows both
|
|
144
|
+
fingerprints matching the published value.
|
|
145
|
+
|
|
146
|
+
Diagnostic fingerprint:
|
|
147
|
+
|
|
148
|
+
- Gateway `/health` shows `toolSurfaceFingerprint` equal to
|
|
149
|
+
`runtimeToolSurfaceFingerprint` (both read the published value), but a real
|
|
150
|
+
`initialize` session stores a different fingerprint.
|
|
151
|
+
- Follow-up requests get the `MCP_TOOL_SURFACE_CHANGED` 404 with
|
|
152
|
+
`previousFingerprint != currentFingerprint`.
|
|
153
|
+
|
|
154
|
+
Remediation:
|
|
155
|
+
|
|
156
|
+
- Restart the canonical Runtime service
|
|
157
|
+
(`launchctl kickstart -k gui/$UID/com.moretea.forge.runtime.<suffix>`) so it
|
|
158
|
+
republishes `status.json` from its current surface, then verify
|
|
159
|
+
`initialize` -> `notifications/initialized` (202) -> `tools/call` (200) with
|
|
160
|
+
a valid OAuth token.
|
|
161
|
+
- Known code defect to fix: the Runtime should republish `status.json`
|
|
162
|
+
whenever its live tool surface changes (tool list changed), and/or the
|
|
163
|
+
Gateway fence should prefer the live fingerprint for the current-schema
|
|
164
|
+
comparison instead of trusting a stale publication.
|
|
165
|
+
|
|
42
166
|
Call `GET /ready` separately. A 503 from `/ready` with `/health` still returning 200 means the Runtime is live but cannot safely admit another initialize. `sessionCapacity.recoveryRecommended=false` preserves active work and waits; `true` is evidence for standalone Recovery's bounded whole-Runtime restart policy after the configured stall limit.
|
|
43
167
|
|
|
44
168
|
## Diagnostic Order
|
|
@@ -68,7 +68,7 @@ A release change is performed only as an explicitly authorized whole-Runtime ope
|
|
|
68
68
|
1. validate one immutable release manifest, configuration, database compatibility range, and Worker protocol;
|
|
69
69
|
2. quiesce admission and stop the complete Runtime;
|
|
70
70
|
3. atomically select the candidate as the one active whole release;
|
|
71
|
-
4.
|
|
71
|
+
4. atomically mirror the selected release's signed `forge-runtime` entrypoint to the fixed physical service path `runtime/service/active-forge-runtime`, then let the single Forge Runtime service start that stable path with the selected release manifest/environment;
|
|
72
72
|
5. require binary whole-Runtime readiness;
|
|
73
73
|
6. on failure, stop the service, restore the previous release and its bound local SQLite backup, then start and verify the complete previous Runtime.
|
|
74
74
|
|
|
@@ -24,10 +24,10 @@ These features are part of the default local setup:
|
|
|
24
24
|
| Codex / Claude | Delegated implementation for work too large for Direct Edit | Install and authenticate the corresponding CLI; explicitly enable the dev runner. |
|
|
25
25
|
| GitHub | Issue/Project synchronization, PR workflows, cloud-agent sessions | Authenticated `gh` and repository permission. |
|
|
26
26
|
| Tailscale / Cloudflare | Stable HTTPS endpoint for ChatGPT MCP | Tunnel client and appropriate account/domain configuration. |
|
|
27
|
-
| Browser | Playwright navigation, screenshots, and bounded browser evidence | Browser binaries and
|
|
27
|
+
| Browser | Playwright navigation, screenshots, and bounded browser evidence | Browser binaries and HTTP(S) URL scheme validation. |
|
|
28
28
|
| CodeGraph | Additional code relationships and impact navigation | CodeGraph CLI; native Windows automatic setup is not yet enabled. |
|
|
29
|
-
| Google Workspace | Gmail and Calendar
|
|
30
|
-
| Schedules
|
|
29
|
+
| Google Workspace | Gmail and Calendar plugin actions | Explicit OAuth setup and plugin permission. |
|
|
30
|
+
| Schedules | Supervised recurring checks | Canonical Forge Runtime running; live actions remain policy-gated. |
|
|
31
31
|
|
|
32
32
|
## Tool exposure
|
|
33
33
|
|
|
@@ -42,7 +42,7 @@ Use Issues for reproducible defects and scoped feature requests. Use Discussions
|
|
|
42
42
|
|
|
43
43
|
## Documentation ownership
|
|
44
44
|
|
|
45
|
-
The GitHub Wiki is a presentation target. Versioned source lives under `docs/wiki/`. Deeper engineering detail remains under `docs/architecture/
|
|
45
|
+
The GitHub Wiki is a presentation target. Versioned source lives under `docs/wiki/`. Deeper engineering detail remains under `docs/architecture/CURRENT.md` and `docs/operations/`.
|
|
46
46
|
|
|
47
47
|
Public documentation must distinguish current facts from historical evidence. Avoid hard-coding “next release” versions in operational runbooks; derive versions from `package.json` so routine releases do not leave stale docs behind.
|
|
48
48
|
|
|
@@ -6,8 +6,8 @@ Homebrew is planned as a convenience layer after the first stable npm/GitHub rel
|
|
|
6
6
|
|
|
7
7
|
Do not publish a formula until all of the following are true:
|
|
8
8
|
|
|
9
|
-
- `@moretea-labs/forge@1.
|
|
10
|
-
- Git tag and GitHub Release `v1.
|
|
9
|
+
- `@moretea-labs/forge@1.7.0` exists on npm;
|
|
10
|
+
- Git tag and GitHub Release `v1.7.0` exist and point to the tested commit;
|
|
11
11
|
- the npm tarball has an immutable checksum;
|
|
12
12
|
- macOS installation and `forge --version` / `forge doctor` tests pass;
|
|
13
13
|
- upgrade and uninstall behavior is documented.
|
|
@@ -6,8 +6,9 @@ Controller MCP uses one stable default schema so ChatGPT can reliably read, edit
|
|
|
6
6
|
|
|
7
7
|
| Toolset | CLI | Behavior |
|
|
8
8
|
| --- | --- | --- |
|
|
9
|
-
| **
|
|
10
|
-
| **
|
|
9
|
+
| **facade** (opt-in) | `--toolset facade` | Five-tool ChatGPT orchestration surface: `rh_access`, `rh_status`, `rh_inbox`, `rh_context`, `rh_work`. Internal handlers and capabilities remain registered; only MCP discovery is reduced. Intended for latency/tool-selection A/B before any default migration. |
|
|
10
|
+
| **advanced** (default) | `--toolset advanced` | Current stable 19-tool controller surface. Includes the five `rh_*` facades plus repository, Direct Edit, command, check, plugin-dispatch, Process, and result/evidence tools. |
|
|
11
|
+
| **core** | `--toolset core` | Compatibility label for the same stable default 19-tool schema. It does not reduce capability or require reconnecting. |
|
|
11
12
|
| **full** | `--toolset full` | Every historical legacy and runtime definition. Use only for old integrations or deep compatibility diagnosis because the much larger schema can reduce tool-selection quality. |
|
|
12
13
|
|
|
13
14
|
Configure via CLI flags, `FORGE_MCP_TOOLSET`, or Controller Home MCP config. Empty/default controller configuration resolves to `advanced`.
|
|
@@ -31,7 +32,7 @@ The current implementation separates orchestration from capability without delet
|
|
|
31
32
|
2. **Typed atomic tools:** repository inspection, Direct Edit, command, Git, Work/Job, Issue/Task, Goal/Work, plugin, browser, iOS, artifact, and recovery handlers remain public because their schemas preserve operation-specific validation and evidence.
|
|
32
33
|
3. **Internal handlers and capability registry:** capabilities are grouped as `controller`, `repository-core`, `git`, `issue-task`, `browser`, `ios`, `plugin`, `evidence`, and `runtime-maintenance`. `rh_status`, `rh_context`, and `controller_capabilities` expose this metadata.
|
|
33
34
|
|
|
34
|
-
The MCP transport
|
|
35
|
+
The MCP transport publishes a static schema for each selected toolset. It does **not** dynamically load a domain schema after ChatGPT selects that domain. The opt-in `facade` toolset reduces initial discovery to five facade tools while retaining the same internal handlers; `core`/`advanced` keep the current 19-tool stable schema and `full` keeps the exhaustive compatibility schema.
|
|
35
36
|
|
|
36
37
|
Capability metadata changes do not change `tools/list`; restart the Controller to load new code, but reconnect/rescan ChatGPT only when tool names or input schemas change.
|
|
37
38
|
|
|
@@ -45,6 +46,7 @@ Remote writes, destructive actions, outside-repository paths, and secret access
|
|
|
45
46
|
|
|
46
47
|
- Prefer `rh_status`, `rh_access`, `rh_context`, `rh_work`, and `rh_inbox` for normal orchestration.
|
|
47
48
|
- Use first-class Direct Edit, command, Git, `quick_agent_session`, Goal/Work, iOS, plugin, and artifact tools when the facade is not the shortest reliable path.
|
|
49
|
+
- Use `--toolset facade` only for explicit experiments/clients until latency and workflow coverage are validated; the default remains the stable 19-tool surface.
|
|
48
50
|
- Keep the stable surface unique and at or below 128 tools.
|
|
49
51
|
- Add new public tools only when they unlock a real end-to-end workflow; otherwise route capabilities through an existing facade or plugin action.
|
|
50
52
|
|
|
@@ -34,7 +34,7 @@ For Forge source development only:
|
|
|
34
34
|
```bash
|
|
35
35
|
git clone https://github.com/moretea-labs/forge.git
|
|
36
36
|
cd forge
|
|
37
|
-
|
|
37
|
+
bun install --frozen-lockfile
|
|
38
38
|
npm install -g . --omit=optional --no-audit --no-fund
|
|
39
39
|
```
|
|
40
40
|
|
|
@@ -75,11 +75,11 @@ One Canonical Runtime owns the active local execution authority and one whole-re
|
|
|
75
75
|
|
|
76
76
|
## Authoritative documents
|
|
77
77
|
|
|
78
|
-
- [System overview](https://github.com/moretea-labs/forge/blob/main/docs/architecture/
|
|
79
|
-
- [Architecture invariants](https://github.com/moretea-labs/forge/blob/main/docs/architecture/
|
|
80
|
-
- [Multi-repository execution](https://github.com/moretea-labs/forge/blob/main/docs/architecture/
|
|
81
|
-
- [Verification and release gates](https://github.com/moretea-labs/forge/blob/main/docs/architecture/
|
|
82
|
-
- [Implementation status](https://github.com/moretea-labs/forge/blob/main/docs/architecture/
|
|
83
|
-
- [Runtime directory map](https://github.com/moretea-labs/forge/blob/main/docs/architecture/
|
|
78
|
+
- [System overview](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
|
|
79
|
+
- [Architecture invariants](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
|
|
80
|
+
- [Multi-repository execution](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
|
|
81
|
+
- [Verification and release gates](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
|
|
82
|
+
- [Implementation status](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
|
|
83
|
+
- [Runtime directory map](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
|
|
84
84
|
|
|
85
85
|
Historical snapshots explain previous designs but are not current Runtime contracts.
|
|
@@ -143,8 +143,8 @@ Primary code and docs:
|
|
|
143
143
|
```text
|
|
144
144
|
src/runtime/root/release-store.ts
|
|
145
145
|
src/runtime/health/
|
|
146
|
-
docs/architecture/
|
|
147
|
-
docs/architecture/
|
|
146
|
+
docs/architecture/../architecture/CURRENT.md
|
|
147
|
+
docs/architecture/../architecture/CURRENT.md
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
The primary Runtime cannot be the only authority deciding its own recovery. Standalone Recovery observes the Runtime independently and may perform bounded whole-release restart/rollback only under its own evidence and lock contract.
|
|
@@ -18,9 +18,9 @@ GitHub operations cover issues, pull requests, checks, repository settings, Wiki
|
|
|
18
18
|
|
|
19
19
|
Browser and local-system plugins are optional controller capabilities. They use separate grants and do not turn repository access into unrestricted machine access.
|
|
20
20
|
|
|
21
|
-
## Google Workspace
|
|
21
|
+
## Google Workspace
|
|
22
22
|
|
|
23
|
-
Gmail, Calendar, Contacts, and
|
|
23
|
+
Gmail, Calendar, Contacts, and other Workspace integrations remain connector-specific. Credentials and personal data are not stored in repository source.
|
|
24
24
|
|
|
25
25
|
## Apple tooling
|
|
26
26
|
|
package/docs/wiki/Quick-Start.md
CHANGED
|
@@ -7,7 +7,7 @@ Until the npm RC is publicly available, use the verified source path:
|
|
|
7
7
|
```bash
|
|
8
8
|
git clone https://github.com/moretea-labs/forge.git
|
|
9
9
|
cd forge
|
|
10
|
-
|
|
10
|
+
bun install --frozen-lockfile
|
|
11
11
|
npm install -g . --omit=optional --no-audit --no-fund
|
|
12
12
|
```
|
|
13
13
|
|
|
@@ -28,4 +28,4 @@ Commit explicit paths, merge through the intended strategy, and record the integ
|
|
|
28
28
|
|
|
29
29
|
Update task evidence, delete merged branches and temporary worktrees, and verify the target branch is clean. Blocked or failed states remain recoverable; they are not treated as immutable terminal truth.
|
|
30
30
|
|
|
31
|
-
For detailed lifecycle contracts, see [Job and Run Lifecycle](https://github.com/moretea-labs/forge/blob/main/docs/architecture/
|
|
31
|
+
For detailed lifecycle contracts, see [Job and Run Lifecycle](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moretea-labs/forge",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Local-first action assistant for software work with resumable execution, bounded tools, and reviewable evidence",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Moretea Labs contributors",
|
|
@@ -54,8 +54,6 @@
|
|
|
54
54
|
"docs/forge-chatgpt-mcp-setup.md",
|
|
55
55
|
"docs/forge-github-issue-launcher.md",
|
|
56
56
|
"docs/forge-runtime-self-healing-loop.md",
|
|
57
|
-
"docs/forge-autonomous-goal-loop.md",
|
|
58
|
-
"docs/forge-provider-configuration.md",
|
|
59
57
|
"docs/forge-plugin-management.md",
|
|
60
58
|
"README.en.md",
|
|
61
59
|
"README.zh-CN.md",
|
|
@@ -83,7 +81,21 @@
|
|
|
83
81
|
"check:controller-ui": "bun scripts/build-controller-ui.ts --check",
|
|
84
82
|
"check:design": "npx -y @google/design.md@0.4.0 lint DESIGN.md",
|
|
85
83
|
"benchmark:skills": "bun scripts/run-skill-evals.ts",
|
|
84
|
+
"benchmark:controller-hotpath": "bun scripts/benchmark-controller-hotpath.ts",
|
|
85
|
+
"benchmark:thin-harness-mcp-e2e": "bun scripts/benchmark-thin-harness-mcp-e2e.ts --json",
|
|
86
|
+
"benchmark:mcp-transport": "bun scripts/benchmark-mcp-transport.ts",
|
|
87
|
+
"benchmark:mcp-host": "bash scripts/benchmark-mcp-host.sh",
|
|
88
|
+
"benchmark:work-efficiency": "bun scripts/benchmark-work-efficiency.ts",
|
|
86
89
|
"benchmark:route-session-concurrency": "bun scripts/benchmark-route-session-concurrency.ts",
|
|
90
|
+
"benchmark:quality-harness": "bun scripts/benchmark-quality-harness.ts",
|
|
91
|
+
"benchmark:background-check-overlap": "bun scripts/benchmark-background-check-overlap.ts",
|
|
92
|
+
"check:quality-harness": "bun scripts/benchmark-quality-harness.ts",
|
|
93
|
+
"check:evaluation-framework": "bun test tests/evaluation-framework.test.ts",
|
|
94
|
+
"check:background-check-overlap": "bun scripts/benchmark-background-check-overlap.ts",
|
|
95
|
+
"check:typescript-navigation": "bun scripts/benchmark-typescript-navigation.ts",
|
|
96
|
+
"check:semantic-navigation-providers": "bun test tests/runtime/semantic-navigation-provider.test.ts",
|
|
97
|
+
"check:check-scheduling": "bun test tests/runtime/check-scheduling.test.ts",
|
|
98
|
+
"check:bootstrap-files": "bun test tests/bootstrap-files.test.ts",
|
|
87
99
|
"test": "bun scripts/test-governance.ts affected",
|
|
88
100
|
"test:browser-live": "bun tests/live/browser-native-silent.e2e.ts",
|
|
89
101
|
"test:core": "bun scripts/test-governance.ts core",
|
|
@@ -106,6 +118,7 @@
|
|
|
106
118
|
"check:main": "bun scripts/run-governed-gate.ts main",
|
|
107
119
|
"check:ci": "bun run check:main",
|
|
108
120
|
"check:release": "bun scripts/run-governed-gate.ts release",
|
|
121
|
+
"check:stable-baseline": "bun scripts/check-stable-baseline.ts",
|
|
109
122
|
"check:release-surface": "bash scripts/check-public-release-surface.sh",
|
|
110
123
|
"check:release-readiness": "bash scripts/check-release-readiness.sh",
|
|
111
124
|
"check:open-source-surface": "bash scripts/check-open-source-tracked-surface.sh",
|
|
@@ -125,8 +138,8 @@
|
|
|
125
138
|
"check:context-files": "forge run check-context-files",
|
|
126
139
|
"check:deploy-sql": "forge run check-deploy-sql-order",
|
|
127
140
|
"check:architecture-sync": "forge run check-architecture-sync",
|
|
128
|
-
"check:task-sync": "
|
|
129
|
-
"check:task-workflow": "
|
|
141
|
+
"check:task-sync": "forge run check-task-sync",
|
|
142
|
+
"check:task-workflow": "forge run check-task-workflow --strict",
|
|
130
143
|
"runtime:activate-source-baseline": "bun scripts/activate-source-baseline.ts request",
|
|
131
144
|
"plugin:install-desktop-operator": "bun scripts/install-desktop-operator-registration.ts",
|
|
132
145
|
"sync:brain-docs": "forge run sync-brain-docs --all",
|
|
@@ -143,10 +156,10 @@
|
|
|
143
156
|
"devDependencies": {
|
|
144
157
|
"@colbymchenry/codegraph": "1.0.1",
|
|
145
158
|
"@types/bun": "latest",
|
|
146
|
-
"@types/cors": "^2.8.
|
|
147
|
-
"@types/express": "^5.0.
|
|
148
|
-
"@types/react": "^19.2.
|
|
149
|
-
"@types/react-dom": "^19.2.
|
|
159
|
+
"@types/cors": "^2.8.19",
|
|
160
|
+
"@types/express": "^5.0.6",
|
|
161
|
+
"@types/react": "^19.2.18",
|
|
162
|
+
"@types/react-dom": "^19.2.4",
|
|
150
163
|
"@vitejs/plugin-react": "^5.2.0",
|
|
151
164
|
"vite": "^7.3.0"
|
|
152
165
|
},
|
|
@@ -156,11 +169,17 @@
|
|
|
156
169
|
"express": "^5.2.1",
|
|
157
170
|
"playwright": "^1.54.1",
|
|
158
171
|
"react": "^19.2.0",
|
|
159
|
-
"react-dom": "^19.2.
|
|
172
|
+
"react-dom": "^19.2.8",
|
|
160
173
|
"typescript": "^6.0.3"
|
|
161
174
|
},
|
|
162
175
|
"packageManager": "npm@10.0.0",
|
|
163
176
|
"optionalDependencies": {
|
|
177
|
+
"@colbymchenry/codegraph-darwin-arm64": "1.0.1",
|
|
178
|
+
"@colbymchenry/codegraph-darwin-x64": "1.0.1",
|
|
179
|
+
"@colbymchenry/codegraph-linux-arm64": "1.0.1",
|
|
180
|
+
"@colbymchenry/codegraph-linux-x64": "1.0.1",
|
|
181
|
+
"@colbymchenry/codegraph-win32-arm64": "1.0.1",
|
|
182
|
+
"@colbymchenry/codegraph-win32-x64": "1.0.1",
|
|
164
183
|
"agent-device": "0.20.2"
|
|
165
184
|
}
|
|
166
185
|
}
|
|
@@ -64,19 +64,17 @@ interface CheckDefinition {
|
|
|
64
64
|
const CHECKS: readonly CheckDefinition[] = [
|
|
65
65
|
{ id: 'package:check:type', args: ['run', 'check:type'], timeoutMs: 10 * 60_000 },
|
|
66
66
|
{ id: 'package:check:runtime-architecture', args: ['run', 'check:runtime-architecture'], timeoutMs: 3 * 60_000 },
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
timeoutMs: 15 * 60_000,
|
|
79
|
-
},
|
|
67
|
+
...[
|
|
68
|
+
'tests/runtime/process-runtime.test.ts',
|
|
69
|
+
'tests/runtime/work-terminal-cleanup.test.ts',
|
|
70
|
+
'tests/runtime/canonical-single-runtime.test.ts',
|
|
71
|
+
'tests/cli/runtime-command.test.ts',
|
|
72
|
+
'tests/cli/mcp-http.test.ts',
|
|
73
|
+
].map((path) => ({
|
|
74
|
+
id: `focused:runtime-architecture-replacement:${path}`,
|
|
75
|
+
args: ['test', '--max-concurrency', '1', `./${path}`],
|
|
76
|
+
timeoutMs: 5 * 60_000,
|
|
77
|
+
})),
|
|
80
78
|
{ id: 'package:test:core', args: ['run', 'test:core'], timeoutMs: 30 * 60_000 },
|
|
81
79
|
];
|
|
82
80
|
|
|
@@ -172,6 +170,12 @@ function terminalOutcome(handle: ReturnType<typeof listWorkHandles>[number]): Wo
|
|
|
172
170
|
|
|
173
171
|
function cleanupSafety(repoRoot: string, worktreePath: string): { safe: boolean; reason?: string } {
|
|
174
172
|
if (!existsSync(worktreePath)) return { safe: true };
|
|
173
|
+
const repository = runProcess('git', ['rev-parse', '--is-inside-work-tree'], {
|
|
174
|
+
cwd: worktreePath,
|
|
175
|
+
timeoutMs: 10_000,
|
|
176
|
+
maxOutputBytes: 100_000,
|
|
177
|
+
});
|
|
178
|
+
if (!repository.ok || repository.stdout.trim() !== 'true') return { safe: false, reason: 'WORKTREE_NOT_GIT_REPOSITORY' };
|
|
175
179
|
const status = git(worktreePath, ['status', '--porcelain']);
|
|
176
180
|
if (status) return { safe: false, reason: 'WORKTREE_DIRTY' };
|
|
177
181
|
const head = git(worktreePath, ['rev-parse', 'HEAD']);
|