import { ScopePredicateResult, ScopePredicateSource } from "../../../common/repositories/scope-predicate.source"; import { AgentScope } from "../../../common/types/agent.scope"; import { GraphCatalogService } from "./graph.catalog.service"; /** * Turns the catalog's compiled scope chains into ONE boolean expression that * confines a node alias to the run's scope root. * * The expression is a union over labels, because the alias it guards is * untyped — retrieval binds `(data)` to any entity that owns chunks: * * ( * (data:Root AND data.id = $agentScopeId) * OR (data:Child AND EXISTS { MATCH (data)-[:PART_OF]->(:Root { id: $agentScopeId }) }) * … * ) * * FAIL-CLOSED, twice over: * - a type with no chain to THIS root contributes no branch, so it can never * match — the same ruling `ScopeGuard` already applies when it post-filters; * - if no type at all can reach the root, `build` returns null and the caller * must retrieve nothing rather than fall back to company-wide retrieval. */ export declare class ScopePredicateService implements ScopePredicateSource { private readonly catalog; private readonly logger; constructor(catalog: GraphCatalogService); build(params: { alias: string; scope: AgentScope; }): ScopePredicateResult | null; } //# sourceMappingURL=scope.predicate.service.d.ts.map