@futdevpro/fsm-dynamo 1.16.22 → 1.16.23

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":";;;AAAA,uEAAoE;AACpE,2EAAuE;AAGvE,6DAA0D;AAE1D;;;;;;;;;GASG;AACH;;;;;;;GAOG;AACH,MAAM,iBAAiB,GAAgC;IACrD,SAAS,EAAE,CAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAE;IACjD,WAAW,EAAE,CAAE,kBAAkB,EAAE,iBAAiB,CAAE;IACtD,WAAW,EAAE,CAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,CAAE;IAC3F,kGAAkG;IAClG,6FAA6F;IAC7F,WAAW,EAAE;QACX,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,6FAA6F;gBACjG,wCAAwC;SAC3C;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,8DAA8D;SACrE;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,wGAAwG;SAC/G;QACD,cAAc,EAAE;YACd,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,oEAAoE;SAC3E;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,wBAAwB,GAAgC;IAC5D,GAAG,iBAAiB;IACpB,WAAW,EAAE;QACX,SAAS,EAAE;YACT,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,yHAAyH;SAChI;KACF;CACF,CAAC;AAEF,6FAA6F;AAC7F,MAAM,sBAAsB,GAAgC;IAC1D,WAAW,EAAE,CAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,CAAE;CAC3F,CAAC;AAEW,QAAA,eAAe,GAAwB;IAClD;QACE,EAAE,EAAE,+BAAc,CAAC,gBAAgB;QACnC,QAAQ,EAAE,mCAAgB,CAAC,MAAM;QACjC,SAAS,EAAE,sCAAiB,CAAC,IAAI;QACjC,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,OAAO;QACb,cAAc,EAAE,iBAAiB;QACjC,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,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB;KACF;IACD;QACE,EAAE,EAAE,+BAAc,CAAC,sBAAsB;QACzC,QAAQ,EAAE,mCAAgB,CAAC,MAAM;QACjC,SAAS,EAAE,sCAAiB,CAAC,IAAI;QACjC,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,KAAK;QACX,cAAc,EAAE,wBAAwB;QACxC,MAAM,EAAE,SAAS;QACjB,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,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB;KACF;IACD;QACE,EAAE,EAAE,+BAAc,CAAC,qBAAqB;QACxC,QAAQ,EAAE,mCAAgB,CAAC,MAAM;QACjC,SAAS,EAAE,sCAAiB,CAAC,IAAI;QACjC,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,YAAY;QAClB,cAAc,EAAE,iBAAiB;QACjC,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,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB;KACF;IACD;QACE,EAAE,EAAE,+BAAc,CAAC,kBAAkB;QACrC,QAAQ,EAAE,mCAAgB,CAAC,MAAM;QACjC,SAAS,EAAE,sCAAiB,CAAC,SAAS;QACtC,WAAW,EAAE,oBAAoB;QACjC,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,sBAAsB;QACtC,aAAa,EAAE,KAAK;QACpB,YAAY,EAAE;YACZ,eAAe,EAAE,KAAK;YACtB,MAAM,EAAE,IAAI,EAAE,8CAA8C;YAC5D,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,KAAK;SACpB;KACF;CACF,CAAC"}
@@ -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;AAqJ7E,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAuP9C,CAAC"}
@@ -20,22 +20,48 @@ 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.4`, `gpt-5.5-pro`, `o3-pro`: the pro-tier models were deliberately NOT probed
50
+ * (cost), and `gpt-5.4` (base) sits between a confirmed-rejecting flagship and a confirmed-accepting
51
+ * mini, so its behaviour genuinely is not known.
52
+ *
53
+ * **Risk direction, stated honestly:** if such a model actually ACCEPTS the params, the reconciler
54
+ * drops them silently → the caller's temperature is quietly ignored. That is the milder failure vs.
55
+ * a hard 400, which is why the conservative side was chosen — but it IS an assumption, not a fact.
56
+ * Resolve by probing these three models (one cheap error-call each).
57
+ */
58
+ const OAI_SAMPLING_UNVERIFIED = {
59
+ supported: ['maxTokens'],
60
+ unsupported: ['temperature', 'topP', 'frequencyPenalty', 'presencePenalty'],
61
+ extraParams: ['reasoningEffort'],
62
+ constraints: {
63
+ reasoningEffort: {
64
+ note: 'UNVERIFIED (no live capture) — assumption inherited from the FR-047 family-wide rule.',
39
65
  },
40
66
  },
41
67
  };
@@ -72,11 +98,27 @@ const OAI_CLASSIC_CHAT_SETTINGS = {
72
98
  },
73
99
  };
74
100
  /**
75
- * Embedding models take no sampling params; the one real knob is `dimensions`.
101
+ * `gpt-5.4-mini` / `gpt-5.4-nano` **MEASURABLY ACCEPT** all four sampling params.
102
+ *
103
+ * **Live capture 2026-07-21:** `temperature` / `topP` / `frequencyPenalty` / `presencePenalty` each
104
+ * returned HTTP 200 with `reasoning_tokens: 0`. They therefore behave like classic chat models, NOT
105
+ * like the rejecting reasoning models — despite matching the `/^gpt-5/` pattern that FR-047 used.
106
+ * Bounds are the documented OpenAI ranges (see {@link OAI_CLASSIC_CHAT_SETTINGS}).
107
+ */
108
+ const OAI_SAMPLING_ACCEPTED = {
109
+ ...OAI_CLASSIC_CHAT_SETTINGS,
110
+ extraParams: ['reasoningEffort'],
111
+ };
112
+ /**
113
+ * Embedding models: the one real knob is `dimensions`.
76
114
  *
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).
115
+ * **Live capture 2026-07-21 CORRECTION:** the sampling params are **NOT rejected**; sending
116
+ * `temperature` to `/v1/embeddings` returns **HTTP 200 and is silently ignored**. They are still listed
117
+ * under `unsupported` so the reconciler DROPS them (dropping a meaningless param is always safe and
118
+ * keeps requests clean) — but note that this does NOT mean the API would 400. The validator's
119
+ * `unsupported_parameter` error for these is therefore stricter than the live API.
120
+ * Max/default dims: 1536 / 3072 — confirmed by capture
121
+ * ("Invalid value for 'dimensions' = 5000. Must be less than or equal to 1536.").
80
122
  */
81
123
  const OAI_EMBEDDING_SETTINGS_SMALL = {
82
124
  unsupported: ['temperature', 'topP', 'frequencyPenalty', 'presencePenalty', 'maxTokens'],
@@ -108,7 +150,7 @@ exports.DyFM_OAI_Models = [
108
150
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
109
151
  displayName: 'GPT-5.5',
110
152
  tier: 'flagship',
111
- settingsSchema: OAI_REASONING_SETTINGS,
153
+ settingsSchema: OAI_SAMPLING_REJECTED,
112
154
  status: 'ga',
113
155
  contextWindow: 1_050_000,
114
156
  maxOutputTokens: 128_000,
@@ -130,7 +172,7 @@ exports.DyFM_OAI_Models = [
130
172
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
131
173
  displayName: 'GPT-5.5 Pro',
132
174
  tier: 'pro',
133
- settingsSchema: OAI_REASONING_SETTINGS,
175
+ settingsSchema: OAI_SAMPLING_UNVERIFIED,
134
176
  status: 'ga',
135
177
  contextWindow: 1_050_000,
136
178
  maxOutputTokens: 128_000,
@@ -152,7 +194,7 @@ exports.DyFM_OAI_Models = [
152
194
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
153
195
  displayName: 'GPT-5.4',
154
196
  tier: 'flagship',
155
- settingsSchema: OAI_REASONING_SETTINGS,
197
+ settingsSchema: OAI_SAMPLING_UNVERIFIED,
156
198
  status: 'ga',
157
199
  contextWindow: 1_000_000,
158
200
  maxOutputTokens: 128_000,
@@ -174,7 +216,7 @@ exports.DyFM_OAI_Models = [
174
216
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
175
217
  displayName: 'GPT-5.4 mini',
176
218
  tier: 'mini',
177
- settingsSchema: OAI_REASONING_SETTINGS,
219
+ settingsSchema: OAI_SAMPLING_ACCEPTED,
178
220
  status: 'ga',
179
221
  contextWindow: 400_000,
180
222
  maxOutputTokens: 128_000,
@@ -196,7 +238,7 @@ exports.DyFM_OAI_Models = [
196
238
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
197
239
  displayName: 'GPT-5.4 nano',
198
240
  tier: 'nano',
199
- settingsSchema: OAI_REASONING_SETTINGS,
241
+ settingsSchema: OAI_SAMPLING_ACCEPTED,
200
242
  status: 'ga',
201
243
  contextWindow: 400_000,
202
244
  maxOutputTokens: 128_000,
@@ -218,7 +260,7 @@ exports.DyFM_OAI_Models = [
218
260
  modelType: ai_model_type_enum_1.DyFM_AI_ModelType.Chat,
219
261
  displayName: 'o3-pro',
220
262
  tier: 'pro',
221
- settingsSchema: OAI_REASONING_SETTINGS,
263
+ settingsSchema: OAI_SAMPLING_UNVERIFIED,
222
264
  status: 'ga',
223
265
  contextWindow: 200_000,
224
266
  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.23",
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,49 @@ 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.4`, `gpt-5.5-pro`, `o3-pro`: the pro-tier models were deliberately NOT probed
52
+ * (cost), and `gpt-5.4` (base) sits between a confirmed-rejecting flagship and a confirmed-accepting
53
+ * mini, so its behaviour genuinely is not known.
54
+ *
55
+ * **Risk direction, stated honestly:** if such a model actually ACCEPTS the params, the reconciler
56
+ * drops them silently → the caller's temperature is quietly ignored. That is the milder failure vs.
57
+ * a hard 400, which is why the conservative side was chosen — but it IS an assumption, not a fact.
58
+ * Resolve by probing these three models (one cheap error-call each).
59
+ */
60
+ const OAI_SAMPLING_UNVERIFIED: DyFM_AI_ModelSettingsSchema = {
61
+ supported: [ 'maxTokens' ],
62
+ unsupported: [ 'temperature', 'topP', 'frequencyPenalty', 'presencePenalty' ],
63
+ extraParams: [ 'reasoningEffort' ],
64
+ constraints: {
65
+ reasoningEffort: {
66
+ note: 'UNVERIFIED (no live capture) — assumption inherited from the FR-047 family-wide rule.',
40
67
  },
41
68
  },
42
69
  };
@@ -75,11 +102,28 @@ const OAI_CLASSIC_CHAT_SETTINGS: DyFM_AI_ModelSettingsSchema = {
75
102
  };
76
103
 
77
104
  /**
78
- * Embedding models take no sampling params; the one real knob is `dimensions`.
105
+ * `gpt-5.4-mini` / `gpt-5.4-nano` **MEASURABLY ACCEPT** all four sampling params.
106
+ *
107
+ * **Live capture 2026-07-21:** `temperature` / `topP` / `frequencyPenalty` / `presencePenalty` each
108
+ * returned HTTP 200 with `reasoning_tokens: 0`. They therefore behave like classic chat models, NOT
109
+ * like the rejecting reasoning models — despite matching the `/^gpt-5/` pattern that FR-047 used.
110
+ * Bounds are the documented OpenAI ranges (see {@link OAI_CLASSIC_CHAT_SETTINGS}).
111
+ */
112
+ const OAI_SAMPLING_ACCEPTED: DyFM_AI_ModelSettingsSchema = {
113
+ ...OAI_CLASSIC_CHAT_SETTINGS,
114
+ extraParams: [ 'reasoningEffort' ],
115
+ };
116
+
117
+ /**
118
+ * Embedding models: the one real knob is `dimensions`.
79
119
  *
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).
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.").
83
127
  */
84
128
  const OAI_EMBEDDING_SETTINGS_SMALL: DyFM_AI_ModelSettingsSchema = {
85
129
  unsupported: [ 'temperature', 'topP', 'frequencyPenalty', 'presencePenalty', 'maxTokens' ],
@@ -113,7 +157,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
113
157
  modelType: DyFM_AI_ModelType.Chat,
114
158
  displayName: 'GPT-5.5',
115
159
  tier: 'flagship',
116
- settingsSchema: OAI_REASONING_SETTINGS,
160
+ settingsSchema: OAI_SAMPLING_REJECTED,
117
161
  status: 'ga',
118
162
  contextWindow: 1_050_000,
119
163
  maxOutputTokens: 128_000,
@@ -135,7 +179,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
135
179
  modelType: DyFM_AI_ModelType.Chat,
136
180
  displayName: 'GPT-5.5 Pro',
137
181
  tier: 'pro',
138
- settingsSchema: OAI_REASONING_SETTINGS,
182
+ settingsSchema: OAI_SAMPLING_UNVERIFIED,
139
183
  status: 'ga',
140
184
  contextWindow: 1_050_000,
141
185
  maxOutputTokens: 128_000,
@@ -157,7 +201,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
157
201
  modelType: DyFM_AI_ModelType.Chat,
158
202
  displayName: 'GPT-5.4',
159
203
  tier: 'flagship',
160
- settingsSchema: OAI_REASONING_SETTINGS,
204
+ settingsSchema: OAI_SAMPLING_UNVERIFIED,
161
205
  status: 'ga',
162
206
  contextWindow: 1_000_000,
163
207
  maxOutputTokens: 128_000,
@@ -179,7 +223,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
179
223
  modelType: DyFM_AI_ModelType.Chat,
180
224
  displayName: 'GPT-5.4 mini',
181
225
  tier: 'mini',
182
- settingsSchema: OAI_REASONING_SETTINGS,
226
+ settingsSchema: OAI_SAMPLING_ACCEPTED,
183
227
  status: 'ga',
184
228
  contextWindow: 400_000,
185
229
  maxOutputTokens: 128_000,
@@ -201,7 +245,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
201
245
  modelType: DyFM_AI_ModelType.Chat,
202
246
  displayName: 'GPT-5.4 nano',
203
247
  tier: 'nano',
204
- settingsSchema: OAI_REASONING_SETTINGS,
248
+ settingsSchema: OAI_SAMPLING_ACCEPTED,
205
249
  status: 'ga',
206
250
  contextWindow: 400_000,
207
251
  maxOutputTokens: 128_000,
@@ -223,7 +267,7 @@ export const DyFM_OAI_Models: DyFM_AI_ModelInfo[] = [
223
267
  modelType: DyFM_AI_ModelType.Chat,
224
268
  displayName: 'o3-pro',
225
269
  tier: 'pro',
226
- settingsSchema: OAI_REASONING_SETTINGS,
270
+ settingsSchema: OAI_SAMPLING_UNVERIFIED,
227
271
  status: 'ga',
228
272
  contextWindow: 200_000,
229
273
  maxOutputTokens: 100_000,