Skip to content

acp-probe-v0.0.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 May 09:13
· 132 commits to main since this release
c45b968

Features

  • New result.modelConfig field — the setable model list (#31, #33). ACP describes an agent's models in two different protocol surfaces, and they don't always agree. session/new.models.availableModels[] is the declarative list (best for display); configOptions[id=model].options[] is the contract setConfigOption('model', X) will accept. On codex-acp 0.12.0 the two are entirely disjoint — 24 compound <model>/<effort> ids in availableModels vs 6 bare model names in configOptions[model] — and downstream pickers built on availableModels silently fail when setConfigOption rejects the value (the next prompt finishes with finishReason: "error" and no error frame). The new derived pointer makes the setable list a one-hop typed lookup:

    const result = await probeAgent({ command: 'npx @zed-industries/codex-acp@^0.12.0' })
    
    if (result.modelConfig) {
      for (const id of result.modelConfig.values) {
        // Every id here is a valid setConfigOption('model', X) input.
      }
    }

    modelConfig is null for agents that don't expose configOptions[id=model] at all (e.g. gemini-cli, where setConfigOption itself returns -32601 method not found). Mirrors the existing result.reasoning pattern.

Documentation

  • New "Picking the right model list" section in the package README with three worked code examples (display browser / mutable picker / rich mutable picker) and a quick-reference table. The "Result shape" overview also lists modelConfig with a one-line description.

Internal

  • New EventTranslator-style deriveModelConfig(configOptions) helper next to the existing deriveReasoning in _internal/normalize.ts.
  • Unit, integration, and real-agent e2e coverage added across all three fixture agents (claude / codex / gemini). The codex e2e additionally asserts the bare-id invariant — no /-suffixed values in modelConfig.values against the live agent.

Compatibility

  • Purely additive. result.models is unchanged (still byte-faithful to availableModels[]); result.configOptions is unchanged. No existing consumer breaks.
  • ModelConfigInfo.configId is typed as the string literal 'model' rather than string, so consumers that destructure it get type-safety matching the docs.

⚠️ Alpha software

The public API may change between minor versions until 1.0.0. Pin exact versions. Bug reports + design feedback welcome — open an issue on DaniAkash/acpx.

Full Changelog: acp-probe-v0.0.1...acp-probe-v0.0.2