v0.2.1
Model discovery
AgentShell can now ask every supported CLI which models it currently advertises:
models = await shell.list_models(cwd="/path/to/project")
response = await shell.execute(
cwd="/path/to/project",
prompt="Review this project",
model=models[0],
)The returned strings are passed unchanged to execute(model=...) and stream(model=...).
Discovery is account/workspace-aware, sends no inference prompt, imports no harness SDK, and
uses no static fallback catalog.
Supported discovery paths:
- Claude Code stream-JSON initialization
opencode models- Copilot CLI headless JSON-RPC
codex debug modelspi --no-approve --list-modelscursor-agent models
Reliability
- Added timeout, cancellation, malformed-output, and UTF-8 error handling.
- Discovery subprocesses use an isolated live process-group sentinel, preventing both leaked
descendants and signalling through a reaped/reused CLI PID. - Pi selectors are provider-qualified so duplicate model IDs remain unambiguous.
- Harness ordering and aliases such as
autoanddefaultare preserved.
Documentation and tests
- Updated the README, AgentShell skill, architecture notes, and agent parameter comparison.
- Added parser, integration, process-lifecycle, selector pass-through, and real-CLI E2E tests.
- 726 unit/integration tests pass, all six model-discovery E2Es pass, and the full local E2E
suite was verified before release.