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