@duckcodeailabs/dql-agent 1.14.2 → 1.14.4
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.
- package/dist/agent-run-engine.d.ts +239 -4
- package/dist/agent-run-engine.d.ts.map +1 -1
- package/dist/agent-run-engine.js +2924 -85
- package/dist/agent-run-engine.js.map +1 -1
- package/dist/agent-run-gates.d.ts.map +1 -1
- package/dist/agent-run-gates.js +51 -3
- package/dist/agent-run-gates.js.map +1 -1
- package/dist/agent-run-planner.d.ts +6 -0
- package/dist/agent-run-planner.d.ts.map +1 -1
- package/dist/agent-run-planner.js +2 -0
- package/dist/agent-run-planner.js.map +1 -1
- package/dist/agent-run-store.d.ts.map +1 -1
- package/dist/agent-run-store.js +591 -11
- package/dist/agent-run-store.js.map +1 -1
- package/dist/agentic/analyst-loop.d.ts +9 -1
- package/dist/agentic/analyst-loop.d.ts.map +1 -1
- package/dist/agentic/analyst-loop.js +204 -4
- package/dist/agentic/analyst-loop.js.map +1 -1
- package/dist/agentic/assumptions.d.ts +1 -1
- package/dist/agentic/assumptions.d.ts.map +1 -1
- package/dist/agentic/assumptions.js.map +1 -1
- package/dist/agentic/ledger-tools.d.ts.map +1 -1
- package/dist/agentic/ledger-tools.js +8 -1
- package/dist/agentic/ledger-tools.js.map +1 -1
- package/dist/agentic/orchestrator-policy.d.ts +3 -1
- package/dist/agentic/orchestrator-policy.d.ts.map +1 -1
- package/dist/agentic/orchestrator-policy.js +1 -1
- package/dist/agentic/orchestrator-policy.js.map +1 -1
- package/dist/agentic/research-agent.d.ts.map +1 -1
- package/dist/agentic/research-agent.js +10 -1
- package/dist/agentic/research-agent.js.map +1 -1
- package/dist/agentic/sql-authorization.d.ts +8 -0
- package/dist/agentic/sql-authorization.d.ts.map +1 -1
- package/dist/agentic/sql-authorization.js +3 -0
- package/dist/agentic/sql-authorization.js.map +1 -1
- package/dist/agentic/tool-loop.d.ts +13 -1
- package/dist/agentic/tool-loop.d.ts.map +1 -1
- package/dist/agentic/tool-loop.js +441 -32
- package/dist/agentic/tool-loop.js.map +1 -1
- package/dist/analytical-compatibility.d.ts.map +1 -1
- package/dist/analytical-compatibility.js +8 -1
- package/dist/analytical-compatibility.js.map +1 -1
- package/dist/analytical-failure-repair.d.ts.map +1 -1
- package/dist/analytical-failure-repair.js +6 -2
- package/dist/analytical-failure-repair.js.map +1 -1
- package/dist/analytical-frame.d.ts +42 -1
- package/dist/analytical-frame.d.ts.map +1 -1
- package/dist/analytical-frame.js +490 -26
- package/dist/analytical-frame.js.map +1 -1
- package/dist/analytical-orchestration.d.ts +1259 -9
- package/dist/analytical-orchestration.d.ts.map +1 -1
- package/dist/analytical-orchestration.js +970 -84
- package/dist/analytical-orchestration.js.map +1 -1
- package/dist/answer-loop.d.ts +230 -10
- package/dist/answer-loop.d.ts.map +1 -1
- package/dist/answer-loop.js +1182 -85
- package/dist/answer-loop.js.map +1 -1
- package/dist/answer-shape.d.ts +27 -0
- package/dist/answer-shape.d.ts.map +1 -1
- package/dist/answer-shape.js +55 -0
- package/dist/answer-shape.js.map +1 -1
- package/dist/ask-observability/index.d.ts +11 -0
- package/dist/ask-observability/index.d.ts.map +1 -0
- package/dist/ask-observability/index.js +7 -0
- package/dist/ask-observability/index.js.map +1 -0
- package/dist/ask-observability/instrumentation.d.ts +35 -0
- package/dist/ask-observability/instrumentation.d.ts.map +1 -0
- package/dist/ask-observability/instrumentation.js +523 -0
- package/dist/ask-observability/instrumentation.js.map +1 -0
- package/dist/ask-observability/observer.d.ts +62 -0
- package/dist/ask-observability/observer.d.ts.map +1 -0
- package/dist/ask-observability/observer.js +537 -0
- package/dist/ask-observability/observer.js.map +1 -0
- package/dist/ask-observability/portable.d.ts +98 -0
- package/dist/ask-observability/portable.d.ts.map +1 -0
- package/dist/ask-observability/portable.js +1089 -0
- package/dist/ask-observability/portable.js.map +1 -0
- package/dist/ask-observability/store.d.ts +130 -0
- package/dist/ask-observability/store.d.ts.map +1 -0
- package/dist/ask-observability/store.js +1114 -0
- package/dist/ask-observability/store.js.map +1 -0
- package/dist/ask-observability/types.d.ts +380 -0
- package/dist/ask-observability/types.d.ts.map +1 -0
- package/dist/ask-observability/types.js +2 -0
- package/dist/ask-observability/types.js.map +1 -0
- package/dist/ask-observability/utils.d.ts +21 -0
- package/dist/ask-observability/utils.d.ts.map +1 -0
- package/dist/ask-observability/utils.js +102 -0
- package/dist/ask-observability/utils.js.map +1 -0
- package/dist/ask-runtime/ask-agent-runtime-v2.d.ts +850 -0
- package/dist/ask-runtime/ask-agent-runtime-v2.d.ts.map +1 -0
- package/dist/ask-runtime/ask-agent-runtime-v2.js +1716 -0
- package/dist/ask-runtime/ask-agent-runtime-v2.js.map +1 -0
- package/dist/ask-runtime/ask-analyst-runtime.d.ts +95 -0
- package/dist/ask-runtime/ask-analyst-runtime.d.ts.map +1 -0
- package/dist/ask-runtime/ask-analyst-runtime.js +8280 -0
- package/dist/ask-runtime/ask-analyst-runtime.js.map +1 -0
- package/dist/conversation/session-store.d.ts +31 -0
- package/dist/conversation/session-store.d.ts.map +1 -1
- package/dist/conversation/session-store.js +38 -0
- package/dist/conversation/session-store.js.map +1 -1
- package/dist/conversation/snapshot.d.ts +4 -1
- package/dist/conversation/snapshot.d.ts.map +1 -1
- package/dist/conversation/snapshot.js +85 -3
- package/dist/conversation/snapshot.js.map +1 -1
- package/dist/conversation/turn-trust.d.ts.map +1 -1
- package/dist/conversation/turn-trust.js +2 -0
- package/dist/conversation/turn-trust.js.map +1 -1
- package/dist/embeddings/provider.d.ts +1 -0
- package/dist/embeddings/provider.d.ts.map +1 -1
- package/dist/embeddings/provider.js +18 -0
- package/dist/embeddings/provider.js.map +1 -1
- package/dist/generated-analytical-proposal.d.ts +37 -1
- package/dist/generated-analytical-proposal.d.ts.map +1 -1
- package/dist/generated-analytical-proposal.js +246 -3
- package/dist/generated-analytical-proposal.js.map +1 -1
- package/dist/governed-relational-compiler.d.ts +15 -0
- package/dist/governed-relational-compiler.d.ts.map +1 -1
- package/dist/governed-relational-compiler.js +99 -1
- package/dist/governed-relational-compiler.js.map +1 -1
- package/dist/index.d.ts +21 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -7
- package/dist/index.js.map +1 -1
- package/dist/intent-controller.d.ts +87 -1
- package/dist/intent-controller.d.ts.map +1 -1
- package/dist/intent-controller.js +2 -2
- package/dist/intent-controller.js.map +1 -1
- package/dist/kg/build.js +32 -2
- package/dist/kg/build.js.map +1 -1
- package/dist/meaning-resolution.d.ts +207 -6
- package/dist/meaning-resolution.d.ts.map +1 -1
- package/dist/meaning-resolution.js +439 -53
- package/dist/meaning-resolution.js.map +1 -1
- package/dist/metadata/analysis-planner.d.ts.map +1 -1
- package/dist/metadata/analysis-planner.js +78 -7
- package/dist/metadata/analysis-planner.js.map +1 -1
- package/dist/metadata/catalog.d.ts +14 -0
- package/dist/metadata/catalog.d.ts.map +1 -1
- package/dist/metadata/catalog.js +29 -2
- package/dist/metadata/catalog.js.map +1 -1
- package/dist/metadata/meaning-evidence.d.ts +28 -2
- package/dist/metadata/meaning-evidence.d.ts.map +1 -1
- package/dist/metadata/meaning-evidence.js +373 -16
- package/dist/metadata/meaning-evidence.js.map +1 -1
- package/dist/plan-execution-adapter.d.ts +9 -1
- package/dist/plan-execution-adapter.d.ts.map +1 -1
- package/dist/plan-execution-adapter.js +93 -13
- package/dist/plan-execution-adapter.js.map +1 -1
- package/dist/provider-egress.d.ts +28 -11
- package/dist/provider-egress.d.ts.map +1 -1
- package/dist/provider-egress.js +72 -22
- package/dist/provider-egress.js.map +1 -1
- package/dist/providers/claude.d.ts +2 -2
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +201 -37
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/dispatch.d.ts +27 -1
- package/dist/providers/dispatch.d.ts.map +1 -1
- package/dist/providers/dispatch.js +63 -1
- package/dist/providers/dispatch.js.map +1 -1
- package/dist/providers/gemini.js +10 -10
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/index.d.ts +2 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama.js +15 -15
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.d.ts +2 -2
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +213 -43
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/types.d.ts +131 -1
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/relationship-proof.d.ts +81 -0
- package/dist/relationship-proof.d.ts.map +1 -1
- package/dist/relationship-proof.js +228 -4
- package/dist/relationship-proof.js.map +1 -1
- package/dist/requirement-clauses.d.ts +23 -0
- package/dist/requirement-clauses.d.ts.map +1 -0
- package/dist/requirement-clauses.js +70 -0
- package/dist/requirement-clauses.js.map +1 -0
- package/dist/resolved-analytical-plan.d.ts +18 -4
- package/dist/resolved-analytical-plan.d.ts.map +1 -1
- package/dist/resolved-analytical-plan.js +953 -50
- package/dist/resolved-analytical-plan.js.map +1 -1
- package/dist/router.d.ts +118 -2
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +2481 -232
- package/dist/router.js.map +1 -1
- package/dist/semantic-bridge/compose.d.ts.map +1 -1
- package/dist/semantic-bridge/compose.js +23 -4
- package/dist/semantic-bridge/compose.js.map +1 -1
- package/package.json +4 -4
|
@@ -37,6 +37,35 @@ export interface ProviderDispatchEvent {
|
|
|
37
37
|
* approximation.
|
|
38
38
|
*/
|
|
39
39
|
export type ProviderDispatchObserver = (event: ProviderDispatchEvent) => Record<string, unknown>;
|
|
40
|
+
/** Content-free completion observation for one already-admitted physical send. */
|
|
41
|
+
export interface ProviderDispatchCompletionEvent {
|
|
42
|
+
provider: ProviderName;
|
|
43
|
+
operation: ProviderDispatchOperation;
|
|
44
|
+
attemptIndex: number;
|
|
45
|
+
model?: string;
|
|
46
|
+
outcome: 'ok' | 'error' | 'cancelled';
|
|
47
|
+
/**
|
|
48
|
+
* The physical boundary which just settled. A successful transport/process
|
|
49
|
+
* observation is deliberately not a successful provider result: parsers and
|
|
50
|
+
* stream consumers can still fail afterwards. Existing providers that do
|
|
51
|
+
* not report this field retain the historical final-result interpretation.
|
|
52
|
+
*/
|
|
53
|
+
settlement?: 'transport' | 'process' | 'result';
|
|
54
|
+
httpStatus?: number;
|
|
55
|
+
/** Runtime-only classification input. Observers must never persist this raw value. */
|
|
56
|
+
error?: unknown;
|
|
57
|
+
}
|
|
58
|
+
export type ProviderDispatchCompletionObserver = (event: ProviderDispatchCompletionEvent) => void;
|
|
59
|
+
/** A send that was refused before an HTTP request was admitted. */
|
|
60
|
+
export interface ProviderDispatchRejectionEvent {
|
|
61
|
+
provider: ProviderName;
|
|
62
|
+
operation: ProviderDispatchOperation;
|
|
63
|
+
attemptIndex: number;
|
|
64
|
+
model?: string;
|
|
65
|
+
/** Runtime-only classification input; trace observers persist only its typed diagnostic. */
|
|
66
|
+
error: unknown;
|
|
67
|
+
}
|
|
68
|
+
export type ProviderDispatchRejectionObserver = (event: ProviderDispatchRejectionEvent) => void;
|
|
40
69
|
export interface ProviderRunOptions {
|
|
41
70
|
/** Optional model override; otherwise the provider picks a sane default. */
|
|
42
71
|
model?: string;
|
|
@@ -56,6 +85,36 @@ export interface ProviderRunOptions {
|
|
|
56
85
|
maxProviderDispatches?: number;
|
|
57
86
|
/** Server-owned hook invoked immediately before every provider HTTP body send. */
|
|
58
87
|
onProviderDispatch?: ProviderDispatchObserver;
|
|
88
|
+
/** Server-owned hook invoked when that same physical HTTP send settles. */
|
|
89
|
+
onProviderDispatchComplete?: ProviderDispatchCompletionObserver;
|
|
90
|
+
/** Server-owned hook invoked when admission rejects a would-be physical send. */
|
|
91
|
+
onProviderDispatchRejected?: ProviderDispatchRejectionObserver;
|
|
92
|
+
/**
|
|
93
|
+
* Server-owned lifecycle label for the physical send. Providers must carry
|
|
94
|
+
* this through untouched; the local runtime is the only authority that maps
|
|
95
|
+
* it to an egress receipt and a trace span. It exists so an immutable
|
|
96
|
+
* exploratory-plan correction cannot be miscounted as a second generation.
|
|
97
|
+
*/
|
|
98
|
+
dispatchPhase?: import('@duckcodeailabs/dql-core').ProviderDispatchPhaseV1;
|
|
99
|
+
/**
|
|
100
|
+
* Server-owned sub-phase for the bounded analytical planner. It exists only
|
|
101
|
+
* to distinguish one initial proposal from one verifier-directed targeted
|
|
102
|
+
* revision at the local egress ledger; providers cannot use it to select a
|
|
103
|
+
* route or request another planner loop.
|
|
104
|
+
*/
|
|
105
|
+
analyticalPlanningKind?: 'initial' | 'targeted_revision';
|
|
106
|
+
/**
|
|
107
|
+
* Server-owned egress purpose paired with {@link dispatchPhase}. Ordinary
|
|
108
|
+
* Ask generation remains content-free; the only normal Ask repair purpose is
|
|
109
|
+
* `repair_sql` and it has no result-row permission.
|
|
110
|
+
*/
|
|
111
|
+
egressPurpose?: import('@duckcodeailabs/dql-core').ProviderEgressPurpose;
|
|
112
|
+
/**
|
|
113
|
+
* Server-owned lineage marker for one same-provider transient transport
|
|
114
|
+
* retry. Providers carry it through to the local ledger; callers cannot use
|
|
115
|
+
* it to reopen planning or route selection.
|
|
116
|
+
*/
|
|
117
|
+
retryOfAttemptIndex?: number;
|
|
59
118
|
}
|
|
60
119
|
export interface AgentToolDefinition {
|
|
61
120
|
name: string;
|
|
@@ -63,6 +122,43 @@ export interface AgentToolDefinition {
|
|
|
63
122
|
inputSchema: Record<string, unknown>;
|
|
64
123
|
run(args: unknown): Promise<unknown>;
|
|
65
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* A server-owned update to an in-flight tool conversation.
|
|
127
|
+
*
|
|
128
|
+
* Native tool transports obtain this immediately before every provider send;
|
|
129
|
+
* text transports append the same instruction after every observation. It
|
|
130
|
+
* lets a bounded controller narrow discovery to the next safe action without
|
|
131
|
+
* making a second, hidden planner call or trusting a provider to remember a
|
|
132
|
+
* stale tool list.
|
|
133
|
+
*/
|
|
134
|
+
export interface ProviderCurrentToolPolicy {
|
|
135
|
+
/** Canonical tools the provider may request on its next turn. */
|
|
136
|
+
allowedToolNames: readonly string[];
|
|
137
|
+
/** Safe, provider-visible explanation of why the set changed. */
|
|
138
|
+
instruction?: string;
|
|
139
|
+
/**
|
|
140
|
+
* At a physical-send reserve, one of these tools may be the final action.
|
|
141
|
+
* This is intentionally separate from `allowedToolNames`: ordinary tools
|
|
142
|
+
* must never use the last controller turn as a discovery escape hatch.
|
|
143
|
+
*/
|
|
144
|
+
terminalActionToolNames?: readonly string[];
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Host-owned phase decision for one concrete provider send.
|
|
148
|
+
*
|
|
149
|
+
* A native tool provider can issue several HTTP requests from one logical
|
|
150
|
+
* `generateWithTools` call. The outer Ask runtime is the only component that
|
|
151
|
+
* knows whether its state has advanced from discovery/execution to the one
|
|
152
|
+
* required, post-result `finish_answer` control. This callback lets that
|
|
153
|
+
* runtime classify each physical send at the transport boundary without
|
|
154
|
+
* serializing mutable state to a provider or granting a provider a lifecycle
|
|
155
|
+
* capability.
|
|
156
|
+
*/
|
|
157
|
+
export type ProviderPhysicalDispatchPhaseResolver = (input: {
|
|
158
|
+
operation: ProviderDispatchOperation;
|
|
159
|
+
attemptIndex: number;
|
|
160
|
+
requestedPhase?: import('@duckcodeailabs/dql-core').ProviderDispatchPhaseV1;
|
|
161
|
+
}) => import('@duckcodeailabs/dql-core').ProviderDispatchPhaseV1 | undefined;
|
|
66
162
|
export interface ProviderToolLoopOptions extends ProviderRunOptions {
|
|
67
163
|
/** Hard cap for provider-visible tool calls in this turn. Default 8. */
|
|
68
164
|
maxToolCalls?: number;
|
|
@@ -82,6 +178,9 @@ export interface ProviderToolLoopOptions extends ProviderRunOptions {
|
|
|
82
178
|
allowedResultRowTools?: Record<string, number>;
|
|
83
179
|
resultRowBudgetGroupByTool?: Record<string, string>;
|
|
84
180
|
cumulativeResultRowBudgets?: Record<string, number>;
|
|
181
|
+
/** Additional shape caps for bounded local Ask V2 row egress. */
|
|
182
|
+
maxResultColumns?: number;
|
|
183
|
+
maxResultCells?: number;
|
|
85
184
|
onPayload?: (event: {
|
|
86
185
|
toolName: string;
|
|
87
186
|
output: unknown;
|
|
@@ -92,7 +191,38 @@ export interface ProviderToolLoopOptions extends ProviderRunOptions {
|
|
|
92
191
|
budgetExhausted: boolean;
|
|
93
192
|
}) => void;
|
|
94
193
|
};
|
|
194
|
+
/**
|
|
195
|
+
* Optional live tool policy owned by the host runtime. The callback is
|
|
196
|
+
* process-local and is never serialized to a provider. It is evaluated at
|
|
197
|
+
* each transport turn so native and text protocols receive the same current
|
|
198
|
+
* allowed-tool set and safe progress instruction.
|
|
199
|
+
*/
|
|
200
|
+
getCurrentToolPolicy?: () => ProviderCurrentToolPolicy | undefined;
|
|
201
|
+
/**
|
|
202
|
+
* Process-local physical-send phase resolver. Only the local Ask runtime
|
|
203
|
+
* installs this. Providers carry it to the wrapper unchanged and may never
|
|
204
|
+
* use it to choose a route, tool, or egress purpose.
|
|
205
|
+
*/
|
|
206
|
+
resolvePhysicalDispatchPhase?: ProviderPhysicalDispatchPhaseResolver;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Typed native-tool-loop stop. Native transports normally return final prose,
|
|
210
|
+
* but a live Ask V2 policy must distinguish a physical controller/tool budget
|
|
211
|
+
* stop from an answer. The result deliberately contains no provider payload
|
|
212
|
+
* beyond the already-sanitized final text.
|
|
213
|
+
*/
|
|
214
|
+
export interface NativeToolLoopStop {
|
|
215
|
+
version: 1;
|
|
216
|
+
/**
|
|
217
|
+
* A typed controller stop. Deadline stops deliberately remain distinct from
|
|
218
|
+
* a tool budget: callers can preserve an already validated result and show
|
|
219
|
+
* the actual run-boundary recovery action.
|
|
220
|
+
*/
|
|
221
|
+
kind: 'tool_budget_exhausted' | 'provider_dispatch_budget_exhausted' | 'invalid_tool_response' | 'run_soft_target_exceeded' | 'run_deadline_insufficient';
|
|
222
|
+
text: string;
|
|
223
|
+
toolCalls: number;
|
|
95
224
|
}
|
|
225
|
+
export type NativeToolLoopResult = string | NativeToolLoopStop;
|
|
96
226
|
export interface AgentProvider {
|
|
97
227
|
readonly name: ProviderName;
|
|
98
228
|
/**
|
|
@@ -105,7 +235,7 @@ export interface AgentProvider {
|
|
|
105
235
|
* call supplied tools, append their observations, and resolve with the final
|
|
106
236
|
* assistant text. Callers must keep a one-shot generate() fallback.
|
|
107
237
|
*/
|
|
108
|
-
generateWithTools?(messages: AgentMessage[], tools: AgentToolDefinition[], options?: ProviderToolLoopOptions): Promise<
|
|
238
|
+
generateWithTools?(messages: AgentMessage[], tools: AgentToolDefinition[], options?: ProviderToolLoopOptions): Promise<NativeToolLoopResult>;
|
|
109
239
|
/**
|
|
110
240
|
* Optional token streaming. Calls `onDelta` with each text chunk as it arrives
|
|
111
241
|
* and resolves with the full concatenated text. Providers that omit this fall
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,yBAAyB,GAAG,UAAU,GAAG,qBAAqB,GAAG,iBAAiB,CAAC;AAE/F,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,yBAAyB,CAAC;IACrC,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,uBAAuB,EAAE,eAAe,CAAC;KACnE,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjG,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,uBAAuB,EAAE,eAAe,CAAC;IAClE,wDAAwD;IACxD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,0EAA0E;IAC1E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAmQH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAuB,EACvB,QAAwB,EACxB,OAA2B,EAC3B,OAAgC;IAEhC,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,4 +1,43 @@
|
|
|
1
1
|
import type { MetricCapabilityContract, ResolvedRelationshipProofV1 } from '@duckcodeailabs/dql-core';
|
|
2
|
+
import type { AgentEvidenceCandidate } from './meaning-resolution.js';
|
|
3
|
+
/**
|
|
4
|
+
* The immutable, snapshot-bound safety authority for a governed physical
|
|
5
|
+
* relationship. This is deliberately separate from a capability path ID:
|
|
6
|
+
* the path identifies the edge the compiler may use, while this receipt pins
|
|
7
|
+
* the certification and warehouse-validation facts that made that edge safe
|
|
8
|
+
* when the plan froze.
|
|
9
|
+
*
|
|
10
|
+
* This lives beside the local resolved plan rather than the cross-surface
|
|
11
|
+
* semantic proof contract because it describes DQL's local physical registry,
|
|
12
|
+
* not an adapter-native semantic path. Old persisted plans remain readable;
|
|
13
|
+
* a newly compiled cross-entity governed plan must carry this authority.
|
|
14
|
+
*/
|
|
15
|
+
export interface GovernedRelationshipSafetyProofV1 {
|
|
16
|
+
version: 1;
|
|
17
|
+
relationshipPathId: string;
|
|
18
|
+
relationshipId: string;
|
|
19
|
+
from: string;
|
|
20
|
+
to: string;
|
|
21
|
+
keys: Array<{
|
|
22
|
+
from: string;
|
|
23
|
+
to: string;
|
|
24
|
+
}>;
|
|
25
|
+
status: 'certified';
|
|
26
|
+
cardinality: 'one_to_one' | 'one_to_many' | 'many_to_one';
|
|
27
|
+
fanout: 'safe';
|
|
28
|
+
staleCertification: false;
|
|
29
|
+
automaticJoinAllowed: true;
|
|
30
|
+
certificationFingerprint: string;
|
|
31
|
+
validation: {
|
|
32
|
+
status: 'passed';
|
|
33
|
+
checkedAt: string;
|
|
34
|
+
queryFingerprint: string;
|
|
35
|
+
proofFingerprint: string;
|
|
36
|
+
};
|
|
37
|
+
evidenceExpiresAt?: string;
|
|
38
|
+
snapshotId: string;
|
|
39
|
+
authorityFingerprint: string;
|
|
40
|
+
}
|
|
2
41
|
/** Build the sole normalized relationship authority for already selected dimensions. */
|
|
3
42
|
export declare function buildResolvedRelationshipProofsV1(input: {
|
|
4
43
|
capability: MetricCapabilityContract;
|
|
@@ -8,6 +47,48 @@ export declare function buildResolvedRelationshipProofsV1(input: {
|
|
|
8
47
|
executionId: string;
|
|
9
48
|
snapshotId: string;
|
|
10
49
|
}): ResolvedRelationshipProofV1[];
|
|
50
|
+
/**
|
|
51
|
+
* Return true only for a cross-model dimension whose capability preserves the
|
|
52
|
+
* exact adapter-native spelling and a non-empty entity path. A leaf name,
|
|
53
|
+
* broad result grain, or DQL relationship is not semantic compiler proof.
|
|
54
|
+
*
|
|
55
|
+
* Own-model dimensions use the primary entity and do not require a
|
|
56
|
+
* relationship proof; callers can handle that case separately.
|
|
57
|
+
*/
|
|
58
|
+
export declare function semanticDimensionUsesExactAdapterGrouping(capability: MetricCapabilityContract, dimension: MetricCapabilityContract['dimensions'][number]): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Return true only when a cross-entity governed capability dimension carries
|
|
61
|
+
* a concrete relationship path that is backed by the *same snapshot's*
|
|
62
|
+
* certified, fresh, automatic, fanout-safe proof records.
|
|
63
|
+
*
|
|
64
|
+
* `resultGrainIds` is intentionally not authority here. It can describe the
|
|
65
|
+
* shape an adapter hopes to return, but cannot prove that the governed DQL
|
|
66
|
+
* compiler has an approved graph from the selected metric entity to the
|
|
67
|
+
* selected dimension. Likewise, a friendly relationship ID without its
|
|
68
|
+
* structured safety record is retrieval evidence, not a join authorization.
|
|
69
|
+
*/
|
|
70
|
+
export declare function governedCapabilityDimensionHasFreshAutomaticRelationshipProofV1(input: {
|
|
71
|
+
capability: MetricCapabilityContract;
|
|
72
|
+
dimension: MetricCapabilityContract['dimensions'][number];
|
|
73
|
+
candidates: readonly AgentEvidenceCandidate[];
|
|
74
|
+
/** Captured by the caller when deterministic tests need a stable clock. */
|
|
75
|
+
now?: number;
|
|
76
|
+
}): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Capture the precise snapshot safety records used by each selected
|
|
79
|
+
* cross-entity governed dimension. The caller persists these in the frozen
|
|
80
|
+
* plan so a registry cannot be silently restamped after planning.
|
|
81
|
+
*/
|
|
82
|
+
export declare function buildGovernedRelationshipSafetyProofsV1(input: {
|
|
83
|
+
capability: MetricCapabilityContract;
|
|
84
|
+
dimensions: readonly MetricCapabilityContract['dimensions'][number][];
|
|
85
|
+
candidates: readonly AgentEvidenceCandidate[];
|
|
86
|
+
snapshotId: string;
|
|
87
|
+
/** Captured by the caller when deterministic tests need a stable clock. */
|
|
88
|
+
now?: number;
|
|
89
|
+
}): GovernedRelationshipSafetyProofV1[];
|
|
90
|
+
/** Reject a mutated persisted plan proof before it can authorize SQL. */
|
|
91
|
+
export declare function governedRelationshipSafetyProofIsSelfConsistentV1(proof: GovernedRelationshipSafetyProofV1): boolean;
|
|
11
92
|
export declare function resolvedRelationshipProofMatches(input: {
|
|
12
93
|
proof: ResolvedRelationshipProofV1;
|
|
13
94
|
capability: MetricCapabilityContract;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship-proof.d.ts","sourceRoot":"","sources":["../src/relationship-proof.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"relationship-proof.d.ts","sourceRoot":"","sources":["../src/relationship-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,11 +14,16 @@ export function buildResolvedRelationshipProofsV1(input) {
|
|
|
14
14
|
const nativeGroupingPath = dimension.nativeGroupingPath === undefined
|
|
15
15
|
? undefined
|
|
16
16
|
: [...dimension.nativeGroupingPath];
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
// A semantic adapter cannot consume a generic DQL relationship ID.
|
|
18
|
+
// Cross-model semantic execution is authorized only by the exact
|
|
19
|
+
// MetricFlow-native group-by frozen on this metric capability. Keep
|
|
20
|
+
// generic relationship paths for relational/exploratory routes only.
|
|
21
|
+
const kind = input.route === 'semantic'
|
|
22
|
+
? semanticDimensionUsesExactAdapterGrouping(input.capability, dimension)
|
|
21
23
|
? 'semantic_native_grouping'
|
|
24
|
+
: undefined
|
|
25
|
+
: relationshipPathIds.length > 0
|
|
26
|
+
? 'dql_relationship_path'
|
|
22
27
|
: undefined;
|
|
23
28
|
if (!kind)
|
|
24
29
|
return [];
|
|
@@ -42,6 +47,190 @@ export function buildResolvedRelationshipProofsV1(input) {
|
|
|
42
47
|
})
|
|
43
48
|
.sort((left, right) => left.dimensionId.localeCompare(right.dimensionId));
|
|
44
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Return true only for a cross-model dimension whose capability preserves the
|
|
52
|
+
* exact adapter-native spelling and a non-empty entity path. A leaf name,
|
|
53
|
+
* broad result grain, or DQL relationship is not semantic compiler proof.
|
|
54
|
+
*
|
|
55
|
+
* Own-model dimensions use the primary entity and do not require a
|
|
56
|
+
* relationship proof; callers can handle that case separately.
|
|
57
|
+
*/
|
|
58
|
+
export function semanticDimensionUsesExactAdapterGrouping(capability, dimension) {
|
|
59
|
+
if (dimension.entityId === capability.primaryEntityId)
|
|
60
|
+
return false;
|
|
61
|
+
if (!capability.executionCapabilities.some((execution) => execution.route === 'semantic' && Boolean(execution.adapterId?.trim())))
|
|
62
|
+
return false;
|
|
63
|
+
const nativeGroupingReference = dimension.nativeGroupingReference?.trim();
|
|
64
|
+
const nativeGroupingPath = dimension.nativeGroupingPath?.map((part) => part.trim()).filter(Boolean) ?? [];
|
|
65
|
+
if (!nativeGroupingReference || nativeGroupingPath.length === 0)
|
|
66
|
+
return false;
|
|
67
|
+
const leaf = semanticDimensionLeaf(dimension.dimensionId);
|
|
68
|
+
return Boolean(leaf) && nativeGroupingReference === [...nativeGroupingPath, leaf].join('__');
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Return true only when a cross-entity governed capability dimension carries
|
|
72
|
+
* a concrete relationship path that is backed by the *same snapshot's*
|
|
73
|
+
* certified, fresh, automatic, fanout-safe proof records.
|
|
74
|
+
*
|
|
75
|
+
* `resultGrainIds` is intentionally not authority here. It can describe the
|
|
76
|
+
* shape an adapter hopes to return, but cannot prove that the governed DQL
|
|
77
|
+
* compiler has an approved graph from the selected metric entity to the
|
|
78
|
+
* selected dimension. Likewise, a friendly relationship ID without its
|
|
79
|
+
* structured safety record is retrieval evidence, not a join authorization.
|
|
80
|
+
*/
|
|
81
|
+
export function governedCapabilityDimensionHasFreshAutomaticRelationshipProofV1(input) {
|
|
82
|
+
const { capability, dimension } = input;
|
|
83
|
+
if (dimension.entityId === capability.primaryEntityId)
|
|
84
|
+
return true;
|
|
85
|
+
return governedCapabilityDimensionSafetyProofsV1(input) !== undefined;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Capture the precise snapshot safety records used by each selected
|
|
89
|
+
* cross-entity governed dimension. The caller persists these in the frozen
|
|
90
|
+
* plan so a registry cannot be silently restamped after planning.
|
|
91
|
+
*/
|
|
92
|
+
export function buildGovernedRelationshipSafetyProofsV1(input) {
|
|
93
|
+
const proofs = input.dimensions.flatMap((dimension) => {
|
|
94
|
+
if (dimension.entityId === input.capability.primaryEntityId)
|
|
95
|
+
return [];
|
|
96
|
+
return governedCapabilityDimensionSafetyProofsV1({
|
|
97
|
+
capability: input.capability,
|
|
98
|
+
dimension,
|
|
99
|
+
candidates: input.candidates,
|
|
100
|
+
...(input.now === undefined ? {} : { now: input.now }),
|
|
101
|
+
snapshotId: input.snapshotId,
|
|
102
|
+
}) ?? [];
|
|
103
|
+
});
|
|
104
|
+
return [...new Map(proofs.map((proof) => [proof.authorityFingerprint, proof])).values()]
|
|
105
|
+
.sort((left, right) => left.relationshipPathId.localeCompare(right.relationshipPathId)
|
|
106
|
+
|| left.relationshipId.localeCompare(right.relationshipId));
|
|
107
|
+
}
|
|
108
|
+
function governedCapabilityDimensionSafetyProofsV1(input) {
|
|
109
|
+
const { capability, dimension } = input;
|
|
110
|
+
if (dimension.entityId === capability.primaryEntityId)
|
|
111
|
+
return [];
|
|
112
|
+
const pathIds = new Map((dimension.relationshipPathIds ?? [])
|
|
113
|
+
.map((pathId) => [normalizeRelationshipIdentity(pathId), pathId.trim()])
|
|
114
|
+
.filter(([normalized, original]) => Boolean(normalized && original)));
|
|
115
|
+
if (pathIds.size === 0)
|
|
116
|
+
return undefined;
|
|
117
|
+
const proofsByPathId = new Map();
|
|
118
|
+
for (const candidate of input.candidates) {
|
|
119
|
+
if (candidate.eligible === false)
|
|
120
|
+
continue;
|
|
121
|
+
const referenced = new Set((candidate.relationshipEvidence ?? [])
|
|
122
|
+
.map(normalizeRelationshipIdentity)
|
|
123
|
+
.filter(Boolean));
|
|
124
|
+
if (referenced.size === 0)
|
|
125
|
+
continue;
|
|
126
|
+
for (const safety of candidate.relationshipSafety ?? []) {
|
|
127
|
+
if (!relationshipSafetyAllowsFreshAutomaticGovernedProof(safety, input.now))
|
|
128
|
+
continue;
|
|
129
|
+
const identities = relationshipSafetyIdentities(safety);
|
|
130
|
+
// A safety object detached from the carrier's relationship evidence is
|
|
131
|
+
// not snapshot authority. This mirrors the router's join gate and
|
|
132
|
+
// prevents a neighboring, unrelated proof from satisfying a path ID.
|
|
133
|
+
if (!identities.some((identity) => referenced.has(identity)))
|
|
134
|
+
continue;
|
|
135
|
+
for (const pathId of pathIds.keys()) {
|
|
136
|
+
if (identities.includes(pathId))
|
|
137
|
+
proofsByPathId.set(pathId, safety);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (proofsByPathId.size !== pathIds.size)
|
|
142
|
+
return undefined;
|
|
143
|
+
// A collection of individually safe proofs still must describe an actual
|
|
144
|
+
// graph from the selected metric entity to this exact cross-entity field.
|
|
145
|
+
// Do not infer a traversal from names, result grain, or shared leaves.
|
|
146
|
+
const adjacency = new Map();
|
|
147
|
+
const connect = (left, right) => {
|
|
148
|
+
if (!adjacency.has(left))
|
|
149
|
+
adjacency.set(left, new Set());
|
|
150
|
+
if (!adjacency.has(right))
|
|
151
|
+
adjacency.set(right, new Set());
|
|
152
|
+
adjacency.get(left).add(right);
|
|
153
|
+
adjacency.get(right).add(left);
|
|
154
|
+
};
|
|
155
|
+
for (const proof of proofsByPathId.values()) {
|
|
156
|
+
const from = normalizeRelationshipIdentity(proof.from ?? '');
|
|
157
|
+
const to = normalizeRelationshipIdentity(proof.to ?? '');
|
|
158
|
+
if (!from || !to)
|
|
159
|
+
return undefined;
|
|
160
|
+
connect(from, to);
|
|
161
|
+
}
|
|
162
|
+
const source = normalizeRelationshipIdentity(capability.primaryEntityId);
|
|
163
|
+
const target = normalizeRelationshipIdentity(dimension.entityId);
|
|
164
|
+
if (!source || !target)
|
|
165
|
+
return undefined;
|
|
166
|
+
const pending = [source];
|
|
167
|
+
const seen = new Set(pending);
|
|
168
|
+
while (pending.length > 0) {
|
|
169
|
+
const current = pending.shift();
|
|
170
|
+
if (current === target) {
|
|
171
|
+
return [...proofsByPathId.entries()]
|
|
172
|
+
.map(([normalizedPathId, safety]) => governedRelationshipSafetyProof({
|
|
173
|
+
relationshipPathId: pathIds.get(normalizedPathId),
|
|
174
|
+
safety,
|
|
175
|
+
...(input.snapshotId ? { snapshotId: input.snapshotId } : {}),
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
for (const next of adjacency.get(current) ?? []) {
|
|
179
|
+
if (seen.has(next))
|
|
180
|
+
continue;
|
|
181
|
+
seen.add(next);
|
|
182
|
+
pending.push(next);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
function governedRelationshipSafetyProof(input) {
|
|
188
|
+
const validation = input.safety.validation;
|
|
189
|
+
// Callers reach this only after `relationshipSafetyAllowsFreshAutomatic…`.
|
|
190
|
+
// Keep the explicit assertions here so an independent future caller cannot
|
|
191
|
+
// accidentally serialize a partial safety record into a frozen plan.
|
|
192
|
+
if (!relationshipSafetyAllowsFreshAutomaticGovernedProof(input.safety)
|
|
193
|
+
|| !validation
|
|
194
|
+
|| !input.safety.from
|
|
195
|
+
|| !input.safety.to
|
|
196
|
+
|| !input.safety.certificationFingerprint
|
|
197
|
+
|| !validation.checkedAt
|
|
198
|
+
|| !validation.queryFingerprint
|
|
199
|
+
|| !validation.proofFingerprint
|
|
200
|
+
|| !['one_to_one', 'one_to_many', 'many_to_one'].includes(input.safety.cardinality ?? '')) {
|
|
201
|
+
throw new Error('Cannot serialize an invalid governed relationship safety proof.');
|
|
202
|
+
}
|
|
203
|
+
const body = {
|
|
204
|
+
version: 1,
|
|
205
|
+
relationshipPathId: input.relationshipPathId,
|
|
206
|
+
relationshipId: input.safety.id,
|
|
207
|
+
from: input.safety.from,
|
|
208
|
+
to: input.safety.to,
|
|
209
|
+
keys: [...input.safety.keys]
|
|
210
|
+
.map((key) => ({ from: key.from, to: key.to }))
|
|
211
|
+
.sort((left, right) => `${left.from}:${left.to}`.localeCompare(`${right.from}:${right.to}`)),
|
|
212
|
+
status: 'certified',
|
|
213
|
+
cardinality: input.safety.cardinality,
|
|
214
|
+
fanout: 'safe',
|
|
215
|
+
staleCertification: false,
|
|
216
|
+
automaticJoinAllowed: true,
|
|
217
|
+
certificationFingerprint: input.safety.certificationFingerprint,
|
|
218
|
+
validation: {
|
|
219
|
+
status: 'passed',
|
|
220
|
+
checkedAt: validation.checkedAt,
|
|
221
|
+
queryFingerprint: validation.queryFingerprint,
|
|
222
|
+
proofFingerprint: validation.proofFingerprint,
|
|
223
|
+
},
|
|
224
|
+
...(input.safety.evidenceExpiresAt ? { evidenceExpiresAt: input.safety.evidenceExpiresAt } : {}),
|
|
225
|
+
snapshotId: input.snapshotId ?? 'snapshot-unavailable',
|
|
226
|
+
};
|
|
227
|
+
return { ...body, authorityFingerprint: fingerprint(body) };
|
|
228
|
+
}
|
|
229
|
+
/** Reject a mutated persisted plan proof before it can authorize SQL. */
|
|
230
|
+
export function governedRelationshipSafetyProofIsSelfConsistentV1(proof) {
|
|
231
|
+
const { authorityFingerprint, ...body } = proof;
|
|
232
|
+
return fingerprint(body) === authorityFingerprint;
|
|
233
|
+
}
|
|
45
234
|
export function resolvedRelationshipProofMatches(input) {
|
|
46
235
|
const expected = buildResolvedRelationshipProofsV1({
|
|
47
236
|
capability: input.capability,
|
|
@@ -58,6 +247,41 @@ export function resolvedRelationshipProofMatches(input) {
|
|
|
58
247
|
function fingerprint(value) {
|
|
59
248
|
return createHash('sha256').update(stableStringify(value)).digest('hex');
|
|
60
249
|
}
|
|
250
|
+
function relationshipSafetyAllowsFreshAutomaticGovernedProof(safety, now = Date.now()) {
|
|
251
|
+
const validation = safety.validation;
|
|
252
|
+
const checkedAt = Date.parse(validation?.checkedAt ?? '');
|
|
253
|
+
const expiresAt = safety.evidenceExpiresAt === undefined
|
|
254
|
+
? undefined
|
|
255
|
+
: Date.parse(safety.evidenceExpiresAt);
|
|
256
|
+
return safety.status === 'certified'
|
|
257
|
+
&& safety.staleCertification === false
|
|
258
|
+
&& safety.automaticJoinAllowed === true
|
|
259
|
+
&& safety.fanout === 'safe'
|
|
260
|
+
&& ['one_to_one', 'one_to_many', 'many_to_one'].includes(safety.cardinality ?? '')
|
|
261
|
+
&& Boolean(safety.from?.trim() && safety.to?.trim())
|
|
262
|
+
&& Boolean(safety.certificationFingerprint?.trim())
|
|
263
|
+
&& Boolean(validation)
|
|
264
|
+
&& validation?.status === 'passed'
|
|
265
|
+
&& Boolean(validation?.queryFingerprint?.trim())
|
|
266
|
+
&& Boolean(validation?.proofFingerprint?.trim())
|
|
267
|
+
&& Number.isFinite(checkedAt)
|
|
268
|
+
&& (expiresAt === undefined || Number.isFinite(expiresAt) && expiresAt > now)
|
|
269
|
+
&& safety.keys.length > 0
|
|
270
|
+
&& safety.keys.every((key) => Boolean(key.from.trim() && key.to.trim()));
|
|
271
|
+
}
|
|
272
|
+
function relationshipSafetyIdentities(safety) {
|
|
273
|
+
return uniqueSorted([safety.id, ...(safety.aliases ?? [])]
|
|
274
|
+
.map(normalizeRelationshipIdentity)
|
|
275
|
+
.filter(Boolean));
|
|
276
|
+
}
|
|
277
|
+
function normalizeRelationshipIdentity(value) {
|
|
278
|
+
return value.trim().toLowerCase();
|
|
279
|
+
}
|
|
280
|
+
function semanticDimensionLeaf(dimensionId) {
|
|
281
|
+
const local = dimensionId.split(':').at(-1)?.trim();
|
|
282
|
+
const leaf = local?.split('.').at(-1)?.trim();
|
|
283
|
+
return leaf || undefined;
|
|
284
|
+
}
|
|
61
285
|
function stableStringify(value) {
|
|
62
286
|
if (Array.isArray(value))
|
|
63
287
|
return `[${value.map(stableStringify).join(',')}]`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship-proof.js","sourceRoot":"","sources":["../src/relationship-proof.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"relationship-proof.js","sourceRoot":"","sources":["../src/relationship-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single grammar for time-window clauses.
|
|
3
|
+
*
|
|
4
|
+
* Three question parsers each carried their own relative-time regexes, every
|
|
5
|
+
* one requiring the determiner to sit adjacent to the time noun — so "last
|
|
6
|
+
* month" parsed and "last two months" did not, anywhere. The phrase then
|
|
7
|
+
* degraded to a bare `month` grouping while its count was misread as a row
|
|
8
|
+
* limit, and the answer silently changed meaning.
|
|
9
|
+
*
|
|
10
|
+
* This module is the one producer of the typed window. Its accepted forms
|
|
11
|
+
* deliberately MIRROR `resolvePlanTimeRange` (resolved-analytical-plan.ts) —
|
|
12
|
+
* the already-written resolver of "last N units" into UTC bounds — so the
|
|
13
|
+
* producer and the resolver cannot drift: everything parsed here resolves
|
|
14
|
+
* there, via the canonical digits `expression`.
|
|
15
|
+
*/
|
|
16
|
+
import type { AnalyticalTimeWindowV1 } from './analytical-orchestration.js';
|
|
17
|
+
/**
|
|
18
|
+
* Parse a relative or named time window from free text. Returns undefined
|
|
19
|
+
* when the question carries no bounded period — a bare grain ("by month") is
|
|
20
|
+
* a grouping, not a window, and stays out of this clause on purpose.
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseAnalyticalTimeWindow(question: string): AnalyticalTimeWindowV1 | undefined;
|
|
23
|
+
//# sourceMappingURL=requirement-clauses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirement-clauses.d.ts","sourceRoot":"","sources":["../src/requirement-clauses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAS5E;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CA8C9F"}
|