fix: harden preprocessing state and child capabilities
This commit is contained in:
@@ -24,11 +24,11 @@ from tht.vectorstore.store import SyncStats, content_hash
|
||||
vector_app = typer.Typer(help="Indice semantico Qdrant (derivato, rigenerabile)")
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def _require_writer_capability() -> None:
|
||||
import os
|
||||
if os.environ.get("THOTH_WORKSPACE_CAPABILITY_REQUIRED") == "1":
|
||||
from tht.workspace_writer_lock import require_workspace_writer_capability
|
||||
require_workspace_writer_capability()
|
||||
def _require_writer_capability(*, workspace_id: str | None = None, revision: str | None = None) -> None:
|
||||
# Authorization is unconditional: an environment marker is attacker-controlled
|
||||
# and must never turn a mutating direct invocation into an authorized child.
|
||||
from tht.workspace_writer_lock import require_workspace_writer_capability
|
||||
require_workspace_writer_capability(workspace_id=workspace_id, revision=revision)
|
||||
|
||||
|
||||
def make_embedder(embeddings_cfg):
|
||||
@@ -69,8 +69,8 @@ def open_searcher(cfg):
|
||||
return AdapterSearcher()
|
||||
|
||||
|
||||
def sync_canonical_records(collection, records, *, store, embedder):
|
||||
_require_writer_capability()
|
||||
def sync_canonical_records(collection, records, *, store, embedder, config=None):
|
||||
_require_writer_capability(workspace_id=getattr(getattr(config, "runtime_identity", None), "workspace_id", None), revision=getattr(getattr(config, "runtime_identity", None), "workspace_revision", None))
|
||||
kinds = sorted({record.kind for record in records})
|
||||
existing = store.existing_hashes(collection, kinds)
|
||||
pending = []
|
||||
@@ -236,7 +236,7 @@ def index_schema_data(
|
||||
"schema_records",
|
||||
records,
|
||||
store=build_vector_store(cfg, require_write=True),
|
||||
embedder=make_embedder(cfg.embeddings),
|
||||
embedder=make_embedder(cfg.embeddings), config=cfg,
|
||||
)
|
||||
return {
|
||||
"status": "succeeded",
|
||||
|
||||
Reference in New Issue
Block a user