@duckcodeailabs/dql-agent 1.14.0 → 1.14.2

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.
Files changed (173) hide show
  1. package/dist/agent-run-engine.d.ts +68 -2
  2. package/dist/agent-run-engine.d.ts.map +1 -1
  3. package/dist/agent-run-engine.js +520 -26
  4. package/dist/agent-run-engine.js.map +1 -1
  5. package/dist/agent-run-gates.d.ts.map +1 -1
  6. package/dist/agent-run-gates.js +25 -0
  7. package/dist/agent-run-gates.js.map +1 -1
  8. package/dist/agentic/analyst-loop.d.ts +91 -0
  9. package/dist/agentic/analyst-loop.d.ts.map +1 -0
  10. package/dist/agentic/analyst-loop.js +331 -0
  11. package/dist/agentic/analyst-loop.js.map +1 -0
  12. package/dist/agentic/assumptions.d.ts +62 -0
  13. package/dist/agentic/assumptions.d.ts.map +1 -0
  14. package/dist/agentic/assumptions.js +73 -0
  15. package/dist/agentic/assumptions.js.map +1 -0
  16. package/dist/agentic/business-explanation.d.ts +56 -0
  17. package/dist/agentic/business-explanation.d.ts.map +1 -0
  18. package/dist/agentic/business-explanation.js +130 -0
  19. package/dist/agentic/business-explanation.js.map +1 -0
  20. package/dist/agentic/identifier-ledger.d.ts +74 -0
  21. package/dist/agentic/identifier-ledger.d.ts.map +1 -0
  22. package/dist/agentic/identifier-ledger.js +151 -0
  23. package/dist/agentic/identifier-ledger.js.map +1 -0
  24. package/dist/agentic/ledger-tools.d.ts +68 -0
  25. package/dist/agentic/ledger-tools.d.ts.map +1 -0
  26. package/dist/agentic/ledger-tools.js +198 -0
  27. package/dist/agentic/ledger-tools.js.map +1 -0
  28. package/dist/agentic/orchestrator-policy.d.ts +60 -0
  29. package/dist/agentic/orchestrator-policy.d.ts.map +1 -0
  30. package/dist/agentic/orchestrator-policy.js +73 -0
  31. package/dist/agentic/orchestrator-policy.js.map +1 -0
  32. package/dist/agentic/orchestrator.d.ts +54 -0
  33. package/dist/agentic/orchestrator.d.ts.map +1 -0
  34. package/dist/agentic/orchestrator.js +67 -0
  35. package/dist/agentic/orchestrator.js.map +1 -0
  36. package/dist/agentic/preview-tool.d.ts +36 -0
  37. package/dist/agentic/preview-tool.d.ts.map +1 -0
  38. package/dist/agentic/preview-tool.js +71 -0
  39. package/dist/agentic/preview-tool.js.map +1 -0
  40. package/dist/agentic/rerank.d.ts +50 -0
  41. package/dist/agentic/rerank.d.ts.map +1 -0
  42. package/dist/agentic/rerank.js +140 -0
  43. package/dist/agentic/rerank.js.map +1 -0
  44. package/dist/agentic/research/hypothesis.d.ts +110 -0
  45. package/dist/agentic/research/hypothesis.d.ts.map +1 -0
  46. package/dist/agentic/research/hypothesis.js +125 -0
  47. package/dist/agentic/research/hypothesis.js.map +1 -0
  48. package/dist/agentic/research/synthesis.d.ts +36 -0
  49. package/dist/agentic/research/synthesis.d.ts.map +1 -0
  50. package/dist/agentic/research/synthesis.js +109 -0
  51. package/dist/agentic/research/synthesis.js.map +1 -0
  52. package/dist/agentic/research-agent.d.ts +54 -0
  53. package/dist/agentic/research-agent.d.ts.map +1 -0
  54. package/dist/agentic/research-agent.js +177 -0
  55. package/dist/agentic/research-agent.js.map +1 -0
  56. package/dist/agentic/sql-authorization.d.ts +131 -0
  57. package/dist/agentic/sql-authorization.d.ts.map +1 -0
  58. package/dist/agentic/sql-authorization.js +460 -0
  59. package/dist/agentic/sql-authorization.js.map +1 -0
  60. package/dist/agentic/tool-loop.d.ts +29 -0
  61. package/dist/agentic/tool-loop.d.ts.map +1 -1
  62. package/dist/agentic/tool-loop.js +129 -52
  63. package/dist/agentic/tool-loop.js.map +1 -1
  64. package/dist/agentic/toolset.d.ts.map +1 -1
  65. package/dist/agentic/toolset.js +155 -0
  66. package/dist/agentic/toolset.js.map +1 -1
  67. package/dist/agentic/turn-plan.d.ts +35 -0
  68. package/dist/agentic/turn-plan.d.ts.map +1 -0
  69. package/dist/agentic/turn-plan.js +108 -0
  70. package/dist/agentic/turn-plan.js.map +1 -0
  71. package/dist/agentic/value-probe.d.ts +89 -0
  72. package/dist/agentic/value-probe.d.ts.map +1 -0
  73. package/dist/agentic/value-probe.js +304 -0
  74. package/dist/agentic/value-probe.js.map +1 -0
  75. package/dist/analytical-frame.d.ts.map +1 -1
  76. package/dist/analytical-frame.js +10 -1
  77. package/dist/analytical-frame.js.map +1 -1
  78. package/dist/analytical-orchestration.d.ts +382 -0
  79. package/dist/analytical-orchestration.d.ts.map +1 -1
  80. package/dist/analytical-orchestration.js +782 -6
  81. package/dist/analytical-orchestration.js.map +1 -1
  82. package/dist/analytical-request-policy.d.ts +26 -0
  83. package/dist/analytical-request-policy.d.ts.map +1 -0
  84. package/dist/analytical-request-policy.js +82 -0
  85. package/dist/analytical-request-policy.js.map +1 -0
  86. package/dist/analytical-result-facts.d.ts +13 -0
  87. package/dist/analytical-result-facts.d.ts.map +1 -1
  88. package/dist/analytical-result-facts.js +37 -1
  89. package/dist/analytical-result-facts.js.map +1 -1
  90. package/dist/answer-loop.d.ts +105 -16
  91. package/dist/answer-loop.d.ts.map +1 -1
  92. package/dist/answer-loop.js +833 -108
  93. package/dist/answer-loop.js.map +1 -1
  94. package/dist/answer-shape.d.ts +32 -1
  95. package/dist/answer-shape.d.ts.map +1 -1
  96. package/dist/answer-shape.js +49 -3
  97. package/dist/answer-shape.js.map +1 -1
  98. package/dist/cascade/budgets.d.ts.map +1 -1
  99. package/dist/cascade/budgets.js +8 -1
  100. package/dist/cascade/budgets.js.map +1 -1
  101. package/dist/cascade/packer.d.ts +88 -0
  102. package/dist/cascade/packer.d.ts.map +1 -0
  103. package/dist/cascade/packer.js +106 -0
  104. package/dist/cascade/packer.js.map +1 -0
  105. package/dist/conversation/result-ops.d.ts +18 -3
  106. package/dist/conversation/result-ops.d.ts.map +1 -1
  107. package/dist/conversation/result-ops.js +77 -5
  108. package/dist/conversation/result-ops.js.map +1 -1
  109. package/dist/conversation/rolling-summary.d.ts.map +1 -1
  110. package/dist/conversation/rolling-summary.js +7 -2
  111. package/dist/conversation/rolling-summary.js.map +1 -1
  112. package/dist/conversation/session-store.d.ts +3 -0
  113. package/dist/conversation/session-store.d.ts.map +1 -1
  114. package/dist/conversation/session-store.js +8 -4
  115. package/dist/conversation/session-store.js.map +1 -1
  116. package/dist/conversation/snapshot.d.ts +20 -0
  117. package/dist/conversation/snapshot.d.ts.map +1 -1
  118. package/dist/conversation/snapshot.js +40 -2
  119. package/dist/conversation/snapshot.js.map +1 -1
  120. package/dist/fixtures/ask-ai-office-shaped.d.ts +153 -0
  121. package/dist/fixtures/ask-ai-office-shaped.d.ts.map +1 -0
  122. package/dist/fixtures/ask-ai-office-shaped.js +94 -0
  123. package/dist/fixtures/ask-ai-office-shaped.js.map +1 -0
  124. package/dist/hints/store.d.ts.map +1 -1
  125. package/dist/hints/store.js +15 -5
  126. package/dist/hints/store.js.map +1 -1
  127. package/dist/index.d.ts +29 -9
  128. package/dist/index.d.ts.map +1 -1
  129. package/dist/index.js +29 -6
  130. package/dist/index.js.map +1 -1
  131. package/dist/intent-controller.d.ts +36 -0
  132. package/dist/intent-controller.d.ts.map +1 -1
  133. package/dist/intent-controller.js +95 -0
  134. package/dist/intent-controller.js.map +1 -1
  135. package/dist/meaning-resolution.d.ts +69 -2
  136. package/dist/meaning-resolution.d.ts.map +1 -1
  137. package/dist/meaning-resolution.js +128 -7
  138. package/dist/meaning-resolution.js.map +1 -1
  139. package/dist/metadata/analysis-planner.d.ts.map +1 -1
  140. package/dist/metadata/analysis-planner.js +124 -7
  141. package/dist/metadata/analysis-planner.js.map +1 -1
  142. package/dist/metadata/block-fit.d.ts +36 -0
  143. package/dist/metadata/block-fit.d.ts.map +1 -1
  144. package/dist/metadata/block-fit.js +290 -38
  145. package/dist/metadata/block-fit.js.map +1 -1
  146. package/dist/metadata/catalog.d.ts +20 -23
  147. package/dist/metadata/catalog.d.ts.map +1 -1
  148. package/dist/metadata/catalog.js +193 -22
  149. package/dist/metadata/catalog.js.map +1 -1
  150. package/dist/metadata/meaning-evidence.d.ts +10 -1
  151. package/dist/metadata/meaning-evidence.d.ts.map +1 -1
  152. package/dist/metadata/meaning-evidence.js +275 -53
  153. package/dist/metadata/meaning-evidence.js.map +1 -1
  154. package/dist/metadata/metric-match.d.ts +32 -0
  155. package/dist/metadata/metric-match.d.ts.map +1 -1
  156. package/dist/metadata/metric-match.js +120 -9
  157. package/dist/metadata/metric-match.js.map +1 -1
  158. package/dist/research-loop.d.ts +33 -2
  159. package/dist/research-loop.d.ts.map +1 -1
  160. package/dist/research-loop.js +66 -4
  161. package/dist/research-loop.js.map +1 -1
  162. package/dist/resolved-analytical-plan.d.ts +7 -0
  163. package/dist/resolved-analytical-plan.d.ts.map +1 -1
  164. package/dist/resolved-analytical-plan.js +11 -4
  165. package/dist/resolved-analytical-plan.js.map +1 -1
  166. package/dist/router.d.ts +32 -19
  167. package/dist/router.d.ts.map +1 -1
  168. package/dist/router.js +1977 -73
  169. package/dist/router.js.map +1 -1
  170. package/dist/semantic-bridge/member-select.d.ts.map +1 -1
  171. package/dist/semantic-bridge/member-select.js +39 -21
  172. package/dist/semantic-bridge/member-select.js.map +1 -1
  173. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-agent.js","sourceRoot":"","sources":["../../src/agentic/research-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Exact generated-SQL execution authorization.
3
+ *
4
+ * This is deliberately a server-only, in-memory capability. It is created by
5
+ * the analyst loop, passed through one call chain, and consumed by the local
6
+ * execution host. It is never an artifact, response field, cache entry, or
7
+ * bearer token.
8
+ */
9
+ export type IdentifierEvidence = 'compiler' | 'preview' | 'schema_tool' | 'catalog';
10
+ export interface ExecutionAuthorizationBindingV1 {
11
+ runId: string;
12
+ executionId: string;
13
+ snapshotId: string;
14
+ /** The router plan that selected the target, when a plan exists. */
15
+ planId?: string;
16
+ /** The server-observed physical execution target. */
17
+ targetFingerprint?: string;
18
+ /** Canonical host bindings, never raw parameter values. */
19
+ bindingsFingerprint: string;
20
+ }
21
+ export interface FinalSqlAuthorizationV1 extends ExecutionAuthorizationBindingV1 {
22
+ version: 1;
23
+ /** Fully-qualified identities proven during this exact loop. */
24
+ provenIdentifiers: string[];
25
+ /** Catalog evidence informs retrieval only and never authorizes execution. */
26
+ evidence: Record<string, IdentifierEvidence>;
27
+ /** SHA-256 of the exact prepared bytes sent to the connector. */
28
+ sqlFingerprint: string;
29
+ mintedAt: string;
30
+ }
31
+ /**
32
+ * Opaque handoff from the analyst loop to its host execution closure. Do not
33
+ * persist or surface this type; its only valid lifetime is one request/child.
34
+ */
35
+ export interface AgenticSqlExecutionCapabilityV1 extends Omit<ExecutionAuthorizationBindingV1, 'planId' | 'targetFingerprint'> {
36
+ version: 1;
37
+ /** Generated execution never proceeds without a frozen plan and target. */
38
+ planId: string;
39
+ targetFingerprint: string;
40
+ candidateSqlFingerprint: string;
41
+ provenIdentifiers: string[];
42
+ evidence: Record<string, IdentifierEvidence>;
43
+ }
44
+ export interface SqlAuthorizationVerdict {
45
+ ok: boolean;
46
+ unproven: string[];
47
+ drifted: boolean;
48
+ reason?: string;
49
+ }
50
+ export interface SqlAuthorizationCheck {
51
+ bindings?: unknown;
52
+ runId?: string;
53
+ executionId?: string;
54
+ snapshotId?: string;
55
+ planId?: string;
56
+ targetFingerprint?: string;
57
+ }
58
+ /**
59
+ * Per-invocation, server-only one-shot gate for analyst capabilities.
60
+ *
61
+ * The host creates one gate for one answer/compound child. It has no registry,
62
+ * static state, persistence, or bearer representation; it merely prevents the
63
+ * exact same capability from crossing the physical execution boundary twice.
64
+ */
65
+ export declare class AgenticExecutionCapabilityGate {
66
+ private readonly consumed;
67
+ consume(capability: Pick<AgenticSqlExecutionCapabilityV1, 'runId' | 'executionId'>): boolean;
68
+ }
69
+ /** Parsed references supplied by the established SQL validator. */
70
+ export interface SqlAuthorizationReferences {
71
+ relations?: readonly string[];
72
+ columns?: ReadonlyArray<{
73
+ relation?: string;
74
+ column: string;
75
+ }>;
76
+ }
77
+ /**
78
+ * Historical export retained for callers. No SQL rewriting is permitted at
79
+ * this boundary: lowercasing or stripping comments changes string literals and
80
+ * can turn two different queries into the same authorization fingerprint.
81
+ */
82
+ export declare function normalizeSqlForFingerprint(sql: string): string;
83
+ /** Hash exact SQL bytes. Formatting drift is execution drift here. */
84
+ export declare function fingerprintSql(sql: string): string;
85
+ /** Stable, redacted fingerprint for positional/named bindings. */
86
+ export declare function fingerprintSqlBindings(bindings: unknown): string;
87
+ export declare function createAgenticSqlExecutionCapability(input: {
88
+ sql: string;
89
+ proven: ReadonlyArray<{
90
+ identifier: string;
91
+ evidence: IdentifierEvidence;
92
+ }>;
93
+ runId?: string;
94
+ executionId?: string;
95
+ snapshotId?: string;
96
+ planId?: string;
97
+ targetFingerprint?: string;
98
+ bindings?: unknown;
99
+ }): AgenticSqlExecutionCapabilityV1 | undefined;
100
+ export declare function mintFinalSqlAuthorization(input: {
101
+ sql: string;
102
+ proven: ReadonlyArray<{
103
+ identifier: string;
104
+ evidence: IdentifierEvidence;
105
+ }>;
106
+ runId?: string;
107
+ executionId?: string;
108
+ snapshotId?: string;
109
+ planId?: string;
110
+ targetFingerprint?: string;
111
+ bindings?: unknown;
112
+ now?: () => Date;
113
+ }): FinalSqlAuthorizationV1;
114
+ /**
115
+ * Validate that the host is still executing the precise analyst proposal before
116
+ * preparation. The subsequent final authorization binds the prepared bytes.
117
+ */
118
+ export declare function verifyAgenticSqlExecutionCapability(capability: AgenticSqlExecutionCapabilityV1, candidateSql: string, check?: SqlAuthorizationCheck): SqlAuthorizationVerdict;
119
+ /**
120
+ * Does the exact prepared statement reference only observed, non-catalog
121
+ * identities and still match its run/target/binding authority?
122
+ */
123
+ export declare function verifyFinalSql(authorization: FinalSqlAuthorizationV1, sql: string, referenced: ReadonlyArray<string>, check?: SqlAuthorizationCheck): SqlAuthorizationVerdict;
124
+ /**
125
+ * Convert validator references into fully-qualified execution identities using
126
+ * only aliases declared inside the same SQL statement. This is not a leaf-name
127
+ * fallback: an unqualified column in a multi-relation query stays unqualified
128
+ * and is therefore refused by the capability check.
129
+ */
130
+ export declare function qualifyAuthorizationReferences(sql: string, references: SqlAuthorizationReferences): string[];
131
+ //# sourceMappingURL=sql-authorization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-authorization.d.ts","sourceRoot":"","sources":["../../src/agentic/sql-authorization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,460 @@
1
+ /**
2
+ * Exact generated-SQL execution authorization.
3
+ *
4
+ * This is deliberately a server-only, in-memory capability. It is created by
5
+ * the analyst loop, passed through one call chain, and consumed by the local
6
+ * execution host. It is never an artifact, response field, cache entry, or
7
+ * bearer token.
8
+ */
9
+ import { createHash, randomUUID } from 'node:crypto';
10
+ /**
11
+ * Per-invocation, server-only one-shot gate for analyst capabilities.
12
+ *
13
+ * The host creates one gate for one answer/compound child. It has no registry,
14
+ * static state, persistence, or bearer representation; it merely prevents the
15
+ * exact same capability from crossing the physical execution boundary twice.
16
+ */
17
+ export class AgenticExecutionCapabilityGate {
18
+ consumed = new Set();
19
+ consume(capability) {
20
+ const identity = `${capability.runId}\u0000${capability.executionId}`;
21
+ if (this.consumed.has(identity))
22
+ return false;
23
+ this.consumed.add(identity);
24
+ return true;
25
+ }
26
+ }
27
+ /**
28
+ * Historical export retained for callers. No SQL rewriting is permitted at
29
+ * this boundary: lowercasing or stripping comments changes string literals and
30
+ * can turn two different queries into the same authorization fingerprint.
31
+ */
32
+ export function normalizeSqlForFingerprint(sql) {
33
+ return sql;
34
+ }
35
+ /** Hash exact SQL bytes. Formatting drift is execution drift here. */
36
+ export function fingerprintSql(sql) {
37
+ return createHash('sha256').update(sql, 'utf8').digest('hex').slice(0, 32);
38
+ }
39
+ /** Stable, redacted fingerprint for positional/named bindings. */
40
+ export function fingerprintSqlBindings(bindings) {
41
+ return createHash('sha256').update(stableBindingsValue(bindings), 'utf8').digest('hex').slice(0, 32);
42
+ }
43
+ export function createAgenticSqlExecutionCapability(input) {
44
+ const runId = requiredCapabilityIdentity(input.runId);
45
+ const snapshotId = requiredCapabilityIdentity(input.snapshotId);
46
+ const planId = requiredCapabilityIdentity(input.planId);
47
+ const targetFingerprint = requiredCapabilityIdentity(input.targetFingerprint);
48
+ if (!runId || !snapshotId || !planId || !targetFingerprint)
49
+ return undefined;
50
+ const normalizedProof = normalizeProof(input.proven);
51
+ return {
52
+ version: 1,
53
+ runId,
54
+ executionId: input.executionId?.trim() || randomUUID(),
55
+ snapshotId,
56
+ planId,
57
+ targetFingerprint,
58
+ bindingsFingerprint: fingerprintSqlBindings(input.bindings ?? {}),
59
+ candidateSqlFingerprint: fingerprintSql(input.sql),
60
+ ...normalizedProof,
61
+ };
62
+ }
63
+ export function mintFinalSqlAuthorization(input) {
64
+ const normalizedProof = normalizeProof(input.proven);
65
+ return {
66
+ version: 1,
67
+ runId: requiredIdentity(input.runId, 'run'),
68
+ executionId: input.executionId?.trim() || randomUUID(),
69
+ snapshotId: requiredIdentity(input.snapshotId, 'snapshot'),
70
+ ...(input.planId?.trim() ? { planId: input.planId.trim() } : {}),
71
+ ...(input.targetFingerprint?.trim() ? { targetFingerprint: input.targetFingerprint.trim() } : {}),
72
+ bindingsFingerprint: fingerprintSqlBindings(input.bindings ?? {}),
73
+ sqlFingerprint: fingerprintSql(input.sql),
74
+ ...normalizedProof,
75
+ mintedAt: (input.now?.() ?? new Date()).toISOString(),
76
+ };
77
+ }
78
+ /**
79
+ * Validate that the host is still executing the precise analyst proposal before
80
+ * preparation. The subsequent final authorization binds the prepared bytes.
81
+ */
82
+ export function verifyAgenticSqlExecutionCapability(capability, candidateSql, check = {}) {
83
+ if (fingerprintSql(candidateSql) !== capability.candidateSqlFingerprint) {
84
+ return failure('The generated SQL differs from the analyst-approved proposal.', true);
85
+ }
86
+ return verifyBinding(capability, check);
87
+ }
88
+ /**
89
+ * Does the exact prepared statement reference only observed, non-catalog
90
+ * identities and still match its run/target/binding authority?
91
+ */
92
+ export function verifyFinalSql(authorization, sql, referenced, check = {}) {
93
+ if (fingerprintSql(sql) !== authorization.sqlFingerprint) {
94
+ return failure('The statement about to execute is not the one that was authorized.', true);
95
+ }
96
+ const binding = verifyBinding(authorization, check);
97
+ if (!binding.ok)
98
+ return binding;
99
+ const executable = new Set(authorization.provenIdentifiers.filter((id) => authorization.evidence[id] !== 'catalog'));
100
+ const unproven = [...new Set(referenced
101
+ .map(normalizeQualifiedIdentifier)
102
+ .filter(Boolean)
103
+ // No leaf fallback. `warehouse_a.orders.id` and `warehouse_b.orders.id`
104
+ // are distinct capabilities even when their last component is the same.
105
+ .filter((name) => !executable.has(name)))];
106
+ if (unproven.length > 0) {
107
+ return { ok: false, unproven, drifted: false, reason: `Nothing in this run proved: ${unproven.join(', ')}.` };
108
+ }
109
+ return { ok: true, unproven: [], drifted: false };
110
+ }
111
+ /**
112
+ * Convert validator references into fully-qualified execution identities using
113
+ * only aliases declared inside the same SQL statement. This is not a leaf-name
114
+ * fallback: an unqualified column in a multi-relation query stays unqualified
115
+ * and is therefore refused by the capability check.
116
+ */
117
+ export function qualifyAuthorizationReferences(sql, references) {
118
+ const relations = [...new Set((references.relations ?? []).filter(Boolean))];
119
+ const aliases = relationAliasesInSql(sql);
120
+ const byNormalizedRelation = new Map(relations.map((relation) => [normalizeQualifiedIdentifier(relation), relation]));
121
+ const resolveRelation = (relation) => {
122
+ if (relation) {
123
+ const normalized = normalizeQualifiedIdentifier(relation);
124
+ return aliases.get(normalized) ?? byNormalizedRelation.get(normalized);
125
+ }
126
+ return relations.length === 1 ? relations[0] : undefined;
127
+ };
128
+ // SQL parsers quite correctly report an unqualified `ORDER BY total` as a
129
+ // column reference. `total` can instead be a SELECT output alias, which is
130
+ // not a physical warehouse column and therefore must not be minted as one
131
+ // into the execution capability. Only replace an exact alias with the
132
+ // source references which the same parser already found in that alias's
133
+ // expression. This keeps the physical proof load-bearing: a scalar alias,
134
+ // an arbitrary/unbound alias, or an alias over an unknown source remains a
135
+ // denied reference rather than becoming an authorization bypass.
136
+ const outputAliasSources = selectOutputAliasSourceReferences(sql, references, resolveRelation);
137
+ return Array.from(new Set([
138
+ ...relations,
139
+ ...(references.columns ?? []).map((column) => {
140
+ const outputSources = outputAliasSources.get(normalizeQualifiedIdentifier(column.column));
141
+ // Some parsers attach the only FROM relation to an otherwise bare
142
+ // `ORDER BY total` reference. Syntax, not that parser convenience, is
143
+ // the authority here: a qualified `ORDER BY t.total` remains physical.
144
+ if (outputSources && isBareTopLevelOrderByAlias(sql, column.column))
145
+ return outputSources;
146
+ const relation = resolveRelation(column.relation);
147
+ return relation ? `${relation}.${column.column}` : column.column;
148
+ }),
149
+ ].flat()));
150
+ }
151
+ /**
152
+ * Return physical source identities for exact SELECT aliases. This is a
153
+ * deliberately narrow companion to the established SQL parser: it does not
154
+ * parse SQL, infer joins, or resolve a leaf against another relation. It only
155
+ * recognizes an alias when an existing parser-reported source column occurs in
156
+ * that same SELECT expression. The caller subsequently proves each returned
157
+ * identity against the router-owned runtime closure.
158
+ */
159
+ function selectOutputAliasSourceReferences(sql, references, resolveRelation) {
160
+ const result = new Map();
161
+ const columns = references.columns ?? [];
162
+ for (const item of splitTopLevelSelectItems(topLevelSelectList(sql))) {
163
+ const output = selectOutputAlias(item);
164
+ if (!output)
165
+ continue;
166
+ const alias = normalizeQualifiedIdentifier(output.alias);
167
+ if (!alias)
168
+ continue;
169
+ const sources = columns.flatMap((column) => {
170
+ // An output alias cannot prove itself. It must be backed by an existing
171
+ // parser-reported source reference from its own expression.
172
+ if (!column.relation && normalizeQualifiedIdentifier(column.column) === alias)
173
+ return [];
174
+ if (!expressionReferencesColumn(output.expression, column.column))
175
+ return [];
176
+ const relation = resolveRelation(column.relation);
177
+ return relation ? [`${relation}.${column.column}`] : [];
178
+ });
179
+ if (sources.length > 0)
180
+ result.set(alias, Array.from(new Set(sources)));
181
+ }
182
+ return result;
183
+ }
184
+ function topLevelSelectList(sql) {
185
+ let depth = 0;
186
+ let quote;
187
+ let selectStart = -1;
188
+ for (let index = 0; index < sql.length; index += 1) {
189
+ const char = sql[index];
190
+ const next = sql[index + 1];
191
+ if (quote) {
192
+ if (char === quote) {
193
+ if (quote === "'" && next === "'") {
194
+ index += 1;
195
+ continue;
196
+ }
197
+ quote = undefined;
198
+ }
199
+ continue;
200
+ }
201
+ if (char === '"' || char === "'" || char === '`') {
202
+ quote = char;
203
+ continue;
204
+ }
205
+ if (char === '(') {
206
+ depth += 1;
207
+ continue;
208
+ }
209
+ if (char === ')') {
210
+ depth = Math.max(0, depth - 1);
211
+ continue;
212
+ }
213
+ if (depth !== 0 || !/[A-Za-z_]/.test(char))
214
+ continue;
215
+ const match = /^[A-Za-z_][A-Za-z0-9_$]*/.exec(sql.slice(index));
216
+ if (!match)
217
+ continue;
218
+ const token = match[0].toLowerCase();
219
+ if (token === 'select')
220
+ selectStart = index + match[0].length;
221
+ if (token === 'from' && selectStart >= 0)
222
+ return sql.slice(selectStart, index);
223
+ index += match[0].length - 1;
224
+ }
225
+ return '';
226
+ }
227
+ function isBareTopLevelOrderByAlias(sql, alias) {
228
+ const list = topLevelOrderByList(sql);
229
+ const normalizedAlias = normalizeQualifiedIdentifier(alias);
230
+ if (!list || !normalizedAlias)
231
+ return false;
232
+ return splitTopLevelSelectItems(list).some((item) => {
233
+ const withoutDirection = item
234
+ .trim()
235
+ .replace(/\s+(?:asc|desc)(?:\s+nulls\s+(?:first|last))?\s*$/i, '')
236
+ .trim();
237
+ return !withoutDirection.includes('.')
238
+ && normalizeQualifiedIdentifier(withoutDirection) === normalizedAlias;
239
+ });
240
+ }
241
+ function topLevelOrderByList(sql) {
242
+ let depth = 0;
243
+ let quote;
244
+ let orderByStart = -1;
245
+ for (let index = 0; index < sql.length; index += 1) {
246
+ const char = sql[index];
247
+ const next = sql[index + 1];
248
+ if (quote) {
249
+ if (char === quote) {
250
+ if (quote === "'" && next === "'") {
251
+ index += 1;
252
+ continue;
253
+ }
254
+ quote = undefined;
255
+ }
256
+ continue;
257
+ }
258
+ if (char === '"' || char === "'" || char === '`') {
259
+ quote = char;
260
+ continue;
261
+ }
262
+ if (char === '(') {
263
+ depth += 1;
264
+ continue;
265
+ }
266
+ if (char === ')') {
267
+ depth = Math.max(0, depth - 1);
268
+ continue;
269
+ }
270
+ if (depth !== 0 || !/[A-Za-z_]/.test(char))
271
+ continue;
272
+ const match = /^[A-Za-z_][A-Za-z0-9_$]*/.exec(sql.slice(index));
273
+ if (!match)
274
+ continue;
275
+ const token = match[0].toLowerCase();
276
+ if (orderByStart < 0 && token === 'order') {
277
+ const by = /^\s+by\b/i.exec(sql.slice(index + match[0].length));
278
+ if (by) {
279
+ orderByStart = index + match[0].length + by[0].length;
280
+ index = orderByStart - 1;
281
+ continue;
282
+ }
283
+ }
284
+ else if (orderByStart >= 0 && ['limit', 'offset', 'fetch', 'union', 'intersect', 'except', 'qualify'].includes(token)) {
285
+ return sql.slice(orderByStart, index);
286
+ }
287
+ index += match[0].length - 1;
288
+ }
289
+ return orderByStart >= 0 ? sql.slice(orderByStart) : '';
290
+ }
291
+ function splitTopLevelSelectItems(section) {
292
+ const items = [];
293
+ let current = '';
294
+ let depth = 0;
295
+ let quote;
296
+ for (let index = 0; index < section.length; index += 1) {
297
+ const char = section[index];
298
+ const next = section[index + 1];
299
+ if (quote) {
300
+ current += char;
301
+ if (char === quote) {
302
+ if (quote === "'" && next === "'") {
303
+ current += next;
304
+ index += 1;
305
+ continue;
306
+ }
307
+ quote = undefined;
308
+ }
309
+ continue;
310
+ }
311
+ if (char === '"' || char === "'" || char === '`') {
312
+ quote = char;
313
+ current += char;
314
+ continue;
315
+ }
316
+ if (char === '(') {
317
+ depth += 1;
318
+ current += char;
319
+ continue;
320
+ }
321
+ if (char === ')') {
322
+ depth = Math.max(0, depth - 1);
323
+ current += char;
324
+ continue;
325
+ }
326
+ if (char === ',' && depth === 0) {
327
+ if (current.trim())
328
+ items.push(current.trim());
329
+ current = '';
330
+ continue;
331
+ }
332
+ current += char;
333
+ }
334
+ if (current.trim())
335
+ items.push(current.trim());
336
+ return items;
337
+ }
338
+ function selectOutputAlias(item) {
339
+ const identifier = '(?:"[^"]+"|`[^`]+`|[A-Za-z_][A-Za-z0-9_$]*)';
340
+ const explicit = new RegExp(`\\bAS\\s+(${identifier})\\s*$`, 'i').exec(item);
341
+ if (explicit?.[1]) {
342
+ return { alias: cleanSqlIdentifier(explicit[1]), expression: item.slice(0, explicit.index).trim() };
343
+ }
344
+ const implicit = new RegExp(`(?:\\bEND|\\)|\\])\\s+(${identifier})\\s*$`, 'i').exec(item);
345
+ if (!implicit?.[1])
346
+ return undefined;
347
+ const alias = cleanSqlIdentifier(implicit[1]);
348
+ if (!alias || SQL_OUTPUT_ALIAS_STOPWORDS.has(alias.toLowerCase()))
349
+ return undefined;
350
+ return { alias, expression: item.slice(0, implicit.index).trim() };
351
+ }
352
+ const SQL_OUTPUT_ALIAS_STOPWORDS = new Set(['asc', 'desc', 'from', 'group', 'having', 'limit', 'order', 'where']);
353
+ function cleanSqlIdentifier(value) {
354
+ return value.trim().replace(/^(["`])|(["`])$/g, '');
355
+ }
356
+ function expressionReferencesColumn(expression, column) {
357
+ const normalized = cleanSqlIdentifier(column);
358
+ if (!normalized || !/^[A-Za-z_][A-Za-z0-9_$]*$/.test(normalized))
359
+ return false;
360
+ const escaped = normalized.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
361
+ return new RegExp(`(?:^|[^A-Za-z0-9_$])(?:[A-Za-z_][A-Za-z0-9_$]*\\s*\\.\\s*)?${escaped}(?=$|[^A-Za-z0-9_$])`, 'i')
362
+ .test(expression);
363
+ }
364
+ function normalizeProof(proven) {
365
+ const evidence = {};
366
+ for (const entry of proven) {
367
+ const key = normalizeQualifiedIdentifier(entry.identifier);
368
+ if (!key)
369
+ continue;
370
+ const existing = evidence[key];
371
+ if (!existing || evidenceRank(entry.evidence) > evidenceRank(existing))
372
+ evidence[key] = entry.evidence;
373
+ }
374
+ return { evidence, provenIdentifiers: Object.keys(evidence).sort() };
375
+ }
376
+ function verifyBinding(authority, check) {
377
+ if (check.bindings !== undefined && fingerprintSqlBindings(check.bindings) !== authority.bindingsFingerprint) {
378
+ return failure('The SQL bindings differ from the authorized execution.', true);
379
+ }
380
+ for (const field of ['runId', 'executionId', 'snapshotId', 'planId', 'targetFingerprint']) {
381
+ const expected = check[field];
382
+ const actual = authority[field];
383
+ if (expected !== undefined && expected !== actual) {
384
+ return failure(`The execution ${field} does not match the authorized request.`, true);
385
+ }
386
+ }
387
+ return { ok: true, unproven: [], drifted: false };
388
+ }
389
+ function failure(reason, drifted) {
390
+ return { ok: false, unproven: [], drifted, reason };
391
+ }
392
+ function requiredIdentity(value, label) {
393
+ const normalized = value?.trim();
394
+ // A runless host cannot accidentally turn a global/default execution into a
395
+ // valid capability. The random fallback is isolated per invocation, never
396
+ // shared in a registry, and is useful only inside the supplied closure.
397
+ return normalized || `${label}:${randomUUID()}`;
398
+ }
399
+ /** Missing generated-execution scope is a fail-closed condition, not a value to mint. */
400
+ function requiredCapabilityIdentity(value) {
401
+ const normalized = value?.trim();
402
+ return normalized || undefined;
403
+ }
404
+ function normalizeQualifiedIdentifier(value) {
405
+ return value
406
+ .trim()
407
+ .split('.')
408
+ .map((part) => part.trim().replace(/^["`\[]|["`\]]$/g, '').toLowerCase())
409
+ .filter(Boolean)
410
+ .join('.');
411
+ }
412
+ function relationAliasesInSql(sql) {
413
+ const aliases = new Map();
414
+ const stopwords = new Set(['where', 'group', 'order', 'limit', 'having', 'join', 'left', 'right', 'inner', 'outer', 'full', 'cross', 'on', 'union']);
415
+ // The validator remains the authority for SQL parsing. This small parser only
416
+ // maps a parser-reported alias back to its exact relation spelling, and does
417
+ // not try to infer a relation from the last segment of an identifier.
418
+ const relation = '(?:"[^"]+"|`[^`]+`|\\[[^\\]]+\\]|[A-Za-z_][A-Za-z0-9_$]*)(?:\\s*\\.\\s*(?:"[^"]+"|`[^`]+`|\\[[^\\]]+\\]|[A-Za-z_][A-Za-z0-9_$]*))*';
419
+ const matcher = new RegExp(`\\b(?:from|join)\\s+(${relation})(?:\\s+(?:as\\s+)?([A-Za-z_][A-Za-z0-9_$]*))?`, 'gi');
420
+ for (const match of sql.matchAll(matcher)) {
421
+ const source = match[1]?.trim();
422
+ const alias = match[2]?.trim();
423
+ if (!source)
424
+ continue;
425
+ aliases.set(normalizeQualifiedIdentifier(source), source);
426
+ if (alias && !stopwords.has(alias.toLowerCase()))
427
+ aliases.set(normalizeQualifiedIdentifier(alias), source);
428
+ }
429
+ return aliases;
430
+ }
431
+ function evidenceRank(source) {
432
+ switch (source) {
433
+ case 'compiler': return 3;
434
+ case 'preview': return 2;
435
+ case 'schema_tool': return 1;
436
+ case 'catalog': return 0;
437
+ }
438
+ }
439
+ function stableBindingsValue(value) {
440
+ if (value === null)
441
+ return 'null';
442
+ if (value === undefined)
443
+ return 'undefined';
444
+ if (typeof value === 'string')
445
+ return JSON.stringify(value);
446
+ if (typeof value === 'number' || typeof value === 'boolean')
447
+ return JSON.stringify(value);
448
+ if (typeof value === 'bigint')
449
+ return JSON.stringify(value.toString());
450
+ if (value instanceof Date)
451
+ return JSON.stringify(value.toISOString());
452
+ if (Array.isArray(value))
453
+ return `[${value.map(stableBindingsValue).join(',')}]`;
454
+ if (typeof value === 'object') {
455
+ const record = value;
456
+ return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${stableBindingsValue(record[key])}`).join(',')}}`;
457
+ }
458
+ return JSON.stringify(String(value));
459
+ }
460
+ //# sourceMappingURL=sql-authorization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-authorization.js","sourceRoot":"","sources":["../../src/agentic/sql-authorization.ts"],"names":[],"mappings":"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"}