[GH-ISSUE #52] Replace string capabilities with typed provider descriptors #39

Closed
opened 2026-10-15 18:20:19 +00:00 by bsakaguchi · 1 comment
Owner

Originally created by @morluto on GitHub (Jul 12, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/52

Problem

Provider operations and capabilities are arbitrary strings. Misspellings compile, routing is not explainable, and agents cannot determine safety, pagination, or availability.

Outcome

Introduce closed operation names and structured capability descriptors.

Public contract

Each descriptor includes provider, operation, availability/reason, input/output contract version, pagination and exhaustiveness, read/mutation behavior, process launch, UI, network, filesystem write, permission-change and root requirements, limits, and limitations.

Requests use a closed operation union. Unsupported operations return a typed unavailable error rather than falling through or throwing.

Acceptance criteria

  • No provider advertises an undeclared string capability.
  • Capability discovery is deterministic and immutable.
  • Routing or selection decisions are explainable in evidence.
  • Hopper passes conformance for every advertised operation.
  • A fake provider demonstrates partial availability and typed unavailability.
  • Adding a provider does not require editing Hopper-specific schemas.

Dependencies

Parent: #48. Requires provider-neutral Evidence v2 metadata.

Non-goals

Adding a second production provider or lowest-common-denominator semantic APIs.

Originally created by @morluto on GitHub (Jul 12, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/52 ## Problem Provider operations and capabilities are arbitrary strings. Misspellings compile, routing is not explainable, and agents cannot determine safety, pagination, or availability. ## Outcome Introduce closed operation names and structured capability descriptors. ## Public contract Each descriptor includes provider, operation, availability/reason, input/output contract version, pagination and exhaustiveness, read/mutation behavior, process launch, UI, network, filesystem write, permission-change and root requirements, limits, and limitations. Requests use a closed operation union. Unsupported operations return a typed unavailable error rather than falling through or throwing. ## Acceptance criteria - No provider advertises an undeclared string capability. - Capability discovery is deterministic and immutable. - Routing or selection decisions are explainable in evidence. - Hopper passes conformance for every advertised operation. - A fake provider demonstrates partial availability and typed unavailability. - Adding a provider does not require editing Hopper-specific schemas. ## Dependencies Parent: #48. Requires provider-neutral Evidence v2 metadata. ## Non-goals Adding a second production provider or lowest-common-denominator semantic APIs.
Author
Owner

@morluto commented on GitHub (Jul 17, 2026):

Implemented on main. AnalysisProvider.ts defines the closed operation union and structured immutable CapabilityDescriptor; Hopper, Ghidra, artifact, native, browser, and managed providers advertise typed descriptors. Registry/router/session tests cover deterministic discovery, partial providers, explainable selection, and typed unavailability without dispatch.

<!-- gh-comment-id:5001469499 --> @morluto commented on GitHub (Jul 17, 2026): Implemented on main. `AnalysisProvider.ts` defines the closed operation union and structured immutable `CapabilityDescriptor`; Hopper, Ghidra, artifact, native, browser, and managed providers advertise typed descriptors. Registry/router/session tests cover deterministic discovery, partial providers, explainable selection, and typed unavailability without dispatch.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#39
No description provided.