@duckcodeailabs/dql-agent 1.6.31 → 1.6.33

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 (160) hide show
  1. package/dist/agent-run-engine.d.ts +42 -6
  2. package/dist/agent-run-engine.d.ts.map +1 -1
  3. package/dist/agent-run-engine.js +133 -79
  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 +72 -5
  7. package/dist/agent-run-gates.js.map +1 -1
  8. package/dist/agent-run-planner.d.ts.map +1 -1
  9. package/dist/agent-run-planner.js +13 -0
  10. package/dist/agent-run-planner.js.map +1 -1
  11. package/dist/answer-loop.d.ts +110 -8
  12. package/dist/answer-loop.d.ts.map +1 -1
  13. package/dist/answer-loop.js +1679 -1299
  14. package/dist/answer-loop.js.map +1 -1
  15. package/dist/answer-shape.d.ts +16 -0
  16. package/dist/answer-shape.d.ts.map +1 -0
  17. package/dist/answer-shape.js +85 -0
  18. package/dist/answer-shape.js.map +1 -0
  19. package/dist/cascade/budgets.d.ts +101 -0
  20. package/dist/cascade/budgets.d.ts.map +1 -0
  21. package/dist/cascade/budgets.js +184 -0
  22. package/dist/cascade/budgets.js.map +1 -0
  23. package/dist/cascade/cascade.d.ts +86 -0
  24. package/dist/cascade/cascade.d.ts.map +1 -0
  25. package/dist/cascade/cascade.js +115 -0
  26. package/dist/cascade/cascade.js.map +1 -0
  27. package/dist/cascade/route-policy.d.ts +14 -0
  28. package/dist/cascade/route-policy.d.ts.map +1 -0
  29. package/dist/cascade/route-policy.js +48 -0
  30. package/dist/cascade/route-policy.js.map +1 -0
  31. package/dist/cascade/triage.d.ts +20 -0
  32. package/dist/cascade/triage.d.ts.map +1 -0
  33. package/dist/cascade/triage.js +25 -0
  34. package/dist/cascade/triage.js.map +1 -0
  35. package/dist/conversation/rolling-summary.d.ts +13 -0
  36. package/dist/conversation/rolling-summary.d.ts.map +1 -0
  37. package/dist/conversation/rolling-summary.js +43 -0
  38. package/dist/conversation/rolling-summary.js.map +1 -0
  39. package/dist/conversation/session-store.d.ts +110 -0
  40. package/dist/conversation/session-store.d.ts.map +1 -0
  41. package/dist/conversation/session-store.js +387 -0
  42. package/dist/conversation/session-store.js.map +1 -0
  43. package/dist/conversation/snapshot.d.ts +59 -0
  44. package/dist/conversation/snapshot.d.ts.map +1 -0
  45. package/dist/conversation/snapshot.js +153 -0
  46. package/dist/conversation/snapshot.js.map +1 -0
  47. package/dist/conversation/working-state.d.ts +49 -0
  48. package/dist/conversation/working-state.d.ts.map +1 -0
  49. package/dist/conversation/working-state.js +249 -0
  50. package/dist/conversation/working-state.js.map +1 -0
  51. package/dist/embeddings/provider.d.ts +62 -0
  52. package/dist/embeddings/provider.d.ts.map +1 -1
  53. package/dist/embeddings/provider.js +98 -0
  54. package/dist/embeddings/provider.js.map +1 -1
  55. package/dist/grounding/context-ledger.d.ts +30 -0
  56. package/dist/grounding/context-ledger.d.ts.map +1 -0
  57. package/dist/grounding/context-ledger.js +54 -0
  58. package/dist/grounding/context-ledger.js.map +1 -0
  59. package/dist/grounding/regrounding.d.ts +24 -0
  60. package/dist/grounding/regrounding.d.ts.map +1 -0
  61. package/dist/grounding/regrounding.js +219 -0
  62. package/dist/grounding/regrounding.js.map +1 -0
  63. package/dist/grounding/value-index.d.ts +32 -0
  64. package/dist/grounding/value-index.d.ts.map +1 -0
  65. package/dist/grounding/value-index.js +67 -0
  66. package/dist/grounding/value-index.js.map +1 -0
  67. package/dist/index.d.ts +45 -14
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +102 -11
  70. package/dist/index.js.map +1 -1
  71. package/dist/intent-controller.d.ts +7 -0
  72. package/dist/intent-controller.d.ts.map +1 -1
  73. package/dist/intent-controller.js +22 -1
  74. package/dist/intent-controller.js.map +1 -1
  75. package/dist/kg/build.d.ts.map +1 -1
  76. package/dist/kg/build.js +44 -17
  77. package/dist/kg/build.js.map +1 -1
  78. package/dist/kg/sqlite-fts.d.ts +3 -1
  79. package/dist/kg/sqlite-fts.d.ts.map +1 -1
  80. package/dist/kg/sqlite-fts.js +16 -2
  81. package/dist/kg/sqlite-fts.js.map +1 -1
  82. package/dist/kg/types.d.ts +23 -1
  83. package/dist/kg/types.d.ts.map +1 -1
  84. package/dist/memory/fts-query.d.ts +7 -0
  85. package/dist/memory/fts-query.d.ts.map +1 -0
  86. package/dist/memory/fts-query.js +36 -0
  87. package/dist/memory/fts-query.js.map +1 -0
  88. package/dist/memory/sqlite-memory.d.ts.map +1 -1
  89. package/dist/memory/sqlite-memory.js +1 -30
  90. package/dist/memory/sqlite-memory.js.map +1 -1
  91. package/dist/metadata/analysis-planner.d.ts +23 -0
  92. package/dist/metadata/analysis-planner.d.ts.map +1 -1
  93. package/dist/metadata/analysis-planner.js +432 -2
  94. package/dist/metadata/analysis-planner.js.map +1 -1
  95. package/dist/metadata/block-fit.d.ts +24 -0
  96. package/dist/metadata/block-fit.d.ts.map +1 -0
  97. package/dist/metadata/block-fit.js +373 -0
  98. package/dist/metadata/block-fit.js.map +1 -0
  99. package/dist/metadata/catalog.d.ts +72 -3
  100. package/dist/metadata/catalog.d.ts.map +1 -1
  101. package/dist/metadata/catalog.js +1452 -72
  102. package/dist/metadata/catalog.js.map +1 -1
  103. package/dist/metadata/drafts.d.ts +25 -0
  104. package/dist/metadata/drafts.d.ts.map +1 -1
  105. package/dist/metadata/drafts.js +112 -2
  106. package/dist/metadata/drafts.js.map +1 -1
  107. package/dist/metadata/metric-match.d.ts +55 -6
  108. package/dist/metadata/metric-match.d.ts.map +1 -1
  109. package/dist/metadata/metric-match.js +158 -13
  110. package/dist/metadata/metric-match.js.map +1 -1
  111. package/dist/metadata/sql-context-validation.d.ts +13 -1
  112. package/dist/metadata/sql-context-validation.d.ts.map +1 -1
  113. package/dist/metadata/sql-context-validation.js +172 -19
  114. package/dist/metadata/sql-context-validation.js.map +1 -1
  115. package/dist/metadata/sql-retrieval.d.ts +3 -2
  116. package/dist/metadata/sql-retrieval.d.ts.map +1 -1
  117. package/dist/metadata/sql-retrieval.js +6 -4
  118. package/dist/metadata/sql-retrieval.js.map +1 -1
  119. package/dist/providers/claude.d.ts +2 -1
  120. package/dist/providers/claude.d.ts.map +1 -1
  121. package/dist/providers/claude.js +95 -0
  122. package/dist/providers/claude.js.map +1 -1
  123. package/dist/providers/index.d.ts +1 -1
  124. package/dist/providers/index.d.ts.map +1 -1
  125. package/dist/providers/index.js.map +1 -1
  126. package/dist/providers/openai.d.ts +2 -1
  127. package/dist/providers/openai.d.ts.map +1 -1
  128. package/dist/providers/openai.js +143 -0
  129. package/dist/providers/openai.js.map +1 -1
  130. package/dist/providers/tool-output.d.ts +2 -0
  131. package/dist/providers/tool-output.d.ts.map +1 -0
  132. package/dist/providers/tool-output.js +22 -0
  133. package/dist/providers/tool-output.js.map +1 -0
  134. package/dist/providers/types.d.ts +23 -0
  135. package/dist/providers/types.d.ts.map +1 -1
  136. package/dist/providers/types.js.map +1 -1
  137. package/dist/semantic-bridge/compose.d.ts +89 -0
  138. package/dist/semantic-bridge/compose.d.ts.map +1 -0
  139. package/dist/semantic-bridge/compose.js +528 -0
  140. package/dist/semantic-bridge/compose.js.map +1 -0
  141. package/dist/semantic-bridge/member-select.d.ts +23 -0
  142. package/dist/semantic-bridge/member-select.d.ts.map +1 -0
  143. package/dist/semantic-bridge/member-select.js +106 -0
  144. package/dist/semantic-bridge/member-select.js.map +1 -0
  145. package/dist/skills/defaults.d.ts.map +1 -1
  146. package/dist/skills/defaults.js +5 -0
  147. package/dist/skills/defaults.js.map +1 -1
  148. package/dist/synthesize.d.ts +26 -0
  149. package/dist/synthesize.d.ts.map +1 -1
  150. package/dist/synthesize.js +72 -3
  151. package/dist/synthesize.js.map +1 -1
  152. package/dist/tools/registry.d.ts +15 -0
  153. package/dist/tools/registry.d.ts.map +1 -0
  154. package/dist/tools/registry.js +692 -0
  155. package/dist/tools/registry.js.map +1 -0
  156. package/dist/trust/stamp.d.ts +26 -0
  157. package/dist/trust/stamp.d.ts.map +1 -0
  158. package/dist/trust/stamp.js +33 -0
  159. package/dist/trust/stamp.js.map +1 -0
  160. package/package.json +4 -4
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { join } from "node:path";
11
11
  import { existsSync, readFileSync } from "node:fs";
12
+ import { createHash } from "node:crypto";
12
13
  import { buildManifest, loadProjectConfig, resolveDbtManifestPath, resolveSemanticLayerWithDiagnostics, } from "@duckcodeailabs/dql-core";
13
14
  import { KGStore } from "./kg/sqlite-fts.js";
14
15
  import { buildKGFromManifest, buildKGFromSemanticLayer } from "./kg/build.js";
@@ -20,27 +21,40 @@ export { buildKGFromManifest, buildKGFromSemanticLayer } from "./kg/build.js";
20
21
  export { activeSkills, buildSkillBlockHints, loadSkills, parseSkill, renderSkill, buildSkillsPrompt, selectRelevantSkills, writeSkill, upsertSkill, deleteSkill, skillsDir, skillPath, } from "./skills/loader.js";
21
22
  export { seedDefaultSkills } from "./skills/defaults.js";
22
23
  export { answer, parseProposal } from "./answer-loop.js";
24
+ export { stampTrustLabel, trustLabelIdForAnswer, } from "./trust/stamp.js";
23
25
  export { decideAgentAction, classifyConversationalTurn, looksLikeComposeApp, looksLikeFollowUp, } from "./intent-controller.js";
24
26
  export { AgentRunEngine, AGENT_RUN_ESCALATION_MAP, createDeterministicAgentRunPlanner, defaultSuccessCriteria, FileAgentRunStore, InMemoryAgentRunStore, defaultAgentRunStorePath, selectRoute, routeReasoningEffort, } from "./agent-run-engine.js";
25
27
  export { defaultAgentRunGates } from "./agent-run-gates.js";
26
28
  export { narrateResult, } from "./narrate.js";
27
29
  export { createLlmAgentRunPlanner, } from "./agent-run-planner.js";
28
30
  export { createHybridRouter, } from "./router.js";
29
- export { synthesizeAnswer, inferFormat, } from "./synthesize.js";
31
+ export { synthesizeAnswer, inferFormat, computeResultStats, } from "./synthesize.js";
30
32
  export { planApp, } from "./app-planner.js";
31
33
  export { planResearch, } from "./research-loop.js";
32
34
  export { loadSemanticMetrics } from "./propose/build-from-prompt.js";
33
35
  export { matchSemanticMetric } from "./metadata/metric-match.js";
36
+ export { composeSemanticQueryForQuestion, renderSemanticDqlArtifact, semanticDqlArtifactName, } from "./semantic-bridge/compose.js";
37
+ export { DQL_TOOL_REGISTRY, dqlMcpToolNamesForSurface, dqlToolDefinitionsForSurface, dqlToolNamesForSurface, getDqlToolDefinition, } from "./tools/registry.js";
38
+ export { cascadeTraceToEvidenceRouteSteps, createCascadeAnswerResult, createCascadeTrace, terminalLaneForRouteTier, } from "./cascade/cascade.js";
39
+ export { shouldClarifyBeforeGeneration, } from "./cascade/triage.js";
40
+ export { routeForCascadeAnswerTier, selectCascadeRunRoute, } from "./cascade/route-policy.js";
41
+ export { DEFAULT_CASCADE_BUDGET_MODEL, canUseEngineEscalation, canUseLaneRepair, contextRetrievalBudgetForQuestion, analysisDepthForQuestion, cascadeBudgetTrace, cascadeBudgetUsage, createCascadeBudgetState, mcpTier2RegroundRepairBudget, mergeCascadeBudgetModel, promptContextBudgetForQuestion, proposalToolBudgetForQuestion, recordEngineEscalation, recordLaneRepair, } from "./cascade/budgets.js";
34
42
  export { APP_BUILDER_SKILLS, planAppFromPrompt, validateAppPlan, generateAppFromPlan, } from "./app-builder.js";
35
43
  export { MemoryStore, defaultMemoryPath, ensureDefaultMemoryFiles, } from "./memory/sqlite-memory.js";
36
- export { MetadataCatalog, buildLocalContextPack, buildMetadataSnapshot, defaultMetadataPath, ensureMetadataCatalogFresh, openMetadataCatalog, planAgentAnswer, recordRuntimeSchemaSnapshot, recordQueryRun, upsertMetadataSnapshot, } from "./metadata/catalog.js";
44
+ export { ConversationStore, defaultConversationPath, } from "./conversation/session-store.js";
45
+ export { emptyWorkingState, parseWorkingState, reduceWorkingState, } from "./conversation/working-state.js";
46
+ export { updateRollingSummary } from "./conversation/rolling-summary.js";
47
+ export { advanceThreadState, buildConversationSnapshot, recallRelevantTurns, } from "./conversation/snapshot.js";
48
+ export { MetadataCatalog, buildLocalContextPack, buildMetadataSnapshot, defaultMetadataPath, ensureMetadataCatalogFresh, metadataObjectToAllowedSqlRelation, openMetadataCatalog, planAgentAnswer, recordRuntimeSchemaSnapshot, recordQueryRun, upsertMetadataSnapshot, } from "./metadata/catalog.js";
37
49
  export { buildBlockBusinessFingerprint, buildBlockSqlFingerprints, fingerprintSql, normalizeBusinessFingerprintToken, normalizeSqlForFingerprint, } from "./metadata/block-fingerprints.js";
38
50
  export { buildAnalysisQuestionPlan, certifiedApplicabilityForObject, scoreAllowedSqlRelationWithAnalysisPlan, scoreMetadataObjectWithAnalysisPlan, sortAllowedSqlContextForAnalysisPlan, } from "./metadata/analysis-planner.js";
39
51
  export { grainMatches, requestedGrainFromPlan, } from "./metadata/grain-gate.js";
40
52
  export { validateSqlAgainstLocalContext, } from "./metadata/sql-context-validation.js";
53
+ export { applyGroundingExpansion, expandGroundingFromCatalog, } from "./grounding/regrounding.js";
54
+ export { ContextLedger, createContextLedger, } from "./grounding/context-ledger.js";
41
55
  export { buildSchemaGrounding, buildGroundingFromRuntimeRelations, renderGroundingForPrompt, resolveRelationsInSql, validateSqlAgainstGrounding, relationKeys, } from "./metadata/sql-grounding.js";
42
56
  export { selectRelevantModels } from "./metadata/sql-retrieval.js";
43
- export { deriveGeneratedDraftSlug, deriveSemanticDraftName, upsertGeneratedDraft, } from "./metadata/drafts.js";
57
+ export { deriveGeneratedDraftSlug, deriveSemanticDraftName, renderGeneratedSqlDqlArtifact, upsertGeneratedDqlArtifactDraft, upsertGeneratedDraft, } from "./metadata/drafts.js";
44
58
  export { persistOwner, readPersistedOwner, resolveLocalOwner, } from "./metadata/identity.js";
45
59
  export { propose, proposePlan, buildProposePreview, buildFromPrompt, loadDbtArtifacts, upsertProposedDraft, renderProposedDraft, blockSlug, resolveProposeConfig, DEFAULT_PROPOSE_CONFIG, classifyModel, resolveDomain, enrichProposal, enrichProposals, } from "./propose/index.js";
46
60
  export { reflectAndReviseBlock } from "./propose/index.js";
@@ -51,6 +65,7 @@ export { retrieveScopedHints, } from "./hints/retrieval.js";
51
65
  export { hintAppliesToScope, hintsConflict, } from "./hints/types.js";
52
66
  // --- Pluggable semantic retrieval (embeddings) ---
53
67
  export { HashedTokenEmbeddingProvider, defaultEmbeddingProvider, cosineSimilarity, hybridRank, } from "./embeddings/provider.js";
68
+ export { buildRuntimeValueIndex, normalizeValueIndexText, } from "./grounding/value-index.js";
54
69
  export { ClaudeProvider, OpenAIProvider, GeminiProvider, OllamaProvider, pickProvider, buildProvider, streamOrGenerate, normalizeAnthropicBaseUrl, normalizeGeminiBaseUrl, REASONING_EFFORTS, isReasoningEffort, coerceReasoningEffort, clampReasoningEffort, bumpReasoningEffort, supportsReasoningEffort, geminiReasoningStyle, effortToThinkingBudget, } from "./providers/index.js";
55
70
  /**
56
71
  * Default location for the agent's SQLite KG file.
@@ -88,17 +103,22 @@ export async function reindexProject(projectRoot, opts = {}) {
88
103
  }
89
104
  }
90
105
  ({ nodes, edges } = dedupeGraph(nodes, edges));
106
+ const kgFingerprint = fingerprintKgGraph(nodes, edges);
91
107
  const kg = new KGStore(opts.kgPath ?? defaultKgPath(projectRoot));
108
+ let kgRebuilt = false;
92
109
  try {
93
- kg.rebuild(nodes, edges);
110
+ if (opts.forceKgIndex || kg.meta("fingerprint") !== kgFingerprint) {
111
+ kg.rebuild(nodes, edges, { fingerprint: kgFingerprint });
112
+ kgRebuilt = true;
113
+ }
94
114
  }
95
115
  finally {
96
116
  kg.close();
97
117
  }
98
- await ensureMetadataCatalogFresh(projectRoot, {
118
+ const metadataRefresh = await ensureMetadataCatalogFresh(projectRoot, {
99
119
  manifest,
100
120
  semanticLayer,
101
- force: true,
121
+ force: opts.forceMetadataCatalog,
102
122
  });
103
123
  // Rebuild the approved-hint index (Git authoritative; SQLite is a view). Safe
104
124
  // when no hints exist — yields an empty index.
@@ -108,7 +128,15 @@ export async function reindexProject(projectRoot, opts = {}) {
108
128
  catch {
109
129
  // Hint indexing is advisory; never fail a reindex over it.
110
130
  }
111
- return { nodes: nodes.length, edges: edges.length, skills: skills.length };
131
+ return {
132
+ nodes: nodes.length,
133
+ edges: edges.length,
134
+ skills: skills.length,
135
+ kgRebuilt,
136
+ metadataRefreshed: metadataRefresh.refreshed,
137
+ kgFingerprint,
138
+ metadataFingerprint: metadataRefresh.fingerprint,
139
+ };
112
140
  }
113
141
  /**
114
142
  * Promotion suggester — surface uncertified answers that have accumulated
@@ -139,7 +167,7 @@ function loadManifest(projectRoot) {
139
167
  dbtManifestPath: resolveDbtManifestPath(projectRoot) ?? undefined,
140
168
  });
141
169
  }
142
- function loadAgentSemanticLayer(projectRoot) {
170
+ export function loadAgentSemanticLayer(projectRoot) {
143
171
  const config = loadProjectConfig(projectRoot);
144
172
  const semanticConfig = config.semanticLayer?.provider
145
173
  ? config.semanticLayer
@@ -147,15 +175,27 @@ function loadAgentSemanticLayer(projectRoot) {
147
175
  ? { provider: "dql", path: config.semanticLayer.path }
148
176
  : undefined;
149
177
  const configured = resolveSemanticLayerWithDiagnostics(semanticConfig, projectRoot).layer;
150
- if (configured)
178
+ // An empty configured layer (scaffold default `provider: 'dql'` with no
179
+ // definitions) must not shadow a real dbt MetricFlow layer — that would strip
180
+ // every metric/dimension/measure node from the KG and disable the governed
181
+ // metric answer tier. Substance wins over configuration.
182
+ if (configured && semanticLayerHasContent(configured))
151
183
  return configured;
152
184
  if (config.dbt?.projectDir) {
153
- return resolveSemanticLayerWithDiagnostics({
185
+ const dbtLayer = resolveSemanticLayerWithDiagnostics({
154
186
  provider: "dbt",
155
187
  projectPath: config.dbt.projectDir,
156
188
  }, projectRoot).layer;
189
+ if (dbtLayer && semanticLayerHasContent(dbtLayer))
190
+ return dbtLayer;
157
191
  }
158
- return undefined;
192
+ return configured ?? undefined;
193
+ }
194
+ /** True when the layer defines ANY semantics — metrics, dimensions, or measures. */
195
+ function semanticLayerHasContent(layer) {
196
+ return layer.listMetrics().length > 0
197
+ || layer.listDimensions().length > 0
198
+ || layer.listMeasures().length > 0;
159
199
  }
160
200
  function dedupeGraph(nodes, edges) {
161
201
  const byId = new Map();
@@ -188,4 +228,55 @@ function mergeNode(a, b) {
188
228
  gitSha: b.gitSha ?? a.gitSha,
189
229
  };
190
230
  }
231
+ function fingerprintKgGraph(nodes, edges) {
232
+ const stableNodes = nodes
233
+ .map((node) => stripUndefinedDeep(node))
234
+ .sort((a, b) => String(a.nodeId).localeCompare(String(b.nodeId)));
235
+ const stableEdges = edges
236
+ .map((edge) => stripUndefinedDeep(edge))
237
+ .sort((a, b) => [
238
+ String(a.src).localeCompare(String(b.src)),
239
+ String(a.dst).localeCompare(String(b.dst)),
240
+ String(a.kind).localeCompare(String(b.kind)),
241
+ ].find((cmp) => cmp !== 0) ?? 0);
242
+ return createHash("sha256")
243
+ .update(stableStringify({ nodes: stableNodes, edges: stableEdges }))
244
+ .digest("hex");
245
+ }
246
+ function stableStringify(value, seen = new WeakSet()) {
247
+ if (value === undefined)
248
+ return "null";
249
+ if (value === null || typeof value !== "object")
250
+ return JSON.stringify(value);
251
+ if (seen.has(value))
252
+ return "\"[Circular]\"";
253
+ seen.add(value);
254
+ if (Array.isArray(value)) {
255
+ const out = `[${value.map((item) => stableStringify(item, seen)).join(",")}]`;
256
+ seen.delete(value);
257
+ return out;
258
+ }
259
+ const record = value;
260
+ const out = `{${Object.keys(record)
261
+ .sort()
262
+ .map((key) => `${JSON.stringify(key)}:${stableStringify(record[key], seen)}`)
263
+ .join(",")}}`;
264
+ seen.delete(value);
265
+ return out;
266
+ }
267
+ function stripUndefinedDeep(value) {
268
+ if (Array.isArray(value)) {
269
+ return value.map((item) => stripUndefinedDeep(item));
270
+ }
271
+ if (!value || typeof value !== "object") {
272
+ return value;
273
+ }
274
+ const out = {};
275
+ for (const [key, raw] of Object.entries(value)) {
276
+ if (raw === undefined)
277
+ continue;
278
+ out[key] = stripUndefinedDeep(raw);
279
+ }
280
+ return out;
281
+ }
191
282
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,mCAAmC,GACpC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAS7C,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKzD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,EACnB,iBAAiB,GAMlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,kCAAkC,EAClC,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAwC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,aAAa,GAOd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,GAGzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,GAInB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,WAAW,GAOZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,OAAO,GAKR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,GAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAgBrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAmB1B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,cAAc,EACd,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,kCAAkC,CAAC;AAM1C,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,uCAAuC,EACvC,mCAAmC,EACnC,oCAAoC,GACrC,MAAM,gCAAgC,CAAC;AASxC,OAAO,EACL,YAAY,EACZ,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EACL,8BAA8B,GAC/B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,kCAAkC,EAClC,wBAAwB,EACxB,qBAAqB,EACrB,2BAA2B,EAC3B,YAAY,GACb,MAAM,6BAA6B,CAAC;AAYrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAuC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAsC3D,2CAA2C;AAC3C,OAAO,EACL,SAAS,GACV,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACL,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EACL,kBAAkB,EAClB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAU1B,oDAAoD;AACpD,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,GACX,MAAM,0BAA0B,CAAC;AAUlC,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAU9B;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC/D,CAAC;AAUD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,OAAuB,EAAE;IAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAC9D,IAAI,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAE7D,6DAA6D;IAC7D,IAAI,MAAM,GAAY,EAAE,CAAC;IACzB,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,CAAC,CAAC,EAAE;gBACV,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,UAAU,EAAE,CAAC,CAAC,IAAI;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAE/C,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IACD,MAAM,0BAA0B,CAAC,WAAW,EAAE;QAC5C,QAAQ;QACR,aAAa;QACb,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,8EAA8E;IAC9E,+CAA+C;IAC/C,IAAI,CAAC;QACH,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,MAAM,GAAG,CAAC;IAMV,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,WAAmB;IACvC,oEAAoE;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAgB,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;QACnB,WAAW;QACX,eAAe,EAAE,sBAAsB,CAAC,WAAW,CAAC,IAAI,SAAS;KAClE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,WAAmB;IACjD,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,EAAE,QAAQ;QACnD,CAAC,CAAE,MAAM,CAAC,aAEH;QACP,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI;YAC1B,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAc,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;YAC/D,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,UAAU,GAAG,mCAAmC,CACpD,cAAc,EACd,WAAW,CACZ,CAAC,KAAK,CAAC;IACR,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,IAAI,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;QAC3B,OAAO,mCAAmC,CACxC;YACE,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU;SACnC,EACD,WAAW,CACZ,CAAC,KAAK,CAAC;IACV,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAClB,KAAe,EACf,KAAe;IAEf,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QACzD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAChC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO;QACL,GAAG,CAAC;QACJ,GAAG,CAAC;QACJ,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW;QAC3C,UAAU,EACR,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS;QACxE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACxD,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU;QACxC,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,mCAAmC,GACpC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAS7C,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKzD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,eAAe,EACf,qBAAqB,GAEtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,EACnB,iBAAiB,GAMlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,kCAAkC,EAClC,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAwC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,aAAa,GAOd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,GAGzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,GAInB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,GAQnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,OAAO,GAKR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,GAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AA4BrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,GAMxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACL,gCAAgC,EAChC,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,GAezB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,6BAA6B,GAI9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GAOtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,iCAAiC,EACjC,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,8BAA8B,EAC9B,6BAA6B,EAC7B,sBAAsB,EACtB,gBAAgB,GAgBjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAmB1B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAQzC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,kCAAkC,EAClC,mBAAmB,EACnB,eAAe,EACf,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,cAAc,EACd,iCAAiC,EACjC,0BAA0B,GAC3B,MAAM,kCAAkC,CAAC;AAM1C,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,uCAAuC,EACvC,mCAAmC,EACnC,oCAAoC,GACrC,MAAM,gCAAgC,CAAC;AASxC,OAAO,EACL,YAAY,EACZ,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EACL,8BAA8B,GAC/B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAYvC,OAAO,EACL,oBAAoB,EACpB,kCAAkC,EAClC,wBAAwB,EACxB,qBAAqB,EACrB,2BAA2B,EAC3B,YAAY,GACb,MAAM,6BAA6B,CAAC;AAYrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,6BAA6B,EAC7B,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAuC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AA0C3D,2CAA2C;AAC3C,OAAO,EACL,SAAS,GACV,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACL,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EACL,kBAAkB,EAClB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAU1B,oDAAoD;AACpD,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,GACX,MAAM,0BAA0B,CAAC;AAWlC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAY9B;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC/D,CAAC;AAwBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,OAAuB,EAAE;IAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAC9D,IAAI,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAE7D,6DAA6D;IAC7D,IAAI,MAAM,GAAY,EAAE,CAAC;IACzB,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,CAAC,CAAC,EAAE;gBACV,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,UAAU,EAAE,CAAC,CAAC,IAAI;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEvD,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;IAClE,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,aAAa,EAAE,CAAC;YAClE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YACzD,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE;QACpE,QAAQ;QACR,aAAa;QACb,KAAK,EAAE,IAAI,CAAC,oBAAoB;KACjC,CAAC,CAAC;IACH,8EAA8E;IAC9E,+CAA+C;IAC/C,IAAI,CAAC;QACH,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;IACD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS;QACT,iBAAiB,EAAE,eAAe,CAAC,SAAS;QAC5C,aAAa;QACb,mBAAmB,EAAE,eAAe,CAAC,WAAW;KACjD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,MAAM,GAAG,CAAC;IAMV,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,WAAmB;IACvC,oEAAoE;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAgB,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;QACnB,WAAW;QACX,eAAe,EAAE,sBAAsB,CAAC,WAAW,CAAC,IAAI,SAAS;KAClE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,EAAE,QAAQ;QACnD,CAAC,CAAE,MAAM,CAAC,aAEH;QACP,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI;YAC1B,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAc,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;YAC/D,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,UAAU,GAAG,mCAAmC,CACpD,cAAc,EACd,WAAW,CACZ,CAAC,KAAK,CAAC;IACR,wEAAwE;IACxE,8EAA8E;IAC9E,2EAA2E;IAC3E,yDAAyD;IACzD,IAAI,UAAU,IAAI,uBAAuB,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAEzE,IAAI,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,mCAAmC,CAClD;YACE,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU;SACnC,EACD,WAAW,CACZ,CAAC,KAAK,CAAC;QACR,IAAI,QAAQ,IAAI,uBAAuB,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;IACrE,CAAC;IACD,OAAO,UAAU,IAAI,SAAS,CAAC;AACjC,CAAC;AAED,oFAAoF;AACpF,SAAS,uBAAuB,CAAC,KAAmF;IAClH,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC;WAChC,KAAK,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC;WACjC,KAAK,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAClB,KAAe,EACf,KAAe;IAEf,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QACzD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAChC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO;QACL,GAAG,CAAC;QACJ,GAAG,CAAC;QACJ,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW;QAC3C,UAAU,EACR,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS;QACxE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACxD,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU;QACxC,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAe,EAAE,KAAe;IAC1D,MAAM,WAAW,GAAG,KAAK;SACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAA4B,CAAC;SAClE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,KAAK;SACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAA4B,CAAC;SAClE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAC7C,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;SACnE,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,OAAO,IAAI,OAAO,EAAU;IACnE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9E,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SAChC,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;SAC5E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -54,6 +54,13 @@ export interface IntentDecision {
54
54
  reason: string;
55
55
  /** Present when action is clarify: the single question to ask. */
56
56
  clarifyingQuestion?: string;
57
+ /**
58
+ * True when this clarify is a SOFT fallback ("nothing governed matched") rather
59
+ * than a genuine missing-context / explicit-clarify / trust-review ask. A soft
60
+ * clarify may be answered anyway (best-effort, labeled) for any audience instead
61
+ * of dead-ending; the answer loop can still clarify if it truly can't proceed.
62
+ */
63
+ clarifySoft?: boolean;
57
64
  /** True when the turn references prior context ("it", "that", "why", "more"). */
58
65
  followsUp: boolean;
59
66
  /** For converse: which conversational kind was detected. */
@@ -1 +1 @@
1
- {"version":3,"file":"intent-controller.d.ts","sourceRoot":"","sources":["../src/intent-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,4DAA4D;AAC5D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;AAE5F;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAE5F,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,iFAAiF;IACjF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,qFAAqF;IACrF,QAAQ,CAAC,EACL,gBAAgB,GAChB,YAAY,GACZ,mBAAmB,GACnB,aAAa,GACb,eAAe,GACf,WAAW,GACX,KAAK,GACL,SAAS,CAAC;IACd,mFAAmF;IACnF,MAAM,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,OAAO,CAAC;CACxC;AA2DD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,UAAU,UAAQ,GACjB,kBAAkB,GAAG,SAAS,CAehC;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAMhF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAkG5E"}
1
+ {"version":3,"file":"intent-controller.d.ts","sourceRoot":"","sources":["../src/intent-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,4DAA4D;AAC5D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;AAE5F;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAE5F,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,iFAAiF;IACjF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,qFAAqF;IACrF,QAAQ,CAAC,EACL,gBAAgB,GAChB,YAAY,GACZ,mBAAmB,GACnB,aAAa,GACb,eAAe,GACf,WAAW,GACX,KAAK,GACL,SAAS,CAAC;IACd,mFAAmF;IACnF,MAAM,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,OAAO,CAAC;CACxC;AA6DD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,UAAU,UAAQ,GACjB,kBAAkB,GAAG,SAAS,CAgBhC;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAMhF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAqH5E"}
@@ -57,6 +57,7 @@ const GREETING_RE = /^\s*(hi|hey|hello|yo|howdy|hiya|heya|good\s+(morning|aftern
57
57
  const GRATITUDE_RE = /^\s*(thanks?|thank\s+you|thx|ty|cheers|nice|cool|awesome|great|perfect|got\s+it|makes\s+sense|ok(ay)?|sounds?\s+good|bye|goodbye|see\s+ya|later)\b[\s!.,]*$/i;
58
58
  /** Meta / capability questions about the assistant itself. */
59
59
  const META_CAPABILITY_RE = /\b(what\s+can\s+you\s+do|what\s+do\s+you\s+do|how\s+do\s+(you|i)\s+(work|use)|who\s+are\s+you|what\s+are\s+you|what\s+is\s+dql|help\s+me\s+get\s+started|how\s+can\s+you\s+help|what\s+should\s+i\s+ask|how\s+does\s+this\s+work|are\s+you\s+(an?\s+)?(ai|bot|llm))\b/i;
60
+ const CONTEXT_RECAP_RE = /\b(what\s+(?:are|were)\s+we\s+talking\s+about|what\s+we\s+(?:are|were)\s+talking\s+about|what\s+is\s+this\s+about|where\s+were\s+we|remind\s+me|recap(?:\s+this)?|summari[sz]e\s+(?:this|our\s+conversation))\b/i;
60
61
  /**
61
62
  * Classify a turn as conversational (greeting / gratitude / meta-capability /
62
63
  * light small talk) when it deserves a plain reply rather than data routing.
@@ -73,6 +74,8 @@ export function classifyConversationalTurn(question, hasHistory = false) {
73
74
  const words = trimmed.split(/\s+/).length;
74
75
  if (META_CAPABILITY_RE.test(trimmed))
75
76
  return 'meta_capability';
77
+ if (hasHistory && CONTEXT_RECAP_RE.test(trimmed))
78
+ return 'smalltalk';
76
79
  // Short openers/closers only — a long sentence starting with "hi" is likely a real ask.
77
80
  if (words <= 6 && GREETING_RE.test(trimmed))
78
81
  return 'greeting';
@@ -132,6 +135,21 @@ export function decideAgentAction(input) {
132
135
  followsUp,
133
136
  };
134
137
  }
138
+ // 1b) A turn that ANSWERS a prior clarifying question must proceed to a real
139
+ // answer — never clarify again. Short replies ("top 5", "yes") aren't deictic
140
+ // follow-ups, so without this the router re-clarifies every time and loops
141
+ // forever. The user gave the detail we asked for; the answer loop cascades
142
+ // (certified → semantic → generated) and can still clarify itself only if it
143
+ // genuinely cannot proceed.
144
+ const priorAssistant = [...(input.history ?? [])].reverse().find((turn) => turn.role === 'assistant');
145
+ if (priorAssistant && priorAssistant.text.trim().endsWith('?')) {
146
+ return {
147
+ action: 'answer',
148
+ confidence: 0.6,
149
+ reason: 'This answers a clarifying question, so I will produce a best-effort governed answer now instead of asking again.',
150
+ followsUp: true,
151
+ };
152
+ }
135
153
  // 2) EXPLICIT investigation ("why / root cause / what happened") wins even over a
136
154
  // metric match — returning a single number would miss the point of the ask.
137
155
  if (STRONG_INVESTIGATE_RE.test(question) || DIAGNOSTIC_INTENTS.has(intent)) {
@@ -183,10 +201,13 @@ export function decideAgentAction(input) {
183
201
  };
184
202
  }
185
203
  // 6) Default: nothing governed matched and it is not clearly analytical → clarify
186
- // honestly rather than guess.
204
+ // honestly rather than guess. Marked SOFT so an analyst/stakeholder still gets a
205
+ // best-effort grounded answer instead of a dead-end (the answer loop re-grounds
206
+ // and can clarify itself if it genuinely can't proceed).
187
207
  return {
188
208
  action: 'clarify',
189
209
  confidence: 0.5,
210
+ clarifySoft: true,
190
211
  reason: 'I could not match this to a certified block, governed metric, or clear analysis, so I will ask for the missing detail.',
191
212
  clarifyingQuestion: buildClarifyingQuestion(question, signals),
192
213
  followsUp,
@@ -1 +1 @@
1
- {"version":3,"file":"intent-controller.js","sourceRoot":"","sources":["../src/intent-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intent-controller.js","sourceRoot":"","sources":["../src/intent-controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/kg/build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,WAAW,EAIX,aAAa,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAA+B,MAAM,YAAY,CAAC;AAG9E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG;IAC1D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CA2TA;AAmCD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG;IAC1E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CA+KA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/kg/build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,WAAW,EAIX,aAAa,EACd,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAA+B,MAAM,YAAY,CAAC;AAG9E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG;IAC1D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAwUA;AAoCD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG;IAC1E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAqLA"}
package/dist/kg/build.js CHANGED
@@ -8,6 +8,7 @@
8
8
  *
9
9
  * The output is intentionally flat — caller passes it to `KGStore.rebuild()`.
10
10
  */
11
+ import { trustLabelIdForStatus } from '@duckcodeailabs/dql-core';
11
12
  import { buildBlockBusinessFingerprint, buildBlockSqlFingerprints } from '../metadata/block-fingerprints.js';
12
13
  export function buildKGFromManifest(manifest) {
13
14
  const nodes = [];
@@ -39,6 +40,9 @@ export function buildKGFromManifest(manifest) {
39
40
  // Blocks
40
41
  for (const block of Object.values(manifest.blocks)) {
41
42
  const nodeId = `block:${block.name}`;
43
+ const contractOutputNames = block.declaredOutputs
44
+ ?? block.outputContract?.map((output) => output.name).filter(Boolean)
45
+ ?? block.outputs?.map((output) => output.name).filter(Boolean);
42
46
  nodes.push({
43
47
  nodeId,
44
48
  kind: 'block',
@@ -50,6 +54,7 @@ export function buildKGFromManifest(manifest) {
50
54
  tags: block.tags ?? [],
51
55
  llmContext: block.llmContext,
52
56
  examples: block.examples,
57
+ sql: block.sql,
53
58
  businessOutcome: block.businessOutcome,
54
59
  businessOwner: block.businessOwner,
55
60
  decisionUse: block.decisionUse,
@@ -58,6 +63,8 @@ export function buildKGFromManifest(manifest) {
58
63
  grain: block.grain,
59
64
  entities: block.entities,
60
65
  declaredOutputs: block.declaredOutputs,
66
+ outputs: block.outputs,
67
+ outputContract: block.outputContract,
61
68
  dimensions: block.dimensions,
62
69
  allowedFilters: block.allowedFilters,
63
70
  parameterPolicy: block.parameterPolicy,
@@ -72,7 +79,7 @@ export function buildKGFromManifest(manifest) {
72
79
  grain: block.grain,
73
80
  entities: block.entities,
74
81
  terms: block.termRefs,
75
- outputs: block.declaredOutputs,
82
+ outputs: contractOutputNames,
76
83
  dimensions: block.dimensions,
77
84
  filters: block.allowedFilters,
78
85
  sources: [...(block.tableDependencies ?? []), ...(block.rawTableRefs ?? [])],
@@ -85,7 +92,7 @@ export function buildKGFromManifest(manifest) {
85
92
  dataStateDetail: block.dataStateDetail,
86
93
  sourcePath: block.filePath,
87
94
  sourceTier: 'certified_artifact',
88
- certification: block.status === 'certified' ? 'certified' : 'analyst_review_required',
95
+ certification: certificationFromStatus(block.status),
89
96
  provenance: 'DQL block',
90
97
  });
91
98
  for (const termRef of block.termRefs ?? []) {
@@ -144,7 +151,7 @@ export function buildKGFromManifest(manifest) {
144
151
  llmContext: cellSummary || undefined,
145
152
  sourcePath: nb.filePath,
146
153
  sourceTier: 'certified_artifact',
147
- certification: 'analyst_review_required',
154
+ certification: 'ai_generated',
148
155
  provenance: 'DQL notebook',
149
156
  });
150
157
  for (const cell of nb.cells) {
@@ -162,10 +169,13 @@ export function buildKGFromManifest(manifest) {
162
169
  kind: 'metric',
163
170
  name: m.name,
164
171
  domain: m.domain,
172
+ status: m.status,
173
+ owner: m.owner,
165
174
  description: m.description,
175
+ tags: m.tags ?? [],
166
176
  sourcePath: m.filePath,
167
177
  sourceTier: 'semantic_layer',
168
- certification: 'ai_generated',
178
+ certification: certificationFromStatus(m.status),
169
179
  provenance: 'DQL semantic metric',
170
180
  });
171
181
  }
@@ -176,10 +186,14 @@ export function buildKGFromManifest(manifest) {
176
186
  nodeId,
177
187
  kind: 'dimension',
178
188
  name: d.name,
189
+ domain: d.domain,
190
+ status: d.status,
191
+ owner: d.owner,
179
192
  description: d.description,
193
+ tags: d.tags ?? [],
180
194
  sourcePath: d.filePath,
181
195
  sourceTier: 'semantic_layer',
182
- certification: 'ai_generated',
196
+ certification: certificationFromStatus(d.status),
183
197
  provenance: 'DQL semantic dimension',
184
198
  });
185
199
  }
@@ -208,7 +222,7 @@ export function buildKGFromManifest(manifest) {
208
222
  kind: 'dashboard',
209
223
  name: d.title,
210
224
  domain: d.domain,
211
- status: 'certified',
225
+ status: d.lifecycle,
212
226
  description: d.description,
213
227
  tags: d.tags ?? [],
214
228
  businessOutcome: d.businessOutcome,
@@ -219,7 +233,7 @@ export function buildKGFromManifest(manifest) {
219
233
  caveats: d.caveats,
220
234
  sourcePath: d.filePath,
221
235
  sourceTier: 'certified_artifact',
222
- certification: 'certified',
236
+ certification: certificationFromStatus(d.lifecycle),
223
237
  provenance: 'DQL dashboard',
224
238
  });
225
239
  for (const blockId of d.blockIds) {
@@ -237,7 +251,7 @@ export function buildKGFromManifest(manifest) {
237
251
  kind: 'app',
238
252
  name: a.name,
239
253
  domain: a.domain,
240
- status: 'certified',
254
+ status: a.lifecycle,
241
255
  owner: a.owners[0],
242
256
  description: a.description,
243
257
  tags: a.tags ?? [],
@@ -249,7 +263,7 @@ export function buildKGFromManifest(manifest) {
249
263
  caveats: a.caveats,
250
264
  sourcePath: a.filePath,
251
265
  sourceTier: 'certified_artifact',
252
- certification: 'certified',
266
+ certification: certificationFromStatus(a.lifecycle),
253
267
  provenance: 'DQL app',
254
268
  });
255
269
  for (const dashboardId of a.dashboards) {
@@ -277,7 +291,7 @@ export function buildKGFromManifest(manifest) {
277
291
  primaryTerms: domain.primaryTerms,
278
292
  sourcePath: domain.filePath,
279
293
  sourceTier: 'business_context',
280
- certification: 'analyst_review_required',
294
+ certification: 'ai_generated',
281
295
  provenance: 'DQL domain',
282
296
  });
283
297
  }
@@ -336,7 +350,8 @@ export function buildKGFromManifest(manifest) {
336
350
  return { nodes, edges };
337
351
  }
338
352
  function certificationFromStatus(status) {
339
- return status === 'certified' ? 'certified' : 'analyst_review_required';
353
+ const label = trustLabelIdForStatus(status);
354
+ return !status && label === 'insufficient_context' ? 'ai_generated' : label;
340
355
  }
341
356
  function termTags(term) {
342
357
  return Array.from(new Set([
@@ -376,6 +391,7 @@ export function buildKGFromSemanticLayer(layer) {
376
391
  kind: 'metric',
377
392
  name: qualifiedSemanticName(metric.cube, metric.name),
378
393
  domain: metric.domain,
394
+ status: metric.status,
379
395
  owner: metric.owner,
380
396
  description: metric.description,
381
397
  tags: metric.tags ?? [],
@@ -388,7 +404,7 @@ export function buildKGFromSemanticLayer(layer) {
388
404
  metric.sql ? `sql: ${metric.sql}` : '',
389
405
  ].filter(Boolean).join('\n') || undefined,
390
406
  sourceTier: 'semantic_layer',
391
- certification: 'ai_generated',
407
+ certification: certificationFromStatus(metric.status),
392
408
  provenance: metric.source?.provider === 'dbt'
393
409
  ? `dbt ${metric.source.objectType}`
394
410
  : metric.source?.provider ?? 'semantic layer',
@@ -404,6 +420,7 @@ export function buildKGFromSemanticLayer(layer) {
404
420
  kind: 'dimension',
405
421
  name: qualifiedSemanticName(dimension.cube, dimension.name),
406
422
  domain: dimension.domain,
423
+ status: dimension.status,
407
424
  owner: dimension.owner,
408
425
  description: dimension.description,
409
426
  tags: dimension.tags ?? [],
@@ -415,7 +432,7 @@ export function buildKGFromSemanticLayer(layer) {
415
432
  dimension.sql ? `sql: ${dimension.sql}` : '',
416
433
  ].filter(Boolean).join('\n') || undefined,
417
434
  sourceTier: 'semantic_layer',
418
- certification: 'ai_generated',
435
+ certification: certificationFromStatus(dimension.status),
419
436
  provenance: dimension.source?.provider === 'dbt'
420
437
  ? `dbt ${dimension.source.objectType}`
421
438
  : dimension.source?.provider ?? 'semantic layer',
@@ -431,6 +448,7 @@ export function buildKGFromSemanticLayer(layer) {
431
448
  kind: 'measure',
432
449
  name: qualifiedSemanticName(measure.cube, measure.name),
433
450
  domain: measure.domain,
451
+ status: semanticObjectStatus(measure),
434
452
  owner: measure.owner,
435
453
  description: measure.description,
436
454
  tags: measure.tags ?? [],
@@ -443,7 +461,7 @@ export function buildKGFromSemanticLayer(layer) {
443
461
  measure.aggTimeDimension ? `agg_time_dimension: ${measure.aggTimeDimension}` : '',
444
462
  ].filter(Boolean).join('\n') || undefined,
445
463
  sourceTier: 'semantic_layer',
446
- certification: 'ai_generated',
464
+ certification: certificationFromStatus(semanticObjectStatus(measure)),
447
465
  provenance: measure.source?.provider === 'dbt'
448
466
  ? `dbt ${measure.source.objectType}`
449
467
  : measure.source?.provider ?? 'semantic layer',
@@ -459,6 +477,7 @@ export function buildKGFromSemanticLayer(layer) {
459
477
  kind: 'entity',
460
478
  name: qualifiedSemanticName(entity.cube, entity.name),
461
479
  domain: entity.domain,
480
+ status: semanticObjectStatus(entity),
462
481
  owner: entity.owner,
463
482
  description: entity.description,
464
483
  tags: entity.tags ?? [],
@@ -470,7 +489,7 @@ export function buildKGFromSemanticLayer(layer) {
470
489
  entity.expr ? `expr: ${entity.expr}` : '',
471
490
  ].filter(Boolean).join('\n') || undefined,
472
491
  sourceTier: 'semantic_layer',
473
- certification: 'ai_generated',
492
+ certification: certificationFromStatus(semanticObjectStatus(entity)),
474
493
  provenance: entity.source?.provider === 'dbt'
475
494
  ? `dbt ${entity.source.objectType}`
476
495
  : entity.source?.provider ?? 'semantic layer',
@@ -486,6 +505,7 @@ export function buildKGFromSemanticLayer(layer) {
486
505
  kind: 'semantic_model',
487
506
  name: model.name,
488
507
  domain: model.domain,
508
+ status: semanticObjectStatus(model),
489
509
  owner: model.owner,
490
510
  description: model.description,
491
511
  tags: model.tags ?? [],
@@ -500,7 +520,7 @@ export function buildKGFromSemanticLayer(layer) {
500
520
  model.timeDimensions.length ? `time_dimensions: ${model.timeDimensions.join(', ')}` : '',
501
521
  ].filter(Boolean).join('\n') || undefined,
502
522
  sourceTier: 'semantic_layer',
503
- certification: 'ai_generated',
523
+ certification: certificationFromStatus(semanticObjectStatus(model)),
504
524
  provenance: model.source?.provider === 'dbt'
505
525
  ? `dbt ${model.source.objectType}`
506
526
  : model.source?.provider ?? 'semantic layer',
@@ -516,6 +536,7 @@ export function buildKGFromSemanticLayer(layer) {
516
536
  kind: 'saved_query',
517
537
  name: query.name,
518
538
  domain: query.domain,
539
+ status: semanticObjectStatus(query),
519
540
  owner: query.owner,
520
541
  description: query.description,
521
542
  tags: query.tags ?? [],
@@ -528,7 +549,7 @@ export function buildKGFromSemanticLayer(layer) {
528
549
  query.granularity ? `granularity: ${query.granularity}` : '',
529
550
  ].filter(Boolean).join('\n') || undefined,
530
551
  sourceTier: 'semantic_layer',
531
- certification: 'ai_generated',
552
+ certification: certificationFromStatus(semanticObjectStatus(query)),
532
553
  provenance: query.source?.provider === 'dbt'
533
554
  ? `dbt ${query.source.objectType}`
534
555
  : query.source?.provider ?? 'semantic layer',
@@ -548,6 +569,12 @@ function semanticSourcePath(extra) {
548
569
  const path = extra?.path ?? (extra?.raw && typeof extra.raw === 'object' ? extra.raw.original_file_path : undefined);
549
570
  return typeof path === 'string' ? path : undefined;
550
571
  }
572
+ function semanticObjectStatus(value) {
573
+ if (!value || typeof value !== 'object')
574
+ return undefined;
575
+ const record = value;
576
+ return typeof record.status === 'string' && record.status.trim().length > 0 ? record.status.trim() : undefined;
577
+ }
551
578
  function renderColumnsContext(columns) {
552
579
  const rendered = Object.values(columns)
553
580
  .slice(0, 80)