Skip to content

feat(agent-interface): harness selector-support capability (gtm#396)#10

Merged
vutuanlinh2k2 merged 1 commit into
mainfrom
feat/harness-selector-capability
Jun 30, 2026
Merged

feat(agent-interface): harness selector-support capability (gtm#396)#10
vutuanlinh2k2 merged 1 commit into
mainfrom
feat/harness-selector-capability

Conversation

@vutuanlinh2k2

Copy link
Copy Markdown
Contributor

What

Adds a harness selector-support capability to the single source of truth, for Problem 3 of
gtm-agent#396 (harnesses that ignore the chat pickers):

  • harnessHonorsModel(harness) — does the runner honor a per-turn model override?
  • harnessHonorsEffort(harness) — does it honor a reasoning-effort override?
  • harnessHonorsSelectors(harness) — the AND of both (model + effort pickers are live).

Grounded in the cli-bridge adapter audit, not a guess. Most harnesses honor both, so only the
exceptions are encoded (same table-per-capability style as harnessProviderLock /
harnessReasoningCeiling):

harness honorsModel honorsEffort
opencode, claude-code, codex, kimi-code
amp
openclaw
factory-droids
hermes
nanoclaw

Aliases are canonicalized before keying (e.g. claudeclaude-code).

Why

This is distinct from reasoningEffortsFor (which levels a harness can express). A chat picker
needs to know, up front, whether to even offer a harness — otherwise a user's model/effort choice is
silently dropped (e.g. picking a model on amp does nothing). The sandbox-ui chat picker will consume
these to trim or mark such harnesses.

Verification

  • tsc --noEmit clean, build clean, new symbols present in dist.
  • Full package suite 21/21 (new per-turn selector support describe block).

Release

  • Changeset: @tangle-network/agent-interface minor (0.15.0 → 0.16.0).
  • After publish, sandbox-ui adopts it to filter/annotate the chat harness list (gtm-agent#396 Problem 3).

Add harnessHonorsModel / harnessHonorsEffort / harnessHonorsSelectors — whether a
harness's runner actually honors the per-turn model and reasoning-effort pickers.
Grounded in the cli-bridge adapter audit (amp drops both; openclaw/nanoclaw drop the
model; factory-droids/hermes/nanoclaw drop the effort); everything else honors both.

Lets a chat picker trim or mark harnesses up front so a user's model/effort choice is
never silently ignored. Distinct from reasoningEffortsFor (which levels a harness can
express). Follows the existing table-per-capability pattern; aliases canonicalized.
@vutuanlinh2k2 vutuanlinh2k2 marked this pull request as ready for review June 30, 2026 02:45
@vutuanlinh2k2 vutuanlinh2k2 merged commit dd7c4fe into main Jun 30, 2026
1 check passed
@vutuanlinh2k2 vutuanlinh2k2 deleted the feat/harness-selector-capability branch June 30, 2026 02:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant