@carlonicora/nestjs-neo4jsonapi 1.112.2 → 1.113.0

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 (42) hide show
  1. package/dist/agents/operator/services/operator.service.d.ts.map +1 -1
  2. package/dist/agents/operator/services/operator.service.js.map +1 -1
  3. package/dist/config/base.config.d.ts.map +1 -1
  4. package/dist/config/base.config.js +1 -0
  5. package/dist/config/base.config.js.map +1 -1
  6. package/dist/config/interfaces/config.ai.interface.d.ts +6 -0
  7. package/dist/config/interfaces/config.ai.interface.d.ts.map +1 -1
  8. package/dist/core/jsonapi/serialisers/descriptor.based.serialiser.d.ts.map +1 -1
  9. package/dist/core/jsonapi/serialisers/descriptor.based.serialiser.js +6 -0
  10. package/dist/core/jsonapi/serialisers/descriptor.based.serialiser.js.map +1 -1
  11. package/dist/core/llm/common/llm-raw-response.d.ts +4 -0
  12. package/dist/core/llm/common/llm-raw-response.d.ts.map +1 -1
  13. package/dist/core/llm/common/llm-raw-response.js.map +1 -1
  14. package/dist/core/llm/enums/reasoning.effort.d.ts +14 -0
  15. package/dist/core/llm/enums/reasoning.effort.d.ts.map +1 -0
  16. package/dist/core/llm/enums/reasoning.effort.js +3 -0
  17. package/dist/core/llm/enums/reasoning.effort.js.map +1 -0
  18. package/dist/core/llm/index.d.ts +1 -0
  19. package/dist/core/llm/index.d.ts.map +1 -1
  20. package/dist/core/llm/index.js +1 -0
  21. package/dist/core/llm/index.js.map +1 -1
  22. package/dist/core/llm/services/llm.service.d.ts +13 -0
  23. package/dist/core/llm/services/llm.service.d.ts.map +1 -1
  24. package/dist/core/llm/services/llm.service.js +192 -21
  25. package/dist/core/llm/services/llm.service.js.map +1 -1
  26. package/dist/core/llm/services/model.service.d.ts +37 -0
  27. package/dist/core/llm/services/model.service.d.ts.map +1 -1
  28. package/dist/core/llm/services/model.service.js +94 -5
  29. package/dist/core/llm/services/model.service.js.map +1 -1
  30. package/dist/core/llm/services/unsupported-param-fetch.d.ts +47 -0
  31. package/dist/core/llm/services/unsupported-param-fetch.d.ts.map +1 -0
  32. package/dist/core/llm/services/unsupported-param-fetch.js +195 -0
  33. package/dist/core/llm/services/unsupported-param-fetch.js.map +1 -0
  34. package/dist/core/llm/utils/schema.utils.d.ts +89 -0
  35. package/dist/core/llm/utils/schema.utils.d.ts.map +1 -1
  36. package/dist/core/llm/utils/schema.utils.js +210 -3
  37. package/dist/core/llm/utils/schema.utils.js.map +1 -1
  38. package/dist/foundations/chunker/services/types/pdf/interfaces/pdf-element.interface.d.ts.map +1 -1
  39. package/dist/foundations/rbac/dsl/types.d.ts.map +1 -1
  40. package/dist/foundations/rbac/dsl/types.js.map +1 -1
  41. package/dist/foundations/stripe-subscription/entities/stripe-subscription.entity.d.ts.map +1 -1
  42. package/package.json +67 -67
@@ -7,6 +7,7 @@ import OpenAI, { AzureOpenAI } from "openai";
7
7
  import { BaseConfigInterface, ConfigAiInterface } from "../../../config/interfaces";
8
8
  import { AppLoggingService } from "../../logging/services/logging.service";
9
9
  import { ModelWeight } from "../enums/model.weight";
10
+ import { ReasoningEffort } from "../enums/reasoning.effort";
10
11
  import { EmbedderTokenBucketService } from "./embedder-token-bucket.service";
11
12
  /**
12
13
  * Securely materialises Google Vertex credentials to a temp file.
@@ -38,6 +39,22 @@ export declare function writeGcpCredentials(decodedCredentials: string, tag: str
38
39
  * @throws {Error} if the URL fails any check.
39
40
  */
40
41
  export declare function validateAiUrl(url: string, provider: string): void;
42
+ /**
43
+ * Narrows a CONFIG-sourced reasoning effort to the allowed set.
44
+ *
45
+ * `AI_REASONING_EFFORT` reaches this code as a free-form string, and a typo
46
+ * (`AI_REASONING_EFFORT=lwo`) would otherwise be cast straight onto the wire. The
47
+ * provider answers 400 `unsupported_value`, which `unsupportedParamFetch` then
48
+ * remembers for that (parameter, value) pair — one wasted round-trip per distinct
49
+ * typo, and an effort silently degraded to the provider default for the rest of the
50
+ * process. Rejecting it here keeps the misconfiguration visible and costs nothing.
51
+ *
52
+ * Per-call values are NOT routed through this: those are typed `ReasoningEffort` at
53
+ * the call site, so the compiler already guarantees them.
54
+ *
55
+ * @returns the effort when recognised, otherwise undefined (tier default unset).
56
+ */
57
+ export declare function normaliseConfiguredReasoningEffort(value: unknown): ReasoningEffort | undefined;
41
58
  export declare class ModelService implements OnModuleInit {
42
59
  private readonly clsService;
43
60
  private readonly configService;
@@ -62,6 +79,21 @@ export declare class ModelService implements OnModuleInit {
62
79
  * Undefined / Normal → `ai`; Lite → `aiLite`; Large → `aiLarge`.
63
80
  */
64
81
  getResolvedConfig(weight?: ModelWeight): ConfigAiInterface["ai"];
82
+ /**
83
+ * Whether this tier's provider honours OpenAI's STRICT structured-output mode.
84
+ *
85
+ * Only the OpenAI-compatible chat-completions family enforces `strict`.
86
+ * `ChatGoogleBase.withStructuredOutput` ignores the flag outright, so on Vertex
87
+ * a strict-shaped schema costs the model an explicit null for every optional
88
+ * field and returns no guarantee in exchange — verified against a live
89
+ * gemini-2.5-flash-lite deployment, which accepts both shapes.
90
+ *
91
+ * Answered from the tier's PROVIDER, which this service already owns, rather
92
+ * than `instanceof ChatOpenAI`: `instanceof` fails silently when two copies of
93
+ * `@langchain/openai` resolve, which is exactly the dual-instance hazard the
94
+ * July 2026 dependency sweep removed.
95
+ */
96
+ supportsStrictStructuredOutput(weight?: ModelWeight): boolean;
65
97
  /**
66
98
  * Gets a configured LLM instance based on the current config.
67
99
  *
@@ -89,7 +121,12 @@ export declare class ModelService implements OnModuleInit {
89
121
  maxOutputTokens?: number;
90
122
  frequencyPenalty?: number;
91
123
  modelWeight?: ModelWeight;
124
+ /**
125
+ * @deprecated Use `reasoningEffort: "none"` instead. Kept as a working alias
126
+ * for backward compatibility — a published-library API is never removed.
127
+ */
92
128
  disableThinking?: boolean;
129
+ reasoningEffort?: ReasoningEffort;
93
130
  /** Per-attempt request budget in ms. Defaults to `ai.requestTimeoutMs`. */
94
131
  timeoutMs?: number;
95
132
  }): BaseChatModel;
@@ -1 +1 @@
1
- {"version":3,"file":"model.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/model.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAI5E,OAAO,EAAc,YAAY,EAAY,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAK/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAW7E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAiBnF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAsBjE;AAgBD,qBACa,YAAa,YAAW,YAAY;IAI7C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAKlB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAVtC,OAAO,CAAC,cAAc,CAAC,CAAsB;gBAG1B,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAKrC,MAAM,CAAC,EAAE,0BAA0B,EACnC,MAAM,CAAC,EAAE,iBAAiB;IAGzD;;;;;;;OAOG;IACH,YAAY,IAAI,IAAI;IAMpB,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED;;;OAGG;IACH,iBAAiB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC;IAWhE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,2EAA2E;QAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,aAAa;IAkBjB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa;IAsB9D;;;;;;;;;OASG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa;IAK7D;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoJtB;;;;;;;;;;OAUG;IACH,WAAW,IAAI,mBAAmB;IAqBlC,OAAO,CAAC,kBAAkB;IAgE1B,qBAAqB,IAAI,MAAM;IAI/B;;;;;OAKG;IACH,cAAc,IAAI,MAAM,GAAG,WAAW;IAiBhC,eAAe,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAQzG"}
1
+ {"version":3,"file":"model.service.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/model.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAI5E,OAAO,EAAc,YAAY,EAAY,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAK/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAY7E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAiBnF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAsBjE;AAKD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAQ9F;AAgBD,qBACa,YAAa,YAAW,YAAY;IAI7C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAKlB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAVtC,OAAO,CAAC,cAAc,CAAC,CAAsB;gBAG1B,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAKrC,MAAM,CAAC,EAAE,0BAA0B,EACnC,MAAM,CAAC,EAAE,iBAAiB;IAGzD;;;;;;;OAOG;IACH,YAAY,IAAI,IAAI;IAMpB,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED;;;OAGG;IACH,iBAAiB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC;IAWhE;;;;;;;;;;;;;OAaG;IACH,8BAA8B,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO;IAI7D;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B;;;WAGG;QACH,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,2EAA2E;QAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,aAAa;IA6BjB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa;IAsB9D;;;;;;;;;OASG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa;IAK7D;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA4LtB;;;;;;;;;;OAUG;IACH,WAAW,IAAI,mBAAmB;IAqBlC,OAAO,CAAC,kBAAkB;IAgE1B,qBAAqB,IAAI,MAAM;IAI/B;;;;;OAKG;IACH,cAAc,IAAI,MAAM,GAAG,WAAW;IAiBhC,eAAe,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAQzG"}
@@ -48,6 +48,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
48
48
  exports.ModelService = void 0;
49
49
  exports.writeGcpCredentials = writeGcpCredentials;
50
50
  exports.validateAiUrl = validateAiUrl;
51
+ exports.normaliseConfiguredReasoningEffort = normaliseConfiguredReasoningEffort;
51
52
  const testing_1 = require("@langchain/core/utils/testing");
52
53
  const google_vertexai_1 = require("@langchain/google-vertexai");
53
54
  const openai_1 = require("@langchain/openai");
@@ -64,6 +65,7 @@ const model_weight_1 = require("../enums/model.weight");
64
65
  const embedder_token_bucket_service_1 = require("./embedder-token-bucket.service");
65
66
  const openrouter_fetch_1 = require("./openrouter-fetch");
66
67
  const rate_limited_embedder_1 = require("./rate-limited-embedder");
68
+ const unsupported_param_fetch_1 = require("./unsupported-param-fetch");
67
69
  /**
68
70
  * Tracks GCP credential temp files written this process so they can be removed
69
71
  * on exit. Each path is UUID-unique (see {@link writeGcpCredentials}).
@@ -143,6 +145,32 @@ function validateAiUrl(url, provider) {
143
145
  throw new Error(`AI_URL hostname "${parsed.hostname}" not in allowlist`);
144
146
  }
145
147
  }
148
+ /** The complete set of values {@link ReasoningEffort} allows. */
149
+ const REASONING_EFFORTS = new Set(["none", "minimal", "low", "medium", "high"]);
150
+ /**
151
+ * Narrows a CONFIG-sourced reasoning effort to the allowed set.
152
+ *
153
+ * `AI_REASONING_EFFORT` reaches this code as a free-form string, and a typo
154
+ * (`AI_REASONING_EFFORT=lwo`) would otherwise be cast straight onto the wire. The
155
+ * provider answers 400 `unsupported_value`, which `unsupportedParamFetch` then
156
+ * remembers for that (parameter, value) pair — one wasted round-trip per distinct
157
+ * typo, and an effort silently degraded to the provider default for the rest of the
158
+ * process. Rejecting it here keeps the misconfiguration visible and costs nothing.
159
+ *
160
+ * Per-call values are NOT routed through this: those are typed `ReasoningEffort` at
161
+ * the call site, so the compiler already guarantees them.
162
+ *
163
+ * @returns the effort when recognised, otherwise undefined (tier default unset).
164
+ */
165
+ function normaliseConfiguredReasoningEffort(value) {
166
+ if (value === undefined || value === null || value === "")
167
+ return undefined;
168
+ if (typeof value === "string" && REASONING_EFFORTS.has(value))
169
+ return value;
170
+ console.warn(`[ModelService] ignoring unrecognised reasoning effort ${JSON.stringify(value)} — ` +
171
+ `expected one of ${[...REASONING_EFFORTS].join(", ")}`);
172
+ return undefined;
173
+ }
146
174
  let ModelService = class ModelService {
147
175
  constructor(clsService, configService, bucket, logger) {
148
176
  this.clsService = clsService;
@@ -186,6 +214,23 @@ let ModelService = class ModelService {
186
214
  return this.aiConfig.ai;
187
215
  }
188
216
  }
217
+ /**
218
+ * Whether this tier's provider honours OpenAI's STRICT structured-output mode.
219
+ *
220
+ * Only the OpenAI-compatible chat-completions family enforces `strict`.
221
+ * `ChatGoogleBase.withStructuredOutput` ignores the flag outright, so on Vertex
222
+ * a strict-shaped schema costs the model an explicit null for every optional
223
+ * field and returns no guarantee in exchange — verified against a live
224
+ * gemini-2.5-flash-lite deployment, which accepts both shapes.
225
+ *
226
+ * Answered from the tier's PROVIDER, which this service already owns, rather
227
+ * than `instanceof ChatOpenAI`: `instanceof` fails silently when two copies of
228
+ * `@langchain/openai` resolve, which is exactly the dual-instance hazard the
229
+ * July 2026 dependency sweep removed.
230
+ */
231
+ supportsStrictStructuredOutput(weight) {
232
+ return this.getResolvedConfig(weight).provider !== "vertex";
233
+ }
189
234
  /**
190
235
  * Gets a configured LLM instance based on the current config.
191
236
  *
@@ -215,12 +260,22 @@ let ModelService = class ModelService {
215
260
  const temperature = params?.temperature ?? 0.2;
216
261
  const cfg = this.getResolvedConfig(params?.modelWeight);
217
262
  const maxOutputTokens = params?.maxOutputTokens ?? cfg.maxOutputTokens;
263
+ // Precedence (Shared Contracts, plan 2026-07-31-llm-latency-and-structured-output):
264
+ // an explicit per-call `reasoningEffort` wins; failing that, the equally
265
+ // explicit per-call `disableThinking` (the older boolean spelling of "none")
266
+ // wins over the tier default — a per-call signal must never be silently
267
+ // overridden by config, matching `temperature`/`maxOutputTokens` elsewhere in
268
+ // this method. Only when the call passes neither does the tier default apply.
269
+ const resolvedReasoningEffort = params?.reasoningEffort ??
270
+ (params?.disableThinking ? "none" : undefined) ??
271
+ normaliseConfiguredReasoningEffort(cfg.reasoningEffort);
218
272
  return this.buildChatModel(cfg, {
219
273
  temperature,
220
274
  maxOutputTokens,
221
275
  frequencyPenalty: params?.frequencyPenalty,
222
276
  credentialFileTag: "llm",
223
277
  disableThinking: params?.disableThinking,
278
+ reasoningEffort: resolvedReasoningEffort,
224
279
  timeoutMs: params?.timeoutMs ?? this.aiConfig.requestTimeoutMs,
225
280
  });
226
281
  }
@@ -251,9 +306,10 @@ let ModelService = class ModelService {
251
306
  // deployments. Ignored for non-reasoning models.
252
307
  const visionModelLower = (visionConfig.model || "").toLowerCase();
253
308
  const isReasoningVisionModel = visionModelLower.includes("gpt-5") || /(^|\/)o\d/.test(visionModelLower);
254
- const modelKwargs = isReasoningVisionModel && visionConfig.reasoningEffort
255
- ? { reasoning_effort: visionConfig.reasoningEffort }
256
- : undefined;
309
+ // Config-sourced, so validated exactly like the chat tiers' effort — the vision
310
+ // block reads its own `VISION_REASONING_EFFORT` and is just as typo-prone.
311
+ const visionEffort = normaliseConfiguredReasoningEffort(visionConfig.reasoningEffort);
312
+ const modelKwargs = isReasoningVisionModel && visionEffort ? { reasoning_effort: visionEffort } : undefined;
257
313
  return this.buildChatModel(visionConfig, { temperature, credentialFileTag: "vision", modelKwargs });
258
314
  }
259
315
  /**
@@ -282,6 +338,24 @@ let ModelService = class ModelService {
282
338
  // tiers that never pass an explicit budget — an unbounded request is the
283
339
  // silent-stall bug, whatever the modality.
284
340
  const timeoutMs = opts.timeoutMs ?? this.aiConfig?.requestTimeoutMs;
341
+ // Identifies the deployment whose parameter verdicts we learn (see
342
+ // unsupportedParamFetch). Endpoint-qualified: the same model name behind two
343
+ // providers can accept two different parameter sets.
344
+ const modelKey = [cfg.provider, cfg.instance ?? cfg.url, cfg.model].filter(Boolean).join("|");
345
+ // Resolved ONCE, into `llmConfig.modelKwargs`, so every provider branch below
346
+ // picks it up from the same place.
347
+ //
348
+ // It used to be spread into the generic `new ChatOpenAI({...})` at the bottom
349
+ // of this method — which the `azure` branch never reaches, because it returns
350
+ // early. The effect was that `reasoningEffort` was silently dropped on Azure,
351
+ // i.e. on the one provider this project actually runs, while the unit tests
352
+ // (which build an `openrouter` tier) all passed. Any per-request parameter
353
+ // added here must go into `llmConfig`, never into a single branch's return.
354
+ const effort = opts.reasoningEffort ?? (opts.disableThinking ? "none" : undefined);
355
+ const modelKwargs = {
356
+ ...(opts.modelKwargs ?? {}),
357
+ ...(effort ? { reasoning_effort: effort } : {}),
358
+ };
285
359
  const llmConfig = {
286
360
  apiKey: cfg.apiKey || "not-needed",
287
361
  temperature,
@@ -289,7 +363,7 @@ let ModelService = class ModelService {
289
363
  configuration: {
290
364
  baseURL: cfg.url || "http://localhost:8033/v1",
291
365
  },
292
- ...(opts.modelKwargs ? { modelKwargs: opts.modelKwargs } : {}),
366
+ ...(Object.keys(modelKwargs).length > 0 ? { modelKwargs } : {}),
293
367
  ...(timeoutMs ? { timeout: timeoutMs } : {}),
294
368
  };
295
369
  switch (cfg.provider) {
@@ -350,10 +424,20 @@ let ModelService = class ModelService {
350
424
  azureOpenAIApiInstanceName: cfg.instance,
351
425
  azureOpenAIApiDeploymentName: cfg.model,
352
426
  azureOpenAIApiVersion: cfg.apiVersion,
427
+ // The deployment name builds the URL — it never reaches the parameter
428
+ // mapping. Without `model` LangChain falls back to its "gpt-3.5-turbo"
429
+ // default and picks the request shape from THAT, sending `max_tokens`
430
+ // to a gpt-5 deployment (400 — "Use 'max_completion_tokens' instead").
431
+ // Azure ignores the body's `model`, so this is purely a client-side
432
+ // signal about which model the deployment actually serves.
433
+ model: cfg.model,
353
434
  temperature,
354
435
  ...(timeoutMs ? { timeout: timeoutMs } : {}),
355
436
  ...(maxOutputTokens ? { maxTokens: maxOutputTokens } : {}),
356
437
  ...(llmConfig.modelKwargs ? { modelKwargs: llmConfig.modelKwargs } : {}),
438
+ // ONLY `fetch` — a `baseURL` here would override the Azure endpoint
439
+ // that azureOpenAIApiInstanceName/DeploymentName build.
440
+ configuration: { fetch: (0, unsupported_param_fetch_1.unsupportedParamFetch)(modelKey) },
357
441
  };
358
442
  return new openai_1.AzureChatOpenAI(azureParameters);
359
443
  }
@@ -371,6 +455,12 @@ let ModelService = class ModelService {
371
455
  }
372
456
  return new openai_1.ChatOpenAI({
373
457
  ...llmConfig,
458
+ configuration: {
459
+ ...llmConfig.configuration,
460
+ // Wraps whatever the provider switch installed (the OpenRouter pin
461
+ // included) rather than replacing it.
462
+ fetch: (0, unsupported_param_fetch_1.unsupportedParamFetch)(modelKey, llmConfig.configuration.fetch),
463
+ },
374
464
  // 1 hard attempt + 2 soft retries. Retries escalate the OpenRouter pin
375
465
  // (see openRouterEscalatingFetch) so a transient provider error can reroute.
376
466
  maxRetries: 2,
@@ -380,7 +470,6 @@ let ModelService = class ModelService {
380
470
  // memory extractor emitting `{op:"ADD",...}` endlessly). Maps to OpenAI's
381
471
  // `frequency_penalty`, honoured by the Ollama/llamacpp OpenAI-compatible APIs.
382
472
  ...(typeof frequencyPenalty === "number" ? { frequencyPenalty } : {}),
383
- ...(opts.disableThinking ? { modelKwargs: { ...(llmConfig.modelKwargs ?? {}), reasoning_effort: "none" } } : {}),
384
473
  });
385
474
  }
386
475
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../../../src/core/llm/services/model.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,kDAiBC;AAcD,sCAsBC;AA9FD,2DAAkE;AAClE,gEAA8E;AAC9E,8CAAyG;AACzG,2CAAoE;AACpE,2CAA+C;AAC/C,+CAAiC;AACjC,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,2CAAwC;AACxC,iDAA6C;AAE7C,4EAA2E;AAC3E,wDAAoD;AACpD,mFAA6E;AAC7E,yDAA+D;AAC/D,mEAA8D;AAE9D;;;GAGG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;AAC5C,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAEjC;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,mBAAmB,CAAC,kBAA0B,EAAE,GAAW;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzF,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC;gBAAC,MAAM,CAAC;oBACP,iBAAiB;gBACnB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,oBAAoB,GAAG,IAAI,CAAC;IAC9B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,aAAa,CAAC,GAAW,EAAE,QAAgB;IACzD,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,6BAA6B,CAAC,CAAC;IAClF,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;IACpH,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,uEAAuE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5G,CAAC;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAClD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,YAAY;aAC3B,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QACnB,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,QAAQ,oBAAoB,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAiBM,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGvB,YACmB,UAAsB,EACtB,aAAiD,EAKrC,MAAmC,EACnC,MAA0B;QAPtC,eAAU,GAAV,UAAU,CAAY;QACtB,kBAAa,GAAb,aAAa,CAAoC;QAKrC,WAAM,GAAN,MAAM,CAA6B;QACnC,WAAM,GAAN,MAAM,CAAoB;IACtD,CAAC;IAEJ;;;;;;;OAOG;IACH,YAAY;QACV,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAoB,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,MAAoB;QACpC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,0BAAW,CAAC,IAAI;gBACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC9B,KAAK,0BAAW,CAAC,KAAK;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC/B;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,MAQN;QACC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,IAAI,2BAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,CAA6B,CAAC;QAC5F,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,GAAG,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,MAAM,EAAE,eAAe,IAAI,GAAG,CAAC,eAAe,CAAC;QACvE,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YAC9B,WAAW;YACX,eAAe;YACf,gBAAgB,EAAE,MAAM,EAAE,gBAAgB;YAC1C,iBAAiB,EAAE,KAAK;YACxB,eAAe,EAAE,MAAM,EAAE,eAAe;YACxC,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB;SAC/D,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,MAAiC;QAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,IAAI,2BAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,CAA6B,CAAC;QAC5F,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,GAAG,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAEvC,wFAAwF;QACxF,wFAAwF;QACxF,6FAA6F;QAC7F,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxG,MAAM,WAAW,GACf,sBAAsB,IAAI,YAAY,CAAC,eAAe;YACpD,CAAC,CAAC,EAAE,gBAAgB,EAAE,YAAY,CAAC,eAAe,EAAE;YACpD,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IACtG,CAAC;IAED;;;;;;;;;OASG;IACH,WAAW,CAAC,MAAiC;QAC3C,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,GAAG,CAAC;QAC/C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;OAKG;IACK,cAAc,CACpB,GAUC,EACD,IAgBC;QAED,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QAChE,yEAAyE;QACzE,yEAAyE;QACzE,2CAA2C;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QAEpE,MAAM,SAAS,GAAkB;YAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,YAAY;YAClC,WAAW;YACX,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,aAAa;YACjC,aAAa,EAAE;gBACb,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,0BAA0B;aAC/C;YACD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC;QAEF,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;YACrB,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC;gBAChC,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC;gBAChC,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,IAAI,0BAA0B,CAAC;gBAC1D,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACzC,SAAS,CAAC,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC;gBAC9C,MAAM;YACR,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,IAAI,8BAA8B,CAAC;gBAChE,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC3C,SAAS,CAAC,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC;gBAChD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBACf,iFAAiF;oBACjF,4FAA4F;oBAC5F,0CAA0C;oBAC1C,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,IAAA,4CAAyB,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;gBACpG,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,UAAU;gBACb,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACrC,SAAS,CAAC,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC;gBAC1C,MAAM;YAER,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,wEAAwE;gBACxE,sEAAsE;gBACtE,+DAA+D;gBAC/D,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC;gBAChC,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,2BAA2B,CAAC;gBACzD,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACvC,SAAS,CAAC,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC;gBAC5C,MAAM;YACR,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,0FAA0F;gBAC1F,uFAAuF;gBACvF,kFAAkF;gBAClF,iFAAiF;gBACjF,IAAI,GAAG,CAAC,uBAAuB,EAAE,CAAC;oBAChC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC7F,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAC/E,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,SAAS,CAAC;gBACzD,CAAC;gBACD,OAAO,IAAI,8BAAY,CAAC;oBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,WAAW;oBACX,QAAQ,EAAE,GAAG,CAAC,MAAM;oBACpB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChD,CAAC,CAAC;YACL,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,eAAe,GAAQ;oBAC3B,iBAAiB,EAAE,GAAG,CAAC,MAAM;oBAC7B,0BAA0B,EAAE,GAAG,CAAC,QAAQ;oBACxC,4BAA4B,EAAE,GAAG,CAAC,KAAK;oBACvC,qBAAqB,EAAE,GAAG,CAAC,UAAU;oBACrC,WAAW;oBACX,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1D,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzE,CAAC;gBACF,OAAO,IAAI,wBAAe,CAAC,eAAe,CAAC,CAAC;YAC9C,CAAC;YAED;gBACE,oEAAoE;gBACpE,qEAAqE;gBACrE,wEAAwE;gBACxE,kEAAkE;gBAClE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CACb,6BAA6B,GAAG,CAAC,QAAQ,8FAA8F,CACxI,CAAC;gBACJ,CAAC;gBACD,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACrC,SAAS,CAAC,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC;gBAC1C,MAAM;QACV,CAAC;QAED,OAAO,IAAI,mBAAU,CAAC;YACpB,GAAG,SAAS;YACZ,uEAAuE;YACvE,6EAA6E;YAC7E,UAAU,EAAE,CAAC;YACb,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,4EAA4E;YAC5E,yEAAyE;YACzE,0EAA0E;YAC1E,+EAA+E;YAC/E,GAAG,CAAC,OAAO,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjH,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACH,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC9C,MAAM,IAAI,GAAG,GAAa,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpD,OAAO;gBACL,cAAc,EAAE,KAAK,EAAE,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1D,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE;aAC/B,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QACnD,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,cAAc;gBAAE,OAAO,IAAI,CAAC,cAAc,CAAC;YACpD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAgB,CAAC;YACtD,IAAI,CAAC,cAAc,GAAG,IAAI,2CAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1F,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;IAEO,kBAAkB;QACxB,IAAI,QAA6B,CAAC;QAElC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACxC,KAAK,OAAO;gBACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,KAAK,YAAY;gBACf,QAAQ,GAAG,IAAI,yBAAgB,CAAC;oBAC9B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;oBAC3C,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;oBACnC,aAAa,EAAE;wBACb,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;qBACpC;iBACF,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,UAAU;gBACb,QAAQ,GAAG,IAAI,yBAAgB,CAAC;oBAC9B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;oBAC3C,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;oBACnC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU;oBAC7C,aAAa,EAAE;wBACb,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;qBACpC;iBACF,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,QAAQ;gBACX,QAAQ,GAAG,IAAI,yBAAgB,CAAC;oBAC9B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;oBAC3C,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;iBACpC,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,OAAO;gBACV,QAAQ,GAAG,IAAI,8BAAqB,CAAC;oBACnC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;oBAChD,0BAA0B,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ;oBAC3D,4BAA4B,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;oBAC1D,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU;oBACxD,SAAS,EAAE,GAAG;iBACf,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,oEAAoE;gBACpE,iFAAiF;gBACjF,kFAAkF;gBAClF,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAE9C,IAAI,cAAc,CAAC,uBAAuB,EAAE,CAAC;oBAC3C,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACxG,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;oBACnE,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,SAAS,CAAC;gBACzD,CAAC;gBAED,QAAQ,GAAG,IAAI,oCAAkB,CAAC;oBAChC,KAAK,EAAE,cAAc,CAAC,KAAK;oBAC3B,QAAQ,EAAE,cAAc,CAAC,MAAM;oBAC/B,UAAU,EAAE,cAAc,CAAC,UAAU;iBACtC,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,cAAc;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9C,QAAQ,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC7B,KAAK,QAAQ;gBACX,OAAO,IAAI,gBAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,KAAK,OAAO;gBACV,OAAO,IAAI,oBAAW,CAAC;oBACrB,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,UAAU,EAAE,WAAW,CAAC,UAAU;oBAClC,QAAQ,EAAE,WAAW,CAAC,GAAG;oBACzB,UAAU,EAAE,WAAW,CAAC,KAAK;iBAC9B,CAAC,CAAC;YACL;gBACE,MAAM,IAAI,KAAK,CAAC,qCAAqC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAA+D;QACnF,OAAO,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;YAC7D,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC1C,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK;YACtC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,eAAe,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAxbY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;IAWR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IACV,WAAA,IAAA,iBAAQ,GAAE,CAAA;qCAPkB,uBAAU;QACP,sBAAa;QAKP,0DAA0B;QAC1B,mCAAiB;GAX9C,YAAY,CAwbxB"}
1
+ {"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../../../src/core/llm/services/model.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Provider-truth-driven request repair for OpenAI-compatible endpoints.
3
+ *
4
+ * Model families disagree about which chat-completions parameters they accept:
5
+ * OpenAI's reasoning models (o-series, gpt-5 except gpt-5-chat) reject
6
+ * `max_tokens`, `frequency_penalty` and `presence_penalty` outright, and reject
7
+ * any non-default `temperature` / `top_p`. Encoding that taxonomy here would
8
+ * duplicate knowledge we do not own and would rot on every model release — and
9
+ * it cannot be complete anyway, because an Azure deployment name is chosen by
10
+ * whoever created it ("prod-llm" tells us nothing about the model behind it).
11
+ *
12
+ * So we let the provider tell us. A 400 names the offending parameter exactly:
13
+ *
14
+ * { error: { code: "unsupported_parameter", param: "max_tokens",
15
+ * message: "... Use 'max_completion_tokens' instead." } }
16
+ * { error: { code: "unsupported_value", param: "temperature",
17
+ * message: "... Only the default (1) value is supported." } }
18
+ *
19
+ * This middleware removes the named parameter, retries once per rejection, and
20
+ * REMEMBERS the verdict per model for the rest of the process, so only the first
21
+ * call to a given deployment pays the extra round-trip.
22
+ *
23
+ * The two codes are remembered at DIFFERENT scopes, because they say different
24
+ * things. `unsupported_parameter` means the deployment does not know the parameter
25
+ * at all, so it is dropped from every later request. `unsupported_value` means only
26
+ * the value sent was refused — the parameter itself is fine. Remembering the latter
27
+ * as a parameter-level drop is actively harmful: one call sending
28
+ * `reasoning_effort: "none"` to a deployment that only knows low/medium/high would
29
+ * otherwise strip `reasoning_effort` from EVERY later request, silently discarding
30
+ * the `"low"` latency win the triage/retrieval/citation-audit nodes depend on. So a
31
+ * value rejection is memoised against the (parameter, value) pair, and a later
32
+ * request carrying a different value for the same parameter is still sent.
33
+ */
34
+ /** Test seam — clears everything learned so far. */
35
+ export declare function resetLearnedUnsupportedParams(): void;
36
+ /**
37
+ * Wraps `fetch` so a rejected chat-completions parameter repairs itself.
38
+ *
39
+ * @param modelKey - Identifies the deployment the verdicts belong to. Two
40
+ * deployments of the same model name on different endpoints get separate
41
+ * entries, so one provider's rejection never suppresses a parameter another
42
+ * provider accepts.
43
+ * @param inner - The fetch to wrap. Composes with other middleware — passing
44
+ * `openRouterEscalatingFetch(...)` keeps its provider pinning intact.
45
+ */
46
+ export declare function unsupportedParamFetch(modelKey: string, inner?: typeof fetch): typeof fetch;
47
+ //# sourceMappingURL=unsupported-param-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-param-fetch.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/services/unsupported-param-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AA4CH,oDAAoD;AACpD,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAiFD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,OAAO,KAAK,CA0C1F"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * Provider-truth-driven request repair for OpenAI-compatible endpoints.
4
+ *
5
+ * Model families disagree about which chat-completions parameters they accept:
6
+ * OpenAI's reasoning models (o-series, gpt-5 except gpt-5-chat) reject
7
+ * `max_tokens`, `frequency_penalty` and `presence_penalty` outright, and reject
8
+ * any non-default `temperature` / `top_p`. Encoding that taxonomy here would
9
+ * duplicate knowledge we do not own and would rot on every model release — and
10
+ * it cannot be complete anyway, because an Azure deployment name is chosen by
11
+ * whoever created it ("prod-llm" tells us nothing about the model behind it).
12
+ *
13
+ * So we let the provider tell us. A 400 names the offending parameter exactly:
14
+ *
15
+ * { error: { code: "unsupported_parameter", param: "max_tokens",
16
+ * message: "... Use 'max_completion_tokens' instead." } }
17
+ * { error: { code: "unsupported_value", param: "temperature",
18
+ * message: "... Only the default (1) value is supported." } }
19
+ *
20
+ * This middleware removes the named parameter, retries once per rejection, and
21
+ * REMEMBERS the verdict per model for the rest of the process, so only the first
22
+ * call to a given deployment pays the extra round-trip.
23
+ *
24
+ * The two codes are remembered at DIFFERENT scopes, because they say different
25
+ * things. `unsupported_parameter` means the deployment does not know the parameter
26
+ * at all, so it is dropped from every later request. `unsupported_value` means only
27
+ * the value sent was refused — the parameter itself is fine. Remembering the latter
28
+ * as a parameter-level drop is actively harmful: one call sending
29
+ * `reasoning_effort: "none"` to a deployment that only knows low/medium/high would
30
+ * otherwise strip `reasoning_effort` from EVERY later request, silently discarding
31
+ * the `"low"` latency win the triage/retrieval/citation-audit nodes depend on. So a
32
+ * value rejection is memoised against the (parameter, value) pair, and a later
33
+ * request carrying a different value for the same parameter is still sent.
34
+ */
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.resetLearnedUnsupportedParams = resetLearnedUnsupportedParams;
37
+ exports.unsupportedParamFetch = unsupportedParamFetch;
38
+ /**
39
+ * Parameters that are not merely unsupported but RENAMED — dropping them would
40
+ * silently discard the caller's intent (an unbounded response instead of a
41
+ * capped one). This is parameter-level knowledge, stable across the whole
42
+ * OpenAI-compatible ecosystem, NOT a per-model taxonomy: it is only ever applied
43
+ * when the provider has already rejected the original name.
44
+ */
45
+ const PARAM_SUCCESSORS = {
46
+ max_tokens: "max_completion_tokens",
47
+ };
48
+ /** Bounds the repair loop: the API reports ONE rejected parameter per response,
49
+ * so a request carrying several needs one round-trip each. */
50
+ const MAX_REPAIRS = 6;
51
+ const UNSUPPORTED_CODES = new Set(["unsupported_parameter", "unsupported_value"]);
52
+ /** Canonical key for a parameter value, so `"none"` and `0.2` compare reliably. */
53
+ const valueKey = (value) => JSON.stringify(value ?? null);
54
+ /**
55
+ * Learned verdicts, keyed by model. Module-level on purpose: `ModelService`
56
+ * builds a fresh chat model per call, so anything held on the instance would
57
+ * re-learn (and re-pay the failed round-trip) on every request.
58
+ *
59
+ * model key → (rejected parameter → verdict)
60
+ */
61
+ const learned = new Map();
62
+ /** Test seam — clears everything learned so far. */
63
+ function resetLearnedUnsupportedParams() {
64
+ learned.clear();
65
+ }
66
+ /** Applies the verdicts learned so far for `modelKey`. Returns the body
67
+ * unchanged when nothing is known yet or the body is not JSON. */
68
+ function applyLearned(bodyStr, modelKey) {
69
+ const verdicts = learned.get(modelKey);
70
+ if (!verdicts?.size)
71
+ return bodyStr;
72
+ try {
73
+ const body = JSON.parse(bodyStr);
74
+ let changed = false;
75
+ for (const [param, verdict] of verdicts) {
76
+ if (!(param in body))
77
+ continue;
78
+ const value = body[param];
79
+ // A value-scoped verdict must not touch a request carrying a value the
80
+ // deployment has never refused — that value may well be accepted.
81
+ if (verdict.values && !verdict.values.has(valueKey(value)))
82
+ continue;
83
+ delete body[param];
84
+ if (verdict.successor)
85
+ body[verdict.successor] = value;
86
+ changed = true;
87
+ }
88
+ return changed ? JSON.stringify(body) : bodyStr;
89
+ }
90
+ catch {
91
+ return bodyStr;
92
+ }
93
+ }
94
+ /** Records a verdict, widening an existing entry rather than narrowing it: a
95
+ * parameter-level rejection always supersedes value-level ones, and a second
96
+ * rejected value joins the set instead of replacing it. */
97
+ function rememberVerdict(modelKey, param, verdict) {
98
+ const verdicts = learned.get(modelKey) ?? new Map();
99
+ const existing = verdicts.get(param);
100
+ if (existing && !verdict.values) {
101
+ // Parameter-level wins outright.
102
+ verdicts.set(param, verdict);
103
+ }
104
+ else if (existing?.values && verdict.values) {
105
+ for (const value of verdict.values)
106
+ existing.values.add(value);
107
+ }
108
+ else if (!existing) {
109
+ verdicts.set(param, verdict);
110
+ }
111
+ // existing is parameter-level and the new verdict is value-level → already covered.
112
+ learned.set(modelKey, verdicts);
113
+ }
114
+ /** Reads the rejected-parameter verdict out of a 400 payload. Returns undefined
115
+ * when the error is anything other than a rejected top-level parameter that the
116
+ * request actually carried — we only repair what we can prove we caused. */
117
+ function readVerdict(responseText, bodyStr) {
118
+ let param;
119
+ let code;
120
+ try {
121
+ const error = JSON.parse(responseText)?.error;
122
+ param = error?.param;
123
+ code = error?.code;
124
+ }
125
+ catch {
126
+ return undefined;
127
+ }
128
+ if (typeof param !== "string" || !param || typeof code !== "string" || !UNSUPPORTED_CODES.has(code))
129
+ return undefined;
130
+ let rejectedValue;
131
+ try {
132
+ const body = JSON.parse(bodyStr);
133
+ if (!(param in body))
134
+ return undefined;
135
+ rejectedValue = body[param];
136
+ }
137
+ catch {
138
+ return undefined;
139
+ }
140
+ // The successor rename applies to both codes: a rejected `max_tokens` value still
141
+ // means the cap belongs in `max_completion_tokens`, never that it should vanish.
142
+ const successor = PARAM_SUCCESSORS[param] ?? null;
143
+ return {
144
+ param,
145
+ rejectedValue,
146
+ verdict: code === "unsupported_value" ? { successor, values: new Set([valueKey(rejectedValue)]) } : { successor },
147
+ };
148
+ }
149
+ /**
150
+ * Wraps `fetch` so a rejected chat-completions parameter repairs itself.
151
+ *
152
+ * @param modelKey - Identifies the deployment the verdicts belong to. Two
153
+ * deployments of the same model name on different endpoints get separate
154
+ * entries, so one provider's rejection never suppresses a parameter another
155
+ * provider accepts.
156
+ * @param inner - The fetch to wrap. Composes with other middleware — passing
157
+ * `openRouterEscalatingFetch(...)` keeps its provider pinning intact.
158
+ */
159
+ function unsupportedParamFetch(modelKey, inner) {
160
+ // Resolved per call, never captured at construction: binding the global here
161
+ // would freeze whatever `fetch` existed when the model was built.
162
+ const send = (input, init) => (inner ?? fetch)(input, init);
163
+ return (async (input, init) => {
164
+ if (typeof init?.body !== "string")
165
+ return send(input, init);
166
+ let body = applyLearned(init.body, modelKey);
167
+ let response = await send(input, { ...init, body });
168
+ for (let repair = 0; repair < MAX_REPAIRS; repair++) {
169
+ if (response.status !== 400)
170
+ return response;
171
+ // Safe to drain: a 400 is never a stream. Anything we decide not to repair
172
+ // is handed back as an equivalent Response so the caller still sees it.
173
+ const responseText = await response.text();
174
+ const verdict = readVerdict(responseText, body);
175
+ if (!verdict) {
176
+ return new Response(responseText, {
177
+ status: response.status,
178
+ statusText: response.statusText,
179
+ headers: response.headers,
180
+ });
181
+ }
182
+ rememberVerdict(modelKey, verdict.param, verdict.verdict);
183
+ const scope = verdict.verdict.values
184
+ ? `'${verdict.param}: ${JSON.stringify(verdict.rejectedValue)}'`
185
+ : `'${verdict.param}'`;
186
+ console.warn(`[ModelService] "${modelKey}" rejected ${scope} — ` +
187
+ `${verdict.verdict.successor ? `sending '${verdict.verdict.successor}' instead` : "dropping it"} ` +
188
+ `for this and later calls${verdict.verdict.values ? " that send the same value" : ""}`);
189
+ body = applyLearned(body, modelKey);
190
+ response = await send(input, { ...init, body });
191
+ }
192
+ return response;
193
+ });
194
+ }
195
+ //# sourceMappingURL=unsupported-param-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-param-fetch.js","sourceRoot":"","sources":["../../../../src/core/llm/services/unsupported-param-fetch.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;;AA6CH,sEAEC;AA2FD,sDA0CC;AAlLD;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAqC;IACzD,UAAU,EAAE,uBAAuB;CACpC,CAAC;AAEF;+DAC+D;AAC/D,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAelF,mFAAmF;AACnF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;AAExD,oDAAoD;AACpD,SAAgB,6BAA6B;IAC3C,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED;mEACmE;AACnE,SAAS,YAAY,CAAC,OAAe,EAAE,QAAgB;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,EAAE,IAAI;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;gBAAE,SAAS;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,uEAAuE;YACvE,kEAAkE;YAClE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAAE,SAAS;YACrE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,IAAI,OAAO,CAAC,SAAS;gBAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YACvD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;4DAE4D;AAC5D,SAAS,eAAe,CAAC,QAAgB,EAAE,KAAa,EAAE,OAAgB;IACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAmB,CAAC;IACrE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,iCAAiC;QACjC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;SAAM,IAAI,QAAQ,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM;YAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,oFAAoF;IACpF,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;6EAE6E;AAC7E,SAAS,WAAW,CAClB,YAAoB,EACpB,OAAe;IAEf,IAAI,KAAc,CAAC;IACnB,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;QAC9C,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC;QACrB,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAEtH,IAAI,aAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACvC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,kFAAkF;IAClF,iFAAiF;IACjF,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAClD,OAAO;QACL,KAAK;QACL,aAAa;QACb,OAAO,EAAE,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE;KAClH,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CAAC,QAAgB,EAAE,KAAoB;IAC1E,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,IAAI,GAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE1E,OAAO,CAAC,KAAK,EAAE,KAAkC,EAAE,IAAkC,EAAE,EAAE;QACvF,IAAI,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE7D,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;YACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,QAAQ,CAAC;YAE7C,2EAA2E;YAC3E,wEAAwE;YACxE,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE;oBAChC,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;iBAC1B,CAAC,CAAC;YACL,CAAC;YAED,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM;gBAClC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG;gBAChE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,mBAAmB,QAAQ,cAAc,KAAK,KAAK;gBACjD,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,OAAO,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,aAAa,GAAG;gBAClG,2BAA2B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,EAAE,CACzF,CAAC;YAEF,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACpC,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAiB,CAAC;AACrB,CAAC"}