Skip to content

Capability providers

Status: Planned (v0.14 plugin host MVP) · ADR: 0005-capability-provider-plugin-model.md

Scope

Capability Provider is the plugin extensibility unit: a typed interface for reasoning, querying, AI, refactoring, diagnostics, import/export, and documentation generation. Third-party and first-party features register as providers — not raw VS Code commands.

Provider catalog

Capability Interface (conceptual) Built-in today Plugin target
Reasoning ReasoningProvider Ontologos via LSP v0.14
Query QueryProvider SQL/SPARQL LSP v0.14
Refactoring RefactoringProvider LSP preview/apply v0.14
Diagnostics DiagnosticsProvider ontocore-diagnostics v0.14
AI AIProvider v1.1+
Import/Export FormatProvider Turtle, OBO, ROBOT CLI v0.14
Documentation DocsProvider ontocore docs v0.14

TypeScript interface sketch (planned)

interface CapabilityProvider {
  id: string
  version: string
  capabilities: CapabilityKind[]
}

interface ReasoningProvider extends CapabilityProvider {
  classify(profile: ReasonerProfile): Promise<ClassifyResult>
  explain(entityIri: string): Promise<Explanation | null>
}

interface RefactoringProvider extends CapabilityProvider {
  preview(op: RefactorOp): Promise<RefactorPreview>
  apply(op: RefactorOp): Promise<ApplyResult>
}

Rust-side host: see design/PLUGIN_SPEC.md and ontocore/plugin-model.md.

Registration

interface CapabilityRegistry {
  register(provider: CapabilityProvider): void
  get<T extends CapabilityProvider>(kind: CapabilityKind, id?: string): T | undefined
  list(kind: CapabilityKind): CapabilityProvider[]
}

OntoCore plugin host discovers providers from workspace config; OntoUI resolves UI contributions (inspector cards, commands) from provider metadata.

Permissions

Providers declare required permissions (read workspace, modify ontology, network, AI). User approves at install/enable time. See ui/PLUGIN_PLATFORM.md.

Evolution

Unifies ui/PLUGIN_PLATFORM.md and design/PLUGIN_SPEC.md under Capability Provider terminology.