@duckcodeailabs/dql-agent 1.6.32 → 1.6.34

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 (144) hide show
  1. package/dist/agent-run-engine.d.ts +26 -8
  2. package/dist/agent-run-engine.d.ts.map +1 -1
  3. package/dist/agent-run-engine.js +46 -7
  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 +15 -3
  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 +14 -3
  10. package/dist/agent-run-planner.js.map +1 -1
  11. package/dist/agentic/answer-contract.d.ts +37 -0
  12. package/dist/agentic/answer-contract.d.ts.map +1 -0
  13. package/dist/agentic/answer-contract.js +47 -0
  14. package/dist/agentic/answer-contract.js.map +1 -0
  15. package/dist/agentic/tool-loop.d.ts +48 -0
  16. package/dist/agentic/tool-loop.d.ts.map +1 -0
  17. package/dist/agentic/tool-loop.js +181 -0
  18. package/dist/agentic/tool-loop.js.map +1 -0
  19. package/dist/agentic/toolset.d.ts +40 -0
  20. package/dist/agentic/toolset.d.ts.map +1 -0
  21. package/dist/agentic/toolset.js +265 -0
  22. package/dist/agentic/toolset.js.map +1 -0
  23. package/dist/answer-loop.d.ts +25 -2
  24. package/dist/answer-loop.d.ts.map +1 -1
  25. package/dist/answer-loop.js +368 -72
  26. package/dist/answer-loop.js.map +1 -1
  27. package/dist/cascade/budgets.d.ts +20 -2
  28. package/dist/cascade/budgets.d.ts.map +1 -1
  29. package/dist/cascade/budgets.js +76 -43
  30. package/dist/cascade/budgets.js.map +1 -1
  31. package/dist/cascade/route-policy.d.ts +1 -1
  32. package/dist/cascade/route-policy.d.ts.map +1 -1
  33. package/dist/cascade/route-policy.js +1 -0
  34. package/dist/cascade/route-policy.js.map +1 -1
  35. package/dist/embeddings/provider.d.ts +67 -4
  36. package/dist/embeddings/provider.d.ts.map +1 -1
  37. package/dist/embeddings/provider.js +167 -6
  38. package/dist/embeddings/provider.js.map +1 -1
  39. package/dist/hints/correction-eval.d.ts +30 -0
  40. package/dist/hints/correction-eval.d.ts.map +1 -0
  41. package/dist/hints/correction-eval.js +63 -0
  42. package/dist/hints/correction-eval.js.map +1 -0
  43. package/dist/hints/staleness.d.ts +30 -0
  44. package/dist/hints/staleness.d.ts.map +1 -0
  45. package/dist/hints/staleness.js +38 -0
  46. package/dist/hints/staleness.js.map +1 -0
  47. package/dist/hints/store.d.ts.map +1 -1
  48. package/dist/hints/store.js +3 -32
  49. package/dist/hints/store.js.map +1 -1
  50. package/dist/index.d.ts +39 -6
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +143 -7
  53. package/dist/index.js.map +1 -1
  54. package/dist/intent-controller.d.ts.map +1 -1
  55. package/dist/intent-controller.js +15 -3
  56. package/dist/intent-controller.js.map +1 -1
  57. package/dist/kg/sqlite-fts.d.ts +13 -0
  58. package/dist/kg/sqlite-fts.d.ts.map +1 -1
  59. package/dist/kg/sqlite-fts.js +75 -47
  60. package/dist/kg/sqlite-fts.js.map +1 -1
  61. package/dist/memory/fts-query.d.ts +37 -4
  62. package/dist/memory/fts-query.d.ts.map +1 -1
  63. package/dist/memory/fts-query.js +53 -12
  64. package/dist/memory/fts-query.js.map +1 -1
  65. package/dist/metadata/analysis-planner.js +45 -10
  66. package/dist/metadata/analysis-planner.js.map +1 -1
  67. package/dist/metadata/block-adapt.d.ts +37 -0
  68. package/dist/metadata/block-adapt.d.ts.map +1 -0
  69. package/dist/metadata/block-adapt.js +89 -0
  70. package/dist/metadata/block-adapt.js.map +1 -0
  71. package/dist/metadata/catalog.d.ts +39 -0
  72. package/dist/metadata/catalog.d.ts.map +1 -1
  73. package/dist/metadata/catalog.js +361 -41
  74. package/dist/metadata/catalog.js.map +1 -1
  75. package/dist/metadata/example-match.d.ts +30 -0
  76. package/dist/metadata/example-match.d.ts.map +1 -0
  77. package/dist/metadata/example-match.js +69 -0
  78. package/dist/metadata/example-match.js.map +1 -0
  79. package/dist/metadata/grain-ledger.d.ts +51 -0
  80. package/dist/metadata/grain-ledger.d.ts.map +1 -0
  81. package/dist/metadata/grain-ledger.js +174 -0
  82. package/dist/metadata/grain-ledger.js.map +1 -0
  83. package/dist/metadata/metric-match.d.ts +21 -1
  84. package/dist/metadata/metric-match.d.ts.map +1 -1
  85. package/dist/metadata/metric-match.js +157 -21
  86. package/dist/metadata/metric-match.js.map +1 -1
  87. package/dist/metadata/sql-grounding.d.ts +4 -2
  88. package/dist/metadata/sql-grounding.d.ts.map +1 -1
  89. package/dist/metadata/sql-grounding.js +4 -2
  90. package/dist/metadata/sql-grounding.js.map +1 -1
  91. package/dist/metadata/sql-retrieval.d.ts +3 -2
  92. package/dist/metadata/sql-retrieval.d.ts.map +1 -1
  93. package/dist/metadata/sql-retrieval.js +23 -5
  94. package/dist/metadata/sql-retrieval.js.map +1 -1
  95. package/dist/propose/build-from-prompt.d.ts.map +1 -1
  96. package/dist/propose/build-from-prompt.js +10 -4
  97. package/dist/propose/build-from-prompt.js.map +1 -1
  98. package/dist/propose/failure-analysis.d.ts +48 -0
  99. package/dist/propose/failure-analysis.d.ts.map +1 -0
  100. package/dist/propose/failure-analysis.js +71 -0
  101. package/dist/propose/failure-analysis.js.map +1 -0
  102. package/dist/propose/join-mining.d.ts +18 -0
  103. package/dist/propose/join-mining.d.ts.map +1 -0
  104. package/dist/propose/join-mining.js +74 -0
  105. package/dist/propose/join-mining.js.map +1 -0
  106. package/dist/providers/claude.d.ts.map +1 -1
  107. package/dist/providers/claude.js +36 -1
  108. package/dist/providers/claude.js.map +1 -1
  109. package/dist/providers/index.d.ts +2 -2
  110. package/dist/providers/index.d.ts.map +1 -1
  111. package/dist/providers/index.js +1 -1
  112. package/dist/providers/index.js.map +1 -1
  113. package/dist/providers/openai.d.ts.map +1 -1
  114. package/dist/providers/openai.js +34 -1
  115. package/dist/providers/openai.js.map +1 -1
  116. package/dist/providers/reasoning-effort.d.ts +27 -0
  117. package/dist/providers/reasoning-effort.d.ts.map +1 -1
  118. package/dist/providers/reasoning-effort.js +32 -0
  119. package/dist/providers/reasoning-effort.js.map +1 -1
  120. package/dist/providers/types.d.ts +2 -1
  121. package/dist/providers/types.d.ts.map +1 -1
  122. package/dist/research-loop.d.ts.map +1 -1
  123. package/dist/research-loop.js +9 -2
  124. package/dist/research-loop.js.map +1 -1
  125. package/dist/semantic-bridge/compose.d.ts.map +1 -1
  126. package/dist/semantic-bridge/compose.js +147 -20
  127. package/dist/semantic-bridge/compose.js.map +1 -1
  128. package/dist/skills/bootstrap.d.ts +57 -0
  129. package/dist/skills/bootstrap.d.ts.map +1 -0
  130. package/dist/skills/bootstrap.js +260 -0
  131. package/dist/skills/bootstrap.js.map +1 -0
  132. package/dist/skills/defaults.d.ts +2 -2
  133. package/dist/skills/defaults.js +2 -2
  134. package/dist/skills/domain-skills.d.ts +24 -0
  135. package/dist/skills/domain-skills.d.ts.map +1 -0
  136. package/dist/skills/domain-skills.js +76 -0
  137. package/dist/skills/domain-skills.js.map +1 -0
  138. package/dist/skills/loader.d.ts +46 -8
  139. package/dist/skills/loader.d.ts.map +1 -1
  140. package/dist/skills/loader.js +186 -41
  141. package/dist/skills/loader.js.map +1 -1
  142. package/dist/tools/registry.js +12 -12
  143. package/dist/tools/registry.js.map +1 -1
  144. package/package.json +4 -4
@@ -86,7 +86,25 @@ export declare function recordEngineEscalation(state: CascadeBudgetState): Casca
86
86
  export declare function cascadeBudgetUsage(state: CascadeBudgetState): CascadeBudgetUsage;
87
87
  export declare function cascadeBudgetTrace(state: CascadeBudgetState): CascadeBudgetTrace;
88
88
  export declare function mcpTier2RegroundRepairBudget(attemptsUsed?: number, model?: PartialCascadeBudgetModel): McpTier2RepairBudget;
89
- export declare function analysisDepthForQuestion(plan: AnalysisQuestionPlan, reasoningEffort?: ReasoningEffort, requestedDepth?: CascadeAnalysisDepth): CascadeAnalysisDepth;
89
+ /**
90
+ * Classify a question by analytical shape (S1). This is the ONE signal that drives
91
+ * depth, tool budget, and the number of verification candidates — decoupled from
92
+ * `reasoningEffort` so that "think harder on a call" and "run the heavy verification
93
+ * pipeline N times" are no longer welded to the same knob:
94
+ * - `deep_research` — diagnosis / driver / anomaly / research workspace / trust gap
95
+ * - `multi_entity` — joins, >1 dimension, filtered breakdowns, ranked, comparisons
96
+ * - `lookup` — a single metric / single-table question (no joins → no fan-out)
97
+ */
98
+ export declare function questionShapeClass(plan: AnalysisQuestionPlan, intent?: string): ProposalToolBudgetClass;
99
+ /**
100
+ * How many diverse alternative candidates the self-consistency vote generates.
101
+ * `lookup` skips the vote entirely (0 — quick path, guarded by the grain ledger +
102
+ * validateSql); `multi_entity` does a lightweight 1-alternative agreement check;
103
+ * `deep_research` does the full 3-alternative vote. This is the class-B tradeoff:
104
+ * verification scales to the question's actual join/analysis complexity.
105
+ */
106
+ export declare function deepAlternativeCountForQuestion(plan: AnalysisQuestionPlan, intent?: string): number;
107
+ export declare function analysisDepthForQuestion(plan: AnalysisQuestionPlan, reasoningEffort?: ReasoningEffort, requestedDepth?: CascadeAnalysisDepth, intent?: string): CascadeAnalysisDepth;
90
108
  export declare function promptContextBudgetForQuestion(input: {
91
109
  questionPlan: AnalysisQuestionPlan;
92
110
  requestedDepth?: CascadeAnalysisDepth;
@@ -97,5 +115,5 @@ export declare function contextRetrievalBudgetForQuestion(input: {
97
115
  requestedDepth?: CascadeAnalysisDepth;
98
116
  reasoningEffort?: ReasoningEffort;
99
117
  }): ContextRetrievalBudget;
100
- export declare function proposalToolBudgetForQuestion(plan: AnalysisQuestionPlan, intent: string, options?: ProposalToolBudgetOptions): ProposalToolBudget;
118
+ export declare function proposalToolBudgetForQuestion(plan: AnalysisQuestionPlan, intent: string, _options?: ProposalToolBudgetOptions): ProposalToolBudget;
101
119
  //# sourceMappingURL=budgets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"budgets.d.ts","sourceRoot":"","sources":["../../src/cascade/budgets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"budgets.d.ts","sourceRoot":"","sources":["../../src/cascade/budgets.ts"],"names":[],"mappings":"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"}
@@ -109,33 +109,17 @@ export function mcpTier2RegroundRepairBudget(attemptsUsed = 0, model = {}) {
109
109
  nextTool: 'expand_context',
110
110
  };
111
111
  }
112
- export function analysisDepthForQuestion(plan, reasoningEffort, requestedDepth) {
113
- if (requestedDepth)
114
- return requestedDepth;
115
- if (reasoningEffort === 'high'
116
- || plan.needsResearchWorkspace
117
- || plan.mode === 'diagnose_change'
118
- || plan.mode === 'driver_breakdown'
119
- || plan.mode === 'anomaly') {
120
- return 'deep';
121
- }
122
- return 'quick';
123
- }
124
- export function promptContextBudgetForQuestion(input) {
125
- return analysisDepthForQuestion(input.questionPlan, input.reasoningEffort, input.requestedDepth) === 'deep'
126
- ? DEEP_PROMPT_CONTEXT_BUDGET
127
- : QUICK_PROMPT_CONTEXT_BUDGET;
128
- }
129
- export function contextRetrievalBudgetForQuestion(input) {
130
- const analysisDepth = analysisDepthForQuestion(input.questionPlan, input.reasoningEffort, input.requestedDepth);
131
- return analysisDepth === 'deep'
132
- ? { analysisDepth, strictness: 'exploratory', limit: 160 }
133
- : { analysisDepth, strictness: 'balanced', limit: 100 };
134
- }
135
- export function proposalToolBudgetForQuestion(plan, intent, options = {}) {
136
- if (options.analysisDepth === 'deep'
137
- || options.reasoningEffort === 'high'
138
- || plan.needsResearchWorkspace
112
+ /**
113
+ * Classify a question by analytical shape (S1). This is the ONE signal that drives
114
+ * depth, tool budget, and the number of verification candidates — decoupled from
115
+ * `reasoningEffort` so that "think harder on a call" and "run the heavy verification
116
+ * pipeline N times" are no longer welded to the same knob:
117
+ * - `deep_research` — diagnosis / driver / anomaly / research workspace / trust gap
118
+ * - `multi_entity` — joins, >1 dimension, filtered breakdowns, ranked, comparisons
119
+ * - `lookup` a single metric / single-table question (no joins → no fan-out)
120
+ */
121
+ export function questionShapeClass(plan, intent) {
122
+ if (plan.needsResearchWorkspace
139
123
  || plan.mode === 'diagnose_change'
140
124
  || plan.mode === 'driver_breakdown'
141
125
  || plan.mode === 'anomaly'
@@ -143,11 +127,7 @@ export function proposalToolBudgetForQuestion(plan, intent, options = {}) {
143
127
  || intent === 'driver_breakdown'
144
128
  || intent === 'anomaly_investigation'
145
129
  || intent === 'trust_gap_review') {
146
- return {
147
- maxToolCalls: 15,
148
- effortClass: 'deep_research',
149
- reason: 'deep analysis, diagnosis, anomaly, trust review, or research workspace request',
150
- };
130
+ return 'deep_research';
151
131
  }
152
132
  const shape = plan.requestedShape;
153
133
  const entityOrJoinShape = plan.entities.length > 0
@@ -158,18 +138,71 @@ export function proposalToolBudgetForQuestion(plan, intent, options = {}) {
158
138
  || plan.mode === 'comparison'
159
139
  || plan.mode === 'entity_profile'
160
140
  || plan.mode === 'entity_drilldown';
161
- if (entityOrJoinShape) {
162
- return {
163
- maxToolCalls: 8,
164
- effortClass: 'multi_entity',
165
- reason: 'multi-entity, ranked, filtered, comparison, profile, or drilldown shape',
166
- };
141
+ return entityOrJoinShape ? 'multi_entity' : 'lookup';
142
+ }
143
+ /**
144
+ * How many diverse alternative candidates the self-consistency vote generates.
145
+ * `lookup` skips the vote entirely (0 — quick path, guarded by the grain ledger +
146
+ * validateSql); `multi_entity` does a lightweight 1-alternative agreement check;
147
+ * `deep_research` does the full 3-alternative vote. This is the class-B tradeoff:
148
+ * verification scales to the question's actual join/analysis complexity.
149
+ */
150
+ export function deepAlternativeCountForQuestion(plan, intent) {
151
+ switch (questionShapeClass(plan, intent)) {
152
+ case 'deep_research': return 3;
153
+ case 'multi_entity': return 1;
154
+ default: return 0;
155
+ }
156
+ }
157
+ export function analysisDepthForQuestion(plan, reasoningEffort, requestedDepth, intent) {
158
+ // A user-selected depth (e.g. the "thinking" chip) always wins. Otherwise depth
159
+ // is decided by the question's SHAPE, not its reasoning effort — a single-table
160
+ // lookup runs the fast path even at high effort; a join/breakdown/diagnosis runs
161
+ // the verification path even at low effort. `reasoningEffort` is intentionally NOT
162
+ // consulted here (that is the S1 decouple).
163
+ if (requestedDepth)
164
+ return requestedDepth;
165
+ return questionShapeClass(plan, intent) === 'lookup' ? 'quick' : 'deep';
166
+ }
167
+ export function promptContextBudgetForQuestion(input) {
168
+ return analysisDepthForQuestion(input.questionPlan, input.reasoningEffort, input.requestedDepth) === 'deep'
169
+ ? DEEP_PROMPT_CONTEXT_BUDGET
170
+ : QUICK_PROMPT_CONTEXT_BUDGET;
171
+ }
172
+ export function contextRetrievalBudgetForQuestion(input) {
173
+ const analysisDepth = analysisDepthForQuestion(input.questionPlan, input.reasoningEffort, input.requestedDepth);
174
+ return analysisDepth === 'deep'
175
+ ? { analysisDepth, strictness: 'exploratory', limit: 160 }
176
+ : { analysisDepth, strictness: 'balanced', limit: 100 };
177
+ }
178
+ export function proposalToolBudgetForQuestion(plan, intent, _options = {}) {
179
+ // Tool budget follows the question's SHAPE, not its reasoning effort / analysis
180
+ // depth (the S1 decouple). Previously a high-effort or deep-depth signal forced
181
+ // the 15-call deep_research budget on every generated answer — which, combined
182
+ // with generated_answer defaulting to `high`, is what made simple questions slow.
183
+ switch (questionShapeClass(plan, intent)) {
184
+ case 'deep_research':
185
+ return {
186
+ // Research has its own orchestration route; generated-answer discovery
187
+ // remains bounded so a missed semantic match cannot trigger 15 serial
188
+ // provider round trips.
189
+ maxToolCalls: 8,
190
+ effortClass: 'deep_research',
191
+ reason: 'deep analysis, diagnosis, anomaly, trust review, or research workspace request',
192
+ };
193
+ case 'multi_entity':
194
+ return {
195
+ maxToolCalls: 4,
196
+ effortClass: 'multi_entity',
197
+ reason: 'multi-entity, ranked, filtered, comparison, profile, or drilldown shape',
198
+ };
199
+ default:
200
+ return {
201
+ maxToolCalls: 2,
202
+ effortClass: 'lookup',
203
+ reason: 'single metric or simple generated lookup',
204
+ };
167
205
  }
168
- return {
169
- maxToolCalls: 3,
170
- effortClass: 'lookup',
171
- reason: 'single metric or simple generated lookup',
172
- };
173
206
  }
174
207
  function laneRepairAttemptsUsed(state, kind) {
175
208
  return kind === 'reground'
@@ -1 +1 @@
1
- {"version":3,"file":"budgets.js","sourceRoot":"","sources":["../../src/cascade/budgets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"budgets.js","sourceRoot":"","sources":["../../src/cascade/budgets.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export type CascadeRequestedMode = 'auto' | 'ask' | 'research' | 'sql' | 'block' | 'app';
2
- export type CascadeRunRoute = 'conversation' | 'certified_answer' | 'generated_answer' | 'research' | 'sql_cell' | 'dql_block_draft' | 'app_build' | 'clarify' | 'blocked';
2
+ export type CascadeRunRoute = 'conversation' | 'certified_answer' | 'semantic_answer' | 'generated_answer' | 'research' | 'sql_cell' | 'dql_block_draft' | 'app_build' | 'clarify' | 'blocked';
3
3
  export type CascadeAction = 'answer' | 'clarify' | 'investigate' | 'compose_app' | 'converse';
4
4
  export type CascadeAnswerRouteTier = 'certified_block' | 'semantic_metric' | 'generated_sql' | 'business_context' | 'no_answer';
5
5
  export interface CascadeRouteRequest {
@@ -1 +1 @@
1
- {"version":3,"file":"route-policy.d.ts","sourceRoot":"","sources":["../../src/cascade/route-policy.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;AAEzF,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAClB,UAAU,GACV,UAAU,GACV,iBAAiB,GACjB,WAAW,GACX,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;AAC9F,MAAM,MAAM,sBAAsB,GAC9B,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,WAAW,CAAC;AAEhB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,oBAAoB,GAC7B,eAAe,CAmBjB;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAY/G"}
1
+ {"version":3,"file":"route-policy.d.ts","sourceRoot":"","sources":["../../src/cascade/route-policy.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;AAEzF,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,UAAU,GACV,UAAU,GACV,iBAAiB,GACjB,WAAW,GACX,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;AAC9F,MAAM,MAAM,sBAAsB,GAC9B,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,WAAW,CAAC;AAEhB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,oBAAoB,GAC7B,eAAe,CAmBjB;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAa/G"}
@@ -32,6 +32,7 @@ export function routeForCascadeAnswerTier(tier) {
32
32
  case 'business_context':
33
33
  return 'certified_answer';
34
34
  case 'semantic_metric':
35
+ return 'semantic_answer';
35
36
  case 'generated_sql':
36
37
  case 'no_answer':
37
38
  return 'generated_answer';
@@ -1 +1 @@
1
- {"version":3,"file":"route-policy.js","sourceRoot":"","sources":["../../src/cascade/route-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAgC9D,MAAM,UAAU,qBAAqB,CACnC,OAA4B,EAC5B,QAA8B;IAE9B,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC;IAC7C,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC3C,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC;IACtC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,iBAAiB,CAAC;IAC/C,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,WAAW,CAAC;IAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,cAAc,CAAC;IAE1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,wBAAwB,CAAC,QAAQ,CAAC;QAAE,OAAO,iBAAiB,CAAC;IACjE,IAAI,uBAAuB,CAAC,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAC;IACzD,IAAI,mBAAmB,CAAC,QAAQ,CAAC;QAAE,OAAO,WAAW,CAAC;IAEtD,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO,WAAW,CAAC;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO,UAAU,CAAC;IACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAEpD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAwC;IAChF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,iBAAiB,CAAC;QACvB,KAAK,kBAAkB;YACrB,OAAO,kBAAkB,CAAC;QAC5B,KAAK,iBAAiB,CAAC;QACvB,KAAK,eAAe,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,kBAAkB,CAAC;QAC5B;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB;IAC/C,OAAO,2EAA2E,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAgB;IAChD,OAAO,8FAA8F,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvH,CAAC"}
1
+ {"version":3,"file":"route-policy.js","sourceRoot":"","sources":["../../src/cascade/route-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAiC9D,MAAM,UAAU,qBAAqB,CACnC,OAA4B,EAC5B,QAA8B;IAE9B,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC;IAC7C,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC3C,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC;IACtC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,iBAAiB,CAAC;IAC/C,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,WAAW,CAAC;IAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,cAAc,CAAC;IAE1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,wBAAwB,CAAC,QAAQ,CAAC;QAAE,OAAO,iBAAiB,CAAC;IACjE,IAAI,uBAAuB,CAAC,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAC;IACzD,IAAI,mBAAmB,CAAC,QAAQ,CAAC;QAAE,OAAO,WAAW,CAAC;IAEtD,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO,WAAW,CAAC;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO,UAAU,CAAC;IACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAEpD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAwC;IAChF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,iBAAiB,CAAC;QACvB,KAAK,kBAAkB;YACrB,OAAO,kBAAkB,CAAC;QAC5B,KAAK,iBAAiB;YACpB,OAAO,iBAAiB,CAAC;QAC3B,KAAK,eAAe,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,kBAAkB,CAAC;QAC5B;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB;IAC/C,OAAO,2EAA2E,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAgB;IAChD,OAAO,8FAA8F,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvH,CAAC"}
@@ -70,6 +70,27 @@ export declare class OpenAIEmbeddingProvider implements EmbeddingProvider {
70
70
  constructor(options: OpenAIEmbeddingOptions);
71
71
  embed(texts: string[]): Promise<number[][]>;
72
72
  }
73
+ export interface OllamaEmbeddingOptions {
74
+ endpoint?: string;
75
+ model?: string;
76
+ dimensions?: number;
77
+ fetchImpl?: EmbeddingFetch;
78
+ }
79
+ /**
80
+ * Local-first embeddings via an Ollama server (raw fetch to `/api/embed`, no SDK).
81
+ * Opt-in: only constructed when an Ollama endpoint is configured. Keeps DQL fully
82
+ * local — a stakeholder can run a real embedder on their own machine with no data
83
+ * leaving it. Falls back to the hashed provider at the resolver level when absent.
84
+ */
85
+ export declare class OllamaEmbeddingProvider implements EmbeddingProvider {
86
+ readonly id: string;
87
+ readonly dimensions: number;
88
+ private readonly endpoint;
89
+ private readonly model;
90
+ private readonly fetchImpl;
91
+ constructor(options?: OllamaEmbeddingOptions);
92
+ embed(texts: string[]): Promise<number[][]>;
93
+ }
73
94
  /**
74
95
  * Content-hash cache around any provider so repeated texts (block example
75
96
  * questions, metric labels) are embedded once. Bounded LRU-ish by insertion order.
@@ -84,20 +105,62 @@ export declare class CachingEmbeddingProvider implements EmbeddingProvider {
84
105
  embed(texts: string[]): Promise<number[][]>;
85
106
  private put;
86
107
  }
108
+ /**
109
+ * Wrap a real provider so a transient failure (Ollama down, API error) degrades to
110
+ * the deterministic hashed provider instead of breaking retrieval. A single embed()
111
+ * batch is all-real or all-fallback, so dimensions stay consistent within a call.
112
+ */
113
+ export declare class ResilientEmbeddingProvider implements EmbeddingProvider {
114
+ readonly id: string;
115
+ readonly dimensions: number;
116
+ private readonly inner;
117
+ private readonly fallback;
118
+ private warned;
119
+ constructor(inner: EmbeddingProvider, fallback?: EmbeddingProvider);
120
+ embed(texts: string[]): Promise<number[][]>;
121
+ }
87
122
  export interface EmbeddingResolveOptions {
123
+ /** Local Ollama endpoint (preferred for local-first OSS), e.g. http://127.0.0.1:11434. */
124
+ ollamaEndpoint?: string;
125
+ ollamaModel?: string;
88
126
  /** API key for an OpenAI-compatible embeddings endpoint. */
89
127
  openaiApiKey?: string;
90
128
  model?: string;
91
129
  baseUrl?: string;
92
130
  fetchImpl?: EmbeddingFetch;
93
131
  }
132
+ export interface LocalOllamaEmbeddings {
133
+ endpoint: string;
134
+ model: string;
135
+ }
94
136
  /**
95
- * Pick the best available embedding provider: a real OpenAI-compatible embedder
96
- * when an API key is configured (wrapped in a content-hash cache), else the safe
97
- * deterministic hashed-token provider. This is the single place config chooses an
98
- * embedder, so retrieval/matching call sites just call resolveEmbeddingProvider().
137
+ * Zero-config semantic search: probe a locally-running Ollama for a pulled embedding
138
+ * model, so OSS users who have Ollama get real semantic recall without setting any
139
+ * env var. Returns the endpoint + the first available embedding model, or null when
140
+ * Ollama isn't reachable or has no embedding model pulled. Deliberately NOT called by
141
+ * the library's default resolver (that stays deterministic-hashed for tests/CI) — the
142
+ * app runtime calls this once at startup and exports the result via env.
99
143
  */
144
+ export type ProbeFetch = (url: string, init: {
145
+ method: string;
146
+ signal?: AbortSignal;
147
+ }) => Promise<{
148
+ ok: boolean;
149
+ status: number;
150
+ json: () => Promise<unknown>;
151
+ }>;
152
+ export declare function probeLocalOllamaEmbeddings(endpoint?: string, fetchImpl?: ProbeFetch, timeoutMs?: number): Promise<LocalOllamaEmbeddings | null>;
100
153
  export declare function resolveEmbeddingProvider(options?: EmbeddingResolveOptions): EmbeddingProvider;
154
+ /**
155
+ * Read embedding config from environment (local-first). Lets retrieval/matching
156
+ * light up a real embedder without threading config through every call site.
157
+ * `DQL_OLLAMA_EMBED_URL` / `DQL_OLLAMA_EMBED_MODEL` for Ollama; `DQL_OPENAI_API_KEY`
158
+ * (or `OPENAI_API_KEY`) for an OpenAI-compatible endpoint. Absent ⇒ hashed default.
159
+ */
160
+ export declare function embeddingOptionsFromEnv(env?: Record<string, string | undefined>): EmbeddingResolveOptions;
161
+ export declare function envEmbeddingProvider(env?: Record<string, string | undefined>): EmbeddingProvider;
162
+ /** Test/runtime hook used when provider settings change without restarting. */
163
+ export declare function clearEnvEmbeddingProviderCache(): void;
101
164
  export interface HybridRankItem<T> {
102
165
  item: T;
103
166
  /** Text the item is embedded/searched on. */
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/embeddings/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/embeddings/provider.ts"],"names":[],"mappings":"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"}
@@ -116,6 +116,41 @@ export class OpenAIEmbeddingProvider {
116
116
  return out;
117
117
  }
118
118
  }
119
+ /**
120
+ * Local-first embeddings via an Ollama server (raw fetch to `/api/embed`, no SDK).
121
+ * Opt-in: only constructed when an Ollama endpoint is configured. Keeps DQL fully
122
+ * local — a stakeholder can run a real embedder on their own machine with no data
123
+ * leaving it. Falls back to the hashed provider at the resolver level when absent.
124
+ */
125
+ export class OllamaEmbeddingProvider {
126
+ id;
127
+ dimensions;
128
+ endpoint;
129
+ model;
130
+ fetchImpl;
131
+ constructor(options = {}) {
132
+ this.endpoint = (options.endpoint ?? 'http://127.0.0.1:11434').replace(/\/$/, '');
133
+ this.model = options.model ?? 'nomic-embed-text';
134
+ this.dimensions = options.dimensions ?? 768;
135
+ this.id = `ollama:${this.model}`;
136
+ this.fetchImpl = options.fetchImpl ?? ((url, init) => fetch(url, init));
137
+ }
138
+ async embed(texts) {
139
+ if (texts.length === 0)
140
+ return [];
141
+ const response = await this.fetchImpl(`${this.endpoint}/api/embed`, {
142
+ method: 'POST',
143
+ headers: { 'content-type': 'application/json' },
144
+ body: JSON.stringify({ model: this.model, input: texts }),
145
+ });
146
+ if (!response.ok)
147
+ throw new Error(`Ollama embedding request failed (${response.status})`);
148
+ const payload = await response.json();
149
+ const embeddings = payload.embeddings ?? [];
150
+ // Ollama returns embeddings in request order.
151
+ return texts.map((_, i) => embeddings[i] ?? []);
152
+ }
153
+ }
119
154
  /**
120
155
  * Content-hash cache around any provider so repeated texts (block example
121
156
  * questions, metric labels) are embedded once. Bounded LRU-ish by insertion order.
@@ -156,22 +191,148 @@ export class CachingEmbeddingProvider {
156
191
  }
157
192
  }
158
193
  /**
159
- * Pick the best available embedding provider: a real OpenAI-compatible embedder
160
- * when an API key is configured (wrapped in a content-hash cache), else the safe
161
- * deterministic hashed-token provider. This is the single place config chooses an
162
- * embedder, so retrieval/matching call sites just call resolveEmbeddingProvider().
194
+ * Wrap a real provider so a transient failure (Ollama down, API error) degrades to
195
+ * the deterministic hashed provider instead of breaking retrieval. A single embed()
196
+ * batch is all-real or all-fallback, so dimensions stay consistent within a call.
163
197
  */
198
+ export class ResilientEmbeddingProvider {
199
+ id;
200
+ dimensions;
201
+ inner;
202
+ fallback;
203
+ warned = false;
204
+ constructor(inner, fallback = defaultEmbeddingProvider()) {
205
+ this.inner = inner;
206
+ this.fallback = fallback;
207
+ this.id = `resilient:${inner.id}`;
208
+ this.dimensions = inner.dimensions;
209
+ }
210
+ async embed(texts) {
211
+ try {
212
+ return await this.inner.embed(texts);
213
+ }
214
+ catch (err) {
215
+ if (!this.warned) {
216
+ this.warned = true;
217
+ console.warn(`Embedding provider ${this.inner.id} failed; falling back to hashed embeddings. ${err.message}`);
218
+ }
219
+ return this.fallback.embed(texts);
220
+ }
221
+ }
222
+ }
223
+ /**
224
+ * Pick the best available embedding provider: a LOCAL Ollama embedder when an
225
+ * endpoint is configured (preferred — keeps data on-machine), else a real
226
+ * OpenAI-compatible embedder when an API key is set, else the safe deterministic
227
+ * hashed-token provider. All real providers are wrapped in a content-hash cache.
228
+ * This is the single place config chooses an embedder, so retrieval/matching call
229
+ * sites just call resolveEmbeddingProvider().
230
+ */
231
+ /** Default local Ollama endpoint auto-detection targets. */
232
+ const DEFAULT_OLLAMA_ENDPOINT = 'http://127.0.0.1:11434';
233
+ const OLLAMA_EMBED_MODELS = ['nomic-embed-text', 'mxbai-embed-large', 'all-minilm', 'bge-m3', 'snowflake-arctic-embed'];
234
+ export async function probeLocalOllamaEmbeddings(endpoint = DEFAULT_OLLAMA_ENDPOINT, fetchImpl = ((url, init) => fetch(url, init)), timeoutMs = 400) {
235
+ const base = endpoint.replace(/\/$/, '');
236
+ try {
237
+ const controller = new AbortController();
238
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
239
+ let response;
240
+ try {
241
+ response = await fetchImpl(`${base}/api/tags`, { method: 'GET', signal: controller.signal });
242
+ }
243
+ finally {
244
+ clearTimeout(timer);
245
+ }
246
+ if (!response.ok)
247
+ return null;
248
+ const payload = await response.json();
249
+ const installed = (payload.models ?? []).map((m) => (m.name ?? m.model ?? '').toLowerCase());
250
+ // Prefer a known embedding model; match on the name stem so "nomic-embed-text:latest" counts.
251
+ const match = OLLAMA_EMBED_MODELS.find((known) => installed.some((name) => name.startsWith(known)));
252
+ const model = match
253
+ ?? installed.find((name) => name.includes('embed'))?.replace(/:.*$/, '');
254
+ return model ? { endpoint: base, model } : null;
255
+ }
256
+ catch {
257
+ return null; // Ollama not running / not reachable — caller falls back to hashed.
258
+ }
259
+ }
164
260
  export function resolveEmbeddingProvider(options = {}) {
261
+ if (options.ollamaEndpoint) {
262
+ return new CachingEmbeddingProvider(new ResilientEmbeddingProvider(new OllamaEmbeddingProvider({
263
+ endpoint: options.ollamaEndpoint,
264
+ ...(options.ollamaModel ? { model: options.ollamaModel } : {}),
265
+ ...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
266
+ })));
267
+ }
165
268
  if (options.openaiApiKey) {
166
- return new CachingEmbeddingProvider(new OpenAIEmbeddingProvider({
269
+ return new CachingEmbeddingProvider(new ResilientEmbeddingProvider(new OpenAIEmbeddingProvider({
167
270
  apiKey: options.openaiApiKey,
168
271
  ...(options.model ? { model: options.model } : {}),
169
272
  ...(options.baseUrl ? { baseUrl: options.baseUrl } : {}),
170
273
  ...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
171
- }));
274
+ })));
172
275
  }
173
276
  return defaultEmbeddingProvider();
174
277
  }
278
+ /**
279
+ * Read embedding config from environment (local-first). Lets retrieval/matching
280
+ * light up a real embedder without threading config through every call site.
281
+ * `DQL_OLLAMA_EMBED_URL` / `DQL_OLLAMA_EMBED_MODEL` for Ollama; `DQL_OPENAI_API_KEY`
282
+ * (or `OPENAI_API_KEY`) for an OpenAI-compatible endpoint. Absent ⇒ hashed default.
283
+ */
284
+ export function embeddingOptionsFromEnv(env = process.env) {
285
+ const options = {};
286
+ if (env.DQL_OLLAMA_EMBED_URL) {
287
+ options.ollamaEndpoint = env.DQL_OLLAMA_EMBED_URL;
288
+ if (env.DQL_OLLAMA_EMBED_MODEL)
289
+ options.ollamaModel = env.DQL_OLLAMA_EMBED_MODEL;
290
+ }
291
+ else if (env.DQL_OPENAI_API_KEY || env.OPENAI_API_KEY) {
292
+ options.openaiApiKey = env.DQL_OPENAI_API_KEY ?? env.OPENAI_API_KEY;
293
+ if (env.DQL_OPENAI_EMBED_MODEL)
294
+ options.model = env.DQL_OPENAI_EMBED_MODEL;
295
+ }
296
+ return options;
297
+ }
298
+ /**
299
+ * The embedding provider configured via environment (Ollama → OpenAI → hashed).
300
+ * Retrieval/matching call sites use this so a project that configures a real local
301
+ * embedder gets true semantic recall, while offline/unconfigured projects stay on
302
+ * the deterministic hashed provider with byte-identical behavior.
303
+ */
304
+ let cachedEnvEmbeddingProvider;
305
+ /**
306
+ * Stable identity for environment-selected embedding configuration. API keys are
307
+ * hashed rather than retained in the cache key so diagnostics can never expose
308
+ * the credential. Keeping one provider instance is important: real providers are
309
+ * wrapped in `CachingEmbeddingProvider`, and recreating that wrapper at every
310
+ * retrieval call silently discarded the corpus cache between questions.
311
+ */
312
+ function envEmbeddingProviderKey(options) {
313
+ const credentialHash = options.openaiApiKey
314
+ ? createHash('sha1').update(options.openaiApiKey).digest('hex')
315
+ : '';
316
+ return JSON.stringify({
317
+ ollamaEndpoint: options.ollamaEndpoint ?? '',
318
+ ollamaModel: options.ollamaModel ?? '',
319
+ openaiCredential: credentialHash,
320
+ model: options.model ?? '',
321
+ baseUrl: options.baseUrl ?? '',
322
+ });
323
+ }
324
+ export function envEmbeddingProvider(env = process.env) {
325
+ const options = embeddingOptionsFromEnv(env);
326
+ const key = envEmbeddingProviderKey(options);
327
+ if (cachedEnvEmbeddingProvider?.key !== key) {
328
+ cachedEnvEmbeddingProvider = { key, provider: resolveEmbeddingProvider(options) };
329
+ }
330
+ return cachedEnvEmbeddingProvider.provider;
331
+ }
332
+ /** Test/runtime hook used when provider settings change without restarting. */
333
+ export function clearEnvEmbeddingProviderCache() {
334
+ cachedEnvEmbeddingProvider = undefined;
335
+ }
175
336
  /**
176
337
  * Blend FTS5 relevance with embedding cosine similarity. When `alpha` is 0 (the
177
338
  * default) this is a pure pass-through of the FTS ordering — FTS5 stays the safe
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/embeddings/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/embeddings/provider.ts"],"names":[],"mappings":"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"}