- adapters/README.md: the harness boundary contract (env in, response on stdout, diagnostics stderr, exit 0 success) - adapters/pi: extracted current invocation unchanged - adapters/mock: deterministic MOSAIC_MOCK_RESPONSE echo (test-only) - run-agent.sh: name-validated dispatch to adapters/<name>/adapter.sh - config: optional execution.adapter (pi|mock), default pi, configVersion stays 1 — existing configs remain valid; selection authority is the config file (load_config exports it) - compose: MOSAIC_ADAPTER / MOSAIC_MOCK_RESPONSE passthrough; Containerfile installs adapters read-only; RELEASE -> 0.0.5 Verified: hello unchanged; mock verbatim via config; unknown adapter and path-traversal names refused in-container; invalid adapter exits 2. Closes #16
34 lines
1.4 KiB
Bash
34 lines
1.4 KiB
Bash
#!/bin/sh
|
|
# Pi adapter: implements the Mosaic adapter contract for the pinned
|
|
# @earendil-works/pi-coding-agent CLI.
|
|
#
|
|
# Contract: see /opt/mosaic/adapters/README.md. stdout = response only.
|
|
set -eu
|
|
|
|
[ -n "${MOSAIC_SYSTEM_PROMPT_FILE:-}" ] || { echo "pi adapter: MOSAIC_SYSTEM_PROMPT_FILE is required" >&2; exit 2; }
|
|
[ -n "${MOSAIC_REQUEST:-}" ] || { echo "pi adapter: MOSAIC_REQUEST is required" >&2; exit 2; }
|
|
[ -r "$MOSAIC_SYSTEM_PROMPT_FILE" ] || { echo "pi adapter: system prompt not readable: $MOSAIC_SYSTEM_PROMPT_FILE" >&2; exit 2; }
|
|
|
|
: "${PI_PROVIDER:?pi adapter: PI_PROVIDER is required}"
|
|
: "${PI_MODEL:?pi adapter: PI_MODEL is required}"
|
|
|
|
# All flags documented in the pi package README (CLI Reference):
|
|
# -p/--print noninteractive: print the response and exit
|
|
# --system-prompt replace the default prompt with the generated one
|
|
# --no-* no ambient context/skills/extensions/templates/themes
|
|
# --no-session ephemeral; --no-tools this runtime needs no tools
|
|
# --offline no startup network operations (update checks/telemetry)
|
|
exec pi \
|
|
--offline \
|
|
--no-session \
|
|
--no-extensions \
|
|
--no-skills \
|
|
--no-prompt-templates \
|
|
--no-themes \
|
|
--no-context-files \
|
|
--no-tools \
|
|
--provider "$PI_PROVIDER" \
|
|
--model "$PI_MODEL" \
|
|
--system-prompt "$(cat "$MOSAIC_SYSTEM_PROMPT_FILE")" \
|
|
-p "$MOSAIC_REQUEST"
|