@futdevpro/nts-dynamo 1.15.105 → 1.15.107

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/.dynamo/logs/cicd-pipeline/output.log +1805 -1863
  2. package/.dynamo/logs/cicd-pipeline/status.json +28 -28
  3. package/build/_modules/ai/_collections/ai-model-config-validator.util.d.ts +32 -0
  4. package/build/_modules/ai/_collections/ai-model-config-validator.util.d.ts.map +1 -0
  5. package/build/_modules/ai/_collections/ai-model-config-validator.util.js +95 -0
  6. package/build/_modules/ai/_collections/ai-model-config-validator.util.js.map +1 -0
  7. package/build/_modules/ai/_collections/ai-provider-error.util.d.ts +35 -0
  8. package/build/_modules/ai/_collections/ai-provider-error.util.d.ts.map +1 -0
  9. package/build/_modules/ai/_collections/ai-provider-error.util.js +82 -0
  10. package/build/_modules/ai/_collections/ai-provider-error.util.js.map +1 -0
  11. package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.d.ts +17 -0
  12. package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.d.ts.map +1 -0
  13. package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.js +3 -0
  14. package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.js.map +1 -0
  15. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.d.ts +23 -0
  16. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.d.ts.map +1 -0
  17. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.js +52 -0
  18. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.js.map +1 -0
  19. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.d.ts +34 -0
  20. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.d.ts.map +1 -0
  21. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.js +56 -0
  22. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.js.map +1 -0
  23. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.d.ts +33 -0
  24. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.d.ts.map +1 -0
  25. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.js +89 -0
  26. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.js.map +1 -0
  27. package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.d.ts +16 -0
  28. package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.d.ts.map +1 -0
  29. package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.js +20 -0
  30. package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.js.map +1 -0
  31. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.d.ts +15 -0
  32. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.d.ts.map +1 -0
  33. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.js +3 -0
  34. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.js.map +1 -0
  35. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.d.ts +11 -0
  36. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.d.ts.map +1 -0
  37. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.js +3 -0
  38. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.js.map +1 -0
  39. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.d.ts +30 -0
  40. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.d.ts.map +1 -0
  41. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.js +3 -0
  42. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.js.map +1 -0
  43. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.d.ts +19 -0
  44. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.d.ts.map +1 -0
  45. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.js +3 -0
  46. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.js.map +1 -0
  47. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.d.ts +19 -0
  48. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.d.ts.map +1 -0
  49. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.js +3 -0
  50. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.js.map +1 -0
  51. package/build/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.d.ts +2 -2
  52. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.d.ts.map +1 -0
  53. package/build/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.js +1 -1
  54. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.js.map +1 -0
  55. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.d.ts +48 -0
  56. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.d.ts.map +1 -0
  57. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.js +104 -0
  58. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.js.map +1 -0
  59. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.d.ts +35 -0
  60. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.d.ts.map +1 -0
  61. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.js +60 -0
  62. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.js.map +1 -0
  63. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.d.ts +60 -0
  64. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.d.ts.map +1 -0
  65. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.js +121 -0
  66. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.js.map +1 -0
  67. package/build/_modules/ai/_modules/ai-mock/index.d.ts +14 -0
  68. package/build/_modules/ai/_modules/ai-mock/index.d.ts.map +1 -0
  69. package/build/_modules/ai/_modules/ai-mock/index.js +41 -0
  70. package/build/_modules/ai/_modules/ai-mock/index.js.map +1 -0
  71. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.d.ts +18 -0
  72. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.d.ts.map +1 -1
  73. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js +58 -30
  74. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js.map +1 -1
  75. package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts +1 -1
  76. package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts.map +1 -1
  77. package/build/_modules/ai/_services/ai-embedding-provider.registry.js +1 -1
  78. package/build/_modules/ai/_services/ai-embedding-provider.registry.js.map +1 -1
  79. package/build/_modules/ai/_services/ai-llm.service-base.d.ts +16 -0
  80. package/build/_modules/ai/_services/ai-llm.service-base.d.ts.map +1 -1
  81. package/build/_modules/ai/_services/ai-llm.service-base.js +65 -0
  82. package/build/_modules/ai/_services/ai-llm.service-base.js.map +1 -1
  83. package/build/_modules/ai/index.d.ts +4 -1
  84. package/build/_modules/ai/index.d.ts.map +1 -1
  85. package/build/_modules/ai/index.js +9 -1
  86. package/build/_modules/ai/index.js.map +1 -1
  87. package/package.json +11 -2
  88. package/src/_modules/ai/_collections/ai-model-config-validator.util.spec.ts +150 -0
  89. package/src/_modules/ai/_collections/ai-model-config-validator.util.ts +131 -0
  90. package/src/_modules/ai/_collections/ai-provider-error.util.ts +98 -0
  91. package/src/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.ts +16 -0
  92. package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.ts +72 -0
  93. package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.ts +71 -0
  94. package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.ts +57 -0
  95. package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.ts +60 -0
  96. package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.ts +56 -0
  97. package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.ts +107 -0
  98. package/src/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.ts +15 -0
  99. package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.ts +14 -0
  100. package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.ts +11 -0
  101. package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.ts +30 -0
  102. package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.ts +19 -0
  103. package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.ts +20 -0
  104. package/src/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.spec.ts +1 -1
  105. package/src/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.ts +2 -2
  106. package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.ts +134 -0
  107. package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.ts +127 -0
  108. package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.ts +105 -0
  109. package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.ts +50 -0
  110. package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.ts +65 -0
  111. package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.ts +112 -0
  112. package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.ts +142 -0
  113. package/src/_modules/ai/_modules/ai-mock/index.ts +44 -0
  114. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +77 -35
  115. package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +1 -1
  116. package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +1 -1
  117. package/src/_modules/ai/_services/ai-llm.service-base.reconciler.spec.ts +133 -0
  118. package/src/_modules/ai/_services/ai-llm.service-base.ts +80 -0
  119. package/src/_modules/ai/index.ts +11 -1
  120. package/build/_modules/ai/_services/ai-embedding-mock.service.d.ts.map +0 -1
  121. package/build/_modules/ai/_services/ai-embedding-mock.service.js.map +0 -1
@@ -47,6 +47,71 @@ class DyNTS_AI_LLM_ServiceBase extends ai_provider_service_base_1.DyNTS_AI_Provi
47
47
  });
48
48
  }
49
49
  }
50
+ //////////////////////////////////////////////////////////////////////////////////////////
51
+ // PER-MODEL SETTINGS RECONCILER — FR-048 //
52
+ //////////////////////////////////////////////////////////////////////////////////////////
53
+ /**
54
+ * FR-048 reconciler — a resolved modell `settingsSchema`-ja szerint egyezteti a call-settings-et a
55
+ * tenyleges provider-hivas ELOTT: DROPolja az `unsupported` kulcsokat (debug-log, SOHA nem csendben),
56
+ * CLAMP-eli a `constraints` (min/max) szerint. Ismeretlen modell / schema-mentes registry-bejegyzes →
57
+ * permisszi­v passthrough + log (best-effort, honesty).
58
+ *
59
+ * Ezzel altalanosul a FR-047 Phase-4 lokalis param-drop (Anthropic Opus 4.7+ temperature/topP/topK) es a
60
+ * FR-047 `isReasoningModel` sampling-drop: a tudas mostantol a registry `settingsSchema`-jaban (SSoT) el,
61
+ * nem provider-translator-onkent duplikalva.
62
+ *
63
+ * NON-BREAKING: ha a registry ures vagy a modellnek nincs schemaja, a bemenet valtozatlanul ter vissza —
64
+ * igy a meglevo providerek viselkedese nem valtozik, amig a schema nincs feltoltve.
65
+ * @param modelId - a feloldott modell azonositoja
66
+ * @param settings - a hivas-settings (opcionalis)
67
+ */
68
+ reconcileCallSettings(modelId, settings) {
69
+ if (!settings) {
70
+ return settings;
71
+ }
72
+ const modelInfo = ai_1.DyFM_AI_ModelRegistry_Util.findModelInfo(this.getModelRegistry(), modelId);
73
+ const schema = modelInfo?.settingsSchema;
74
+ if (!schema) {
75
+ if (this.debugLog) {
76
+ fsm_dynamo_1.DyFM_Log.info(`[FR-048] no settingsSchema for '${modelId}' — passthrough (best-effort)`);
77
+ }
78
+ return settings;
79
+ }
80
+ const reconciled = { ...settings };
81
+ // A generikus `T_AISettings` csak OLVASASRA indexelheto (TS2862), ezert a mutaciot egy nem-generikus
82
+ // aliason vegezzuk — UGYANARRA az objektumra mutat, igy cast nelkul is tipus-helyes marad.
83
+ const mutable = reconciled;
84
+ for (const key of schema.unsupported ?? []) {
85
+ if (mutable[key] !== undefined) {
86
+ if (this.debugLog) {
87
+ fsm_dynamo_1.DyFM_Log.info(`[FR-048] drop unsupported '${key}' for model '${modelId}'`);
88
+ }
89
+ delete mutable[key];
90
+ }
91
+ }
92
+ const constraints = schema.constraints ?? {};
93
+ for (const key of Object.keys(constraints)) {
94
+ const constraint = constraints[key];
95
+ const value = mutable[key];
96
+ if (typeof value !== 'number') {
97
+ continue;
98
+ }
99
+ let next = value;
100
+ if (typeof constraint.min === 'number' && next < constraint.min) {
101
+ next = constraint.min;
102
+ }
103
+ if (typeof constraint.max === 'number' && next > constraint.max) {
104
+ next = constraint.max;
105
+ }
106
+ if (next !== value) {
107
+ if (this.debugLog) {
108
+ fsm_dynamo_1.DyFM_Log.info(`[FR-048] clamp '${key}' ${value} → ${next} for model '${modelId}'`);
109
+ }
110
+ mutable[key] = next;
111
+ }
112
+ }
113
+ return reconciled;
114
+ }
50
115
  /**
51
116
  * GPT valasz Function Calling Agent Tool-okkal — provider-agnosztikus agent-loop.
52
117
  * @description A `tools` definiciok + `toolHandlers` alapjan tool-loop-ot futtat: hivja a
@@ -1 +1 @@
1
- {"version":3,"file":"ai-llm.service-base.js","sourceRoot":"","sources":["../../../../src/_modules/ai/_services/ai-llm.service-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-llm.service-base.js","sourceRoot":"","sources":["../../../../src/_modules/ai/_services/ai-llm.service-base.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,15 @@ export * from './_models/ai-input-interfaces';
3
3
  export * from './_models/ai-test-generation-result.interface';
4
4
  export * from './_models/interfaces/dynts-ai-cost-event.interface';
5
5
  export * from './_models/interfaces/dynts-ai-cost-event-callback.interface';
6
+ export * from './_models/interfaces/dynts-ai-provider-error.interface';
7
+ export * from './_collections/ai-provider-error.util';
8
+ export * from './_collections/ai-model-config-validator.util';
6
9
  export * from './_services/ai-provider.service-base';
7
10
  export * from './_services/ai-llm.service-base';
8
11
  export * from './_services/ai-llm-chat.service-base';
9
12
  export * from './_services/ai-embedding.service-base';
10
13
  export * from './_services/ai-user-key.service-base';
11
14
  export * from './_services/lmstudio-embedding.control-service';
12
- export * from './_services/ai-embedding-mock.service';
13
15
  export * from './_services/ai-embedding-provider.registry';
16
+ export * from './_modules/ai-mock/_services/ai-embedding-mock.service';
14
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/ai/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAC;AAGzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+CAA+C,CAAC;AAI9D,cAAc,oDAAoD,CAAC;AACnE,cAAc,6DAA6D,CAAC;AAG5E,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AAGrD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/ai/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAC;AAGzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+CAA+C,CAAC;AAI9D,cAAc,oDAAoD,CAAC;AACnE,cAAc,6DAA6D,CAAC;AAI5E,cAAc,wDAAwD,CAAC;AACvE,cAAc,uCAAuC,CAAC;AACtD,cAAc,+CAA+C,CAAC;AAG9D,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AAGrD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAK3D,cAAc,wDAAwD,CAAC"}
@@ -10,6 +10,11 @@ tslib_1.__exportStar(require("./_models/ai-test-generation-result.interface"), e
10
10
  // callback-jét; ezért barrel-export kell (M3, FAM-REV bedrock-fix).
11
11
  tslib_1.__exportStar(require("./_models/interfaces/dynts-ai-cost-event.interface"), exports);
12
12
  tslib_1.__exportStar(require("./_models/interfaces/dynts-ai-cost-event-callback.interface"), exports);
13
+ // FR-048 per-model settings — provider-faithful hiba-alak + validate-mode (production pre-validation).
14
+ // A reconciler (`DyNTS_AI_LLM_ServiceBase.reconcileCallSettings`) testvére: UGYANAZ a `settingsSchema` forrás.
15
+ tslib_1.__exportStar(require("./_models/interfaces/dynts-ai-provider-error.interface"), exports);
16
+ tslib_1.__exportStar(require("./_collections/ai-provider-error.util"), exports);
17
+ tslib_1.__exportStar(require("./_collections/ai-model-config-validator.util"), exports);
13
18
  // Abstract Services
14
19
  tslib_1.__exportStar(require("./_services/ai-provider.service-base"), exports);
15
20
  tslib_1.__exportStar(require("./_services/ai-llm.service-base"), exports);
@@ -18,6 +23,9 @@ tslib_1.__exportStar(require("./_services/ai-embedding.service-base"), exports);
18
23
  tslib_1.__exportStar(require("./_services/ai-user-key.service-base"), exports);
19
24
  // Concrete Embedding Services + provider-dispatch (BFR-AM-002 / 007 / 008)
20
25
  tslib_1.__exportStar(require("./_services/lmstudio-embedding.control-service"), exports);
21
- tslib_1.__exportStar(require("./_services/ai-embedding-mock.service"), exports);
22
26
  tslib_1.__exportStar(require("./_services/ai-embedding-provider.registry"), exports);
27
+ // BACKWARD-COMPAT (MP-5 SP-5.1): a determinisztikus embedding-mock FIZIKAILAG az `ai-mock` submodulba
28
+ // koltozott (`./_modules/ai-mock/_services/`), de a `@futdevpro/nts-dynamo/ai` import-utvonal VALTOZATLAN —
29
+ // a meglevo consumer (FAM `EMBEDDING_PROVIDER=mock`) nem torik. Uj kod inkabb `@futdevpro/nts-dynamo/ai/ai-mock`.
30
+ tslib_1.__exportStar(require("./_modules/ai-mock/_services/ai-embedding-mock.service"), exports);
23
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/ai/index.ts"],"names":[],"mappings":";;;AAAA,qBAAqB;AACrB,mEAAyC;AAEzC,uCAAuC;AACvC,wEAA8C;AAC9C,wFAA8D;AAE9D,kGAAkG;AAClG,oEAAoE;AACpE,6FAAmE;AACnE,sGAA4E;AAE5E,oBAAoB;AACpB,+EAAqD;AACrD,0EAAgD;AAChD,+EAAqD;AACrD,gFAAsD;AACtD,+EAAqD;AAErD,2EAA2E;AAC3E,yFAA+D;AAC/D,gFAAsD;AACtD,qFAA2D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/ai/index.ts"],"names":[],"mappings":";;;AAAA,qBAAqB;AACrB,mEAAyC;AAEzC,uCAAuC;AACvC,wEAA8C;AAC9C,wFAA8D;AAE9D,kGAAkG;AAClG,oEAAoE;AACpE,6FAAmE;AACnE,sGAA4E;AAE5E,uGAAuG;AACvG,+GAA+G;AAC/G,iGAAuE;AACvE,gFAAsD;AACtD,wFAA8D;AAE9D,oBAAoB;AACpB,+EAAqD;AACrD,0EAAgD;AAChD,+EAAqD;AACrD,gFAAsD;AACtD,+EAAqD;AAErD,2EAA2E;AAC3E,yFAA+D;AAC/D,qFAA2D;AAE3D,sGAAsG;AACtG,4GAA4G;AAC5G,kHAAkH;AAClH,iGAAuE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/nts-dynamo",
3
- "version": "01.15.105",
3
+ "version": "01.15.107",
4
4
  "description": "Dynamic NodeTS (NodeJS-Typescript), MongoDB Backend System Framework by Future Development Program Ltd.",
5
5
  "DyBu_settings": {
6
6
  "packageType": "server-package",
@@ -104,6 +104,12 @@
104
104
  "types": "./build/_modules/ai/_modules/fdp-ai/index.d.ts",
105
105
  "typings": "./build/_modules/ai/_modules/fdp-ai/index.d.ts"
106
106
  },
107
+ "./ai/ai-mock": {
108
+ "default": "./build/_modules/ai/_modules/ai-mock/index.js",
109
+ "module": "./build/_modules/ai/_modules/ai-mock/index.js",
110
+ "types": "./build/_modules/ai/_modules/ai-mock/index.d.ts",
111
+ "typings": "./build/_modules/ai/_modules/ai-mock/index.d.ts"
112
+ },
107
113
  "./assistant": {
108
114
  "default": "./build/_modules/assistant/index.js",
109
115
  "module": "./build/_modules/assistant/index.js",
@@ -278,6 +284,9 @@
278
284
  "ai/open-ai": [
279
285
  "build/_modules/ai/_modules/open-ai/index.d.ts"
280
286
  ],
287
+ "ai/ai-mock": [
288
+ "build/_modules/ai/_modules/ai-mock/index.d.ts"
289
+ ],
281
290
  "assistant": [
282
291
  "build/_modules/assistant/index.d.ts"
283
292
  ],
@@ -369,7 +378,7 @@
369
378
  "@anthropic-ai/sdk": "~0.39.0",
370
379
  "@modelcontextprotocol/sdk": "~1.29.0",
371
380
  "better-sqlite3": "~12.4.1",
372
- "@futdevpro/fsm-dynamo": "1.16.19",
381
+ "@futdevpro/fsm-dynamo": "1.16.21",
373
382
  "@types/express": "4.17.21",
374
383
  "@types/geoip-lite": "~1.4.1",
375
384
  "@types/node": "~24.1.0",
@@ -0,0 +1,150 @@
1
+ import { DyFM_Error } from '@futdevpro/fsm-dynamo';
2
+ import { DyFM_AI_ModelInfo, DyFM_AI_ModelType, DyFM_AI_Provider } from '@futdevpro/fsm-dynamo/ai';
3
+
4
+ import { DyNTS_AI_ModelConfig_Validator } from './ai-model-config-validator.util';
5
+
6
+ describe('| DyNTS_AI_ModelConfig_Validator (FR-048 validate-mode)', () => {
7
+
8
+ const registry: DyFM_AI_ModelInfo[] = [
9
+ {
10
+ id: 'reasoning-model',
11
+ provider: DyFM_AI_Provider.OpenAI,
12
+ modelType: DyFM_AI_ModelType.Chat,
13
+ capabilities: {} as any,
14
+ settingsSchema: { unsupported: ['temperature', 'topP'] },
15
+ },
16
+ {
17
+ id: 'opus-model',
18
+ provider: DyFM_AI_Provider.Anthropic,
19
+ modelType: DyFM_AI_ModelType.Chat,
20
+ capabilities: {} as any,
21
+ settingsSchema: { unsupported: ['temperature'] },
22
+ },
23
+ {
24
+ id: 'plain-model',
25
+ provider: DyFM_AI_Provider.OpenAI,
26
+ modelType: DyFM_AI_ModelType.Chat,
27
+ capabilities: {} as any,
28
+ },
29
+ {
30
+ id: 'constrained-model',
31
+ provider: DyFM_AI_Provider.OpenAI,
32
+ modelType: DyFM_AI_ModelType.Chat,
33
+ capabilities: {} as any,
34
+ settingsSchema: {
35
+ supported: ['maxTokens', 'reasoningEffort'],
36
+ constraints: {
37
+ reasoningEffort: { allowed: ['low', 'medium', 'high'] },
38
+ maxTokens: { min: 10, max: 100 },
39
+ },
40
+ },
41
+ },
42
+ ];
43
+
44
+ it('| nem tamogatott param → provider-faithful DyFM_Error', () => {
45
+ const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
46
+ provider: 'open-ai',
47
+ model: 'reasoning-model',
48
+ config: { temperature: 0.5 },
49
+ registry: registry,
50
+ });
51
+
52
+ expect(error instanceof DyFM_Error).toBe(true);
53
+ expect(error.message).toContain('unsupported_parameter:temperature');
54
+ });
55
+
56
+ it('| csak tamogatott paramok → null (OK)', () => {
57
+ const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
58
+ provider: 'open-ai',
59
+ model: 'reasoning-model',
60
+ config: { maxTokens: 100 },
61
+ registry: registry,
62
+ });
63
+
64
+ expect(error).toBeNull();
65
+ });
66
+
67
+ it('| Anthropic provider → anthropic-alaku hiba-body', () => {
68
+ const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
69
+ provider: 'anthropic',
70
+ model: 'opus-model',
71
+ config: { temperature: 0.5 },
72
+ registry: registry,
73
+ });
74
+
75
+ expect(error.message).toContain('invalid_request_error:temperature');
76
+ });
77
+
78
+ it('| schema-mentes modell → null (permisszi­v, nem talalgat)', () => {
79
+ const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
80
+ provider: 'open-ai',
81
+ model: 'plain-model',
82
+ config: { temperature: 0.5 },
83
+ registry: registry,
84
+ });
85
+
86
+ expect(error).toBeNull();
87
+ });
88
+
89
+ it('| ismeretlen modell → null (permisszi­v)', () => {
90
+ const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
91
+ provider: 'open-ai',
92
+ model: 'nincs-ilyen',
93
+ config: { temperature: 0.5 },
94
+ registry: registry,
95
+ });
96
+
97
+ expect(error).toBeNull();
98
+ });
99
+
100
+ it('| constraints.allowed megsertve → invalid_value hiba', () => {
101
+ const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
102
+ provider: 'open-ai',
103
+ model: 'constrained-model',
104
+ config: { reasoningEffort: 'ultra' },
105
+ registry: registry,
106
+ });
107
+
108
+ expect(error instanceof DyFM_Error).toBe(true);
109
+ expect(error.message).toContain('invalid_value:reasoningEffort');
110
+ });
111
+
112
+ it('| constraints.allowed betartva → null', () => {
113
+ expect(DyNTS_AI_ModelConfig_Validator.validate({
114
+ provider: 'open-ai',
115
+ model: 'constrained-model',
116
+ config: { reasoningEffort: 'medium' },
117
+ registry: registry,
118
+ })).toBeNull();
119
+ });
120
+
121
+ it('| constraints min/max megsertve → invalid_value hiba', () => {
122
+ const tooHigh: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
123
+ provider: 'open-ai',
124
+ model: 'constrained-model',
125
+ config: { maxTokens: 5000 },
126
+ registry: registry,
127
+ });
128
+
129
+ expect(tooHigh.message).toContain('invalid_value:maxTokens');
130
+ });
131
+
132
+ it('| constraints tartomanyon belul → null', () => {
133
+ expect(DyNTS_AI_ModelConfig_Validator.validate({
134
+ provider: 'open-ai',
135
+ model: 'constrained-model',
136
+ config: { maxTokens: 50 },
137
+ registry: registry,
138
+ })).toBeNull();
139
+ });
140
+
141
+ it('| config nelkul → null', () => {
142
+ const error: DyFM_Error = DyNTS_AI_ModelConfig_Validator.validate({
143
+ provider: 'open-ai',
144
+ model: 'reasoning-model',
145
+ registry: registry,
146
+ });
147
+
148
+ expect(error).toBeNull();
149
+ });
150
+ });
@@ -0,0 +1,131 @@
1
+ import { DyFM_Error } from '@futdevpro/fsm-dynamo';
2
+ import {
3
+ DyFM_AI_ModelInfo,
4
+ DyFM_AI_ModelRegistry_Util,
5
+ DyFM_AI_ModelSettingsSchema,
6
+ DyFM_AI_SettingConstraint,
7
+ } from '@futdevpro/fsm-dynamo/ai';
8
+
9
+ import { DyNTS_AI_ProviderError } from '../_models/interfaces/dynts-ai-provider-error.interface';
10
+ import { DyNTS_AI_ProviderError_Util } from './ai-provider-error.util';
11
+
12
+ /**
13
+ * FR-048 **validate-mode** — a per-model `settingsSchema` szerinti config-ellenorzes MUTACIO NELKUL.
14
+ *
15
+ * Testvere a `DyNTS_AI_LLM_ServiceBase.reconcileCallSettings`-nek: a reconciler a hivas elott CSENDBEN
16
+ * dropol/clampel (hogy a hivas atmenjen), ez viszont HIBAT AD — igy hasznalhato **production
17
+ * pre-validaciora** (UI-form submit elott, backend service-boundary-n) es tesztben egyarant.
18
+ * **Ugyanabbol az egy forrasbol** (`settingsSchema`) dolgozik mindketto — nincs parhuzamos szabaly-keszlet.
19
+ *
20
+ * A visszateres `null` = OK; kulonben provider-faithful `DyFM_Error` (a nativ hiba-body az
21
+ * `additionalContent.providerErrorBody`-ban).
22
+ *
23
+ * Ismeretlen modell / schema-mentes registry-bejegyzes → `null` (permisszi­v, best-effort) — NEM talalgatunk.
24
+ */
25
+ export class DyNTS_AI_ModelConfig_Validator {
26
+
27
+ /**
28
+ * Egy hivas-config ellenorzese a modell `settingsSchema`-ja ellen.
29
+ * @param set - provider + modell + a vizsgalando config + a provider modell-registry-je
30
+ */
31
+ static validate(
32
+ set: {
33
+ provider: string,
34
+ model: string,
35
+ config?: Record<string, unknown>,
36
+ registry: DyFM_AI_ModelInfo[],
37
+ }
38
+ ): DyFM_Error {
39
+ if (!set.config) {
40
+ return null;
41
+ }
42
+
43
+ const modelInfo: DyFM_AI_ModelInfo = DyFM_AI_ModelRegistry_Util.findModelInfo(set.registry ?? [], set.model);
44
+ const schema: DyFM_AI_ModelSettingsSchema = modelInfo?.settingsSchema;
45
+
46
+ if (!schema) {
47
+ return null;
48
+ }
49
+
50
+ // 1) NEM tamogatott parameter (a modell 400-zal elutasitana)
51
+ for (const param of schema.unsupported ?? []) {
52
+ if (set.config[param] !== undefined) {
53
+ return this.toError(
54
+ DyNTS_AI_ProviderError_Util.buildUnsupportedParamError({
55
+ provider: set.provider,
56
+ model: set.model,
57
+ param: param,
58
+ })
59
+ );
60
+ }
61
+ }
62
+
63
+ // 2) Tamogatott parameter, de ervenytelen ertek (constraints: allowed / min / max)
64
+ return this.validateConstraints({
65
+ provider: set.provider,
66
+ model: set.model,
67
+ config: set.config,
68
+ schema: schema,
69
+ });
70
+ }
71
+
72
+ /** A `constraints` (allowed / min / max) ellenorzese. `null` = OK. */
73
+ private static validateConstraints(
74
+ set: {
75
+ provider: string,
76
+ model: string,
77
+ config: Record<string, unknown>,
78
+ schema: DyFM_AI_ModelSettingsSchema,
79
+ }
80
+ ): DyFM_Error {
81
+ const constraints: Record<string, DyFM_AI_SettingConstraint> = set.schema.constraints ?? {};
82
+
83
+ for (const param of Object.keys(constraints)) {
84
+ const constraint: DyFM_AI_SettingConstraint = constraints[param];
85
+ const value: unknown = set.config[param];
86
+
87
+ if (value === undefined) {
88
+ continue;
89
+ }
90
+
91
+ if (constraint.allowed?.length && !constraint.allowed.includes(value)) {
92
+ return this.toError(
93
+ DyNTS_AI_ProviderError_Util.buildInvalidValueError({
94
+ provider: set.provider,
95
+ model: set.model,
96
+ param: param,
97
+ detail: `must be one of [${constraint.allowed.join(', ')}]`,
98
+ })
99
+ );
100
+ }
101
+
102
+ if (typeof value === 'number') {
103
+ const belowMin: boolean = typeof constraint.min === 'number' && value < constraint.min;
104
+ const aboveMax: boolean = typeof constraint.max === 'number' && value > constraint.max;
105
+
106
+ if (belowMin || aboveMax) {
107
+ return this.toError(
108
+ DyNTS_AI_ProviderError_Util.buildInvalidValueError({
109
+ provider: set.provider,
110
+ model: set.model,
111
+ param: param,
112
+ detail: `out of range (${constraint.min ?? '-∞'}..${constraint.max ?? '∞'})`,
113
+ })
114
+ );
115
+ }
116
+ }
117
+ }
118
+
119
+ return null;
120
+ }
121
+
122
+ /** Provider-faithful hiba-leiroból a `DyFM_Error`. */
123
+ private static toError(providerError: DyNTS_AI_ProviderError): DyFM_Error {
124
+ return new DyFM_Error({
125
+ message: `[FR-048] provider-faithful error (HTTP ${providerError.httpStatus}): ${providerError.reason}`,
126
+ userMessage: 'The AI request contains a parameter this model does not accept.',
127
+ errorCode: 'DyNTS-AICFG-UNSUP',
128
+ additionalContent: { providerErrorBody: providerError.providerErrorBody },
129
+ });
130
+ }
131
+ }
@@ -0,0 +1,98 @@
1
+ import { DyFM_AI_Provider } from '@futdevpro/fsm-dynamo/ai';
2
+
3
+ import { DyNTS_AI_ProviderError } from '../_models/interfaces/dynts-ai-provider-error.interface';
4
+
5
+ /**
6
+ * Provider-faithful hiba-alakok eloallitasa a FR-048 `settingsSchema` szabalysertesekhez — ugyanaz a
7
+ * hiba-alak, mint amit a valodi provider adna. A forras-igazsag a `settingsSchema` (SSoT); itt CSAK a
8
+ * hiba formazasa tortenik, szabaly-duplikatum nincs.
9
+ *
10
+ * **Pontossag (D4):** a hiba **strukturaja** (mezok + `code`/`type`) a dokumentalt provider-alak szerint
11
+ * keszult; a `message` SZOVEGE a valodi capture-ig kozelites. A gepileg fogyasztott resz (`reason`, `code`,
12
+ * `param`, `httpStatus`) a stabil — a byte-hu message a fixture-capture passzal pontosithato.
13
+ */
14
+ export class DyNTS_AI_ProviderError_Util {
15
+
16
+ /** Az Anthropic provider-azonositoja (a hiba-alak valasztasahoz) — az enumbol, nem beegetett stringkent. */
17
+ private static readonly anthropicProviderId: string = DyFM_AI_Provider.Anthropic;
18
+
19
+ /**
20
+ * Nem tamogatott parameter → provider-hu HTTP 400 hiba-leiro.
21
+ * @param set - provider-azonosito + modell-azonosito + a kifogasolt parameter neve
22
+ */
23
+ static buildUnsupportedParamError(
24
+ set: {
25
+ provider: string,
26
+ model: string,
27
+ param: string,
28
+ }
29
+ ): DyNTS_AI_ProviderError {
30
+ if (set.provider === this.anthropicProviderId) {
31
+ return {
32
+ httpStatus: 400,
33
+ providerErrorBody: {
34
+ type: 'error',
35
+ error: {
36
+ type: 'invalid_request_error',
37
+ message: `${set.param}: Extra inputs are not permitted for model '${set.model}'.`,
38
+ },
39
+ },
40
+ reason: `invalid_request_error:${set.param}`,
41
+ };
42
+ }
43
+
44
+ return {
45
+ httpStatus: 400,
46
+ providerErrorBody: {
47
+ error: {
48
+ message: `Unsupported parameter: '${set.param}' is not supported with model '${set.model}'.`,
49
+ type: 'invalid_request_error',
50
+ param: set.param,
51
+ code: 'unsupported_parameter',
52
+ },
53
+ },
54
+ reason: `unsupported_parameter:${set.param}`,
55
+ };
56
+ }
57
+
58
+ /**
59
+ * Tamogatott parameter, de ERVENYTELEN ertek (tartomanyon kivul, vagy nem az engedett keszletbol) →
60
+ * provider-hu HTTP 400. Ez a `settingsSchema.constraints` (min/max/allowed) megsertese.
61
+ * @param set - provider + modell + parameter-nev + a rovid indoklas (pl. 'out of range 0..2')
62
+ */
63
+ static buildInvalidValueError(
64
+ set: {
65
+ provider: string,
66
+ model: string,
67
+ param: string,
68
+ detail: string,
69
+ }
70
+ ): DyNTS_AI_ProviderError {
71
+ if (set.provider === this.anthropicProviderId) {
72
+ return {
73
+ httpStatus: 400,
74
+ providerErrorBody: {
75
+ type: 'error',
76
+ error: {
77
+ type: 'invalid_request_error',
78
+ message: `${set.param}: ${set.detail} (model '${set.model}').`,
79
+ },
80
+ },
81
+ reason: `invalid_request_error:${set.param}`,
82
+ };
83
+ }
84
+
85
+ return {
86
+ httpStatus: 400,
87
+ providerErrorBody: {
88
+ error: {
89
+ message: `Invalid value for '${set.param}': ${set.detail} (model '${set.model}').`,
90
+ type: 'invalid_request_error',
91
+ param: set.param,
92
+ code: 'invalid_value',
93
+ },
94
+ },
95
+ reason: `invalid_value:${set.param}`,
96
+ };
97
+ }
98
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Provider-faithful hiba-leiro — azt irja le, MILYEN hibat adna a valodi provider egy szabalytalan
3
+ * hivasra (FR-048). A `providerErrorBody` a provider NATIV hiba-JSON-ja (OpenAI:
4
+ * `{error:{message,type,param,code}}`, Anthropic: `{type:'error',error:{type,message}}`).
5
+ *
6
+ * Egy helyen definialva, hogy a Layer A validator (`DyNTS_AI_ModelConfig_Validator`) es a Layer B
7
+ * mock-fixture-ok UGYANAZT az alakot hasznaljak — nincs parhuzamos hiba-shape (SSoT).
8
+ */
9
+ export interface DyNTS_AI_ProviderError {
10
+ /** A reprodukalando HTTP-statusz (pl. 400). */
11
+ httpStatus: number;
12
+ /** A provider nativ hiba-body-ja. */
13
+ providerErrorBody: unknown;
14
+ /** Rovid, gepi ok-jeloles (pl. 'unsupported_parameter:temperature'). */
15
+ reason: string;
16
+ }