Create a Custom Adapter
Esta página aún no está disponible en tu idioma.
Adapters connect RaiSE to external services. They implement Python Protocol contracts and are discovered via entry points.
Protocol Contracts
RaiSE defines two primary adapter protocols in rai_cli.adapters.protocols:
ProjectManagementAdapter — for issue trackers:
from typing import Protocol, runtime_checkable
@runtime_checkableclass ProjectManagementAdapter(Protocol): def create_issue(self, project_key: str, issue: IssueSpec) -> IssueRef: ... def get_issue(self, key: str) -> IssueDetail: ... def update_issue(self, key: str, fields: dict[str, Any]) -> IssueRef: ... def transition_issue(self, key: str, status: str) -> IssueRef: ... def search(self, query: str, limit: int = 50) -> list[IssueSummary]: ... def health(self) -> AdapterHealth: ...DocumentationTarget — for docs platforms:
@runtime_checkableclass DocumentationTarget(Protocol): def can_publish(self, doc_type: str, metadata: dict[str, Any]) -> bool: ... def publish(self, doc_type: str, content: str, metadata: dict[str, Any]) -> PublishResult: ... def get_page(self, identifier: str) -> PageContent: ... def search(self, query: str, limit: int = 10) -> list[PageSummary]: ... def health(self) -> AdapterHealth: ...Both are @runtime_checkable, so RaiSE verifies compliance with isinstance().
Async-First Architecture
Concrete adapters implement the async variants (AsyncProjectManagementAdapter, AsyncDocumentationTarget). The CLI consumes sync wrappers:
from rai_cli.adapters.sync import SyncPMAdapter
class MyTrackerAsync: async def create_issue(self, project_key, issue): # Your async implementation ...
# CLI consumptionadapter = SyncPMAdapter(MyTrackerAsync())Entry Point Registration
Register your adapter in pyproject.toml:
[project.entry-points."rai.adapters.pm"]my-tracker = "my_package.adapter:MyTrackerAdapter"
[project.entry-points."rai.docs.targets"]my-docs = "my_package.docs:MyDocsTarget"The entry point group names are stable contracts:
rai.adapters.pm— project managementrai.docs.targets— documentationrai.governance.schemas— governance schemasrai.governance.parsers— governance parsersrai.graph.backends— graph storage
Validation
After registration, verify your adapter:
# List all discovered adaptersrai adapter list
# Check Protocol compliancerai adapter check
# Validate declarative YAML configrai adapter validate .raise/adapters/my-tracker.yamlrai adapter check loads every registered entry point and runs isinstance() against the Protocol contract. Failures show which methods are missing.