24 lines
890 B
Python
24 lines
890 B
Python
from __future__ import annotations
|
|
from typing import Protocol
|
|
from .models import Change, IngestionBatch, SyncCursor
|
|
|
|
class Connector(Protocol):
|
|
name: str
|
|
def full(self, tenant_id: str) -> IngestionBatch: ...
|
|
def incremental(self, tenant_id: str, cursor: SyncCursor | None) -> IngestionBatch: ...
|
|
def changes_from_webhook(self, payload: dict) -> list[Change]: ...
|
|
|
|
class HTTPClient(Protocol):
|
|
def get(self, url: str, *, headers: dict[str, str], params: dict | None = None): ...
|
|
|
|
class SecretProvider(Protocol):
|
|
def get(self, ref: str) -> str: ...
|
|
|
|
class CursorStore(Protocol):
|
|
def load(self, tenant_id: str, connector: str) -> SyncCursor | None: ...
|
|
def save(self, cursor: SyncCursor) -> None: ...
|
|
|
|
class KnowledgeStore(Protocol):
|
|
def upsert(self, documents: list) -> None: ...
|
|
def delete(self, document_ids: list[str], tenant_id: str) -> None: ...
|