Extensible canonical internal processing refactoring

This commit is contained in:
2026-05-04 11:06:11 +02:00
parent 4a16ccf1e1
commit d977f9e67c
20 changed files with 1815 additions and 16 deletions

View File

@@ -0,0 +1,92 @@
"""Built-in internal extension descriptors."""
from __future__ import annotations
from markitect_tool.extension.registry import ExtensionDescriptor, ExtensionRegistry
from markitect_tool.extension.processing import ProcessingCapability
from markitect_tool.query import default_query_engine_registry
def builtin_extension_registry() -> ExtensionRegistry:
"""Return descriptors for built-in Markitect extensions."""
registry = default_query_engine_registry().extension_registry()
for descriptor in _processor_descriptors() + [_local_sqlite_backend_descriptor()]:
registry.register(descriptor)
return registry
def _processor_descriptors() -> list[ExtensionDescriptor]:
return [
ExtensionDescriptor(
id="processor.identity",
kind="processor",
summary="Return fenced block content unchanged.",
capabilities=[
ProcessingCapability(id="processor", kind="execute"),
ProcessingCapability(id="deterministic", kind="execution"),
],
input_contract="ProcessorRequest",
output_contract="ProcessorResult",
diagnostics_namespace="processor",
provenance_prefix="processor.identity",
cli={"commands": ["mkt process"]},
docs=["docs/processors.md"],
),
ExtensionDescriptor(
id="processor.uppercase",
kind="processor",
summary="Uppercase fenced block content deterministically.",
capabilities=[
ProcessingCapability(id="processor", kind="execute"),
ProcessingCapability(id="deterministic", kind="execution"),
],
input_contract="ProcessorRequest",
output_contract="ProcessorResult",
diagnostics_namespace="processor",
provenance_prefix="processor.uppercase",
cli={"commands": ["mkt process"]},
docs=["docs/processors.md"],
),
ExtensionDescriptor(
id="processor.include",
kind="processor",
summary="Resolve a content reference into fenced block output.",
capabilities=[
ProcessingCapability(id="processor", kind="execute"),
ProcessingCapability(id="references", kind="read"),
ProcessingCapability(id="filesystem", kind="read"),
],
safety={"reads_files": True, "writes_files": False, "network": False},
input_contract="ProcessorRequest",
output_contract="ProcessorResult",
diagnostics_namespace="processor",
provenance_prefix="processor.include",
cli={"commands": ["mkt process"]},
docs=["docs/processors.md", "docs/content-references.md"],
),
]
def _local_sqlite_backend_descriptor() -> ExtensionDescriptor:
return ExtensionDescriptor(
id="backend.local-sqlite",
kind="backend",
summary="Local SQLite snapshot, metadata, JSON, and FTS5 index backend.",
capabilities=[
ProcessingCapability(id="snapshots", kind="backend"),
ProcessingCapability(id="ast", kind="backend"),
ProcessingCapability(id="json", kind="backend"),
ProcessingCapability(id="fts", kind="backend"),
ProcessingCapability(id="sql", kind="backend"),
ProcessingCapability(id="provenance", kind="backend"),
],
safety={"reads_files": True, "writes_local_cache": True, "network": False},
input_contract="Markdown files/directories",
output_contract="SQLite snapshot/index store",
diagnostics_namespace="backend.local_sqlite",
provenance_prefix="local_snapshot_store",
cli={"commands": ["mkt cache init", "mkt cache index", "mkt cache query", "mkt search"]},
docs=["docs/local-index-backend.md", "docs/backend-fabric.md"],
examples=["examples/backends/local-sqlite-backend.md"],
)