@duckcodeailabs/dql-agent 1.14.1 → 1.14.3-rc.1

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 (174) hide show
  1. package/dist/agent-run-engine.d.ts +71 -2
  2. package/dist/agent-run-engine.d.ts.map +1 -1
  3. package/dist/agent-run-engine.js +1048 -31
  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 +12 -0
  7. package/dist/agent-run-gates.js.map +1 -1
  8. package/dist/agent-run-planner.d.ts +6 -0
  9. package/dist/agent-run-planner.d.ts.map +1 -1
  10. package/dist/agent-run-planner.js +2 -0
  11. package/dist/agent-run-planner.js.map +1 -1
  12. package/dist/agent-run-store.d.ts.map +1 -1
  13. package/dist/agent-run-store.js +48 -3
  14. package/dist/agent-run-store.js.map +1 -1
  15. package/dist/agentic/analyst-loop.d.ts +7 -1
  16. package/dist/agentic/analyst-loop.d.ts.map +1 -1
  17. package/dist/agentic/analyst-loop.js +211 -28
  18. package/dist/agentic/analyst-loop.js.map +1 -1
  19. package/dist/agentic/assumptions.d.ts +1 -1
  20. package/dist/agentic/assumptions.d.ts.map +1 -1
  21. package/dist/agentic/assumptions.js.map +1 -1
  22. package/dist/agentic/research/synthesis.d.ts +4 -0
  23. package/dist/agentic/research/synthesis.d.ts.map +1 -1
  24. package/dist/agentic/research/synthesis.js +23 -8
  25. package/dist/agentic/research/synthesis.js.map +1 -1
  26. package/dist/agentic/research-agent.d.ts.map +1 -1
  27. package/dist/agentic/research-agent.js +13 -3
  28. package/dist/agentic/research-agent.js.map +1 -1
  29. package/dist/agentic/sql-authorization.d.ts +8 -0
  30. package/dist/agentic/sql-authorization.d.ts.map +1 -1
  31. package/dist/agentic/sql-authorization.js +233 -2
  32. package/dist/agentic/sql-authorization.js.map +1 -1
  33. package/dist/analytical-compatibility.d.ts.map +1 -1
  34. package/dist/analytical-compatibility.js +8 -1
  35. package/dist/analytical-compatibility.js.map +1 -1
  36. package/dist/analytical-failure-repair.d.ts.map +1 -1
  37. package/dist/analytical-failure-repair.js +6 -2
  38. package/dist/analytical-failure-repair.js.map +1 -1
  39. package/dist/analytical-frame.d.ts +23 -1
  40. package/dist/analytical-frame.d.ts.map +1 -1
  41. package/dist/analytical-frame.js +332 -17
  42. package/dist/analytical-frame.js.map +1 -1
  43. package/dist/analytical-orchestration.d.ts +613 -0
  44. package/dist/analytical-orchestration.d.ts.map +1 -1
  45. package/dist/analytical-orchestration.js +1007 -0
  46. package/dist/analytical-orchestration.js.map +1 -1
  47. package/dist/answer-loop.d.ts +110 -6
  48. package/dist/answer-loop.d.ts.map +1 -1
  49. package/dist/answer-loop.js +1180 -125
  50. package/dist/answer-loop.js.map +1 -1
  51. package/dist/answer-shape.d.ts +32 -1
  52. package/dist/answer-shape.d.ts.map +1 -1
  53. package/dist/answer-shape.js +49 -3
  54. package/dist/answer-shape.js.map +1 -1
  55. package/dist/ask-observability/index.d.ts +11 -0
  56. package/dist/ask-observability/index.d.ts.map +1 -0
  57. package/dist/ask-observability/index.js +7 -0
  58. package/dist/ask-observability/index.js.map +1 -0
  59. package/dist/ask-observability/instrumentation.d.ts +35 -0
  60. package/dist/ask-observability/instrumentation.d.ts.map +1 -0
  61. package/dist/ask-observability/instrumentation.js +472 -0
  62. package/dist/ask-observability/instrumentation.js.map +1 -0
  63. package/dist/ask-observability/observer.d.ts +62 -0
  64. package/dist/ask-observability/observer.d.ts.map +1 -0
  65. package/dist/ask-observability/observer.js +537 -0
  66. package/dist/ask-observability/observer.js.map +1 -0
  67. package/dist/ask-observability/portable.d.ts +98 -0
  68. package/dist/ask-observability/portable.d.ts.map +1 -0
  69. package/dist/ask-observability/portable.js +527 -0
  70. package/dist/ask-observability/portable.js.map +1 -0
  71. package/dist/ask-observability/store.d.ts +130 -0
  72. package/dist/ask-observability/store.d.ts.map +1 -0
  73. package/dist/ask-observability/store.js +1114 -0
  74. package/dist/ask-observability/store.js.map +1 -0
  75. package/dist/ask-observability/types.d.ts +357 -0
  76. package/dist/ask-observability/types.d.ts.map +1 -0
  77. package/dist/ask-observability/types.js +2 -0
  78. package/dist/ask-observability/types.js.map +1 -0
  79. package/dist/ask-observability/utils.d.ts +21 -0
  80. package/dist/ask-observability/utils.d.ts.map +1 -0
  81. package/dist/ask-observability/utils.js +102 -0
  82. package/dist/ask-observability/utils.js.map +1 -0
  83. package/dist/conversation/snapshot.d.ts +20 -0
  84. package/dist/conversation/snapshot.d.ts.map +1 -1
  85. package/dist/conversation/snapshot.js +30 -1
  86. package/dist/conversation/snapshot.js.map +1 -1
  87. package/dist/fixtures/ask-ai-office-shaped.d.ts +153 -0
  88. package/dist/fixtures/ask-ai-office-shaped.d.ts.map +1 -0
  89. package/dist/fixtures/ask-ai-office-shaped.js +94 -0
  90. package/dist/fixtures/ask-ai-office-shaped.js.map +1 -0
  91. package/dist/generated-analytical-proposal.d.ts +37 -1
  92. package/dist/generated-analytical-proposal.d.ts.map +1 -1
  93. package/dist/generated-analytical-proposal.js +211 -3
  94. package/dist/generated-analytical-proposal.js.map +1 -1
  95. package/dist/governed-relational-compiler.d.ts +15 -0
  96. package/dist/governed-relational-compiler.d.ts.map +1 -1
  97. package/dist/governed-relational-compiler.js +99 -1
  98. package/dist/governed-relational-compiler.js.map +1 -1
  99. package/dist/index.d.ts +11 -9
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +7 -5
  102. package/dist/index.js.map +1 -1
  103. package/dist/intent-controller.d.ts +38 -0
  104. package/dist/intent-controller.d.ts.map +1 -1
  105. package/dist/intent-controller.js +31 -1
  106. package/dist/intent-controller.js.map +1 -1
  107. package/dist/meaning-resolution.d.ts +141 -2
  108. package/dist/meaning-resolution.d.ts.map +1 -1
  109. package/dist/meaning-resolution.js +444 -30
  110. package/dist/meaning-resolution.js.map +1 -1
  111. package/dist/metadata/analysis-planner.d.ts.map +1 -1
  112. package/dist/metadata/analysis-planner.js +144 -7
  113. package/dist/metadata/analysis-planner.js.map +1 -1
  114. package/dist/metadata/block-fit.d.ts +18 -0
  115. package/dist/metadata/block-fit.d.ts.map +1 -1
  116. package/dist/metadata/block-fit.js +250 -38
  117. package/dist/metadata/block-fit.js.map +1 -1
  118. package/dist/metadata/catalog.d.ts.map +1 -1
  119. package/dist/metadata/catalog.js +58 -12
  120. package/dist/metadata/catalog.js.map +1 -1
  121. package/dist/metadata/meaning-evidence.d.ts +19 -3
  122. package/dist/metadata/meaning-evidence.d.ts.map +1 -1
  123. package/dist/metadata/meaning-evidence.js +518 -54
  124. package/dist/metadata/meaning-evidence.js.map +1 -1
  125. package/dist/plan-execution-adapter.d.ts +9 -1
  126. package/dist/plan-execution-adapter.d.ts.map +1 -1
  127. package/dist/plan-execution-adapter.js +93 -13
  128. package/dist/plan-execution-adapter.js.map +1 -1
  129. package/dist/provider-egress.d.ts +24 -10
  130. package/dist/provider-egress.d.ts.map +1 -1
  131. package/dist/provider-egress.js +22 -17
  132. package/dist/provider-egress.js.map +1 -1
  133. package/dist/providers/claude.d.ts.map +1 -1
  134. package/dist/providers/claude.js +10 -9
  135. package/dist/providers/claude.js.map +1 -1
  136. package/dist/providers/dispatch.d.ts +27 -1
  137. package/dist/providers/dispatch.d.ts.map +1 -1
  138. package/dist/providers/dispatch.js +63 -1
  139. package/dist/providers/dispatch.js.map +1 -1
  140. package/dist/providers/gemini.js +10 -10
  141. package/dist/providers/gemini.js.map +1 -1
  142. package/dist/providers/index.d.ts +2 -2
  143. package/dist/providers/index.d.ts.map +1 -1
  144. package/dist/providers/index.js +1 -1
  145. package/dist/providers/index.js.map +1 -1
  146. package/dist/providers/ollama.js +15 -15
  147. package/dist/providers/ollama.js.map +1 -1
  148. package/dist/providers/openai.js +22 -22
  149. package/dist/providers/openai.js.map +1 -1
  150. package/dist/providers/types.d.ts +52 -0
  151. package/dist/providers/types.d.ts.map +1 -1
  152. package/dist/providers/types.js.map +1 -1
  153. package/dist/relationship-proof.d.ts +81 -0
  154. package/dist/relationship-proof.d.ts.map +1 -1
  155. package/dist/relationship-proof.js +228 -4
  156. package/dist/relationship-proof.js.map +1 -1
  157. package/dist/research-loop.d.ts.map +1 -1
  158. package/dist/research-loop.js +23 -1
  159. package/dist/research-loop.js.map +1 -1
  160. package/dist/resolved-analytical-plan.d.ts +22 -1
  161. package/dist/resolved-analytical-plan.d.ts.map +1 -1
  162. package/dist/resolved-analytical-plan.js +773 -49
  163. package/dist/resolved-analytical-plan.js.map +1 -1
  164. package/dist/router.d.ts +14 -4
  165. package/dist/router.d.ts.map +1 -1
  166. package/dist/router.js +3668 -425
  167. package/dist/router.js.map +1 -1
  168. package/dist/semantic-bridge/compose.d.ts.map +1 -1
  169. package/dist/semantic-bridge/compose.js +23 -4
  170. package/dist/semantic-bridge/compose.js.map +1 -1
  171. package/dist/semantic-bridge/member-select.d.ts.map +1 -1
  172. package/dist/semantic-bridge/member-select.js +39 -21
  173. package/dist/semantic-bridge/member-select.js.map +1 -1
  174. package/package.json +5 -5
@@ -0,0 +1,472 @@
1
+ import { fingerprint } from './utils.js';
2
+ const tierSpan = {
3
+ certified: 'cascade.certified',
4
+ semantic: 'cascade.semantic',
5
+ governed_relational: 'cascade.governed_relational',
6
+ exploratory_sql: 'cascade.exploratory_sql',
7
+ clarify_or_gap: 'cascade.clarify_or_gap',
8
+ };
9
+ /**
10
+ * The router hands observability an already-authoritative decision. Projecting
11
+ * the same immutable decision into the cascade and freeze spans must not spend
12
+ * a second canonical JSON + SHA-256 pass per Ask. Weak ownership keeps this a
13
+ * pure producer cache: it cannot retain a route or become routing authority.
14
+ */
15
+ const safeCascadeDecisionCache = new WeakMap();
16
+ const safeCascadeAttemptCache = new WeakMap();
17
+ export function recordAuthoritativeRouterDecisionV1(observer, decision) {
18
+ if (!observer.enabled)
19
+ return;
20
+ const evidence = decision.retrievalEvidence;
21
+ if (evidence) {
22
+ const snapshot = observer.startSpan({
23
+ name: 'snapshot.acquire', stage: 'snapshot', reasonCode: 'completed',
24
+ payload: { kind: 'snapshot', snapshotId: evidence.snapshotId, sourceFingerprint: evidence.sourceFingerprint, freshness: 'unknown' },
25
+ });
26
+ observer.finishSpan(snapshot, { outcome: 'ok', reasonCode: 'completed' });
27
+ const retrieval = observer.startSpan({
28
+ name: 'retrieval', stage: 'retrieval', reasonCode: 'completed',
29
+ payload: { kind: 'retrieval', candidateCount: evidence.candidateCount, fingerprint: evidence.sourceFingerprint },
30
+ });
31
+ observer.finishSpan(retrieval, { outcome: 'ok', reasonCode: 'completed' });
32
+ }
33
+ const requirements = decision.analyticalCascadeDecision?.requirements;
34
+ // A missing meaning result is not itself a rejected model decision. In
35
+ // particular, deterministic pre-meaning clarifications (such as an
36
+ // undeclared fiscal calendar) deliberately skip the model call. Keep that
37
+ // span non-issue and let the authoritative cascade own the clarification.
38
+ const meaningRejected = Boolean(decision.meaningResolutionErrorCode);
39
+ const meaningResolved = Boolean(decision.meaningResolution);
40
+ const meaningReasonCode = meaningRejected
41
+ ? 'meaning_rejected'
42
+ : meaningResolved
43
+ ? 'meaning_resolved'
44
+ : decision.analyticalCascadeDecision?.stopReason === 'coverage_gap'
45
+ ? 'cascade_unavailable'
46
+ : 'unknown';
47
+ const meaningOutcome = meaningRejected
48
+ ? 'error'
49
+ : decision.requiresClarification || !meaningResolved
50
+ ? 'skipped'
51
+ : 'ok';
52
+ const meaning = observer.startSpan({
53
+ name: 'meaning.resolve', stage: 'meaning', reasonCode: meaningReasonCode,
54
+ payload: {
55
+ kind: 'meaning',
56
+ selectedCandidateIds: uniqueIds([
57
+ ...(decision.meaningResolution?.selectedConceptIds ?? []),
58
+ decision.meaningResolution?.recommendedExecutionId ?? '',
59
+ ]),
60
+ rejectedCandidateIds: uniqueIds((decision.meaningResolution?.rejectedCandidates ?? []).map((candidate) => candidate.id)),
61
+ ...(requirements ? { requirementFingerprint: fingerprint(requirements) } : {}),
62
+ source: decision.source === 'llm' ? 'model' : decision.source === 'cache' ? 'cache' : decision.requiresClarification ? 'selection' : 'heuristic',
63
+ },
64
+ });
65
+ observer.finishSpan(meaning, {
66
+ outcome: meaningOutcome,
67
+ reasonCode: meaningReasonCode,
68
+ });
69
+ // Meaning selections are only traceable when the router preserved the
70
+ // candidate's actual role and retrieval source. Never invent a generic
71
+ // `conversation/context` role simply because this adapter runs after the
72
+ // decision has frozen.
73
+ const metadata = new Map((evidence?.candidateTraceMetadata ?? []).map((entry) => [`${entry.candidateId}\u0000${entry.role}`, entry]));
74
+ const recordMeaningCandidates = (candidateIds, decisionKind) => {
75
+ for (const candidateId of uniqueIds(candidateIds)) {
76
+ for (const entry of [...metadata.values()].filter((item) => item.candidateId === candidateId)) {
77
+ observer.recordCandidateDecision({
78
+ candidateId,
79
+ role: entry.role,
80
+ source: entry.source,
81
+ ...(entry.lanes?.length ? { lanes: entry.lanes, lane: entry.lanes[0]?.lane, laneRank: entry.lanes[0]?.rank } : {}),
82
+ decision: decisionKind,
83
+ reasonCode: decisionKind,
84
+ compatibilityCode: 'unknown',
85
+ });
86
+ }
87
+ }
88
+ };
89
+ recordMeaningCandidates([
90
+ ...(decision.meaningResolution?.selectedConceptIds ?? []),
91
+ decision.meaningResolution?.recommendedExecutionId ?? '',
92
+ ], 'model_selected');
93
+ recordMeaningCandidates((decision.meaningResolution?.rejectedCandidates ?? []).map((candidate) => candidate.id), 'model_rejected');
94
+ if (decision.analyticalCascadeDecision)
95
+ recordCascadeDecisionV1(observer, decision.analyticalCascadeDecision);
96
+ }
97
+ export function recordCascadeDecisionV1(observer, decision) {
98
+ const traceDecision = cascadeThroughFirstFrozenTierV1(decision);
99
+ // The authoritative cascade keeps useful human-facing reason text. Do not
100
+ // leak it into a durable trace: this projection preserves only decision
101
+ // mechanics, qualified IDs, and one-way fingerprints of reasons.
102
+ const safeDecision = safeCascadeDecision(traceDecision);
103
+ const cascade = observer.startSpan({
104
+ name: 'cascade.evaluate', stage: 'cascade',
105
+ reasonCode: traceDecision.stopReason === 'selected' ? 'cascade_selected' : traceDecision.stopReason === 'denied' ? 'cascade_denied' : traceDecision.stopReason === 'ambiguous' ? 'cascade_ambiguous' : traceDecision.stopReason === 'post_freeze_failure' ? 'post_freeze_failure' : 'cascade_unavailable',
106
+ payload: { kind: 'cascade', decision: safeDecision },
107
+ });
108
+ for (const attempt of traceDecision.attempts) {
109
+ const span = observer.startSpan({
110
+ name: (tierSpan[attempt.tier] ?? 'cascade.clarify_or_gap'),
111
+ stage: 'cascade',
112
+ parentSpanId: cascade,
113
+ reasonCode: attempt.outcome === 'executable' ? 'cascade_selected' : attempt.outcome === 'denied' ? 'cascade_denied' : attempt.outcome === 'ambiguous' ? 'cascade_ambiguous' : attempt.outcome === 'unavailable' ? 'cascade_unavailable' : 'cascade_ineligible',
114
+ payload: { kind: 'cascade', decision: { ...safeDecision, attempts: [safeCascadeAttempt(attempt)] } },
115
+ });
116
+ observer.finishSpan(span, {
117
+ outcome: attempt.outcome === 'executable' ? 'ok' : attempt.outcome === 'denied' ? 'denied' : attempt.outcome === 'unavailable' ? 'unavailable' : attempt.outcome === 'ambiguous' ? 'skipped' : 'skipped',
118
+ reasonCode: attempt.outcome === 'executable' ? 'cascade_selected' : attempt.outcome === 'denied' ? 'cascade_denied' : attempt.outcome === 'ambiguous' ? 'cascade_ambiguous' : attempt.outcome === 'unavailable' ? 'cascade_unavailable' : 'cascade_ineligible',
119
+ });
120
+ }
121
+ observer.finishSpan(cascade, {
122
+ outcome: traceDecision.stopReason === 'denied' ? 'denied' : traceDecision.stopReason === 'post_freeze_failure' ? 'error' : 'ok',
123
+ reasonCode: traceDecision.stopReason === 'selected' ? 'cascade_selected' : traceDecision.stopReason === 'denied' ? 'cascade_denied' : traceDecision.stopReason === 'ambiguous' ? 'cascade_ambiguous' : traceDecision.stopReason === 'post_freeze_failure' ? 'post_freeze_failure' : 'cascade_unavailable',
124
+ });
125
+ recordAuthoritativePlanFreezeV1(observer, traceDecision);
126
+ }
127
+ /**
128
+ * A freeze may be present in the router's initial cascade decision or arrive
129
+ * only when the host validates an exploratory execution receipt. Project the
130
+ * exact authoritative state at either boundary; callers guard late promotion
131
+ * so a plan is never represented as freezing twice.
132
+ */
133
+ export function recordAuthoritativePlanFreezeV1(observer, decision) {
134
+ if (!observer.enabled || !decision.planFrozen)
135
+ return;
136
+ const traceDecision = cascadeThroughFirstFrozenTierV1(decision);
137
+ const freeze = observer.startSpan({
138
+ name: 'plan.freeze', stage: 'plan', reasonCode: 'plan_frozen',
139
+ payload: { kind: 'cascade', decision: safeCascadeDecision(traceDecision) },
140
+ });
141
+ observer.finishSpan(freeze, { outcome: 'ok', reasonCode: 'plan_frozen' });
142
+ }
143
+ /**
144
+ * Defensive projection for legacy/manual callers: once a tier reports an
145
+ * immutable freeze, later attempted tiers cannot be part of the same trace.
146
+ * Router construction already enforces this invariant, but observability must
147
+ * not turn a malformed old receipt into a misleading portable cascade.
148
+ */
149
+ function cascadeThroughFirstFrozenTierV1(decision) {
150
+ const selectedFreeze = decision.planFrozen === true && decision.selectedTier
151
+ ? decision.selectedTier
152
+ : undefined;
153
+ let normalized = false;
154
+ const normalizedAttempts = decision.attempts.map((attempt) => {
155
+ if (selectedFreeze !== attempt.tier || attempt.planFrozen)
156
+ return attempt;
157
+ normalized = true;
158
+ return { ...attempt, planFrozen: true };
159
+ });
160
+ const frozenIndex = normalizedAttempts.findIndex((attempt) => attempt.planFrozen);
161
+ if (frozenIndex < 0 || frozenIndex === normalizedAttempts.length - 1) {
162
+ return normalized ? { ...decision, attempts: normalizedAttempts } : decision;
163
+ }
164
+ return {
165
+ ...decision,
166
+ attempts: normalizedAttempts.slice(0, frozenIndex + 1),
167
+ };
168
+ }
169
+ export function recordEngineTraceEventV1(observer, event) {
170
+ if (!observer.enabled)
171
+ return;
172
+ if (event.type === 'plan.created') {
173
+ const span = observer.startSpan({ name: 'meaning.package', stage: 'meaning', reasonCode: 'completed', payload: { kind: 'stage', route: event.route } });
174
+ observer.finishSpan(span, { outcome: 'ok', reasonCode: 'completed' });
175
+ }
176
+ else if (event.type === 'artifact.created') {
177
+ // The artifact is the engine's already-accepted result boundary. Project
178
+ // only its checksum/count/trust into the trace; never copy rows, SQL, or
179
+ // answer text. This lets the trace prove that the selected frozen route
180
+ // and persisted result receipt refer to the same physical result.
181
+ const result = resultTraceProjection(event.payload);
182
+ // An artifact can carry a blocked answer shell or a narration-only
183
+ // receipt. Neither proves that a result was normalized. Require the
184
+ // canonical result fingerprint before recording successful completion.
185
+ if (!result?.resultFingerprint)
186
+ return;
187
+ const span = observer.startSpan({
188
+ name: 'result.normalize',
189
+ stage: 'result',
190
+ reasonCode: 'result_accepted',
191
+ payload: {
192
+ kind: 'result',
193
+ trustState: event.trustState,
194
+ ...(result?.resultFingerprint ? { resultFingerprint: result.resultFingerprint } : {}),
195
+ ...(result?.rowCount !== undefined ? { rowCount: result.rowCount } : {}),
196
+ },
197
+ });
198
+ observer.finishSpan(span, { outcome: 'ok', reasonCode: 'result_accepted' });
199
+ }
200
+ }
201
+ function resultTraceProjection(payload) {
202
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload))
203
+ return undefined;
204
+ const artifact = payload;
205
+ if (!artifact.payload || typeof artifact.payload !== 'object' || Array.isArray(artifact.payload))
206
+ return undefined;
207
+ const answer = artifact.payload;
208
+ if (!answer.result || typeof answer.result !== 'object' || Array.isArray(answer.result))
209
+ return undefined;
210
+ const result = answer.result;
211
+ const receipt = result.executionReceipt && typeof result.executionReceipt === 'object' && !Array.isArray(result.executionReceipt)
212
+ ? result.executionReceipt
213
+ : undefined;
214
+ const fingerprint = typeof result.resultFingerprint === 'string'
215
+ ? result.resultFingerprint
216
+ : typeof receipt?.resultFingerprint === 'string'
217
+ ? receipt.resultFingerprint
218
+ : undefined;
219
+ const safeFingerprint = fingerprint && /^(?:sha256:)?[a-f0-9]{64}$/i.test(fingerprint)
220
+ ? fingerprint
221
+ : undefined;
222
+ const rowCount = typeof result.rowCount === 'number'
223
+ && Number.isSafeInteger(result.rowCount)
224
+ && result.rowCount >= 0
225
+ ? result.rowCount
226
+ : undefined;
227
+ return safeFingerprint || rowCount !== undefined
228
+ ? { ...(safeFingerprint ? { resultFingerprint: safeFingerprint } : {}), ...(rowCount !== undefined ? { rowCount } : {}) }
229
+ : undefined;
230
+ }
231
+ /**
232
+ * Capture only terminal, receipt-derived narration evidence here. Physical
233
+ * provider/tool/SQL spans are emitted at their runtime boundaries; recreating
234
+ * them from counters would invent timing/outcomes and double-count a real
235
+ * execution in the trace.
236
+ */
237
+ export function recordExecutionAttemptSummaryV1(observer, result) {
238
+ if (!observer.enabled)
239
+ return;
240
+ if (result.narrationIntegrityReceipt) {
241
+ const narration = observer.startSpan({ name: 'narration.verify', stage: 'narration', reasonCode: result.narrationIntegrityReceipt.outcome === 'deterministic_fallback' ? 'narration_fallback' : 'completed', payload: { kind: 'stage', count: result.narrationIntegrityReceipt.factCount } });
242
+ observer.finishSpan(narration, { outcome: result.narrationIntegrityReceipt.outcome === 'error' ? 'error' : 'ok', reasonCode: result.narrationIntegrityReceipt.outcome === 'deterministic_fallback' ? 'narration_fallback' : 'completed' });
243
+ }
244
+ }
245
+ export function finalizeAgentRunTraceV1(observer, run) {
246
+ if (!observer.enabled)
247
+ return;
248
+ // A root Research deadline is not a generic request failure. Its child
249
+ // spans/receipts may already show partial progress, and this explicit
250
+ // terminal span lets the root tell the same bounded-deadline story without
251
+ // reconstructing an incident from prose or counters.
252
+ if (run.diagnosticReceipt?.failure?.code === 'RESEARCH_RUN_DEADLINE') {
253
+ const deadline = observer.startSpan({
254
+ // Root spans are owned by the observer and cannot be emitted through
255
+ // the producer API. `research.synthesize` is the precise missing phase:
256
+ // child work ended, but finalization could not start before the deadline.
257
+ name: 'research.synthesize',
258
+ stage: 'research',
259
+ reasonCode: 'run_deadline',
260
+ payload: { kind: 'research', branchStopReason: 'run_deadline' },
261
+ });
262
+ observer.finishSpan(deadline, { outcome: 'error', reasonCode: 'run_deadline' });
263
+ }
264
+ recordFrozenPlanTerminalFailureV1(observer, run);
265
+ const conversation = observer.startSpan({
266
+ name: 'conversation.persist',
267
+ stage: 'conversation',
268
+ reasonCode: 'completed',
269
+ payload: {
270
+ kind: 'conversation',
271
+ persisted: Boolean(run.traceReference || run.answer),
272
+ continuation: (run.conversationBinding ?? 'none') !== 'none',
273
+ binding: run.conversationBinding ?? (run.routeDecision?.followsUp ? 'prior_result' : 'none'),
274
+ },
275
+ });
276
+ observer.finishSpan(conversation, { outcome: 'ok', reasonCode: 'completed' });
277
+ const persistence = observer.startSpan({ name: 'run.persist', stage: 'persistence', reasonCode: 'completed', payload: { kind: 'persistence', recordingStatus: observer.recordingStatus } });
278
+ observer.finishSpan(persistence, { outcome: 'ok', reasonCode: 'completed' });
279
+ const status = run.status === 'cancelled' ? 'cancelled' : run.status === 'blocked' ? 'blocked' : 'completed';
280
+ const reference = observer.finalize({
281
+ status,
282
+ terminalOutcome: run.status,
283
+ trustState: run.trustState,
284
+ selectedTier: run.diagnosticReceiptV3?.cascade?.selectedTier,
285
+ completedAt: run.completedAt,
286
+ });
287
+ if (reference)
288
+ run.traceReference = reference;
289
+ }
290
+ /**
291
+ * A router-frozen plan must not be silently downgraded. When its immutable
292
+ * semantic/analytical execution fails, the run artifact is the authoritative
293
+ * terminal boundary. Project only its allowlisted failure code and action so
294
+ * the trace explains the post-freeze stop without retaining compiler text.
295
+ */
296
+ function recordFrozenPlanTerminalFailureV1(observer, run) {
297
+ const frozen = run.routeDecision?.analyticalCascadeDecision?.planFrozen
298
+ ?? run.diagnosticReceiptV3?.planFrozen
299
+ ?? false;
300
+ if (!frozen || run.status !== 'blocked')
301
+ return;
302
+ const failure = terminalAnalyticalFailureForRun(run);
303
+ if (!failure)
304
+ return;
305
+ const compilationFailure = failure.phase === 'compilation';
306
+ const semanticCompilation = compilationFailure && isSemanticCompilationForRun(run);
307
+ const span = observer.startSpan({
308
+ // Compilation happens after the plan froze but before a SQL statement
309
+ // exists. Labeling it as result normalization made a compiler refusal look
310
+ // like a warehouse/result problem in both trace views.
311
+ name: semanticCompilation ? 'semantic.compile' : compilationFailure ? 'plan.compile' : 'result.normalize',
312
+ stage: compilationFailure ? 'plan' : 'result',
313
+ reasonCode: 'post_freeze_failure',
314
+ payload: {
315
+ kind: 'result',
316
+ trustState: run.trustState,
317
+ failureCode: failure.code,
318
+ ...(failure.safeAction ? { safeAction: failure.safeAction } : {}),
319
+ },
320
+ });
321
+ observer.finishSpan(span, {
322
+ outcome: failure.code === 'POLICY_DENIED' || failure.code === 'PERMISSION_DENIED'
323
+ ? 'denied'
324
+ : failure.code === 'EXECUTION_CANCELLED'
325
+ ? 'cancelled'
326
+ : 'error',
327
+ reasonCode: 'post_freeze_failure',
328
+ });
329
+ }
330
+ function isSemanticCompilationForRun(run) {
331
+ // Use the same router-owned condition as V4. A route label or legacy plan
332
+ // capability alone cannot reconstruct a semantic tier after the fact.
333
+ return run.routeDecision?.analyticalCascadeDecision?.selectedTier === 'semantic';
334
+ }
335
+ function terminalAnalyticalFailureForRun(run) {
336
+ const executionSetupFailure = run.artifacts
337
+ .map((artifact) => artifact.payload)
338
+ .filter((payload) => Boolean(payload) && typeof payload === 'object' && !Array.isArray(payload))
339
+ .map((payload) => payload.observabilityExecutionFailure)
340
+ .find((candidate) => Boolean(candidate)
341
+ && typeof candidate === 'object'
342
+ && !Array.isArray(candidate)
343
+ && isConnectionNotConfiguredFailureV1(candidate));
344
+ if (executionSetupFailure) {
345
+ return { code: 'CONNECTION_NOT_CONFIGURED', safeAction: 'configure_connection' };
346
+ }
347
+ const warehouseFailure = run.artifacts
348
+ .map((artifact) => artifact.payload)
349
+ .filter((payload) => Boolean(payload) && typeof payload === 'object' && !Array.isArray(payload))
350
+ .map((payload) => payload.warehouseFailure)
351
+ .find((candidate) => {
352
+ if (!candidate || typeof candidate !== 'object' || Array.isArray(candidate))
353
+ return false;
354
+ const record = candidate;
355
+ return record.version === 1
356
+ && record.origin === 'warehouse'
357
+ && typeof record.category === 'string';
358
+ });
359
+ const failure = run.artifacts
360
+ .map((artifact) => artifact.payload)
361
+ .filter((payload) => Boolean(payload) && typeof payload === 'object' && !Array.isArray(payload))
362
+ .map((payload) => payload.analyticalFailure)
363
+ .find((candidate) => Boolean(candidate) && typeof candidate === 'object' && !Array.isArray(candidate));
364
+ if (!failure)
365
+ return undefined;
366
+ const code = safeTerminalFailureCodeV1(failure.code);
367
+ if (!code)
368
+ return undefined;
369
+ const actions = Array.isArray(failure.safeActions) ? failure.safeActions : [];
370
+ const safeAction = warehouseFailure?.category === 'unknown_relation'
371
+ ? 'change_authorized_connection'
372
+ : actions.map(safeTraceActionV1).find((action) => Boolean(action));
373
+ const phase = typeof failure.phase === 'string'
374
+ && ['planning', 'compilation', 'validation', 'execution', 'result_validation'].includes(failure.phase)
375
+ ? failure.phase
376
+ : undefined;
377
+ // A compilation refusal still needs one concrete, stable recovery action in
378
+ // the trace. V4 uses the same `inspect_failure` fallback when the producer
379
+ // supplied no allowlisted action, so inspector and full trace cannot diverge.
380
+ const resolvedSafeAction = safeAction
381
+ ?? (code === 'COMPILATION_FAILED' && phase === 'compilation' ? 'inspect_failure' : undefined);
382
+ return { code, ...(resolvedSafeAction ? { safeAction: resolvedSafeAction } : {}), ...(phase ? { phase } : {}) };
383
+ }
384
+ /**
385
+ * The execution producer emits this tiny strict allowlist only after a frozen
386
+ * plan failed before compilation/SQL handoff. Keep it structural so raw error
387
+ * text can never be promoted into the local trace.
388
+ */
389
+ function isConnectionNotConfiguredFailureV1(value) {
390
+ return value.version === 1
391
+ && value.phase === 'execution'
392
+ && value.cause === 'connection_not_configured'
393
+ && value.safeAction === 'configure_connection';
394
+ }
395
+ function safeTerminalFailureCodeV1(value) {
396
+ const codes = [
397
+ 'COLUMN_NOT_FOUND', 'RELATION_NOT_FOUND', 'PERMISSION_DENIED', 'AMBIGUOUS_COLUMN', 'DIALECT_ERROR',
398
+ 'SNAPSHOT_DRIFT', 'TIMEOUT', 'RESULT_CONTRACT_MISMATCH', 'COMPILATION_FAILED', 'POLICY_DENIED',
399
+ 'SEMANTIC_ADAPTER_NOT_READY', 'SEMANTIC_TARGET_BINDING_MISSING', 'EXECUTION_TARGET_MISMATCH',
400
+ 'SEMANTIC_SOURCE_DRIFT', 'SEMANTIC_MEMBER_BINDING_FAILED', 'SEMANTIC_PATH_AMBIGUOUS',
401
+ 'IDENTIFIER_SCOPE_INVALID', 'CONNECTION_NOT_CONFIGURED', 'EXECUTION_CANCELLED', 'SEMANTIC_COMPILATION_TIMEOUT',
402
+ ];
403
+ return typeof value === 'string' && codes.includes(value)
404
+ ? value
405
+ : undefined;
406
+ }
407
+ function safeTraceActionV1(value) {
408
+ const actions = [
409
+ 'inspect_failure', 'retry_same_plan', 'retry_same_request', 'refresh_snapshot', 'edit_dql',
410
+ 'open_sql_notebook', 'request_access', 'change_authorized_connection', 'reapply_semantic_runtime',
411
+ 'configure_connection', 'review_analytical_failure',
412
+ ];
413
+ return typeof value === 'string' && actions.includes(value)
414
+ ? value
415
+ : undefined;
416
+ }
417
+ export function traceCandidateReasonForCandidateV1(input) {
418
+ if (input.selected)
419
+ return 'model_selected';
420
+ if (input.excluded || input.eligible === false)
421
+ return 'below_fused_limit';
422
+ if (input.exact)
423
+ return 'exact_name_match';
424
+ if ((input.aliases?.length ?? 0) > 0)
425
+ return 'alias_match';
426
+ return 'fused_relevance_fill';
427
+ }
428
+ function uniqueIds(ids) {
429
+ return [...new Set(ids.map((value) => value.trim()).filter(Boolean))].slice(0, 32);
430
+ }
431
+ function safeCascadeDecision(decision) {
432
+ const cached = safeCascadeDecisionCache.get(decision);
433
+ if (cached)
434
+ return cached;
435
+ const safe = {
436
+ ...(decision.selectedTier ? { selectedTier: decision.selectedTier } : {}),
437
+ planFrozen: decision.planFrozen,
438
+ stopReason: decision.stopReason,
439
+ ...(decision.requirements.time?.requiresDeclaredFiscalCalendar ? { requiresDeclaredFiscalCalendar: true } : {}),
440
+ ...(decision.terminalGap ? {
441
+ terminalGap: {
442
+ code: decision.terminalGap.code,
443
+ requirement: decision.terminalGap.requirement,
444
+ witnessCandidateIds: uniqueIds(decision.terminalGap.witnessCandidateIds),
445
+ },
446
+ } : {}),
447
+ sourceCoverage: decision.sourceCoverage.slice(0, 16).map((coverage) => ({
448
+ source: coverage.source,
449
+ status: coverage.status,
450
+ candidateIds: uniqueIds(coverage.candidateIds),
451
+ ...(coverage.reason ? { reasonFingerprint: fingerprint(coverage.reason) } : {}),
452
+ })),
453
+ attempts: decision.attempts.slice(0, 8).map(safeCascadeAttempt),
454
+ };
455
+ safeCascadeDecisionCache.set(decision, safe);
456
+ return safe;
457
+ }
458
+ function safeCascadeAttempt(attempt) {
459
+ const cached = safeCascadeAttemptCache.get(attempt);
460
+ if (cached)
461
+ return cached;
462
+ const safe = {
463
+ tier: attempt.tier,
464
+ outcome: attempt.outcome,
465
+ candidateIds: uniqueIds(attempt.candidateIds),
466
+ planFrozen: attempt.planFrozen,
467
+ reasonFingerprint: fingerprint(attempt.reason),
468
+ };
469
+ safeCascadeAttemptCache.set(attempt, safe);
470
+ return safe;
471
+ }
472
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/ask-observability/instrumentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { AskSpanIdV1, AskTraceIdV1, AskTraceLinkV1, AskTraceModeV1, AskTraceReasonCodeV1, AskTraceRecordingStatusV1, AskTraceStageV1, AskTraceSpanNameV1, AskTraceSpanOutcomeV1, AskTraceSpanPayloadV1, AskTraceSpanV1, AskTraceStatusV1, AskTraceSurfaceV1, AskTraceTerminalOutcomeV1, AgentRunTraceReferenceV1, CandidateDecisionV1 } from './types.js';
2
+ import type { AnalyticalCascadeTierV1 } from '../analytical-orchestration.js';
3
+ import { AskTraceSqliteStoreV1 } from './store.js';
4
+ export declare const ASK_TRACE_OBSERVER_V1: unique symbol;
5
+ export interface AskTraceStartSpanInputV1 {
6
+ name: Exclude<AskTraceSpanNameV1, 'ask.run' | 'research.run'>;
7
+ stage: AskTraceStageV1;
8
+ parentSpanId?: AskSpanIdV1;
9
+ payload: AskTraceSpanPayloadV1;
10
+ reasonCode?: AskTraceReasonCodeV1;
11
+ startedAt?: string;
12
+ }
13
+ export interface AskTraceFinishSpanInputV1 {
14
+ outcome?: AskTraceSpanOutcomeV1;
15
+ reasonCode?: AskTraceReasonCodeV1;
16
+ payload?: AskTraceSpanPayloadV1;
17
+ completedAt?: string;
18
+ }
19
+ export interface AskTraceObserverV1 {
20
+ readonly traceId?: AskTraceIdV1;
21
+ readonly rootSpanId?: AskSpanIdV1;
22
+ readonly recordingStatus: AskTraceRecordingStatusV1;
23
+ readonly enabled: boolean;
24
+ startSpan(input: AskTraceStartSpanInputV1): AskSpanIdV1 | undefined;
25
+ finishSpan(spanId: AskSpanIdV1 | undefined, input?: AskTraceFinishSpanInputV1): void;
26
+ recordCandidateDecision(input: Omit<CandidateDecisionV1, 'version' | 'traceId' | 'sequence'>): void;
27
+ recordLink(input: Omit<AskTraceLinkV1, 'version' | 'sourceTraceId' | 'sourceRunId' | 'createdAt'>): void;
28
+ finalize(input: {
29
+ status: AskTraceStatusV1;
30
+ terminalOutcome?: AskTraceTerminalOutcomeV1;
31
+ trustState?: string;
32
+ selectedTier?: AnalyticalCascadeTierV1;
33
+ completedAt?: string;
34
+ firstIssueSpanId?: AskSpanIdV1;
35
+ }): AgentRunTraceReferenceV1 | undefined;
36
+ markPartial(reason?: AskTraceReasonCodeV1): void;
37
+ reference(): AgentRunTraceReferenceV1 | undefined;
38
+ }
39
+ export interface CreateAskTraceObserverInputV1 {
40
+ store?: AskTraceSqliteStoreV1;
41
+ runId: string;
42
+ surface: AskTraceSurfaceV1;
43
+ mode: AskTraceModeV1;
44
+ questionFingerprint: string;
45
+ threadId?: string;
46
+ snapshotId?: string;
47
+ parentTraceId?: AskTraceIdV1;
48
+ parentRunId?: string;
49
+ now?: () => Date;
50
+ }
51
+ /**
52
+ * Explicit no-op is the universal failure mode. Callers must not need a
53
+ * conditional and an observability failure cannot influence the answer path.
54
+ */
55
+ export declare const noOpAskTraceObserverV1: AskTraceObserverV1;
56
+ /** Exported for focused contract tests; never used as routing authority. */
57
+ export declare function isAskTraceIssueSpanV1(input: Pick<AskTraceSpanV1, 'outcome' | 'reasonCode'>): boolean;
58
+ export declare function createAskTraceObserverV1(input: CreateAskTraceObserverInputV1): AskTraceObserverV1;
59
+ /** The observer deliberately does not enumerate into HTTP/client payloads. */
60
+ export declare function attachAskTraceObserverV1<T extends object>(target: T, observer: AskTraceObserverV1): T;
61
+ export declare function askTraceObserverForV1(value: unknown): AskTraceObserverV1;
62
+ //# sourceMappingURL=observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../src/ask-observability/observer.ts"],"names":[],"mappings":"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"}