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
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
# Provider Adapters
|
|
2
|
+
|
|
3
|
+
Provider adapters connect role contracts to concrete model or agent systems.
|
|
4
|
+
|
|
5
|
+
Adapters translate TheHood's structured role requests into provider-specific calls, then normalize the result back into TheHood schemas.
|
|
6
|
+
|
|
7
|
+
## Provider Access Modes
|
|
8
|
+
|
|
9
|
+
TheHood tracks provider access modes so users can choose the transport that fits their workflow:
|
|
10
|
+
|
|
11
|
+
| Mode | Owner of model call | Best for |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| `agent-bridge` | TheHood | Codex-first loops, local CLI agents, ChatGPT Web/CDP bridge orchestration |
|
|
14
|
+
| `api-agent` | TheHood | API models with structured tool calls and traceable runtime mediation |
|
|
15
|
+
| `mcp-connector` | External MCP host | ChatGPT Developer Mode or another MCP client inspecting a local repo through TheHood |
|
|
16
|
+
|
|
17
|
+
Access mode is not an authority boundary. The runtime still owns repo access, permissions, approvals, artifacts, patch integration, and verification gates.
|
|
18
|
+
|
|
19
|
+
`chatgpt-web` supports both `agent-bridge` and `mcp-connector` paths. The agent bridge sends a runtime directive to the ChatGPT Web bridge. MCP connector mode lets ChatGPT call TheHood tools such as repo search, file read, run status, and artifact read through a connector or Secure MCP Tunnel.
|
|
20
|
+
|
|
21
|
+
## Adapter Interface
|
|
22
|
+
|
|
23
|
+
Each adapter should support:
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
interface ProviderAdapter {
|
|
27
|
+
id: string;
|
|
28
|
+
runAgent(request: AgentRequest): Promise<AgentResponse>;
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Current request shape:
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
agent_request:
|
|
36
|
+
run: RunRecord
|
|
37
|
+
role: orchestrator | planner | researcher | implementer | qa | verifier | critic
|
|
38
|
+
assignment:
|
|
39
|
+
provider: string
|
|
40
|
+
model: string
|
|
41
|
+
context: object
|
|
42
|
+
directive:
|
|
43
|
+
objective: string
|
|
44
|
+
instructions:
|
|
45
|
+
- string
|
|
46
|
+
tool_permissions:
|
|
47
|
+
read: boolean
|
|
48
|
+
edit: boolean
|
|
49
|
+
shell: boolean
|
|
50
|
+
network: boolean
|
|
51
|
+
output_contract:
|
|
52
|
+
schema_version: 1
|
|
53
|
+
name: string
|
|
54
|
+
required_data_key: string
|
|
55
|
+
variables:
|
|
56
|
+
run: object
|
|
57
|
+
role: object
|
|
58
|
+
context: object
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The runtime writes each directive as a `directive` artifact before provider execution. It validates each provider response against the role output contract before advancing the run state.
|
|
62
|
+
|
|
63
|
+
`AgentResponse` JSON is the mechanical envelope for runtime control. Role payloads should keep small fields such as `action`, `reason`, `status`, `verdict`, refs, and `thehoodDirectiveAck` as JSON. Human-facing plans, reports, reviews, critique, rationale, acceptance criteria, and other long narrative content should be returned as GitHub-flavored Markdown in `data.<required_data_key>.markdown`. Adapters should avoid asking providers to express long plans as nested JSON arrays or objects.
|
|
64
|
+
|
|
65
|
+
When the runtime supplies `context.criticTrigger` to a critic, the provider should treat it as the reason for an advisory review only. The adapter must not turn critic output into validation success, verifier approval, or edit authority.
|
|
66
|
+
|
|
67
|
+
The product default is Codex-first: `codex-cli:default` for orchestration and implementation, and `codex-cli:spark` for QA, verification, and critique. Users can replace any role assignment, including orchestrator, with ChatGPT Web, Claude Code, API providers once implemented, or future CLI model aliases.
|
|
68
|
+
|
|
69
|
+
Provider model policy is visible in `doctor` and `models` output:
|
|
70
|
+
|
|
71
|
+
| Policy | Meaning |
|
|
72
|
+
| --- | --- |
|
|
73
|
+
| `listed` | The provider accepts only configured model names. |
|
|
74
|
+
| `discovered` | The provider exposes a live model catalog and the runtime can mark unavailable aliases. |
|
|
75
|
+
| `passthrough` | The provider accepts custom model names because the user's local CLI, bridge, connector, or API account owns model availability. |
|
|
76
|
+
|
|
77
|
+
The `configured` model means "use the provider's configured or default selection" for local CLI providers. Explicit non-default names such as `sonnet`, `fable`, `mythos`, or a live Codex model slug remain role assignments and are passed to the provider when supported.
|
|
78
|
+
|
|
79
|
+
## Local Command Runner
|
|
80
|
+
|
|
81
|
+
The local command runner is shared by CLI-backed adapters.
|
|
82
|
+
|
|
83
|
+
Rules:
|
|
84
|
+
|
|
85
|
+
- It invokes commands without a shell.
|
|
86
|
+
- It passes the runtime directive as stdin or prompt input.
|
|
87
|
+
- It asks the provider to return the normalized `AgentResponse` JSON envelope.
|
|
88
|
+
- It builds a role-specific JSON Schema for the expected `AgentResponse`.
|
|
89
|
+
- It tells the provider to keep the JSON envelope mechanical and put long human-facing content in `data.<required_data_key>.markdown`.
|
|
90
|
+
- It redacts obvious secrets from captured process output before parsing.
|
|
91
|
+
- It fails closed with a schema-compatible blocked or failed response when output is unstructured.
|
|
92
|
+
- It does not use dangerous bypass flags.
|
|
93
|
+
- For read-only repo work, model-backed local command providers require an explicit provider-invocation approval before the first call.
|
|
94
|
+
- It runs edit-capable local agents in an isolated git worktree by default and captures the resulting patch as a `diff` artifact.
|
|
95
|
+
- It does not apply isolated patches itself; the runtime asks for approval and applies the patch deterministically during integration.
|
|
96
|
+
- It requires a clean target checkout before isolated edit execution so uncommitted user work is not silently excluded.
|
|
97
|
+
- It only runs edit-capable local agents in the target checkout when `THEHOOD_ALLOW_DIRECT_EDIT=1` is explicitly set.
|
|
98
|
+
|
|
99
|
+
## Stub Adapter
|
|
100
|
+
|
|
101
|
+
Purpose:
|
|
102
|
+
|
|
103
|
+
- Exercise the runtime loop without external model calls.
|
|
104
|
+
- Produce deterministic orchestrator, implementer, QA tester, critic, and verifier responses.
|
|
105
|
+
- Keep smoke tests stable while the real provider adapters are still being built.
|
|
106
|
+
|
|
107
|
+
Best roles:
|
|
108
|
+
|
|
109
|
+
- orchestrator
|
|
110
|
+
- implementer
|
|
111
|
+
- qa
|
|
112
|
+
- verifier
|
|
113
|
+
- critic
|
|
114
|
+
|
|
115
|
+
Rules:
|
|
116
|
+
|
|
117
|
+
- It must not edit files.
|
|
118
|
+
- It must use runtime evidence for verifier decisions.
|
|
119
|
+
- It exists for testing the orchestration contract, not for real work.
|
|
120
|
+
|
|
121
|
+
## ChatGPT Web Adapter
|
|
122
|
+
|
|
123
|
+
Purpose:
|
|
124
|
+
|
|
125
|
+
- Use the user's authenticated ChatGPT session for models only exposed in ChatGPT.
|
|
126
|
+
- Support ChatGPT Pro as an orchestrator or planner.
|
|
127
|
+
|
|
128
|
+
Current implementation:
|
|
129
|
+
|
|
130
|
+
- Provider id: `chatgpt-web`
|
|
131
|
+
- Default model: `chatgpt-pro`
|
|
132
|
+
- Model policy: `passthrough`
|
|
133
|
+
- Requires `THEHOOD_CHATGPT_WEB_COMMAND`
|
|
134
|
+
- `thehood doctor` checks command executability, explicit model confirmation, Chrome DevTools reachability, whether a ChatGPT tab is visible, and whether the page is authenticated with a ready composer.
|
|
135
|
+
- Sends the runtime directive as stdin.
|
|
136
|
+
- Passes `--model <model>` and `--schema <schema-path>` to the bridge command.
|
|
137
|
+
- Expects stdout to contain the normalized `AgentResponse` JSON envelope.
|
|
138
|
+
- Directs ChatGPT to place plans and reports in the role payload's `markdown` string instead of deep nested JSON.
|
|
139
|
+
- Returns `blocked` when no bridge command is configured.
|
|
140
|
+
|
|
141
|
+
Included bridge:
|
|
142
|
+
|
|
143
|
+
- Binary: `thehood-chatgpt-web-bridge`
|
|
144
|
+
- Source: `src/bridges/chatgptWebBridge.ts`
|
|
145
|
+
- Uses Chrome DevTools Protocol against the TheHood-managed persistent browser profile by default.
|
|
146
|
+
- Requires explicit model confirmation through `THEHOOD_CHATGPT_WEB_MODEL_CONFIRMED=1` or `--allow-unverified-model`.
|
|
147
|
+
- Treats ChatGPT Web GitHub connector access as unconfirmed unless `THEHOOD_CHATGPT_WEB_GITHUB_CONNECTOR_CONFIRMED=1` is set after verifying the active bridge session can use that connector.
|
|
148
|
+
- Fails fast with a blocked response when the visible ChatGPT page requires login.
|
|
149
|
+
- Creates a dedicated ChatGPT target for the first bridge call in a TheHood run, stores that target by run id, and reuses it for later ChatGPT Web calls in the same run so context follow-ups do not spawn new chats after every Pro answer.
|
|
150
|
+
- Verifies a fresh composer before the first prompt in a run-scoped target and keeps directive acknowledgement checks on every response so reused run tabs do not accept stale provider-session output.
|
|
151
|
+
- For bridge calls without a run id, closes the created target after a successfully parsed response and keeps the target open on failed or timed-out ingestion so the visible answer can be inspected or recovered.
|
|
152
|
+
- Set `THEHOOD_CHATGPT_WEB_KEEP_TARGET=1` or pass `--keep-target` to keep all created targets, including successful responses.
|
|
153
|
+
- Set `THEHOOD_CHATGPT_WEB_RUN_SCOPED_TARGETS=0` or pass `--no-run-scoped-target` to restore one-target-per-call behavior.
|
|
154
|
+
- Set `THEHOOD_CHATGPT_WEB_KEEP_TARGET_ON_FAILURE=0` or pass `--close-target-on-failure` to restore cleanup after failed ingestion.
|
|
155
|
+
- Requires ChatGPT responses to echo the current directive acknowledgement in the role payload, so schema-valid answers from stale browser/project context fail closed.
|
|
156
|
+
- Fails closed with a schema-compatible `blocked` or `failed` response when browser access, selectors, model confirmation, or response parsing fails.
|
|
157
|
+
|
|
158
|
+
Rules:
|
|
159
|
+
|
|
160
|
+
- Use the user's existing subscription and browser session.
|
|
161
|
+
- Do not bypass access controls.
|
|
162
|
+
- Do not extract cookies or tokens into logs.
|
|
163
|
+
- Do not rely on hidden chain-of-thought.
|
|
164
|
+
- Prefer structured visible outputs.
|
|
165
|
+
- Fail closed when the requested model cannot be confirmed.
|
|
166
|
+
- Fail closed when the authenticated ChatGPT page or composer cannot be verified.
|
|
167
|
+
- Fail closed when a fresh composer cannot be verified or when the response does not acknowledge the current directive.
|
|
168
|
+
- The bridge must not log cookies, local storage, tokens, or private browser profile data.
|
|
169
|
+
- When the directive includes `context.remoteRepoContext`, use ChatGPT Web's GitHub connector for the named owner, repo, branch, and commit instead of asking TheHood to send local file excerpts. The runtime only selects this route after connector access has been confirmed for the active bridge path. If the connector cannot access the repo or commit, ask TheHood for bounded local repo context.
|
|
170
|
+
|
|
171
|
+
Best roles:
|
|
172
|
+
|
|
173
|
+
- orchestrator
|
|
174
|
+
- planner
|
|
175
|
+
- critic
|
|
176
|
+
|
|
177
|
+
Risk:
|
|
178
|
+
|
|
179
|
+
- Browser UI changes can break automation.
|
|
180
|
+
- Output extraction can be brittle.
|
|
181
|
+
- Terms and product behavior may change.
|
|
182
|
+
|
|
183
|
+
## ChatGPT MCP Connector Mode
|
|
184
|
+
|
|
185
|
+
Purpose:
|
|
186
|
+
|
|
187
|
+
- Let ChatGPT Pro inspect a local repo through TheHood without pre-sending a repo context pack.
|
|
188
|
+
- Use ChatGPT Developer Mode or Secure MCP Tunnel to connect ChatGPT to TheHood's MCP server.
|
|
189
|
+
|
|
190
|
+
Current implementation:
|
|
191
|
+
|
|
192
|
+
- Provider access mode: `mcp-connector`
|
|
193
|
+
- Transport target: `thehood mcp`
|
|
194
|
+
- Repo gateway tools:
|
|
195
|
+
- `thehood_repo_tree`
|
|
196
|
+
- `thehood_repo_search`
|
|
197
|
+
- `thehood_repo_read_file`
|
|
198
|
+
- `thehood_git_status`
|
|
199
|
+
- `thehood_git_diff`
|
|
200
|
+
- Run gateway tools include existing status, artifact, approval, continue, and orchestration tools.
|
|
201
|
+
|
|
202
|
+
Rules:
|
|
203
|
+
|
|
204
|
+
- Treat ChatGPT as an MCP host, not as runtime authority.
|
|
205
|
+
- Expose read-only repo tools first.
|
|
206
|
+
- Keep edit and approval actions mediated by TheHood runtime gates.
|
|
207
|
+
- Do not expose `.git`, `.thehood`, dependency/build output, or secret-looking paths through repo gateway tools.
|
|
208
|
+
- Prefer Secure MCP Tunnel for private local repos so the MCP server does not need a public inbound endpoint.
|
|
209
|
+
|
|
210
|
+
## OpenAI API Adapter
|
|
211
|
+
|
|
212
|
+
Purpose:
|
|
213
|
+
|
|
214
|
+
- Use API-accessible GPT models for structured workers.
|
|
215
|
+
|
|
216
|
+
Best roles:
|
|
217
|
+
|
|
218
|
+
- implementer
|
|
219
|
+
- planner
|
|
220
|
+
- researcher
|
|
221
|
+
- verifier
|
|
222
|
+
- critic
|
|
223
|
+
|
|
224
|
+
Notes:
|
|
225
|
+
|
|
226
|
+
- Current implementation status: provider config exists, but the adapter is not wired yet.
|
|
227
|
+
- Model policy: `passthrough`, but unavailable until the adapter is implemented and enabled.
|
|
228
|
+
- Default API key env name: `OPENAI_API_KEY`.
|
|
229
|
+
- Prefer structured output features when available.
|
|
230
|
+
- Keep raw provider responses out of public logs if they contain sensitive context.
|
|
231
|
+
|
|
232
|
+
## Anthropic API Adapter
|
|
233
|
+
|
|
234
|
+
Purpose:
|
|
235
|
+
|
|
236
|
+
- Use Claude models as guest agents or primary role owners.
|
|
237
|
+
|
|
238
|
+
Best roles:
|
|
239
|
+
|
|
240
|
+
- critic
|
|
241
|
+
- verifier
|
|
242
|
+
- architect/planner
|
|
243
|
+
- implementer when tool integration is available
|
|
244
|
+
|
|
245
|
+
Notes:
|
|
246
|
+
|
|
247
|
+
- Current implementation status: provider config exists, but the adapter is not wired yet.
|
|
248
|
+
- Model policy: `passthrough`, but unavailable until the adapter is implemented and enabled.
|
|
249
|
+
- Default API key env name: `ANTHROPIC_API_KEY`.
|
|
250
|
+
- Claude can be especially useful as an independent reviewer because it brings a different model family into the loop.
|
|
251
|
+
- It still must obey the same runtime permissions.
|
|
252
|
+
|
|
253
|
+
## Codex CLI Adapter
|
|
254
|
+
|
|
255
|
+
Purpose:
|
|
256
|
+
|
|
257
|
+
- Use Codex as the default orchestrator, implementation, QA, verification, critique, or investigation worker.
|
|
258
|
+
|
|
259
|
+
Best roles:
|
|
260
|
+
|
|
261
|
+
- orchestrator
|
|
262
|
+
- implementer
|
|
263
|
+
- researcher
|
|
264
|
+
- qa tester
|
|
265
|
+
- verifier
|
|
266
|
+
- reviewer
|
|
267
|
+
|
|
268
|
+
Rules:
|
|
269
|
+
|
|
270
|
+
- Scope tasks tightly.
|
|
271
|
+
- Capture diffs and logs.
|
|
272
|
+
- Do not let Codex self-verify its own changes.
|
|
273
|
+
- QA tester output is advisory and cannot satisfy runtime validation proof.
|
|
274
|
+
- Run through `codex exec` with TheHood's role directive.
|
|
275
|
+
- Use `read-only` sandbox for non-editing roles.
|
|
276
|
+
- Require explicit provider-invocation approval before read-only repo calls.
|
|
277
|
+
- Pass the generated schema through `--output-schema`.
|
|
278
|
+
- Write redacted stdout/stderr `log` artifacts and a bounded `provider_invocation` artifact after the local command exits so status can show the role, provider/model, command args, workspace mode, sandbox, exit code, timeout state, output refs, parse status, and isolated patch ref when present.
|
|
279
|
+
- Do not pass dangerous sandbox bypass flags.
|
|
280
|
+
- Built-in friendly assignments are `default`, `spark`, and `configured`, but the active Codex model catalog comes from `codex debug models`. The runtime stores only a sanitized catalog with model slugs, display names, visibility, and reasoning/speed metadata. Friendly assignments such as `spark` resolve against the live catalog before TheHood passes `--model` to Codex CLI; unsupported custom strings are reported by `doctor` before a run.
|
|
281
|
+
- Model policy: `discovered`. `configured` uses the local Codex CLI default and is not passed as a literal model name.
|
|
282
|
+
|
|
283
|
+
## Claude Code Adapter
|
|
284
|
+
|
|
285
|
+
Purpose:
|
|
286
|
+
|
|
287
|
+
- Use Claude Code as a guest implementation or review worker.
|
|
288
|
+
|
|
289
|
+
Best roles:
|
|
290
|
+
|
|
291
|
+
- implementer
|
|
292
|
+
- critic
|
|
293
|
+
- verifier
|
|
294
|
+
|
|
295
|
+
Rules:
|
|
296
|
+
|
|
297
|
+
- Same separation rules as any other implementer.
|
|
298
|
+
- If Claude Code edits, another agent verifies.
|
|
299
|
+
- Run through `claude --print` with TheHood's role directive.
|
|
300
|
+
- Use plan/read tools for non-editing roles.
|
|
301
|
+
- Require explicit provider-invocation approval before read-only repo calls.
|
|
302
|
+
- Pass the generated schema through `--json-schema`.
|
|
303
|
+
- Do not pass permission bypass flags.
|
|
304
|
+
- Model policy: `passthrough`.
|
|
305
|
+
- Built-in models are `default`, `configured`, `sonnet`, `opus`, `haiku`, `mythos`, and `fable`. `configured` uses the local Claude CLI default and is not passed as a literal model name. Explicit aliases such as `sonnet`, `fable`, or `mythos` are passed through to the user's local Claude CLI.
|
|
306
|
+
|
|
307
|
+
## Local Model Adapter
|
|
308
|
+
|
|
309
|
+
Purpose:
|
|
310
|
+
|
|
311
|
+
- Support private or cheap local workers.
|
|
312
|
+
|
|
313
|
+
Best roles:
|
|
314
|
+
|
|
315
|
+
- formatting
|
|
316
|
+
- simple refactors
|
|
317
|
+
- search summarization
|
|
318
|
+
- low-risk repetitive work
|
|
319
|
+
|
|
320
|
+
Rules:
|
|
321
|
+
|
|
322
|
+
- Keep tasks narrow.
|
|
323
|
+
- Do not use local model output as authoritative verification unless backed by deterministic logs.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Provider Matrix
|
|
2
|
+
|
|
3
|
+
TheHood is provider-neutral at the runtime boundary, but provider support is intentionally uneven in the public preview. This matrix describes what is wired today versus what is only represented in config for future adapters.
|
|
4
|
+
|
|
5
|
+
| Provider | Status | Access Mode | Notes |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| `stub` | Implemented | local deterministic | Used by smoke tests and synthetic demos. Does not call external models. |
|
|
8
|
+
| `codex-cli` | Implemented | local command agent | Runs the local Codex CLI through TheHood's directive and response contract. Codex model discovery depends on the local CLI. |
|
|
9
|
+
| `claude-code` | Implemented | local command agent | Runs Claude Code through the same local command adapter boundary. Model aliases are pass-through to the user's installed tool. |
|
|
10
|
+
| `chatgpt-web` | Experimental, user-configured | browser agent bridge | Uses a user-authenticated ChatGPT Web session through the bridge command. It must be explicitly configured and remains sensitive to ChatGPT UI/session behavior. |
|
|
11
|
+
| ChatGPT MCP connector | Experimental, optional | external MCP host | ChatGPT may connect to TheHood through a trusted MCP host such as Secure MCP Tunnel when the user's workspace exposes custom connectors. This is not a launch blocker. |
|
|
12
|
+
| `openai-api` | Planned, not wired | future API agent | API key names and provider config are represented, but no production OpenAI API adapter is implemented in this preview. |
|
|
13
|
+
| `anthropic-api` | Planned, not wired | future API agent | API key names and provider config are represented, but no production Anthropic API adapter is implemented in this preview. |
|
|
14
|
+
| local model | Planned, not wired | future local agent | Local model ownership is a product goal, not a current runtime adapter. |
|
|
15
|
+
|
|
16
|
+
## Policy
|
|
17
|
+
|
|
18
|
+
- Provider adapters normalize model behavior into TheHood schemas.
|
|
19
|
+
- Provider adapters must not bypass runtime permissions, approval gates, transfer manifests, or verification.
|
|
20
|
+
- Model aliases are user preference only. They do not bypass provider availability, local command readiness, or runtime review.
|
|
21
|
+
- External browser/API provider transfers require manifest and approval policy before local repo context or memory leaves the machine.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Public Repo Readiness
|
|
2
|
+
|
|
3
|
+
This checklist tracks repo-side scaffolding and external GitHub settings required before a public `v0.1.0-preview.0` developer-preview launch. The repo can be built and smoked locally today, but public release still requires a final safety, packaging, and repository-settings pass.
|
|
4
|
+
|
|
5
|
+
## Release Position
|
|
6
|
+
|
|
7
|
+
The public preview should make one claim clearly: TheHood is a local runtime for governed software goal loops. It can plan, act, capture evidence, verify independently, revise, stop safely, and preserve artifacts.
|
|
8
|
+
|
|
9
|
+
It should not claim cloud routines, hosted execution, API-provider automation, a full dashboard, or polished native app rendering.
|
|
10
|
+
|
|
11
|
+
## Must Finish Before Public
|
|
12
|
+
|
|
13
|
+
- Keep the root MIT `LICENSE` and `package.json` license metadata in sync.
|
|
14
|
+
- Keep `CONTRIBUTING.md`, `SECURITY.md`, `PRIVACY.md`, and `CODE_OF_CONDUCT.md` present in the repository and package boundary.
|
|
15
|
+
- Confirm private vulnerability reporting is enabled for `lemberalla/the-hood`.
|
|
16
|
+
- Keep `.thehood/`, browser profile state, provider logs, local env files, package archives, and generated build output out of git.
|
|
17
|
+
- Keep examples and fixtures synthetic. Do not publish real runtime artifacts or provider transcripts.
|
|
18
|
+
- Verify a fresh clone path: `npm ci`, `npm run build`, `npm run smoke:mcp`, `npm run smoke:codex-config`, and `npm run smoke:runtime`.
|
|
19
|
+
- Verify release packaging with `npm run release:check`.
|
|
20
|
+
- Verify package contents with `npm run pack:check`.
|
|
21
|
+
- Keep the synthetic stub demo runnable from `examples/stub-demo` and `docs/DEMO.md`.
|
|
22
|
+
- Keep the static site in `site/` dependency-free, analytics-free, and aligned with README claims.
|
|
23
|
+
- Make README claims match current behavior. Mark API adapters, hosted UI, and automatic Codex app rendering beyond explicit agent board artifact payloads as planned unless implemented.
|
|
24
|
+
- Keep ChatGPT MCP connector mode documented as experimental and optional. It depends on external ChatGPT custom connector availability and is not a public-preview blocker.
|
|
25
|
+
- Configure branch protection, required CI checks, secret scanning or push protection, private vulnerability reporting, and issue/PR templates on GitHub. These settings are external to the repository tree and must be verified before public launch.
|
|
26
|
+
|
|
27
|
+
## Current Public Surface
|
|
28
|
+
|
|
29
|
+
- Runtime roles, same-run summons, bounded fan-out, review lanes, crew lanes, and run artifacts are implemented as local runtime concepts.
|
|
30
|
+
- Codex CLI and Claude Code adapters are implemented through local command providers.
|
|
31
|
+
- ChatGPT Pro works through the user-authenticated ChatGPT Web bridge when configured by the user.
|
|
32
|
+
- OpenAI and Anthropic API provider config exists, but external API adapters are not implemented yet.
|
|
33
|
+
- Agents are visible through CLI, MCP, TUI, status, logs, artifact surfaces, structured agent board snapshots, and renderable dashboard payloads. The optional Codex plugin provides TheHood workflow guidance and MCP wiring, but automatic native Codex app rendering on every TheHood run is still a later integration layer.
|
|
34
|
+
|
|
35
|
+
## Package Boundary
|
|
36
|
+
|
|
37
|
+
`package.json` uses a `files` allowlist. `npm run pack:check` should include built `dist/`, README, package metadata, docs, and the synthetic demo only. It should not include `.thehood/`, `src/`, `node_modules/`, `.env`, browser state, provider logs, local config, site drafts, GitHub workflow internals, or generated archives.
|
|
38
|
+
|
|
39
|
+
## Release Gate
|
|
40
|
+
|
|
41
|
+
Before the first public release, run:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm ci
|
|
45
|
+
npm run release:check
|
|
46
|
+
git --no-pager diff --check
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Publishing must happen through npm Trusted Publishing from the tag-triggered workflow. Do not publish locally and do not add npm tokens to the repo.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Research Notes
|
|
2
|
+
|
|
3
|
+
These notes capture the agent-loop patterns TheHood is built from.
|
|
4
|
+
|
|
5
|
+
## Primary Sources
|
|
6
|
+
|
|
7
|
+
- [Anthropic: Building Effective Agents](https://www.anthropic.com/engineering/building-effective-agents)
|
|
8
|
+
- [Anthropic: How We Built Our Multi-Agent Research System](https://www.anthropic.com/engineering/multi-agent-research-system)
|
|
9
|
+
- [Claude Code: Subagents](https://code.claude.com/docs/en/sub-agents)
|
|
10
|
+
- [Claude Code: Agent Teams](https://code.claude.com/docs/en/agent-teams)
|
|
11
|
+
- [Claude Code: Dynamic Workflows](https://code.claude.com/docs/en/workflows)
|
|
12
|
+
- [OpenAI: A Practical Guide To Building Agents](https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf)
|
|
13
|
+
- [Google ADK: Agents](https://adk.dev/agents/)
|
|
14
|
+
- [Google ADK: Evaluate](https://adk.dev/evaluate/)
|
|
15
|
+
- [Microsoft AutoGen: Teams](https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/tutorial/teams.html)
|
|
16
|
+
- [LangChain: Plan-And-Execute Agents](https://www.langchain.com/blog/planning-agents)
|
|
17
|
+
|
|
18
|
+
## Extracted Patterns
|
|
19
|
+
|
|
20
|
+
### Prompt Chaining
|
|
21
|
+
|
|
22
|
+
Break work into sequential stages. Each stage produces structured output for the next stage.
|
|
23
|
+
|
|
24
|
+
TheHood use:
|
|
25
|
+
|
|
26
|
+
- inspect
|
|
27
|
+
- plan
|
|
28
|
+
- implement
|
|
29
|
+
- verify
|
|
30
|
+
- critique
|
|
31
|
+
- integrate
|
|
32
|
+
|
|
33
|
+
### Routing
|
|
34
|
+
|
|
35
|
+
Route tasks to the right role, model, and permission set.
|
|
36
|
+
|
|
37
|
+
TheHood use:
|
|
38
|
+
|
|
39
|
+
- user-configurable role mapping
|
|
40
|
+
- provider-neutral adapter layer
|
|
41
|
+
- risk-based role selection
|
|
42
|
+
|
|
43
|
+
### Parallelization
|
|
44
|
+
|
|
45
|
+
Run independent subtasks in parallel where safe.
|
|
46
|
+
|
|
47
|
+
TheHood use:
|
|
48
|
+
|
|
49
|
+
- parallel researchers
|
|
50
|
+
- parallel critics
|
|
51
|
+
- parallel exploration workers
|
|
52
|
+
|
|
53
|
+
Implementation changes should be serialized or isolated in separate worktrees.
|
|
54
|
+
|
|
55
|
+
### Orchestrator-Workers
|
|
56
|
+
|
|
57
|
+
A high-capability manager delegates scoped tasks to workers.
|
|
58
|
+
|
|
59
|
+
TheHood use:
|
|
60
|
+
|
|
61
|
+
- ChatGPT Pro, Claude Opus, or another selected model can orchestrate
|
|
62
|
+
- workers receive narrow objectives and permissions
|
|
63
|
+
- runtime stores and validates their outputs
|
|
64
|
+
|
|
65
|
+
### Evaluator-Optimizer
|
|
66
|
+
|
|
67
|
+
One agent proposes or changes output, another evaluates it, then the loop revises.
|
|
68
|
+
|
|
69
|
+
TheHood use:
|
|
70
|
+
|
|
71
|
+
- implementer changes code
|
|
72
|
+
- runtime captures diff and logs
|
|
73
|
+
- verifier reviews independently
|
|
74
|
+
- orchestrator decides next step
|
|
75
|
+
|
|
76
|
+
### Deterministic Runtime
|
|
77
|
+
|
|
78
|
+
The runtime is responsible for state, tool execution, and evidence capture.
|
|
79
|
+
|
|
80
|
+
TheHood use:
|
|
81
|
+
|
|
82
|
+
- runtime executes commands
|
|
83
|
+
- runtime captures logs
|
|
84
|
+
- runtime enforces permissions
|
|
85
|
+
- models do not self-authorize
|
|
86
|
+
|
|
87
|
+
## Key Design Conclusion
|
|
88
|
+
|
|
89
|
+
A model can be intelligent without being trusted as an authority over its own work.
|
|
90
|
+
|
|
91
|
+
TheHood should use models for reasoning, critique, and generation. It should use local runtime code for permissions, state, evidence, and integration.
|
|
92
|
+
|
package/docs/ROADMAP.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Roadmap
|
|
2
|
+
|
|
3
|
+
The roadmap is documentation-first, runtime-second, UI-last.
|
|
4
|
+
|
|
5
|
+
## Phase 0: Documentation And Contracts
|
|
6
|
+
|
|
7
|
+
- Architecture docs
|
|
8
|
+
- Role contracts
|
|
9
|
+
- Prompt schemas
|
|
10
|
+
- CLI spec
|
|
11
|
+
- MCP spec
|
|
12
|
+
- Provider adapter boundaries
|
|
13
|
+
- Security rules
|
|
14
|
+
- Verification rules
|
|
15
|
+
- ADRs
|
|
16
|
+
|
|
17
|
+
## Phase 1: Local Runtime Skeleton
|
|
18
|
+
|
|
19
|
+
- Run store
|
|
20
|
+
- State machine
|
|
21
|
+
- Event log
|
|
22
|
+
- Permission model
|
|
23
|
+
- Command runner
|
|
24
|
+
- Diff capture
|
|
25
|
+
- Config loader
|
|
26
|
+
- Typed schemas
|
|
27
|
+
|
|
28
|
+
## Phase 2: CLI
|
|
29
|
+
|
|
30
|
+
- `thehood init`
|
|
31
|
+
- `thehood config`
|
|
32
|
+
- `thehood roles`
|
|
33
|
+
- `thehood run`
|
|
34
|
+
- `thehood status`
|
|
35
|
+
- `thehood logs`
|
|
36
|
+
- `thehood approve`
|
|
37
|
+
- `thehood continue`
|
|
38
|
+
- `thehood abort`
|
|
39
|
+
|
|
40
|
+
## Phase 3: MCP Server
|
|
41
|
+
|
|
42
|
+
- `thehood mcp`
|
|
43
|
+
- `thehood_plan`
|
|
44
|
+
- `thehood_orchestrate`
|
|
45
|
+
- `thehood_continue`
|
|
46
|
+
- `thehood_status`
|
|
47
|
+
- `thehood_abort`
|
|
48
|
+
|
|
49
|
+
## Phase 4: Provider Adapters
|
|
50
|
+
|
|
51
|
+
- Codex CLI adapter with live model discovery
|
|
52
|
+
- Claude Code adapter with configured/custom model passthrough
|
|
53
|
+
- ChatGPT Web adapter as experimental
|
|
54
|
+
- OpenAI API adapter
|
|
55
|
+
- Anthropic API adapter
|
|
56
|
+
- Local model adapter
|
|
57
|
+
|
|
58
|
+
## Phase 5: Worktree And Verification Gates
|
|
59
|
+
|
|
60
|
+
- Worktree isolation
|
|
61
|
+
- Protected path detection
|
|
62
|
+
- Runtime validation commands
|
|
63
|
+
- Separate verifier flow
|
|
64
|
+
- Patch integration
|
|
65
|
+
|
|
66
|
+
## Phase 6: Memory And Reconciliation
|
|
67
|
+
|
|
68
|
+
- Canonical progress packet builder
|
|
69
|
+
- Planner reconciliation provider call
|
|
70
|
+
- Reconciliation artifacts
|
|
71
|
+
- CLI and MCP reconciliation status
|
|
72
|
+
- Local index for run memory queries
|
|
73
|
+
- Pluggable derived memory engines
|
|
74
|
+
|
|
75
|
+
## Phase 7: macOS Menubar Companion
|
|
76
|
+
|
|
77
|
+
- Active run list
|
|
78
|
+
- Approval prompts
|
|
79
|
+
- Pause/resume
|
|
80
|
+
- Open logs
|
|
81
|
+
- Open diffs
|
|
82
|
+
- Role switch trigger
|
|
83
|
+
|
|
84
|
+
The menubar app should talk to the local runtime. It should not own orchestration logic.
|
|
85
|
+
|
|
86
|
+
## Phase 8: Public Hardening
|
|
87
|
+
|
|
88
|
+
- Example configs
|
|
89
|
+
- Synthetic fixtures
|
|
90
|
+
- Integration smoke tests
|
|
91
|
+
- Security review
|
|
92
|
+
- Contributor docs
|
|
93
|
+
- License
|
|
94
|
+
- Release workflow
|