@moretea-labs/forge 1.5.0-rc.1 → 1.5.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 +9 -11
- package/CHANGELOG.md +27 -1
- package/CLAUDE.md +8 -10
- package/DESIGN.md +278 -0
- package/README.md +70 -90
- package/README.zh-CN.md +52 -55
- package/SKILL.md +8 -11
- package/THIRD_PARTY_NOTICES.md +9 -3
- package/assets/branding/README.md +4 -2
- package/assets/hooks/lib/workflow-state.sh +19 -18
- package/assets/hooks/post-edit-guard.sh +6 -75
- package/assets/hooks/prompt-guard.sh +24 -12
- package/assets/hooks/session-start-context.sh +17 -17
- package/assets/hooks/stop-orchestrator.sh +2 -2
- package/assets/partials/04-project-structure.partial.md +6 -6
- package/assets/partials/05-workflow.partial.md +6 -6
- package/assets/partials/07-footer.partial.md +1 -1
- package/assets/partials/08-orchestration.partial.md +2 -2
- package/assets/partials-agents/02-operating-mode.partial.md +5 -5
- package/assets/partials-agents/03-orchestration.partial.md +3 -3
- package/assets/partials-agents/04-task-protocol.partial.md +3 -3
- package/assets/partials-agents/08-deep-docs.partial.md +1 -1
- package/assets/reference-configs/agentic-development-flow.md +49 -86
- package/assets/reference-configs/external-tooling.md +21 -61
- package/assets/reference-configs/handoff-protocol.md +25 -20
- package/assets/reference-configs/harness-overview.md +8 -8
- package/assets/skill-version.json +2 -2
- package/assets/templates/helpers/archive-workflow.sh +0 -1
- package/assets/templates/helpers/capture-plan.sh +3 -3
- package/assets/templates/helpers/check-task-workflow.sh +2 -2
- package/assets/templates/helpers/codex-handoff-resume.sh +5 -5
- package/assets/templates/helpers/ensure-task-workflow.sh +37 -35
- package/assets/templates/helpers/new-plan.sh +1 -1
- package/assets/templates/helpers/plan-to-todo.sh +2 -2
- package/assets/templates/helpers/prepare-codex-handoff.sh +2 -2
- package/assets/templates/helpers/prepare-handoff.sh +9 -9
- package/assets/templates/helpers/refresh-current-status.sh +2 -2
- package/assets/templates/helpers/ship-worktrees.sh +1 -1
- package/assets/templates/helpers/sprint-backlog.sh +1 -1
- package/assets/templates/helpers/verify-sprint.sh +7 -7
- package/assets/templates/helpers/workstream-sync.sh +1 -1
- package/assets/templates/plan.template.md +1 -1
- package/assets/workflow-contract.v1.json +6 -3
- package/docs/architecture/current/README.md +10 -9
- package/docs/architecture/current/approved-target-architecture.zh-CN.md +2 -2
- package/docs/architecture/current/architecture-invariants.md +2 -2
- package/docs/architecture/current/automation-and-schedule-engine.md +15 -15
- package/docs/architecture/current/codegraph-context-provider.md +2 -2
- package/docs/architecture/current/control-plane-authority-inventory.md +12 -0
- package/docs/architecture/current/dispatch-and-agent-strategy.md +11 -11
- package/docs/architecture/current/entity-model.md +0 -27
- package/docs/architecture/current/failure-recovery.md +0 -24
- package/docs/architecture/current/governance.md +1 -1
- package/docs/architecture/current/implementation-status.md +1 -1
- package/docs/architecture/current/legacy-governance.md +58 -0
- package/docs/architecture/current/multi-repository-execution.md +1 -1
- package/docs/architecture/current/peer-supercontroller-runtime.md +1 -1
- package/docs/architecture/current/personal-assistant-plugin-baseline.md +4 -5
- package/docs/architecture/current/scheduler-and-resource-claims.md +0 -10
- package/docs/architecture/current/target-requirements-traceability.md +2 -2
- package/docs/architecture/current/thin-harness-governance-policy.md +1 -1
- package/docs/architecture/current/thin-harness-v1.md +9 -11
- package/docs/architecture/domains/runtime-harness.md +1 -1
- package/docs/forge-autonomous-goal-loop.md +3 -1
- package/docs/forge-chatgpt-mcp-setup.md +67 -176
- package/docs/images/forge-banner-cn.svg +26 -1
- package/docs/images/forge-banner.svg +26 -1
- package/docs/operations/features.md +1 -1
- package/docs/operations/homebrew.md +3 -3
- package/docs/operations/mcp-tool-exposure.md +5 -5
- package/docs/operations/platform-support.md +45 -37
- package/docs/operations/platform-support.zh-CN.md +40 -38
- package/docs/operations/releasing.md +3 -3
- package/docs/operations/releasing.zh-CN.md +3 -3
- package/docs/operations/troubleshooting.md +11 -6
- package/docs/operations/troubleshooting.zh-CN.md +11 -6
- package/docs/public-usage-guide.md +28 -21
- package/docs/public-usage-guide.zh-CN.md +28 -21
- package/docs/tutorials/01-install-and-start.md +58 -35
- package/docs/tutorials/01-install-and-start.zh-CN.md +58 -35
- package/docs/tutorials/02-connect-chatgpt.md +118 -46
- package/docs/tutorials/02-connect-chatgpt.zh-CN.md +119 -45
- package/docs/wiki/Architecture.md +1 -1
- package/docs/wiki/Installation.md +2 -2
- package/docs/wiki/Quick-Start.md +1 -1
- package/docs/wiki/Work-Lifecycle.md +1 -1
- package/install.ps1 +4 -5
- package/install.sh +4 -6
- package/package.json +15 -5
- package/scripts/archive-workflow.sh +0 -1
- package/scripts/benchmark-thin-harness-mcp-e2e.ts +27 -14
- package/scripts/build-controller-ui.ts +28 -0
- package/scripts/capture-plan.sh +4 -4
- package/scripts/check-agent-tooling.sh +12 -1
- package/scripts/check-platform-support.mjs +2 -2
- package/scripts/check-public-docs.sh +16 -5
- package/scripts/check-release-readiness.sh +5 -11
- package/scripts/check-runtime-architecture.mjs +14 -22
- package/scripts/check-tarball-install-smoke.sh +3 -2
- package/scripts/check-task-workflow.sh +2 -2
- package/scripts/codex-handoff-resume.sh +5 -5
- package/scripts/create-project-dirs.sh +3 -3
- package/scripts/ensure-task-workflow.sh +45 -35
- package/scripts/init-project.sh +4 -4
- package/scripts/install-desktop-operator-registration.ts +2 -2
- package/scripts/lib/project-init-lib.sh +46 -44
- package/scripts/migrate-project-template.sh +7 -4
- package/scripts/new-plan.sh +1 -1
- package/scripts/plan-to-todo.sh +2 -2
- package/scripts/prepare-codex-handoff.sh +2 -2
- package/scripts/prepare-handoff.sh +9 -9
- package/scripts/refresh-current-status.sh +2 -2
- package/scripts/setup-plugins.sh +3 -3
- package/scripts/ship-worktrees.sh +1 -1
- package/scripts/sprint-backlog.sh +5 -5
- package/scripts/sync-codex-installed-copies.sh +2 -3
- package/scripts/verify-sprint.sh +7 -7
- package/scripts/workstream-sync.sh +1 -1
- package/src/cli/chatgpt-browser/bridge-extension.ts +1 -1
- package/src/cli/chatgpt-browser/bridge-provider.ts +29 -0
- package/src/cli/chatgpt-browser/file-policy.ts +3 -1
- package/src/cli/commands/chatgpt.ts +51 -0
- package/src/cli/commands/doctor.ts +1 -1
- package/src/cli/commands/init-hook.ts +213 -70
- package/src/cli/commands/init.ts +5 -6
- package/src/cli/commands/mcp.ts +31 -5
- package/src/cli/commands/runtime.ts +61 -8
- package/src/cli/commands/setup-profile.ts +472 -0
- package/src/cli/controller/check-runner.ts +20 -3
- package/src/cli/controller/codex-continuation.ts +4 -7
- package/src/cli/controller/context-pack.ts +118 -14
- package/src/cli/controller/operational-plan.ts +4 -4
- package/src/cli/controller/task-ledger.ts +10 -10
- package/src/cli/controller/work-mode.ts +6 -13
- package/src/cli/index.ts +14 -35
- package/src/cli/local-bridge/connector-freshness.ts +1 -1
- package/src/cli/local-bridge/console-assets.ts +17 -0
- package/src/cli/local-bridge/console-automations.ts +160 -0
- package/src/cli/local-bridge/dashboard.ts +8 -1303
- package/src/cli/local-bridge/facade-api.ts +16 -7
- package/src/cli/local-bridge/frontend/src/App.tsx +10 -0
- package/src/cli/local-bridge/frontend/src/components/Button.tsx +1 -0
- package/src/cli/local-bridge/frontend/src/components/DetailPane.tsx +3 -0
- package/src/cli/local-bridge/frontend/src/components/SearchField.tsx +1 -0
- package/src/cli/local-bridge/frontend/src/components/SectionHeader.tsx +1 -0
- package/src/cli/local-bridge/frontend/src/components/Segmented.tsx +1 -0
- package/src/cli/local-bridge/frontend/src/components/StatusText.tsx +3 -0
- package/src/cli/local-bridge/frontend/src/design/icons.tsx +11 -0
- package/src/cli/local-bridge/frontend/src/design/tokens.css +8 -0
- package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +3 -0
- package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +4 -0
- package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +3 -0
- package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +2 -0
- package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +2 -0
- package/src/cli/local-bridge/frontend/src/features/system/SystemView.tsx +2 -0
- package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +3 -0
- package/src/cli/local-bridge/frontend/src/lib/api.ts +23 -0
- package/src/cli/local-bridge/frontend/src/lib/format.ts +4 -0
- package/src/cli/local-bridge/frontend/src/lib/routes.ts +7 -0
- package/src/cli/local-bridge/frontend/src/main.tsx +1 -0
- package/src/cli/local-bridge/frontend/src/shell/AppShell.tsx +1 -0
- package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +2 -0
- package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +3 -0
- package/src/cli/local-bridge/frontend/src/styles.css +12 -0
- package/src/cli/local-bridge/frontend/src/types.ts +14 -0
- package/src/cli/local-bridge/frontend/src/vite-env.d.ts +1 -0
- package/src/cli/local-bridge/frontend/vite.config.ts +27 -0
- package/src/cli/local-bridge/server.ts +45 -0
- package/src/cli/local-bridge/ui-dist/app.css +1 -0
- package/src/cli/local-bridge/ui-dist/app.js +11094 -0
- package/src/cli/mcp/auth.ts +2 -0
- package/src/cli/mcp/instructions.ts +3 -3
- package/src/cli/mcp/legacy-tool-service.ts +27 -23
- package/src/cli/mcp/multi-repository.ts +2 -0
- package/src/cli/mcp/policy.ts +7 -5
- package/src/cli/mcp/repository-tools.ts +53 -14
- package/src/cli/mcp/server.ts +5 -10
- package/src/cli/mcp/setup.ts +220 -276
- package/src/cli/mcp/tool-capability-cache.ts +1 -1
- package/src/cli/mcp/toolset-names.ts +1 -1
- package/src/cli/mcp/toolset.ts +0 -1
- package/src/cli/mcp/transports/http.ts +51 -4
- package/src/cli/repositories/branch-name-policy.ts +0 -7
- package/src/cli/repositories/controller-home.ts +110 -3
- package/src/cli/repositories/safe-patch.ts +1 -1
- package/src/cli/repositories/selected-path-actions.ts +26 -24
- package/src/core/adoption/gitignore-plan.ts +2 -3
- package/src/core/adoption/plan.ts +4 -1
- package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +556 -0
- package/src/runtime/control-plane/execution/work-handle-store.ts +128 -1
- package/src/runtime/control-plane/execution/work-validation-reconciler.ts +277 -0
- package/src/runtime/control-plane/execution/work-verification-snapshot.ts +169 -0
- package/src/runtime/control-plane/facade/capability-registry.ts +0 -10
- package/src/runtime/control-plane/facade/handoff-inbox-store.ts +44 -25
- package/src/runtime/control-plane/facade/suggested-actions.ts +7 -1
- package/src/runtime/control-plane/facade/types.ts +0 -1
- package/src/runtime/control-plane/global-scheduler/scheduler.ts +30 -8
- package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +114 -0
- package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +175 -0
- package/src/runtime/control-plane/launcher/launch-reservation-store.ts +161 -0
- package/src/runtime/control-plane/launcher/provider-mcp-bootstrap.ts +64 -0
- package/src/runtime/control-plane/launcher/thin-launcher.ts +117 -24
- package/src/runtime/control-plane/routing/route-policy.ts +14 -14
- package/src/runtime/control-plane/runtime-cleanup.ts +0 -1
- package/src/runtime/evidence/event-ledger.ts +1 -1
- package/src/runtime/{workflow/campaigns/workspace.ts → execution/managed-workspace.ts} +41 -43
- package/src/runtime/execution/process-runtime/check-facade.ts +6 -0
- package/src/runtime/execution/process-runtime/check-result.ts +45 -0
- package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +42 -16
- package/src/runtime/execution/process-runtime/command-facade.ts +4 -2
- package/src/runtime/execution/process-runtime/gc.ts +1 -1
- package/src/runtime/execution/process-runtime/index.ts +3 -0
- package/src/runtime/execution/process-runtime/interactive-admission.ts +14 -5
- package/src/runtime/execution/process-runtime/persisted-check.ts +285 -0
- package/src/runtime/execution/process-runtime/resource-claims.ts +30 -0
- package/src/runtime/execution/process-runtime/runtime.ts +18 -1
- package/src/runtime/execution/process-runtime/store.ts +1 -19
- package/src/runtime/execution/process-runtime/types.ts +4 -0
- package/src/runtime/execution/thin-harness/execution-router.ts +0 -1
- package/src/runtime/execution/thin-harness/fast-executor.ts +1 -1
- package/src/runtime/execution/thin-harness/lightweight-lanes.ts +1 -2
- package/src/runtime/execution/thin-harness/types.ts +0 -1
- package/src/runtime/execution/workers/executor.ts +1 -1
- package/src/runtime/gateway/mcp/execution-tools.ts +1 -1
- package/src/runtime/gateway/mcp/persisted-check-process.ts +3 -255
- package/src/runtime/gateway/mcp/process-tools.ts +16 -3
- package/src/runtime/gateway/mcp/resource-policy.ts +0 -9
- package/src/runtime/gateway/mcp/router.ts +117 -182
- package/src/runtime/gateway/mcp/runtime-tools.ts +331 -409
- package/src/runtime/gateway/mcp/work-validation-reconciler.ts +1 -219
- package/src/runtime/plugins/browser-adapter.ts +5 -0
- package/src/runtime/plugins/desktop-operator-registration.ts +1 -1
- package/src/runtime/plugins/store.ts +14 -6
- package/src/runtime/plugins/types.ts +1 -1
- package/src/runtime/projections/materialized-view.ts +1 -23
- package/src/runtime/recovery/maintenance-executor.ts +9 -0
- package/src/runtime/resources/ownership.ts +0 -1
- package/src/runtime/root/gateway-adapter.ts +2 -0
- package/src/runtime/root/mcp-transport.ts +10 -2
- package/src/runtime/root/package-connector-service.ts +136 -0
- package/src/runtime/root/package-runtime-release.ts +161 -0
- package/src/runtime/root/package-runtime-service.ts +185 -0
- package/src/runtime/root/release-materialize.ts +19 -0
- package/src/runtime/root/runtime.ts +2 -1
- package/src/runtime/root/scheduler.ts +5 -0
- package/src/runtime/root/service.ts +18 -5
- package/src/runtime/standalone-recovery/core.ts +65 -16
- package/src/runtime/workflow/findings/store.ts +145 -106
- package/src/runtime/workflow/findings/types.ts +22 -0
- package/src/runtime/workflow/schedules/engine.ts +132 -2
- package/src/runtime/workflow/schedules/pending-activation.ts +139 -0
- package/src/runtime/workflow/schedules/work-continuation.ts +218 -0
- package/docs/CHANGELOG.md +0 -978
- package/docs/README.zh-CN.md +0 -58
- package/scripts/smoke-chatgpt-supervised-automation.ts +0 -208
- package/src/cli/commands/controller.ts +0 -680
- package/src/runtime/workflow/campaigns/cleanup.ts +0 -263
- package/src/runtime/workflow/campaigns/engine.ts +0 -112
- package/src/runtime/workflow/campaigns/normalize.ts +0 -100
- package/src/runtime/workflow/campaigns/review.ts +0 -315
- package/src/runtime/workflow/campaigns/store.ts +0 -526
- package/src/runtime/workflow/campaigns/supervisor.ts +0 -112
- package/src/runtime/workflow/campaigns/types.ts +0 -290
- /package/src/runtime/{workflow/campaigns → execution}/workspace-agent.ts +0 -0
|
@@ -1,239 +1,130 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Forge ChatGPT Controller — Low-level Reference
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> For normal onboarding, start with `forge setup` and [Tutorial 2](tutorials/02-connect-chatgpt.md). This file is the lower-level MCP reference and may also be regenerated by repository-scoped compatibility setup.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Product model
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Forge has no internal AI brain. ChatGPT is one external controller option: ChatGPT decides semantic next steps, while Forge owns bounded execution, durable state, authorization, Runtime lifecycle, and evidence. Codex/Claude are optional and are not enabled merely because they are installed.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- Bun and the `forge` CLI on PATH.
|
|
11
|
-
- Codex and/or Claude CLI installed for delegated local execution.
|
|
12
|
-
- GitHub CLI `gh` authenticated when GitHub Issues, Projects, or Copilot cloud sessions are used.
|
|
13
|
-
- ChatGPT workspace access to Developer Mode and custom MCP Connectors.
|
|
14
|
-
- A public HTTPS `/mcp` endpoint for ChatGPT.
|
|
9
|
+
## Normal package path
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## One-time setup
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
forge mcp setup chatgpt --repo .
|
|
22
|
-
forge runtime service install --controller-home <absolute-controller-home> --repo <absolute-repo-root> --host 127.0.0.1 --port 8765
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
The `controller` profile writes the service-level MCP configuration consumed by the single `forge-runtime`. The macOS launchd service starts and restarts that one root process; Gateway, Controller Services, Scheduler, and MCP Transport share the same Runtime lifecycle owner. There is no MCP KeepAlive wrapper or component-level lifecycle command.
|
|
26
|
-
|
|
27
|
-
The Runtime endpoint is loopback-only at `http://127.0.0.1:8765/`. The local visual controller surface is part of the same Runtime configuration; do not expose it directly.
|
|
28
|
-
|
|
29
|
-
Health check:
|
|
11
|
+
A repository is not required for the user-level ChatGPT connection:
|
|
30
12
|
|
|
31
13
|
```bash
|
|
32
|
-
|
|
33
|
-
forge
|
|
34
|
-
forge mcp doctor --repo .
|
|
14
|
+
forge setup configure --controller chatgpt --tunnel auto
|
|
15
|
+
forge setup next
|
|
35
16
|
```
|
|
36
17
|
|
|
37
|
-
|
|
18
|
+
The corresponding low-level commands are:
|
|
38
19
|
|
|
39
20
|
```bash
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
HTTPS_PROXY= HTTP_PROXY= ALL_PROXY= curl -v https://<named-tunnel-host>/mcp
|
|
21
|
+
forge mcp setup chatgpt --user-level
|
|
22
|
+
forge runtime service install-package
|
|
23
|
+
forge runtime status --json
|
|
44
24
|
```
|
|
45
25
|
|
|
46
|
-
|
|
26
|
+
The Package Runtime does not require a Forge Git checkout, Bun compilation, CodeGraph, or Standalone Recovery. The older `forge runtime service install --repo ...` command is an advanced source/immutable-release path.
|
|
47
27
|
|
|
48
|
-
|
|
28
|
+
## Local boundaries
|
|
49
29
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
## Stable endpoint
|
|
53
|
-
|
|
54
|
-
Use this Connector URL:
|
|
30
|
+
Forge keeps two MCP boundaries on loopback by default:
|
|
55
31
|
|
|
56
32
|
```text
|
|
57
|
-
|
|
33
|
+
ChatGPT OAuth Gateway: http://127.0.0.1:8767/mcp
|
|
34
|
+
Canonical Runtime: http://127.0.0.1:8765/mcp
|
|
58
35
|
```
|
|
59
36
|
|
|
60
|
-
|
|
37
|
+
The OAuth Gateway is the endpoint for Secure Tunnel or HTTPS connectors. It proxies authenticated controller traffic to the bearer-only Canonical Runtime; remote clients should never target the internal Runtime directly. `forge mcp setup chatgpt --user-level` records the actual OAuth endpoint, so custom ports remain supported.
|
|
61
38
|
|
|
62
|
-
|
|
63
|
-
cloudflared tunnel login
|
|
64
|
-
cloudflared tunnel create forge-mcp
|
|
65
|
-
cloudflared tunnel route dns forge-mcp <named-tunnel-host>
|
|
66
|
-
cloudflared tunnel run forge-mcp
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Keep forge on the fixed public origin without owning the tunnel process:
|
|
39
|
+
Fresh user-level setup keeps the repository-centric Utility Console disabled until a repository/workbench target is configured. When enabled later it uses a separate loopback port (normally 8766). Never expose it to the internet.
|
|
70
40
|
|
|
71
|
-
|
|
72
|
-
forge mcp setup chatgpt --repo . --endpoint https://<named-tunnel-host>/mcp
|
|
73
|
-
forge runtime service install --controller-home <absolute-controller-home> --repo <absolute-repo-root> --host 127.0.0.1 --port 8765
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Regenerate this guide with the stable endpoint:
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
forge mcp setup chatgpt --repo . --endpoint <https-url>/mcp
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
The real endpoint stays in ignored local config; the tracked guide stays placeholder-only. The OAuth discovery endpoint includes `oauth-protected-resource` metadata.
|
|
83
|
-
|
|
84
|
-
## Create the ChatGPT Connector
|
|
85
|
-
|
|
86
|
-
1. Open ChatGPT Settings and enable Developer Mode.
|
|
87
|
-
2. Create a custom Connector using the server name from `controllerHome/mcp/mcp.local.json` under `chatgpt.serverName`.
|
|
88
|
-
3. Paste the public HTTPS URL ending in `/mcp`.
|
|
89
|
-
4. Configure Connector authentication as OAuth. ChatGPT must use the `/mcp` OAuth URL; do not point ChatGPT at `/mcp-bearer`.
|
|
90
|
-
5. Scan tools and authorize with the passphrase from `controllerHome/mcp/mcp.oauth.json`.
|
|
91
|
-
6. Keep write confirmations enabled.
|
|
92
|
-
7. Re-scan tools after updating forge tool schemas.
|
|
93
|
-
|
|
94
|
-
### Grok and other OAuth MCP clients
|
|
95
|
-
|
|
96
|
-
Current Grok custom connectors support OAuth dynamic client registration + PKCE. Use the same canonical endpoint as ChatGPT:
|
|
97
|
-
|
|
98
|
-
```text
|
|
99
|
-
<https-tunnel-url>/mcp
|
|
100
|
-
```
|
|
41
|
+
Service-level MCP configuration lives below `Controller Home/mcp/`. OAuth credentials and bearer fallback tokens are local secrets and must not be pasted into chat or committed. Repository-specific `.forge/mcp.policy.json` can narrow access when a repository is later adopted.
|
|
101
42
|
|
|
102
|
-
|
|
43
|
+
## App identity vs. transport
|
|
103
44
|
|
|
104
|
-
|
|
45
|
+
The ChatGPT App/connector is the application identity and owns the visible Forge tool schema. **Secure MCP Tunnel is the transport.** Switching an existing Forge App from a public HTTPS/Cloudflare route to Tunnel changes how commands reach Forge; it does not create a second Forge tool schema.
|
|
105
46
|
|
|
106
|
-
|
|
47
|
+
Default path:
|
|
107
48
|
|
|
108
49
|
```text
|
|
109
|
-
|
|
50
|
+
ChatGPT App -> OpenAI Secure MCP Tunnel -> tunnel-client
|
|
51
|
+
-> Forge loopback OAuth Gateway -> Canonical Runtime
|
|
110
52
|
```
|
|
111
53
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
## Verify the loaded tool surface
|
|
115
|
-
|
|
116
|
-
Default `--toolset core` exposes the five-tool ChatGPT facade (`rh_access`, `rh_status`, `rh_inbox`, `rh_context`, `rh_work`) plus bounded repository discovery/edit escape hatches. Use `--toolset advanced` for the supervised typed controller menu or `--toolset full` for exhaustive legacy compatibility. Confirm all five `rh_*` tools appear after connect. If only legacy planning tools are visible, refresh or recreate the Connector so ChatGPT reloads the MCP tool schema.
|
|
117
|
-
|
|
118
|
-
## Refresh newly added repository tools
|
|
54
|
+
A fresh chat is useful for isolated A/B testing, but Forge does not require a new conversation merely because transport changed when the same App is already connected and its tool schema is unchanged. If published tool definitions change, use ChatGPT's current app refresh/re-publish workflow.
|
|
119
55
|
|
|
120
|
-
|
|
56
|
+
Upgrade existing Forge installs with:
|
|
121
57
|
|
|
122
58
|
```bash
|
|
123
|
-
|
|
59
|
+
npm install -g @moretea-labs/forge@latest
|
|
60
|
+
forge --version
|
|
61
|
+
forge setup next
|
|
124
62
|
```
|
|
125
63
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
After the restart, rescan or recreate the ChatGPT Connector, then call `controller_capabilities` again and verify `expectedTools` still includes `repository_latest_source_diagnose` and `repository_bootstrap_local_project`.
|
|
129
|
-
|
|
130
|
-
## Daily workflow
|
|
131
|
-
|
|
132
|
-
Start a new ChatGPT conversation with:
|
|
64
|
+
## Remote controller connection
|
|
133
65
|
|
|
134
|
-
|
|
135
|
-
Use forge as the project controller. Read project_snapshot, current Issues, active Runs, and relevant code before deciding the next action. Keep work in small dependency-aware Tasks. Do not dispatch one large Issue as one agent run.
|
|
136
|
-
```
|
|
66
|
+
The setup profile owns the connection choice. Supported paths are:
|
|
137
67
|
|
|
138
|
-
|
|
68
|
+
1. **OpenAI Secure MCP Tunnel** — preferred when the OpenAI organization/workspace has tunnel permission; no public inbound Forge endpoint is required. Forge stores only the non-secret `tunnel_id`. The runtime API key remains an `env:`/file reference owned by the official `tunnel-client`.
|
|
69
|
+
2. **Cloudflare Tunnel** — stable public/internet-reachable HTTPS endpoint.
|
|
70
|
+
3. **Tailscale Funnel** — HTTPS endpoint for compatible Tailscale environments.
|
|
71
|
+
4. **Existing HTTPS** — user-managed reverse proxy/tunnel ending in `/mcp`.
|
|
72
|
+
5. **None** — local setup only; remote connectivity can be configured later.
|
|
139
73
|
|
|
140
|
-
|
|
141
|
-
Analyze this requirement and the current implementation. Create or update an Issue and split it into executable Tasks. Do not execute yet.
|
|
142
|
-
```
|
|
74
|
+
For OpenAI Secure MCP Tunnel, setup uses the official managed runtime surface and considers a matching local alias ready only when `tunnel-client` reports the configured `tunnel_id` running, healthy, and ready. Alias names are not tunnel identity.
|
|
143
75
|
|
|
144
|
-
|
|
145
|
-
Inspect readiness for this Issue, publish it to GitHub when collaboration is useful, and launch at most two independent Tasks. Review every local diff or GitHub pull request and record verification evidence before accepting it.
|
|
146
|
-
```
|
|
76
|
+
For public HTTPS paths, the configured connector URL is:
|
|
147
77
|
|
|
148
78
|
```text
|
|
149
|
-
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
```text
|
|
153
|
-
This is a small local fix. Open a bounded edit session, modify only the named files, inspect the Git diff, run focused checks, and finalize or rollback the edit.
|
|
79
|
+
<https-tunnel-url>/mcp
|
|
154
80
|
```
|
|
155
81
|
|
|
156
|
-
|
|
82
|
+
Record a stable endpoint with:
|
|
157
83
|
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
-> Task T1
|
|
161
|
-
-> Run 1
|
|
162
|
-
-> Run 2 (retry)
|
|
163
|
-
-> Task T2
|
|
164
|
-
-> Task T3
|
|
84
|
+
```bash
|
|
85
|
+
forge setup configure --controller chatgpt --tunnel existing --endpoint https://forge.example.com/mcp
|
|
165
86
|
```
|
|
166
87
|
|
|
167
|
-
-
|
|
168
|
-
- Agent jobs, logs, edit backups, and worktrees are stored under ignored `.ai/harness/` runtime directories.
|
|
169
|
-
- A completed isolated agent Run moves its Task to review. ChatGPT must inspect it with `get_task_diff`, integrate it with `integrate_task_run`, record named-check and criterion evidence through `verify_task`, then explicitly accept it or request changes.
|
|
170
|
-
- Dependency completion unlocks later Tasks automatically.
|
|
171
|
-
- Any new ChatGPT conversation can recover state through `project_snapshot` and `get_project_board`.
|
|
172
|
-
|
|
173
|
-
## Capability boundaries
|
|
174
|
-
|
|
175
|
-
- `observe`: inspect repository state, search code, and read bounded file ranges.
|
|
176
|
-
- `manage`: create Issues, dynamically split Tasks, inspect launch readiness, publish to GitHub Issues/Projects, update status, and maintain project documents.
|
|
177
|
-
- `edit`: use a bounded edit session with allowed paths, SHA preconditions, change limits, backups, and rollback.
|
|
178
|
-
- `execute`: dispatch a ready Task to an allowed local agent in an isolated worktree or to a visible GitHub Copilot cloud session.
|
|
179
|
-
- Protected operations such as secrets, Git internals, package lockfiles, CI workflow changes, commits, merges, and pushes are not default controller actions.
|
|
88
|
+
Forge synchronizes an explicitly recorded endpoint into the user-level ChatGPT MCP configuration. A configured URL is not proof of live end-to-end connectivity; verify from ChatGPT with a real tool call.
|
|
180
89
|
|
|
181
|
-
|
|
182
|
-
`rh_work` to create or continue a WorkContract, `rh_work.controller_claim` to
|
|
183
|
-
establish ownership, and `rh_work.launcher_start` to begin an external
|
|
184
|
-
SuperController session.
|
|
90
|
+
## ChatGPT-side setup
|
|
185
91
|
|
|
186
|
-
|
|
92
|
+
ChatGPT developer-mode/MCP availability is controlled by the current ChatGPT plan and workspace policy. Follow OpenAI's current developer-mode documentation; Forge cannot bypass plan, administrator, RBAC, or tool-action restrictions.
|
|
187
93
|
|
|
188
|
-
|
|
94
|
+
- With **Secure MCP Tunnel**, create the ChatGPT app/connector using the Tunnel connection and the tunnel ID.
|
|
95
|
+
- With **HTTPS**, use the stable URL ending in `/mcp` and Forge's OAuth flow.
|
|
96
|
+
- Refresh/scan tools after Forge tool definitions change.
|
|
189
97
|
|
|
190
|
-
The
|
|
98
|
+
The bounded default surface intentionally exposes the preferred `rh_*` facade plus repository/source/check/process/plugin escape hatches. Do not switch to exhaustive compatibility mode merely to see more tool names.
|
|
191
99
|
|
|
192
|
-
|
|
100
|
+
## Verify
|
|
193
101
|
|
|
194
|
-
|
|
102
|
+
Local Runtime:
|
|
195
103
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
- never exposes arbitrary shell input through MCP;
|
|
201
|
-
- does not commit, merge, or push automatically.
|
|
104
|
+
```bash
|
|
105
|
+
forge runtime status --json
|
|
106
|
+
forge mcp doctor
|
|
107
|
+
```
|
|
202
108
|
|
|
203
|
-
|
|
109
|
+
Then verify from the selected external controller:
|
|
204
110
|
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
forge controller watch <RUN-ID> --repo . --log
|
|
111
|
+
```text
|
|
112
|
+
Use Forge. Call rh_status and report whether the Runtime is ready. Do not modify anything yet.
|
|
208
113
|
```
|
|
209
114
|
|
|
210
|
-
|
|
115
|
+
A successful controller-to-Forge tool call is the meaningful end-to-end setup milestone.
|
|
211
116
|
|
|
212
|
-
##
|
|
117
|
+
## Optional controller entries
|
|
213
118
|
|
|
214
|
-
|
|
119
|
+
Codex and Claude are configured only when explicitly selected:
|
|
215
120
|
|
|
216
121
|
```bash
|
|
217
|
-
forge mcp setup codex --
|
|
122
|
+
forge mcp setup codex --scope user --profile controller
|
|
123
|
+
forge mcp setup claude --scope user --profile controller
|
|
218
124
|
```
|
|
219
125
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
## Security
|
|
223
|
-
|
|
224
|
-
- Keep OAuth passphrases, bearer tokens, tunnel tokens, `~/.codex/auth.json`, and other credentials out of chat and Git.
|
|
225
|
-
- Keep the MCP server bound to loopback; expose it only through the authenticated tunnel.
|
|
226
|
-
- Do not remove immutable hard-deny patterns in order to make a Task pass.
|
|
227
|
-
- Review every completed local diff or GitHub pull request and record passing Verification Gate evidence before accepting a Task.
|
|
228
|
-
- Use the smallest allowed path set and focused checks for direct edits.
|
|
126
|
+
Multiple controller entries may coexist, while one external controller remains the semantic owner at a time.
|
|
229
127
|
|
|
230
|
-
##
|
|
128
|
+
## Advanced source/Recovery path
|
|
231
129
|
|
|
232
|
-
|
|
233
|
-
- Grok cannot connect: recreate it with the canonical `…/mcp` URL. The legacy `…/mcp-grok` URL is compatibility-only.
|
|
234
|
-
- A genuinely non-OAuth client loops on `/authorize`: use `…/mcp-bearer` with a bearer token from `controllerHome/mcp/mcp.tokens.json`.
|
|
235
|
-
- ChatGPT auth loops: retry authorization and inspect `controllerHome/mcp/mcp.oauth.json` first, then legacy `.forge/mcp.oauth.json` only when using fallback; do not paste the passphrase into chat.
|
|
236
|
-
- Tool scan misses tools: restart the Forge Runtime service with `launchctl kickstart -k gui/$(id -u)/com.moretea.forge.runtime.<controller-home-suffix>`, then rescan or recreate the versioned Connector and verify `controller_capabilities.expectedTools` includes `repository_latest_source_diagnose` and `repository_bootstrap_local_project`.
|
|
237
|
-
- Codex cannot see the MCP server: rerun `forge mcp setup codex --repo . --scope project`.
|
|
238
|
-
- A quick tunnel URL changed: update the Connector URL or switch to a named tunnel.
|
|
239
|
-
- A Task is blocked: inspect `get_task_run`, shrink or re-plan the Task, then retry that Task rather than redispatching the full Issue.
|
|
130
|
+
Maintainers who intentionally need immutable Git/source releases and independent disaster recovery may use the source Runtime and Standalone Recovery documentation. Those mechanisms are not required by ordinary npm/package users and are deliberately excluded from normal setup.
|
|
@@ -1 +1,26 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="420" viewBox="0 0 1280 420" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">Forge</title><desc id="desc">Forge 让 ChatGPT 在明确权限边界内操作本机文件、命令、代码、浏览器、Apple 工作流与插件。</desc>
|
|
3
|
+
<defs>
|
|
4
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#0b0d12"/><stop offset="1" stop-color="#171b24"/></linearGradient>
|
|
5
|
+
<linearGradient id="forge" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#ffb15c"/><stop offset="1" stop-color="#ff6b35"/></linearGradient>
|
|
6
|
+
<radialGradient id="glow" cx="0.18" cy="0.5" r="0.55"><stop offset="0" stop-color="#ff7a3d" stop-opacity="0.22"/><stop offset="1" stop-color="#ff7a3d" stop-opacity="0"/></radialGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="1280" height="420" rx="38" fill="url(#bg)"/><rect width="1280" height="420" rx="38" fill="url(#glow)"/>
|
|
9
|
+
<g opacity="0.12" stroke="#ffffff"><path d="M0 70H1280M0 140H1280M0 210H1280M0 280H1280M0 350H1280"/><path d="M160 0V420M320 0V420M480 0V420M640 0V420M800 0V420M960 0V420M1120 0V420"/></g>
|
|
10
|
+
<rect x="74" y="75" width="126" height="126" rx="28" fill="url(#forge)"/>
|
|
11
|
+
<path d="M108 170V106h67v18h-46v10h39v17h-39v19z" fill="#111318"/>
|
|
12
|
+
<text x="74" y="258" fill="#f8fafc" font-family="ui-sans-serif,system-ui,sans-serif" font-size="72" font-weight="760">Forge</text>
|
|
13
|
+
<text x="74" y="305" fill="#ff9b55" font-family="ui-sans-serif,system-ui,sans-serif" font-size="24" font-weight="700" letter-spacing="1">CHATGPT 决策,FORGE 执行</text>
|
|
14
|
+
<text x="74" y="344" fill="#b8c0cc" font-family="ui-sans-serif,system-ui,sans-serif" font-size="22">连接你的电脑、代码、浏览器与外部服务。</text>
|
|
15
|
+
<g font-family="ui-sans-serif,system-ui,sans-serif">
|
|
16
|
+
<rect x="700" y="78" width="190" height="72" rx="18" fill="#202631" stroke="#3b4556"/><text x="795" y="107" text-anchor="middle" fill="#9ba7b8" font-size="13" font-weight="700" letter-spacing="1.5">主控</text><text x="795" y="134" text-anchor="middle" fill="#f8fafc" font-size="22" font-weight="700">ChatGPT</text>
|
|
17
|
+
<path d="M895 114H945" stroke="#ff8a45" stroke-width="3"/><path d="M936 106l12 8-12 8" fill="none" stroke="#ff8a45" stroke-width="3"/>
|
|
18
|
+
<rect x="955" y="78" width="250" height="72" rx="18" fill="#27251f" stroke="#a65c2c"/><text x="1080" y="107" text-anchor="middle" fill="#ff9b55" font-size="13" font-weight="700" letter-spacing="1.5">行动层</text><text x="1080" y="134" text-anchor="middle" fill="#f8fafc" font-size="22" font-weight="700">Forge</text>
|
|
19
|
+
<g fill="#151a22" stroke="#343d4c">
|
|
20
|
+
<rect x="700" y="188" width="150" height="58" rx="16"/><rect x="866" y="188" width="150" height="58" rx="16"/><rect x="1032" y="188" width="173" height="58" rx="16"/>
|
|
21
|
+
<rect x="700" y="262" width="150" height="58" rx="16"/><rect x="866" y="262" width="150" height="58" rx="16"/><rect x="1032" y="262" width="173" height="58" rx="16"/>
|
|
22
|
+
</g>
|
|
23
|
+
<g fill="#e7ebf0" font-size="17" font-weight="650" text-anchor="middle"><text x="775" y="224">本机文件</text><text x="941" y="224">执行命令</text><text x="1118" y="224">Git 与代码</text><text x="775" y="298">浏览器</text><text x="941" y="298">Apple</text><text x="1118" y="298">插件</text></g>
|
|
24
|
+
<text x="700" y="363" fill="#8e99aa" font-size="15">明确权限 · 可恢复执行 · 可审查证据</text>
|
|
25
|
+
</g>
|
|
26
|
+
</svg>
|
|
@@ -1 +1,26 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="420" viewBox="0 0 1280 420" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">Forge</title><desc id="desc">Forge gives ChatGPT a controlled action layer for local files, commands, code, browsers, Apple workflows, and plugins.</desc>
|
|
3
|
+
<defs>
|
|
4
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#0b0d12"/><stop offset="1" stop-color="#171b24"/></linearGradient>
|
|
5
|
+
<linearGradient id="forge" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#ffb15c"/><stop offset="1" stop-color="#ff6b35"/></linearGradient>
|
|
6
|
+
<radialGradient id="glow" cx="0.18" cy="0.5" r="0.55"><stop offset="0" stop-color="#ff7a3d" stop-opacity="0.22"/><stop offset="1" stop-color="#ff7a3d" stop-opacity="0"/></radialGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="1280" height="420" rx="38" fill="url(#bg)"/><rect width="1280" height="420" rx="38" fill="url(#glow)"/>
|
|
9
|
+
<g opacity="0.12" stroke="#ffffff"><path d="M0 70H1280M0 140H1280M0 210H1280M0 280H1280M0 350H1280"/><path d="M160 0V420M320 0V420M480 0V420M640 0V420M800 0V420M960 0V420M1120 0V420"/></g>
|
|
10
|
+
<rect x="74" y="75" width="126" height="126" rx="28" fill="url(#forge)"/>
|
|
11
|
+
<path d="M108 170V106h67v18h-46v10h39v17h-39v19z" fill="#111318"/>
|
|
12
|
+
<text x="74" y="258" fill="#f8fafc" font-family="ui-sans-serif,system-ui,sans-serif" font-size="72" font-weight="760">Forge</text>
|
|
13
|
+
<text x="74" y="305" fill="#ff9b55" font-family="ui-sans-serif,system-ui,sans-serif" font-size="24" font-weight="700" letter-spacing="1">CHATGPT DECIDES. FORGE ACTS.</text>
|
|
14
|
+
<text x="74" y="344" fill="#b8c0cc" font-family="ui-sans-serif,system-ui,sans-serif" font-size="22">A local-first action layer for your computer, code & services.</text>
|
|
15
|
+
<g font-family="ui-sans-serif,system-ui,sans-serif">
|
|
16
|
+
<rect x="700" y="78" width="190" height="72" rx="18" fill="#202631" stroke="#3b4556"/><text x="795" y="107" text-anchor="middle" fill="#9ba7b8" font-size="13" font-weight="700" letter-spacing="1.5">CONTROLLER</text><text x="795" y="134" text-anchor="middle" fill="#f8fafc" font-size="22" font-weight="700">ChatGPT</text>
|
|
17
|
+
<path d="M895 114H945" stroke="#ff8a45" stroke-width="3"/><path d="M936 106l12 8-12 8" fill="none" stroke="#ff8a45" stroke-width="3"/>
|
|
18
|
+
<rect x="955" y="78" width="250" height="72" rx="18" fill="#27251f" stroke="#a65c2c"/><text x="1080" y="107" text-anchor="middle" fill="#ff9b55" font-size="13" font-weight="700" letter-spacing="1.5">ACTION LAYER</text><text x="1080" y="134" text-anchor="middle" fill="#f8fafc" font-size="22" font-weight="700">Forge</text>
|
|
19
|
+
<g fill="#151a22" stroke="#343d4c">
|
|
20
|
+
<rect x="700" y="188" width="150" height="58" rx="16"/><rect x="866" y="188" width="150" height="58" rx="16"/><rect x="1032" y="188" width="173" height="58" rx="16"/>
|
|
21
|
+
<rect x="700" y="262" width="150" height="58" rx="16"/><rect x="866" y="262" width="150" height="58" rx="16"/><rect x="1032" y="262" width="173" height="58" rx="16"/>
|
|
22
|
+
</g>
|
|
23
|
+
<g fill="#e7ebf0" font-size="17" font-weight="650" text-anchor="middle"><text x="775" y="224">LOCAL FILES</text><text x="941" y="224">COMMANDS</text><text x="1118" y="224">GIT & CODE</text><text x="775" y="298">BROWSER</text><text x="941" y="298">APPLE</text><text x="1118" y="298">PLUGINS</text></g>
|
|
24
|
+
<text x="700" y="363" fill="#8e99aa" font-size="15">Bounded permissions · durable execution · reviewable evidence</text>
|
|
25
|
+
</g>
|
|
26
|
+
</svg>
|
|
@@ -31,7 +31,7 @@ These features are part of the default local setup:
|
|
|
31
31
|
|
|
32
32
|
## Tool exposure
|
|
33
33
|
|
|
34
|
-
The default `core` / `advanced` toolset exposes one bounded ChatGPT-facing schema of
|
|
34
|
+
The default `core` / `advanced` toolset exposes one bounded ChatGPT-facing schema of 19 tools: the five `rh_*` workflow facades (with code retrieval routed through `rh_context.search`), repository selection, `repository_command_execute`, exact source read, `repository_safe_patch_apply`, `run_check`, one typed `plugin_action_execute` dispatcher with plugin schemas routed through `rh_context`, managed process lifecycle, result retrieval, and approval resolution. Git / issue-task / edit-session / other plugin / browser / iOS / maintenance atomics remain registered as internal handlers and are reachable through the `full` compatibility profile when still supported. Retired lifecycles are removed rather than kept as dormant compatibility handlers. The MCP transport does not dynamically load domain schemas.
|
|
35
35
|
|
|
36
36
|
## Execution choices
|
|
37
37
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Homebrew distribution plan
|
|
2
2
|
|
|
3
|
-
Homebrew is planned as a convenience layer after the first stable release. It is not a separate implementation or version line.
|
|
3
|
+
Homebrew is planned as a convenience layer after the first stable npm/GitHub release is published and verified. It is not a separate implementation or version line.
|
|
4
4
|
|
|
5
5
|
## Gate before creating a tap
|
|
6
6
|
|
|
7
7
|
Do not publish a formula until all of the following are true:
|
|
8
8
|
|
|
9
|
-
- `@moretea-labs/forge@1.
|
|
10
|
-
- Git tag and GitHub Release `v1.
|
|
9
|
+
- `@moretea-labs/forge@1.5.1` exists on npm;
|
|
10
|
+
- Git tag and GitHub Release `v1.5.1` exist and point to the tested commit;
|
|
11
11
|
- the npm tarball has an immutable checksum;
|
|
12
12
|
- macOS installation and `forge --version` / `forge doctor` tests pass;
|
|
13
13
|
- upgrade and uninstall behavior is documented.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# MCP tool exposure profiles
|
|
2
2
|
|
|
3
|
-
Controller MCP uses one stable default schema so ChatGPT can reliably read, edit, run checks, use Git, delegate to local Agents,
|
|
3
|
+
Controller MCP uses one stable default schema so ChatGPT can reliably read, edit, run checks, use Git, delegate to local Agents, coordinate durable Goal/Work, capture iOS evidence, and recover from failures without a permission switch hiding tools.
|
|
4
4
|
|
|
5
5
|
## Profiles
|
|
6
6
|
|
|
7
7
|
| Toolset | CLI | Behavior |
|
|
8
8
|
| --- | --- | --- |
|
|
9
|
-
| **advanced** (default) | `--toolset advanced` | Stable repair-capable surface, capped at 128 tools. Includes the five `rh_*` facades plus high-value repository, Direct Edit, command, Git, Work/Job, Agent,
|
|
9
|
+
| **advanced** (default) | `--toolset advanced` | Stable repair-capable surface, capped at 128 tools. Includes the five `rh_*` facades plus high-value repository, Direct Edit, command, Git, Work/Job, Agent, Goal/Work, plugin, browser, iOS, artifact, and recovery tools. |
|
|
10
10
|
| **core** | `--toolset core` | Compatibility label for the same stable default schema. It does not reduce capability or require reconnecting. |
|
|
11
11
|
| **full** | `--toolset full` | Every historical legacy and runtime definition. Use only for old integrations or deep compatibility diagnosis because the much larger schema can reduce tool-selection quality. |
|
|
12
12
|
|
|
@@ -28,8 +28,8 @@ MCP `tools/list`, call validation, `/health`, `controller_ready`, `rh_status`, C
|
|
|
28
28
|
The current implementation separates orchestration from capability without deleting product functions:
|
|
29
29
|
|
|
30
30
|
1. **Workflow facade:** `rh_status`, `rh_access`, `rh_inbox`, `rh_context`, and `rh_work` are the preferred ChatGPT control-plane entry points.
|
|
31
|
-
2. **Typed atomic tools:** repository inspection, Direct Edit, command, Git, Work/Job, Issue/Task,
|
|
32
|
-
3. **Internal handlers and capability registry:** capabilities are grouped as `controller`, `repository-core`, `git`, `issue-task`, `
|
|
31
|
+
2. **Typed atomic tools:** repository inspection, Direct Edit, command, Git, Work/Job, Issue/Task, Goal/Work, plugin, browser, iOS, artifact, and recovery handlers remain public because their schemas preserve operation-specific validation and evidence.
|
|
32
|
+
3. **Internal handlers and capability registry:** capabilities are grouped as `controller`, `repository-core`, `git`, `issue-task`, `browser`, `ios`, `plugin`, `evidence`, and `runtime-maintenance`. `rh_status`, `rh_context`, and `controller_capabilities` expose this metadata.
|
|
33
33
|
|
|
34
34
|
The MCP transport currently publishes a static stable schema. It does **not** support loading a domain schema only after ChatGPT selects that domain. Therefore capability grouping improves selection and documentation, but it must not be described as dynamic tool loading. A future transport-level implementation may reduce the discovered schema while retaining the same internal handlers.
|
|
35
35
|
|
|
@@ -44,7 +44,7 @@ Remote writes, destructive actions, outside-repository paths, and secret access
|
|
|
44
44
|
## Guidance
|
|
45
45
|
|
|
46
46
|
- Prefer `rh_status`, `rh_access`, `rh_context`, `rh_work`, and `rh_inbox` for normal orchestration.
|
|
47
|
-
- Use first-class Direct Edit, command, Git, `quick_agent_session`,
|
|
47
|
+
- Use first-class Direct Edit, command, Git, `quick_agent_session`, Goal/Work, iOS, plugin, and artifact tools when the facade is not the shortest reliable path.
|
|
48
48
|
- Keep the stable surface unique and at or below 128 tools.
|
|
49
49
|
- Add new public tools only when they unlock a real end-to-end workflow; otherwise route capabilities through an existing facade or plugin action.
|
|
50
50
|
|
|
@@ -1,62 +1,70 @@
|
|
|
1
1
|
# Platform Support
|
|
2
2
|
|
|
3
|
-
This document defines
|
|
3
|
+
This document defines the currently claimed Forge user experience. It distinguishes the **normal packaged setup path** from source/maintainer infrastructure so users are not required to install development-only dependencies.
|
|
4
4
|
|
|
5
5
|
## Support matrix
|
|
6
6
|
|
|
7
|
-
| Platform | Status |
|
|
7
|
+
| Platform | Status | Normal user path |
|
|
8
8
|
| --- | --- | --- |
|
|
9
|
-
| macOS | Supported |
|
|
10
|
-
| Modern Linux | Supported |
|
|
11
|
-
| WSL2 on Windows | Supported and recommended for Windows | Run the Linux
|
|
12
|
-
| Native Windows | Preview |
|
|
9
|
+
| macOS | Supported | Package install, controller-first setup, Package Runtime via launchd, repositories, local files, MCP, browser/desktop providers, and plugins. |
|
|
10
|
+
| Modern Linux | Supported | Package install, controller-first setup, Package Runtime via `systemd --user` when available, repositories, local files, MCP, and portable providers. |
|
|
11
|
+
| WSL2 on Windows | Supported and recommended for Windows | Run the Linux Forge Runtime inside WSL2; Windows can still host ChatGPT/browser clients. |
|
|
12
|
+
| Native Windows | Preview | Package install, setup, portable Runtime/MCP, repository registration/inspection, and portable capabilities. Automatic reboot-persistent Runtime ownership and every external provider combination are not yet claimed. |
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Base installation requirements
|
|
15
15
|
|
|
16
|
-
All installations require:
|
|
16
|
+
All normal installations require:
|
|
17
17
|
|
|
18
|
-
-
|
|
19
|
-
- Node.js
|
|
20
|
-
- either npm, which ships with Node.js, or Bun 1.0 or newer as the package installer;
|
|
18
|
+
- Node.js 20.10 or newer;
|
|
19
|
+
- npm (bundled with Node.js) or Bun as package installer;
|
|
21
20
|
- a writable user home directory.
|
|
22
21
|
|
|
23
|
-
Bun is
|
|
22
|
+
**Git is optional until repository/software-work capabilities are enabled.** Bun is optional for ordinary package users. A Forge source checkout, CodeGraph, Codex, Claude, Standalone Recovery, Cloudflare, Tailscale, or OpenAI tunnel-client is not a base dependency.
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
Capability-specific dependencies include:
|
|
26
25
|
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
26
|
+
- Git for repository adoption, Git operations, worktrees, commits, and source development;
|
|
27
|
+
- Codex or Claude only when explicitly configured as an external controller/execution entry;
|
|
28
|
+
- GitHub CLI for GitHub workflows that require it;
|
|
29
|
+
- browser/OS provider prerequisites for browser or desktop automation;
|
|
30
|
+
- Google/Apple/service credentials for their respective plugins;
|
|
31
|
+
- one remote connection provider when a hosted controller must reach the loopback MCP endpoint.
|
|
33
32
|
|
|
34
|
-
##
|
|
33
|
+
## Runtime ownership by platform
|
|
34
|
+
|
|
35
|
+
Normal package users use:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
forge runtime service install-package
|
|
39
|
+
```
|
|
35
40
|
|
|
36
|
-
|
|
41
|
+
This path fingerprints the installed `@moretea-labs/forge` runtime surface and refuses to launch if that package content drifts from the recorded release identity.
|
|
37
42
|
|
|
38
|
-
-
|
|
39
|
-
- `
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
- Windows path, process, junction, and command handling covered by the portable test suite;
|
|
43
|
-
- the default MCP facade and bounded repository operations that do not depend on Bash helpers.
|
|
43
|
+
- **macOS:** launchd user service.
|
|
44
|
+
- **Linux / WSL2 with user systemd:** `systemd --user` service with restart-on-failure.
|
|
45
|
+
- **Linux without user systemd:** explicit portable detached-session fallback with a persistence warning.
|
|
46
|
+
- **Native Windows:** portable user-process mode is preview. Forge does not currently claim automatic reboot persistence there.
|
|
44
47
|
|
|
45
|
-
The
|
|
48
|
+
The source-oriented `forge runtime service install --repo ...` immutable-release command and Standalone Recovery remain advanced maintainer operations. They are not normal installation prerequisites.
|
|
46
49
|
|
|
47
|
-
|
|
48
|
-
- the full source-release Bash gate;
|
|
49
|
-
- automatic CodeGraph configuration;
|
|
50
|
-
- every external agent CLI and tunnel combination.
|
|
50
|
+
## Remote ChatGPT/MCP connection providers
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
Forge keeps its MCP listener on loopback. A remote controller chooses one of these explicit connection methods:
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
| Provider | Inbound public exposure | Typical use |
|
|
55
|
+
| --- | --- | --- |
|
|
56
|
+
| OpenAI Secure MCP Tunnel | No | Preferred for ChatGPT/OpenAI-hosted clients when the organization has tunnel permission. Uses official `tunnel-client`; Forge stores only the non-secret tunnel ID. |
|
|
57
|
+
| Cloudflare Tunnel | Yes / internet-reachable HTTPS | Stable named HTTPS endpoint when the user manages Cloudflare account/domain. |
|
|
58
|
+
| Tailscale Funnel | Yes / internet-reachable HTTPS | Convenient when the user already operates a compatible Tailscale setup. |
|
|
59
|
+
| Existing HTTPS `/mcp` | Depends on user infrastructure | Reverse proxy or tunnel already owned by the user. |
|
|
60
|
+
| None | No | Local controller only, or remote connectivity configured later. |
|
|
61
|
+
|
|
62
|
+
Setup detects the OS and available provider CLI. It does not assume Homebrew or macOS. Third-party authentication remains explicit and is never completed with credentials pasted into Forge setup.
|
|
55
63
|
|
|
56
|
-
|
|
64
|
+
## Native Windows scope
|
|
57
65
|
|
|
58
|
-
The
|
|
66
|
+
The native PowerShell path is release-tested for installer/CLI loading, doctor, setup/profile persistence, repository registry operations, Windows path/process behavior, and portable Node tests. Shell-heavy repository migration, every browser/provider integration, and persistent Windows service ownership remain outside the full-support claim; use WSL2 when those workflows are required.
|
|
59
67
|
|
|
60
68
|
## Verification boundary
|
|
61
69
|
|
|
62
|
-
The repository
|
|
70
|
+
The repository has platform/public-doc checks and a Windows smoke workflow. A platform claim means its named path is tested; it does not imply that every optional third-party provider is installed or available on every machine.
|