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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/agent-run-engine.d.ts +177 -3
  2. package/dist/agent-run-engine.d.ts.map +1 -1
  3. package/dist/agent-run-engine.js +2061 -57
  4. package/dist/agent-run-engine.js.map +1 -1
  5. package/dist/agent-run-gates.d.ts.map +1 -1
  6. package/dist/agent-run-gates.js +51 -3
  7. package/dist/agent-run-gates.js.map +1 -1
  8. package/dist/agent-run-store.d.ts.map +1 -1
  9. package/dist/agent-run-store.js +544 -9
  10. package/dist/agent-run-store.js.map +1 -1
  11. package/dist/agentic/analyst-loop.d.ts +2 -0
  12. package/dist/agentic/analyst-loop.d.ts.map +1 -1
  13. package/dist/agentic/analyst-loop.js +41 -4
  14. package/dist/agentic/analyst-loop.js.map +1 -1
  15. package/dist/agentic/ledger-tools.d.ts.map +1 -1
  16. package/dist/agentic/ledger-tools.js +8 -1
  17. package/dist/agentic/ledger-tools.js.map +1 -1
  18. package/dist/agentic/orchestrator-policy.d.ts +3 -1
  19. package/dist/agentic/orchestrator-policy.d.ts.map +1 -1
  20. package/dist/agentic/orchestrator-policy.js +1 -1
  21. package/dist/agentic/orchestrator-policy.js.map +1 -1
  22. package/dist/agentic/tool-loop.d.ts +13 -1
  23. package/dist/agentic/tool-loop.d.ts.map +1 -1
  24. package/dist/agentic/tool-loop.js +441 -32
  25. package/dist/agentic/tool-loop.js.map +1 -1
  26. package/dist/analytical-frame.d.ts +19 -0
  27. package/dist/analytical-frame.d.ts.map +1 -1
  28. package/dist/analytical-frame.js +170 -12
  29. package/dist/analytical-frame.js.map +1 -1
  30. package/dist/analytical-orchestration.d.ts +949 -10
  31. package/dist/analytical-orchestration.d.ts.map +1 -1
  32. package/dist/analytical-orchestration.js +499 -56
  33. package/dist/analytical-orchestration.js.map +1 -1
  34. package/dist/answer-loop.d.ts +166 -2
  35. package/dist/answer-loop.d.ts.map +1 -1
  36. package/dist/answer-loop.js +654 -18
  37. package/dist/answer-loop.js.map +1 -1
  38. package/dist/answer-shape.d.ts +27 -0
  39. package/dist/answer-shape.d.ts.map +1 -1
  40. package/dist/answer-shape.js +55 -0
  41. package/dist/answer-shape.js.map +1 -1
  42. package/dist/ask-observability/instrumentation.d.ts.map +1 -1
  43. package/dist/ask-observability/instrumentation.js +52 -1
  44. package/dist/ask-observability/instrumentation.js.map +1 -1
  45. package/dist/ask-observability/portable.js +562 -0
  46. package/dist/ask-observability/portable.js.map +1 -1
  47. package/dist/ask-observability/types.d.ts +26 -3
  48. package/dist/ask-observability/types.d.ts.map +1 -1
  49. package/dist/ask-observability/types.js.map +1 -1
  50. package/dist/ask-runtime/ask-agent-runtime-v2.d.ts +850 -0
  51. package/dist/ask-runtime/ask-agent-runtime-v2.d.ts.map +1 -0
  52. package/dist/ask-runtime/ask-agent-runtime-v2.js +1716 -0
  53. package/dist/ask-runtime/ask-agent-runtime-v2.js.map +1 -0
  54. package/dist/ask-runtime/ask-analyst-runtime.d.ts +95 -0
  55. package/dist/ask-runtime/ask-analyst-runtime.d.ts.map +1 -0
  56. package/dist/ask-runtime/ask-analyst-runtime.js +8280 -0
  57. package/dist/ask-runtime/ask-analyst-runtime.js.map +1 -0
  58. package/dist/conversation/session-store.d.ts +31 -0
  59. package/dist/conversation/session-store.d.ts.map +1 -1
  60. package/dist/conversation/session-store.js +38 -0
  61. package/dist/conversation/session-store.js.map +1 -1
  62. package/dist/conversation/snapshot.d.ts +4 -1
  63. package/dist/conversation/snapshot.d.ts.map +1 -1
  64. package/dist/conversation/snapshot.js +85 -3
  65. package/dist/conversation/snapshot.js.map +1 -1
  66. package/dist/conversation/turn-trust.d.ts.map +1 -1
  67. package/dist/conversation/turn-trust.js +2 -0
  68. package/dist/conversation/turn-trust.js.map +1 -1
  69. package/dist/embeddings/provider.d.ts +1 -0
  70. package/dist/embeddings/provider.d.ts.map +1 -1
  71. package/dist/embeddings/provider.js +18 -0
  72. package/dist/embeddings/provider.js.map +1 -1
  73. package/dist/generated-analytical-proposal.js +37 -2
  74. package/dist/generated-analytical-proposal.js.map +1 -1
  75. package/dist/index.d.ts +15 -8
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +9 -4
  78. package/dist/index.js.map +1 -1
  79. package/dist/intent-controller.d.ts +77 -1
  80. package/dist/intent-controller.d.ts.map +1 -1
  81. package/dist/intent-controller.js +1 -1
  82. package/dist/intent-controller.js.map +1 -1
  83. package/dist/kg/build.js +32 -2
  84. package/dist/kg/build.js.map +1 -1
  85. package/dist/meaning-resolution.d.ts +129 -0
  86. package/dist/meaning-resolution.d.ts.map +1 -1
  87. package/dist/meaning-resolution.js +108 -15
  88. package/dist/meaning-resolution.js.map +1 -1
  89. package/dist/metadata/analysis-planner.js +57 -6
  90. package/dist/metadata/analysis-planner.js.map +1 -1
  91. package/dist/metadata/catalog.d.ts +14 -0
  92. package/dist/metadata/catalog.d.ts.map +1 -1
  93. package/dist/metadata/catalog.js +28 -1
  94. package/dist/metadata/catalog.js.map +1 -1
  95. package/dist/metadata/meaning-evidence.d.ts +19 -0
  96. package/dist/metadata/meaning-evidence.d.ts.map +1 -1
  97. package/dist/metadata/meaning-evidence.js +113 -6
  98. package/dist/metadata/meaning-evidence.js.map +1 -1
  99. package/dist/provider-egress.d.ts +4 -1
  100. package/dist/provider-egress.d.ts.map +1 -1
  101. package/dist/provider-egress.js +50 -5
  102. package/dist/provider-egress.js.map +1 -1
  103. package/dist/providers/claude.d.ts +2 -2
  104. package/dist/providers/claude.d.ts.map +1 -1
  105. package/dist/providers/claude.js +191 -28
  106. package/dist/providers/claude.js.map +1 -1
  107. package/dist/providers/index.d.ts +1 -1
  108. package/dist/providers/index.d.ts.map +1 -1
  109. package/dist/providers/index.js.map +1 -1
  110. package/dist/providers/openai.d.ts +2 -2
  111. package/dist/providers/openai.d.ts.map +1 -1
  112. package/dist/providers/openai.js +191 -21
  113. package/dist/providers/openai.js.map +1 -1
  114. package/dist/providers/types.d.ts +79 -1
  115. package/dist/providers/types.d.ts.map +1 -1
  116. package/dist/providers/types.js.map +1 -1
  117. package/dist/requirement-clauses.d.ts +23 -0
  118. package/dist/requirement-clauses.d.ts.map +1 -0
  119. package/dist/requirement-clauses.js +70 -0
  120. package/dist/requirement-clauses.js.map +1 -0
  121. package/dist/resolved-analytical-plan.d.ts.map +1 -1
  122. package/dist/resolved-analytical-plan.js +201 -15
  123. package/dist/resolved-analytical-plan.js.map +1 -1
  124. package/dist/router.d.ts +109 -2
  125. package/dist/router.d.ts.map +1 -1
  126. package/dist/router.js +753 -76
  127. package/dist/router.js.map +1 -1
  128. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- import type { AgentProvider, AgentMessage, AgentToolDefinition, ProviderToolLoopOptions, ProviderRunOptions } from './types.js';
1
+ import type { AgentProvider, AgentMessage, AgentToolDefinition, NativeToolLoopResult, ProviderToolLoopOptions, ProviderRunOptions } from './types.js';
2
2
  /**
3
3
  * OpenAI / Chat Completions-compatible provider. Reads OPENAI_API_KEY plus
4
4
  * an optional OPENAI_BASE_URL (e.g. point at Azure OpenAI or vLLM).
@@ -17,7 +17,7 @@ export declare class OpenAIProvider implements AgentProvider {
17
17
  });
18
18
  available(): Promise<boolean>;
19
19
  generate(messages: AgentMessage[], options?: ProviderRunOptions): Promise<string>;
20
- generateWithTools(messages: AgentMessage[], tools: AgentToolDefinition[], options?: ProviderToolLoopOptions): Promise<string>;
20
+ generateWithTools(messages: AgentMessage[], tools: AgentToolDefinition[], options?: ProviderToolLoopOptions): Promise<NativeToolLoopResult>;
21
21
  generateStream(messages: AgentMessage[], options: ProviderRunOptions, onDelta: (delta: string) => void): Promise<string>;
22
22
  }
23
23
  //# sourceMappingURL=openai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAgBpB;;;GAGG;AACH,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;gBAE5B,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO;IAO/F,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;IAyDrF,iBAAiB,CACrB,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC;IAoLZ,cAAc,CAClB,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,MAAM,CAAC;CAgDnB"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,mBAAmB,EAEnB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAgBpB;;;GAGG;AACH,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;gBAE5B,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO;IAO/F,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;IAyDrF,iBAAiB,CACrB,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,oBAAoB,CAAC;IA6S1B,cAAc,CAClB,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,MAAM,CAAC;CAgDnB"}
@@ -105,21 +105,24 @@ export class OpenAIProvider {
105
105
  role: message.role,
106
106
  content: message.content,
107
107
  }));
108
- const toolDefs = tools.map((tool) => ({
109
- type: 'function',
110
- function: {
111
- name: tool.name,
112
- description: tool.description,
113
- parameters: tool.inputSchema,
114
- },
115
- }));
116
108
  const dispatchLimit = Math.max(1, Math.min(30, options.maxProviderDispatches ?? DEFAULT_PROVIDER_DISPATCH_LIMIT));
117
- const maxToolCalls = Math.max(0, Math.min(dispatchLimit <= 2 ? 4 : 30, options.maxToolCalls ?? 8));
109
+ const requestedToolBudget = Math.max(0, Math.min(dispatchLimit <= 2 ? 4 : 30, options.maxToolCalls ?? 8));
110
+ // Keep one physical provider turn available for a controller-selected
111
+ // terminal action when the host publishes a live V2 tool policy. Existing
112
+ // callers without that policy retain their prior native-loop behavior.
113
+ const dynamicToolPolicy = Boolean(options.getCurrentToolPolicy);
114
+ const ordinaryToolBudget = dynamicToolPolicy
115
+ ? Math.min(requestedToolBudget, Math.max(0, dispatchLimit - 1))
116
+ : requestedToolBudget;
118
117
  let toolCallsUsed = 0;
119
118
  let lastText = '';
120
119
  let useMaxCompletionTokens = false;
121
120
  let includeTemperature = true;
122
121
  let dispatches = 0;
122
+ const requiresPostExecutionFinish = dynamicToolPolicy
123
+ && tools.some((tool) => tool.name === 'finish_answer');
124
+ let requiredActionSignature = '';
125
+ let requiredActionProseRetries = 0;
123
126
  const send = (body) => {
124
127
  dispatches += 1;
125
128
  return fetchProviderHttpDispatch({
@@ -154,11 +157,62 @@ export class OpenAIProvider {
154
157
  return finalMessage.toolCalls.length === 0 ? finalMessage.content?.trim() ?? '' : '';
155
158
  };
156
159
  for (;;) {
160
+ const currentPolicy = nativeToolPolicy(options, tools);
161
+ const nextRequiredActionSignature = [...currentPolicy.terminalActionToolNames].sort().join('|');
162
+ if (nextRequiredActionSignature !== requiredActionSignature) {
163
+ requiredActionSignature = nextRequiredActionSignature;
164
+ requiredActionProseRetries = 0;
165
+ }
166
+ const narrationControlRound = currentPolicy.terminalActionToolNames.has('finish_answer');
167
+ // A clarification is its own host terminal, while a selected execution
168
+ // action needs the final narration send. Keep that distinction in the
169
+ // physical reservation so invalid clarification options remain a
170
+ // recoverable observation instead of consuming a nonexistent finish
171
+ // slot.
172
+ const terminalExecutionAction = [...currentPolicy.terminalActionToolNames]
173
+ .some((name) => !isAskV2TerminalControlTool(name));
174
+ const reservePostExecutionNarration = requiresPostExecutionFinish && terminalExecutionAction;
175
+ // An execution decision needs one remaining physical send for the
176
+ // post-result finish/narration control. At the last tool-followup slot,
177
+ // expose only the host-approved execution action. This does not select
178
+ // a route: it prevents another inspection from consuming the narration
179
+ // reserve after the V2 kernel already established its safe choices.
180
+ const finalExecutionActionRound = !narrationControlRound
181
+ && dispatches >= Math.max(0, dispatchLimit - (reservePostExecutionNarration ? 2 : 1));
182
+ const terminalActionRound = dynamicToolPolicy
183
+ && currentPolicy.terminalActionToolNames.size > 0
184
+ && (toolCallsUsed >= ordinaryToolBudget
185
+ || (narrationControlRound ? dispatches >= dispatchLimit - 1 : finalExecutionActionRound));
186
+ if (dynamicToolPolicy && toolCallsUsed >= ordinaryToolBudget && !terminalActionRound) {
187
+ return forcedFinal();
188
+ }
189
+ const roundTools = terminalActionRound
190
+ ? currentPolicy.tools.filter((tool) => currentPolicy.terminalActionToolNames.has(tool.name))
191
+ : currentPolicy.tools;
192
+ const roundToolMap = new Map(roundTools.map((tool) => [tool.name, tool]));
193
+ const roundToolDefs = roundTools.map((tool) => ({
194
+ type: 'function',
195
+ function: {
196
+ name: tool.name,
197
+ description: tool.description,
198
+ parameters: tool.inputSchema,
199
+ },
200
+ }));
201
+ const policyInstruction = currentPolicy.instruction?.trim();
202
+ if (policyInstruction) {
203
+ chatMessages.push({ role: 'system', content: policyInstruction });
204
+ }
157
205
  const bodyBase = {
158
206
  model,
159
207
  messages: chatMessages,
160
- tools: toolDefs,
161
- tool_choice: 'auto',
208
+ tools: roundToolDefs,
209
+ // When the host has narrowed the next V2 action to one execution or
210
+ // host terminal control, make that contract native rather than hoping
211
+ // the model follows prose. The tool itself still validates opaque IDs
212
+ // and only freezes after authorization.
213
+ tool_choice: dynamicToolPolicy && currentPolicy.terminalActionToolNames.size === 1
214
+ ? { type: 'function', function: { name: [...currentPolicy.terminalActionToolNames][0] } }
215
+ : 'auto',
162
216
  ...openaiReasoning(model, options),
163
217
  };
164
218
  const body = {
@@ -167,7 +221,16 @@ export class OpenAIProvider {
167
221
  };
168
222
  if (includeTemperature)
169
223
  body.temperature = options.temperature ?? 0.2;
170
- const res = await send(body);
224
+ let res;
225
+ try {
226
+ res = await send(body);
227
+ }
228
+ catch (error) {
229
+ const terminal = nativeToolLoopStopForError(error, toolCallsUsed);
230
+ if (terminal)
231
+ return terminal;
232
+ throw error;
233
+ }
171
234
  if (!res.ok) {
172
235
  const errorBody = await res.text().catch(() => res.statusText);
173
236
  if (!useMaxCompletionTokens && shouldRetryWithMaxCompletionTokens(errorBody)) {
@@ -181,21 +244,49 @@ export class OpenAIProvider {
181
244
  throw new Error(`openai: ${res.status} ${errorBody}`);
182
245
  }
183
246
  const message = extractOpenAIChatMessage(await res.json());
247
+ if (!message.toolCalls.length) {
248
+ // A no-tool/prose reply cannot escape a host-required V2 action.
249
+ // Discard it and re-dispatch while a physical controller send remains.
250
+ if (dynamicToolPolicy && currentPolicy.terminalActionToolNames.size > 0) {
251
+ // A final admitted send that returns prose has no physical retry
252
+ // left. Keep it a dispatch-budget terminal so the V2 lane can
253
+ // preserve an already validated result with deterministic facts;
254
+ // only two ignored narrowed actions are an invalid tool response.
255
+ if (dispatches >= dispatchLimit) {
256
+ return nativeToolLoopStop('provider_dispatch_budget_exhausted', '', toolCallsUsed);
257
+ }
258
+ if (requiredActionProseRetries >= 1) {
259
+ return nativeToolLoopStop('invalid_tool_response', '', toolCallsUsed);
260
+ }
261
+ requiredActionProseRetries += 1;
262
+ chatMessages.push({
263
+ role: 'user',
264
+ content: `Controller progression required. Call exactly one of: ${[...currentPolicy.terminalActionToolNames].join(', ')}. Do not answer in prose.`,
265
+ });
266
+ continue;
267
+ }
268
+ if (message.content)
269
+ lastText = message.content;
270
+ return message.content ?? lastText;
271
+ }
184
272
  if (message.content)
185
273
  lastText = message.content;
186
- if (!message.toolCalls.length)
187
- return message.content ?? lastText;
188
- if (toolCallsUsed + message.toolCalls.length > maxToolCalls) {
274
+ const roundToolBudget = terminalActionRound ? ordinaryToolBudget + 1 : ordinaryToolBudget;
275
+ const invalidTerminalAction = terminalActionRound && (message.toolCalls.length !== 1 || !currentPolicy.terminalActionToolNames.has(message.toolCalls[0].name));
276
+ if (invalidTerminalAction || toolCallsUsed + message.toolCalls.length > roundToolBudget) {
189
277
  options.onToolCall?.({
190
278
  name: 'tool_budget_exhausted',
191
279
  input: {
192
280
  requestedToolCalls: message.toolCalls.map((call) => call.name),
193
- maxToolCalls,
281
+ maxToolCalls: roundToolBudget,
194
282
  toolCallsUsed,
195
283
  },
196
284
  output: { error: `Tool-call budget exhausted after ${toolCallsUsed} call(s).` },
197
285
  isError: true,
198
286
  });
287
+ if (dynamicToolPolicy) {
288
+ return nativeToolLoopStop('tool_budget_exhausted', '', toolCallsUsed);
289
+ }
199
290
  // Graceful final turn: ask the model to answer NOW from what the prior tool
200
291
  // calls already returned — with `tools`/`tool_choice` OMITTED so it cannot
201
292
  // request another tool and the loop is guaranteed to terminate.
@@ -226,10 +317,11 @@ export class OpenAIProvider {
226
317
  });
227
318
  for (const call of message.toolCalls) {
228
319
  toolCallsUsed += 1;
229
- const tool = toolMap.get(call.name);
320
+ const tool = roundToolMap.get(call.name) ?? (dynamicToolPolicy ? undefined : toolMap.get(call.name));
230
321
  const args = parseToolArguments(call.argumentsJson);
231
322
  let output;
232
323
  let isError = false;
324
+ let deadlineStop;
233
325
  const toolStartedAt = Date.now();
234
326
  if (!tool) {
235
327
  output = { error: `Unknown tool: ${call.name}` };
@@ -237,22 +329,54 @@ export class OpenAIProvider {
237
329
  }
238
330
  else {
239
331
  try {
240
- assertMayStartToolCall(options);
332
+ assertMayStartToolCall(options, call.name);
241
333
  output = await tool.run(args);
242
334
  }
243
335
  catch (err) {
244
- output = { error: err instanceof Error ? err.message : String(err) };
336
+ const code = toolLoopErrorCode(err);
337
+ output = {
338
+ error: err instanceof Error ? err.message : String(err),
339
+ ...(code ? { code } : {}),
340
+ };
245
341
  isError = true;
342
+ deadlineStop = nativeToolLoopStopForError(err, toolCallsUsed);
246
343
  }
247
344
  }
248
345
  options.onToolCall?.({ name: call.name, input: args, output, isError, durationMs: Date.now() - toolStartedAt });
346
+ if (deadlineStop)
347
+ return deadlineStop;
249
348
  chatMessages.push({
250
349
  role: 'tool',
251
350
  tool_call_id: call.id,
252
351
  content: compactToolOutput(output),
253
352
  });
353
+ // A completed Ask V2 host control already contains the answer or
354
+ // stable clarification. A rejected control has no `finished` marker
355
+ // and must instead become the next controller observation.
356
+ if (isAskV2TerminalControlTool(call.name) && !isError && isFinishedToolOutput(output)) {
357
+ return message.content ?? lastText;
358
+ }
254
359
  }
255
- if (dispatchLimit <= 2) {
360
+ if (terminalActionRound) {
361
+ const terminalCall = message.toolCalls[0];
362
+ if (terminalCall && isAskV2TerminalControlTool(terminalCall.name)) {
363
+ // A valid control already returned above. A denied/unfinished
364
+ // control has spent the final action send and must retain a typed
365
+ // budget/progression terminal rather than masquerading as prose.
366
+ return nativeToolLoopStop('tool_budget_exhausted', '', toolCallsUsed);
367
+ }
368
+ // A terminal *execution* action only ends discovery. The live V2
369
+ // policy now requires finish_answer on the reserved narration send;
370
+ // returning here would drop a validated result or turn it into prose.
371
+ if (reservePostExecutionNarration)
372
+ continue;
373
+ return message.content ?? lastText;
374
+ }
375
+ // A live Ask V2 policy reserves the final physical send for one
376
+ // controller-selected terminal action. The old two-turn shortcut
377
+ // would otherwise turn that reserved action into prose before the
378
+ // model can invoke it.
379
+ if (dispatchLimit <= 2 && !dynamicToolPolicy) {
256
380
  try {
257
381
  const finalText = await forcedFinal();
258
382
  return finalText || lastText || JSON.stringify({
@@ -322,13 +446,59 @@ export class OpenAIProvider {
322
446
  return full;
323
447
  }
324
448
  }
325
- function assertMayStartToolCall(options) {
449
+ function assertMayStartToolCall(options, toolName) {
450
+ // finish_answer is host-local terminal control after an already admitted
451
+ // provider response; it must not be treated as a fresh discovery branch.
452
+ if (toolName === 'finish_answer')
453
+ return;
326
454
  if (options.mayStartToolCall?.() === false) {
327
455
  throw Object.assign(new Error('The run soft target elapsed before this tool branch could start.'), {
328
456
  code: 'RUN_SOFT_TARGET_EXCEEDED',
329
457
  });
330
458
  }
331
459
  }
460
+ function isFinishedToolOutput(value) {
461
+ return Boolean(value
462
+ && typeof value === 'object'
463
+ && !Array.isArray(value)
464
+ && value.finished === true);
465
+ }
466
+ function isAskV2TerminalControlTool(name) {
467
+ return name === 'finish_answer' || name === 'request_clarification';
468
+ }
469
+ function nativeToolLoopStop(kind, text, toolCalls) {
470
+ return { version: 1, kind, text, toolCalls };
471
+ }
472
+ function toolLoopErrorCode(error) {
473
+ const code = error && typeof error === 'object' && 'code' in error
474
+ ? error.code
475
+ : undefined;
476
+ return typeof code === 'string' ? code : undefined;
477
+ }
478
+ function nativeToolLoopStopForError(error, toolCalls) {
479
+ const code = toolLoopErrorCode(error);
480
+ if (code === 'RUN_SOFT_TARGET_EXCEEDED') {
481
+ return nativeToolLoopStop('run_soft_target_exceeded', '', toolCalls);
482
+ }
483
+ if (code === 'RUN_DEADLINE_INSUFFICIENT') {
484
+ return nativeToolLoopStop('run_deadline_insufficient', '', toolCalls);
485
+ }
486
+ if (code === 'PROVIDER_DISPATCH_BUDGET_EXHAUSTED') {
487
+ return nativeToolLoopStop('provider_dispatch_budget_exhausted', '', toolCalls);
488
+ }
489
+ return undefined;
490
+ }
491
+ /** Resolve the host's current V2 policy immediately before a native send. */
492
+ function nativeToolPolicy(options, tools) {
493
+ const policy = options.getCurrentToolPolicy?.();
494
+ const allowed = new Set(policy?.allowedToolNames ?? tools.map((tool) => tool.name));
495
+ const enabled = tools.filter((tool) => allowed.has(tool.name));
496
+ return {
497
+ tools: enabled,
498
+ terminalActionToolNames: new Set((policy?.terminalActionToolNames ?? []).filter((name) => allowed.has(name))),
499
+ ...(policy?.instruction?.trim() ? { instruction: policy.instruction.trim() } : {}),
500
+ };
501
+ }
332
502
  function shouldRetryWithMaxCompletionTokens(body) {
333
503
  return /max_tokens/i.test(body) && /max_completion_tokens/i.test(body);
334
504
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,13 @@ export interface ProviderRunOptions {
96
96
  * exploratory-plan correction cannot be miscounted as a second generation.
97
97
  */
98
98
  dispatchPhase?: import('@duckcodeailabs/dql-core').ProviderDispatchPhaseV1;
99
+ /**
100
+ * Server-owned sub-phase for the bounded analytical planner. It exists only
101
+ * to distinguish one initial proposal from one verifier-directed targeted
102
+ * revision at the local egress ledger; providers cannot use it to select a
103
+ * route or request another planner loop.
104
+ */
105
+ analyticalPlanningKind?: 'initial' | 'targeted_revision';
99
106
  /**
100
107
  * Server-owned egress purpose paired with {@link dispatchPhase}. Ordinary
101
108
  * Ask generation remains content-free; the only normal Ask repair purpose is
@@ -115,6 +122,43 @@ export interface AgentToolDefinition {
115
122
  inputSchema: Record<string, unknown>;
116
123
  run(args: unknown): Promise<unknown>;
117
124
  }
125
+ /**
126
+ * A server-owned update to an in-flight tool conversation.
127
+ *
128
+ * Native tool transports obtain this immediately before every provider send;
129
+ * text transports append the same instruction after every observation. It
130
+ * lets a bounded controller narrow discovery to the next safe action without
131
+ * making a second, hidden planner call or trusting a provider to remember a
132
+ * stale tool list.
133
+ */
134
+ export interface ProviderCurrentToolPolicy {
135
+ /** Canonical tools the provider may request on its next turn. */
136
+ allowedToolNames: readonly string[];
137
+ /** Safe, provider-visible explanation of why the set changed. */
138
+ instruction?: string;
139
+ /**
140
+ * At a physical-send reserve, one of these tools may be the final action.
141
+ * This is intentionally separate from `allowedToolNames`: ordinary tools
142
+ * must never use the last controller turn as a discovery escape hatch.
143
+ */
144
+ terminalActionToolNames?: readonly string[];
145
+ }
146
+ /**
147
+ * Host-owned phase decision for one concrete provider send.
148
+ *
149
+ * A native tool provider can issue several HTTP requests from one logical
150
+ * `generateWithTools` call. The outer Ask runtime is the only component that
151
+ * knows whether its state has advanced from discovery/execution to the one
152
+ * required, post-result `finish_answer` control. This callback lets that
153
+ * runtime classify each physical send at the transport boundary without
154
+ * serializing mutable state to a provider or granting a provider a lifecycle
155
+ * capability.
156
+ */
157
+ export type ProviderPhysicalDispatchPhaseResolver = (input: {
158
+ operation: ProviderDispatchOperation;
159
+ attemptIndex: number;
160
+ requestedPhase?: import('@duckcodeailabs/dql-core').ProviderDispatchPhaseV1;
161
+ }) => import('@duckcodeailabs/dql-core').ProviderDispatchPhaseV1 | undefined;
118
162
  export interface ProviderToolLoopOptions extends ProviderRunOptions {
119
163
  /** Hard cap for provider-visible tool calls in this turn. Default 8. */
120
164
  maxToolCalls?: number;
@@ -134,6 +178,9 @@ export interface ProviderToolLoopOptions extends ProviderRunOptions {
134
178
  allowedResultRowTools?: Record<string, number>;
135
179
  resultRowBudgetGroupByTool?: Record<string, string>;
136
180
  cumulativeResultRowBudgets?: Record<string, number>;
181
+ /** Additional shape caps for bounded local Ask V2 row egress. */
182
+ maxResultColumns?: number;
183
+ maxResultCells?: number;
137
184
  onPayload?: (event: {
138
185
  toolName: string;
139
186
  output: unknown;
@@ -144,7 +191,38 @@ export interface ProviderToolLoopOptions extends ProviderRunOptions {
144
191
  budgetExhausted: boolean;
145
192
  }) => void;
146
193
  };
194
+ /**
195
+ * Optional live tool policy owned by the host runtime. The callback is
196
+ * process-local and is never serialized to a provider. It is evaluated at
197
+ * each transport turn so native and text protocols receive the same current
198
+ * allowed-tool set and safe progress instruction.
199
+ */
200
+ getCurrentToolPolicy?: () => ProviderCurrentToolPolicy | undefined;
201
+ /**
202
+ * Process-local physical-send phase resolver. Only the local Ask runtime
203
+ * installs this. Providers carry it to the wrapper unchanged and may never
204
+ * use it to choose a route, tool, or egress purpose.
205
+ */
206
+ resolvePhysicalDispatchPhase?: ProviderPhysicalDispatchPhaseResolver;
207
+ }
208
+ /**
209
+ * Typed native-tool-loop stop. Native transports normally return final prose,
210
+ * but a live Ask V2 policy must distinguish a physical controller/tool budget
211
+ * stop from an answer. The result deliberately contains no provider payload
212
+ * beyond the already-sanitized final text.
213
+ */
214
+ export interface NativeToolLoopStop {
215
+ version: 1;
216
+ /**
217
+ * A typed controller stop. Deadline stops deliberately remain distinct from
218
+ * a tool budget: callers can preserve an already validated result and show
219
+ * the actual run-boundary recovery action.
220
+ */
221
+ kind: 'tool_budget_exhausted' | 'provider_dispatch_budget_exhausted' | 'invalid_tool_response' | 'run_soft_target_exceeded' | 'run_deadline_insufficient';
222
+ text: string;
223
+ toolCalls: number;
147
224
  }
225
+ export type NativeToolLoopResult = string | NativeToolLoopStop;
148
226
  export interface AgentProvider {
149
227
  readonly name: ProviderName;
150
228
  /**
@@ -157,7 +235,7 @@ export interface AgentProvider {
157
235
  * call supplied tools, append their observations, and resolve with the final
158
236
  * assistant text. Callers must keep a one-shot generate() fallback.
159
237
  */
160
- generateWithTools?(messages: AgentMessage[], tools: AgentToolDefinition[], options?: ProviderToolLoopOptions): Promise<string>;
238
+ generateWithTools?(messages: AgentMessage[], tools: AgentToolDefinition[], options?: ProviderToolLoopOptions): Promise<NativeToolLoopResult>;
161
239
  /**
162
240
  * Optional token streaming. Calls `onDelta` with each text chunk as it arrives
163
241
  * and resolves with the full concatenated text. Providers that omit this fall
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,yBAAyB,GAAG,UAAU,GAAG,qBAAqB,GAAG,iBAAiB,CAAC;AAE/F,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,yBAAyB,CAAC;IACrC,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,uBAAuB,EAAE,eAAe,CAAC;KACnE,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjG,kFAAkF;AAClF,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,yBAAyB,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,IAAI,GAAG,OAAO,GAAG,WAAW,CAAC;IACtC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,kCAAkC,GAAG,CAAC,KAAK,EAAE,+BAA+B,KAAK,IAAI,CAAC;AAElG,mEAAmE;AACnE,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,yBAAyB,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,iCAAiC,GAAG,CAAC,KAAK,EAAE,8BAA8B,KAAK,IAAI,CAAC;AAEhG,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,uBAAuB,EAAE,eAAe,CAAC;IAClE,wDAAwD;IACxD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,0EAA0E;IAC1E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,2EAA2E;IAC3E,0BAA0B,CAAC,EAAE,kCAAkC,CAAC;IAChE,iFAAiF;IACjF,0BAA0B,CAAC,EAAE,iCAAiC,CAAC;IAC/D;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,0BAA0B,EAAE,uBAAuB,CAAC;IAC3E;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,0BAA0B,EAAE,qBAAqB,CAAC;IACzE;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oGAAoG;IACpG,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACzH,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;IACjC,sFAAsF;IACtF,oBAAoB,CAAC,EAAE;QACrB,OAAO,EAAE,OAAO,0BAA0B,EAAE,qBAAqB,CAAC;QAClE,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,0BAA0B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpD,0BAA0B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;YAClB,QAAQ,EAAE,MAAM,CAAC;YACjB,MAAM,EAAE,OAAO,CAAC;YAChB,cAAc,EAAE,MAAM,CAAC;YACvB,WAAW,EAAE,MAAM,CAAC;YACpB,wBAAwB,EAAE,MAAM,CAAC;YACjC,WAAW,EAAE,MAAM,CAAC;YACpB,eAAe,EAAE,OAAO,CAAC;SAC1B,KAAK,IAAI,CAAC;KACZ,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClF;;;;OAIG;IACH,iBAAiB,CAAC,CAChB,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,CACb,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,uEAAuE;IACvE,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,MAAM,CAAC,CAOjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA6KH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAuB,EACvB,QAAwB,EACxB,OAA2B,EAC3B,OAAgC;IAEhC,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAmQH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAuB,EACvB,QAAwB,EACxB,OAA2B,EAC3B,OAAgC;IAEhC,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The single grammar for time-window clauses.
3
+ *
4
+ * Three question parsers each carried their own relative-time regexes, every
5
+ * one requiring the determiner to sit adjacent to the time noun — so "last
6
+ * month" parsed and "last two months" did not, anywhere. The phrase then
7
+ * degraded to a bare `month` grouping while its count was misread as a row
8
+ * limit, and the answer silently changed meaning.
9
+ *
10
+ * This module is the one producer of the typed window. Its accepted forms
11
+ * deliberately MIRROR `resolvePlanTimeRange` (resolved-analytical-plan.ts) —
12
+ * the already-written resolver of "last N units" into UTC bounds — so the
13
+ * producer and the resolver cannot drift: everything parsed here resolves
14
+ * there, via the canonical digits `expression`.
15
+ */
16
+ import type { AnalyticalTimeWindowV1 } from './analytical-orchestration.js';
17
+ /**
18
+ * Parse a relative or named time window from free text. Returns undefined
19
+ * when the question carries no bounded period — a bare grain ("by month") is
20
+ * a grouping, not a window, and stays out of this clause on purpose.
21
+ */
22
+ export declare function parseAnalyticalTimeWindow(question: string): AnalyticalTimeWindowV1 | undefined;
23
+ //# sourceMappingURL=requirement-clauses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirement-clauses.d.ts","sourceRoot":"","sources":["../src/requirement-clauses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAS5E;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CA8C9F"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * The single grammar for time-window clauses.
3
+ *
4
+ * Three question parsers each carried their own relative-time regexes, every
5
+ * one requiring the determiner to sit adjacent to the time noun — so "last
6
+ * month" parsed and "last two months" did not, anywhere. The phrase then
7
+ * degraded to a bare `month` grouping while its count was misread as a row
8
+ * limit, and the answer silently changed meaning.
9
+ *
10
+ * This module is the one producer of the typed window. Its accepted forms
11
+ * deliberately MIRROR `resolvePlanTimeRange` (resolved-analytical-plan.ts) —
12
+ * the already-written resolver of "last N units" into UTC bounds — so the
13
+ * producer and the resolver cannot drift: everything parsed here resolves
14
+ * there, via the canonical digits `expression`.
15
+ */
16
+ const WORD_COUNTS = {
17
+ one: 1, two: 2, three: 3, four: 4, five: 5, six: 6,
18
+ seven: 7, eight: 8, nine: 9, ten: 10, twelve: 12,
19
+ };
20
+ const WINDOW_UNIT_RE = 'day|week|month|quarter|year';
21
+ /**
22
+ * Parse a relative or named time window from free text. Returns undefined
23
+ * when the question carries no bounded period — a bare grain ("by month") is
24
+ * a grouping, not a window, and stays out of this clause on purpose.
25
+ */
26
+ export function parseAnalyticalTimeWindow(question) {
27
+ const lower = question.toLowerCase();
28
+ // "2024-01-01 to 2024-03-01" — absolute, passed through verbatim.
29
+ const absolute = /\b(\d{4}-\d{2}-\d{2})\s+(?:to|through)\s+(\d{4}-\d{2}-\d{2})\b/.exec(lower);
30
+ if (absolute) {
31
+ return {
32
+ version: 1,
33
+ kind: 'absolute',
34
+ expression: `${absolute[1]} to ${absolute[2]}`,
35
+ absolute: { startInclusive: absolute[1], endExclusive: absolute[2] },
36
+ };
37
+ }
38
+ // "ytd" / "month to date" — named periods.
39
+ const named = /\b(ytd|qtd|mtd|wtd|(?:year|quarter|month|week)[ -]to[ -]date)\b/.exec(lower);
40
+ if (named) {
41
+ const token = named[1].replace(/[ -]to[ -]date$/, (unit) => unit).trim();
42
+ const canonical = token.length <= 3 ? token : `${token[0]}td`;
43
+ return { version: 1, kind: 'named_period', expression: canonical, namedPeriod: canonical };
44
+ }
45
+ // "last two months", "past 60 days", "this quarter", "since last 2 months".
46
+ const relative = new RegExp(`\\b(last|this|past|previous|prior)\\s+(?:(\\d{1,3}|${Object.keys(WORD_COUNTS).join('|')})\\s+)?(${WINDOW_UNIT_RE})s?\\b`).exec(lower);
47
+ if (!relative)
48
+ return undefined;
49
+ const determiner = relative[1];
50
+ const rawCount = relative[2];
51
+ const unit = relative[3];
52
+ const count = rawCount === undefined
53
+ ? 1
54
+ : /^\d+$/.test(rawCount) ? Number(rawCount) : WORD_COUNTS[rawCount] ?? 1;
55
+ if (count <= 0 || count > 366)
56
+ return undefined;
57
+ // Mirror `resolvePlanTimeRange` exactly: an UNcounted "last month" is the
58
+ // previous complete period; a COUNTED "last 2 months" is a trailing window
59
+ // ending now; "this month" is the current period. Diverging here would let
60
+ // the producer promise a different span than the resolver computes.
61
+ const mode = determiner === 'this' ? 'this' : 'last';
62
+ const complete = mode === 'last' && rawCount === undefined;
63
+ return {
64
+ version: 1,
65
+ kind: 'relative',
66
+ expression: count === 1 && mode === 'last' ? `last ${unit}` : `${mode} ${count} ${unit}${count === 1 ? '' : 's'}`,
67
+ relative: { count, unit, complete },
68
+ };
69
+ }
70
+ //# sourceMappingURL=requirement-clauses.js.map