Add support for more harnesses - #26
Open
armstrongl wants to merge 8 commits into
Open
Conversation
Adds docs/adding-a-client.md, a step-by-step contributor guide covering the clients.Client interface, both routing variants (environment variables and a generated config file), the menu flow, replay, and the CI gates. Also ignores .artifacts/, which holds local session scratch output.
Pi has no environment variable for a custom API base URL, so routing is expressed as a provider definition. This client generates a per-launch extension and loads it with 'pi -e', leaving the user's own ~/.pi/agent directory (settings, logins, session history) untouched. Supports the four wire protocols Aperture serves: OpenAI Responses, Anthropic Messages, OpenAI Chat Completions, and Google Vertex. Bedrock is omitted because Pi's bedrock API type fails at request time. Registers the client in cmd/aperture/main.go and lists it in the README.
Two agent skills, kept in the repo so they stay in step with the code they describe: - adding-aperture-cli-client points at docs/adding-a-client.md and cites internal/clients/pi as the fullest worked example. - testing-an-aperture-cli-client covers the four verification layers: the CI gates, a headless live request per protocol, tool calling, and the interactive TUI checks that need a human.
Audits README.md, docs/adding-a-client.md, and every .agents/skills/*/SKILL.md against the code, including the skills themselves. Findings carry a tier label proving each claim: static citation checks, executed CI gates and /api/providers output, and live per-protocol requests through a client's own builders. Read-only by default; only mechanical drift is offered for auto-fix, with a diff. Records two findings verified present today: a dangling "Test it end to end" cross-reference, and a README with no pointer to docs/ or .agents/skills/.
Add Oh My Pi as a registered Aperture CLI client with discovery, Bun-based installation, provider and backend selection, model selection, YOLO mode, and quick-select replay. Generate a temporary per-launch OMP extension instead of replacing user configuration. The extension registers Aperture-backed providers for OpenAI Responses, Anthropic Messages, OpenAI Chat Completions, and Google Vertex, then removes itself when the launched process exits. Document Oh My Pi as a supported agent and cover endpoint construction, provider filtering, generated extension content and permissions, launch arguments, replay validation, and install metadata. This means users can launch OMP through compatible Aperture providers while retaining their existing OMP settings, credentials, and sessions.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
We've wanted broader harness support without having to rediscover each client's routing contract, so this adds three clients and documents the path for adding and testing more:
internal/clients/pi) - routes OpenAI Responses, Anthropic Messages, OpenAI Chat Completions, and Google Vertex through a generated per-launch extension. The extension leaves the user's Pi settings and sessions alone, namespaces Aperture providers, and cleans itself up after exit.internal/clients/omp) - uses the same extension API for four protocols, with provider, backend, and model selection plus quick replay and yolo-mode support.internal/clients/hermes) - routes OpenAI Chat Completions throughCUSTOM_BASE_URLand a per-process custom-provider override, so the user's Hermes config stays in place.docs/adding-a-client.md,.agents/skills/) - records the client contract, menu and replay conventions, CI gates, and live routing checks that catch failures unit tests can't.Other changes
README.md: lists Pi, Oh My Pi, and Hermes Agent, and links to the contributor guide and repo skills.gitignore: ignores local.artifacts/output used during client testinginternal/clients/pi/pi_test.go: covers generated provider extensions, all supported protocols, replay staleness, menu flow, and cleanup behaviorTest plan
gofmt -l .-> no outputgo vet ./...-> no findingsmake test-> all packages passmake build-> launcher builds successfullyhttp://ai-> returnsPONGhttp://ai-> returnstool-ok./.build/aperture -debug, then confirm quick select after exit