@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 @@
1
+ {"version":3,"file":"portable.d.ts","sourceRoot":"","sources":["../../src/ask-observability/portable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,527 @@
1
+ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
2
+ import { basename, join, resolve } from 'node:path';
3
+ import { canonicalJson, fingerprint, pseudo, sha256 } from './utils.js';
4
+ /** Defense-in-depth forbidden content canary. Strict export must pass this. */
5
+ const PROHIBITED = [
6
+ /(?:authorization|cookie|x-api-key|api[_-]?key|password|secret|token)\s*[:=]/i,
7
+ /-----BEGIN [A-Z ]+-----/,
8
+ /\bselect\b[\s\S]{0,120}\bfrom\b/i,
9
+ /https?:\/\//i,
10
+ /(?:^|[\s"'])\/(?:Users|home|tmp|private|var)\//,
11
+ /\b(?:sk|pk|rk)_[A-Za-z0-9_-]{12,}\b/,
12
+ ];
13
+ export function createAskTracePortableBundleV1(trace, options) {
14
+ if (options.profile === 'support' && !options.confirmReviewedIdentifiers) {
15
+ throw Object.assign(new Error('Support export requires --confirm-reviewed-identifiers.'), { code: 'TRACE_EXPORT_REDACTION_FAILED' });
16
+ }
17
+ // Export-scoped pseudonyms and bundle content are deterministic for the same
18
+ // stored receipt. A support engineer can therefore validate/compare bundles
19
+ // without an export timestamp changing every identifier or checksum.
20
+ const createdAt = trace.envelope.completedAt ?? trace.envelope.startedAt;
21
+ const salt = fingerprint({ trace: trace.envelope.traceId, profile: options.profile, schema: 1 });
22
+ const portableTrace = redactTrace(trace, options.profile, salt);
23
+ const receipt = redactRunReceipt(options.runReceipt, trace, options.profile, salt);
24
+ const redactionReceipt = {
25
+ version: 1,
26
+ profile: options.profile,
27
+ identifiers: options.profile === 'strict' ? 'pseudonymized' : 'reviewed_only',
28
+ reviewedQuestionIncluded: options.profile === 'support' && Boolean(options.reviewedQuestion?.trim()),
29
+ generatedAt: createdAt,
30
+ };
31
+ if (options.profile === 'support' && options.reviewedQuestion?.trim()) {
32
+ // A review-provided question goes in one explicitly named safe field; it
33
+ // never flows from an AgentRun or trace store.
34
+ redactionReceipt.reviewedQuestion = options.reviewedQuestion.trim().slice(0, 2_000);
35
+ }
36
+ // Support-only reviewed prose is explicit human input, but it remains
37
+ // untrusted for secrets, SQL, paths, and other prohibited content.
38
+ const canary = scanForProhibited([portableTrace, receipt, redactionReceipt]);
39
+ if (!canary.passed) {
40
+ throw Object.assign(new Error(`Trace export redaction failed: ${canary.findings.join(', ')}`), { code: 'TRACE_EXPORT_REDACTION_FAILED' });
41
+ }
42
+ redactionReceipt.prohibitedContentScan = canary;
43
+ const traceJson = `${canonicalJson(portableTrace)}\n`;
44
+ const receiptJson = `${canonicalJson(receipt)}\n`;
45
+ const redactionJson = `${canonicalJson(redactionReceipt)}\n`;
46
+ const checksums = {
47
+ 'trace.json': sha256(traceJson),
48
+ 'run-receipt.json': sha256(receiptJson),
49
+ 'redaction-receipt.json': sha256(redactionJson),
50
+ };
51
+ const manifest = {
52
+ version: 1,
53
+ schema: 'dql.ask-trace-bundle.v1',
54
+ profile: options.profile,
55
+ createdAt,
56
+ provenance: options.provenance ?? 'unknown',
57
+ bundleFingerprint: fingerprint({ checksums, profile: options.profile, trace: portableTrace.envelope.traceFingerprint ?? portableTrace.envelope.traceId }),
58
+ checksums,
59
+ ...(portableTrace.envelope.traceFingerprint ? { traceFingerprint: portableTrace.envelope.traceFingerprint } : {}),
60
+ traceId: portableTrace.envelope.traceId,
61
+ };
62
+ return { manifest, trace: portableTrace, runReceipt: receipt, redactionReceipt };
63
+ }
64
+ export function exportAskTraceBundleV1(trace, options) {
65
+ const output = resolve(options.outputDirectory);
66
+ if (existsSync(output) && readdirSync(output).length > 0) {
67
+ throw Object.assign(new Error('Trace export directory must be empty; existing bundle files are never overwritten.'), { code: 'TRACE_EXPORT_REDACTION_FAILED' });
68
+ }
69
+ const bundle = createAskTracePortableBundleV1(trace, options);
70
+ mkdirSync(output, { recursive: true });
71
+ const traceJson = `${canonicalJson(bundle.trace)}\n`;
72
+ const receiptJson = `${canonicalJson(bundle.runReceipt)}\n`;
73
+ const redactionJson = `${canonicalJson(bundle.redactionReceipt)}\n`;
74
+ const manifestJson = `${canonicalJson(bundle.manifest)}\n`;
75
+ writeFileSync(join(output, 'trace.json'), traceJson, { encoding: 'utf8', flag: 'wx' });
76
+ writeFileSync(join(output, 'run-receipt.json'), receiptJson, { encoding: 'utf8', flag: 'wx' });
77
+ writeFileSync(join(output, 'redaction-receipt.json'), redactionJson, { encoding: 'utf8', flag: 'wx' });
78
+ writeFileSync(join(output, 'manifest.json'), manifestJson, { encoding: 'utf8', flag: 'wx' });
79
+ return {
80
+ version: 1,
81
+ profile: bundle.manifest.profile,
82
+ bundleFingerprint: bundle.manifest.bundleFingerprint,
83
+ exportedAt: bundle.manifest.createdAt,
84
+ checksums: { 'manifest.json': sha256(manifestJson), ...bundle.manifest.checksums },
85
+ canaryPassed: true,
86
+ ...(bundle.trace.envelope.traceFingerprint ? { traceFingerprint: bundle.trace.envelope.traceFingerprint } : {}),
87
+ };
88
+ }
89
+ export function validateAskTraceBundleV1(directory) {
90
+ const root = resolve(directory);
91
+ const errors = [];
92
+ const names = ['manifest.json', 'trace.json', 'run-receipt.json', 'redaction-receipt.json'];
93
+ for (const name of names)
94
+ if (!existsSync(join(root, name)))
95
+ errors.push(`Missing ${name}.`);
96
+ if (errors.length)
97
+ return { valid: false, errors };
98
+ const parsed = Object.fromEntries(names.map((name) => [name, parseJsonFile(join(root, name), errors)]));
99
+ const manifest = parsed['manifest.json'];
100
+ if (!manifest || manifest.version !== 1 || manifest.schema !== 'dql.ask-trace-bundle.v1')
101
+ errors.push('Unsupported trace bundle manifest.');
102
+ if (manifest) {
103
+ for (const name of ['trace.json', 'run-receipt.json', 'redaction-receipt.json']) {
104
+ const actual = sha256(readFileSync(join(root, name), 'utf8'));
105
+ if (actual !== manifest.checksums[name])
106
+ errors.push(`Checksum mismatch for ${name}.`);
107
+ }
108
+ const expectedBundle = fingerprint({ checksums: manifest.checksums, profile: manifest.profile, trace: manifest.traceFingerprint ?? manifest.traceId });
109
+ if (manifest.bundleFingerprint !== expectedBundle)
110
+ errors.push('Bundle fingerprint mismatch.');
111
+ }
112
+ const scan = scanForProhibited([parsed['trace.json'], parsed['run-receipt.json'], parsed['redaction-receipt.json']]);
113
+ if (!scan.passed)
114
+ errors.push(`Redaction canary failed: ${scan.findings.join(', ')}.`);
115
+ const trace = parsed['trace.json'];
116
+ if (trace)
117
+ errors.push(...validateTraceReceiptV1(trace));
118
+ errors.push(...validateRunReceiptTerminalGapV1(parsed['run-receipt.json'], trace));
119
+ return { valid: errors.length === 0, errors, ...(manifest ? { manifest } : {}) };
120
+ }
121
+ /** Offline-only receipt replay. It validates; it never imports providers/tools/connectors. */
122
+ export function replayAskTraceReceiptV1(directory) {
123
+ const validation = validateAskTraceBundleV1(directory);
124
+ if (!validation.valid)
125
+ return { valid: false, errors: validation.errors };
126
+ const trace = parseJsonFile(join(resolve(directory), 'trace.json'), []);
127
+ const errors = trace ? validateTraceReceiptV1(trace) : ['Trace payload is missing.'];
128
+ return { valid: errors.length === 0, errors, ...(trace ? { trace } : {}) };
129
+ }
130
+ export function compareAskTracesV1(left, right) {
131
+ const reasonCounts = (trace) => new Map(trace.candidateDecisions.reduce((all, candidate) => {
132
+ const key = `${candidate.role}\u0000${candidate.reasonCode}`;
133
+ all.set(key, (all.get(key) ?? 0) + 1);
134
+ return all;
135
+ }, new Map()));
136
+ const leftReasons = reasonCounts(left);
137
+ const rightReasons = reasonCounts(right);
138
+ const candidateReasonChanges = [...new Set([...leftReasons.keys(), ...rightReasons.keys()])]
139
+ .sort()
140
+ .flatMap((key) => {
141
+ const [role, reason] = key.split('\u0000');
142
+ const l = leftReasons.get(key) ?? 0;
143
+ const r = rightReasons.get(key) ?? 0;
144
+ return l === r ? [] : [{ role, reason, left: l, right: r }];
145
+ });
146
+ const coverage = (trace) => new Map(trace.spans.flatMap((span) => span.payload.kind === 'cascade'
147
+ ? span.payload.decision.sourceCoverage.map((entry) => [entry.source, entry.status])
148
+ : []));
149
+ const leftCoverage = coverage(left);
150
+ const rightCoverage = coverage(right);
151
+ const sourceCoverageChanges = [...new Set([...leftCoverage.keys(), ...rightCoverage.keys()])]
152
+ .sort()
153
+ .flatMap((source) => leftCoverage.get(source) === rightCoverage.get(source)
154
+ ? []
155
+ : [{ source, left: leftCoverage.get(source), right: rightCoverage.get(source) }]);
156
+ const count = (trace, name) => trace.spans.filter((span) => span.name === name).length;
157
+ const attempts = (trace) => trace.spans.flatMap((span) => span.payload.kind === 'cascade' ? span.payload.decision.attempts : []).length;
158
+ const compatibleIdentity = left.envelope.traceId === right.envelope.traceId
159
+ || Boolean(left.envelope.traceFingerprint && right.envelope.traceFingerprint && left.envelope.traceFingerprint === right.envelope.traceFingerprint);
160
+ return {
161
+ compatibleIdentity,
162
+ leftTraceId: left.envelope.traceId,
163
+ rightTraceId: right.envelope.traceId,
164
+ selectedTier: {
165
+ left: left.envelope.selectedTier,
166
+ right: right.envelope.selectedTier,
167
+ matches: left.envelope.selectedTier === right.envelope.selectedTier,
168
+ },
169
+ recordingStatus: {
170
+ left: left.envelope.recordingStatus,
171
+ right: right.envelope.recordingStatus,
172
+ matches: left.envelope.recordingStatus === right.envelope.recordingStatus,
173
+ },
174
+ sourceCoverageChanges,
175
+ candidateReasonChanges,
176
+ attempts: { left: attempts(left), right: attempts(right) },
177
+ providerAttempts: { left: count(left, 'provider.attempt'), right: count(right, 'provider.attempt') },
178
+ toolCalls: { left: count(left, 'tool.call'), right: count(right, 'tool.call') },
179
+ sqlAttempts: { left: count(left, 'sql.execute'), right: count(right, 'sql.execute') },
180
+ trustState: { left: left.envelope.trustState, right: right.envelope.trustState, matches: left.envelope.trustState === right.envelope.trustState },
181
+ ...(typeof left.envelope.durationMs === 'number' && typeof right.envelope.durationMs === 'number'
182
+ ? { durationDeltaMs: right.envelope.durationMs - left.envelope.durationMs }
183
+ : {}),
184
+ notes: compatibleIdentity
185
+ ? []
186
+ : ['Trace identities use export-scoped pseudonyms or differ; stage and role comparison remains available.'],
187
+ };
188
+ }
189
+ /** Portable, local JSON mapper — intentionally no OTLP network exporter. */
190
+ export function toOtlpOpenInferenceJsonV1(trace) {
191
+ const spanKind = (span) => {
192
+ if (span.name === 'ask.run' || span.name === 'research.run')
193
+ return 'AGENT';
194
+ if (span.stage === 'retrieval')
195
+ return 'RETRIEVER';
196
+ if (span.stage === 'provider')
197
+ return 'LLM';
198
+ if (span.stage === 'tool' || span.name === 'sql.execute')
199
+ return 'TOOL';
200
+ return 'CHAIN';
201
+ };
202
+ return {
203
+ resourceSpans: [{
204
+ resource: { attributes: [{ key: 'service.name', value: { stringValue: 'dql-ask-local' } }] },
205
+ scopeSpans: [{
206
+ scope: { name: 'dql.ask-observability', version: '1' },
207
+ spans: trace.spans.map((span) => ({
208
+ traceId: trace.envelope.traceId,
209
+ spanId: span.spanId,
210
+ ...(span.parentSpanId ? { parentSpanId: span.parentSpanId } : {}),
211
+ name: span.name,
212
+ startTimeUnixNano: String(Date.parse(span.startedAt) * 1_000_000),
213
+ ...(span.completedAt ? { endTimeUnixNano: String(Date.parse(span.completedAt) * 1_000_000) } : {}),
214
+ status: { code: span.outcome === 'ok' ? 1 : 2, message: span.reasonCode },
215
+ attributes: [
216
+ { key: 'openinference.span.kind', value: { stringValue: spanKind(span) } },
217
+ { key: 'dql.ask.stage', value: { stringValue: span.stage } },
218
+ { key: 'dql.ask.outcome', value: { stringValue: span.outcome } },
219
+ { key: 'dql.ask.reason_code', value: { stringValue: span.reasonCode } },
220
+ ],
221
+ })),
222
+ }],
223
+ }],
224
+ };
225
+ }
226
+ function redactTrace(trace, profile, salt) {
227
+ const mapId = (value, kind = 'id') => profile === 'strict' ? pseudo(value, salt, kind) : value;
228
+ const redactEnvelope = (envelope) => ({
229
+ ...envelope,
230
+ traceId: mapId(envelope.traceId, 'trace'),
231
+ rootSpanId: mapId(envelope.rootSpanId, 'span'),
232
+ runId: mapId(envelope.runId, 'run'),
233
+ ...(envelope.threadId ? { threadId: mapId(envelope.threadId, 'thread') } : {}),
234
+ ...(envelope.snapshotId ? { snapshotId: mapId(envelope.snapshotId, 'snapshot') } : {}),
235
+ ...(envelope.parentTraceId ? { parentTraceId: mapId(envelope.parentTraceId, 'trace') } : {}),
236
+ ...(envelope.parentRunId ? { parentRunId: mapId(envelope.parentRunId, 'run') } : {}),
237
+ ...(envelope.firstIssueSpanId ? { firstIssueSpanId: mapId(envelope.firstIssueSpanId, 'span') } : {}),
238
+ });
239
+ const mappedTraceId = mapId(trace.envelope.traceId, 'trace');
240
+ const spans = trace.spans.map((span) => redactSpan(span, profile, salt, mappedTraceId));
241
+ const candidates = trace.candidateDecisions.map((candidate) => redactCandidate(candidate, profile, salt, mappedTraceId));
242
+ const links = trace.links.map((link) => redactLink(link, profile, salt, mappedTraceId));
243
+ return { envelope: redactEnvelope(trace.envelope), spans, candidateDecisions: candidates, links };
244
+ }
245
+ function redactSpan(span, profile, salt, traceId) {
246
+ const map = (value, kind = 'id') => profile === 'strict' ? pseudo(value, salt, kind) : value;
247
+ const payload = redactPayload(span.payload, profile, salt);
248
+ return {
249
+ ...span,
250
+ traceId,
251
+ spanId: map(span.spanId, 'span'),
252
+ ...(span.parentSpanId ? { parentSpanId: map(span.parentSpanId, 'span') } : {}),
253
+ payload,
254
+ };
255
+ }
256
+ function redactCandidate(candidate, profile, salt, traceId) {
257
+ if (profile === 'support')
258
+ return { ...candidate, traceId };
259
+ return {
260
+ ...candidate,
261
+ traceId,
262
+ candidateId: pseudo(candidate.candidateId, salt, 'candidate'),
263
+ };
264
+ }
265
+ function redactLink(link, profile, salt, _traceId) {
266
+ const map = (value, kind) => profile === 'strict' ? pseudo(value, salt, kind) : value;
267
+ return {
268
+ ...link,
269
+ // A fetched trace can be either end of a relationship. Map each original
270
+ // endpoint independently so strict bundles retain the actual edge direction
271
+ // instead of rewriting every source into the selected trace.
272
+ sourceTraceId: map(link.sourceTraceId, 'trace'),
273
+ sourceRunId: map(link.sourceRunId, 'run'),
274
+ ...(link.targetTraceId ? { targetTraceId: map(link.targetTraceId, 'trace') } : {}),
275
+ ...(link.targetRunId ? { targetRunId: map(link.targetRunId, 'run') } : {}),
276
+ };
277
+ }
278
+ function redactPayload(payload, profile, salt) {
279
+ const map = (value, kind = 'id') => profile === 'strict' ? pseudo(value, salt, kind) : value;
280
+ switch (payload.kind) {
281
+ case 'snapshot': return { ...payload, ...(payload.snapshotId ? { snapshotId: map(payload.snapshotId, 'snapshot') } : {}) };
282
+ case 'meaning': return { ...payload, selectedCandidateIds: payload.selectedCandidateIds.map((id) => map(id, 'candidate')), rejectedCandidateIds: payload.rejectedCandidateIds.map((id) => map(id, 'candidate')) };
283
+ case 'cascade': return {
284
+ ...payload,
285
+ decision: {
286
+ ...payload.decision,
287
+ ...(payload.decision.terminalGap ? {
288
+ terminalGap: {
289
+ code: payload.decision.terminalGap.code,
290
+ requirement: payload.decision.terminalGap.requirement,
291
+ witnessCandidateIds: payload.decision.terminalGap.witnessCandidateIds.map((id) => map(id, 'candidate')),
292
+ },
293
+ } : {}),
294
+ sourceCoverage: payload.decision.sourceCoverage.map((coverage) => ({ ...coverage, candidateIds: coverage.candidateIds.map((id) => map(id, 'candidate')) })),
295
+ attempts: payload.decision.attempts.map((attempt) => ({ ...attempt, candidateIds: attempt.candidateIds.map((id) => map(id, 'candidate')) })),
296
+ },
297
+ };
298
+ case 'tool': return { ...payload, call: { ...payload.call, toolCallId: map(payload.call.toolCallId, 'tool') } };
299
+ case 'research': return { ...payload, ...(payload.branchId ? { branchId: map(payload.branchId, 'branch') } : {}) };
300
+ default: return payload;
301
+ }
302
+ }
303
+ function redactRunReceipt(value, trace, profile, salt) {
304
+ const record = value && typeof value === 'object' && !Array.isArray(value) ? value : {};
305
+ const source = record.diagnosticReceiptV3 && typeof record.diagnosticReceiptV3 === 'object'
306
+ ? record.diagnosticReceiptV3
307
+ : {};
308
+ const map = (value, kind = 'id') => typeof value === 'string'
309
+ ? profile === 'strict' ? pseudo(value, salt, kind) : value
310
+ : undefined;
311
+ const terminalGap = portableTerminalRelationshipGapV1(source.terminalGap
312
+ ?? (source.cascade && typeof source.cascade === 'object'
313
+ ? source.cascade.terminalGap
314
+ : undefined), profile, salt);
315
+ return {
316
+ version: 1,
317
+ traceReference: {
318
+ traceId: profile === 'strict' ? pseudo(trace.envelope.traceId, salt, 'trace') : trace.envelope.traceId,
319
+ recordingStatus: trace.envelope.recordingStatus,
320
+ traceFingerprint: trace.envelope.traceFingerprint,
321
+ },
322
+ route: typeof record.route === 'string' ? record.route : undefined,
323
+ status: typeof record.status === 'string' ? record.status : trace.envelope.status,
324
+ trustState: typeof record.trustState === 'string' ? record.trustState : trace.envelope.trustState,
325
+ selectedTier: trace.envelope.selectedTier,
326
+ planFrozen: source.planFrozen === true,
327
+ finalStopReason: typeof source.finalStopReason === 'string' ? source.finalStopReason : undefined,
328
+ ...(terminalGap ? { terminalGap } : {}),
329
+ telemetry: sanitizeTelemetry(record.telemetry),
330
+ fingerprints: {
331
+ plan: map(findFingerprint(record, 'planFingerprint'), 'plan'),
332
+ sql: map(findFingerprint(record, 'sqlFingerprint'), 'sql'),
333
+ result: map(findFingerprint(record, 'resultFingerprint'), 'result'),
334
+ },
335
+ };
336
+ }
337
+ /**
338
+ * Receipt export is intentionally stricter than its source type: only the
339
+ * one enumerated relationship proof requirement is portable. This prevents a
340
+ * future V3 field or a malformed persisted record from putting router prose,
341
+ * question terms, or inferred SQL relationships into a support bundle.
342
+ */
343
+ function portableTerminalRelationshipGapV1(value, profile, salt) {
344
+ if (!value || typeof value !== 'object' || Array.isArray(value))
345
+ return undefined;
346
+ const record = value;
347
+ if (record.code !== 'MISSING_RELATIONSHIP' || record.requirement !== 'certified_relationship_or_allocation_proof')
348
+ return undefined;
349
+ const witnessCandidateIds = Array.isArray(record.witnessCandidateIds)
350
+ ? [...new Set(record.witnessCandidateIds.filter((id) => typeof id === 'string' && id.length > 0))]
351
+ .sort()
352
+ .slice(0, 32)
353
+ .map((id) => profile === 'strict' ? pseudo(id, salt, 'candidate') : id)
354
+ : [];
355
+ return {
356
+ code: 'MISSING_RELATIONSHIP',
357
+ requirement: 'certified_relationship_or_allocation_proof',
358
+ witnessCandidateIds,
359
+ };
360
+ }
361
+ function sanitizeTelemetry(value) {
362
+ if (!value || typeof value !== 'object' || Array.isArray(value))
363
+ return undefined;
364
+ const record = value;
365
+ const result = {};
366
+ for (const key of ['providerRoundTrips', 'toolCalls', 'sqlExecutions', 'repairs', 'egressReceipts']) {
367
+ if (typeof record[key] === 'number' && Number.isFinite(record[key]))
368
+ result[key] = record[key];
369
+ }
370
+ return Object.keys(result).length ? result : undefined;
371
+ }
372
+ function findFingerprint(record, key) {
373
+ if (typeof record[key] === 'string')
374
+ return record[key];
375
+ const nested = record.diagnosticReceiptV3;
376
+ if (nested && typeof nested === 'object' && typeof nested[key] === 'string')
377
+ return nested[key];
378
+ return undefined;
379
+ }
380
+ function scanForProhibited(values) {
381
+ const source = values.map((value) => canonicalJson(value)).join('\n');
382
+ const findings = PROHIBITED.flatMap((pattern) => pattern.test(source) ? [pattern.source] : []);
383
+ return { passed: findings.length === 0, findings };
384
+ }
385
+ function validateTraceReceiptV1(trace) {
386
+ const errors = [];
387
+ // Strict portable bundles use deterministic export-scoped pseudonyms. Live
388
+ // receipts retain W3C identifiers. Both shapes are structurally valid.
389
+ if (!(/^[0-9a-f]{32}$/.test(trace.envelope.traceId) || /^trace_[0-9a-f]{16}$/.test(trace.envelope.traceId)))
390
+ errors.push('Invalid trace ID.');
391
+ if (!(/^[0-9a-f]{16}$/.test(trace.envelope.rootSpanId) || /^span_[0-9a-f]{16}$/.test(trace.envelope.rootSpanId)))
392
+ errors.push('Invalid root span ID.');
393
+ const ids = new Set();
394
+ const ordinals = new Set();
395
+ for (const span of trace.spans) {
396
+ if (span.traceId !== trace.envelope.traceId)
397
+ errors.push(`Span ${span.spanId} has a mismatched trace ID.`);
398
+ if (ids.has(span.spanId))
399
+ errors.push(`Duplicate span ${span.spanId}.`);
400
+ ids.add(span.spanId);
401
+ if (ordinals.has(span.ordinal))
402
+ errors.push(`Duplicate span ordinal ${span.ordinal}.`);
403
+ ordinals.add(span.ordinal);
404
+ if (span.parentSpanId && !ids.has(span.parentSpanId) && !trace.spans.some((candidate) => candidate.spanId === span.parentSpanId))
405
+ errors.push(`Unknown parent span ${span.parentSpanId}.`);
406
+ }
407
+ if (!ids.has(trace.envelope.rootSpanId))
408
+ errors.push('Root span is missing from trace detail.');
409
+ if (trace.envelope.firstIssueSpanId && !ids.has(trace.envelope.firstIssueSpanId)) {
410
+ errors.push(`Unknown first issue span ${trace.envelope.firstIssueSpanId}.`);
411
+ }
412
+ for (const candidate of trace.candidateDecisions) {
413
+ if (candidate.traceId !== trace.envelope.traceId)
414
+ errors.push(`Candidate ${candidate.sequence} has a mismatched trace ID.`);
415
+ }
416
+ for (const link of trace.links) {
417
+ const sourceIsCurrent = link.sourceTraceId === trace.envelope.traceId;
418
+ const targetIsCurrent = link.targetTraceId === trace.envelope.traceId;
419
+ if (!sourceIsCurrent && !targetIsCurrent) {
420
+ errors.push(`Trace link ${link.kind} does not reference the exported trace.`);
421
+ continue;
422
+ }
423
+ if (sourceIsCurrent && link.sourceRunId !== trace.envelope.runId) {
424
+ errors.push(`Trace link ${link.kind} has a broken source run reference.`);
425
+ }
426
+ if (targetIsCurrent && link.targetRunId !== trace.envelope.runId) {
427
+ errors.push(`Trace link ${link.kind} has a broken target run reference.`);
428
+ }
429
+ }
430
+ const cascade = trace.spans.flatMap((span) => span.payload.kind === 'cascade' ? [{ span, decision: span.payload.decision }] : []);
431
+ for (const { span, decision } of cascade) {
432
+ const expected = ['certified', 'semantic', 'governed_relational', 'exploratory_sql', 'clarify_or_gap'];
433
+ let last = -1;
434
+ let frozen = false;
435
+ for (const attempt of decision.attempts) {
436
+ const position = expected.indexOf(attempt.tier);
437
+ if (position < last)
438
+ errors.push('Cascade attempts are not authoritative order.');
439
+ last = position;
440
+ if (frozen)
441
+ errors.push('Cascade continued after plan freeze.');
442
+ frozen ||= attempt.planFrozen;
443
+ }
444
+ // Exploratory selection is allowed to appear before the physical plan has
445
+ // frozen. The initial router receipt is authoritative evidence of that
446
+ // pre-freeze selection; a later plan.freeze span proves the only valid
447
+ // transition. Do not rewrite the original receipt merely to make a
448
+ // portable bundle validate, and do not accept an unrelated later freeze.
449
+ if (span.name === 'cascade.evaluate'
450
+ && decision.selectedTier === 'exploratory_sql'
451
+ && decision.planFrozen === false
452
+ && !hasLaterMatchingExploratoryFreeze(trace, span)) {
453
+ errors.push('Exploratory selection is not frozen.');
454
+ }
455
+ if (decision.terminalGap) {
456
+ if (decision.terminalGap.code !== 'MISSING_RELATIONSHIP'
457
+ || decision.terminalGap.requirement !== 'certified_relationship_or_allocation_proof') {
458
+ errors.push('Unsupported terminal relationship gap receipt.');
459
+ }
460
+ if (!Array.isArray(decision.terminalGap.witnessCandidateIds)
461
+ || decision.terminalGap.witnessCandidateIds.some((id) => typeof id !== 'string' || id.length === 0)) {
462
+ errors.push('Invalid terminal relationship gap witnesses.');
463
+ }
464
+ }
465
+ }
466
+ return errors;
467
+ }
468
+ function hasLaterMatchingExploratoryFreeze(trace, selection) {
469
+ if (selection.payload.kind !== 'cascade')
470
+ return false;
471
+ const selectedAttempt = selection.payload.decision.attempts.find((attempt) => attempt.tier === 'exploratory_sql');
472
+ if (!selectedAttempt)
473
+ return false;
474
+ return trace.spans.some((span) => {
475
+ if (span.ordinal <= selection.ordinal
476
+ || span.name !== 'plan.freeze'
477
+ || span.outcome !== 'ok'
478
+ || span.reasonCode !== 'plan_frozen'
479
+ || span.payload.kind !== 'cascade')
480
+ return false;
481
+ const frozen = span.payload.decision;
482
+ const frozenAttempt = frozen.attempts.find((attempt) => attempt.tier === 'exploratory_sql');
483
+ return frozen.selectedTier === 'exploratory_sql'
484
+ && frozen.planFrozen === true
485
+ && frozenAttempt?.planFrozen === true
486
+ && sameCandidateIds(selectedAttempt.candidateIds, frozenAttempt.candidateIds);
487
+ });
488
+ }
489
+ function sameCandidateIds(left, right) {
490
+ const a = [...new Set(left)].sort();
491
+ const b = [...new Set(right)].sort();
492
+ return a.length === b.length && a.every((id, index) => id === b[index]);
493
+ }
494
+ function validateRunReceiptTerminalGapV1(receipt, trace) {
495
+ if (!receipt || typeof receipt !== 'object' || Array.isArray(receipt))
496
+ return [];
497
+ const record = receipt;
498
+ const gap = record.terminalGap;
499
+ if (gap === undefined)
500
+ return [];
501
+ const portable = portableTerminalRelationshipGapV1(gap, 'support', 'validation');
502
+ if (!portable)
503
+ return ['Invalid run receipt terminal relationship gap.'];
504
+ if (!trace)
505
+ return ['Run receipt terminal relationship gap has no trace.'];
506
+ const traceGap = trace.spans
507
+ .flatMap((span) => span.payload.kind === 'cascade' ? [span.payload.decision.terminalGap] : [])
508
+ .find((candidate) => candidate?.code === portable.code && candidate.requirement === portable.requirement);
509
+ if (!traceGap)
510
+ return ['Run receipt terminal relationship gap is not present in the trace.'];
511
+ const expected = [...new Set(traceGap.witnessCandidateIds)].sort();
512
+ const actual = [...new Set(portable.witnessCandidateIds)].sort();
513
+ if (expected.length !== actual.length || expected.some((id, index) => id !== actual[index])) {
514
+ return ['Run receipt terminal relationship gap witnesses do not match the trace.'];
515
+ }
516
+ return [];
517
+ }
518
+ function parseJsonFile(path, errors) {
519
+ try {
520
+ return JSON.parse(readFileSync(path, 'utf8'));
521
+ }
522
+ catch {
523
+ errors.push(`Invalid JSON in ${basename(path)}.`);
524
+ return undefined;
525
+ }
526
+ }
527
+ //# sourceMappingURL=portable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable.js","sourceRoot":"","sources":["../../src/ask-observability/portable.ts"],"names":[],"mappings":"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"}