fix(oc-plugin): replace Pi-direct with MACP controller bridge in runTurn
This commit is contained in:
@@ -2,14 +2,15 @@
|
||||
|
||||
This plugin registers a new OpenClaw ACP runtime backend named `macp`.
|
||||
|
||||
When OpenClaw calls `sessions_spawn(runtime: "macp", agentId: "pi")`, the plugin runs a Pi agent turn in-process using the MACP Pi runner logic and streams Pi output back as ACP runtime events.
|
||||
When OpenClaw calls `sessions_spawn(runtime: "macp")`, the plugin now writes the prompt to a brief file, queues a MACP controller task in `.mosaic/orchestrator/tasks.json`, triggers `mosaic-orchestrator-run --once`, polls `.mosaic/orchestrator/results/<task-id>.json`, and streams the resulting output back as ACP runtime events.
|
||||
|
||||
## Current behavior
|
||||
|
||||
- Supports `agentId: "pi"` only
|
||||
- Supports ACP `mode: "oneshot"` only
|
||||
- Accepts any `agentId` and maps it to the queued MACP task `runtime`
|
||||
- Defaults queued tasks to `dispatch: "yolo"` and `runtime: "codex"` when no override is provided
|
||||
- Rejects persistent ACP sessions
|
||||
- Reuses the Pi default tools from `tools/macp/dispatcher/pi_runner.ts`
|
||||
- Keeps `src/pi-bridge.ts` for future `dispatch: "pi"` support
|
||||
|
||||
## Install in OpenClaw
|
||||
|
||||
@@ -32,15 +33,29 @@ Add the plugin entry to your OpenClaw config:
|
||||
"defaultModel": "openai/gpt-5-mini",
|
||||
"systemPrompt": "You are Pi running via MACP.",
|
||||
"timeoutMs": 300000,
|
||||
"logDir": "~/.openclaw/state/macp"
|
||||
"logDir": "~/.openclaw/state/macp",
|
||||
"repoRoot": "~/src/mosaic-mono-v1",
|
||||
"orchDir": "~/src/mosaic-mono-v1/.mosaic/orchestrator",
|
||||
"defaultDispatch": "yolo",
|
||||
"defaultRuntime": "codex"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Runtime flow
|
||||
|
||||
1. OpenClaw ensures a oneshot `macp` session and preserves the requested `agentId`.
|
||||
2. `runTurn` writes the turn prompt to `~/.mosaic/macp-oc/<session>-<request>.md`.
|
||||
3. The plugin appends a pending MACP task to the configured orchestrator queue.
|
||||
4. The plugin triggers `~/.config/mosaic/bin/mosaic-orchestrator-run --once` in the configured repo root.
|
||||
5. The plugin polls for `.mosaic/orchestrator/results/<task-id>.json` and streams the result back to OpenClaw.
|
||||
|
||||
## Verification
|
||||
|
||||
```bash
|
||||
pnpm exec tsc --noEmit -p plugins/macp/tsconfig.json
|
||||
pnpm --filter @mosaic/oc-macp-plugin typecheck || npx tsc --noEmit -p plugins/macp/tsconfig.json
|
||||
pnpm prettier --write "plugins/macp/**/*.{ts,json,md}"
|
||||
pnpm format:check
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user