@futdevpro/fsm-dynamo 1.16.22 → 1.16.24

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.
@@ -1 +1 @@
1
- {"version":3,"file":"aai-models.const.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AA4D7E,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAmE9C,CAAC"}
1
+ {"version":3,"file":"aai-models.const.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAiE7E,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAmE9C,CAAC"}
@@ -28,14 +28,19 @@ const AAI_OPUS_SETTINGS = {
28
28
  unsupported: ['temperature', 'topP', 'topK'],
29
29
  constraints: {
30
30
  maxTokens: {
31
- note: 'Messages API: "Different models have different maximum values for this parameter" the per-model ' +
32
- 'cap lives in `maxOutputTokens`, so no global min/max is encoded. Source: platform.claude.com/docs/en/api/messages, verified 2026-07-21.',
31
+ note: 'REQUIRED empirically verified by live capture 2026-07-21: omitting it returns HTTP 400 ' +
32
+ '`{"type":"error","error":{"type":"invalid_request_error","message":"max_tokens: Field required"},"request_id":"req_..."}`. ' +
33
+ 'The published docs do NOT state this, hence the capture. Per-model maximum varies (see `maxOutputTokens`), ' +
34
+ 'so no global min/max is encoded.',
33
35
  },
34
36
  },
35
37
  };
36
38
  /**
37
39
  * Sonnet / Haiku still ACCEPT the sampling params (only Opus 4.7+ rejects them).
38
40
  *
41
+ * **`topK`: NINCS bound kodolva** — live capture 2026-07-21: a `top_k: -1` **HTTP 200-zal ATMENT**, tehat a
42
+ * szerver nem validalja alulrol. Egy kitalalt `min: 0` itt hibas clamp-et okozna.
43
+ *
39
44
  * **Fontos provider-kulonbseg:** az Anthropic `temperature` maximuma **1.0**, NEM 2.0 mint az OpenAI-nal —
40
45
  * egy OpenAI-nal ervenyes `temperature: 1.5` itt ervenytelen. A validator ezt most elkapja.
41
46
  * `topP` / `topK`: az API-referencia NEM ad meg szamszeru hatarokat → szandekosan nem kodolunk bele semmit.
@@ -1 +1 @@
1
- {"version":3,"file":"aai-models.const.js","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AACpE,2EAAuE;AAGvE,6DAA0D;AAE1D;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,MAAM,iBAAiB,GAAgC;IACrD,SAAS,EAAE,CAAE,WAAW,CAAE;IAC1B,WAAW,EAAE,CAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAE;IAC9C,WAAW,EAAE;QACX,SAAS,EAAE;YACT,IAAI,EAAE,oGAAoG;gBACxG,yIAAyI;SAC5I;KACF;CACF,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAgC;IACzD,SAAS,EAAE,CAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAE;IACjD,WAAW,EAAE,CAAE,MAAM,CAAE;IACvB,WAAW,EAAE;QACX,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,2FAA2F;gBAC/F,wEAAwE;SAC3E;QACD,SAAS,EAAE;YACT,IAAI,EAAE,oGAAoG;gBACxG,wGAAwG;SAC3G;KACF;CACF,CAAC;AACW,QAAA,eAAe,GAAwB;IAClD;QACE,EAAE,EAAE,+BAAc,CAAC,eAAe;QAClC,QAAQ,EAAE,mCAAgB,CAAC,SAAS;QACpC,SAAS,EAAE,sCAAiB,CAAC,IAAI;QACjC,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,MAAM;QACZ,cAAc,EAAE,iBAAiB;QACjC,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,SAAS;QACxB,eAAe,EAAE,OAAO;QACxB,YAAY,EAAE;YACZ,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB;KACF;IACD;QACE,EAAE,EAAE,+BAAc,CAAC,iBAAiB;QACpC,QAAQ,EAAE,mCAAgB,CAAC,SAAS;QACpC,SAAS,EAAE,sCAAiB,CAAC,IAAI;QACjC,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE,qBAAqB;QACrC,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,SAAS;QACxB,eAAe,EAAE,MAAM;QACvB,YAAY,EAAE;YACZ,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB;KACF;IACD;QACE,EAAE,EAAE,+BAAc,CAAC,gBAAgB;QACnC,QAAQ,EAAE,mCAAgB,CAAC,SAAS;QACpC,SAAS,EAAE,sCAAiB,CAAC,IAAI;QACjC,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,OAAO;QACb,cAAc,EAAE,qBAAqB;QACrC,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,YAAY,EAAE;YACZ,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"aai-models.const.js","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AACpE,2EAAuE;AAGvE,6DAA0D;AAE1D;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,MAAM,iBAAiB,GAAgC;IACrD,SAAS,EAAE,CAAE,WAAW,CAAE;IAC1B,WAAW,EAAE,CAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAE;IAC9C,WAAW,EAAE;QACX,SAAS,EAAE;YACT,IAAI,EAAE,2FAA2F;gBAC/F,6HAA6H;gBAC7H,6GAA6G;gBAC7G,kCAAkC;SACrC;KACF;CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,qBAAqB,GAAgC;IACzD,SAAS,EAAE,CAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAE;IACjD,WAAW,EAAE,CAAE,MAAM,CAAE;IACvB,WAAW,EAAE;QACX,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,2FAA2F;gBAC/F,wEAAwE;SAC3E;QACD,SAAS,EAAE;YACT,IAAI,EAAE,oGAAoG;gBACxG,wGAAwG;SAC3G;KACF;CACF,CAAC;AACW,QAAA,eAAe,GAAwB;IAClD;QACE,EAAE,EAAE,+BAAc,CAAC,eAAe;QAClC,QAAQ,EAAE,mCAAgB,CAAC,SAAS;QACpC,SAAS,EAAE,sCAAiB,CAAC,IAAI;QACjC,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,MAAM;QACZ,cAAc,EAAE,iBAAiB;QACjC,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,SAAS;QACxB,eAAe,EAAE,OAAO;QACxB,YAAY,EAAE;YACZ,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB;KACF;IACD;QACE,EAAE,EAAE,+BAAc,CAAC,iBAAiB;QACpC,QAAQ,EAAE,mCAAgB,CAAC,SAAS;QACpC,SAAS,EAAE,sCAAiB,CAAC,IAAI;QACjC,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE,qBAAqB;QACrC,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,SAAS;QACxB,eAAe,EAAE,MAAM;QACvB,YAAY,EAAE;YACZ,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB;KACF;IACD;QACE,EAAE,EAAE,+BAAc,CAAC,gBAAgB;QACnC,QAAQ,EAAE,mCAAgB,CAAC,SAAS;QACpC,SAAS,EAAE,sCAAiB,CAAC,IAAI;QACjC,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,OAAO;QACb,cAAc,EAAE,qBAAqB;QACrC,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,YAAY,EAAE;YACZ,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gai-models.const.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AA+C7E,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAuF9C,CAAC"}
1
+ {"version":3,"file":"gai-models.const.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAuE7E,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAuF9C,CAAC"}
@@ -26,6 +26,30 @@ const GAI_CHAT_SETTINGS = {
26
26
  supported: ['temperature', 'maxTokens', 'topP'],
27
27
  unsupported: ['frequencyPenalty', 'presencePenalty'],
28
28
  extraParams: ['topK', 'candidateCount', 'responseSchema', 'thinkingConfig', 'toolConfig'],
29
+ // A Gemini-doksi NEM publikal szamhatarokat — az alabbiakat SZANDEKOSAN kivaltott hibauzenetekbol
30
+ // mertuk ki (live capture 2026-07-21). Ez volt az EGYETLEN mod verifikalt bound-okhoz jutni.
31
+ constraints: {
32
+ temperature: {
33
+ min: 0,
34
+ max: 2,
35
+ note: 'Capture 2026-07-21: "temperature must be in the range [0.0, 2.0]." — azonos az OpenAI-jal, ' +
36
+ 'és NEM az Anthropic 1.0-s plafonjával.',
37
+ },
38
+ topP: {
39
+ min: 0,
40
+ max: 1,
41
+ note: 'Capture 2026-07-21: "top_p must be in the range [0.0, 1.0]."',
42
+ },
43
+ topK: {
44
+ min: 0,
45
+ note: 'Capture 2026-07-21: "top_k must be nonnegative." — felso hatart a szerver NEM kozolt, ezert nincs max.',
46
+ },
47
+ candidateCount: {
48
+ min: 1,
49
+ max: 8,
50
+ note: 'Capture 2026-07-21: "candidate_count must be in the range [1, 8]."',
51
+ },
52
+ },
29
53
  };
30
54
  /**
31
55
  * Mint {@link GAI_CHAT_SETTINGS}, de rogziti a Pro-preview NEM-nyilvanvalo default-jat: ha a hivas nem ad
@@ -1 +1 @@
1
- {"version":3,"file":"gai-models.const.js","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gai-models.const.js","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"oai-models.const.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAyG7E,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAuP9C,CAAC"}
1
+ {"version":3,"file":"oai-models.const.d.ts","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AA0J7E,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAuP9C,CAAC"}
@@ -20,22 +20,49 @@ const oai_model_enum_1 = require("../_enums/oai-model.enum");
20
20
  * `documentations/plans/ai-mocking-system/FR-048-LAYER-A.md`.
21
21
  */
22
22
  /**
23
- * Reasoning models (`gpt-5.x`, `o`-series) REJECT the sampling params with HTTP 400 and
24
- * instead expose a `reasoningEffort` knob.
23
+ * Models that MEASURABLY reject the sampling params (HTTP 400) and expose `reasoningEffort` instead.
25
24
  *
26
- * Source: FR-047 code-review fix `514153f` (`isReasoningModel` = `/^gpt-5/ || /^o[0-9]/`,
27
- * which omits the 4 sampling params) + `FR-048-per-model-agnostic-settings.md` §Problem.
28
- * Verified 2026-06-01. Numeric ranges for other params are intentionally NOT encoded yet —
29
- * pending the provider-doc capture pass (a wrong clamp would silently alter live calls).
25
+ * **Live capture 2026-07-21** confirmed rejecting: `gpt-5.5`, `o3-mini`, `o4-mini`. Two distinct
26
+ * semantics were observed and both mean "do not send it":
27
+ * - `unsupported_parameter` the param is not supported at all (o3-mini).
28
+ * - `unsupported_value` the param exists but only the default is allowed (gpt-5.5, o4-mini:
29
+ * "does not support 0.5 with this model. Only the default (1)").
30
+ *
31
+ * ⚠️ This list is NOT the whole `gpt-5.x` family — see {@link OAI_SAMPLING_ACCEPTED}. The earlier
32
+ * family-wide assumption (FR-047 `isReasoningModel` = `/^gpt-5/`) was falsified by the capture.
30
33
  */
31
- const OAI_REASONING_SETTINGS = {
34
+ const OAI_SAMPLING_REJECTED = {
32
35
  supported: ['maxTokens'],
33
36
  unsupported: ['temperature', 'topP', 'frequencyPenalty', 'presencePenalty'],
34
37
  extraParams: ['reasoningEffort'],
35
38
  constraints: {
36
39
  reasoningEffort: {
37
40
  allowed: ['none', 'low', 'medium', 'high', 'xhigh'],
38
- note: 'Reasoning-only knob; non-reasoning models have none. Source: FR-048 §Problem, verified 2026-06-01.',
41
+ note: 'Reasoning-only knob. Source: FR-048 §Problem (2026-06-01); allowed-set not re-verified by capture.',
42
+ },
43
+ },
44
+ };
45
+ /**
46
+ * Same shape as {@link OAI_SAMPLING_REJECTED}, but **NOT verified by live capture** — kept on the
47
+ * conservative (reject) assumption.
48
+ *
49
+ * Applies to `gpt-5.5-pro` and `o3-pro` only: the pro-tier models were deliberately NOT probed (cost).
50
+ * (`gpt-5.4` was here too, until the 2026-07-21 probe showed it ACCEPTS — see OAI_SAMPLING_ACCEPTED.
51
+ * The emerging pattern is a GENERATION boundary, not "reasoning vs not": the whole 5.4 line accepts,
52
+ * 5.5 rejects. That makes the pro-tier behaviour genuinely unpredictable from the family name alone.)
53
+ *
54
+ * **Risk direction, stated honestly:** if such a model actually ACCEPTS the params, the reconciler
55
+ * drops them silently → the caller's temperature is quietly ignored. That is the milder failure vs.
56
+ * a hard 400, which is why the conservative side was chosen — but it IS an assumption, not a fact.
57
+ * Resolve by probing these three models (one cheap error-call each).
58
+ */
59
+ const OAI_SAMPLING_UNVERIFIED = {
60
+ supported: ['maxTokens'],
61
+ unsupported: ['temperature', 'topP', 'frequencyPenalty', 'presencePenalty'],
62
+ extraParams: ['reasoningEffort'],
63
+ constraints: {
64
+ reasoningEffort: {
65
+ note: 'UNVERIFIED (no live capture) — assumption inherited from the FR-047 family-wide rule.',
39
66
  },
40
67
  },
41
68
  };
@@ -72,11 +99,31 @@ const OAI_CLASSIC_CHAT_SETTINGS = {
72
99
  },
73
100
  };
74
101
  /**
75
- * Embedding models take no sampling params; the one real knob is `dimensions`.
102
+ * `gpt-5.4-mini` / `gpt-5.4-nano` **MEASURABLY ACCEPT** all four sampling params.
103
+ *
104
+ * **Live capture 2026-07-21:** `temperature` / `topP` / `frequencyPenalty` / `presencePenalty` each
105
+ * returned HTTP 200 with `reasoning_tokens: 0`. They therefore behave like classic chat models, NOT
106
+ * like the rejecting reasoning models — despite matching the `/^gpt-5/` pattern that FR-047 used.
107
+ *
108
+ * `gpt-5.4` (base) was probed separately on 2026-07-21 and ALSO accepts (HTTP 200). The pattern is
109
+ * therefore a **generation boundary**, not "reasoning vs not": the whole 5.4 line accepts, 5.5 rejects.
110
+ * That is precisely why per-model data beats a family-wide regex.
111
+ * Bounds are the documented OpenAI ranges (see {@link OAI_CLASSIC_CHAT_SETTINGS}).
112
+ */
113
+ const OAI_SAMPLING_ACCEPTED = {
114
+ ...OAI_CLASSIC_CHAT_SETTINGS,
115
+ extraParams: ['reasoningEffort'],
116
+ };
117
+ /**
118
+ * Embedding models: the one real knob is `dimensions`.
76
119
  *
77
- * The sampling params are listed as `unsupported` so the reconciler DROPS them dropping a
78
- * meaningless param from an embeddings call is always safe, regardless of whether the API
79
- * would 400 or silently ignore it. Max/default dims per the `DyFM_OAI_Model` JSDoc (verified 2026-06).
120
+ * **Live capture 2026-07-21 CORRECTION:** the sampling params are **NOT rejected**; sending
121
+ * `temperature` to `/v1/embeddings` returns **HTTP 200 and is silently ignored**. They are still listed
122
+ * under `unsupported` so the reconciler DROPS them (dropping a meaningless param is always safe and
123
+ * keeps requests clean) — but note that this does NOT mean the API would 400. The validator's
124
+ * `unsupported_parameter` error for these is therefore stricter than the live API.
125
+ * Max/default dims: 1536 / 3072 — confirmed by capture
126
+ * ("Invalid value for 'dimensions' = 5000. Must be less than or equal to 1536.").
80
127
  */
81
128
  const OAI_EMBEDDING_SETTINGS_SMALL = {
82
129
  unsupported: ['temperature', 'topP', 'frequencyPenalty', 'presencePenalty', 'maxTokens'],
@@ -108,7 +155,7 @@ exports.DyFM_OAI_Models = [
108
155
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
109
156
  displayName: 'GPT-5.5',
110
157
  tier: 'flagship',
111
- settingsSchema: OAI_REASONING_SETTINGS,
158
+ settingsSchema: OAI_SAMPLING_REJECTED,
112
159
  status: 'ga',
113
160
  contextWindow: 1_050_000,
114
161
  maxOutputTokens: 128_000,
@@ -130,7 +177,7 @@ exports.DyFM_OAI_Models = [
130
177
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
131
178
  displayName: 'GPT-5.5 Pro',
132
179
  tier: 'pro',
133
- settingsSchema: OAI_REASONING_SETTINGS,
180
+ settingsSchema: OAI_SAMPLING_UNVERIFIED,
134
181
  status: 'ga',
135
182
  contextWindow: 1_050_000,
136
183
  maxOutputTokens: 128_000,
@@ -152,7 +199,7 @@ exports.DyFM_OAI_Models = [
152
199
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
153
200
  displayName: 'GPT-5.4',
154
201
  tier: 'flagship',
155
- settingsSchema: OAI_REASONING_SETTINGS,
202
+ settingsSchema: OAI_SAMPLING_ACCEPTED,
156
203
  status: 'ga',
157
204
  contextWindow: 1_000_000,
158
205
  maxOutputTokens: 128_000,
@@ -174,7 +221,7 @@ exports.DyFM_OAI_Models = [
174
221
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
175
222
  displayName: 'GPT-5.4 mini',
176
223
  tier: 'mini',
177
- settingsSchema: OAI_REASONING_SETTINGS,
224
+ settingsSchema: OAI_SAMPLING_ACCEPTED,
178
225
  status: 'ga',
179
226
  contextWindow: 400_000,
180
227
  maxOutputTokens: 128_000,
@@ -196,7 +243,7 @@ exports.DyFM_OAI_Models = [
196
243
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
197
244
  displayName: 'GPT-5.4 nano',
198
245
  tier: 'nano',
199
- settingsSchema: OAI_REASONING_SETTINGS,
246
+ settingsSchema: OAI_SAMPLING_ACCEPTED,
200
247
  status: 'ga',
201
248
  contextWindow: 400_000,
202
249
  maxOutputTokens: 128_000,
@@ -218,7 +265,7 @@ exports.DyFM_OAI_Models = [
218
265
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
219
266
  displayName: 'o3-pro',
220
267
  tier: 'pro',
221
- settingsSchema: OAI_REASONING_SETTINGS,
268
+ settingsSchema: OAI_SAMPLING_UNVERIFIED,
222
269
  status: 'ga',
223
270
  contextWindow: 200_000,
224
271
  maxOutputTokens: 100_000,
@@ -1 +1 @@
1
- {"version":3,"file":"oai-models.const.js","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oai-models.const.js","sourceRoot":"","sources":["../../../../../../src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/fsm-dynamo",
3
- "version": "01.16.22",
3
+ "version": "01.16.24",
4
4
  "description": "Full Stack Model Collection for Dynamic (NodeJS-Typescript) Framework called Dynamo, by Future Development Ltd.",
5
5
  "DyBu_settings": {
6
6
  "packageType": "full-stack-package",
@@ -0,0 +1,310 @@
1
+ [
2
+ {
3
+ "id": "oai-reasoning-temperature",
4
+ "provider": "open-ai",
5
+ "model": "gpt-5.4-mini",
6
+ "intent": "reasoning + temperature",
7
+ "httpStatus": 400,
8
+ "unexpectedSuccess": false,
9
+ "providerErrorBody": {
10
+ "error": {
11
+ "message": "Could not finish the message because max_tokens or model output limit was reached. Please try again with higher max_tokens.",
12
+ "type": "invalid_request_error",
13
+ "param": null,
14
+ "code": null
15
+ }
16
+ },
17
+ "capturedAt": "2026-07-22T00:04:01.091Z"
18
+ },
19
+ {
20
+ "id": "oai-reasoning-top_p",
21
+ "provider": "open-ai",
22
+ "model": "gpt-5.4-mini",
23
+ "intent": "reasoning + top_p",
24
+ "httpStatus": 400,
25
+ "unexpectedSuccess": false,
26
+ "providerErrorBody": {
27
+ "error": {
28
+ "message": "Could not finish the message because max_tokens or model output limit was reached. Please try again with higher max_tokens.",
29
+ "type": "invalid_request_error",
30
+ "param": null,
31
+ "code": null
32
+ }
33
+ },
34
+ "capturedAt": "2026-07-22T00:04:02.064Z"
35
+ },
36
+ {
37
+ "id": "oai-reasoning-frequency_penalty",
38
+ "provider": "open-ai",
39
+ "model": "gpt-5.4-mini",
40
+ "intent": "reasoning + frequency_penalty",
41
+ "httpStatus": 400,
42
+ "unexpectedSuccess": false,
43
+ "providerErrorBody": {
44
+ "error": {
45
+ "message": "Could not finish the message because max_tokens or model output limit was reached. Please try again with higher max_tokens.",
46
+ "type": "invalid_request_error",
47
+ "param": null,
48
+ "code": null
49
+ }
50
+ },
51
+ "capturedAt": "2026-07-22T00:04:03.794Z"
52
+ },
53
+ {
54
+ "id": "oai-reasoning-presence_penalty",
55
+ "provider": "open-ai",
56
+ "model": "gpt-5.4-mini",
57
+ "intent": "reasoning + presence_penalty",
58
+ "httpStatus": 400,
59
+ "unexpectedSuccess": false,
60
+ "providerErrorBody": {
61
+ "error": {
62
+ "message": "Could not finish the message because max_tokens or model output limit was reached. Please try again with higher max_tokens.",
63
+ "type": "invalid_request_error",
64
+ "param": null,
65
+ "code": null
66
+ }
67
+ },
68
+ "capturedAt": "2026-07-22T00:04:04.343Z"
69
+ },
70
+ {
71
+ "id": "oai-range-temperature-3",
72
+ "provider": "open-ai",
73
+ "model": "gpt-4o-mini",
74
+ "intent": "temperature 3 (max 2)",
75
+ "httpStatus": 400,
76
+ "unexpectedSuccess": false,
77
+ "providerErrorBody": {
78
+ "error": {
79
+ "message": "Invalid 'temperature': decimal above maximum value. Expected a value <= 2, but got 3 instead.",
80
+ "type": "invalid_request_error",
81
+ "param": "temperature",
82
+ "code": "decimal_above_max_value"
83
+ }
84
+ },
85
+ "capturedAt": "2026-07-22T00:04:04.524Z"
86
+ },
87
+ {
88
+ "id": "oai-range-top_p-1.5",
89
+ "provider": "open-ai",
90
+ "model": "gpt-4o-mini",
91
+ "intent": "top_p 1.5 (max 1)",
92
+ "httpStatus": 400,
93
+ "unexpectedSuccess": false,
94
+ "providerErrorBody": {
95
+ "error": {
96
+ "message": "Invalid 'top_p': decimal above maximum value. Expected a value <= 1, but got 1.5 instead.",
97
+ "type": "invalid_request_error",
98
+ "param": "top_p",
99
+ "code": "decimal_above_max_value"
100
+ }
101
+ },
102
+ "capturedAt": "2026-07-22T00:04:04.712Z"
103
+ },
104
+ {
105
+ "id": "oai-range-frequency_penalty-5",
106
+ "provider": "open-ai",
107
+ "model": "gpt-4o-mini",
108
+ "intent": "frequency_penalty 5 (max 2)",
109
+ "httpStatus": 400,
110
+ "unexpectedSuccess": false,
111
+ "providerErrorBody": {
112
+ "error": {
113
+ "message": "Invalid 'frequency_penalty': decimal above maximum value. Expected a value <= 2, but got 5 instead.",
114
+ "type": "invalid_request_error",
115
+ "param": "frequency_penalty",
116
+ "code": "decimal_above_max_value"
117
+ }
118
+ },
119
+ "capturedAt": "2026-07-22T00:04:04.897Z"
120
+ },
121
+ {
122
+ "id": "oai-unknown-model",
123
+ "provider": "open-ai",
124
+ "model": "gpt-does-not-exist-xyz",
125
+ "intent": "ismeretlen modell",
126
+ "httpStatus": 404,
127
+ "unexpectedSuccess": false,
128
+ "providerErrorBody": {
129
+ "error": {
130
+ "message": "The model `gpt-does-not-exist-xyz` does not exist or you do not have access to it.",
131
+ "type": "invalid_request_error",
132
+ "param": null,
133
+ "code": "model_not_found"
134
+ }
135
+ },
136
+ "capturedAt": "2026-07-22T00:04:05.328Z"
137
+ },
138
+ {
139
+ "id": "oai-emb-dimensions-5000",
140
+ "provider": "open-ai",
141
+ "model": "text-embedding-3-small",
142
+ "intent": "dimensions 5000 (max 1536)",
143
+ "httpStatus": 400,
144
+ "unexpectedSuccess": false,
145
+ "providerErrorBody": {
146
+ "error": {
147
+ "message": "Invalid value for 'dimensions' = 5000. Must be less than or equal to 1536.",
148
+ "type": "invalid_request_error",
149
+ "param": null,
150
+ "code": null
151
+ }
152
+ },
153
+ "capturedAt": "2026-07-22T00:04:06.732Z"
154
+ },
155
+ {
156
+ "id": "oai-emb-temperature",
157
+ "provider": "open-ai",
158
+ "model": "text-embedding-3-small",
159
+ "intent": "embedding + temperature (400 vagy ignoralas?)",
160
+ "httpStatus": 200,
161
+ "unexpectedSuccess": true,
162
+ "providerErrorBody": {
163
+ "note": "ACCEPTED — a parameter megis ervenyes (felfedezes)"
164
+ },
165
+ "capturedAt": "2026-07-22T00:04:06.892Z"
166
+ },
167
+ {
168
+ "id": "aai-sonnet-temperature-1.5",
169
+ "provider": "anthropic",
170
+ "model": "claude-sonnet-4-6",
171
+ "intent": "temperature 1.5 (max 1.0)",
172
+ "httpStatus": 400,
173
+ "unexpectedSuccess": false,
174
+ "providerErrorBody": {
175
+ "type": "error",
176
+ "error": {
177
+ "type": "invalid_request_error",
178
+ "message": "temperature: range: 0..1"
179
+ },
180
+ "request_id": "req_011CdG7m6xLpoFmfR1rs6Hgc"
181
+ },
182
+ "capturedAt": "2026-07-22T00:04:07.210Z"
183
+ },
184
+ {
185
+ "id": "aai-opus-temperature",
186
+ "provider": "anthropic",
187
+ "model": "claude-opus-4-8",
188
+ "intent": "Opus + temperature (FR-048 kiindulo eset)",
189
+ "httpStatus": 400,
190
+ "unexpectedSuccess": false,
191
+ "providerErrorBody": {
192
+ "type": "error",
193
+ "error": {
194
+ "type": "invalid_request_error",
195
+ "message": "`temperature` is deprecated for this model."
196
+ },
197
+ "request_id": "req_011CdG7m8BWbYfNhNdvLLsoW"
198
+ },
199
+ "capturedAt": "2026-07-22T00:04:07.535Z"
200
+ },
201
+ {
202
+ "id": "aai-haiku-top_k-negative",
203
+ "provider": "anthropic",
204
+ "model": "claude-haiku-4-5",
205
+ "intent": "top_k -1",
206
+ "httpStatus": 200,
207
+ "unexpectedSuccess": true,
208
+ "providerErrorBody": {
209
+ "note": "ACCEPTED — a parameter megis ervenyes (felfedezes)"
210
+ },
211
+ "capturedAt": "2026-07-22T00:04:08.174Z"
212
+ },
213
+ {
214
+ "id": "aai-unknown-model",
215
+ "provider": "anthropic",
216
+ "model": "claude-does-not-exist-xyz",
217
+ "intent": "ismeretlen modell",
218
+ "httpStatus": 404,
219
+ "unexpectedSuccess": false,
220
+ "providerErrorBody": {
221
+ "type": "error",
222
+ "error": {
223
+ "type": "not_found_error",
224
+ "message": "model: claude-does-not-exist-xyz"
225
+ },
226
+ "request_id": "req_011CdG7mCG5N424vf4HG3p4T"
227
+ },
228
+ "capturedAt": "2026-07-22T00:04:08.467Z"
229
+ },
230
+ {
231
+ "id": "gai-range-temperature",
232
+ "provider": "google",
233
+ "model": "gemini-3.5-flash",
234
+ "intent": "temperature = 5 (hatar felderites)",
235
+ "httpStatus": 400,
236
+ "unexpectedSuccess": false,
237
+ "providerErrorBody": {
238
+ "error": {
239
+ "code": 400,
240
+ "message": "* GenerateContentRequest.generation_config.temperature: temperature must be in the range [0.0, 2.0].\n",
241
+ "status": "INVALID_ARGUMENT"
242
+ }
243
+ },
244
+ "capturedAt": "2026-07-22T00:04:08.825Z"
245
+ },
246
+ {
247
+ "id": "gai-range-topP",
248
+ "provider": "google",
249
+ "model": "gemini-3.5-flash",
250
+ "intent": "topP = 1.5 (hatar felderites)",
251
+ "httpStatus": 400,
252
+ "unexpectedSuccess": false,
253
+ "providerErrorBody": {
254
+ "error": {
255
+ "code": 400,
256
+ "message": "* GenerateContentRequest.generation_config.top_p: top_p must be in the range [0.0, 1.0].\n",
257
+ "status": "INVALID_ARGUMENT"
258
+ }
259
+ },
260
+ "capturedAt": "2026-07-22T00:04:09.014Z"
261
+ },
262
+ {
263
+ "id": "gai-range-topK",
264
+ "provider": "google",
265
+ "model": "gemini-3.5-flash",
266
+ "intent": "topK = -1 (hatar felderites)",
267
+ "httpStatus": 400,
268
+ "unexpectedSuccess": false,
269
+ "providerErrorBody": {
270
+ "error": {
271
+ "code": 400,
272
+ "message": "* GenerateContentRequest.generation_config.top_k: top_k must be nonnegative.\n",
273
+ "status": "INVALID_ARGUMENT"
274
+ }
275
+ },
276
+ "capturedAt": "2026-07-22T00:04:09.102Z"
277
+ },
278
+ {
279
+ "id": "gai-range-candidateCount",
280
+ "provider": "google",
281
+ "model": "gemini-3.5-flash",
282
+ "intent": "candidateCount = 99 (hatar felderites)",
283
+ "httpStatus": 400,
284
+ "unexpectedSuccess": false,
285
+ "providerErrorBody": {
286
+ "error": {
287
+ "code": 400,
288
+ "message": "* GenerateContentRequest.generation_config.candidate_count: candidate_count must be in the range [1, 8].\n",
289
+ "status": "INVALID_ARGUMENT"
290
+ }
291
+ },
292
+ "capturedAt": "2026-07-22T00:04:09.301Z"
293
+ },
294
+ {
295
+ "id": "gai-unknown-model",
296
+ "provider": "google",
297
+ "model": "gemini-does-not-exist-xyz",
298
+ "intent": "ismeretlen modell",
299
+ "httpStatus": 404,
300
+ "unexpectedSuccess": false,
301
+ "providerErrorBody": {
302
+ "error": {
303
+ "code": 404,
304
+ "message": "models/gemini-does-not-exist-xyz is not found for API version v1beta, or is not supported for generateContent. Call ModelService.ListModels to see the list of available models and their supported methods.",
305
+ "status": "NOT_FOUND"
306
+ }
307
+ },
308
+ "capturedAt": "2026-07-22T00:04:09.388Z"
309
+ }
310
+ ]
@@ -0,0 +1,166 @@
1
+ /**
2
+ * AI HIBA-CAPTURE runner (runbook §2b) — SZANDEKOSAN hibas hivasok, a byte-hu provider-hibak rogzitesehez.
3
+ *
4
+ * MIERT ~INGYENES: a szerver a validaciot a GENERALAS ELOTT vegzi, tehat egy elutasitott keres nem termel
5
+ * output-tokent. Ahol megis atmehetne (pl. ha egy parametert megis elfogad), ott a keres `max_tokens: 1` +
6
+ * 1-2 tokenes prompt — igy a "veletlen siker" is toredek-cent.
7
+ *
8
+ * HARD SZABALYOK (runbook §2b/§2c):
9
+ * - CSAK hibat celzo keres. Sikeres generalast ez a script NEM inditt szandekosan.
10
+ * - MINDEN eset AZONNAL kiirodik lemezre (inkrementalis) — ha a kulcs a 10. hivasnal kifogy, az addigi 9 megmarad.
11
+ * - 429 / quota eseten az ADOTT provider tovabbi esetei kimaradnak (a kvota-hiba NEM modell-viselkedes,
12
+ * tehat NEM egethetjuk be fixture-kent), a tobbi provider megy tovabb.
13
+ * - Kulcs-ertek SOHA nem kerul kiirasra; a valasz-body-n redakcio fut (defense in depth).
14
+ * - Ha egy eset VARATLANUL SIKERES → az maga is FELFEDEZES (a parameter megis elfogadott) → rogzitjuk.
15
+ *
16
+ * Futtatas: node scripts/ai-error-capture.js
17
+ * Kimenet: scripts/_capture-out/ai-error-capture.json (nyers capture; fixture-re kuratalas KESOBB, leak-review utan)
18
+ */
19
+
20
+ const fs = require('fs');
21
+ const path = require('path');
22
+
23
+ const ENV_PATH = path.resolve(__dirname, '../../../fdp-devops/.env');
24
+ const OUT_DIR = path.resolve(__dirname, '_capture-out');
25
+ const OUT_FILE = path.join(OUT_DIR, 'ai-error-capture.json');
26
+
27
+ function loadEnv() {
28
+ const out = {};
29
+ for (const line of fs.readFileSync(ENV_PATH, 'utf8').split(/\r?\n/)) {
30
+ const m = line.match(/^([A-Z0-9_]+)=(.*)$/);
31
+ if (m) { out[m[1]] = m[2].trim().replace(/^["']|["']$/g, ''); }
32
+ }
33
+ return out;
34
+ }
35
+
36
+ /** Kulcs-szeru mintak kiszurese a rogzitett szovegbol (runbook §4.0). */
37
+ function redact(text) {
38
+ return String(text)
39
+ .replace(/sk-ant-[A-Za-z0-9_-]+/g, 'sk-ant-REDACTED')
40
+ .replace(/sk-[A-Za-z0-9_-]{20,}/g, 'sk-REDACTED')
41
+ .replace(/AIza[A-Za-z0-9_-]{20,}/g, 'AIza-REDACTED')
42
+ .replace(/Bearer\s+[A-Za-z0-9._-]+/g, 'Bearer REDACTED');
43
+ }
44
+
45
+ const results = [];
46
+ function persist(entry) {
47
+ results.push(entry);
48
+ fs.mkdirSync(OUT_DIR, { recursive: true });
49
+ fs.writeFileSync(OUT_FILE, JSON.stringify(results, null, 2));
50
+ }
51
+
52
+ /** Egy eset lefuttatasa. Visszaadja: 'ok' | 'quota' */
53
+ async function runCase(c, env) {
54
+ const key = env[c.envKey];
55
+ if (!key) { return 'ok'; }
56
+
57
+ let status = 0;
58
+ let bodyText = '';
59
+ try {
60
+ const r = await fetch(c.url(key), { method: 'POST', headers: c.headers(key), body: JSON.stringify(c.body) });
61
+ status = r.status;
62
+ bodyText = await r.text();
63
+ } catch (e) {
64
+ bodyText = JSON.stringify({ networkError: String(e.message) });
65
+ }
66
+
67
+ let parsed = null;
68
+ try { parsed = JSON.parse(redact(bodyText)); } catch { parsed = { raw: redact(bodyText).slice(0, 800) }; }
69
+
70
+ const unexpectedSuccess = status >= 200 && status < 300;
71
+
72
+ persist({
73
+ id: c.id,
74
+ provider: c.provider,
75
+ model: c.model,
76
+ intent: c.intent,
77
+ httpStatus: status,
78
+ unexpectedSuccess: unexpectedSuccess,
79
+ providerErrorBody: unexpectedSuccess ? { note: 'ACCEPTED — a parameter megis ervenyes (felfedezes)' } : parsed,
80
+ capturedAt: new Date().toISOString(),
81
+ });
82
+
83
+ const marker = unexpectedSuccess ? '⚠️ ELFOGADTA' : `HTTP ${status}`;
84
+ console.log(` [${c.id}] ${c.provider}/${c.model} — ${c.intent} → ${marker}`);
85
+
86
+ if (status === 429) { return 'quota'; }
87
+ return 'ok';
88
+ }
89
+
90
+ // ── esetek (runbook §2b) ─────────────────────────────────────────────────────
91
+ const OAI_CHAT = (key) => 'https://api.openai.com/v1/chat/completions';
92
+ const OAI_EMB = (key) => 'https://api.openai.com/v1/embeddings';
93
+ const OAI_H = (key) => ({ Authorization: `Bearer ${key}`, 'content-type': 'application/json' });
94
+ const AAI_URL = () => 'https://api.anthropic.com/v1/messages';
95
+ const AAI_H = (key) => ({ 'x-api-key': key, 'anthropic-version': '2023-06-01', 'content-type': 'application/json' });
96
+ const GAI_URL = (model) => (key) =>
97
+ `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${key}`;
98
+ const GAI_H = () => ({ 'content-type': 'application/json' });
99
+
100
+ const msg = [ { role: 'user', content: 'hi' } ];
101
+ const oaiChat = (model, extra) => ({ model, messages: msg, max_completion_tokens: 1, ...extra });
102
+ const aaiMsg = (model, extra) => ({ model, messages: msg, max_tokens: 1, ...extra });
103
+ const gaiBody = (extra) => ({ contents: [ { parts: [ { text: 'hi' } ] } ], generationConfig: { maxOutputTokens: 1, ...extra } });
104
+
105
+ const CASES = [
106
+ // OpenAI — reasoning modell elutasitja a sampling-parametereket
107
+ ...[ 'temperature', 'top_p', 'frequency_penalty', 'presence_penalty' ].map((p, i) => ({
108
+ id: `oai-reasoning-${p}`, provider: 'open-ai', model: 'gpt-5.4-mini', envKey: 'OPENAI_API_KEY',
109
+ intent: `reasoning + ${p}`, url: OAI_CHAT, headers: OAI_H, body: oaiChat('gpt-5.4-mini', { [p]: 0.5 }),
110
+ })),
111
+ // OpenAI — tartomanyon kivuli ertekek klasszikus modellen
112
+ { id: 'oai-range-temperature-3', provider: 'open-ai', model: 'gpt-4o-mini', envKey: 'OPENAI_API_KEY',
113
+ intent: 'temperature 3 (max 2)', url: OAI_CHAT, headers: OAI_H, body: oaiChat('gpt-4o-mini', { temperature: 3 }) },
114
+ { id: 'oai-range-top_p-1.5', provider: 'open-ai', model: 'gpt-4o-mini', envKey: 'OPENAI_API_KEY',
115
+ intent: 'top_p 1.5 (max 1)', url: OAI_CHAT, headers: OAI_H, body: oaiChat('gpt-4o-mini', { top_p: 1.5 }) },
116
+ { id: 'oai-range-frequency_penalty-5', provider: 'open-ai', model: 'gpt-4o-mini', envKey: 'OPENAI_API_KEY',
117
+ intent: 'frequency_penalty 5 (max 2)', url: OAI_CHAT, headers: OAI_H, body: oaiChat('gpt-4o-mini', { frequency_penalty: 5 }) },
118
+ { id: 'oai-unknown-model', provider: 'open-ai', model: 'gpt-does-not-exist-xyz', envKey: 'OPENAI_API_KEY',
119
+ intent: 'ismeretlen modell', url: OAI_CHAT, headers: OAI_H, body: oaiChat('gpt-does-not-exist-xyz', {}) },
120
+ // OpenAI — embedding
121
+ { id: 'oai-emb-dimensions-5000', provider: 'open-ai', model: 'text-embedding-3-small', envKey: 'OPENAI_API_KEY',
122
+ intent: 'dimensions 5000 (max 1536)', url: OAI_EMB, headers: OAI_H,
123
+ body: { model: 'text-embedding-3-small', input: 'hi', dimensions: 5000 } },
124
+ { id: 'oai-emb-temperature', provider: 'open-ai', model: 'text-embedding-3-small', envKey: 'OPENAI_API_KEY',
125
+ intent: 'embedding + temperature (400 vagy ignoralas?)', url: OAI_EMB, headers: OAI_H,
126
+ body: { model: 'text-embedding-3-small', input: 'hi', temperature: 0.5 } },
127
+
128
+ // Anthropic
129
+ { id: 'aai-sonnet-temperature-1.5', provider: 'anthropic', model: 'claude-sonnet-4-6', envKey: 'ANTHROPIC_API_KEY',
130
+ intent: 'temperature 1.5 (max 1.0)', url: AAI_URL, headers: AAI_H, body: aaiMsg('claude-sonnet-4-6', { temperature: 1.5 }) },
131
+ { id: 'aai-opus-temperature', provider: 'anthropic', model: 'claude-opus-4-8', envKey: 'ANTHROPIC_API_KEY',
132
+ intent: 'Opus + temperature (FR-048 kiindulo eset)', url: AAI_URL, headers: AAI_H, body: aaiMsg('claude-opus-4-8', { temperature: 0.5 }) },
133
+ { id: 'aai-haiku-top_k-negative', provider: 'anthropic', model: 'claude-haiku-4-5', envKey: 'ANTHROPIC_API_KEY',
134
+ intent: 'top_k -1', url: AAI_URL, headers: AAI_H, body: aaiMsg('claude-haiku-4-5', { top_k: -1 }) },
135
+ { id: 'aai-unknown-model', provider: 'anthropic', model: 'claude-does-not-exist-xyz', envKey: 'ANTHROPIC_API_KEY',
136
+ intent: 'ismeretlen modell', url: AAI_URL, headers: AAI_H, body: aaiMsg('claude-does-not-exist-xyz', {}) },
137
+
138
+ // Google — a hibauzenet FELDERITI a dokumentalatlan hatarokat
139
+ ...[ [ 'temperature', 5 ], [ 'topP', 1.5 ], [ 'topK', -1 ], [ 'candidateCount', 99 ] ].map(([ p, v ]) => ({
140
+ id: `gai-range-${p}`, provider: 'google', model: 'gemini-3.5-flash', envKey: 'GOOGLE_API_KEY',
141
+ intent: `${p} = ${v} (hatar felderites)`, url: GAI_URL('gemini-3.5-flash'), headers: GAI_H, body: gaiBody({ [p]: v }),
142
+ })),
143
+ { id: 'gai-unknown-model', provider: 'google', model: 'gemini-does-not-exist-xyz', envKey: 'GOOGLE_API_KEY',
144
+ intent: 'ismeretlen modell', url: GAI_URL('gemini-does-not-exist-xyz'), headers: GAI_H, body: gaiBody({}) },
145
+ ];
146
+
147
+ (async () => {
148
+ const env = loadEnv();
149
+ const quotaHit = new Set();
150
+
151
+ console.log('AI HIBA-CAPTURE — csak elutasitando keresek (max_tokens:1, hogy a veletlen siker is toredek-cent)\n');
152
+
153
+ for (const c of CASES) {
154
+ if (quotaHit.has(c.provider)) {
155
+ console.log(` [${c.id}] KIHAGYVA — ${c.provider} kvota-hiba miatt leallt`);
156
+ continue;
157
+ }
158
+ const r = await runCase(c, env);
159
+ if (r === 'quota') {
160
+ quotaHit.add(c.provider);
161
+ console.log(` ⚠️ ${c.provider}: 429/kvota → a tovabbi esetei kimaradnak (a kvota-hiba NEM fixture)`);
162
+ }
163
+ }
164
+
165
+ console.log(`\n✅ ${results.length} eset rogzitve → ${OUT_FILE}`);
166
+ })();
@@ -0,0 +1,132 @@
1
+ /**
2
+ * AI model-registry ellenorzo — READ-ONLY, INGYENES.
3
+ *
4
+ * A providerek sajat list-models vegpontjaibol lekeri az ELO modell-listat, es osszeveti a fsm-registryvel
5
+ * (`DyFM_OAI_Models` / `DyFM_AAI_Models` / `DyFM_GAI_Models`). NEM general semmit — a modell-listazas nem
6
+ * inference-hivas, tehat nem kerul penzbe; egyben validalja, hogy a kulcsok mukodnek-e.
7
+ *
8
+ * Kulcsok: `fdp-devops/.env` (OPENAI_API_KEY / ANTHROPIC_API_KEY / GOOGLE_API_KEY). A script a kulcsok
9
+ * ERTEKET SOHA nem irja ki — csak azt, hogy megvan-e.
10
+ *
11
+ * Megjegyzes: a `scripts/` mappa .js-t hasznal (l. verify-build-completeness.js, run-coverage-tests.js) —
12
+ * ezt a meglevo precedenst koveti, a TS-only szabaly a `src/`-re vonatkozik.
13
+ *
14
+ * Futtatas: node scripts/ai-model-registry-check.js
15
+ */
16
+
17
+ const fs = require('fs');
18
+ const path = require('path');
19
+
20
+ const ENV_PATH = path.resolve(__dirname, '../../../fdp-devops/.env');
21
+ const BUILD = path.resolve(__dirname, '../build/_modules/ai/_modules');
22
+
23
+ /** .env beolvasas (csak a szukseges kulcsokra). */
24
+ function loadEnv() {
25
+ const out = {};
26
+ if (!fs.existsSync(ENV_PATH)) {
27
+ return out;
28
+ }
29
+ for (const line of fs.readFileSync(ENV_PATH, 'utf8').split(/\r?\n/)) {
30
+ const m = line.match(/^([A-Z0-9_]+)=(.*)$/);
31
+ if (m) {
32
+ out[m[1]] = m[2].trim().replace(/^["']|["']$/g, '');
33
+ }
34
+ }
35
+ return out;
36
+ }
37
+
38
+ /** A fsm-registry modell-id-jai providerenkent. */
39
+ function loadRegistry() {
40
+ const read = (rel, key) => {
41
+ try {
42
+ const mod = require(path.join(BUILD, rel));
43
+ return (mod[key] || []).map((m) => m.id);
44
+ } catch (e) {
45
+ return null;
46
+ }
47
+ };
48
+ return {
49
+ openai: read('open-ai/_collections/oai-models.const.js', 'DyFM_OAI_Models'),
50
+ anthropic: read('anthropic/_collections/aai-models.const.js', 'DyFM_AAI_Models'),
51
+ google: read('google-ai/_collections/gai-models.const.js', 'DyFM_GAI_Models'),
52
+ };
53
+ }
54
+
55
+ async function listOpenAI(key) {
56
+ const r = await fetch('https://api.openai.com/v1/models', {
57
+ headers: { Authorization: `Bearer ${key}` },
58
+ });
59
+ if (!r.ok) {
60
+ throw new Error(`HTTP ${r.status} ${(await r.text()).slice(0, 200)}`);
61
+ }
62
+ return (await r.json()).data.map((m) => m.id);
63
+ }
64
+
65
+ async function listAnthropic(key) {
66
+ const r = await fetch('https://api.anthropic.com/v1/models?limit=100', {
67
+ headers: { 'x-api-key': key, 'anthropic-version': '2023-06-01' },
68
+ });
69
+ if (!r.ok) {
70
+ throw new Error(`HTTP ${r.status} ${(await r.text()).slice(0, 200)}`);
71
+ }
72
+ return (await r.json()).data.map((m) => m.id);
73
+ }
74
+
75
+ async function listGoogle(key) {
76
+ const r = await fetch(`https://generativelanguage.googleapis.com/v1beta/models?key=${key}&pageSize=200`);
77
+ if (!r.ok) {
78
+ throw new Error(`HTTP ${r.status} ${(await r.text()).slice(0, 200)}`);
79
+ }
80
+ return (await r.json()).models.map((m) => String(m.name).replace(/^models\//, ''));
81
+ }
82
+
83
+ function report(name, registryIds, liveIds) {
84
+ console.log(`\n=== ${name} ===`);
85
+ if (registryIds === null) {
86
+ console.log(' ⚠️ registry nem olvashato (build hianyzik?)');
87
+ return;
88
+ }
89
+ const live = new Set(liveIds);
90
+ const reg = new Set(registryIds);
91
+
92
+ const stale = registryIds.filter((id) => !live.has(id));
93
+ const missing = liveIds.filter((id) => !reg.has(id));
94
+
95
+ console.log(` registry: ${registryIds.length} · elo: ${liveIds.length}`);
96
+ console.log(` ❌ registryben van, de NEM elo (${stale.length}): ${stale.join(', ') || '—'}`);
97
+ console.log(` ➕ elo, de NINCS registryben (${missing.length}):`);
98
+ for (const id of missing.slice(0, 60)) {
99
+ console.log(` ${id}`);
100
+ }
101
+ if (missing.length > 60) {
102
+ console.log(` … +${missing.length - 60} tovabbi`);
103
+ }
104
+ }
105
+
106
+ (async () => {
107
+ const env = loadEnv();
108
+ const registry = loadRegistry();
109
+
110
+ const providers = [
111
+ { name: 'OpenAI', envKey: 'OPENAI_API_KEY', list: listOpenAI, reg: registry.openai },
112
+ { name: 'Anthropic', envKey: 'ANTHROPIC_API_KEY', list: listAnthropic, reg: registry.anthropic },
113
+ { name: 'Google', envKey: 'GOOGLE_API_KEY', list: listGoogle, reg: registry.google },
114
+ ];
115
+
116
+ console.log('AI model-registry check — READ-ONLY (listazas, nem generalas → nem kerul penzbe)');
117
+
118
+ for (const p of providers) {
119
+ const key = env[p.envKey];
120
+ if (!key) {
121
+ console.log(`\n=== ${p.name} ===\n ⚠️ ${p.envKey} nincs beallitva — kihagyva`);
122
+ continue;
123
+ }
124
+ try {
125
+ const live = await p.list(key);
126
+ report(p.name, p.reg, live);
127
+ } catch (e) {
128
+ console.log(`\n=== ${p.name} ===\n ❌ lekeres SIKERTELEN: ${e.message}`);
129
+ console.log(' (kulcs ervenytelen / lejart / nincs jogosultsag a list-models-re)');
130
+ }
131
+ }
132
+ })();
@@ -29,8 +29,10 @@ const AAI_OPUS_SETTINGS: DyFM_AI_ModelSettingsSchema = {
29
29
  unsupported: [ 'temperature', 'topP', 'topK' ],
30
30
  constraints: {
31
31
  maxTokens: {
32
- note: 'Messages API: "Different models have different maximum values for this parameter" the per-model ' +
33
- 'cap lives in `maxOutputTokens`, so no global min/max is encoded. Source: platform.claude.com/docs/en/api/messages, verified 2026-07-21.',
32
+ note: 'REQUIRED empirically verified by live capture 2026-07-21: omitting it returns HTTP 400 ' +
33
+ '`{"type":"error","error":{"type":"invalid_request_error","message":"max_tokens: Field required"},"request_id":"req_..."}`. ' +
34
+ 'The published docs do NOT state this, hence the capture. Per-model maximum varies (see `maxOutputTokens`), ' +
35
+ 'so no global min/max is encoded.',
34
36
  },
35
37
  },
36
38
  };
@@ -38,6 +40,9 @@ const AAI_OPUS_SETTINGS: DyFM_AI_ModelSettingsSchema = {
38
40
  /**
39
41
  * Sonnet / Haiku still ACCEPT the sampling params (only Opus 4.7+ rejects them).
40
42
  *
43
+ * **`topK`: NINCS bound kodolva** — live capture 2026-07-21: a `top_k: -1` **HTTP 200-zal ATMENT**, tehat a
44
+ * szerver nem validalja alulrol. Egy kitalalt `min: 0` itt hibas clamp-et okozna.
45
+ *
41
46
  * **Fontos provider-kulonbseg:** az Anthropic `temperature` maximuma **1.0**, NEM 2.0 mint az OpenAI-nal —
42
47
  * egy OpenAI-nal ervenyes `temperature: 1.5` itt ervenytelen. A validator ezt most elkapja.
43
48
  * `topP` / `topK`: az API-referencia NEM ad meg szamszeru hatarokat → szandekosan nem kodolunk bele semmit.
@@ -26,6 +26,30 @@ const GAI_CHAT_SETTINGS: DyFM_AI_ModelSettingsSchema = {
26
26
  supported: [ 'temperature', 'maxTokens', 'topP' ],
27
27
  unsupported: [ 'frequencyPenalty', 'presencePenalty' ],
28
28
  extraParams: [ 'topK', 'candidateCount', 'responseSchema', 'thinkingConfig', 'toolConfig' ],
29
+ // A Gemini-doksi NEM publikal szamhatarokat — az alabbiakat SZANDEKOSAN kivaltott hibauzenetekbol
30
+ // mertuk ki (live capture 2026-07-21). Ez volt az EGYETLEN mod verifikalt bound-okhoz jutni.
31
+ constraints: {
32
+ temperature: {
33
+ min: 0,
34
+ max: 2,
35
+ note: 'Capture 2026-07-21: "temperature must be in the range [0.0, 2.0]." — azonos az OpenAI-jal, ' +
36
+ 'és NEM az Anthropic 1.0-s plafonjával.',
37
+ },
38
+ topP: {
39
+ min: 0,
40
+ max: 1,
41
+ note: 'Capture 2026-07-21: "top_p must be in the range [0.0, 1.0]."',
42
+ },
43
+ topK: {
44
+ min: 0,
45
+ note: 'Capture 2026-07-21: "top_k must be nonnegative." — felso hatart a szerver NEM kozolt, ezert nincs max.',
46
+ },
47
+ candidateCount: {
48
+ min: 1,
49
+ max: 8,
50
+ note: 'Capture 2026-07-21: "candidate_count must be in the range [1, 8]."',
51
+ },
52
+ },
29
53
  };
30
54
 
31
55
  /**
@@ -21,22 +21,50 @@ import { DyFM_OAI_Model } from '../_enums/oai-model.enum';
21
21
  */
22
22
 
23
23
  /**
24
- * Reasoning models (`gpt-5.x`, `o`-series) REJECT the sampling params with HTTP 400 and
25
- * instead expose a `reasoningEffort` knob.
24
+ * Models that MEASURABLY reject the sampling params (HTTP 400) and expose `reasoningEffort` instead.
26
25
  *
27
- * Source: FR-047 code-review fix `514153f` (`isReasoningModel` = `/^gpt-5/ || /^o[0-9]/`,
28
- * which omits the 4 sampling params) + `FR-048-per-model-agnostic-settings.md` §Problem.
29
- * Verified 2026-06-01. Numeric ranges for other params are intentionally NOT encoded yet —
30
- * pending the provider-doc capture pass (a wrong clamp would silently alter live calls).
26
+ * **Live capture 2026-07-21** confirmed rejecting: `gpt-5.5`, `o3-mini`, `o4-mini`. Two distinct
27
+ * semantics were observed and both mean "do not send it":
28
+ * - `unsupported_parameter` the param is not supported at all (o3-mini).
29
+ * - `unsupported_value` the param exists but only the default is allowed (gpt-5.5, o4-mini:
30
+ * "does not support 0.5 with this model. Only the default (1)").
31
+ *
32
+ * ⚠️ This list is NOT the whole `gpt-5.x` family — see {@link OAI_SAMPLING_ACCEPTED}. The earlier
33
+ * family-wide assumption (FR-047 `isReasoningModel` = `/^gpt-5/`) was falsified by the capture.
31
34
  */
32
- const OAI_REASONING_SETTINGS: DyFM_AI_ModelSettingsSchema = {
35
+ const OAI_SAMPLING_REJECTED: DyFM_AI_ModelSettingsSchema = {
33
36
  supported: [ 'maxTokens' ],
34
37
  unsupported: [ 'temperature', 'topP', 'frequencyPenalty', 'presencePenalty' ],
35
38
  extraParams: [ 'reasoningEffort' ],
36
39
  constraints: {
37
40
  reasoningEffort: {
38
41
  allowed: [ 'none', 'low', 'medium', 'high', 'xhigh' ],
39
- note: 'Reasoning-only knob; non-reasoning models have none. Source: FR-048 §Problem, verified 2026-06-01.',
42
+ note: 'Reasoning-only knob. Source: FR-048 §Problem (2026-06-01); allowed-set not re-verified by capture.',
43
+ },
44
+ },
45
+ };
46
+
47
+ /**
48
+ * Same shape as {@link OAI_SAMPLING_REJECTED}, but **NOT verified by live capture** — kept on the
49
+ * conservative (reject) assumption.
50
+ *
51
+ * Applies to `gpt-5.5-pro` and `o3-pro` only: the pro-tier models were deliberately NOT probed (cost).
52
+ * (`gpt-5.4` was here too, until the 2026-07-21 probe showed it ACCEPTS — see OAI_SAMPLING_ACCEPTED.
53
+ * The emerging pattern is a GENERATION boundary, not "reasoning vs not": the whole 5.4 line accepts,
54
+ * 5.5 rejects. That makes the pro-tier behaviour genuinely unpredictable from the family name alone.)
55
+ *
56
+ * **Risk direction, stated honestly:** if such a model actually ACCEPTS the params, the reconciler
57
+ * drops them silently → the caller's temperature is quietly ignored. That is the milder failure vs.
58
+ * a hard 400, which is why the conservative side was chosen — but it IS an assumption, not a fact.
59
+ * Resolve by probing these three models (one cheap error-call each).
60
+ */
61
+ const OAI_SAMPLING_UNVERIFIED: DyFM_AI_ModelSettingsSchema = {
62
+ supported: [ 'maxTokens' ],
63
+ unsupported: [ 'temperature', 'topP', 'frequencyPenalty', 'presencePenalty' ],
64
+ extraParams: [ 'reasoningEffort' ],
65
+ constraints: {
66
+ reasoningEffort: {
67
+ note: 'UNVERIFIED (no live capture) — assumption inherited from the FR-047 family-wide rule.',
40
68
  },
41
69
  },
42
70
  };
@@ -75,11 +103,32 @@ const OAI_CLASSIC_CHAT_SETTINGS: DyFM_AI_ModelSettingsSchema = {
75
103
  };
76
104
 
77
105
  /**
78
- * Embedding models take no sampling params; the one real knob is `dimensions`.
106
+ * `gpt-5.4-mini` / `gpt-5.4-nano` **MEASURABLY ACCEPT** all four sampling params.
107
+ *
108
+ * **Live capture 2026-07-21:** `temperature` / `topP` / `frequencyPenalty` / `presencePenalty` each
109
+ * returned HTTP 200 with `reasoning_tokens: 0`. They therefore behave like classic chat models, NOT
110
+ * like the rejecting reasoning models — despite matching the `/^gpt-5/` pattern that FR-047 used.
111
+ *
112
+ * `gpt-5.4` (base) was probed separately on 2026-07-21 and ALSO accepts (HTTP 200). The pattern is
113
+ * therefore a **generation boundary**, not "reasoning vs not": the whole 5.4 line accepts, 5.5 rejects.
114
+ * That is precisely why per-model data beats a family-wide regex.
115
+ * Bounds are the documented OpenAI ranges (see {@link OAI_CLASSIC_CHAT_SETTINGS}).
116
+ */
117
+ const OAI_SAMPLING_ACCEPTED: DyFM_AI_ModelSettingsSchema = {
118
+ ...OAI_CLASSIC_CHAT_SETTINGS,
119
+ extraParams: [ 'reasoningEffort' ],
120
+ };
121
+
122
+ /**
123
+ * Embedding models: the one real knob is `dimensions`.
79
124
  *
80
- * The sampling params are listed as `unsupported` so the reconciler DROPS them dropping a
81
- * meaningless param from an embeddings call is always safe, regardless of whether the API
82
- * would 400 or silently ignore it. Max/default dims per the `DyFM_OAI_Model` JSDoc (verified 2026-06).
125
+ * **Live capture 2026-07-21 CORRECTION:** the sampling params are **NOT rejected**; sending
126
+ * `temperature` to `/v1/embeddings` returns **HTTP 200 and is silently ignored**. They are still listed
127
+ * under `unsupported` so the reconciler DROPS them (dropping a meaningless param is always safe and
128
+ * keeps requests clean) — but note that this does NOT mean the API would 400. The validator's
129
+ * `unsupported_parameter` error for these is therefore stricter than the live API.
130
+ * Max/default dims: 1536 / 3072 — confirmed by capture
131
+ * ("Invalid value for 'dimensions' = 5000. Must be less than or equal to 1536.").
83
132
  */
84
133
  const OAI_EMBEDDING_SETTINGS_SMALL: DyFM_AI_ModelSettingsSchema = {
85
134
  unsupported: [ 'temperature', 'topP', 'frequencyPenalty', 'presencePenalty', 'maxTokens' ],
@@ -113,7 +162,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
113
162
  modelType: DyFM_AI_ModelType.Chat,
114
163
  displayName: 'GPT-5.5',
115
164
  tier: 'flagship',
116
- settingsSchema: OAI_REASONING_SETTINGS,
165
+ settingsSchema: OAI_SAMPLING_REJECTED,
117
166
  status: 'ga',
118
167
  contextWindow: 1_050_000,
119
168
  maxOutputTokens: 128_000,
@@ -135,7 +184,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
135
184
  modelType: DyFM_AI_ModelType.Chat,
136
185
  displayName: 'GPT-5.5 Pro',
137
186
  tier: 'pro',
138
- settingsSchema: OAI_REASONING_SETTINGS,
187
+ settingsSchema: OAI_SAMPLING_UNVERIFIED,
139
188
  status: 'ga',
140
189
  contextWindow: 1_050_000,
141
190
  maxOutputTokens: 128_000,
@@ -157,7 +206,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
157
206
  modelType: DyFM_AI_ModelType.Chat,
158
207
  displayName: 'GPT-5.4',
159
208
  tier: 'flagship',
160
- settingsSchema: OAI_REASONING_SETTINGS,
209
+ settingsSchema: OAI_SAMPLING_ACCEPTED,
161
210
  status: 'ga',
162
211
  contextWindow: 1_000_000,
163
212
  maxOutputTokens: 128_000,
@@ -179,7 +228,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
179
228
  modelType: DyFM_AI_ModelType.Chat,
180
229
  displayName: 'GPT-5.4 mini',
181
230
  tier: 'mini',
182
- settingsSchema: OAI_REASONING_SETTINGS,
231
+ settingsSchema: OAI_SAMPLING_ACCEPTED,
183
232
  status: 'ga',
184
233
  contextWindow: 400_000,
185
234
  maxOutputTokens: 128_000,
@@ -201,7 +250,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
201
250
  modelType: DyFM_AI_ModelType.Chat,
202
251
  displayName: 'GPT-5.4 nano',
203
252
  tier: 'nano',
204
- settingsSchema: OAI_REASONING_SETTINGS,
253
+ settingsSchema: OAI_SAMPLING_ACCEPTED,
205
254
  status: 'ga',
206
255
  contextWindow: 400_000,
207
256
  maxOutputTokens: 128_000,
@@ -223,7 +272,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
223
272
  modelType: DyFM_AI_ModelType.Chat,
224
273
  displayName: 'o3-pro',
225
274
  tier: 'pro',
226
- settingsSchema: OAI_REASONING_SETTINGS,
275
+ settingsSchema: OAI_SAMPLING_UNVERIFIED,
227
276
  status: 'ga',
228
277
  contextWindow: 200_000,
229
278
  maxOutputTokens: 100_000,