@cogenta/agents 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/agents/orchestrator.d.ts +3 -0
  2. package/dist/agents/orchestrator.d.ts.map +1 -1
  3. package/dist/agents/orchestrator.js +1 -0
  4. package/dist/agents/orchestrator.js.map +1 -1
  5. package/dist/index.d.ts +6 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/progress/job-store.d.ts +50 -0
  10. package/dist/progress/job-store.d.ts.map +1 -0
  11. package/dist/progress/job-store.js +47 -0
  12. package/dist/progress/job-store.js.map +1 -0
  13. package/dist/progress/types.d.ts +21 -0
  14. package/dist/progress/types.d.ts.map +1 -0
  15. package/dist/progress/types.js +3 -0
  16. package/dist/progress/types.js.map +1 -0
  17. package/dist/providers/anthropic.d.ts +9 -4
  18. package/dist/providers/anthropic.d.ts.map +1 -1
  19. package/dist/providers/anthropic.js +10 -10
  20. package/dist/providers/anthropic.js.map +1 -1
  21. package/dist/providers/catalog.d.ts +14 -0
  22. package/dist/providers/catalog.d.ts.map +1 -1
  23. package/dist/providers/catalog.js +1 -0
  24. package/dist/providers/catalog.js.map +1 -1
  25. package/dist/providers/defaults.d.ts +41 -12
  26. package/dist/providers/defaults.d.ts.map +1 -1
  27. package/dist/providers/defaults.js +70 -13
  28. package/dist/providers/defaults.js.map +1 -1
  29. package/dist/providers/google.d.ts +7 -3
  30. package/dist/providers/google.d.ts.map +1 -1
  31. package/dist/providers/google.js +9 -10
  32. package/dist/providers/google.js.map +1 -1
  33. package/dist/providers/openai.d.ts +30 -4
  34. package/dist/providers/openai.d.ts.map +1 -1
  35. package/dist/providers/openai.js +12 -12
  36. package/dist/providers/openai.js.map +1 -1
  37. package/dist/providers/registry.d.ts +8 -2
  38. package/dist/providers/registry.d.ts.map +1 -1
  39. package/dist/providers/registry.js +21 -4
  40. package/dist/providers/registry.js.map +1 -1
  41. package/dist/providers/request-signal.d.ts +12 -17
  42. package/dist/providers/request-signal.d.ts.map +1 -1
  43. package/dist/providers/request-signal.js +12 -17
  44. package/dist/providers/request-signal.js.map +1 -1
  45. package/dist/providers/types.d.ts +19 -10
  46. package/dist/providers/types.d.ts.map +1 -1
  47. package/dist/runtime/loop.d.ts.map +1 -1
  48. package/dist/runtime/loop.js +13 -6
  49. package/dist/runtime/loop.js.map +1 -1
  50. package/dist/runtime/retry.d.ts +2 -0
  51. package/dist/runtime/retry.d.ts.map +1 -1
  52. package/dist/runtime/retry.js +1 -0
  53. package/dist/runtime/retry.js.map +1 -1
  54. package/dist/runtime/types.d.ts +12 -2
  55. package/dist/runtime/types.d.ts.map +1 -1
  56. package/dist/site-plan/analyse-brief.d.ts.map +1 -1
  57. package/dist/site-plan/analyse-brief.js +1 -3
  58. package/dist/site-plan/analyse-brief.js.map +1 -1
  59. package/dist/site-plan/content-model.d.ts.map +1 -1
  60. package/dist/site-plan/content-model.js +1 -3
  61. package/dist/site-plan/content-model.js.map +1 -1
  62. package/dist/site-plan/demo-content.d.ts.map +1 -1
  63. package/dist/site-plan/demo-content.js +1 -3
  64. package/dist/site-plan/demo-content.js.map +1 -1
  65. package/dist/site-plan/skin-candidates.d.ts +6 -1
  66. package/dist/site-plan/skin-candidates.d.ts.map +1 -1
  67. package/dist/site-plan/skin-candidates.js +9 -0
  68. package/dist/site-plan/skin-candidates.js.map +1 -1
  69. package/dist/skin/generate.d.ts +14 -1
  70. package/dist/skin/generate.d.ts.map +1 -1
  71. package/dist/skin/generate.js +28 -12
  72. package/dist/skin/generate.js.map +1 -1
  73. package/dist/theme-creator/propose-theme.d.ts +12 -6
  74. package/dist/theme-creator/propose-theme.d.ts.map +1 -1
  75. package/dist/theme-creator/propose-theme.js +27 -19
  76. package/dist/theme-creator/propose-theme.js.map +1 -1
  77. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/providers/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,OAAO,CAAA;AAC9C,eAAO,MAAM,gCAAgC,IAAI,CAAA"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/providers/defaults.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,iBAAiB,EAAoB,MAAM,iBAAiB,CAAA;AAEpG;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAA;CACvC;AAsCD;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,sBAAsB,CAAC,CAWjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,IAAI,sBAAsB,CAMrE"}
@@ -1,15 +1,72 @@
1
+ import { CogentaError } from '@cogenta/core';
2
+ import { SITE_SETTINGS_SITE_SCOPE, siteSettingByKey } from '@cogenta/schema';
3
+ const MAX_OUTPUT_TOKENS_KEY = 'assistant.defaultMaxOutputTokens';
4
+ const REQUEST_TIMEOUT_SECONDS_KEY = 'assistant.defaultRequestTimeoutSeconds';
5
+ const MAX_CORRECTION_ATTEMPTS_KEY = 'assistant.defaultMaxCorrectionAttempts';
1
6
  /**
2
- * Built-in fallbacks, used only when an admin has not set the matching
3
- * per-provider value from `/admin/providers`
4
- * (`ProviderConfigStore`'s `maxOutputTokens`/`requestTimeoutMs`/
5
- * `maxCorrectionAttempts`) never picked over an admin's own choice, since
6
- * only the admin knows which model they configured and what it actually
7
- * needs. `8000`/`3` match the values a real, reproduced failure against a
8
- * reasoning-tier model (DeepSeek's `deepseek-v4-flash`) already forced this
9
- * codebase to converge on independently in more than one call site before
10
- * this file existed — kept here as the one shared floor instead of staying
11
- * duplicated per adapter.
12
- */
13
- export const FALLBACK_MAX_OUTPUT_TOKENS = 8000;
14
- export const FALLBACK_MAX_CORRECTION_ATTEMPTS = 3;
7
+ * The registry's own declared default for a numeric setting
8
+ * (`SITE_SETTINGS_REGISTRY`'s own `defaultValue`) — the single place either
9
+ * reader below gets a fallback number from, never a second copy kept in this
10
+ * package. Throwing here is not reachable in practice (the three keys this
11
+ * file reads are declared with a numeric `defaultValue` in
12
+ * `site-settings-registry.ts`); it exists because neither caller has any way
13
+ * to prove that from its own call site, and a silent fallback to some other
14
+ * literal here would be exactly the hardcoding this file exists to avoid.
15
+ */
16
+ function registryDefaultValue(key) {
17
+ const definition = siteSettingByKey(key);
18
+ if (definition !== undefined && typeof definition.defaultValue === 'number') {
19
+ return definition.defaultValue;
20
+ }
21
+ throw new CogentaError({
22
+ code: 'SITE_SETTING_INVALID',
23
+ message: `Site setting "${key}" has no numeric default registered.`,
24
+ hint: 'This is a registry bug — check the entry in SITE_SETTINGS_REGISTRY.',
25
+ });
26
+ }
27
+ /**
28
+ * A row exists only once an admin has actually written this key
29
+ * (`SiteSettingsStore`'s own contract) — absent means "use the registry's
30
+ * own `defaultValue`" (`registryDefaultValue` above).
31
+ */
32
+ async function resolveNumberSetting(store, key) {
33
+ const row = await store.get(key, SITE_SETTINGS_SITE_SCOPE);
34
+ return row !== null && typeof row.value === 'number' ? row.value : registryDefaultValue(key);
35
+ }
36
+ /**
37
+ * Reads the three `assistant.*` site settings and turns them into the shape
38
+ * every resolved provider client needs — the CLI wiring layer's own
39
+ * responsibility (`cogenta serve`, `packages/cli/src/commands/agent-runtime
40
+ * .ts`), exposed here so it never has to re-derive the key names or the
41
+ * seconds-to-milliseconds conversion itself.
42
+ */
43
+ export async function resolveProviderTuningDefaults(store) {
44
+ const [maxOutputTokens, requestTimeoutSeconds, maxCorrectionAttempts] = await Promise.all([
45
+ resolveNumberSetting(store, MAX_OUTPUT_TOKENS_KEY),
46
+ resolveNumberSetting(store, REQUEST_TIMEOUT_SECONDS_KEY),
47
+ resolveNumberSetting(store, MAX_CORRECTION_ATTEMPTS_KEY),
48
+ ]);
49
+ return {
50
+ maxOutputTokens,
51
+ requestTimeoutMs: requestTimeoutSeconds * 1000,
52
+ maxCorrectionAttempts,
53
+ };
54
+ }
55
+ /**
56
+ * The registry's own defaults with no live per-site override consulted at
57
+ * all — for the one caller with no `SiteSettingsStore` to read from in the
58
+ * first place: `cogenta skin generate`, a one-shot CLI command that works
59
+ * straight off `cogenta.config.mjs` and already bypasses every other
60
+ * admin-configured override (`ProviderConfigStore`'s own per-provider
61
+ * tuning included) rather than a running site's database. Still the single
62
+ * declared number (`SITE_SETTINGS_REGISTRY`'s own `defaultValue`), never a
63
+ * second constant duplicated for this one caller.
64
+ */
65
+ export function staticProviderTuningDefaults() {
66
+ return {
67
+ maxOutputTokens: registryDefaultValue(MAX_OUTPUT_TOKENS_KEY),
68
+ requestTimeoutMs: registryDefaultValue(REQUEST_TIMEOUT_SECONDS_KEY) * 1000,
69
+ maxCorrectionAttempts: registryDefaultValue(MAX_CORRECTION_ATTEMPTS_KEY),
70
+ };
71
+ }
15
72
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/providers/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAA;AAC9C,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/providers/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAA0B,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AA0BpG,MAAM,qBAAqB,GAAG,kCAAkC,CAAA;AAChE,MAAM,2BAA2B,GAAG,wCAAwC,CAAA;AAC5E,MAAM,2BAA2B,GAAG,wCAAwC,CAAA;AAE5E;;;;;;;;;GASG;AACH,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACxC,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC5E,OAAO,UAAU,CAAC,YAAY,CAAA;IAChC,CAAC;IACD,MAAM,IAAI,YAAY,CAAC;QACrB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,iBAAiB,GAAG,sCAAsC;QACnE,IAAI,EAAE,qEAAqE;KAC5E,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,oBAAoB,CAAC,KAAwB,EAAE,GAAW;IACvE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAA;IAC1D,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;AAC9F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,KAAwB;IAExB,MAAM,CAAC,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxF,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,CAAC;QAClD,oBAAoB,CAAC,KAAK,EAAE,2BAA2B,CAAC;QACxD,oBAAoB,CAAC,KAAK,EAAE,2BAA2B,CAAC;KACzD,CAAC,CAAA;IACF,OAAO;QACL,eAAe;QACf,gBAAgB,EAAE,qBAAqB,GAAG,IAAI;QAC9C,qBAAqB;KACtB,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,eAAe,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;QAC5D,gBAAgB,EAAE,oBAAoB,CAAC,2BAA2B,CAAC,GAAG,IAAI;QAC1E,qBAAqB,EAAE,oBAAoB,CAAC,2BAA2B,CAAC;KACzE,CAAA;AACH,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { ProviderTuningDefaults } from './defaults.js';
1
2
  import type { ChatRequest, ChatResponse, ProviderClient } from './types.js';
2
3
  type GooglePart = {
3
4
  readonly text: string;
@@ -54,10 +55,11 @@ interface GoogleResponseBody {
54
55
  }
55
56
  /**
56
57
  * Pure — no network. `fallbackMaxTokens` is the client's own resolved
57
- * `maxOutputTokens` (the admin's per-provider value, or the built-in floor)
58
- * — applied only when `request.maxTokens` itself is absent.
58
+ * `maxOutputTokens` (the admin's per-provider value, or the site-wide
59
+ * default) — applied only when `request.maxTokens` itself is absent.
60
+ * Required, not defaulted — see `buildAnthropicRequest`'s own doc comment.
59
61
  */
60
- export declare function buildGoogleRequest(request: ChatRequest, fallbackMaxTokens?: number): GoogleRequestBody;
62
+ export declare function buildGoogleRequest(request: ChatRequest, fallbackMaxTokens: number): GoogleRequestBody;
61
63
  /** Pure — no network. */
62
64
  export declare function parseGoogleResponse(body: GoogleResponseBody, decodeToolName?: (wire: string) => string): ChatResponse;
63
65
  export interface GoogleClientConfig {
@@ -69,6 +71,8 @@ export interface GoogleClientConfig {
69
71
  readonly maxOutputTokens?: number;
70
72
  readonly requestTimeoutMs?: number;
71
73
  readonly maxCorrectionAttempts?: number;
74
+ /** The site-wide floor (`resolveProviderTuningDefaults`, `assistant.*` site settings) — always required, never a built-in constant. */
75
+ readonly defaults: ProviderTuningDefaults;
72
76
  }
73
77
  /** API key injected at the runtime boundary — never in a prompt or tool input (rule R7). */
74
78
  export declare function createGoogleClient(config: GoogleClientConfig): ProviderClient;
@@ -1 +1 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { CogentaError } from '@cogenta/core';
2
2
  import { textOnlyContent } from './content-parts.js';
3
- import { FALLBACK_MAX_OUTPUT_TOKENS } from './defaults.js';
4
- import { DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS, requestSignalWithTimeout } from './request-signal.js';
3
+ import { requestSignalWithTimeout } from './request-signal.js';
5
4
  import { createToolNameDecoder, encodeToolName } from './tool-names.js';
6
5
  const DEFAULT_BASE_URL = 'https://generativelanguage.googleapis.com/v1beta/models';
7
6
  const STOP_REASON = {
@@ -61,10 +60,11 @@ function toGoogleContent(message) {
61
60
  }
62
61
  /**
63
62
  * Pure — no network. `fallbackMaxTokens` is the client's own resolved
64
- * `maxOutputTokens` (the admin's per-provider value, or the built-in floor)
65
- * — applied only when `request.maxTokens` itself is absent.
63
+ * `maxOutputTokens` (the admin's per-provider value, or the site-wide
64
+ * default) — applied only when `request.maxTokens` itself is absent.
65
+ * Required, not defaulted — see `buildAnthropicRequest`'s own doc comment.
66
66
  */
67
- export function buildGoogleRequest(request, fallbackMaxTokens = FALLBACK_MAX_OUTPUT_TOKENS) {
67
+ export function buildGoogleRequest(request, fallbackMaxTokens) {
68
68
  return {
69
69
  contents: request.messages.map(toGoogleContent),
70
70
  ...(request.system === undefined
@@ -129,17 +129,16 @@ export function createGoogleClient(config) {
129
129
  const doFetch = config.fetchImpl ?? fetch;
130
130
  const base = config.baseUrl ?? DEFAULT_BASE_URL;
131
131
  const url = `${base}/${config.model}:generateContent?key=${config.apiKey}`;
132
- const maxOutputTokens = config.maxOutputTokens ?? FALLBACK_MAX_OUTPUT_TOKENS;
133
- const requestTimeoutMs = config.requestTimeoutMs ?? DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS;
132
+ const maxOutputTokens = config.maxOutputTokens ?? config.defaults.maxOutputTokens;
133
+ const requestTimeoutMs = config.requestTimeoutMs ?? config.defaults.requestTimeoutMs;
134
+ const maxCorrectionAttempts = config.maxCorrectionAttempts ?? config.defaults.maxCorrectionAttempts;
134
135
  return {
135
136
  name: 'google',
136
137
  model: config.model,
137
138
  supportsVision: true,
138
139
  maxOutputTokens,
139
140
  requestTimeoutMs,
140
- ...(config.maxCorrectionAttempts === undefined
141
- ? {}
142
- : { maxCorrectionAttempts: config.maxCorrectionAttempts }),
141
+ maxCorrectionAttempts,
143
142
  async chat(request, options) {
144
143
  const signal = requestSignalWithTimeout(options?.signal, requestTimeoutMs);
145
144
  const response = await doFetch(url, {
@@ -1 +1 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ProviderTuningDefaults } from './defaults.js';
1
2
  import type { ChatRequest, ChatResponse, ProviderClient } from './types.js';
2
3
  interface OpenAiToolCall {
3
4
  readonly id: string;
@@ -24,7 +25,21 @@ interface OpenAiMessage {
24
25
  }
25
26
  export interface OpenAiRequestBody {
26
27
  readonly model: string;
27
- readonly max_tokens: number;
28
+ /**
29
+ * Exactly one of `max_tokens`/`max_completion_tokens` is ever set — never
30
+ * both — because OpenAI's own reasoning-tier models (o1, o3, and this
31
+ * catalog's gpt-5 family) reject a request carrying `max_tokens` outright
32
+ * (400 `Unsupported parameter`), rather than merely ignoring it. Which one
33
+ * a given request carries is decided by `buildOpenAiRequest`'s
34
+ * `useMaxCompletionTokens` parameter, itself driven by
35
+ * `ProviderCatalogEntry.usesMaxCompletionTokens` — `true` only for the
36
+ * `openai` catalog entry (fiche feedback, 2026-09-07: confirmed live
37
+ * against a real `gpt-5-mini` key). Every other `openai-compatible` vendor
38
+ * (OpenRouter, DeepSeek, Qwen, GLM, a custom endpoint) still speaks the
39
+ * older, more widely cloned `max_tokens` field.
40
+ */
41
+ readonly max_tokens?: number;
42
+ readonly max_completion_tokens?: number;
28
43
  readonly messages: readonly OpenAiMessage[];
29
44
  readonly tools?: readonly {
30
45
  readonly type: 'function';
@@ -51,10 +66,11 @@ interface OpenAiResponseBody {
51
66
  }
52
67
  /**
53
68
  * Pure — no network. `fallbackMaxTokens` is the client's own resolved
54
- * `maxOutputTokens` (the admin's per-provider value, or the built-in floor)
55
- * — applied only when `request.maxTokens` itself is absent.
69
+ * `maxOutputTokens` (the admin's per-provider value, or the site-wide
70
+ * default) — applied only when `request.maxTokens` itself is absent.
71
+ * Required, not defaulted — see `buildAnthropicRequest`'s own doc comment.
56
72
  */
57
- export declare function buildOpenAiRequest(request: ChatRequest, fallbackMaxTokens?: number): OpenAiRequestBody;
73
+ export declare function buildOpenAiRequest(request: ChatRequest, fallbackMaxTokens: number, useMaxCompletionTokens?: boolean): OpenAiRequestBody;
58
74
  /** Pure — no network. */
59
75
  export declare function parseOpenAiResponse(body: OpenAiResponseBody, decodeToolName?: (wire: string) => string): ChatResponse;
60
76
  export interface OpenAiClientConfig {
@@ -73,10 +89,20 @@ export interface OpenAiClientConfig {
73
89
  * this machine" policy scoped to a different vendor.
74
90
  */
75
91
  readonly name?: string;
92
+ /**
93
+ * `true` sends `max_completion_tokens` instead of `max_tokens` — set for
94
+ * an `openai-compatible` vendor whose endpoint rejects the older field
95
+ * outright (`catalog.ts`'s `ProviderCatalogEntry.usesMaxCompletionTokens`,
96
+ * currently only the genuine `openai` entry). Left unset, a client builds
97
+ * its request exactly as it did before this field existed.
98
+ */
99
+ readonly usesMaxCompletionTokens?: boolean;
76
100
  /** See `ProviderClient.maxOutputTokens`/`requestTimeoutMs`/`maxCorrectionAttempts`. */
77
101
  readonly maxOutputTokens?: number;
78
102
  readonly requestTimeoutMs?: number;
79
103
  readonly maxCorrectionAttempts?: number;
104
+ /** The site-wide floor (`resolveProviderTuningDefaults`, `assistant.*` site settings) — always required, never a built-in constant. */
105
+ readonly defaults: ProviderTuningDefaults;
80
106
  }
81
107
  /** API key injected at the runtime boundary — never in a prompt or tool input (rule R7). */
82
108
  export declare function createOpenAiClient(config: OpenAiClientConfig): ProviderClient;
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { CogentaError } from '@cogenta/core';
2
2
  import { textOnlyContent } from './content-parts.js';
3
- import { FALLBACK_MAX_OUTPUT_TOKENS } from './defaults.js';
4
- import { DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS, requestSignalWithTimeout } from './request-signal.js';
3
+ import { requestSignalWithTimeout } from './request-signal.js';
5
4
  import { createToolNameDecoder, encodeToolName } from './tool-names.js';
6
5
  const DEFAULT_BASE_URL = 'https://api.openai.com/v1/chat/completions';
7
6
  const STOP_REASON = {
@@ -61,18 +60,20 @@ function toOpenAiMessage(message) {
61
60
  }
62
61
  /**
63
62
  * Pure — no network. `fallbackMaxTokens` is the client's own resolved
64
- * `maxOutputTokens` (the admin's per-provider value, or the built-in floor)
65
- * — applied only when `request.maxTokens` itself is absent.
63
+ * `maxOutputTokens` (the admin's per-provider value, or the site-wide
64
+ * default) — applied only when `request.maxTokens` itself is absent.
65
+ * Required, not defaulted — see `buildAnthropicRequest`'s own doc comment.
66
66
  */
67
- export function buildOpenAiRequest(request, fallbackMaxTokens = FALLBACK_MAX_OUTPUT_TOKENS) {
67
+ export function buildOpenAiRequest(request, fallbackMaxTokens, useMaxCompletionTokens = false) {
68
68
  const messages = [];
69
69
  if (request.system !== undefined) {
70
70
  messages.push({ role: 'system', content: request.system });
71
71
  }
72
72
  messages.push(...request.messages.map(toOpenAiMessage));
73
+ const maxTokens = request.maxTokens ?? fallbackMaxTokens;
73
74
  return {
74
75
  model: request.model,
75
- max_tokens: request.maxTokens ?? fallbackMaxTokens,
76
+ ...(useMaxCompletionTokens ? { max_completion_tokens: maxTokens } : { max_tokens: maxTokens }),
76
77
  messages,
77
78
  ...(request.tools === undefined
78
79
  ? {}
@@ -167,17 +168,16 @@ export function createOpenAiClient(config) {
167
168
  const doFetch = config.fetchImpl ?? fetch;
168
169
  const url = config.baseUrl ?? DEFAULT_BASE_URL;
169
170
  const name = config.name ?? 'openai';
170
- const maxOutputTokens = config.maxOutputTokens ?? FALLBACK_MAX_OUTPUT_TOKENS;
171
- const requestTimeoutMs = config.requestTimeoutMs ?? DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS;
171
+ const maxOutputTokens = config.maxOutputTokens ?? config.defaults.maxOutputTokens;
172
+ const requestTimeoutMs = config.requestTimeoutMs ?? config.defaults.requestTimeoutMs;
173
+ const maxCorrectionAttempts = config.maxCorrectionAttempts ?? config.defaults.maxCorrectionAttempts;
172
174
  return {
173
175
  name,
174
176
  model: config.model,
175
177
  supportsVision: true,
176
178
  maxOutputTokens,
177
179
  requestTimeoutMs,
178
- ...(config.maxCorrectionAttempts === undefined
179
- ? {}
180
- : { maxCorrectionAttempts: config.maxCorrectionAttempts }),
180
+ maxCorrectionAttempts,
181
181
  async chat(request, options) {
182
182
  const signal = requestSignalWithTimeout(options?.signal, requestTimeoutMs);
183
183
  const response = await doFetch(url, {
@@ -186,7 +186,7 @@ export function createOpenAiClient(config) {
186
186
  'content-type': 'application/json',
187
187
  authorization: `Bearer ${config.apiKey}`,
188
188
  },
189
- body: JSON.stringify(buildOpenAiRequest(request, maxOutputTokens)),
189
+ body: JSON.stringify(buildOpenAiRequest(request, maxOutputTokens, config.usesMaxCompletionTokens ?? false)),
190
190
  signal,
191
191
  }).catch((cause) => {
192
192
  if (signal.aborted && options?.signal?.aborted !== true) {
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,mCAAmC,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AACnG,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAWvE,MAAM,gBAAgB,GAAG,4CAA4C,CAAA;AA6CrE,MAAM,WAAW,GAA+E;IAC9F,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,UAAU;IACtB,MAAM,EAAE,YAAY;IACpB,cAAc,EAAE,eAAe;CAChC,CAAA;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CACtB,OAA+B;IAE/B,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACtC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAA;IAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1B,IAAI,CAAC,IAAI,KAAK,MAAM;QAClB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAC5C,CAAC,CAAC;YACE,IAAI,EAAE,WAAoB;YAC1B,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,IAAI,CAAC,SAAS,WAAW,IAAI,CAAC,IAAI,EAAE,EAAE;SACjE,CACN,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAoB;IAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,YAAY,CAAC;gBACrB,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,gDAAgD;gBACzD,IAAI,EAAE,yDAAyD;aAChE,CAAC,CAAA;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;YAC/C,YAAY,EAAE,OAAO,CAAC,UAAU;SACjC,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAA;IACzC,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC;QACzC,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACnC,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,IAAI,EAAE,UAAmB;oBACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;iBACrF,CAAC,CAAC;aACJ,CAAC;KACP,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAoB,EACpB,iBAAiB,GAAW,0BAA0B;IAEtD,MAAM,QAAQ,GAAoB,EAAE,CAAA;IACpC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5D,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;IAEvD,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,iBAAiB;QAClD,QAAQ;QACR,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;YAC7B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAClC,IAAI,EAAE,UAAmB;oBACzB,QAAQ,EAAE;wBACR,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,UAAU,EAAE,IAAI,CAAC,WAAW;qBAC7B;iBACF,CAAC,CAAC;aACJ,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;KACnF,CAAA;AACH,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,mBAAmB,CACjC,IAAwB,EACxB,cAAc,GAA6B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI;IAEzD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,qDAAqD;YAC9D,IAAI,EAAE,wEAAwE;SAC/E,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,SAAS,GAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrF,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;KAC/C,CAAC,CAAC,CAAA;IAEH,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;QAC/B,SAAS;QACT,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC;QAC7C,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;KAC7F,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAClD,CAAC,CAAE,MAA4C;YAC/C,CAAC,CAAC,EAAE,CAAA;IACR,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,yDAAyD;YAClE,IAAI,EAAE,8DAA8D;YACpE,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAE7B;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAAC,QAAkB;IAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;IAClD,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IACxC,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACvE,MAAM,KAAK,GAAI,MAA6B,CAAC,KAAK,CAAA;YAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,MAAM,GAAG,KAAK,CAAA;iBACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBAC3E,MAAM,OAAO,GAAI,KAA8B,CAAC,OAAO,CAAA;gBACvD,IAAI,OAAO,OAAO,KAAK,QAAQ;oBAAE,MAAM,GAAG,OAAO,CAAA;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;IAClC,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IACrD,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IACtC,OAAO,SAAS,CAAC,MAAM,GAAG,iBAAiB;QACzC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG;QAC7C,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAwBD,4FAA4F;AAC5F,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAA;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAA;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAA;IACpC,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,0BAA0B,CAAA;IAC5E,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,mCAAmC,CAAA;IAEvF,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,cAAc,EAAE,IAAI;QACpB,eAAe;QACf,gBAAgB;QAChB,GAAG,CAAC,MAAM,CAAC,qBAAqB,KAAK,SAAS;YAC5C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,OAAoB,EAAE,OAAqB;YACpD,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAA;YAC1E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;gBAClC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;iBACzC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;gBAClE,MAAM;aACP,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAC1B,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;oBACxD,MAAM,IAAI,YAAY,CAAC;wBACrB,IAAI,EAAE,yBAAyB;wBAC/B,OAAO,EAAE,IAAI,IAAI,2BAA2B;wBAC5C,IAAI,EAAE,mFAAmF;wBACzF,KAAK;qBACN,CAAC,CAAA;gBACJ,CAAC;gBACD,MAAM,IAAI,YAAY,CAAC;oBACrB,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EAAE,mBAAmB,IAAI,sBAAsB;oBACtD,IAAI,EAAE,+DAA+D;oBACrE,KAAK;iBACN,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,YAAY,CAAC;oBACrB,IAAI,EAAE,uBAAuB;oBAC7B,OAAO,EAAE,IAAI,IAAI,8BAA8B;oBAC/C,IAAI,EAAE,2DAA2D;iBAClE,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,iEAAiE;gBACjE,iEAAiE;gBACjE,kEAAkE;gBAClE,oEAAoE;gBACpE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;gBAC9C,MAAM,IAAI,YAAY,CAAC;oBACrB,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EACL,MAAM,KAAK,SAAS;wBAClB,CAAC,CAAC,IAAI,IAAI,qBAAqB,QAAQ,CAAC,MAAM,GAAG;wBACjD,CAAC,CAAC,IAAI,IAAI,qBAAqB,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC/D,IAAI,EACF,QAAQ,CAAC,MAAM,KAAK,GAAG;wBACrB,CAAC,CAAC,2KAA2K;wBAC7K,CAAC,CAAC,sDAAsD;oBAC5D,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;iBAClF,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAA;YAC1D,OAAO,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAA;QAClE,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ProviderTuningDefaults } from './defaults.js';
1
2
  import type { ProviderClient } from './types.js';
2
3
  /**
3
4
  * Fiche 56: `provider` used to be a closed 3-literal union
@@ -21,7 +22,7 @@ export interface ProviderEntryConfig {
21
22
  * `buildClient` below).
22
23
  */
23
24
  readonly baseUrl?: string;
24
- /** See `ProviderClient.maxOutputTokens` — the admin's value for this provider, or absent for the built-in fallback. */
25
+ /** See `ProviderClient.maxOutputTokens` — the admin's value for this provider, or absent to fall back to the registry's own `defaults`. */
25
26
  readonly maxOutputTokens?: number;
26
27
  /** See `ProviderClient.requestTimeoutMs`. */
27
28
  readonly requestTimeoutMs?: number;
@@ -34,8 +35,13 @@ export type ProviderRegistryConfig = Readonly<Record<string, ProviderEntryConfig
34
35
  * simply has an empty registry, which is exactly what rule R2 requires ("le
35
36
  * CMS fonctionne sans IA"): nothing here fails to construct, `get()` is what
36
37
  * refuses, and only once an agent actually tries to run.
38
+ *
39
+ * `defaults` is the site-wide tuning floor (`resolveProviderTuningDefaults`,
40
+ * `assistant.*` site settings) every entry's own per-provider override falls
41
+ * back to — required, so no adapter this registry builds can ever fall back
42
+ * to a hardcoded constant instead.
37
43
  */
38
- export declare function createProviderRegistry(config: ProviderRegistryConfig): {
44
+ export declare function createProviderRegistry(config: ProviderRegistryConfig, defaults: ProviderTuningDefaults): {
39
45
  readonly get: (name: string) => ProviderClient;
40
46
  readonly has: (name: string) => boolean;
41
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,uHAAuH;IACvH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,6CAA6C;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,kDAAkD;IAClD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;CACxC;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAA;AAkDlF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG;IACtE,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,CAAA;IAC9C,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CACxC,CAoBA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAG3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,2IAA2I;IAC3I,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,6CAA6C;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,kDAAkD;IAClD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;CACxC;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAA;AAkElF;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,sBAAsB,EAC9B,QAAQ,EAAE,sBAAsB,GAC/B;IACD,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,CAAA;IAC9C,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CACxC,CAoBA"}
@@ -10,7 +10,7 @@ import { createOpenAiClient } from './openai.js';
10
10
  * endpoint" means structurally, not a separate `custom: true` flag to keep
11
11
  * in sync with this lookup.
12
12
  */
13
- function buildClient(name, entry) {
13
+ function buildClient(name, entry, defaults) {
14
14
  const catalogEntry = findProviderCatalogEntry(name);
15
15
  const tuning = {
16
16
  ...(entry.maxOutputTokens === undefined ? {} : { maxOutputTokens: entry.maxOutputTokens }),
@@ -25,6 +25,7 @@ function buildClient(name, entry) {
25
25
  model: entry.model,
26
26
  ...(entry.baseUrl === undefined ? {} : { baseUrl: entry.baseUrl }),
27
27
  ...tuning,
28
+ defaults,
28
29
  });
29
30
  }
30
31
  if (catalogEntry?.wireFormat === 'google') {
@@ -33,6 +34,7 @@ function buildClient(name, entry) {
33
34
  model: entry.model,
34
35
  ...(entry.baseUrl === undefined ? {} : { baseUrl: entry.baseUrl }),
35
36
  ...tuning,
37
+ defaults,
36
38
  });
37
39
  }
38
40
  // `wireFormat: 'openai-compatible'` (OpenAI itself, OpenRouter, DeepSeek,
@@ -46,18 +48,33 @@ function buildClient(name, entry) {
46
48
  hint: 'Set a baseUrl for a custom OpenAI-compatible endpoint, or use a catalog provider id.',
47
49
  });
48
50
  }
49
- return createOpenAiClient({ apiKey: entry.apiKey, model: entry.model, baseUrl, name, ...tuning });
51
+ return createOpenAiClient({
52
+ apiKey: entry.apiKey,
53
+ model: entry.model,
54
+ baseUrl,
55
+ name,
56
+ ...(catalogEntry?.usesMaxCompletionTokens === undefined
57
+ ? {}
58
+ : { usesMaxCompletionTokens: catalogEntry.usesMaxCompletionTokens }),
59
+ ...tuning,
60
+ defaults,
61
+ });
50
62
  }
51
63
  /**
52
64
  * One client per configured vendor — a site with no LLM provider configured
53
65
  * simply has an empty registry, which is exactly what rule R2 requires ("le
54
66
  * CMS fonctionne sans IA"): nothing here fails to construct, `get()` is what
55
67
  * refuses, and only once an agent actually tries to run.
68
+ *
69
+ * `defaults` is the site-wide tuning floor (`resolveProviderTuningDefaults`,
70
+ * `assistant.*` site settings) every entry's own per-provider override falls
71
+ * back to — required, so no adapter this registry builds can ever fall back
72
+ * to a hardcoded constant instead.
56
73
  */
57
- export function createProviderRegistry(config) {
74
+ export function createProviderRegistry(config, defaults) {
58
75
  const clients = new Map();
59
76
  for (const [name, entry] of Object.entries(config)) {
60
- clients.set(name, buildClient(name, entry));
77
+ clients.set(name, buildClient(name, entry, defaults));
61
78
  }
62
79
  return {
63
80
  has: (name) => clients.has(name),
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAoChD;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,KAA0B;IAC3D,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG;QACb,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1F,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC7F,GAAG,CAAC,KAAK,CAAC,qBAAqB,KAAK,SAAS;YAC3C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,EAAE,CAAC;KAC5D,CAAA;IAED,IAAI,YAAY,EAAE,UAAU,KAAK,WAAW,EAAE,CAAC;QAC7C,OAAO,qBAAqB,CAAC;YAC3B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAClE,GAAG,MAAM;SACV,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,YAAY,EAAE,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,kBAAkB,CAAC;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAClE,GAAG,MAAM;SACV,CAAC,CAAA;IACJ,CAAC;IAED,0EAA0E;IAC1E,wEAAwE;IACxE,0DAA0D;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,YAAY,EAAE,cAAc,CAAA;IAC7D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,YAAY,CAAC;YACrB,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,IAAI,IAAI,+DAA+D;YAChF,IAAI,EAAE,sFAAsF;SAC7F,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;AACnG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA8B;IAInE,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAA;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO;QACL,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAChC,GAAG,CAAC,IAAI;YACN,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,YAAY,CAAC;oBACrB,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,sBAAsB,IAAI,gCAAgC;oBACnE,IAAI,EAAE,sEAAsE;iBAC7E,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,18 @@
1
- /**
2
- * Every default-`false` timeout: none of the three adapters ever bounded a
3
- * model call on their own — `ChatOptions.signal` only cancels when a caller
4
- * (the run loop's own cancellation, task 2) supplies one, and the run loop
5
- * never does for a single chat turn triggered by `POST
6
- * .../conversation/messages`. Reproduced live: a stalled DeepSeek response
7
- * left that request (and the browser tab awaiting it) hung for minutes with
8
- * no error, nothing in the server log, and no way to recover short of
9
- * killing the process. This is the floor every adapter now falls back to
10
- * when the caller supplies no signal of its own — a stalled vendor fails
11
- * with a named error instead of hanging the caller forever.
12
- */
13
- export declare const DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS = 180000;
14
1
  /**
15
2
  * The caller's own signal (if any) combined with a timeout floor, so a
16
3
  * cancellation the run loop already wants (budget exceeded, kill switch)
17
4
  * still works exactly as before, and an otherwise-uncancelled call still
18
- * gives up eventually. `timeoutMs` defaults to the real floor above —
19
- * overridable only so a test can prove the behaviour without a real
20
- * two-minute wait.
5
+ * gives up eventually.
6
+ *
7
+ * `timeoutMs` is required — every real caller (the three provider adapters)
8
+ * always resolves a concrete `requestTimeoutMs` before calling this
9
+ * (`ProviderClient.requestTimeoutMs`, itself always a number: the admin's
10
+ * per-provider override or the site-wide `assistant.defaultRequestTimeoutSeconds`
11
+ * floor, `SITE_SETTINGS_REGISTRY` in `@cogenta/schema`). This function used
12
+ * to default it to a `DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS` constant — fiche
13
+ * feedback: that hid a real site behaviour (what happens when a call to a
14
+ * stalled vendor never returns — reproduced live once, see the changeset
15
+ * history) behind a number nothing but this file's own comment ever named.
21
16
  */
22
- export declare function requestSignalWithTimeout(callerSignal: AbortSignal | undefined, timeoutMs?: number): AbortSignal;
17
+ export declare function requestSignalWithTimeout(callerSignal: AbortSignal | undefined, timeoutMs: number): AbortSignal;
23
18
  //# sourceMappingURL=request-signal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-signal.d.ts","sourceRoot":"","sources":["../../src/providers/request-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mCAAmC,SAAU,CAAA;AAE1D;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,WAAW,GAAG,SAAS,EACrC,SAAS,GAAE,MAA4C,GACtD,WAAW,CAGb"}
1
+ {"version":3,"file":"request-signal.d.ts","sourceRoot":"","sources":["../../src/providers/request-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,WAAW,GAAG,SAAS,EACrC,SAAS,EAAE,MAAM,GAChB,WAAW,CAGb"}
@@ -1,25 +1,20 @@
1
- /**
2
- * Every default-`false` timeout: none of the three adapters ever bounded a
3
- * model call on their own — `ChatOptions.signal` only cancels when a caller
4
- * (the run loop's own cancellation, task 2) supplies one, and the run loop
5
- * never does for a single chat turn triggered by `POST
6
- * .../conversation/messages`. Reproduced live: a stalled DeepSeek response
7
- * left that request (and the browser tab awaiting it) hung for minutes with
8
- * no error, nothing in the server log, and no way to recover short of
9
- * killing the process. This is the floor every adapter now falls back to
10
- * when the caller supplies no signal of its own — a stalled vendor fails
11
- * with a named error instead of hanging the caller forever.
12
- */
13
- export const DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS = 180_000;
14
1
  /**
15
2
  * The caller's own signal (if any) combined with a timeout floor, so a
16
3
  * cancellation the run loop already wants (budget exceeded, kill switch)
17
4
  * still works exactly as before, and an otherwise-uncancelled call still
18
- * gives up eventually. `timeoutMs` defaults to the real floor above —
19
- * overridable only so a test can prove the behaviour without a real
20
- * two-minute wait.
5
+ * gives up eventually.
6
+ *
7
+ * `timeoutMs` is required — every real caller (the three provider adapters)
8
+ * always resolves a concrete `requestTimeoutMs` before calling this
9
+ * (`ProviderClient.requestTimeoutMs`, itself always a number: the admin's
10
+ * per-provider override or the site-wide `assistant.defaultRequestTimeoutSeconds`
11
+ * floor, `SITE_SETTINGS_REGISTRY` in `@cogenta/schema`). This function used
12
+ * to default it to a `DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS` constant — fiche
13
+ * feedback: that hid a real site behaviour (what happens when a call to a
14
+ * stalled vendor never returns — reproduced live once, see the changeset
15
+ * history) behind a number nothing but this file's own comment ever named.
21
16
  */
22
- export function requestSignalWithTimeout(callerSignal, timeoutMs = DEFAULT_PROVIDER_REQUEST_TIMEOUT_MS) {
17
+ export function requestSignalWithTimeout(callerSignal, timeoutMs) {
23
18
  const timeoutSignal = AbortSignal.timeout(timeoutMs);
24
19
  return callerSignal === undefined ? timeoutSignal : AbortSignal.any([callerSignal, timeoutSignal]);
25
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request-signal.js","sourceRoot":"","sources":["../../src/providers/request-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,OAAO,CAAA;AAE1D;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAqC,EACrC,SAAS,GAAW,mCAAmC;IAEvD,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACpD,OAAO,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAA;AACpG,CAAC"}
1
+ {"version":3,"file":"request-signal.js","sourceRoot":"","sources":["../../src/providers/request-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAqC,EACrC,SAAiB;IAEjB,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACpD,OAAO,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAA;AACpG,CAAC"}