@moretea-labs/forge 1.6.0 → 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 +26 -0
- package/CLAUDE.md +2 -0
- package/README.md +2 -2
- package/README.zh-CN.md +1 -1
- 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/prompt-guard.sh +5 -81
- 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 +1 -1
- package/assets/reference-configs/document-generation.md +1 -1
- package/assets/reference-configs/harness-overview.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 +11 -36
- 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/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 +26 -6
- package/docs/operations/controller-performance-and-502.md +124 -0
- package/docs/operations/controller-reliability-runbook.md +1 -1
- package/docs/operations/features.md +2 -2
- 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/wiki/Architecture.md +6 -6
- package/docs/wiki/Implementation.md +2 -2
- package/docs/wiki/Integrations.md +2 -2
- 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-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-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/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/init-hook.ts +3 -3
- package/src/cli/commands/mcp.ts +9 -5
- package/src/cli/commands/plugin.ts +1 -1
- 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 +785 -469
- 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/installer/managed-entries.ts +15 -1
- package/src/cli/local-bridge/console-automations.ts +54 -78
- package/src/cli/local-bridge/console-view-models.ts +1 -35
- package/src/cli/local-bridge/facade-api.ts +0 -217
- package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
- package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +23 -13
- package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
- package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +6 -4
- package/src/cli/local-bridge/frontend/src/lib/api.ts +1 -6
- package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
- package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +2 -2
- package/src/cli/local-bridge/frontend/src/styles.css +1 -1
- package/src/cli/local-bridge/frontend/src/types.ts +5 -8
- package/src/cli/local-bridge/job-store.ts +1 -490
- package/src/cli/local-bridge/server.ts +0 -513
- package/src/cli/local-bridge/ui-dist/app.css +1 -1
- package/src/cli/local-bridge/ui-dist/app.js +3703 -3757
- 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/repository-tools.ts +247 -107
- package/src/cli/mcp/server.ts +537 -111
- 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 +101 -14
- package/src/cli/mcp/transports/session-registry.ts +43 -5
- package/src/cli/mcp/types.ts +3 -3
- package/src/cli/repositories/command-classifier.ts +101 -19
- 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/selected-path-actions.ts +17 -9
- package/src/cli/repositories/structured-git.ts +61 -3
- package/src/cli/repository/inspector.ts +553 -63
- 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 +47 -8
- package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
- package/src/runtime/control-plane/execution/session-store.ts +18 -0
- 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 +143 -8
- package/src/runtime/control-plane/execution/work-validation-reconciler.ts +22 -14
- package/src/runtime/control-plane/execution/work-verification-snapshot.ts +85 -8
- 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 +132 -1
- package/src/runtime/control-plane/facade/goal-workloop-access.ts +2 -0
- package/src/runtime/control-plane/facade/goal-workloop.ts +686 -129
- package/src/runtime/control-plane/facade/index.ts +1 -0
- package/src/runtime/control-plane/facade/plan-contract-store.ts +185 -20
- 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 +22 -5
- package/src/runtime/control-plane/facade/work-contract-store.ts +175 -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 +355 -116
- 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/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 +13 -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 +51 -4
- package/src/runtime/execution/process-runtime/check-result.ts +53 -0
- package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
- package/src/runtime/execution/process-runtime/command-facade.ts +345 -40
- package/src/runtime/execution/process-runtime/gc.ts +38 -6
- package/src/runtime/execution/process-runtime/lightweight-managed.ts +1184 -0
- package/src/runtime/execution/process-runtime/persisted-check.ts +47 -4
- package/src/runtime/execution/process-runtime/resource-claims.ts +10 -6
- package/src/runtime/execution/process-runtime/runtime.ts +43 -3
- package/src/runtime/execution/process-runtime/store.ts +1 -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 +1192 -114
- package/src/runtime/gateway/mcp/process-tools.ts +83 -37
- package/src/runtime/gateway/mcp/router.ts +184 -82
- package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +546 -0
- package/src/runtime/gateway/mcp/runtime-tools.ts +2224 -1589
- package/src/runtime/plugins/app-store-connect-adapter.ts +123 -19
- package/src/runtime/plugins/browser-adapter.ts +2901 -241
- package/src/runtime/plugins/browser-automation-service.ts +10 -0
- package/src/runtime/plugins/browser-handoff.ts +92 -2
- package/src/runtime/plugins/browser-macos-bridge.ts +582 -49
- 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 +8 -2
- package/src/runtime/plugins/external-adapter.ts +324 -3
- package/src/runtime/plugins/external-unix-socket.ts +7 -1
- package/src/runtime/plugins/first-party-registry.ts +2 -0
- package/src/runtime/plugins/github-adapter.ts +125 -0
- 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 +123 -6
- 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 +49 -8
- package/src/runtime/plugins/resend-adapter.ts +1 -1
- package/src/runtime/plugins/store.ts +269 -29
- package/src/runtime/plugins/types.ts +35 -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/maintenance-executor.ts +393 -28
- 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 +19 -0
- package/src/runtime/root/release-store.ts +48 -11
- package/src/runtime/root/runtime.ts +23 -5
- package/src/runtime/root/service.ts +100 -29
- package/src/runtime/root/types.ts +2 -0
- package/src/runtime/safe-tooling/ios-development.ts +321 -63
- 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 +700 -92
- 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 +81 -3
- package/src/runtime/workflow/schedules/engine.ts +287 -151
- 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 +2 -4
- package/src/runtime/workflow/schedules/work-continuation.ts +26 -13
- 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/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 -459
- package/docs/architecture/current/codegraph-context-provider.md +0 -238
- 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 -373
- package/docs/architecture/current/entity-model.md +0 -612
- 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 -169
- 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 -321
- 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 -93
- 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/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
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Lightweight run_check facade.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Ordinary checks execute through an in-memory lightweight handle and return
|
|
5
|
+
* within the interactive budget without creating Process/Lease state. Checks
|
|
6
|
+
* with real Work/Edit/verification consumers keep persisted Process receipts.
|
|
6
7
|
* Multi-phase and release checks require explicit external Controller handling.
|
|
7
8
|
*/
|
|
8
9
|
|
|
@@ -15,6 +16,12 @@ import {
|
|
|
15
16
|
} from '../../../cli/controller/check-runner';
|
|
16
17
|
import { claimsForCheck, scopeResourceClaims, toProcessClaims } from './resource-claims';
|
|
17
18
|
import { spawnManagedProcess, waitForProcess, getProcessHandle } from './runtime';
|
|
19
|
+
import {
|
|
20
|
+
getLightweightProcessHandle,
|
|
21
|
+
isLightweightProcessId,
|
|
22
|
+
startLightweightControllerCheck,
|
|
23
|
+
waitForLightweightProcess,
|
|
24
|
+
} from './lightweight-managed';
|
|
18
25
|
import type { ProcessHandle } from './types';
|
|
19
26
|
import { DEFAULT_INTERACTIVE_WAIT_MS } from './types';
|
|
20
27
|
import { durationAwareInteractiveWaitMs } from './interactive-admission';
|
|
@@ -37,10 +44,14 @@ export interface RunCheckFacadeInput {
|
|
|
37
44
|
*/
|
|
38
45
|
leaseWaitMs?: number;
|
|
39
46
|
requestId?: string;
|
|
47
|
+
/** Stable caller-owned semantic identity for safely reattaching the same request before rebuilding ephemeral execution inputs. */
|
|
48
|
+
requestSemanticFingerprint?: string;
|
|
40
49
|
workId?: string;
|
|
41
50
|
commandId?: string;
|
|
42
51
|
/** Force durable workflow (release / multi-phase). */
|
|
43
52
|
forceDurable?: boolean;
|
|
53
|
+
/** Internal-only: allow an already-authorized external Work Controller to execute a durable-class check through persisted Process Runtime. */
|
|
54
|
+
allowDurableCheckExecution?: boolean;
|
|
44
55
|
signal?: AbortSignal;
|
|
45
56
|
/** Immutable resolved identity — required; never inferred from main/active/cwd. */
|
|
46
57
|
executionIdentity: ResolvedExecutionIdentity;
|
|
@@ -143,8 +154,9 @@ export async function runCheckViaProcessRuntime(
|
|
|
143
154
|
};
|
|
144
155
|
}
|
|
145
156
|
|
|
146
|
-
//
|
|
147
|
-
//
|
|
157
|
+
// The wait budget is an interaction preference, not a persistence reason.
|
|
158
|
+
// Ordinary checks stay in memory; only a real durable evidence consumer may
|
|
159
|
+
// allocate Process/Lease state.
|
|
148
160
|
const interactiveWaitMs = durationAwareInteractiveWaitMs(
|
|
149
161
|
check.command,
|
|
150
162
|
input.interactiveWaitMs,
|
|
@@ -156,6 +168,14 @@ export async function runCheckViaProcessRuntime(
|
|
|
156
168
|
? Math.max(1_000, Math.trunc(input.timeoutMs))
|
|
157
169
|
: check.timeoutMs,
|
|
158
170
|
);
|
|
171
|
+
const durableVerificationBinding = Boolean(
|
|
172
|
+
input.workId
|
|
173
|
+
|| input.verificationSnapshot
|
|
174
|
+
|| input.verificationBinding?.executionSessionId
|
|
175
|
+
|| input.verificationBinding?.editSessionId
|
|
176
|
+
|| input.verificationBinding?.issueId
|
|
177
|
+
|| input.verificationBinding?.taskId,
|
|
178
|
+
);
|
|
159
179
|
if (!input.executionIdentity) {
|
|
160
180
|
throw new Error('EXECUTION_IDENTITY_REQUIRED: run_check requires an immutable executionIdentity');
|
|
161
181
|
}
|
|
@@ -170,6 +190,27 @@ export async function runCheckViaProcessRuntime(
|
|
|
170
190
|
`CHECKOUT_ROUTE_MISMATCH: check checkout ${input.checkoutId} differs from identity ${executionIdentity.checkoutId}`,
|
|
171
191
|
);
|
|
172
192
|
}
|
|
193
|
+
if (!durableVerificationBinding) {
|
|
194
|
+
const lightweight = await startLightweightControllerCheck({
|
|
195
|
+
controllerHome: input.controllerHome,
|
|
196
|
+
repoId: input.repoId,
|
|
197
|
+
repoRoot: input.repoRoot,
|
|
198
|
+
checkId: input.checkId,
|
|
199
|
+
interactiveWaitMs,
|
|
200
|
+
timeoutMs,
|
|
201
|
+
workId: input.workId,
|
|
202
|
+
commandId: input.commandId ?? input.requestId,
|
|
203
|
+
});
|
|
204
|
+
const handle = lightweight.handle;
|
|
205
|
+
return {
|
|
206
|
+
mode: handle.completed ? 'direct' : 'managed',
|
|
207
|
+
checkId: input.checkId,
|
|
208
|
+
check,
|
|
209
|
+
process: handle,
|
|
210
|
+
ok: handle.completed ? handle.ok : undefined,
|
|
211
|
+
durableSideEffects: emptyEffects,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
173
214
|
const claims = scopeResourceClaims(
|
|
174
215
|
claimsForCheck(
|
|
175
216
|
input.checkId,
|
|
@@ -252,6 +293,9 @@ export async function waitForCheckProcess(
|
|
|
252
293
|
processId: string,
|
|
253
294
|
timeoutMs?: number,
|
|
254
295
|
): Promise<ProcessHandle> {
|
|
296
|
+
if (isLightweightProcessId(processId)) {
|
|
297
|
+
return waitForLightweightProcess(controllerHome, repoId, processId, { timeoutMs });
|
|
298
|
+
}
|
|
255
299
|
return waitForProcess(controllerHome, repoId, processId, { timeoutMs });
|
|
256
300
|
}
|
|
257
301
|
|
|
@@ -260,6 +304,9 @@ export function getCheckProcessHandle(
|
|
|
260
304
|
repoId: string,
|
|
261
305
|
processId: string,
|
|
262
306
|
): ProcessHandle | undefined {
|
|
307
|
+
if (isLightweightProcessId(processId)) {
|
|
308
|
+
return getLightweightProcessHandle(controllerHome, repoId, processId);
|
|
309
|
+
}
|
|
263
310
|
return getProcessHandle(controllerHome, repoId, processId);
|
|
264
311
|
}
|
|
265
312
|
|
|
@@ -2,6 +2,7 @@ import { createHash, randomUUID } from 'crypto';
|
|
|
2
2
|
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'fs';
|
|
3
3
|
import { dirname, join } from 'path';
|
|
4
4
|
import { processLogDir } from './store';
|
|
5
|
+
import type { ManagedProcessRecord } from './types';
|
|
5
6
|
|
|
6
7
|
export interface PersistedCheckResultReceipt {
|
|
7
8
|
schemaVersion: 1;
|
|
@@ -51,3 +52,55 @@ export function readPersistedCheckResultReceipt(path: string | undefined): Persi
|
|
|
51
52
|
return undefined;
|
|
52
53
|
}
|
|
53
54
|
}
|
|
55
|
+
|
|
56
|
+
export type PersistedCheckTerminalEvidenceState =
|
|
57
|
+
| 'matched'
|
|
58
|
+
| 'process_runtime_failed_before_result'
|
|
59
|
+
| 'missing'
|
|
60
|
+
| 'mismatch';
|
|
61
|
+
|
|
62
|
+
export interface PersistedCheckTerminalEvidence {
|
|
63
|
+
state: PersistedCheckTerminalEvidenceState;
|
|
64
|
+
failureClass?: PersistedCheckResultReceipt['failureClass'];
|
|
65
|
+
warning?: string;
|
|
66
|
+
infrastructureReason?: string;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Classify one terminal Check Process using the structured result emitted by
|
|
71
|
+
* the check-runner sidecar. A Process Runtime/admission failure can terminate
|
|
72
|
+
* before that result exists (for example PROCESS_LEASE_CONFLICT); such a
|
|
73
|
+
* Process is infrastructure failure, never evidence that repository checks
|
|
74
|
+
* rejected the candidate. Missing/mismatched result identity also fails closed
|
|
75
|
+
* as infrastructure rather than manufacturing acceptance evidence.
|
|
76
|
+
*/
|
|
77
|
+
export function classifyPersistedCheckTerminalEvidence(
|
|
78
|
+
record: ManagedProcessRecord,
|
|
79
|
+
expectedCheckId: string,
|
|
80
|
+
): PersistedCheckTerminalEvidence {
|
|
81
|
+
const structured = readPersistedCheckResultReceipt(record.origin?.checkResultReceiptPath);
|
|
82
|
+
const structuredMatches = Boolean(
|
|
83
|
+
structured
|
|
84
|
+
&& record.checkExecution
|
|
85
|
+
&& structured.checkId === expectedCheckId
|
|
86
|
+
&& structured.cacheKey === record.checkExecution.cacheKey,
|
|
87
|
+
);
|
|
88
|
+
if (structuredMatches) {
|
|
89
|
+
return { state: 'matched', failureClass: structured?.failureClass };
|
|
90
|
+
}
|
|
91
|
+
if (!structured && record.error?.message?.trim()) {
|
|
92
|
+
const reason = record.error.message.trim().slice(0, 512);
|
|
93
|
+
return {
|
|
94
|
+
state: 'process_runtime_failed_before_result',
|
|
95
|
+
warning: `check process failed before structured result receipt: ${reason}`,
|
|
96
|
+
infrastructureReason: reason,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (structured) {
|
|
100
|
+
return {
|
|
101
|
+
state: 'mismatch',
|
|
102
|
+
warning: 'check result receipt did not match the terminal Process semantic identity',
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return { state: 'missing', warning: 'check result receipt is missing for the terminal Check Process' };
|
|
106
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { ControllerCheck } from '../../../cli/controller/check-runner';
|
|
2
|
+
import type { ResourceClaimSpec } from '../jobs/types';
|
|
3
|
+
import { resourceClaimsConflict } from '../../resources/claims/conflicts';
|
|
4
|
+
import { claimsForCheck } from './resource-claims';
|
|
5
|
+
|
|
6
|
+
export interface CheckExecutionWave {
|
|
7
|
+
wave: number;
|
|
8
|
+
checkIds: string[];
|
|
9
|
+
parallelSafe: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface CheckExecutionConflict {
|
|
13
|
+
leftCheckId: string;
|
|
14
|
+
rightCheckId: string;
|
|
15
|
+
resources: Array<{
|
|
16
|
+
left: Pick<ResourceClaimSpec, 'resourceKey' | 'mode'>;
|
|
17
|
+
right: Pick<ResourceClaimSpec, 'resourceKey' | 'mode'>;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface ScheduledCheck {
|
|
22
|
+
check: ControllerCheck;
|
|
23
|
+
claims: ResourceClaimSpec[];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function conflictingResources(left: ScheduledCheck, right: ScheduledCheck): CheckExecutionConflict['resources'] {
|
|
27
|
+
const conflicts: CheckExecutionConflict['resources'] = [];
|
|
28
|
+
for (const leftClaim of left.claims) {
|
|
29
|
+
for (const rightClaim of right.claims) {
|
|
30
|
+
if (!resourceClaimsConflict(leftClaim, rightClaim)) continue;
|
|
31
|
+
conflicts.push({
|
|
32
|
+
left: { resourceKey: leftClaim.resourceKey, mode: leftClaim.mode },
|
|
33
|
+
right: { resourceKey: rightClaim.resourceKey, mode: rightClaim.mode },
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return conflicts;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Produce deterministic execution waves from the exact same resource-claim model
|
|
42
|
+
* used by Process Runtime. Checks in one wave may overlap; waves run in order.
|
|
43
|
+
* This is advisory scheduling metadata, not a second lease authority.
|
|
44
|
+
*/
|
|
45
|
+
export function buildCheckExecutionSchedule(input: {
|
|
46
|
+
checks: ControllerCheck[];
|
|
47
|
+
requestedCheckIds: string[];
|
|
48
|
+
repoId: string;
|
|
49
|
+
checkoutId?: string;
|
|
50
|
+
}): {
|
|
51
|
+
waves: CheckExecutionWave[];
|
|
52
|
+
conflicts: CheckExecutionConflict[];
|
|
53
|
+
invalidCheckIds: string[];
|
|
54
|
+
maxParallel: number;
|
|
55
|
+
guidance: string[];
|
|
56
|
+
claimsByCheck: Array<{ checkId: string; claims: Array<Pick<ResourceClaimSpec, 'resourceKey' | 'mode'>> }>;
|
|
57
|
+
} {
|
|
58
|
+
const byId = new Map(input.checks.map((check) => [check.id, check]));
|
|
59
|
+
const requested = [...new Set(input.requestedCheckIds.filter(Boolean))];
|
|
60
|
+
const invalidCheckIds = requested.filter((checkId) => !byId.has(checkId));
|
|
61
|
+
const scheduled: ScheduledCheck[] = requested.flatMap((checkId) => {
|
|
62
|
+
const check = byId.get(checkId);
|
|
63
|
+
if (!check) return [];
|
|
64
|
+
return [{
|
|
65
|
+
check,
|
|
66
|
+
claims: claimsForCheck(check.id, check.command, input.repoId, input.checkoutId, check.effects),
|
|
67
|
+
}];
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const conflicts: CheckExecutionConflict[] = [];
|
|
71
|
+
for (let leftIndex = 0; leftIndex < scheduled.length; leftIndex += 1) {
|
|
72
|
+
for (let rightIndex = leftIndex + 1; rightIndex < scheduled.length; rightIndex += 1) {
|
|
73
|
+
const left = scheduled[leftIndex]!;
|
|
74
|
+
const right = scheduled[rightIndex]!;
|
|
75
|
+
const resources = conflictingResources(left, right);
|
|
76
|
+
if (resources.length === 0) continue;
|
|
77
|
+
conflicts.push({ leftCheckId: left.check.id, rightCheckId: right.check.id, resources });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const waves: ScheduledCheck[][] = [];
|
|
82
|
+
for (const entry of scheduled) {
|
|
83
|
+
const compatible = waves.find((wave) => wave.every((other) => conflictingResources(entry, other).length === 0));
|
|
84
|
+
if (compatible) compatible.push(entry);
|
|
85
|
+
else waves.push([entry]);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const projectedWaves = waves.map((wave, index) => ({
|
|
89
|
+
wave: index + 1,
|
|
90
|
+
checkIds: wave.map((entry) => entry.check.id),
|
|
91
|
+
parallelSafe: wave.length > 1,
|
|
92
|
+
}));
|
|
93
|
+
const maxParallel = projectedWaves.reduce((max, wave) => Math.max(max, wave.checkIds.length), 0);
|
|
94
|
+
const guidance: string[] = [];
|
|
95
|
+
if (projectedWaves.length > 1) {
|
|
96
|
+
guidance.push('Run check waves in order; only checks within the same wave are resource-compatible for overlap.');
|
|
97
|
+
} else if (maxParallel > 1) {
|
|
98
|
+
guidance.push('Requested checks are resource-compatible and may run concurrently for this checkout.');
|
|
99
|
+
} else if (maxParallel === 1) {
|
|
100
|
+
guidance.push('Run the requested check as one focused verification unit.');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
waves: projectedWaves,
|
|
105
|
+
conflicts,
|
|
106
|
+
invalidCheckIds,
|
|
107
|
+
maxParallel,
|
|
108
|
+
guidance,
|
|
109
|
+
claimsByCheck: scheduled.map((entry) => ({
|
|
110
|
+
checkId: entry.check.id,
|
|
111
|
+
claims: entry.claims.map((claim) => ({ resourceKey: claim.resourceKey, mode: claim.mode })),
|
|
112
|
+
})),
|
|
113
|
+
};
|
|
114
|
+
}
|