@moretea-labs/forge 1.5.0-rc.1
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 +120 -0
- package/CHANGELOG.md +36 -0
- package/CLAUDE.md +120 -0
- package/CODE_OF_CONDUCT.md +23 -0
- package/CONTRIBUTING.md +77 -0
- package/LICENSE +22 -0
- package/NOTICE +9 -0
- package/README.en.md +5 -0
- package/README.es.md +12 -0
- package/README.fr.md +12 -0
- package/README.ja.md +12 -0
- package/README.md +132 -0
- package/README.zh-CN.md +84 -0
- package/SECURITY.md +50 -0
- package/SKILL.md +431 -0
- package/SUPPORT.md +31 -0
- package/THIRD_PARTY_NOTICES.md +18 -0
- package/agents/openai.yaml +4 -0
- package/assets/AGENTS.md +68 -0
- package/assets/CLAUDE.md +68 -0
- package/assets/branding/README.md +10 -0
- package/assets/branding/forge-controller-flow.mmd +8 -0
- package/assets/hooks/AGENTS.md +75 -0
- package/assets/hooks/CLAUDE.md +75 -0
- package/assets/hooks/anti-simplification.sh +12 -0
- package/assets/hooks/changelog-guard.sh +80 -0
- package/assets/hooks/codex.hooks.template.json +60 -0
- package/assets/hooks/first-principles-guard.sh +72 -0
- package/assets/hooks/hook-input.sh +618 -0
- package/assets/hooks/lib/session-state.sh +106 -0
- package/assets/hooks/lib/workflow-state.sh +1730 -0
- package/assets/hooks/post-bash.sh +215 -0
- package/assets/hooks/post-edit-guard.sh +256 -0
- package/assets/hooks/post-tool-observer.sh +99 -0
- package/assets/hooks/pre-edit-guard.sh +240 -0
- package/assets/hooks/prompt-guard.sh +1077 -0
- package/assets/hooks/run-hook.sh +67 -0
- package/assets/hooks/security-sentinel.sh +115 -0
- package/assets/hooks/session-start-context.sh +593 -0
- package/assets/hooks/settings.template.json +60 -0
- package/assets/hooks/stop-orchestrator.sh +171 -0
- package/assets/hooks/subagent-return-channel-guard.sh +107 -0
- package/assets/hooks/worktree-guard.sh +39 -0
- package/assets/initializer-question-pack.v1.json +132 -0
- package/assets/initializer-question-pack.v1.schema.json +46 -0
- package/assets/initializer-question-pack.v2.json +174 -0
- package/assets/initializer-question-pack.v3.json +206 -0
- package/assets/initializer-question-pack.v3.schema.json +92 -0
- package/assets/initializer-question-pack.v4.json +557 -0
- package/assets/initializer-question-pack.v4.schema.json +169 -0
- package/assets/partials/01-header.partial.md +10 -0
- package/assets/partials/02-iron-rules.partial.md +30 -0
- package/assets/partials/03-philosophy.partial.md +32 -0
- package/assets/partials/04-project-structure.partial.md +56 -0
- package/assets/partials/05-workflow.partial.md +79 -0
- package/assets/partials/06-cloudflare.partial.md +20 -0
- package/assets/partials/07-footer.partial.md +38 -0
- package/assets/partials/08-orchestration.partial.md +49 -0
- package/assets/partials/09-compact-instructions.partial.md +11 -0
- package/assets/partials/_assembly-order.md +40 -0
- package/assets/partials-agents/01-header.partial.md +8 -0
- package/assets/partials-agents/02-operating-mode.partial.md +44 -0
- package/assets/partials-agents/03-orchestration.partial.md +45 -0
- package/assets/partials-agents/04-task-protocol.partial.md +69 -0
- package/assets/partials-agents/05-coding-constraints.partial.md +20 -0
- package/assets/partials-agents/06-quality-safety.partial.md +23 -0
- package/assets/partials-agents/07-cloudflare.partial.md +9 -0
- package/assets/partials-agents/08-deep-docs.partial.md +32 -0
- package/assets/plan-map.json +301 -0
- package/assets/plugin-registry.v1.json +8 -0
- package/assets/project-structures/ai-native-collaborative-editor.txt +25 -0
- package/assets/project-structures/ai-native-product-copilot.txt +21 -0
- package/assets/project-structures/ai-native-runtime-console.txt +25 -0
- package/assets/project-structures/ai-native-sidecar-kernel.txt +19 -0
- package/assets/project-structures/astro-ssr.txt +25 -0
- package/assets/project-structures/expo-nativewind.txt +52 -0
- package/assets/project-structures/monorepo.txt +63 -0
- package/assets/project-structures/remix.txt +50 -0
- package/assets/project-structures/tanstack-start-workers.txt +51 -0
- package/assets/project-structures/vite-tanstack.txt +58 -0
- package/assets/reference-configs/AGENTS.md +13 -0
- package/assets/reference-configs/CLAUDE.md +13 -0
- package/assets/reference-configs/agentic-development-flow.md +94 -0
- package/assets/reference-configs/ai-workflows.md +14 -0
- package/assets/reference-configs/changelog-versioning.md +13 -0
- package/assets/reference-configs/coding-standards.md +14 -0
- package/assets/reference-configs/development-protocol.md +21 -0
- package/assets/reference-configs/document-generation.md +38 -0
- package/assets/reference-configs/evaluator-rubric.md +19 -0
- package/assets/reference-configs/external-tooling.md +374 -0
- package/assets/reference-configs/git-strategy.md +14 -0
- package/assets/reference-configs/global-working-rules.md +64 -0
- package/assets/reference-configs/handoff-protocol.md +38 -0
- package/assets/reference-configs/harness-overview.md +124 -0
- package/assets/reference-configs/heartbeat-triage.md +57 -0
- package/assets/reference-configs/hook-operations.md +96 -0
- package/assets/reference-configs/release-deploy.md +40 -0
- package/assets/reference-configs/spa-day-protocol.md +14 -0
- package/assets/reference-configs/sprint-contracts.md +89 -0
- package/assets/reference-configs/workflow-orchestration.md +14 -0
- package/assets/skill-hooks.json +41 -0
- package/assets/skill-version.json +189 -0
- package/assets/skills/claude-review/SKILL.md +231 -0
- package/assets/skills/codex-review/SKILL.md +103 -0
- package/assets/templates/AGENTS.md +13 -0
- package/assets/templates/CLAUDE.md +13 -0
- package/assets/templates/architecture.template.md +80 -0
- package/assets/templates/brief.template.md +38 -0
- package/assets/templates/contract.template.md +104 -0
- package/assets/templates/decisions.template.md +85 -0
- package/assets/templates/factor-factory/factor-backtest-report.template.md +36 -0
- package/assets/templates/factor-factory/factor-hypothesis.template.md +30 -0
- package/assets/templates/factor-factory/factor-registry.template.json +5 -0
- package/assets/templates/gitignore.template +53 -0
- package/assets/templates/guides/metro-esm-gotchas.template.md +46 -0
- package/assets/templates/helpers/architecture-event.ts +822 -0
- package/assets/templates/helpers/architecture-queue.sh +647 -0
- package/assets/templates/helpers/archive-architecture-request.sh +244 -0
- package/assets/templates/helpers/archive-workflow.sh +295 -0
- package/assets/templates/helpers/capability-config.ts +394 -0
- package/assets/templates/helpers/capability-resolver.ts +505 -0
- package/assets/templates/helpers/capture-plan.sh +335 -0
- package/assets/templates/helpers/check-agent-tooling.sh +1533 -0
- package/assets/templates/helpers/check-architecture-sync.sh +287 -0
- package/assets/templates/helpers/check-brain-manifest.sh +255 -0
- package/assets/templates/helpers/check-context-files.sh +49 -0
- package/assets/templates/helpers/check-deploy-sql-order.sh +117 -0
- package/assets/templates/helpers/check-skill-version.ts +193 -0
- package/assets/templates/helpers/check-task-sync.sh +65 -0
- package/assets/templates/helpers/check-task-workflow.sh +1002 -0
- package/assets/templates/helpers/codex-handoff-resume.sh +269 -0
- package/assets/templates/helpers/context-contract-sync.sh +516 -0
- package/assets/templates/helpers/contract-run.ts +465 -0
- package/assets/templates/helpers/contract-worktree.sh +725 -0
- package/assets/templates/helpers/ensure-task-workflow.sh +1218 -0
- package/assets/templates/helpers/harness-trace-grade.sh +150 -0
- package/assets/templates/helpers/heartbeat-triage.sh +361 -0
- package/assets/templates/helpers/inspect-project-state.ts +280 -0
- package/assets/templates/helpers/maintenance-triage.sh +167 -0
- package/assets/templates/helpers/migrate-project-template.sh +54 -0
- package/assets/templates/helpers/migrate-workflow-docs.ts +413 -0
- package/assets/templates/helpers/new-plan.sh +183 -0
- package/assets/templates/helpers/new-spec.sh +50 -0
- package/assets/templates/helpers/new-sprint.sh +49 -0
- package/assets/templates/helpers/plan-to-todo.sh +799 -0
- package/assets/templates/helpers/prepare-codex-handoff.sh +203 -0
- package/assets/templates/helpers/prepare-handoff.sh +81 -0
- package/assets/templates/helpers/refresh-current-status.sh +469 -0
- package/assets/templates/helpers/select-agent-context-blocks.sh +66 -0
- package/assets/templates/helpers/ship-worktrees.sh +561 -0
- package/assets/templates/helpers/sprint-backlog.sh +837 -0
- package/assets/templates/helpers/summarize-failures.sh +125 -0
- package/assets/templates/helpers/switch-plan.sh +153 -0
- package/assets/templates/helpers/sync-brain-docs.sh +381 -0
- package/assets/templates/helpers/verify-contract.sh +705 -0
- package/assets/templates/helpers/verify-sprint.sh +680 -0
- package/assets/templates/helpers/workflow-contract.ts +202 -0
- package/assets/templates/helpers/workstream-sync.sh +263 -0
- package/assets/templates/implementation-notes.template.md +37 -0
- package/assets/templates/packages.template.md +45 -0
- package/assets/templates/plan.template.md +77 -0
- package/assets/templates/prd.template.md +165 -0
- package/assets/templates/research.template.md +25 -0
- package/assets/templates/review.template.md +78 -0
- package/assets/templates/spec.template.md +31 -0
- package/assets/templates/sprint.template.md +69 -0
- package/assets/templates/tech-stack.template.md +57 -0
- package/assets/versions.json +77 -0
- package/assets/workflow-contract.v1.json +671 -0
- package/bin/forge-desktop-helper.mjs +204 -0
- package/bin/forge-hook.mjs +32 -0
- package/bin/forge-runtime-service.mjs +34 -0
- package/bin/forge-runtime.mjs +30 -0
- package/bin/forge.mjs +32 -0
- package/docs/CHANGELOG.md +978 -0
- package/docs/README.md +72 -0
- package/docs/README.zh-CN.md +58 -0
- package/docs/architecture/chatgpt-handoff-facade.md +393 -0
- package/docs/architecture/current/README.md +158 -0
- package/docs/architecture/current/approved-target-architecture.zh-CN.md +1501 -0
- package/docs/architecture/current/architecture-invariants.md +331 -0
- package/docs/architecture/current/automation-and-schedule-engine.md +453 -0
- package/docs/architecture/current/codegraph-context-provider.md +226 -0
- package/docs/architecture/current/control-plane-authority-inventory.md +82 -0
- package/docs/architecture/current/controller-repository-decoupling.md +148 -0
- package/docs/architecture/current/dispatch-and-agent-strategy.md +354 -0
- package/docs/architecture/current/entity-model.md +619 -0
- package/docs/architecture/current/external-plugin-governance.md +396 -0
- package/docs/architecture/current/failure-recovery.md +471 -0
- package/docs/architecture/current/governance.md +213 -0
- package/docs/architecture/current/human-interaction-plane.md +87 -0
- package/docs/architecture/current/implementation-status.md +128 -0
- package/docs/architecture/current/job-and-run-lifecycle.md +413 -0
- package/docs/architecture/current/local-workspace-target-grants.md +70 -0
- package/docs/architecture/current/migration-roadmap.md +105 -0
- package/docs/architecture/current/multi-repository-execution.md +371 -0
- package/docs/architecture/current/operations-runbook.md +45 -0
- package/docs/architecture/current/peer-supercontroller-runtime.md +32 -0
- package/docs/architecture/current/personal-assistant-plugin-baseline.md +207 -0
- package/docs/architecture/current/repository-access-modes.md +102 -0
- package/docs/architecture/current/route-policy.md +15 -0
- package/docs/architecture/current/route-session-concurrency.md +85 -0
- package/docs/architecture/current/runtime-architecture-simplification.md +214 -0
- package/docs/architecture/current/runtime-directory-map.md +49 -0
- package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +85 -0
- package/docs/architecture/current/scheduler-and-resource-claims.md +432 -0
- package/docs/architecture/current/session-aware-execution-and-authorization.md +77 -0
- package/docs/architecture/current/system-overview.md +144 -0
- package/docs/architecture/current/target-requirements-traceability.md +202 -0
- package/docs/architecture/current/thin-harness-governance-policy.md +32 -0
- package/docs/architecture/current/thin-harness-v1.md +313 -0
- package/docs/architecture/current/verification-and-release-gates.md +391 -0
- package/docs/architecture/decisions/20260801-controller-home-sqlite-state.md +100 -0
- package/docs/architecture/decisions/20260803-canonical-skill-surface.md +40 -0
- package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +53 -0
- package/docs/architecture/diagrams/.gitkeep +1 -0
- package/docs/architecture/diagrams/agentic-dev-plugin-architecture.html +186 -0
- package/docs/architecture/domains/.gitkeep +0 -0
- package/docs/architecture/domains/public-surface.md +30 -0
- package/docs/architecture/domains/runtime-harness.md +33 -0
- package/docs/architecture/domains/verification.md +33 -0
- package/docs/architecture/domains/workflow-engine.md +30 -0
- package/docs/architecture/global-hook-runtime.md +162 -0
- package/docs/architecture/history.md +38 -0
- package/docs/architecture/index.md +114 -0
- package/docs/architecture/ios-semantic-automation-provider-v2.md +166 -0
- package/docs/architecture/modules/.gitkeep +0 -0
- package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +24 -0
- package/docs/architecture/requests/.gitkeep +1 -0
- package/docs/architecture/requests/archive/2026/20260528-154740-ai-hooks-ai-hooks-hook-input-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-154816-assets-hooks-assets-hooks-hook-input-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-161851-ai-harness-workflow-contract-json-ai-harness-workflow-contract-json.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-161853-scripts-check-task-workflow-sh-scripts-check-task-workflow-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-161911-assets-workflow-contract-v1-json-assets-workflow-contract-v1-json.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222416-ai-hooks-ai-hooks-hook-input-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222444-ai-hooks-ai-hooks-pre-edit-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222457-ai-hooks-ai-hooks-pre-edit-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222648-ai-hooks-ai-hooks-pre-edit-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222705-ai-hooks-ai-hooks-worktree-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222726-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222727-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-224736-ai-hooks-ai-hooks-hook-input-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233259-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233335-assets-hooks-assets-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233456-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233457-assets-hooks-assets-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233637-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233638-assets-hooks-assets-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260529-000322-root-package-json.md +59 -0
- package/docs/architecture/requests/archive/2026/20260529-004238-ai-hooks-ai-hooks-lib-workflow-state-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260529-020654-ai-harness-policy-json-ai-harness-policy-json.md +63 -0
- package/docs/architecture/requests/archive/2026/20260529-094236-ai-hooks-ai-hooks-prompt-guard-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260529-094323-assets-hooks-assets-hooks-prompt-guard-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260529-094331-ai-hooks-ai-hooks-prompt-guard-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260529-094339-assets-hooks-assets-hooks-prompt-guard-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260529-094430-assets-hooks-assets-hooks-session-start-context-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260529-094446-ai-hooks-ai-hooks-session-start-context-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260613-002040-runtime-harness-hook-adapters.md +68 -0
- package/docs/architecture/requests/archive/2026/root.md +68 -0
- package/docs/architecture/requests/archive/2026/runtime-harness-hook-adapters.md +76 -0
- package/docs/architecture/requests/archive/2026/verification-evals-checks.md +68 -0
- package/docs/architecture/requests/archive/2026/workflow-engine-contract-assets.md +69 -0
- package/docs/architecture/reviews/2026-07-11-access-surface-review.md +99 -0
- package/docs/architecture/snapshots/.gitkeep +1 -0
- package/docs/forge-autonomous-goal-loop.md +7 -0
- package/docs/forge-chatgpt-browser-engine.md +11 -0
- package/docs/forge-chatgpt-mcp-setup.md +239 -0
- package/docs/forge-chatgpt-supervised-automation.md +11 -0
- package/docs/forge-github-issue-launcher.md +7 -0
- package/docs/forge-plugin-management.md +95 -0
- package/docs/forge-provider-configuration.md +7 -0
- package/docs/forge-runtime-self-healing-loop.md +7 -0
- package/docs/images/forge-banner-cn.svg +1 -0
- package/docs/images/forge-banner.svg +1 -0
- package/docs/images/forge-controller-flow.svg +1 -0
- package/docs/images/image.png +0 -0
- package/docs/images/repo-harness-gptpro-cn.png +0 -0
- package/docs/images/repo-harness-gptpro.png +0 -0
- package/docs/images/repo-harness-hook-carrot.png +0 -0
- package/docs/operations/chatgpt-personal-assistant-runtime.md +83 -0
- package/docs/operations/checkout-route-integrity.md +22 -0
- package/docs/operations/controller-browser-plugin.md +299 -0
- package/docs/operations/controller-desktop-plugin.md +112 -0
- package/docs/operations/controller-performance-and-502.md +126 -0
- package/docs/operations/controller-reliability-runbook.md +134 -0
- package/docs/operations/environment-hardening.md +50 -0
- package/docs/operations/features.md +45 -0
- package/docs/operations/features.zh-CN.md +45 -0
- package/docs/operations/github-repository.md +60 -0
- package/docs/operations/gmail-assistant-routines.md +186 -0
- package/docs/operations/homebrew.md +26 -0
- package/docs/operations/local-system-assistant.md +46 -0
- package/docs/operations/local-system-assistant.zh-CN.md +46 -0
- package/docs/operations/mcp-tool-exposure.md +58 -0
- package/docs/operations/mobile-intents-shortcuts.md +117 -0
- package/docs/operations/open-source-release-hygiene.md +31 -0
- package/docs/operations/personal-assistant-operator-guide.md +61 -0
- package/docs/operations/platform-support.md +62 -0
- package/docs/operations/platform-support.zh-CN.md +61 -0
- package/docs/operations/provider-configuration.md +31 -0
- package/docs/operations/releasing.md +86 -0
- package/docs/operations/releasing.zh-CN.md +86 -0
- package/docs/operations/route-session-concurrency-baseline.json +893 -0
- package/docs/operations/route-session-concurrency-baseline.md +94 -0
- package/docs/operations/runtime-performance-diagnostics.md +14 -0
- package/docs/operations/sqlite-control-plane-recovery.md +65 -0
- package/docs/operations/standalone-disaster-recovery.md +136 -0
- package/docs/operations/troubleshooting.md +72 -0
- package/docs/operations/troubleshooting.zh-CN.md +70 -0
- package/docs/public-usage-guide.md +33 -0
- package/docs/public-usage-guide.zh-CN.md +33 -0
- package/docs/tutorials/01-install-and-start.md +93 -0
- package/docs/tutorials/01-install-and-start.zh-CN.md +93 -0
- package/docs/tutorials/02-connect-chatgpt.md +82 -0
- package/docs/tutorials/02-connect-chatgpt.zh-CN.md +80 -0
- package/docs/tutorials/03-first-repository-task.md +57 -0
- package/docs/tutorials/03-first-repository-task.zh-CN.md +57 -0
- package/docs/tutorials/README.md +13 -0
- package/docs/tutorials/README.zh-CN.md +13 -0
- package/docs/wiki/Architecture.md +85 -0
- package/docs/wiki/Core-Concepts.md +27 -0
- package/docs/wiki/Home.md +36 -0
- package/docs/wiki/Implementation.md +172 -0
- package/docs/wiki/Installation.md +50 -0
- package/docs/wiki/Integrations.md +29 -0
- package/docs/wiki/Operations.md +26 -0
- package/docs/wiki/Quick-Start.md +46 -0
- package/docs/wiki/Releases-and-Upgrades.md +34 -0
- package/docs/wiki/Runtime-Architecture.md +50 -0
- package/docs/wiki/Security-Model.md +31 -0
- package/docs/wiki/Troubleshooting.md +38 -0
- package/docs/wiki/Work-Lifecycle.md +31 -0
- package/docs/wiki/_Sidebar.md +21 -0
- package/install.ps1 +48 -0
- package/install.sh +66 -0
- package/package.json +156 -0
- package/scripts/activate-source-baseline.ts +335 -0
- package/scripts/architecture-event.ts +822 -0
- package/scripts/architecture-queue.sh +647 -0
- package/scripts/archive-architecture-request.sh +244 -0
- package/scripts/archive-workflow.sh +295 -0
- package/scripts/assemble-template.ts +1172 -0
- package/scripts/benchmark-controller-hotpath.ts +212 -0
- package/scripts/benchmark-controller-round2.ts +139 -0
- package/scripts/benchmark-ios-agent-device.ts +514 -0
- package/scripts/benchmark-route-session-concurrency.ts +714 -0
- package/scripts/benchmark-thin-harness-gateway-ab.ts +632 -0
- package/scripts/benchmark-thin-harness-mcp-e2e.ts +479 -0
- package/scripts/benchmark-thin-harness.ts +251 -0
- package/scripts/bootstrap-runtime-maintenance-recovery.sh +183 -0
- package/scripts/canary-global-hook.sh +263 -0
- package/scripts/capability-config.ts +394 -0
- package/scripts/capability-resolver.ts +505 -0
- package/scripts/capture-plan.sh +335 -0
- package/scripts/check-agent-tooling.sh +1549 -0
- package/scripts/check-architecture-sync.sh +373 -0
- package/scripts/check-brain-manifest.sh +255 -0
- package/scripts/check-ci.sh +16 -0
- package/scripts/check-context-files.sh +49 -0
- package/scripts/check-deploy-sql-order.sh +117 -0
- package/scripts/check-mcp-compatibility.ts +93 -0
- package/scripts/check-npm-release.sh +32 -0
- package/scripts/check-open-source-tracked-surface.sh +146 -0
- package/scripts/check-package-identity.mjs +117 -0
- package/scripts/check-platform-support.mjs +79 -0
- package/scripts/check-public-docs.sh +105 -0
- package/scripts/check-public-release-surface.sh +19 -0
- package/scripts/check-release-published.sh +57 -0
- package/scripts/check-release-readiness.sh +43 -0
- package/scripts/check-release-version.mjs +74 -0
- package/scripts/check-runtime-architecture.mjs +593 -0
- package/scripts/check-runtime-env.mjs +89 -0
- package/scripts/check-skill-version.ts +193 -0
- package/scripts/check-tarball-install-smoke.sh +66 -0
- package/scripts/check-task-sync.sh +65 -0
- package/scripts/check-task-workflow.sh +1002 -0
- package/scripts/check-third-party-notices.mjs +36 -0
- package/scripts/codex-handoff-resume.sh +269 -0
- package/scripts/complete-control-plane-cutover.ts +126 -0
- package/scripts/context-contract-sync.sh +516 -0
- package/scripts/contract-run.ts +465 -0
- package/scripts/contract-worktree.sh +725 -0
- package/scripts/controller-ngrok-rotation.sh +678 -0
- package/scripts/create-project-dirs.sh +282 -0
- package/scripts/ensure-codegraph.sh +16 -0
- package/scripts/ensure-task-workflow.sh +1218 -0
- package/scripts/export-requirement-portfolio.ts +28 -0
- package/scripts/factor-lab-check.sh +73 -0
- package/scripts/factor-lab-new.sh +96 -0
- package/scripts/factor-lab-promote.sh +86 -0
- package/scripts/factor-lab-reject.sh +68 -0
- package/scripts/harness-trace-grade.sh +150 -0
- package/scripts/heartbeat-triage.sh +361 -0
- package/scripts/hook-dispatch-diet-report.ts +234 -0
- package/scripts/hook-shim.sh +93 -0
- package/scripts/init-project.sh +505 -0
- package/scripts/initializer-question-pack.ts +200 -0
- package/scripts/inspect-project-state.ts +280 -0
- package/scripts/install-desktop-operator-registration.ts +45 -0
- package/scripts/install-standalone-recovery.ts +74 -0
- package/scripts/lib/AGENTS.md +13 -0
- package/scripts/lib/CLAUDE.md +13 -0
- package/scripts/lib/controller-home-env.sh +69 -0
- package/scripts/lib/project-init-lib.sh +2759 -0
- package/scripts/load-standalone-recovery.sh +17 -0
- package/scripts/loop-engine-cutover-gate.ts +324 -0
- package/scripts/maintenance-triage.sh +167 -0
- package/scripts/migrate-project-template.sh +1189 -0
- package/scripts/migrate-requirement-portfolio.ts +86 -0
- package/scripts/migrate-workflow-docs.ts +413 -0
- package/scripts/new-plan.sh +183 -0
- package/scripts/new-spec.sh +50 -0
- package/scripts/new-sprint.sh +49 -0
- package/scripts/open-source-audit-allowlist.txt +46 -0
- package/scripts/package-source-archive.sh +147 -0
- package/scripts/plan-to-todo.sh +799 -0
- package/scripts/prepare-codex-handoff.sh +203 -0
- package/scripts/prepare-handoff.sh +81 -0
- package/scripts/public-release-files.txt +39 -0
- package/scripts/public-release.ts +174 -0
- package/scripts/publish-release-tarball.sh +27 -0
- package/scripts/refresh-current-status.sh +469 -0
- package/scripts/refresh-ios-physical-runtime.ts +196 -0
- package/scripts/repair-executable-modes.ts +8 -0
- package/scripts/rollout-all-registered-repos.sh +7 -0
- package/scripts/route-nl-vs-ts-eval.ts +679 -0
- package/scripts/run-bun-test-file.ts +182 -0
- package/scripts/run-governed-gate.ts +140 -0
- package/scripts/run-mobile-monitor-bridge.ts +71 -0
- package/scripts/run-skill-evals.ts +1022 -0
- package/scripts/run-skill-hook.ts +244 -0
- package/scripts/run-supervised-command.ts +24 -0
- package/scripts/run-tests-portable.sh +20 -0
- package/scripts/select-agent-context-blocks.sh +66 -0
- package/scripts/setup-plugins.sh +43 -0
- package/scripts/ship-worktrees.sh +561 -0
- package/scripts/smoke-browser-cdp-bridge.ts +93 -0
- package/scripts/smoke-chatgpt-supervised-automation.ts +208 -0
- package/scripts/smoke-ios-physical-device.ts +114 -0
- package/scripts/smoke-mcp-http-runtime.ts +216 -0
- package/scripts/smoke-mcp-tool-surface.ts +117 -0
- package/scripts/smoke-runtime-recovery.ts +220 -0
- package/scripts/smoke-schedule-engine.ts +283 -0
- package/scripts/sprint-backlog.sh +837 -0
- package/scripts/stage-runtime-release.ts +38 -0
- package/scripts/summarize-failures.sh +125 -0
- package/scripts/switch-plan.sh +153 -0
- package/scripts/sync-brain-docs.sh +381 -0
- package/scripts/sync-codex-installed-copies.sh +183 -0
- package/scripts/test-governance.ts +75 -0
- package/scripts/verify-contract.sh +705 -0
- package/scripts/verify-forge-runtime.sh +31 -0
- package/scripts/verify-sprint.sh +680 -0
- package/scripts/windows-paths.d.mts +7 -0
- package/scripts/windows-paths.mjs +28 -0
- package/scripts/workflow-contract.ts +206 -0
- package/scripts/workstream-sync.sh +263 -0
- package/src/cli/agent-jobs/executable-resolver.ts +289 -0
- package/src/cli/agent-jobs/executor-health.ts +252 -0
- package/src/cli/agent-jobs/integration.ts +963 -0
- package/src/cli/agent-jobs/job-manager.ts +2030 -0
- package/src/cli/agent-jobs/types.ts +219 -0
- package/src/cli/agent-jobs/worker-lifecycle.ts +288 -0
- package/src/cli/chatgpt-browser/bind-server.ts +504 -0
- package/src/cli/chatgpt-browser/binding.ts +140 -0
- package/src/cli/chatgpt-browser/bridge-extension.ts +221 -0
- package/src/cli/chatgpt-browser/bridge-provider.ts +268 -0
- package/src/cli/chatgpt-browser/engine.ts +569 -0
- package/src/cli/chatgpt-browser/file-policy.ts +158 -0
- package/src/cli/chatgpt-browser/native-provider.ts +553 -0
- package/src/cli/chatgpt-browser/oracle-provider.ts +437 -0
- package/src/cli/chatgpt-browser/prompt-assembler.ts +29 -0
- package/src/cli/chatgpt-browser/session-store.ts +301 -0
- package/src/cli/chatgpt-browser/types.ts +172 -0
- package/src/cli/commands/adopt-plan.ts +186 -0
- package/src/cli/commands/brain-root.ts +132 -0
- package/src/cli/commands/brain.ts +609 -0
- package/src/cli/commands/capability-context.ts +613 -0
- package/src/cli/commands/chatgpt.ts +424 -0
- package/src/cli/commands/controller.ts +680 -0
- package/src/cli/commands/docs.ts +103 -0
- package/src/cli/commands/doctor.ts +476 -0
- package/src/cli/commands/global-runtime.ts +323 -0
- package/src/cli/commands/hook.ts +34 -0
- package/src/cli/commands/init-hook.ts +870 -0
- package/src/cli/commands/init.ts +829 -0
- package/src/cli/commands/install.ts +86 -0
- package/src/cli/commands/mcp.ts +315 -0
- package/src/cli/commands/migrate.ts +154 -0
- package/src/cli/commands/plugin.ts +74 -0
- package/src/cli/commands/prompt-guard-decision.ts +238 -0
- package/src/cli/commands/recovery.ts +667 -0
- package/src/cli/commands/repository.ts +224 -0
- package/src/cli/commands/run.ts +23 -0
- package/src/cli/commands/runtime.ts +191 -0
- package/src/cli/commands/security.ts +440 -0
- package/src/cli/commands/status.ts +137 -0
- package/src/cli/commands/tools.ts +167 -0
- package/src/cli/controller/check-runner.ts +1022 -0
- package/src/cli/controller/codex-continuation.ts +153 -0
- package/src/cli/controller/completion-backlog.ts +380 -0
- package/src/cli/controller/completion-orchestrator.ts +1807 -0
- package/src/cli/controller/completion-target.ts +96 -0
- package/src/cli/controller/composite-operations.ts +196 -0
- package/src/cli/controller/composite-result.ts +130 -0
- package/src/cli/controller/context-pack.ts +652 -0
- package/src/cli/controller/execution-completion.ts +175 -0
- package/src/cli/controller/execution-policy.ts +392 -0
- package/src/cli/controller/governance.ts +594 -0
- package/src/cli/controller/issue-store.ts +1421 -0
- package/src/cli/controller/launch-agents.ts +410 -0
- package/src/cli/controller/legacy-issue-cutover.ts +415 -0
- package/src/cli/controller/lifecycle-authority.ts +16 -0
- package/src/cli/controller/migrated-issue-decision.ts +237 -0
- package/src/cli/controller/operational-plan.ts +226 -0
- package/src/cli/controller/postcondition.ts +134 -0
- package/src/cli/controller/progress.ts +656 -0
- package/src/cli/controller/project-state.ts +147 -0
- package/src/cli/controller/requirement-portfolio-export.ts +146 -0
- package/src/cli/controller/requirement-portfolio-migration.ts +613 -0
- package/src/cli/controller/run-evidence.ts +43 -0
- package/src/cli/controller/runtime-config.ts +92 -0
- package/src/cli/controller/stuck-state-migration.ts +396 -0
- package/src/cli/controller/task-ledger.ts +632 -0
- package/src/cli/controller/task-status-resolver.ts +403 -0
- package/src/cli/controller/types.ts +273 -0
- package/src/cli/controller/work-mode.ts +186 -0
- package/src/cli/controller/worklog.ts +201 -0
- package/src/cli/diagnostic-entry.ts +39 -0
- package/src/cli/editing/edit-session.ts +1606 -0
- package/src/cli/editing/executable-modes.ts +70 -0
- package/src/cli/github/github.ts +274 -0
- package/src/cli/github/plugin.ts +345 -0
- package/src/cli/github/session.ts +104 -0
- package/src/cli/hook/prompt-guard-decision.ts +238 -0
- package/src/cli/hook/prompt-intents.ts +534 -0
- package/src/cli/hook/route-registry.ts +107 -0
- package/src/cli/hook/runtime.ts +303 -0
- package/src/cli/hook/state-snapshot.ts +388 -0
- package/src/cli/hook-entry.ts +51 -0
- package/src/cli/index.ts +574 -0
- package/src/cli/installer/managed-entries.ts +78 -0
- package/src/cli/installer/shared.ts +65 -0
- package/src/cli/installer/targets/claude.ts +136 -0
- package/src/cli/installer/targets/codex.ts +174 -0
- package/src/cli/installer/targets/registry.ts +28 -0
- package/src/cli/installer/types.ts +72 -0
- package/src/cli/local-bridge/connector-freshness.ts +529 -0
- package/src/cli/local-bridge/console-view-models.ts +324 -0
- package/src/cli/local-bridge/dashboard.ts +1312 -0
- package/src/cli/local-bridge/facade-api.ts +1877 -0
- package/src/cli/local-bridge/job-store.ts +1451 -0
- package/src/cli/local-bridge/mobile-intents.ts +344 -0
- package/src/cli/local-bridge/mobile-monitor.ts +209 -0
- package/src/cli/local-bridge/server.ts +3183 -0
- package/src/cli/local-bridge/types.ts +176 -0
- package/src/cli/mcp/access-mode.ts +132 -0
- package/src/cli/mcp/access-tools.ts +387 -0
- package/src/cli/mcp/audit.ts +32 -0
- package/src/cli/mcp/auth.ts +402 -0
- package/src/cli/mcp/instructions.ts +33 -0
- package/src/cli/mcp/legacy-context.ts +16 -0
- package/src/cli/mcp/legacy-tool-service.ts +5516 -0
- package/src/cli/mcp/multi-repository.ts +423 -0
- package/src/cli/mcp/oauth.ts +226 -0
- package/src/cli/mcp/paths.ts +134 -0
- package/src/cli/mcp/policy.ts +230 -0
- package/src/cli/mcp/proxy-env.ts +62 -0
- package/src/cli/mcp/readiness-projection.ts +24 -0
- package/src/cli/mcp/redaction.ts +21 -0
- package/src/cli/mcp/repo.ts +24 -0
- package/src/cli/mcp/repository-tools.ts +1295 -0
- package/src/cli/mcp/server.ts +341 -0
- package/src/cli/mcp/setup.ts +793 -0
- package/src/cli/mcp/tool-capability-cache.ts +87 -0
- package/src/cli/mcp/tools.ts +9 -0
- package/src/cli/mcp/toolset-names.ts +70 -0
- package/src/cli/mcp/toolset-selection.ts +41 -0
- package/src/cli/mcp/toolset.ts +300 -0
- package/src/cli/mcp/transports/AGENTS.md +39 -0
- package/src/cli/mcp/transports/CLAUDE.md +39 -0
- package/src/cli/mcp/transports/http.ts +1234 -0
- package/src/cli/mcp/transports/session-registry.ts +428 -0
- package/src/cli/mcp/transports/stdio.ts +8 -0
- package/src/cli/mcp/types.ts +41 -0
- package/src/cli/mcp/umbrella-tools.ts +117 -0
- package/src/cli/repo-adoption/reclaim-runtime.ts +681 -0
- package/src/cli/repositories/branch-name-policy.ts +57 -0
- package/src/cli/repositories/command-classifier.ts +600 -0
- package/src/cli/repositories/command-executor.ts +1066 -0
- package/src/cli/repositories/command-normalization.ts +53 -0
- package/src/cli/repositories/command-scope.ts +264 -0
- package/src/cli/repositories/controller-home.ts +88 -0
- package/src/cli/repositories/entity-migration.ts +199 -0
- package/src/cli/repositories/ephemeral-workspace.ts +62 -0
- package/src/cli/repositories/git-command-executor.ts +301 -0
- package/src/cli/repositories/goal-registry.ts +239 -0
- package/src/cli/repositories/identity.ts +64 -0
- package/src/cli/repositories/local-project-onboarding.ts +539 -0
- package/src/cli/repositories/locks.ts +262 -0
- package/src/cli/repositories/registry.ts +1057 -0
- package/src/cli/repositories/runtime-storage.ts +411 -0
- package/src/cli/repositories/safe-patch.ts +421 -0
- package/src/cli/repositories/selected-path-actions.ts +341 -0
- package/src/cli/repositories/structured-git.ts +257 -0
- package/src/cli/repositories/types.ts +155 -0
- package/src/cli/repositories/umbrella.ts +134 -0
- package/src/cli/repositories/workbench.ts +140 -0
- package/src/cli/repositories/worktree-storage.ts +137 -0
- package/src/cli/repository/inspector.ts +637 -0
- package/src/cli/repository/session-cache.ts +453 -0
- package/src/cli/runtime/helper-runner.ts +172 -0
- package/src/cli/runtime-invocation.ts +318 -0
- package/src/cli/tools/codegraph.ts +676 -0
- package/src/cli/v81-entry.ts +29 -0
- package/src/core/adoption/gitignore-plan.ts +127 -0
- package/src/core/adoption/helper-wrapper-plan.ts +159 -0
- package/src/core/adoption/manifest-templates.ts +60 -0
- package/src/core/adoption/modes.ts +7 -0
- package/src/core/adoption/operations.ts +126 -0
- package/src/core/adoption/plan.ts +149 -0
- package/src/core/adoption/render.ts +70 -0
- package/src/core/adoption/rollback.ts +62 -0
- package/src/core/adoption/summary.ts +43 -0
- package/src/core/adoption/workflow-contract-asset.ts +14 -0
- package/src/core/adoption/workflow-contract-plan.ts +31 -0
- package/src/effects/fs-transaction.ts +540 -0
- package/src/effects/git-executable.ts +59 -0
- package/src/effects/managed-block.ts +86 -0
- package/src/effects/path-safety.ts +47 -0
- package/src/effects/process-runner.ts +192 -0
- package/src/runtime/assistant/action-proposals.ts +279 -0
- package/src/runtime/assistant/intent.ts +395 -0
- package/src/runtime/assistant/model-provider.ts +460 -0
- package/src/runtime/assistant/openapi.ts +223 -0
- package/src/runtime/assistant/policy.ts +89 -0
- package/src/runtime/assistant/readiness.ts +258 -0
- package/src/runtime/assistant/routine-runtime.ts +477 -0
- package/src/runtime/assistant/schedule-binding.ts +171 -0
- package/src/runtime/assistant/standing-grants.ts +375 -0
- package/src/runtime/assistant/store.ts +243 -0
- package/src/runtime/assistant/types.ts +135 -0
- package/src/runtime/context/codegraph-read-provider.ts +347 -0
- package/src/runtime/context/codegraph-sidecar.cjs +207 -0
- package/src/runtime/control-plane/dispatch-priority.ts +67 -0
- package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +151 -0
- package/src/runtime/control-plane/execution/execution-identity.ts +456 -0
- package/src/runtime/control-plane/execution/session-store.ts +175 -0
- package/src/runtime/control-plane/execution/validation.ts +117 -0
- package/src/runtime/control-plane/execution/verification-evidence.ts +191 -0
- package/src/runtime/control-plane/execution/work-handle-store.ts +225 -0
- package/src/runtime/control-plane/execution/work-prepare-request-store.ts +159 -0
- package/src/runtime/control-plane/execution/work-task-receipt.ts +445 -0
- package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +821 -0
- package/src/runtime/control-plane/facade/capability-registry.ts +279 -0
- package/src/runtime/control-plane/facade/check-normalization.ts +233 -0
- package/src/runtime/control-plane/facade/codex-delegation.ts +196 -0
- package/src/runtime/control-plane/facade/controller-session-store.ts +199 -0
- package/src/runtime/control-plane/facade/facade-result.ts +41 -0
- package/src/runtime/control-plane/facade/goal-workloop-access.ts +177 -0
- package/src/runtime/control-plane/facade/goal-workloop.ts +1216 -0
- package/src/runtime/control-plane/facade/handoff-inbox-store.ts +221 -0
- package/src/runtime/control-plane/facade/index.ts +16 -0
- package/src/runtime/control-plane/facade/operation-digest.ts +528 -0
- package/src/runtime/control-plane/facade/plan-contract-store.ts +403 -0
- package/src/runtime/control-plane/facade/policy-gate.ts +149 -0
- package/src/runtime/control-plane/facade/requirement-board.ts +280 -0
- package/src/runtime/control-plane/facade/self-healing-loop.ts +555 -0
- package/src/runtime/control-plane/facade/suggested-actions.ts +108 -0
- package/src/runtime/control-plane/facade/types.ts +729 -0
- package/src/runtime/control-plane/facade/work-admission-policy.ts +93 -0
- package/src/runtime/control-plane/facade/work-continuation.ts +104 -0
- package/src/runtime/control-plane/facade/work-contract-store.ts +1118 -0
- package/src/runtime/control-plane/facade/work-task-projection.ts +66 -0
- package/src/runtime/control-plane/global-scheduler/reconciliation.ts +365 -0
- package/src/runtime/control-plane/global-scheduler/scheduler.ts +920 -0
- package/src/runtime/control-plane/global-scheduler/wake-signal.ts +89 -0
- package/src/runtime/control-plane/goal-loop/config-facade.ts +700 -0
- package/src/runtime/control-plane/goal-loop/config-store.ts +570 -0
- package/src/runtime/control-plane/goal-loop/config-types.ts +213 -0
- package/src/runtime/control-plane/goal-loop/executor-router.ts +109 -0
- package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +149 -0
- package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +304 -0
- package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +1001 -0
- package/src/runtime/control-plane/goal-loop/handoff-packet.ts +160 -0
- package/src/runtime/control-plane/goal-loop/index.ts +13 -0
- package/src/runtime/control-plane/goal-loop/local-tools.ts +290 -0
- package/src/runtime/control-plane/goal-loop/policy-gates.ts +203 -0
- package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +93 -0
- package/src/runtime/control-plane/goal-loop/provider-registry.ts +545 -0
- package/src/runtime/control-plane/goal-loop/types.ts +378 -0
- package/src/runtime/control-plane/governance/access-policy.ts +147 -0
- package/src/runtime/control-plane/governance/authorization.ts +195 -0
- package/src/runtime/control-plane/governance/external-effects.ts +43 -0
- package/src/runtime/control-plane/launcher/thin-launcher.ts +97 -0
- package/src/runtime/control-plane/persistence/metadata-payload-policy.ts +53 -0
- package/src/runtime/control-plane/persistence/requirement-store.ts +241 -0
- package/src/runtime/control-plane/persistence/sqlite-store.ts +539 -0
- package/src/runtime/control-plane/release-retention.ts +447 -0
- package/src/runtime/control-plane/repo-actor/actor.ts +181 -0
- package/src/runtime/control-plane/repo-actor/registry.ts +20 -0
- package/src/runtime/control-plane/routing/index.ts +1 -0
- package/src/runtime/control-plane/routing/route-policy.ts +379 -0
- package/src/runtime/control-plane/runtime-cleanup.ts +727 -0
- package/src/runtime/control-plane/runtime-generation.ts +509 -0
- package/src/runtime/control-plane/runtime-pid-ownership.ts +11 -0
- package/src/runtime/control-plane/runtime-status-client.ts +90 -0
- package/src/runtime/control-plane/startup-recovery.ts +198 -0
- package/src/runtime/diagnostics/connectivity-observability.ts +475 -0
- package/src/runtime/diagnostics/mcp-timing.ts +64 -0
- package/src/runtime/diagnostics/performance.ts +379 -0
- package/src/runtime/diagnostics/process-facade.ts +350 -0
- package/src/runtime/diagnostics/read-only-tool.ts +226 -0
- package/src/runtime/evidence/artifact-store.ts +154 -0
- package/src/runtime/evidence/event-ledger.ts +80 -0
- package/src/runtime/evidence/evidence-store.ts +68 -0
- package/src/runtime/evidence/process-check-receipt.ts +43 -0
- package/src/runtime/evidence/result-store.ts +209 -0
- package/src/runtime/evidence/sensitive-output.ts +353 -0
- package/src/runtime/execution/jobs/child-reference.ts +124 -0
- package/src/runtime/execution/jobs/legacy-adapter.ts +22 -0
- package/src/runtime/execution/jobs/receipt-recovery.ts +119 -0
- package/src/runtime/execution/jobs/receipt-store.ts +243 -0
- package/src/runtime/execution/jobs/store.ts +737 -0
- package/src/runtime/execution/jobs/timeouts.ts +109 -0
- package/src/runtime/execution/jobs/types.ts +230 -0
- package/src/runtime/execution/jobs/wait.ts +45 -0
- package/src/runtime/execution/process-runtime/canary.ts +26 -0
- package/src/runtime/execution/process-runtime/check-facade.ts +272 -0
- package/src/runtime/execution/process-runtime/check-receipt.ts +185 -0
- package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +60 -0
- package/src/runtime/execution/process-runtime/command-facade.ts +321 -0
- package/src/runtime/execution/process-runtime/gc.ts +171 -0
- package/src/runtime/execution/process-runtime/index.ts +9 -0
- package/src/runtime/execution/process-runtime/interactive-admission.ts +23 -0
- package/src/runtime/execution/process-runtime/process-runner-entry.ts +466 -0
- package/src/runtime/execution/process-runtime/resource-claims.ts +440 -0
- package/src/runtime/execution/process-runtime/runtime.ts +1816 -0
- package/src/runtime/execution/process-runtime/store.ts +687 -0
- package/src/runtime/execution/process-runtime/types.ts +352 -0
- package/src/runtime/execution/thin-harness/async-process.ts +181 -0
- package/src/runtime/execution/thin-harness/batch-executor.ts +671 -0
- package/src/runtime/execution/thin-harness/execution-router.ts +700 -0
- package/src/runtime/execution/thin-harness/fast-executor.ts +1263 -0
- package/src/runtime/execution/thin-harness/fast-receipt.ts +235 -0
- package/src/runtime/execution/thin-harness/fingerprint-worker.ts +191 -0
- package/src/runtime/execution/thin-harness/index.ts +13 -0
- package/src/runtime/execution/thin-harness/latency-trace.ts +107 -0
- package/src/runtime/execution/thin-harness/lightweight-lanes.ts +745 -0
- package/src/runtime/execution/thin-harness/mutation-gate.ts +578 -0
- package/src/runtime/execution/thin-harness/proposal-store.ts +409 -0
- package/src/runtime/execution/thin-harness/request-ledger.ts +595 -0
- package/src/runtime/execution/thin-harness/search-worker.ts +114 -0
- package/src/runtime/execution/thin-harness/types.ts +313 -0
- package/src/runtime/execution/thin-harness/workspace-savepoint.ts +333 -0
- package/src/runtime/execution/workers/executor.ts +687 -0
- package/src/runtime/execution/workers/ownership.ts +94 -0
- package/src/runtime/execution/workers/worker-entry.ts +277 -0
- package/src/runtime/gateway/mcp/execution-tools.ts +2009 -0
- package/src/runtime/gateway/mcp/persisted-check-process.ts +255 -0
- package/src/runtime/gateway/mcp/process-tools.ts +230 -0
- package/src/runtime/gateway/mcp/resource-policy.ts +195 -0
- package/src/runtime/gateway/mcp/router.ts +1088 -0
- package/src/runtime/gateway/mcp/runtime-tools.ts +5994 -0
- package/src/runtime/gateway/mcp/work-validation-reconciler.ts +219 -0
- package/src/runtime/health/evaluator.ts +474 -0
- package/src/runtime/health/index.ts +2 -0
- package/src/runtime/health/operational-view.ts +198 -0
- package/src/runtime/maintenance/cleanup.ts +419 -0
- package/src/runtime/model-clients/deepseek-adapter.ts +312 -0
- package/src/runtime/model-clients/index.ts +2 -0
- package/src/runtime/model-clients/types.ts +101 -0
- package/src/runtime/observability/gateway-contention-metrics.ts +129 -0
- package/src/runtime/observability/route-session-benchmark.ts +110 -0
- package/src/runtime/personal-assistant/gmail-triage-manager.ts +231 -0
- package/src/runtime/personal-assistant/reporting-runtime.ts +344 -0
- package/src/runtime/personal-assistant/triage-runtime.ts +748 -0
- package/src/runtime/plugins/app-store-connect-adapter.ts +868 -0
- package/src/runtime/plugins/browser-adapter.ts +2812 -0
- package/src/runtime/plugins/browser-automation-service.ts +46 -0
- package/src/runtime/plugins/browser-handoff-host.ts +304 -0
- package/src/runtime/plugins/browser-handoff.ts +371 -0
- package/src/runtime/plugins/browser-macos-bridge.ts +865 -0
- package/src/runtime/plugins/browser-node-bridge-host.ts +64 -0
- package/src/runtime/plugins/browser-node-bridge.ts +249 -0
- package/src/runtime/plugins/desktop-adapter.ts +374 -0
- package/src/runtime/plugins/desktop-operator-registration.ts +418 -0
- package/src/runtime/plugins/errors.ts +39 -0
- package/src/runtime/plugins/execution-origin.ts +26 -0
- package/src/runtime/plugins/external-adapter.ts +322 -0
- package/src/runtime/plugins/external-registration.ts +308 -0
- package/src/runtime/plugins/external-unix-socket-probe.cjs +79 -0
- package/src/runtime/plugins/external-unix-socket.ts +238 -0
- package/src/runtime/plugins/first-party-registry.ts +37 -0
- package/src/runtime/plugins/github-adapter.ts +266 -0
- package/src/runtime/plugins/gmail-adapter.ts +729 -0
- package/src/runtime/plugins/google-calendar-adapter.ts +468 -0
- package/src/runtime/plugins/google-shared.ts +578 -0
- package/src/runtime/plugins/google-tasks-adapter.ts +535 -0
- package/src/runtime/plugins/interaction-session.ts +252 -0
- package/src/runtime/plugins/ios/agent-device-capabilities.ts +258 -0
- package/src/runtime/plugins/ios/agent-device-failures.ts +95 -0
- package/src/runtime/plugins/ios/agent-device-provider.ts +63 -0
- package/src/runtime/plugins/ios/agent-device-typed-provider.ts +268 -0
- package/src/runtime/plugins/ios/app-adapters.ts +122 -0
- package/src/runtime/plugins/ios-adapter.ts +509 -0
- package/src/runtime/plugins/ios-agent-device.ts +2311 -0
- package/src/runtime/plugins/ios-physical-device.ts +955 -0
- package/src/runtime/plugins/local-system-adapter.ts +1016 -0
- package/src/runtime/plugins/macos-capability-broker.ts +73 -0
- package/src/runtime/plugins/managed-process-adapter.ts +366 -0
- package/src/runtime/plugins/resend-adapter.ts +506 -0
- package/src/runtime/plugins/store.ts +1025 -0
- package/src/runtime/plugins/types.ts +138 -0
- package/src/runtime/projections/controller-context.ts +596 -0
- package/src/runtime/projections/git-status-sampler.ts +84 -0
- package/src/runtime/projections/invalidation.ts +250 -0
- package/src/runtime/projections/materialized-view.ts +694 -0
- package/src/runtime/recovery/actions.ts +158 -0
- package/src/runtime/recovery/audit.ts +38 -0
- package/src/runtime/recovery/classifier.ts +163 -0
- package/src/runtime/recovery/index.ts +9 -0
- package/src/runtime/recovery/local-jobs-repair.ts +393 -0
- package/src/runtime/recovery/maintenance-executor.ts +822 -0
- package/src/runtime/recovery/patch-handoff.ts +50 -0
- package/src/runtime/recovery/probe.ts +308 -0
- package/src/runtime/recovery/store.ts +35 -0
- package/src/runtime/recovery/types.ts +175 -0
- package/src/runtime/release/identity.ts +101 -0
- package/src/runtime/release/release-gate.ts +137 -0
- package/src/runtime/resources/claims/conflicts.ts +205 -0
- package/src/runtime/resources/index.ts +1 -0
- package/src/runtime/resources/leases/store.ts +539 -0
- package/src/runtime/resources/leases/types.ts +50 -0
- package/src/runtime/resources/ownership.ts +72 -0
- package/src/runtime/root/controller-services.ts +42 -0
- package/src/runtime/root/entry.ts +70 -0
- package/src/runtime/root/gateway-adapter.ts +46 -0
- package/src/runtime/root/local-bridge.ts +72 -0
- package/src/runtime/root/mcp-transport.ts +198 -0
- package/src/runtime/root/ownership.ts +94 -0
- package/src/runtime/root/readiness.ts +69 -0
- package/src/runtime/root/release-manifest.ts +147 -0
- package/src/runtime/root/release-materialize.ts +509 -0
- package/src/runtime/root/release-store.ts +236 -0
- package/src/runtime/root/runtime.ts +318 -0
- package/src/runtime/root/scheduler.ts +58 -0
- package/src/runtime/root/service-runner-entry.ts +20 -0
- package/src/runtime/root/service-runner.ts +69 -0
- package/src/runtime/root/service.ts +291 -0
- package/src/runtime/root/status.ts +127 -0
- package/src/runtime/root/types.ts +112 -0
- package/src/runtime/root/write-fence.ts +309 -0
- package/src/runtime/safe-tooling/browser-safe.ts +133 -0
- package/src/runtime/safe-tooling/external-filesystem.ts +304 -0
- package/src/runtime/safe-tooling/google-credential-store.ts +95 -0
- package/src/runtime/safe-tooling/google-oauth-broker.ts +286 -0
- package/src/runtime/safe-tooling/index.ts +11 -0
- package/src/runtime/safe-tooling/ios-development.ts +1039 -0
- package/src/runtime/safe-tooling/job-summary.ts +361 -0
- package/src/runtime/safe-tooling/plugin-summary.ts +53 -0
- package/src/runtime/safe-tooling/resend-oauth.ts +387 -0
- package/src/runtime/safe-tooling/review-artifacts.ts +133 -0
- package/src/runtime/safe-tooling/types.ts +103 -0
- package/src/runtime/safe-tooling/workspace-auth.ts +116 -0
- package/src/runtime/shared/bounded-child-supervisor.ts +235 -0
- package/src/runtime/shared/idempotent-retry.ts +128 -0
- package/src/runtime/shared/json-files.ts +43 -0
- package/src/runtime/shared/local-bridge-surface.ts +231 -0
- package/src/runtime/shared/managed-env.ts +154 -0
- package/src/runtime/shared/node-ts-loader.mjs +50 -0
- package/src/runtime/shared/process-environment.ts +97 -0
- package/src/runtime/shared/process-identity.ts +72 -0
- package/src/runtime/shared/process-tree.ts +227 -0
- package/src/runtime/shared/response-budget.ts +246 -0
- package/src/runtime/standalone-recovery/core.ts +2275 -0
- package/src/runtime/standalone-recovery/entry.ts +686 -0
- package/src/runtime/standalone-recovery/http-transport.ts +317 -0
- package/src/runtime/standalone-recovery/installer.ts +747 -0
- package/src/runtime/standalone-recovery/release.ts +241 -0
- package/src/runtime/watchdog/workflow-watchdog.ts +118 -0
- package/src/runtime/workflow/campaigns/cleanup.ts +263 -0
- package/src/runtime/workflow/campaigns/engine.ts +112 -0
- package/src/runtime/workflow/campaigns/normalize.ts +100 -0
- package/src/runtime/workflow/campaigns/review.ts +315 -0
- package/src/runtime/workflow/campaigns/store.ts +526 -0
- package/src/runtime/workflow/campaigns/supervisor.ts +112 -0
- package/src/runtime/workflow/campaigns/types.ts +290 -0
- package/src/runtime/workflow/campaigns/workspace-agent.ts +155 -0
- package/src/runtime/workflow/campaigns/workspace.ts +200 -0
- package/src/runtime/workflow/findings/store.ts +165 -0
- package/src/runtime/workflow/findings/types.ts +36 -0
- package/src/runtime/workflow/portfolio/engine.ts +20 -0
- package/src/runtime/workflow/portfolio/store.ts +185 -0
- package/src/runtime/workflow/portfolio/types.ts +29 -0
- package/src/runtime/workflow/schedules/engine.ts +620 -0
- package/src/runtime/workflow/schedules/settlement.ts +144 -0
- package/src/runtime/workflow/schedules/store.ts +417 -0
- package/src/runtime/workflow/schedules/types.ts +124 -0
- package/src/runtime/workspace-targets/index.ts +24 -0
- package/src/runtime/workspace-targets/target-grant.ts +721 -0
- package/src/testing/test-governance.ts +626 -0
- package/src/version.ts +21 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Implementation
|
|
2
|
+
|
|
3
|
+
This page maps the public Forge model to the current source tree. It is an implementation guide, not a substitute for the versioned architecture contracts.
|
|
4
|
+
|
|
5
|
+
## 1. MCP ingress and stable surface
|
|
6
|
+
|
|
7
|
+
Primary code:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
src/cli/mcp/server.ts
|
|
11
|
+
src/cli/mcp/toolset-names.ts
|
|
12
|
+
src/cli/mcp/repository-tools.ts
|
|
13
|
+
src/cli/mcp/transports/http.ts
|
|
14
|
+
src/cli/mcp/transports/session-registry.ts
|
|
15
|
+
src/runtime/gateway/mcp/
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
`toolset-names.ts` defines the bounded default connector surface. The five facade tools come from `src/runtime/control-plane/facade/types.ts`; repository, patch, check, Process, plugin-dispatch, and result tools bring the current default to 19.
|
|
19
|
+
|
|
20
|
+
The HTTP transport owns authentication and MCP session lifecycle. `McpSessionRegistry` owns session capacity, active-request protection, stream leases, replacement, and close accounting. A tool-surface fingerprint mismatch returns a recoverable reinitialize response; replacement initialize owns actual supersession and transport cleanup.
|
|
21
|
+
|
|
22
|
+
## 2. Repository registry and execution identity
|
|
23
|
+
|
|
24
|
+
Primary code:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
src/cli/repositories/registry.ts
|
|
28
|
+
src/cli/repositories/ephemeral-workspace.ts
|
|
29
|
+
src/runtime/control-plane/execution/execution-identity.ts
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Registered work is resolved to `repoId` plus `checkoutId`. Git top-level/common-directory checks prevent a caller from supplying a different checkout through `cwd`. `ephemeral-workspace.ts` represents the separate explicit authority for an existing unregistered local directory.
|
|
33
|
+
|
|
34
|
+
## 3. Context and source access
|
|
35
|
+
|
|
36
|
+
Primary code:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
src/cli/controller/context-pack.ts
|
|
40
|
+
src/cli/repository/inspector.ts
|
|
41
|
+
src/runtime/repository/session-cache.ts
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`rh_context` is the normal code-location/context router. Repository observations are bounded and cached by session/repository identity where valid. Clean Git snapshots avoid redundant `git diff --stat` subprocesses because `git status` already proves that no unstaged diff can exist.
|
|
45
|
+
|
|
46
|
+
Structural CodeGraph context is optional augmentation for call/dependency questions; it is not another mandatory top-level search abstraction.
|
|
47
|
+
|
|
48
|
+
## 4. Direct Edit
|
|
49
|
+
|
|
50
|
+
Primary code:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
src/cli/editing/edit-session.ts
|
|
54
|
+
src/cli/mcp/repository-tools.ts
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
A bounded patch can be applied directly to the selected checkout with file fingerprints, revisions, savepoints, change budgets, and focused verification. Direct Edit is the default for understood small work; a Plan or worktree is not a prerequisite.
|
|
58
|
+
|
|
59
|
+
## 5. Command policy and ephemeral workspaces
|
|
60
|
+
|
|
61
|
+
Primary code:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
src/cli/repositories/command-classifier.ts
|
|
65
|
+
src/cli/repositories/command-executor.ts
|
|
66
|
+
src/runtime/execution/process-runtime/command-facade.ts
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The classifier distinguishes readonly, workspace write, remote write, and destructive behavior. Typed argv preserves argument boundaries without shell reparsing. Explicit unregistered workspaces can execute bounded local operations directly, but destructive commands still follow authorization policy.
|
|
70
|
+
|
|
71
|
+
The MCP result envelope distinguishes “not authorized/executed” from “process executed and failed.” A blocked `rm` therefore returns authorization-required state rather than a fabricated exit-code failure, and successful ephemeral mutations are not labeled as readonly.
|
|
72
|
+
|
|
73
|
+
## 6. Unified Process Runtime
|
|
74
|
+
|
|
75
|
+
Primary code:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
src/runtime/execution/process-runtime/runtime.ts
|
|
79
|
+
src/runtime/execution/process-runtime/store.ts
|
|
80
|
+
src/runtime/execution/process-runtime/interactive-admission.ts
|
|
81
|
+
src/runtime/shared/process-identity.ts
|
|
82
|
+
src/runtime/gateway/mcp/process-tools.ts
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
`spawnManagedProcess` creates one Process record and one physical child execution. Exact PID/start-time/executable identity protects later lifecycle operations. Known-long processes can return handles immediately; short commands may complete during a bounded interactive window. Process startup captures command/start-time together and reuses the running-state persistence result instead of repeating store writes/reads on the hot path.
|
|
86
|
+
|
|
87
|
+
## 7. Resource claims, leases, and concurrency
|
|
88
|
+
|
|
89
|
+
Primary code:
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
src/runtime/execution/process-runtime/resource-claims.ts
|
|
93
|
+
src/runtime/resources/claims/
|
|
94
|
+
src/runtime/resources/leases/
|
|
95
|
+
src/runtime/control-plane/repo-actor/
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Claims describe the resource, not the conversation. Unrelated repositories and independent worktrees do not need a global lock. The same checkout remains a single-writer resource. Lease fencing prevents stale processes from continuing to mutate state after ownership changes.
|
|
99
|
+
|
|
100
|
+
## 8. Checks and reusable evidence
|
|
101
|
+
|
|
102
|
+
Primary code:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
src/runtime/execution/process-runtime/check-facade.ts
|
|
106
|
+
src/runtime/gateway/mcp/persisted-check-process.ts
|
|
107
|
+
src/runtime/evidence/
|
|
108
|
+
src/runtime/projections/
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Equivalent checks can single-flight, coalesce subscribers, and reuse successful evidence when their content/environment contract matches. Invalidated revisions run physically again. Evidence and large result artifacts remain addressable without making hot status payloads unbounded.
|
|
112
|
+
|
|
113
|
+
## 9. Durable Work, scheduler, and isolation
|
|
114
|
+
|
|
115
|
+
Primary code:
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
src/runtime/control-plane/facade/work-contract-store.ts
|
|
119
|
+
src/runtime/control-plane/repo-actor/
|
|
120
|
+
src/runtime/scheduler/
|
|
121
|
+
src/runtime/execution/workers/
|
|
122
|
+
src/runtime/control-plane/facade/goal-workloop.ts
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Durable Work stores objectives, scope, checks, lifecycle, and evidence when the task actually needs recovery or a longer lifecycle. The scheduler controls global capacity; repository actors decide repository-local safety. Isolated worktrees and workers are mechanisms selected for concurrency/risk, not default ceremony for every code edit.
|
|
126
|
+
|
|
127
|
+
## 10. Canonical Runtime root
|
|
128
|
+
|
|
129
|
+
Primary code:
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
src/runtime/root/
|
|
133
|
+
src/runtime/control-plane/persistence/sqlite-store.ts
|
|
134
|
+
src/runtime/root/write-fence.ts
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
The Runtime Root owns lifecycle and readiness. SQLite stores durable Controller facts, while release/write fencing ensures only the active whole-release authority can write Runtime-owned state.
|
|
138
|
+
|
|
139
|
+
## 11. Recovery and releases
|
|
140
|
+
|
|
141
|
+
Primary code and docs:
|
|
142
|
+
|
|
143
|
+
```text
|
|
144
|
+
src/runtime/root/release-store.ts
|
|
145
|
+
src/runtime/health/
|
|
146
|
+
docs/architecture/current/failure-recovery.md
|
|
147
|
+
docs/architecture/current/verification-and-release-gates.md
|
|
148
|
+
```
|
|
149
|
+
|
|
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.
|
|
151
|
+
|
|
152
|
+
## 12. Verification
|
|
153
|
+
|
|
154
|
+
Important regression suites include:
|
|
155
|
+
|
|
156
|
+
```text
|
|
157
|
+
tests/unit/fix-mcp-session-lifecycle.test.ts
|
|
158
|
+
tests/cli/mcp-runtime-proxy-routing.test.ts
|
|
159
|
+
tests/cli/repository-mcp-command.test.ts
|
|
160
|
+
tests/runtime/process-runtime.test.ts
|
|
161
|
+
scripts/benchmark-route-session-concurrency.ts
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
The route/session benchmark covers cold/warm context, Direct Edit claims, Process admission/start, check completion, cross-repository and cross-checkout concurrency, same-checkout contention, check coalescing/reuse/invalidation, and Runtime recovery reads. Correctness and latency are tracked separately: expected same-checkout contention is not a concurrency failure.
|
|
165
|
+
|
|
166
|
+
## Related pages
|
|
167
|
+
|
|
168
|
+
- [Architecture](Architecture)
|
|
169
|
+
- [Runtime Architecture](Runtime-Architecture)
|
|
170
|
+
- [Work Lifecycle](Work-Lifecycle)
|
|
171
|
+
- [Security Model](Security-Model)
|
|
172
|
+
- [Releases and Upgrades](Releases-and-Upgrades)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Installation
|
|
2
|
+
|
|
3
|
+
## Supported paths
|
|
4
|
+
|
|
5
|
+
### Source installation
|
|
6
|
+
|
|
7
|
+
This is the verified path while `@moretea-labs/forge` remains unpublished:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm ci --ignore-scripts --no-audit --no-fund
|
|
11
|
+
npm install -g . --omit=optional --no-audit --no-fund
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### npm RC channel
|
|
15
|
+
|
|
16
|
+
After the package is visibly published to npm:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install -g @moretea-labs/forge@next
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Bun installs the same npm artifact:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
bun add -g @moretea-labs/forge@next
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Do not infer npm publication from a GitHub tag or prerelease alone.
|
|
29
|
+
|
|
30
|
+
## Platforms
|
|
31
|
+
|
|
32
|
+
- macOS and Linux are primary runtime hosts.
|
|
33
|
+
- WSL2 is the recommended Windows host for the complete controller runtime.
|
|
34
|
+
- Native Windows supports the documented CLI and command-shim surface; check the current matrix before relying on host-specific integrations.
|
|
35
|
+
|
|
36
|
+
See [Platform Support](https://github.com/moretea-labs/forge/blob/main/docs/operations/platform-support.md).
|
|
37
|
+
|
|
38
|
+
## Command compatibility
|
|
39
|
+
|
|
40
|
+
Forge exposes only `forge`, `forge-hook`, and `forge-runtime`. State directories, environment variables, protocol identifiers, and release artifacts use the Forge namespace.
|
|
41
|
+
|
|
42
|
+
## Verify installation
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
forge --version
|
|
46
|
+
forge doctor
|
|
47
|
+
forge repo list --json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
A successful CLI launch is not enough to prove the MCP runtime is healthy; verify the connector separately when using ChatGPT.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Integrations
|
|
2
|
+
|
|
3
|
+
Integrations extend Forge without changing the core repository-safety model. Each integration has its own authorization and readiness checks.
|
|
4
|
+
|
|
5
|
+
## ChatGPT MCP
|
|
6
|
+
|
|
7
|
+
The primary connector uses a stable HTTPS `/mcp` endpoint. Verify initialize, initialized notification, tools/list, a read-only call, and session close—not merely TCP reachability.
|
|
8
|
+
|
|
9
|
+
## Coding agents
|
|
10
|
+
|
|
11
|
+
Codex, Claude, and GitHub Copilot can implement bounded tasks when available. Agent output remains subject to repository scope, diff review, tests, and integration rules.
|
|
12
|
+
|
|
13
|
+
## GitHub
|
|
14
|
+
|
|
15
|
+
GitHub operations cover issues, pull requests, checks, repository settings, Wiki synchronization, and releases. Remote writes remain explicit and should reference the exact local revision being published.
|
|
16
|
+
|
|
17
|
+
## Browser and local system
|
|
18
|
+
|
|
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
|
+
|
|
21
|
+
## Google Workspace and personal workflows
|
|
22
|
+
|
|
23
|
+
Gmail, Calendar, Contacts, and related assistant routines remain connector-specific. Credentials and personal data are not stored in repository source.
|
|
24
|
+
|
|
25
|
+
## Apple tooling
|
|
26
|
+
|
|
27
|
+
Simulator and App Store Connect workflows use dedicated capabilities and authorization. They are distinct from generic shell or repository execution.
|
|
28
|
+
|
|
29
|
+
See the [documentation hub](https://github.com/moretea-labs/forge/blob/main/docs/README.md) for maintained integration guides.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Operations
|
|
2
|
+
|
|
3
|
+
Use this page to choose the right operational path. Avoid replaying writes merely because a request timed out; first inspect durable Work, Job, Run, and runtime state.
|
|
4
|
+
|
|
5
|
+
## Normal checks
|
|
6
|
+
|
|
7
|
+
1. Confirm the selected repository and checkout.
|
|
8
|
+
2. Check Controller and repository readiness.
|
|
9
|
+
3. Inspect active Work or Jobs before retrying an operation.
|
|
10
|
+
4. Run the smallest focused validation first.
|
|
11
|
+
5. Record exact evidence before finalizing or releasing.
|
|
12
|
+
|
|
13
|
+
## Runtime incidents
|
|
14
|
+
|
|
15
|
+
- Primary MCP unavailable but Recovery reachable: use the independent Recovery channel to verify the Forge Runtime service, local endpoint, authenticated MCP flow, and external tunnel separately.
|
|
16
|
+
- External 502/503: distinguish tunnel transport, local Runtime health, and authenticated MCP failures before restarting anything.
|
|
17
|
+
- Release drift: stop activation and compare source commit, immutable whole-release manifest, service definition, release authority, SQLite backup binding, and running Runtime revision.
|
|
18
|
+
- Stuck work: use watchdog and maintenance diagnostics before deleting state or killing processes.
|
|
19
|
+
|
|
20
|
+
## Detailed runbooks
|
|
21
|
+
|
|
22
|
+
- [Controller reliability](https://github.com/moretea-labs/forge/blob/main/docs/operations/controller-reliability-runbook.md)
|
|
23
|
+
- [Standalone recovery](https://github.com/moretea-labs/forge/blob/main/docs/operations/standalone-disaster-recovery.md)
|
|
24
|
+
- [502 and performance](https://github.com/moretea-labs/forge/blob/main/docs/operations/controller-performance-and-502.md)
|
|
25
|
+
- [Troubleshooting](Troubleshooting)
|
|
26
|
+
- [Release process](Releases-and-Upgrades)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Quick Start
|
|
2
|
+
|
|
3
|
+
## 1. Install from source
|
|
4
|
+
|
|
5
|
+
Until the npm RC is publicly available, use the verified source path:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
git clone https://github.com/moretea-labs/forge.git
|
|
9
|
+
cd forge
|
|
10
|
+
npm ci --ignore-scripts --no-audit --no-fund
|
|
11
|
+
npm install -g . --omit=optional --no-audit --no-fund
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Requirements: Git, Node.js 20.10+, npm, and a writable user directory. Bun is recommended for development and the complete test suite.
|
|
15
|
+
|
|
16
|
+
## 2. Initialize and diagnose
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
forge --version
|
|
20
|
+
forge init --target both
|
|
21
|
+
forge doctor
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 3. Register a repository
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
forge adopt --repo /path/to/project --dry-run
|
|
28
|
+
forge adopt --repo /path/to/project
|
|
29
|
+
forge repo list --json
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Use dry-run first when adopting an existing project. Review the proposed files and runtime configuration before applying.
|
|
33
|
+
|
|
34
|
+
## 4. Connect ChatGPT
|
|
35
|
+
|
|
36
|
+
Follow the maintained [connector tutorial](https://github.com/moretea-labs/forge/blob/main/docs/tutorials/02-connect-chatgpt.md). After connection, verify status and repository context before starting write work.
|
|
37
|
+
|
|
38
|
+
## 5. Complete one bounded task
|
|
39
|
+
|
|
40
|
+
Start with a small change, inspect the diff, run the focused check, commit, and clean the branch or worktree. The full walkthrough is in [First Repository Task](https://github.com/moretea-labs/forge/blob/main/docs/tutorials/03-first-repository-task.md).
|
|
41
|
+
|
|
42
|
+
## Next
|
|
43
|
+
|
|
44
|
+
- [Core Concepts](Core-Concepts)
|
|
45
|
+
- [Work Lifecycle](Work-Lifecycle)
|
|
46
|
+
- [Troubleshooting](Troubleshooting)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Releases and Upgrades
|
|
2
|
+
|
|
3
|
+
## Release channels
|
|
4
|
+
|
|
5
|
+
- `next`: release candidates
|
|
6
|
+
- `latest`: stable releases only
|
|
7
|
+
|
|
8
|
+
The package version, Git tag, npm channel, GitHub prerelease state, and release notes must agree. GitHub Releases and npm publication are separate facts.
|
|
9
|
+
|
|
10
|
+
## Release gate
|
|
11
|
+
|
|
12
|
+
A release candidate must pass the repository's release-readiness check on the exact revision. The gate covers type checking, package identity, public documentation, platform contracts, MCP compatibility, public export, package creation, and tarball installation.
|
|
13
|
+
|
|
14
|
+
## Stable runtime evidence
|
|
15
|
+
|
|
16
|
+
Before publication, build an immutable whole-Runtime release from a clean canonical source tree, activate it through the single Forge Runtime service, verify the complete authenticated MCP path, cold-restart that service, and confirm the active release authority still equals the intended commit. Record the fully verified release as known-good.
|
|
17
|
+
|
|
18
|
+
## Upgrade principles
|
|
19
|
+
|
|
20
|
+
- Keep the Forge-only command, state, environment, protocol, and release identity consistent across upgrades.
|
|
21
|
+
- Read release notes before changing runtime or connector configuration.
|
|
22
|
+
- Do not overwrite a healthy active release with a stale rollout operation.
|
|
23
|
+
- Keep a verified rollback path before changing production runtime state.
|
|
24
|
+
|
|
25
|
+
## Publication sequence
|
|
26
|
+
|
|
27
|
+
1. Merge reviewed code and docs.
|
|
28
|
+
2. Push the exact main revision.
|
|
29
|
+
3. Wait for required CI and Windows checks on that revision.
|
|
30
|
+
4. Synchronize reviewed Wiki source.
|
|
31
|
+
5. Create the exact `v`-prefixed tag and GitHub prerelease.
|
|
32
|
+
6. Verify npm separately; never claim publication without registry evidence.
|
|
33
|
+
|
|
34
|
+
See the maintained [release process](https://github.com/moretea-labs/forge/blob/main/docs/operations/releasing.md).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Runtime Architecture
|
|
2
|
+
|
|
3
|
+
## One Runtime authority
|
|
4
|
+
|
|
5
|
+
The Canonical Forge Runtime is one local MCP application and one lifecycle owner. Its Runtime Root owns MCP transport, Controller services, persistent control-plane state, Process Runtime coordination, readiness, and the active whole-release identity. There is no second active Daemon/Gateway authority, blue-green runtime slot, or component-by-component rollout authority.
|
|
6
|
+
|
|
7
|
+
## Request path
|
|
8
|
+
|
|
9
|
+
Authenticated MCP requests enter the in-process transport and Gateway adapter. The Gateway validates schema and repository targeting, returns bounded results, and chooses the shortest valid path:
|
|
10
|
+
|
|
11
|
+
- bounded read or eligible ephemeral action -> Direct completion;
|
|
12
|
+
- repository command or check -> Unified Process Runtime;
|
|
13
|
+
- genuinely long-lived/dependency-aware objective -> durable Work/Scheduler path;
|
|
14
|
+
- hard external/destructive boundary -> explicit authorization or refusal.
|
|
15
|
+
|
|
16
|
+
The HTTP request does not become the owner of long-running execution.
|
|
17
|
+
|
|
18
|
+
## Stable client surface
|
|
19
|
+
|
|
20
|
+
The normal ChatGPT connector exposes 19 tools, including five preferred facades. Internal atomic handlers and the exhaustive compatibility profile remain available to Forge itself without widening normal discovery.
|
|
21
|
+
|
|
22
|
+
Tool schema is fenced by a fingerprint. When a connected client carries a stale fingerprint, Forge returns a bounded schema-change error and requests reinitialization. The stale transport is preserved until the replacement initialize supersedes it; closing the transport before the host sees the reset would turn a recoverable schema change into namespace loss.
|
|
23
|
+
|
|
24
|
+
## Process Runtime
|
|
25
|
+
|
|
26
|
+
A managed Process has one stable process record and exact process identity. The Runtime records spawn state, output paths, completion state, resource claims, and lease references. `process_get`, `process_wait`, `process_logs`, and `process_cancel` attach to the same Process and never mean “run the command again.”
|
|
27
|
+
|
|
28
|
+
Short predictable commands may finish inside a small interactive window. Known-long commands return their handle immediately. Process startup avoids duplicate persistence and identity probes on the hot path where the same evidence can be captured once.
|
|
29
|
+
|
|
30
|
+
## Repository and checkout fencing
|
|
31
|
+
|
|
32
|
+
Registered execution binds to immutable repository and checkout identity. Claims model the actual resource being touched: unrelated repositories and worktrees can progress concurrently; the same workspace writer conflicts. Ephemeral unregistered workspaces use a separate bounded authority and never masquerade as a registered repository.
|
|
33
|
+
|
|
34
|
+
## Check reuse
|
|
35
|
+
|
|
36
|
+
Check identity includes the relevant repository/check-out scope, content revision, check definition, environment/toolchain fingerprint, timeout contract, and reuse scope. Matching callers become subscribers to the same physical execution or valid result. Dirty content invalidates the reuse contract.
|
|
37
|
+
|
|
38
|
+
## Runtime service and releases
|
|
39
|
+
|
|
40
|
+
One OS-managed Forge Runtime service reads the active whole-release authority and starts exactly one Runtime Root. Candidate verification happens before an explicitly authorized activation. Runtime/source coherence is a release fact, not something ordinary repository commands are allowed to rewrite.
|
|
41
|
+
|
|
42
|
+
## Recovery path
|
|
43
|
+
|
|
44
|
+
Standalone Recovery is independent from the primary MCP endpoint. It verifies Runtime ownership, release coherence, authenticated MCP behavior, and optional external reachability. Sustained local failure can trigger bounded whole-Runtime restart attempts; if those are exhausted, an independently attested previous whole release and its SQLite backup may be restored under the Recovery lock.
|
|
45
|
+
|
|
46
|
+
## External tunnel
|
|
47
|
+
|
|
48
|
+
Cloudflare or Tailscale terminates outside the Runtime and points at the configured loopback endpoint. Tunnel health and local Runtime health are separate evidence classes. A tunnel outage alone cannot authorize Runtime rollback.
|
|
49
|
+
|
|
50
|
+
Detailed code boundaries are in [Implementation](Implementation); normative contracts live in the [current architecture set](https://github.com/moretea-labs/forge/tree/main/docs/architecture/current).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Security Model
|
|
2
|
+
|
|
3
|
+
## Trust boundaries
|
|
4
|
+
|
|
5
|
+
Forge distinguishes ChatGPT, the public MCP ingress, the local Controller, repository workspaces, external services, optional plugins, and the independent recovery channel. A successful connection at one boundary does not authorize effects at another.
|
|
6
|
+
|
|
7
|
+
## Repository scope
|
|
8
|
+
|
|
9
|
+
Normal work is limited to a registered repository and checkout. Outside-repository filesystem access requires a separate capability or grant.
|
|
10
|
+
|
|
11
|
+
## Effect classes
|
|
12
|
+
|
|
13
|
+
- Read-only inspection
|
|
14
|
+
- Local repository changes
|
|
15
|
+
- Remote writes
|
|
16
|
+
- Destructive operations
|
|
17
|
+
- Secret or credential access
|
|
18
|
+
|
|
19
|
+
Remote, destructive, and secret-bearing actions stay explicitly gated even when local repository access is configured for fewer prompts.
|
|
20
|
+
|
|
21
|
+
## Secret handling
|
|
22
|
+
|
|
23
|
+
Tokens, OAuth material, private paths, and proprietary source must not enter public logs, artifacts, docs, packages, or issue reports. Public export and release checks scan for unsafe content but do not replace careful review.
|
|
24
|
+
|
|
25
|
+
## Runtime and release integrity
|
|
26
|
+
|
|
27
|
+
Stable releases are immutable and identified by full Git revision plus manifest hash. Rollback uses exact known-good evidence. Ambiguous source ownership, stale activation, dirty source, or release drift fails closed.
|
|
28
|
+
|
|
29
|
+
## Reporting vulnerabilities
|
|
30
|
+
|
|
31
|
+
Use GitHub private vulnerability reporting. See the repository [Security Policy](https://github.com/moretea-labs/forge/blob/main/SECURITY.md).
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Troubleshooting
|
|
2
|
+
|
|
3
|
+
## Start with layer separation
|
|
4
|
+
|
|
5
|
+
1. Is the repository and checkout correct?
|
|
6
|
+
2. Is the canonical Forge Runtime running and ready?
|
|
7
|
+
3. Does the in-process Gateway and MCP transport answer locally?
|
|
8
|
+
4. Does MCP initialize and list tools with the expected release identity?
|
|
9
|
+
5. Is the optional external tunnel reachable?
|
|
10
|
+
6. What does standalone Recovery report for restart attempts and release coherence?
|
|
11
|
+
|
|
12
|
+
A single 502 does not identify which layer failed.
|
|
13
|
+
|
|
14
|
+
## Request timed out
|
|
15
|
+
|
|
16
|
+
Check the durable Work, Job, Run, or managed process before retrying. Replaying a write can create duplicate effects even when the original HTTP request failed.
|
|
17
|
+
|
|
18
|
+
## External 502 or 503
|
|
19
|
+
|
|
20
|
+
Compare the local Forge Runtime MCP endpoint with external MCP health. A tunnel process can remain alive after all data-plane connections are lost. Confirm local authenticated MCP first, then inspect the configured tunnel and its registered connections.
|
|
21
|
+
|
|
22
|
+
## Runtime repeatedly restarts
|
|
23
|
+
|
|
24
|
+
Inspect the immutable active release, service runner, Runtime ownership, release authority, database compatibility, Worker protocol, and Recovery audit. The watchdog performs only bounded whole-Runtime restart attempts. After exhaustion it may restore an independently attested previous release; it never loops indefinitely or restarts individual components.
|
|
25
|
+
|
|
26
|
+
## Release mismatch
|
|
27
|
+
|
|
28
|
+
Compare the canonical source commit, manifest hash, active whole-release authority, installed Forge service definition, Runtime instance, database schema compatibility, Worker protocol, and authenticated MCP tool fingerprint. Short hashes are not sufficient release identity.
|
|
29
|
+
|
|
30
|
+
## Recovery cannot roll back
|
|
31
|
+
|
|
32
|
+
A previous release must have exact path, release ID, artifact identity, manifest hash, Worker protocol, bound SQLite backup, and independent known-good attestation. Automatic recovery must also prove the current Runtime stopped before restoration. Never weaken matching merely to force a rollback.
|
|
33
|
+
|
|
34
|
+
Detailed guides:
|
|
35
|
+
|
|
36
|
+
- [General troubleshooting](https://github.com/moretea-labs/forge/blob/main/docs/operations/troubleshooting.md)
|
|
37
|
+
- [Controller reliability](https://github.com/moretea-labs/forge/blob/main/docs/operations/controller-reliability-runbook.md)
|
|
38
|
+
- [502 and performance](https://github.com/moretea-labs/forge/blob/main/docs/operations/controller-performance-and-502.md)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Work Lifecycle
|
|
2
|
+
|
|
3
|
+
## 1. Inspect
|
|
4
|
+
|
|
5
|
+
Resolve the repository and checkout, read current status, and check whether an Issue, Task, Work, Job, or Run already owns the objective. Avoid duplicate work.
|
|
6
|
+
|
|
7
|
+
## 2. Plan the smallest safe unit
|
|
8
|
+
|
|
9
|
+
Use direct edits for bounded changes. Use durable Tasks, isolated worktrees, or campaigns when work is long-running, parallel, dependency-aware, or high risk.
|
|
10
|
+
|
|
11
|
+
## 3. Execute with ownership
|
|
12
|
+
|
|
13
|
+
A writer must own the relevant repository or runtime resource. Claims, leases, and fencing prevent two actors from silently mutating the same state.
|
|
14
|
+
|
|
15
|
+
## 4. Review the actual change
|
|
16
|
+
|
|
17
|
+
Inspect the localized diff, separate unrelated modifications, and preserve changes whose ownership is not yet known. Never clean a workspace merely to make a check pass.
|
|
18
|
+
|
|
19
|
+
## 5. Validate
|
|
20
|
+
|
|
21
|
+
Run focused checks first, then the declared package or release gate. Managed processes may return a durable handle before completion; retrieve the same operation instead of starting a duplicate.
|
|
22
|
+
|
|
23
|
+
## 6. Integrate
|
|
24
|
+
|
|
25
|
+
Commit explicit paths, merge through the intended strategy, and record the integrated revision. A validation result from a feature branch is not automatically evidence for a different main revision.
|
|
26
|
+
|
|
27
|
+
## 7. Finalize and clean
|
|
28
|
+
|
|
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
|
+
|
|
31
|
+
For detailed lifecycle contracts, see [Job and Run Lifecycle](https://github.com/moretea-labs/forge/blob/main/docs/architecture/current/job-and-run-lifecycle.md).
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
**Forge Wiki**
|
|
2
|
+
|
|
3
|
+
- [Home](Home)
|
|
4
|
+
- [Quick Start](Quick-Start)
|
|
5
|
+
- [Installation](Installation)
|
|
6
|
+
- [Core Concepts](Core-Concepts)
|
|
7
|
+
- [Work Lifecycle](Work-Lifecycle)
|
|
8
|
+
- [Architecture](Architecture)
|
|
9
|
+
- [Runtime Architecture](Runtime-Architecture)
|
|
10
|
+
- [Implementation](Implementation)
|
|
11
|
+
- [Operations](Operations)
|
|
12
|
+
- [Integrations](Integrations)
|
|
13
|
+
- [Troubleshooting](Troubleshooting)
|
|
14
|
+
- [Security Model](Security-Model)
|
|
15
|
+
- [Releases and Upgrades](Releases-and-Upgrades)
|
|
16
|
+
|
|
17
|
+
**Project**
|
|
18
|
+
|
|
19
|
+
- [Repository](https://github.com/moretea-labs/forge)
|
|
20
|
+
- [Versioned Docs](https://github.com/moretea-labs/forge/tree/main/docs)
|
|
21
|
+
- [Support](https://github.com/moretea-labs/forge/blob/main/SUPPORT.md)
|
package/install.ps1
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
param(
|
|
2
|
+
[switch]$DryRun,
|
|
3
|
+
[ValidateSet("auto", "bun", "node")]
|
|
4
|
+
[string]$Runtime
|
|
5
|
+
)
|
|
6
|
+
$ErrorActionPreference = "Stop"
|
|
7
|
+
Set-StrictMode -Version Latest
|
|
8
|
+
$PackageName = "@moretea-labs/forge"
|
|
9
|
+
$PackageVersion = if ($env:FORGE_VERSION) { $env:FORGE_VERSION } else { "next" }
|
|
10
|
+
$InstallRuntime = if ($Runtime) { $Runtime.ToLowerInvariant() } elseif ($env:FORGE_INSTALL_RUNTIME) { $env:FORGE_INSTALL_RUNTIME.ToLowerInvariant() } else { "auto" }
|
|
11
|
+
$MinimumNodeVersion = [version]"20.10.0"
|
|
12
|
+
$BunInstall = if ($env:BUN_INSTALL) { $env:BUN_INSTALL } else { Join-Path $HOME ".bun" }
|
|
13
|
+
$BunBin = Join-Path $BunInstall "bin"
|
|
14
|
+
function Test-Command([string]$Name) { return [bool](Get-Command $Name -ErrorAction SilentlyContinue) }
|
|
15
|
+
function Add-PathEntry([string]$PathEntry) { if ($PathEntry -and (Test-Path $PathEntry)) { $entries = $env:PATH -split [System.IO.Path]::PathSeparator; if ($entries -notcontains $PathEntry) { $env:PATH = "$PathEntry$([System.IO.Path]::PathSeparator)$env:PATH" } } }
|
|
16
|
+
function Refresh-InstallerPath { Add-PathEntry $BunBin; if ($env:APPDATA) { Add-PathEntry (Join-Path $env:APPDATA "npm") }; if (Test-Command "npm") { $npmPrefix = (& npm config get prefix 2>$null | Select-Object -First 1).Trim(); Add-PathEntry $npmPrefix } }
|
|
17
|
+
function Assert-Prerequisites {
|
|
18
|
+
if ($PSVersionTable.PSVersion -lt [version]"5.1") { throw "PowerShell 5.1 or newer is required. PowerShell 7 is recommended." }
|
|
19
|
+
if (-not (Test-Command "git")) { throw "Git is required. Install Git for Windows, reopen PowerShell, and rerun this installer." }
|
|
20
|
+
if (-not (Test-Command "node")) { throw "Node.js 20.10 or newer is required because the published Forge launcher uses Node." }
|
|
21
|
+
$nodeText = (& node -p "process.versions.node").Trim(); if ($LASTEXITCODE -ne 0 -or -not $nodeText) { throw "Node.js is present, but its version could not be read." }
|
|
22
|
+
if ([version]$nodeText -lt $MinimumNodeVersion) { throw "Node.js 20.10 or newer is required; found $nodeText." }
|
|
23
|
+
}
|
|
24
|
+
function Install-BunIfNeeded { if (Test-Command "bun") { return }; Invoke-RestMethod https://bun.sh/install.ps1 | Invoke-Expression; Refresh-InstallerPath; if (-not (Test-Command "bun")) { throw "Bun installation completed, but bun is still not on PATH." } }
|
|
25
|
+
function Select-InstallRuntime {
|
|
26
|
+
switch ($InstallRuntime) {
|
|
27
|
+
"bun" { Install-BunIfNeeded; return "bun" }
|
|
28
|
+
"node" { if (-not (Test-Command "npm")) { throw "npm is required for FORGE_INSTALL_RUNTIME=node." }; return "node" }
|
|
29
|
+
"auto" { if (Test-Command "bun") { return "bun" }; if (Test-Command "npm") { return "node" }; throw "Neither Bun nor npm is available." }
|
|
30
|
+
default { throw "Invalid FORGE_INSTALL_RUNTIME=$InstallRuntime. Expected auto, bun, or node." }
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if ($DryRun -or $env:FORGE_DRY_RUN -eq "1") { Write-Host "DRY RUN: would require Git and Node.js 20.10+, choose runtime ($InstallRuntime), install $PackageName@$PackageVersion, and verify the Forge CLI."; exit 0 }
|
|
34
|
+
Refresh-InstallerPath
|
|
35
|
+
Assert-Prerequisites
|
|
36
|
+
$Runtime = Select-InstallRuntime
|
|
37
|
+
$PackageSpec = "$PackageName@$PackageVersion"
|
|
38
|
+
if ($Runtime -eq "bun") { & bun add -g $PackageSpec } else { & npm install -g $PackageSpec --omit=optional --no-audit --no-fund }
|
|
39
|
+
if ($LASTEXITCODE -ne 0) { throw "Package installation failed with exit code $LASTEXITCODE." }
|
|
40
|
+
Refresh-InstallerPath
|
|
41
|
+
if (-not (Test-Command "forge")) { throw "forge is not on PATH after installation." }
|
|
42
|
+
$Version = (& forge --version | Select-Object -First 1).Trim(); if ($LASTEXITCODE -ne 0 -or -not $Version) { throw "Forge installed, but version readback failed." }
|
|
43
|
+
& forge doctor --help *> $null; if ($LASTEXITCODE -ne 0) { throw "Forge installed, but the doctor command could not be loaded." }
|
|
44
|
+
Write-Host "Forge $Version installed."
|
|
45
|
+
Write-Host "Next:"
|
|
46
|
+
Write-Host " forge install --no-cli"
|
|
47
|
+
Write-Host " forge doctor"
|
|
48
|
+
Write-Host " forge adopt --repo C:\path\to\your-project --dry-run"
|
package/install.sh
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
set -eu
|
|
3
|
+
|
|
4
|
+
PACKAGE_NAME="@moretea-labs/forge"
|
|
5
|
+
PACKAGE_VERSION="${FORGE_VERSION:-next}"
|
|
6
|
+
INSTALL_RUNTIME="${FORGE_INSTALL_RUNTIME:-auto}"
|
|
7
|
+
|
|
8
|
+
log() { printf '%s\n' "$*"; }
|
|
9
|
+
die() { printf 'Forge install: %s\n' "$*" >&2; exit 1; }
|
|
10
|
+
has_command() { command -v "$1" >/dev/null 2>&1; }
|
|
11
|
+
|
|
12
|
+
HOME_DIR="${HOME:-}"
|
|
13
|
+
[ -n "$HOME_DIR" ] || die "HOME is not set"
|
|
14
|
+
BUN_INSTALL_DIR="${BUN_INSTALL:-$HOME_DIR/.bun}"
|
|
15
|
+
|
|
16
|
+
ensure_git() { has_command git || die "Git is required. Install Git and reopen the terminal."; }
|
|
17
|
+
ensure_node() {
|
|
18
|
+
has_command node || die "Node.js 20.10 or newer is required because the published Forge launcher uses Node."
|
|
19
|
+
node -e 'const [major, minor] = process.versions.node.split(".").map(Number); process.exit(major > 20 || (major === 20 && minor >= 10) ? 0 : 1)' \
|
|
20
|
+
|| die "Node.js 20.10 or newer is required; found $(node --version 2>/dev/null || printf unknown)"
|
|
21
|
+
}
|
|
22
|
+
install_bun() {
|
|
23
|
+
has_command bun && return 0
|
|
24
|
+
has_command bash || die "bash is required to install Bun automatically"
|
|
25
|
+
if has_command curl; then curl -fsSL https://bun.sh/install | bash
|
|
26
|
+
elif has_command wget; then wget -qO- https://bun.sh/install | bash
|
|
27
|
+
else die "curl or wget is required to install Bun automatically"; fi
|
|
28
|
+
export PATH="$BUN_INSTALL_DIR/bin:$PATH"
|
|
29
|
+
has_command bun || die "Bun install completed, but bun is still not on PATH"
|
|
30
|
+
}
|
|
31
|
+
choose_runtime() {
|
|
32
|
+
case "$INSTALL_RUNTIME" in
|
|
33
|
+
bun) install_bun; printf 'bun\n' ;;
|
|
34
|
+
node) has_command npm || die "npm is required for FORGE_INSTALL_RUNTIME=node"; printf 'node\n' ;;
|
|
35
|
+
auto) if has_command bun; then printf 'bun\n'; else has_command npm || die "npm is required when Bun is unavailable"; printf 'node\n'; fi ;;
|
|
36
|
+
*) die "invalid FORGE_INSTALL_RUNTIME=$INSTALL_RUNTIME (expected auto, bun, node)" ;;
|
|
37
|
+
esac
|
|
38
|
+
}
|
|
39
|
+
install_forge() {
|
|
40
|
+
runtime="$1"; package_spec="${PACKAGE_NAME}@${PACKAGE_VERSION}"
|
|
41
|
+
if [ "$runtime" = "bun" ]; then log "Installing ${package_spec} with Bun..."; bun add -g "$package_spec"
|
|
42
|
+
else log "Installing ${package_spec} with npm..."; npm install -g "$package_spec" --omit=optional --no-audit --no-fund; fi
|
|
43
|
+
}
|
|
44
|
+
verify_forge() {
|
|
45
|
+
export PATH="$BUN_INSTALL_DIR/bin:$PATH"
|
|
46
|
+
has_command forge || die "forge is not on PATH after installation. Reopen the terminal or add the package-manager global bin directory to PATH."
|
|
47
|
+
version="$(forge --version 2>/dev/null || true)"
|
|
48
|
+
[ -n "$version" ] || die "Forge installed, but version readback failed"
|
|
49
|
+
forge doctor --help >/dev/null 2>&1 || die "Forge installed, but the doctor command could not be loaded"
|
|
50
|
+
log "Forge ${version} installed."
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if [ "${FORGE_DRY_RUN:-0}" = "1" ]; then
|
|
54
|
+
log "DRY RUN: would require Git and Node.js 20.10 or newer, choose runtime (${INSTALL_RUNTIME}), install ${PACKAGE_NAME}@${PACKAGE_VERSION}, and verify the Forge CLI."
|
|
55
|
+
exit 0
|
|
56
|
+
fi
|
|
57
|
+
ensure_git
|
|
58
|
+
ensure_node
|
|
59
|
+
runtime="$(choose_runtime)"
|
|
60
|
+
install_forge "$runtime"
|
|
61
|
+
verify_forge
|
|
62
|
+
log ""
|
|
63
|
+
log "Next:"
|
|
64
|
+
log " forge install --no-cli"
|
|
65
|
+
log " forge doctor"
|
|
66
|
+
log " forge adopt --repo /path/to/your-project --dry-run"
|