thehood 0.1.0-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CODE_OF_CONDUCT.md +21 -0
- package/CONTRIBUTING.md +58 -0
- package/LICENSE +21 -0
- package/PRIVACY.md +49 -0
- package/README.md +264 -0
- package/SECURITY.md +31 -0
- package/dist/bridges/chatgptWebBridge.d.ts +2 -0
- package/dist/bridges/chatgptWebBridge.js +981 -0
- package/dist/bridges/chatgptWebBridge.js.map +1 -0
- package/dist/cli/args.d.ts +9 -0
- package/dist/cli/args.js +82 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/format.d.ts +56 -0
- package/dist/cli/format.js +752 -0
- package/dist/cli/format.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.js +996 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/mcpConfig.d.ts +36 -0
- package/dist/cli/mcpConfig.js +98 -0
- package/dist/cli/mcpConfig.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/protocol.d.ts +44 -0
- package/dist/mcp/protocol.js +33 -0
- package/dist/mcp/protocol.js.map +1 -0
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +106 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +10 -0
- package/dist/mcp/tools.js +2200 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/validation.d.ts +8 -0
- package/dist/mcp/validation.js +67 -0
- package/dist/mcp/validation.js.map +1 -0
- package/dist/providers/chatgptWeb.d.ts +2 -0
- package/dist/providers/chatgptWeb.js +26 -0
- package/dist/providers/chatgptWeb.js.map +1 -0
- package/dist/providers/claudeCode.d.ts +4 -0
- package/dist/providers/claudeCode.js +32 -0
- package/dist/providers/claudeCode.js.map +1 -0
- package/dist/providers/codexCli.d.ts +6 -0
- package/dist/providers/codexCli.js +25 -0
- package/dist/providers/codexCli.js.map +1 -0
- package/dist/providers/codexCliModels.d.ts +23 -0
- package/dist/providers/codexCliModels.js +147 -0
- package/dist/providers/codexCliModels.js.map +1 -0
- package/dist/providers/localCommand.d.ts +26 -0
- package/dist/providers/localCommand.js +614 -0
- package/dist/providers/localCommand.js.map +1 -0
- package/dist/providers/markdownPayload.d.ts +7 -0
- package/dist/providers/markdownPayload.js +29 -0
- package/dist/providers/markdownPayload.js.map +1 -0
- package/dist/providers/responseSchema.d.ts +3 -0
- package/dist/providers/responseSchema.js +187 -0
- package/dist/providers/responseSchema.js.map +1 -0
- package/dist/providers/router.d.ts +3 -0
- package/dist/providers/router.js +21 -0
- package/dist/providers/router.js.map +1 -0
- package/dist/providers/stub.d.ts +2 -0
- package/dist/providers/stub.js +177 -0
- package/dist/providers/stub.js.map +1 -0
- package/dist/providers/types.d.ts +37 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/runtime/agentBoard.d.ts +79 -0
- package/dist/runtime/agentBoard.js +166 -0
- package/dist/runtime/agentBoard.js.map +1 -0
- package/dist/runtime/agentBoardArtifact.d.ts +9 -0
- package/dist/runtime/agentBoardArtifact.js +171 -0
- package/dist/runtime/agentBoardArtifact.js.map +1 -0
- package/dist/runtime/agentRunner.d.ts +17 -0
- package/dist/runtime/agentRunner.js +92 -0
- package/dist/runtime/agentRunner.js.map +1 -0
- package/dist/runtime/approvalInbox.d.ts +54 -0
- package/dist/runtime/approvalInbox.js +143 -0
- package/dist/runtime/approvalInbox.js.map +1 -0
- package/dist/runtime/approvalPolicy.d.ts +11 -0
- package/dist/runtime/approvalPolicy.js +58 -0
- package/dist/runtime/approvalPolicy.js.map +1 -0
- package/dist/runtime/artifacts.d.ts +23 -0
- package/dist/runtime/artifacts.js +48 -0
- package/dist/runtime/artifacts.js.map +1 -0
- package/dist/runtime/browserManager.d.ts +37 -0
- package/dist/runtime/browserManager.js +356 -0
- package/dist/runtime/browserManager.js.map +1 -0
- package/dist/runtime/canonicalMemory.d.ts +23 -0
- package/dist/runtime/canonicalMemory.js +134 -0
- package/dist/runtime/canonicalMemory.js.map +1 -0
- package/dist/runtime/chatGptPageReadiness.d.ts +16 -0
- package/dist/runtime/chatGptPageReadiness.js +74 -0
- package/dist/runtime/chatGptPageReadiness.js.map +1 -0
- package/dist/runtime/commandRunner.d.ts +18 -0
- package/dist/runtime/commandRunner.js +115 -0
- package/dist/runtime/commandRunner.js.map +1 -0
- package/dist/runtime/commandSafety.d.ts +7 -0
- package/dist/runtime/commandSafety.js +61 -0
- package/dist/runtime/commandSafety.js.map +1 -0
- package/dist/runtime/config.d.ts +10 -0
- package/dist/runtime/config.js +107 -0
- package/dist/runtime/config.js.map +1 -0
- package/dist/runtime/crewLanes.d.ts +2 -0
- package/dist/runtime/crewLanes.js +123 -0
- package/dist/runtime/crewLanes.js.map +1 -0
- package/dist/runtime/criticPolicy.d.ts +17 -0
- package/dist/runtime/criticPolicy.js +50 -0
- package/dist/runtime/criticPolicy.js.map +1 -0
- package/dist/runtime/defaults.d.ts +5 -0
- package/dist/runtime/defaults.js +100 -0
- package/dist/runtime/defaults.js.map +1 -0
- package/dist/runtime/directives.d.ts +3 -0
- package/dist/runtime/directives.js +218 -0
- package/dist/runtime/directives.js.map +1 -0
- package/dist/runtime/doctor.d.ts +36 -0
- package/dist/runtime/doctor.js +185 -0
- package/dist/runtime/doctor.js.map +1 -0
- package/dist/runtime/errors.d.ts +20 -0
- package/dist/runtime/errors.js +41 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/externalTransfer.d.ts +20 -0
- package/dist/runtime/externalTransfer.js +156 -0
- package/dist/runtime/externalTransfer.js.map +1 -0
- package/dist/runtime/fanout.d.ts +64 -0
- package/dist/runtime/fanout.js +263 -0
- package/dist/runtime/fanout.js.map +1 -0
- package/dist/runtime/gitEvidence.d.ts +10 -0
- package/dist/runtime/gitEvidence.js +80 -0
- package/dist/runtime/gitEvidence.js.map +1 -0
- package/dist/runtime/handoffs.d.ts +32 -0
- package/dist/runtime/handoffs.js +100 -0
- package/dist/runtime/handoffs.js.map +1 -0
- package/dist/runtime/ids.d.ts +2 -0
- package/dist/runtime/ids.js +4 -0
- package/dist/runtime/ids.js.map +1 -0
- package/dist/runtime/localStateIgnore.d.ts +9 -0
- package/dist/runtime/localStateIgnore.js +98 -0
- package/dist/runtime/localStateIgnore.js.map +1 -0
- package/dist/runtime/loop.d.ts +14 -0
- package/dist/runtime/loop.js +1863 -0
- package/dist/runtime/loop.js.map +1 -0
- package/dist/runtime/loopRecommendation.d.ts +109 -0
- package/dist/runtime/loopRecommendation.js +566 -0
- package/dist/runtime/loopRecommendation.js.map +1 -0
- package/dist/runtime/loopResponsibilities.d.ts +2 -0
- package/dist/runtime/loopResponsibilities.js +395 -0
- package/dist/runtime/loopResponsibilities.js.map +1 -0
- package/dist/runtime/loopRunner.d.ts +28 -0
- package/dist/runtime/loopRunner.js +81 -0
- package/dist/runtime/loopRunner.js.map +1 -0
- package/dist/runtime/operatorNextActions.d.ts +2 -0
- package/dist/runtime/operatorNextActions.js +344 -0
- package/dist/runtime/operatorNextActions.js.map +1 -0
- package/dist/runtime/paths.d.ts +9 -0
- package/dist/runtime/paths.js +14 -0
- package/dist/runtime/paths.js.map +1 -0
- package/dist/runtime/permissions.d.ts +9 -0
- package/dist/runtime/permissions.js +73 -0
- package/dist/runtime/permissions.js.map +1 -0
- package/dist/runtime/progressPacket.d.ts +12 -0
- package/dist/runtime/progressPacket.js +512 -0
- package/dist/runtime/progressPacket.js.map +1 -0
- package/dist/runtime/protectedPaths.d.ts +6 -0
- package/dist/runtime/protectedPaths.js +48 -0
- package/dist/runtime/protectedPaths.js.map +1 -0
- package/dist/runtime/providers.d.ts +13 -0
- package/dist/runtime/providers.js +60 -0
- package/dist/runtime/providers.js.map +1 -0
- package/dist/runtime/reconciliation.d.ts +17 -0
- package/dist/runtime/reconciliation.js +283 -0
- package/dist/runtime/reconciliation.js.map +1 -0
- package/dist/runtime/redaction.d.ts +1 -0
- package/dist/runtime/redaction.js +5 -0
- package/dist/runtime/redaction.js.map +1 -0
- package/dist/runtime/remoteRepoContext.d.ts +77 -0
- package/dist/runtime/remoteRepoContext.js +316 -0
- package/dist/runtime/remoteRepoContext.js.map +1 -0
- package/dist/runtime/repoContext.d.ts +50 -0
- package/dist/runtime/repoContext.js +399 -0
- package/dist/runtime/repoContext.js.map +1 -0
- package/dist/runtime/repoGateway.d.ts +64 -0
- package/dist/runtime/repoGateway.js +308 -0
- package/dist/runtime/repoGateway.js.map +1 -0
- package/dist/runtime/responseContracts.d.ts +3 -0
- package/dist/runtime/responseContracts.js +86 -0
- package/dist/runtime/responseContracts.js.map +1 -0
- package/dist/runtime/reviewLanes.d.ts +2 -0
- package/dist/runtime/reviewLanes.js +343 -0
- package/dist/runtime/reviewLanes.js.map +1 -0
- package/dist/runtime/reviewRouting.d.ts +51 -0
- package/dist/runtime/reviewRouting.js +152 -0
- package/dist/runtime/reviewRouting.js.map +1 -0
- package/dist/runtime/revisionPacket.d.ts +38 -0
- package/dist/runtime/revisionPacket.js +144 -0
- package/dist/runtime/revisionPacket.js.map +1 -0
- package/dist/runtime/revisionTrail.d.ts +2 -0
- package/dist/runtime/revisionTrail.js +162 -0
- package/dist/runtime/revisionTrail.js.map +1 -0
- package/dist/runtime/role-assignment.d.ts +4 -0
- package/dist/runtime/role-assignment.js +21 -0
- package/dist/runtime/role-assignment.js.map +1 -0
- package/dist/runtime/roleRoster.d.ts +28 -0
- package/dist/runtime/roleRoster.js +96 -0
- package/dist/runtime/roleRoster.js.map +1 -0
- package/dist/runtime/runInsights.d.ts +121 -0
- package/dist/runtime/runInsights.js +305 -0
- package/dist/runtime/runInsights.js.map +1 -0
- package/dist/runtime/runMonitor.d.ts +33 -0
- package/dist/runtime/runMonitor.js +143 -0
- package/dist/runtime/runMonitor.js.map +1 -0
- package/dist/runtime/runtime.d.ts +15 -0
- package/dist/runtime/runtime.js +199 -0
- package/dist/runtime/runtime.js.map +1 -0
- package/dist/runtime/runtimeInfo.d.ts +9 -0
- package/dist/runtime/runtimeInfo.js +76 -0
- package/dist/runtime/runtimeInfo.js.map +1 -0
- package/dist/runtime/store.d.ts +4 -0
- package/dist/runtime/store.js +48 -0
- package/dist/runtime/store.js.map +1 -0
- package/dist/runtime/summons.d.ts +25 -0
- package/dist/runtime/summons.js +403 -0
- package/dist/runtime/summons.js.map +1 -0
- package/dist/runtime/teamPresets.d.ts +14 -0
- package/dist/runtime/teamPresets.js +153 -0
- package/dist/runtime/teamPresets.js.map +1 -0
- package/dist/runtime/types.d.ts +505 -0
- package/dist/runtime/types.js +28 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/validationCommands.d.ts +18 -0
- package/dist/runtime/validationCommands.js +106 -0
- package/dist/runtime/validationCommands.js.map +1 -0
- package/dist/tui/dashboard.d.ts +41 -0
- package/dist/tui/dashboard.js +1115 -0
- package/dist/tui/dashboard.js.map +1 -0
- package/docs/ARCHITECTURE.md +277 -0
- package/docs/CLI_SPEC.md +396 -0
- package/docs/CODEX_SETUP.md +288 -0
- package/docs/COMPLETION_CONTRACT.md +52 -0
- package/docs/CONTRIBUTOR_GUIDE.md +70 -0
- package/docs/DEMO.md +62 -0
- package/docs/GLOSSARY.md +46 -0
- package/docs/GOAL_LOOP_SCHEDULE.md +50 -0
- package/docs/KNOWN_LIMITATIONS.md +29 -0
- package/docs/LICENSING.md +21 -0
- package/docs/LOOP_RECIPES.md +290 -0
- package/docs/LOOP_SELECTION_UX.md +118 -0
- package/docs/MCP_SPEC.md +689 -0
- package/docs/MEMORY_AND_RECONCILIATION.md +222 -0
- package/docs/NPM_PUBLISHING.md +51 -0
- package/docs/OPEN_DECISIONS.md +81 -0
- package/docs/PROMPT_SCHEMAS.md +411 -0
- package/docs/PROVIDER_ADAPTERS.md +323 -0
- package/docs/PROVIDER_MATRIX.md +21 -0
- package/docs/PUBLIC_REPO_READINESS.md +49 -0
- package/docs/RESEARCH_NOTES.md +92 -0
- package/docs/ROADMAP.md +94 -0
- package/docs/ROLE_CONTRACTS.md +252 -0
- package/docs/RUNTIME_LOOP.md +240 -0
- package/docs/SECURITY_AND_PRIVACY.md +161 -0
- package/docs/TESTING_AND_VERIFICATION.md +180 -0
- package/docs/TRUST_MODEL.md +65 -0
- package/docs/decisions/0001-runtime-first-cli-and-mcp.md +23 -0
- package/docs/decisions/0002-provider-neutral-role-mapping.md +43 -0
- package/docs/decisions/0003-separate-implementation-and-verification.md +27 -0
- package/docs/product/README.md +14 -0
- package/docs/product/model-selection.md +88 -0
- package/docs/product/positioning.md +37 -0
- package/docs/product/pro-usage-modes.md +70 -0
- package/docs/product/roadmap.md +57 -0
- package/docs/product/role-policy.md +89 -0
- package/docs/product/runtime-invariants.md +44 -0
- package/docs/release/v0.1.0-preview.0.md +48 -0
- package/examples/stub-demo/README.md +25 -0
- package/package.json +55 -0
package/docs/CLI_SPEC.md
ADDED
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
# CLI Spec
|
|
2
|
+
|
|
3
|
+
The CLI is TheHood's first control surface. It should be complete enough to run headless without Codex or the macOS menubar app.
|
|
4
|
+
|
|
5
|
+
The working command name is `thehood`.
|
|
6
|
+
|
|
7
|
+
## Commands
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
thehood init
|
|
11
|
+
thehood setup
|
|
12
|
+
thehood config show
|
|
13
|
+
thehood config set max-iterations 8
|
|
14
|
+
thehood config set fanout-max-items 4
|
|
15
|
+
thehood models
|
|
16
|
+
thehood providers
|
|
17
|
+
thehood doctor
|
|
18
|
+
thehood roster
|
|
19
|
+
thehood agent-board
|
|
20
|
+
thehood agent-board --artifact --json
|
|
21
|
+
thehood teams
|
|
22
|
+
thehood teams apply pro-orchestrator
|
|
23
|
+
thehood teams apply claude-second-judge
|
|
24
|
+
thehood teams apply spark-plus-sonnet
|
|
25
|
+
thehood teams apply claude-builder
|
|
26
|
+
thehood teams apply pro-claude-high-assurance
|
|
27
|
+
thehood roles
|
|
28
|
+
thehood roles set orchestrator codex-cli:default
|
|
29
|
+
thehood roles set orchestrator chatgpt-web:chatgpt-pro
|
|
30
|
+
thehood roles set implementer claude-code:sonnet
|
|
31
|
+
thehood roles set verifier claude-code:sonnet
|
|
32
|
+
thehood roles set critic claude-code:fable
|
|
33
|
+
thehood recommend-loop "Fix flaky checkout tests" --repo . --max-iterations 5
|
|
34
|
+
thehood recommend-loop "Prepare public release" --repo . --acceptance "README claims match implemented behavior" --validation "npm run smoke:mcp" --allowed-path README.md --forbidden-change "Do not publish private run logs"
|
|
35
|
+
thehood goal "Prepare release metadata" --repo . --max-iterations 5
|
|
36
|
+
thehood run "Implement the requested change" --repo .
|
|
37
|
+
thehood run "Implement the requested change" --repo . --loop
|
|
38
|
+
thehood plan "Design the feature" --repo .
|
|
39
|
+
thehood plan "Design the feature" --repo . --loop
|
|
40
|
+
thehood status
|
|
41
|
+
thehood status <run-id>
|
|
42
|
+
thehood agent-board <run-id>
|
|
43
|
+
thehood agent-board <run-id> --artifact --json
|
|
44
|
+
thehood logs <run-id>
|
|
45
|
+
thehood artifact <run-id> <artifact-ref>
|
|
46
|
+
thehood evidence <run-id>
|
|
47
|
+
thehood exec <run-id> -- npm run build
|
|
48
|
+
thehood diff <run-id>
|
|
49
|
+
thehood approve <run-id>
|
|
50
|
+
thehood reject <run-id>
|
|
51
|
+
thehood revise <run-id>
|
|
52
|
+
thehood approvals policy show
|
|
53
|
+
thehood approvals policy set mode autopilot
|
|
54
|
+
thehood approvals policy set external-transfers auto-low-risk
|
|
55
|
+
thehood continue <run-id>
|
|
56
|
+
thehood loop <run-id>
|
|
57
|
+
thehood reconcile <run-id>
|
|
58
|
+
thehood summon <run-id> --role qa --agent codex-cli:spark --brief "Look for missed cases"
|
|
59
|
+
thehood fanout <run-id> --items-json '[{"role":"qa","agent":"stub:qa","brief":"Look for missed cases"}]'
|
|
60
|
+
thehood abort <run-id>
|
|
61
|
+
thehood mcp
|
|
62
|
+
thehood mcp config
|
|
63
|
+
thehood mcp config --chatgpt-web
|
|
64
|
+
thehood mcp tunnel --tunnel-id <tunnel-id>
|
|
65
|
+
thehood browser start
|
|
66
|
+
thehood browser status
|
|
67
|
+
thehood browser stop
|
|
68
|
+
thehood ui
|
|
69
|
+
thehood ui approvals
|
|
70
|
+
thehood ui settings
|
|
71
|
+
thehood ui settings crew
|
|
72
|
+
thehood ui settings commands
|
|
73
|
+
thehood approvals policy set mode autopilot
|
|
74
|
+
thehood approvals policy set external-transfers auto-low-risk
|
|
75
|
+
thehood config set max-iterations 8
|
|
76
|
+
thehood config set fanout-max-items 4
|
|
77
|
+
thehood teams apply codex-default
|
|
78
|
+
thehood roles set qa codex-cli:spark
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Run Modes
|
|
82
|
+
|
|
83
|
+
| Mode | Behavior |
|
|
84
|
+
| --- | --- |
|
|
85
|
+
| `plan` | Read-only planning and decomposition |
|
|
86
|
+
| `research` | Read-only exploration and findings |
|
|
87
|
+
| `implement` | Scoped edits after approval policy allows them |
|
|
88
|
+
| `review` | Independent diff or repo review |
|
|
89
|
+
|
|
90
|
+
## Goal Surface
|
|
91
|
+
|
|
92
|
+
`thehood goal "<goal>" --repo . --max-iterations 5` creates a normal bounded implementation run and immediately drives the existing headless loop. It is a product-facing alias over `run` plus `loop`, not a scheduler.
|
|
93
|
+
|
|
94
|
+
`--max-iterations` applies only to the created run. It does not change repo config defaults and does not create timer loops, background daemons, cloud queues, or new approval behavior.
|
|
95
|
+
|
|
96
|
+
## Loop Recommendation
|
|
97
|
+
|
|
98
|
+
`thehood recommend-loop "<goal>" --repo . --max-iterations 5` is a read-only loop router. It recommends one public loop recipe, returns a recommended stack, drafts a completion contract, shows alternatives, and returns the MCP/Codex `runAction` shape for the existing runtime path.
|
|
99
|
+
|
|
100
|
+
Recommendation does not start a run, call model providers, edit files, create schedules, approve gates, or send context externally. It is meant to answer "which loop shape fits this outcome?" before `thehood goal` or `thehood_orchestrate` starts the governed runtime loop.
|
|
101
|
+
|
|
102
|
+
The draft contract can be edited before a run starts with repeatable `--acceptance`, `--validation`, `--allowed-path`, and `--forbidden-change` flags. These options update only the recommendation output and returned runtime constraints; they do not grant permissions or bypass runtime approvals.
|
|
103
|
+
|
|
104
|
+
## Role Selection
|
|
105
|
+
|
|
106
|
+
Role mapping can be set globally, per repo, or per run.
|
|
107
|
+
|
|
108
|
+
`thehood roster --repo .` prints the full agent roster: display lane labels such as `Agent 1 / Orchestrator` and `Agent 2 / Implementer`, provider:model owner, whether the assignment is the product default or repo config, readiness issues from `doctor`, role purpose, and read/edit/shell/network authority. `--json` returns the same roster as structured data so Codex, MCP clients, and future app surfaces can render the same source of truth.
|
|
109
|
+
|
|
110
|
+
`thehood agent-board [run-id] --repo .` prints a runtime-derived agent board for Codex card-style visibility. Without a run id, the board is a repo-scope view over the configured roster and health. With a run id, each card can include the current crew/review/responsibility lane, blocking state, sidecar status, and bounded artifact/event/handoff refs for that run. Add `--artifact --json` to return `{ "board": ..., "artifact": ... }`, where `artifact` is a bounded dashboard manifest and snapshot suitable for Codex app artifact rendering. The board and dashboard payload are display guidance only: they do not grant tools, schedule agents, satisfy gates, or approve work.
|
|
111
|
+
|
|
112
|
+
`thehood teams --repo .` lists runtime-owned role presets. `thehood teams apply codex-default|pro-orchestrator|claude-critic|claude-second-judge|spark-plus-sonnet|claude-builder|pro-claude-high-assurance --repo .` writes that preset into repo config through the same role invariants as manual role assignment. Presets are convenience maps, not new authority: provider readiness, invocation approvals, transfer gates, and verifier separation still apply.
|
|
113
|
+
|
|
114
|
+
Codex is the product default:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
thehood roles set orchestrator codex-cli:default --repo .
|
|
118
|
+
thehood roles set implementer codex-cli:default --repo .
|
|
119
|
+
thehood roles set qa codex-cli:spark --repo .
|
|
120
|
+
thehood roles set verifier codex-cli:spark --repo .
|
|
121
|
+
thehood roles set critic codex-cli:spark --repo .
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Users can tune every role, including orchestrator. The Codex CLI adapter discovers the current catalog with `codex debug models`; for example, `codex-cli:gpt-5.5` can be used when that slug is available in the user's Codex CLI. Claude Code and ChatGPT Web support configured/custom model passthrough, so users can choose aliases such as `claude-code:sonnet`, `claude-code:fable`, `claude-code:mythos`, or `chatgpt-web:configured` when those models are available through the user's local provider setup.
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
thehood run "Add export flow" \
|
|
128
|
+
--repo . \
|
|
129
|
+
--orchestrator chatgpt-web:chatgpt-pro \
|
|
130
|
+
--planner codex-cli:default \
|
|
131
|
+
--researcher codex-cli:default \
|
|
132
|
+
--implementer codex-cli:default \
|
|
133
|
+
--qa codex-cli:spark \
|
|
134
|
+
--verifier codex-cli:spark \
|
|
135
|
+
--critic claude-code:sonnet
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Deterministic local loop smoke:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
thehood run "Exercise the loop" \
|
|
142
|
+
--repo . \
|
|
143
|
+
--orchestrator stub:orchestrator \
|
|
144
|
+
--implementer stub:implementer \
|
|
145
|
+
--qa stub:qa \
|
|
146
|
+
--verifier stub:verifier \
|
|
147
|
+
--critic stub:critic
|
|
148
|
+
|
|
149
|
+
thehood approve <run-id>
|
|
150
|
+
thehood continue <run-id>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Config File
|
|
154
|
+
|
|
155
|
+
The current implementation uses `.thehood/config.json` to avoid adding a YAML parser before the runtime is stable.
|
|
156
|
+
|
|
157
|
+
TheHood may also create `.thehood/runs` and `.thehood/artifacts` when a plan, run, orchestration, validation, or provider call records evidence. In git checkouts, TheHood automatically adds `.thehood/` and `.thehood-browser.json` to `.git/info/exclude` before writing repo-local runtime state. This keeps local evidence out of normal `git status` without mutating the repo's committed `.gitignore`. Users can delete `.thehood/` to clear local run history.
|
|
158
|
+
|
|
159
|
+
Initial config shape:
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{
|
|
163
|
+
"version": 1,
|
|
164
|
+
"defaults": {
|
|
165
|
+
"maxIterations": 8,
|
|
166
|
+
"fanoutMaxItems": 8,
|
|
167
|
+
"editRequiresApproval": true,
|
|
168
|
+
"dependencyInstallRequiresApproval": true,
|
|
169
|
+
"networkRequiresApproval": true,
|
|
170
|
+
"protectedTestPaths": [
|
|
171
|
+
"**/test/**",
|
|
172
|
+
"**/tests/**",
|
|
173
|
+
"**/*.spec.*",
|
|
174
|
+
"**/*.test.*",
|
|
175
|
+
"**/__snapshots__/**",
|
|
176
|
+
"**/fixtures/**",
|
|
177
|
+
"**/evals/**"
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
"providers": {
|
|
181
|
+
"chatgpt-web": {
|
|
182
|
+
"enabled": true,
|
|
183
|
+
"models": ["chatgpt-pro", "configured"],
|
|
184
|
+
"accessModes": ["agent-bridge", "mcp-connector"],
|
|
185
|
+
"defaultAccessMode": "agent-bridge",
|
|
186
|
+
"browserProfile": "default"
|
|
187
|
+
},
|
|
188
|
+
"openai-api": {
|
|
189
|
+
"enabled": false,
|
|
190
|
+
"models": ["configured"],
|
|
191
|
+
"accessModes": ["api-agent"],
|
|
192
|
+
"defaultAccessMode": "api-agent",
|
|
193
|
+
"apiKeyEnv": "OPENAI_API_KEY"
|
|
194
|
+
},
|
|
195
|
+
"anthropic-api": {
|
|
196
|
+
"enabled": false,
|
|
197
|
+
"models": ["configured", "claude-opus", "claude-sonnet", "claude-haiku", "opus", "sonnet", "haiku", "mythos", "fable"],
|
|
198
|
+
"accessModes": ["api-agent"],
|
|
199
|
+
"defaultAccessMode": "api-agent",
|
|
200
|
+
"apiKeyEnv": "ANTHROPIC_API_KEY"
|
|
201
|
+
},
|
|
202
|
+
"codex-cli": {
|
|
203
|
+
"enabled": true,
|
|
204
|
+
"models": ["default", "spark", "configured"],
|
|
205
|
+
"accessModes": ["agent-bridge"],
|
|
206
|
+
"defaultAccessMode": "agent-bridge"
|
|
207
|
+
},
|
|
208
|
+
"claude-code": {
|
|
209
|
+
"enabled": true,
|
|
210
|
+
"models": ["default", "configured", "sonnet", "opus", "haiku", "mythos", "fable"],
|
|
211
|
+
"accessModes": ["agent-bridge"],
|
|
212
|
+
"defaultAccessMode": "agent-bridge"
|
|
213
|
+
},
|
|
214
|
+
"stub": {
|
|
215
|
+
"enabled": true,
|
|
216
|
+
"models": ["orchestrator", "planner", "researcher", "implementer", "qa", "verifier", "critic"],
|
|
217
|
+
"accessModes": ["agent-bridge"],
|
|
218
|
+
"defaultAccessMode": "agent-bridge"
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"roles": {
|
|
222
|
+
"orchestrator": {
|
|
223
|
+
"provider": "codex-cli",
|
|
224
|
+
"model": "default"
|
|
225
|
+
},
|
|
226
|
+
"implementer": {
|
|
227
|
+
"provider": "codex-cli",
|
|
228
|
+
"model": "default"
|
|
229
|
+
},
|
|
230
|
+
"qa": {
|
|
231
|
+
"provider": "codex-cli",
|
|
232
|
+
"model": "spark"
|
|
233
|
+
},
|
|
234
|
+
"verifier": {
|
|
235
|
+
"provider": "codex-cli",
|
|
236
|
+
"model": "spark"
|
|
237
|
+
},
|
|
238
|
+
"critic": {
|
|
239
|
+
"provider": "codex-cli",
|
|
240
|
+
"model": "spark"
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
`thehood config set max-iterations <n>` updates the provider-call budget used when new runs are created. `thehood config set fanout-max-items <n>` updates the repo-local fan-out policy cap. The runtime hard cap for fan-out remains 8 items; users can lower the repo cap for cost or latency control.
|
|
247
|
+
|
|
248
|
+
## Setup Helper
|
|
249
|
+
|
|
250
|
+
`thehood setup --repo .` is a read-only launcher report. It prints the correct local-build command, a temporary shell alias, optional `npm link` and future package install commands, MCP config commands, and local/installed TUI launch commands. It does not install, link, mutate shell profiles, or change runtime config.
|
|
251
|
+
|
|
252
|
+
Use it when a local checkout works through `node dist/cli/main.js ...` but `thehood` is not on the shell `PATH` yet.
|
|
253
|
+
|
|
254
|
+
## Exit Codes
|
|
255
|
+
|
|
256
|
+
| Code | Meaning |
|
|
257
|
+
| --- | --- |
|
|
258
|
+
| `0` | Success |
|
|
259
|
+
| `1` | General failure |
|
|
260
|
+
| `2` | Invalid user input |
|
|
261
|
+
| `3` | Approval required |
|
|
262
|
+
| `4` | Provider unavailable |
|
|
263
|
+
| `5` | Verification failed |
|
|
264
|
+
| `6` | Permission denied |
|
|
265
|
+
| `7` | Schema validation failed |
|
|
266
|
+
|
|
267
|
+
## Output Modes
|
|
268
|
+
|
|
269
|
+
The CLI should support:
|
|
270
|
+
|
|
271
|
+
- human-readable output by default
|
|
272
|
+
- `--json` for automation
|
|
273
|
+
- `--quiet` for scripts
|
|
274
|
+
- `--verbose` for debugging
|
|
275
|
+
|
|
276
|
+
## Runtime Evidence Commands
|
|
277
|
+
|
|
278
|
+
`thehood evidence <run-id>` captures runtime-owned evidence:
|
|
279
|
+
|
|
280
|
+
- `git status --short --untracked-files=all`
|
|
281
|
+
- `git diff --no-ext-diff`
|
|
282
|
+
- protected path matches from configured test, fixture, snapshot, and eval patterns
|
|
283
|
+
|
|
284
|
+
TheHood excludes its own `.thehood` runtime directory from this evidence.
|
|
285
|
+
|
|
286
|
+
`thehood artifact <run-id> <artifact-ref>` reads a bounded artifact that is already attached to the run. It uses the same safety boundary as `thehood_read_artifact`: refs must stay inside that run's artifact directory and must already be recorded on the run.
|
|
287
|
+
|
|
288
|
+
`thehood status <run-id>` includes runtime-owned status plus insights from attached artifacts: the latest schema-valid agent response, its primary output such as `decision`, a bounded preview of any provider `markdown` payload, the final report artifact when present, latest progress packet, reconciliation, repo context, remote repo context, local provider execution, review routing, critic trigger, revision packet, fan-out, and transfer manifest refs when present, derived revision trails, derived crew lanes, derived review ownership lanes, bounded loop responsibility schedules, bounded operator next actions, a bounded handoff timeline, and a structured `agentBoard` snapshot for Codex app/card rendering. JSON output preserves the existing run fields, including the full `handoffs` array, and adds an `insights` object with `revisionTrail`, `crewLanes`, `reviewLanes`, `loopResponsibilities`, `operatorNextActions`, `latestHandoff`, `handoffTimeline`, `latestRemoteRepoContext`, `latestProviderExecution`, `recentProviderExecutions`, `latestReviewRouting`, `latestCriticTrigger`, `latestRevisionPacket`, `latestFanout`, and bounded refs-only `canonicalMemory`. Provider execution insights include only role, provider/model, command, args, workspace mode, sandbox or permission mode, exit code, timeout state, parse status, duration, and artifact ref. Review routing includes the latest risk tier, selected next action, required lanes, compact signals, reasons, and artifact ref only. Revision trails link each revision packet to delegation, repair response, post-repair validation, review responses, and completion refs when present. Crew lanes include role/runtime owner, authority, required/advisory state, whether the lane satisfies required gates, compact summaries, and artifact/event/handoff refs only. Review lanes include owner assignment, required/optional state, whether the lane satisfies required gates, compact summaries, and artifact/event refs only. Loop responsibilities include planner/orchestrator, implementer, verifier, runtime QA/validation, model-assisted QA tester, critic, reconciliation, integration, operator approval, and completion ownership as runtime-derived refs-only display guidance. Operator next actions include the suggested action, owner, blocking/required state, compact reason, optional CLI/MCP hints, and artifact/event refs only; they are display guidance, not enforcement. Full provider markdown remains in the response artifact and should be read with `thehood artifact` when needed.
|
|
289
|
+
|
|
290
|
+
`thehood logs <run-id>` prints stored runtime events and a bounded `handoffs` section. Handoff labels such as `Agent 1 / Orchestrator` and `Agent 2 / Implementer` are derived from runtime roles and provider assignments; they are display lanes, not policy grants.
|
|
291
|
+
|
|
292
|
+
`thehood diff <run-id>` reads the latest attached `diff` artifact for a run. This is mainly useful for reviewing isolated worker patches before approval.
|
|
293
|
+
|
|
294
|
+
`thehood exec <run-id> -- <command> [args...]` runs a deterministic command without a shell and stores stdout/stderr as artifacts. Risky commands such as destructive git operations, dependency installs, and network commands require `--allow-risky`.
|
|
295
|
+
|
|
296
|
+
`thehood plan ... --loop` and `thehood run ... --loop` create the run and immediately pass it to the same headless loop runner. The default without `--loop` remains create-only, so callers can still inspect or approve the starting boundary before provider invocation.
|
|
297
|
+
|
|
298
|
+
`thehood continue <run-id>` advances the runtime loop until it reaches a terminal state, a gate, or its internal step cap. When no manual approval gate is active, continuing is the normal autopilot-aware path: runtime policy may auto-approve bounded provider invocation and non-secret transfer-manifest gates and records those decisions as `approval_auto_approved` events. With `stub` roles, an approved implement run advances through orchestrator, implementer, git evidence capture, QA, optional critic, revision packet repair when needed, and verifier phases without external model calls.
|
|
299
|
+
|
|
300
|
+
`thehood loop <run-id> --repo .` is the headless autopilot runner. It repeatedly calls the runtime advance path until the run reaches `completed`, `failed`, or `aborted`, stops for a manual approval gate, makes no progress, or reaches the caller's cycle cap. It accepts `--max-cycles <n>` and `--max-steps <n>`; defaults are 8 cycles and 10 advance steps per cycle. It does not approve manual gates itself. In `autopilot` policy mode, the runtime may still auto-approve bounded gates and records those decisions as normal approval evidence.
|
|
301
|
+
|
|
302
|
+
`thehood reconcile <run-id>` reconciles a completed run by sending its latest `progress` artifact to the configured `planner`, or to the `orchestrator` when no planner is assigned. Browser and API providers such as `chatgpt-web`, `openai-api`, and `anthropic-api` first write a `transfer_manifest` artifact and pause at an approval gate before the progress packet is sent. After approval, the provider response is stored as a `reconciliation` artifact.
|
|
303
|
+
|
|
304
|
+
`thehood summon <run-id> --role <role> --brief <text>` attaches a read-only same-run agent call to an existing run. Summon roles are `orchestrator`, `planner`, `researcher`, `qa`, `verifier`, and `critic`; use `--kind qa|review|critique|research|plan` to label the handoff. `--agent provider:model` overrides the role assignment for that one call without changing the run's role mapping. The runtime records an `agent_summoned` event, a typed handoff, directive and response artifacts when the provider runs, redacted local-provider stdout/stderr log refs when a local command provider is used, and the usual approval gate when a model-backed provider invocation needs approval. Summon responses may appear as sidecar review ownership evidence, but they cannot satisfy required verifier or runtime QA/validation lanes.
|
|
305
|
+
|
|
306
|
+
`thehood fanout <run-id> --items-json <json-array>` runs a bounded group of same-run summons on an existing run. Each item includes `role`, `brief`, and optional `agent`, `kind`, `persona`, `constraints`, and `evidenceRefs`. The runtime hard cap is 8 items, and repo config `defaults.fanoutMaxItems` can lower the per-project policy cap. Execution is currently sequential so approval gates remain simple and auditable. If a fan-out item opens an approval gate, later items wait until that gate is handled. If a read-only advisory item returns malformed output or another contained provider failure without opening a gate, the runtime records that item as blocked or failed and continues to the remaining items. Fan-out writes a compact `fanout` artifact with item statuses, artifact refs, bounds, and a safety note that the evidence is advisory only. Fan-out responses may populate QA tester or critic sidecar lanes, but they do not satisfy required verifier, runtime QA, approval, or completion gates.
|
|
307
|
+
|
|
308
|
+
`thehood transfer preview <run-id>` reads the latest `transfer_manifest` artifact for a run without sending anything externally. The preview includes destination provider, purpose, source artifacts, byte counts, hashes, risk class, approval phrase, and a bounded content preview.
|
|
309
|
+
|
|
310
|
+
`thehood approvals policy show` prints the configured approval policy. `thehood approvals policy set mode manual|auto-low-risk|autopilot` controls the global approval posture. `manual` stops at approval gates, `auto-low-risk` allows bounded non-secret external transfers, and `autopilot` lets the runtime auto-approve bounded gates such as provider invocation, implementation start, external transfers, isolated patch application, and runtime-owned revision packet repair while still stopping for protected test changes, secret-risk transfers, destructive commands, dependency installs, dirty-checkout integration blockers, verifier `ask_user` or `abort`, unsafe critic feedback, and max-iteration failures.
|
|
311
|
+
|
|
312
|
+
`thehood approvals policy set external-transfers manual|auto-low-risk` remains available for transfer-specific policy tuning. It controls whether repo context and progress packet transfers always stop for manual approval or can be auto-approved when the manifest is bounded and does not have `secret_risk`.
|
|
313
|
+
|
|
314
|
+
For read-only `plan`, `research`, and `review` runs, direct `chatgpt-web` role calls and same-run summons can attach refs-only `remote_context` before the provider call when local git reports a clean GitHub checkout whose `HEAD` matches the tracked upstream ref and the active ChatGPT Web bridge GitHub connector surface is confirmed. An orchestrator or planner can also request `action: "delegate"` before enough repo evidence exists; the runtime applies that same confirmed GitHub connector route before falling back to local context capture. The `remote_context` artifact directs ChatGPT Web to use its GitHub connector at the exact commit. Otherwise, the runtime captures a bounded `context` artifact with deterministic filesystem reads. Browser and API providers first write a `transfer_manifest` artifact before local repo context bodies are sent back to the provider. Manual policy pauses at an approval gate; `auto-low-risk` and `autopilot` may auto-approve bounded non-secret manifests and record the approval event before sending. If the provider later delegates concrete repo paths that were not in previous context packs, the runtime captures a targeted follow-up context and applies the same transfer review policy before sending it.
|
|
315
|
+
|
|
316
|
+
When `codex-cli` or `claude-code` is selected, TheHood invokes the local CLI in non-interactive mode with a runtime-built directive and requires a normalized JSON `AgentResponse` before advancing. The JSON envelope carries mechanical fields, while plans, reports, reviews, and rationale should be returned as markdown in the role payload's `markdown` field. For read-only repo work, model-backed provider invocation pauses at an approval gate before the first provider call. After the command exits, TheHood writes redacted stdout/stderr `log` artifacts and a bounded `provider_invocation` artifact so status can show which local role command actually ran and where to inspect its output. `codex-cli` models are discovered from `codex debug models`; friendly names such as `spark` resolve against that live catalog, and `doctor` reports `model_not_available:<model>` when a custom assignment is not supported by the current CLI/account. `claude-code` model names such as `sonnet`, `fable`, and `mythos` are passthrough aliases; TheHood records them and passes explicit non-default names to the user's local Claude CLI. `configured` uses the local CLI default for Codex and Claude and is not sent as a literal model name.
|
|
317
|
+
|
|
318
|
+
OpenAI and Anthropic API provider configs include `OPENAI_API_KEY` and `ANTHROPIC_API_KEY` env names for future API adapters. Those providers are disabled and not implemented until their adapters are wired; use Codex CLI, ChatGPT Web, Claude Code, or `stub` for current runs.
|
|
319
|
+
|
|
320
|
+
## Doctor Command
|
|
321
|
+
|
|
322
|
+
`thehood doctor --repo .` reports provider and role readiness without invoking model calls.
|
|
323
|
+
|
|
324
|
+
It checks:
|
|
325
|
+
|
|
326
|
+
- runtime name, package version, and capability flags for stale-process detection
|
|
327
|
+
- whether providers are configured and enabled
|
|
328
|
+
- whether the provider adapter is implemented
|
|
329
|
+
- provider access modes such as `agent-bridge`, `api-agent`, and `mcp-connector`
|
|
330
|
+
- whether local CLI commands such as `codex` and `claude` are available on `PATH`
|
|
331
|
+
- whether the ChatGPT Web bridge command, model confirmation guard, Chrome DevTools endpoint, ChatGPT tab, authenticated page, and composer are ready when `chatgpt-web` is configured
|
|
332
|
+
- whether configured role models are listed for their providers and, for `codex-cli`, whether the live `codex debug models` catalog can resolve them
|
|
333
|
+
- provider model policy: `listed`, `discovered`, or `passthrough`
|
|
334
|
+
|
|
335
|
+
## Browser Manager Commands
|
|
336
|
+
|
|
337
|
+
`thehood browser start` launches a persistent isolated Chrome profile for ChatGPT Web at the default CDP endpoint `http://127.0.0.1:9222`. Runtime bridge calls reuse one ChatGPT target per run by default, so follow-up context and planning calls stay in the same Pro conversation unless `THEHOOD_CHATGPT_WEB_RUN_SCOPED_TARGETS=0` is set.
|
|
338
|
+
|
|
339
|
+
`thehood browser status` reports CDP reachability, profile path, ChatGPT tab presence, authenticated page readiness, composer readiness, and whether the bridge is ready.
|
|
340
|
+
|
|
341
|
+
`thehood browser stop` stops the Chrome process only when it can verify that the recorded process belongs to the TheHood-managed profile.
|
|
342
|
+
|
|
343
|
+
## TUI Command
|
|
344
|
+
|
|
345
|
+
`thehood ui --repo .` prints the branded terminal dashboard shell. It reads runtime health, role mapping, browser readiness, approval inbox, and a derived run monitor from existing runtime APIs; it does not own orchestration logic. The run monitor shows active provider waits, approval gates, transfer gates, completed runs, crew lane trails, revision trails when present, and reviewer/tester/QA/critic ownership lanes from runtime evidence.
|
|
346
|
+
|
|
347
|
+
The dashboard also includes an approval inbox. `thehood ui approvals --repo .` prints pending manual approval gates with the runtime reason, suggested approval message, related artifacts, and button-style approve/reject/revise/resume commands. It also shows recent autopilot approvals separately so operators can see what was auto-approved, why it qualified, and which artifact or transfer manifest was involved. The same inbox includes recent agent handoffs so operators can see which runtime lane handed work to the next lane or to an approval gate.
|
|
348
|
+
|
|
349
|
+
Approval actions can be triggered without retyping the required approval phrase:
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
thehood ui approvals --repo . --approve <run-id>
|
|
353
|
+
thehood ui approvals --repo . --reject <run-id>
|
|
354
|
+
thehood ui approvals --repo . --revise <run-id>
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
The TUI only calls existing runtime approval transitions; it does not decide whether an approval is safe.
|
|
358
|
+
|
|
359
|
+
`thehood ui settings --repo .` opens the compact settings cockpit. Focused pages live under the same settings surface: `thehood ui settings crew|providers|budgets|safety|browser|commands|all --repo .`.
|
|
360
|
+
|
|
361
|
+
The settings command deck prints the existing runtime-owned commands for common edits:
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
thehood approvals policy set mode manual|auto-low-risk|autopilot --repo .
|
|
365
|
+
thehood approvals policy set external-transfers manual|auto-low-risk --repo .
|
|
366
|
+
thehood config set max-iterations 8 --repo .
|
|
367
|
+
thehood config set fanout-max-items 4 --repo .
|
|
368
|
+
thehood teams apply codex-default|pro-orchestrator|claude-critic|claude-second-judge|spark-plus-sonnet|claude-builder|pro-claude-high-assurance --repo .
|
|
369
|
+
thehood roles set verifier codex-cli:spark --repo .
|
|
370
|
+
thehood browser status
|
|
371
|
+
thehood browser start
|
|
372
|
+
thehood browser stop
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
The settings UI displays and routes these controls. It does not create a new orchestration path, bypass role invariants, or weaken approval gates.
|
|
376
|
+
|
|
377
|
+
## ChatGPT MCP Tunnel Helper
|
|
378
|
+
|
|
379
|
+
`thehood mcp tunnel` prints Secure MCP Tunnel setup commands for both installed-package and local-build use.
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
thehood mcp tunnel --tunnel-id tunnel_0123456789abcdef --profile thehood-local
|
|
383
|
+
node dist/cli/main.js mcp tunnel --tunnel-id tunnel_0123456789abcdef --profile thehood-local
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
The helper does not start the tunnel or contact OpenAI. It prints:
|
|
387
|
+
|
|
388
|
+
- `tunnel-client init` with `sample_mcp_stdio_local`
|
|
389
|
+
- `tunnel-client doctor`
|
|
390
|
+
- `tunnel-client run`
|
|
391
|
+
- ChatGPT Developer Mode connector setup notes
|
|
392
|
+
- a connector validation path using `thehood_doctor` and read-only repo gateway tools
|
|
393
|
+
|
|
394
|
+
The tunnel helper is for MCP connector mode, where ChatGPT is the MCP host. It is separate from `thehood mcp config --chatgpt-web`, which configures the `chatgpt-web` browser bridge for TheHood-initiated agent-bridge calls.
|
|
395
|
+
|
|
396
|
+
Use the local-build command while developing this checkout so ChatGPT sees the current `dist` output. Use the installed-package command after publishing or installing TheHood.
|