decomposer: generate deliverable files for Define the normalized ingestion contract and pluggable source-connector interface for SCM, CMS, and other content sources.; Implement a GitHub SCM connector that conforms to the normalized ingestion contract and supports scoped full and incremental ingestion of Markdown, plain-text, and source files with webhook and revision metadata.; Implement a SharePoint CMS connector that conforms to the normalized ingestion contract and supports scoped full and incremental ingestion of PDF, DOCX, and HTML files with webhook and revision metadata.; Implement ingestion orchestration and triggers; Normalize, govern, and publish ingested content to the shared knowledge store.; Add deployment/configuration, tests, and documentation for the ingestion agent.; Validate end-to-end ingestion and downstream content availability.
Some checks failed
ci / test (push) Failing after 7s
Some checks failed
ci / test (push) Failing after 7s
This commit is contained in:
@@ -1,23 +1,17 @@
|
||||
from __future__ import annotations
|
||||
from typing import Protocol
|
||||
from .models import Change, IngestionBatch, SyncCursor
|
||||
from typing import Protocol, Iterable, Any
|
||||
from .models import ConnectorConfig, SyncCursor, Change, Document
|
||||
|
||||
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 HTTP(Protocol):
|
||||
def request(self, method: str, url: str, *, headers: dict[str, str], params: dict[str, Any] | None = None) -> dict[str, Any]: ...
|
||||
|
||||
class HTTPClient(Protocol):
|
||||
def get(self, url: str, *, headers: dict[str, str], params: dict | None = None): ...
|
||||
|
||||
class SecretProvider(Protocol):
|
||||
class SecretStore(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 Publisher(Protocol):
|
||||
def upsert(self, documents: Iterable[Document]) -> None: ...
|
||||
def delete(self, ids: Iterable[str], tenant_id: str) -> None: ...
|
||||
|
||||
class KnowledgeStore(Protocol):
|
||||
def upsert(self, documents: list) -> None: ...
|
||||
def delete(self, document_ids: list[str], tenant_id: str) -> None: ...
|
||||
class Connector(Protocol):
|
||||
def full(self, config: ConnectorConfig) -> tuple[list[Document], SyncCursor]: ...
|
||||
def incremental(self, config: ConnectorConfig, cursor: SyncCursor, changes: list[Change] | None = None) -> tuple[list[Document], SyncCursor]: ...
|
||||
def webhook(self, config: ConnectorConfig, payload: dict[str, Any], headers: dict[str, str]) -> list[Change]: ...
|
||||
|
||||
Reference in New Issue
Block a user