mdrack 1.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mdrack/__init__.py +3 -0
- mdrack/__main__.py +6 -0
- mdrack/adapters/__init__.py +1 -0
- mdrack/adapters/lmstudio/__init__.py +1 -0
- mdrack/adapters/lmstudio/fakes.py +84 -0
- mdrack/adapters/markdown_it/__init__.py +5 -0
- mdrack/adapters/markdown_it/parser.py +695 -0
- mdrack/adapters/sqlite/__init__.py +9 -0
- mdrack/adapters/sqlite/canonical_catalog.py +145 -0
- mdrack/adapters/sqlite/index_storage.py +558 -0
- mdrack/adapters/sqlite/resource_store.py +5 -0
- mdrack/application/__init__.py +40 -0
- mdrack/application/artifact_cache.py +546 -0
- mdrack/application/chunking.py +735 -0
- mdrack/application/compatibility.py +1004 -0
- mdrack/application/indexing.py +708 -0
- mdrack/application/manifest.py +652 -0
- mdrack/application/metadata_filters.py +117 -0
- mdrack/application/metadata_normalization.py +238 -0
- mdrack/application/metadata_projection.py +362 -0
- mdrack/application/query.py +68 -0
- mdrack/application/resource_catalog.py +1168 -0
- mdrack/application/resources.py +1088 -0
- mdrack/application/retrieval.py +882 -0
- mdrack/application/textual_embedding_space.py +74 -0
- mdrack/application/transcript_ingestion.py +774 -0
- mdrack/application/vector_values.py +145 -0
- mdrack/application/video_composition.py +448 -0
- mdrack/cli/__init__.py +501 -0
- mdrack/cli/commands/__init__.py +0 -0
- mdrack/cli/commands/cache.py +147 -0
- mdrack/cli/commands/eval.py +212 -0
- mdrack/cli/commands/files.py +110 -0
- mdrack/cli/commands/images.py +245 -0
- mdrack/cli/commands/metadata.py +212 -0
- mdrack/cli/commands/model.py +775 -0
- mdrack/cli/commands/raw_audio.py +69 -0
- mdrack/cli/commands/raw_text.py +55 -0
- mdrack/cli/commands/raw_video.py +54 -0
- mdrack/cli/commands/read.py +169 -0
- mdrack/cli/commands/rebuild.py +150 -0
- mdrack/cli/commands/resource.py +161 -0
- mdrack/cli/commands/resources.py +340 -0
- mdrack/cli/commands/scan.py +103 -0
- mdrack/cli/commands/search.py +501 -0
- mdrack/cli/commands/transcript.py +253 -0
- mdrack/cli/commands/video.py +186 -0
- mdrack/cli/help_topics.py +144 -0
- mdrack/config/__init__.py +1 -0
- mdrack/config/defaults.py +40 -0
- mdrack/config/loader.py +263 -0
- mdrack/config/models.py +209 -0
- mdrack/diagnostics/__init__.py +0 -0
- mdrack/diagnostics/doctor.py +112 -0
- mdrack/diagnostics/integrity.py +48 -0
- mdrack/diagnostics/storage.py +600 -0
- mdrack/domain/__init__.py +5 -0
- mdrack/domain/blocks.py +70 -0
- mdrack/domain/chunks.py +44 -0
- mdrack/domain/documents.py +75 -0
- mdrack/domain/identifiers.py +33 -0
- mdrack/domain/indexing.py +165 -0
- mdrack/domain/profiles.py +137 -0
- mdrack/domain/retrieval.py +99 -0
- mdrack/embeddings/__init__.py +0 -0
- mdrack/embeddings/fake.py +143 -0
- mdrack/embeddings/hashing.py +24 -0
- mdrack/embeddings/lmstudio.py +27 -0
- mdrack/embeddings/protocol.py +5 -0
- mdrack/embeddings/runtime.py +79 -0
- mdrack/eval/__init__.py +0 -0
- mdrack/eval/chunk_audit.py +273 -0
- mdrack/eval/metrics.py +74 -0
- mdrack/eval/privacy.py +212 -0
- mdrack/eval/quality.py +255 -0
- mdrack/eval/queries.py +146 -0
- mdrack/eval/reporting.py +181 -0
- mdrack/eval/retrieval.py +266 -0
- mdrack/indexing/__init__.py +0 -0
- mdrack/indexing/change_detector.py +116 -0
- mdrack/indexing/indexer.py +59 -0
- mdrack/indexing/scanner.py +148 -0
- mdrack/indexing/transactions.py +266 -0
- mdrack/ingestion/__init__.py +25 -0
- mdrack/ingestion/frame_captions.py +171 -0
- mdrack/ingestion/images.py +787 -0
- mdrack/ingestion/media_manifests.py +105 -0
- mdrack/ingestion/raw_audio.py +314 -0
- mdrack/ingestion/raw_source_provenance.py +448 -0
- mdrack/ingestion/raw_text.py +169 -0
- mdrack/ingestion/raw_video.py +286 -0
- mdrack/ingestion/transcripts/__init__.py +120 -0
- mdrack/ingestion/transcripts/common.py +306 -0
- mdrack/ingestion/transcripts/srt.py +72 -0
- mdrack/ingestion/transcripts/timed_json.py +81 -0
- mdrack/ingestion/transcripts/webvtt.py +86 -0
- mdrack/ingestion/transcripts/whisper_json.py +77 -0
- mdrack/integrations/__init__.py +1 -0
- mdrack/integrations/lmstudio/__init__.py +26 -0
- mdrack/integrations/lmstudio/client.py +852 -0
- mdrack/integrations/providers/__init__.py +21 -0
- mdrack/integrations/providers/contracts.py +352 -0
- mdrack/markdown/__init__.py +0 -0
- mdrack/markdown/chunk_builder.py +425 -0
- mdrack/markdown/embedding_text.py +63 -0
- mdrack/markdown/frontmatter.py +58 -0
- mdrack/markdown/ir.py +124 -0
- mdrack/markdown/parser.py +337 -0
- mdrack/markdown/section_builder.py +174 -0
- mdrack/output/__init__.py +0 -0
- mdrack/output/envelope.py +41 -0
- mdrack/output/errors.py +75 -0
- mdrack/output/json_output.py +24 -0
- mdrack/ports/__init__.py +27 -0
- mdrack/ports/embeddings.py +35 -0
- mdrack/ports/model_catalog.py +79 -0
- mdrack/ports/model_lifecycle.py +22 -0
- mdrack/ports/parser.py +22 -0
- mdrack/ports/reranker.py +39 -0
- mdrack/ports/storage.py +112 -0
- mdrack/public_api/__init__.py +57 -0
- mdrack/public_api/engine.py +745 -0
- mdrack/public_api/models.py +82 -0
- mdrack/search/__init__.py +3 -0
- mdrack/search/hybrid.py +85 -0
- mdrack/search/scoring.py +81 -0
- mdrack/search/semantic.py +64 -0
- mdrack/search/text.py +160 -0
- mdrack/storage/__init__.py +0 -0
- mdrack/storage/sqlite/__init__.py +0 -0
- mdrack/storage/sqlite/connection.py +37 -0
- mdrack/storage/sqlite/fts.py +143 -0
- mdrack/storage/sqlite/migrations/0000_schema_migrations.sql +4 -0
- mdrack/storage/sqlite/migrations/0001_initial.sql +77 -0
- mdrack/storage/sqlite/migrations/0002_fts.sql +6 -0
- mdrack/storage/sqlite/migrations/0003_provenance.sql +26 -0
- mdrack/storage/sqlite/migrations/0004_embedding_profiles.sql +36 -0
- mdrack/storage/sqlite/migrations/0005_assets.sql +44 -0
- mdrack/storage/sqlite/migrations/0006_complete_provenance.sql +25 -0
- mdrack/storage/sqlite/migrations/0007_resource_core.sql +123 -0
- mdrack/storage/sqlite/migrations.py +200 -0
- mdrack/storage/sqlite/repositories.py +212 -0
- mdrack/storage/sqlite/vector.py +212 -0
- mdrack-1.3.0.dist-info/METADATA +200 -0
- mdrack-1.3.0.dist-info/RECORD +148 -0
- mdrack-1.3.0.dist-info/WHEEL +4 -0
- mdrack-1.3.0.dist-info/entry_points.txt +2 -0
- mdrack-1.3.0.dist-info/licenses/LICENSE +21 -0
mdrack/__init__.py
ADDED
mdrack/__main__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Infrastructure adapters implementing MDRack ports."""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Offline LM Studio adapter helpers and deterministic fakes."""
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"""Offline deterministic fakes for LM Studio-facing ports."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from mdrack.domain.profiles import EmbeddingCapabilities
|
|
6
|
+
from mdrack.embeddings.fake import FakeEmbeddingProvider
|
|
7
|
+
from mdrack.ports.model_catalog import ModelDescriptor
|
|
8
|
+
from mdrack.ports.model_lifecycle import LoadedModel
|
|
9
|
+
from mdrack.ports.reranker import (
|
|
10
|
+
RerankDocument,
|
|
11
|
+
RerankerError,
|
|
12
|
+
RerankerUnavailable,
|
|
13
|
+
RerankScore,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class DeterministicReranker:
|
|
18
|
+
def __init__(
|
|
19
|
+
self,
|
|
20
|
+
*,
|
|
21
|
+
score_by_candidate: dict[str, float] | None = None,
|
|
22
|
+
mode: str = "success",
|
|
23
|
+
) -> None:
|
|
24
|
+
self.score_by_candidate = score_by_candidate or {}
|
|
25
|
+
self.mode = mode
|
|
26
|
+
|
|
27
|
+
async def rerank(
|
|
28
|
+
self,
|
|
29
|
+
query: str,
|
|
30
|
+
documents: list[RerankDocument],
|
|
31
|
+
*,
|
|
32
|
+
top_n: int,
|
|
33
|
+
) -> list[RerankScore]:
|
|
34
|
+
del query
|
|
35
|
+
if self.mode == "unsupported":
|
|
36
|
+
raise RerankerUnavailable()
|
|
37
|
+
if self.mode == "failure":
|
|
38
|
+
raise RerankerError("provider_error")
|
|
39
|
+
scored = [
|
|
40
|
+
RerankScore(document.candidate_id, self.score_by_candidate.get(document.candidate_id, 0.0))
|
|
41
|
+
for document in documents
|
|
42
|
+
]
|
|
43
|
+
scored.sort(key=lambda item: (-item.score, item.candidate_id))
|
|
44
|
+
return scored[:top_n]
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class FakeModelCatalogProvider:
|
|
48
|
+
def __init__(self, models: list[ModelDescriptor] | None = None) -> None:
|
|
49
|
+
self.models = models or []
|
|
50
|
+
|
|
51
|
+
async def list_models(self) -> list[ModelDescriptor]:
|
|
52
|
+
return list(self.models)
|
|
53
|
+
|
|
54
|
+
async def embedding_capabilities(self, model_key: str) -> EmbeddingCapabilities:
|
|
55
|
+
del model_key
|
|
56
|
+
return EmbeddingCapabilities()
|
|
57
|
+
|
|
58
|
+
async def supports_reranking(self, model_key: str) -> bool | None:
|
|
59
|
+
del model_key
|
|
60
|
+
return None
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class FakeModelLifecycleProvider:
|
|
64
|
+
def __init__(self) -> None:
|
|
65
|
+
self.loaded: dict[str, LoadedModel] = {}
|
|
66
|
+
|
|
67
|
+
async def list_loaded_models(self) -> list[LoadedModel]:
|
|
68
|
+
return sorted(self.loaded.values(), key=lambda model: model.key)
|
|
69
|
+
|
|
70
|
+
async def load_model(self, model_key: str) -> LoadedModel:
|
|
71
|
+
loaded = LoadedModel(model_key, f"fake:{model_key}", "loaded")
|
|
72
|
+
self.loaded[loaded.instance_id or model_key] = loaded
|
|
73
|
+
return loaded
|
|
74
|
+
|
|
75
|
+
async def unload_model(self, instance_id: str) -> None:
|
|
76
|
+
self.loaded.pop(instance_id, None)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
__all__ = [
|
|
80
|
+
"DeterministicReranker",
|
|
81
|
+
"FakeEmbeddingProvider",
|
|
82
|
+
"FakeModelCatalogProvider",
|
|
83
|
+
"FakeModelLifecycleProvider",
|
|
84
|
+
]
|