You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: specs/aw-harness.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,7 @@ The harness is **built on top of the Pi agent ecosystem** (`@mariozechner/pi-cod
12
12
- A Pi SDK application with gh-aw-specific Pi extensions
13
13
- Optimized for execution inside the gh-aw Action container (firewall, api-proxy, MCP gateway)
14
14
- TypeScript compiled for Node.js 24, bundled as a single `.cjs` in `actions/setup/js/`
15
+
-**`gh-proxy` and `cli-proxy` are always enabled** — Pi SDK does not support MCP natively; these are mandatory for the MCP bridge to work and cannot be turned off
15
16
16
17
### What this is NOT
17
18
@@ -153,6 +154,7 @@ export default function safeOutputsExtension(pi: ExtensionAPI) {
153
154
2.**Extensions-first** — Every gh-aw feature is a proper Pi extension using `ExtensionAPI`. Extensions use `pi.registerTool()` for tools, `pi.on()` for events, `pi.registerProvider()` for model routing. This makes them reusable outside gh-aw.
154
155
3.**api-proxy for model resolution** — Pi's `pi-ai` talks to the api-proxy as an OpenAI-compatible provider. Model names (aliases or explicit) pass through — the proxy resolves.
155
156
4.**Optimized for gh-aw container** — Assumes firewall, api-proxy, MCP gateway are running. No redundant auth, no direct LLM API calls, no network configuration.
157
+
5.**`gh-proxy` and `cli-proxy` always on** — The Pi SDK does not support MCP natively. GitHub and other MCP server tools are bridged into Pi via the `mcp-bridge` extension, which requires `gh-proxy` (pre-authenticated `gh` CLI in bash) and `cli-proxy` (MCP servers mounted as CLI tools on `PATH`) to be active. These features are **always enabled** when `engine: aw` is selected and **cannot be disabled**.
156
158
5.**TypeScript → Node 24** — Source is TypeScript, compiled to ES2024, bundled via esbuild to a single `.cjs`. Leverages Node 24 features (native fetch, structuredClone, AbortSignal.any).
157
159
6.**Output in `actions/setup/js/`** — The bundled `aw_harness.cjs` lives alongside `copilot_harness.cjs` and `claude_harness.cjs`. Same deployment mechanism, same runtime contract.
158
160
7.**New opt-in engine** — `engine: aw` is a new choice. Existing engines are untouched.
@@ -187,6 +189,8 @@ This means:
187
189
188
190
Uses the **existing gh-aw frontmatter** with `engine: aw` and a new optional `harness:` block.
189
191
192
+
> **Constraint:**`gh-proxy` and `cli-proxy` are always enabled for `engine: aw` (Pi SDK does not support MCP natively). They are shown explicitly below but are enforced by the compiler regardless of whether the author includes them.
193
+
190
194
```markdown
191
195
---
192
196
on:
@@ -203,8 +207,14 @@ permissions:
203
207
issues: read
204
208
pull-requests: read
205
209
210
+
# gh-proxy and cli-proxy are ALWAYS enabled for engine: aw.
211
+
# Pi SDK does not support MCP natively; the mcp-bridge extension
212
+
# requires both features to bridge gateway tools into Pi AgentTools.
Bridges gh-aw's MCP gateway tools into Pi's tool system as `AgentTool` instances.
344
354
355
+
> **Note:** The Pi SDK does not support MCP natively. `gh-proxy` (pre-authenticated `gh` CLI in bash) and `cli-proxy` (MCP servers mounted as CLI tools on `PATH`) are **always enabled** when `engine: aw` is selected and **cannot be disabled**. These are mandatory prerequisites for the MCP bridge to function.
356
+
345
357
```typescript
346
358
exportdefaultfunction(pi:ExtensionAPI) {
347
359
const gatewayConfig =loadMCPGatewayConfig();
@@ -591,6 +603,8 @@ async function main() {
591
603
|`engine: aw` with `harness:` block | Multi-step orchestration mode |
592
604
|`engine: aw` with `harness.steps`| Explicit DAG (parallel, depends, agent assignment) |
593
605
|`engine: aw` without `harness.agents`| All steps use `engine.model`|
606
+
|`engine: aw` + `cli-proxy: false`|**Ignored** — `cli-proxy` is always on for `engine: aw`|
607
+
|`engine: aw` + `tools.github.mode: remote`|**Overridden to `gh-proxy`** — Pi SDK requires `gh-proxy`; `remote` mode is not supported |
0 commit comments