Skip to content

feat(registry): typed exact-one ApplicationStateInvoke union for host connectors (#650) - #652

Merged
enricopiovesan merged 1 commit into
mainfrom
claude/issue-650-host-connector-invoke
Nov 4, 2026
Merged

enricopiovesan merged 1 commit into
mainfrom
claude/issue-650-host-connector-invoke

Conversation

@enricopiovesan

Copy link
Copy Markdown
Contributor

Summary

  • Replaces the capability-only typed ApplicationStateInvoke struct with a public, serializable exact-one union (Traverse spec 1773-host-connector-invoke-union v1.0.0, approved 2026-11-03): Capability { capability_id, input_from: Option<String> } or HostConnector { host_connector }.
  • Manifests such as {"host_connector": "audio.permission.request"} now load through typed manifest parsing instead of failing on a missing capability_id. Capability-only manifests parse and serialize with the same field names as before (input_from is now optional per the spec).
  • Neither / both / empty / blank / non-string / unknown-field / input_from-with-connector invokes fail closed with AppStateMachineInvalid and fixed messages that never echo manifest-supplied names or values (tested with a sentinel secret).
  • Bumps traverse-registry to 0.31.0 (breaking public type, on top of the 0.30.0 contracts-range widening from release(traverse-registry): support traverse-contracts 0.17 (#649) #651, which already resolves with traverse-contracts 0.16). CHANGELOG documents the new host-connector manifest support.

Out of scope (per the spec, enforced elsewhere): resolving a connector command against app-declared connectors / Specs 104 and 137 dispatch, which live in Traverse runtime/CLI. Spec 1773's amendments to 044/046/139 are Traverse-repo approvals; this PR does not touch approved-specs.json.

Governing Spec

  • 013-inherited-registry-governance
  • 010-crate-publish-pipeline

Project Item

Definition of Done

  • Parser tests cover both valid variants plus neither/both/empty/unknown cases
  • Existing capability-only manifest serialization/parsing remains compatible (asserted via JSON round-trip)
  • Public error messages contain no manifest-private values
  • Version bumped to 0.31.0; resolves with traverse-contracts 0.16 (range >=0.8.1, <0.18.0)
  • Release notes (CHANGELOG) identify the new host-connector manifest support
  • crates.io publish is the tag-triggered step after merge (not part of this PR)

Validation

  • cargo test -p traverse-registry --locked — all pass (97 application_manifest tests incl. 2 new)
  • cargo clippy -p traverse-registry --all-targets --locked -- -D warnings — clean

🤖 Generated with Claude Code

… connectors (#650)

Adds the Traverse spec 1773 host-connector invoke variant alongside the
capability variant; invalid combinations fail closed with redacted
AppStateMachineInvalid diagnostics.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@enricopiovesan
enricopiovesan enabled auto-merge (squash) November 4, 2026 04:46
@enricopiovesan
enricopiovesan merged commit 521797a into main Nov 4, 2026
11 checks passed
@enricopiovesan
enricopiovesan deleted the claude/issue-650-host-connector-invoke branch November 4, 2026 04:49
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