@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.
- package/.dynamo/logs/cicd-pipeline/output.log +1805 -1863
- package/.dynamo/logs/cicd-pipeline/status.json +28 -28
- package/build/_modules/ai/_collections/ai-model-config-validator.util.d.ts +32 -0
- package/build/_modules/ai/_collections/ai-model-config-validator.util.d.ts.map +1 -0
- package/build/_modules/ai/_collections/ai-model-config-validator.util.js +95 -0
- package/build/_modules/ai/_collections/ai-model-config-validator.util.js.map +1 -0
- package/build/_modules/ai/_collections/ai-provider-error.util.d.ts +35 -0
- package/build/_modules/ai/_collections/ai-provider-error.util.d.ts.map +1 -0
- package/build/_modules/ai/_collections/ai-provider-error.util.js +82 -0
- package/build/_modules/ai/_collections/ai-provider-error.util.js.map +1 -0
- package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.d.ts +17 -0
- package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.d.ts.map +1 -0
- package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.js +3 -0
- package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.d.ts +23 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.js +52 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.d.ts +34 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.js +56 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.d.ts +33 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.js +89 -0
- package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.d.ts +16 -0
- package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.js +20 -0
- package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.d.ts +15 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.js +3 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.d.ts +11 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.js +3 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.d.ts +30 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.js +3 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.d.ts +19 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.js +3 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.d.ts +19 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.js +3 -0
- package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.js.map +1 -0
- package/build/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.d.ts +2 -2
- package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.d.ts.map +1 -0
- package/build/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.js +1 -1
- package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.d.ts +48 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.js +104 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.d.ts +35 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.js +60 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.d.ts +60 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.js +121 -0
- package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.js.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/index.d.ts +14 -0
- package/build/_modules/ai/_modules/ai-mock/index.d.ts.map +1 -0
- package/build/_modules/ai/_modules/ai-mock/index.js +41 -0
- package/build/_modules/ai/_modules/ai-mock/index.js.map +1 -0
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.d.ts +18 -0
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.d.ts.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js +58 -30
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js.map +1 -1
- package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts +1 -1
- package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts.map +1 -1
- package/build/_modules/ai/_services/ai-embedding-provider.registry.js +1 -1
- package/build/_modules/ai/_services/ai-embedding-provider.registry.js.map +1 -1
- package/build/_modules/ai/_services/ai-llm.service-base.d.ts +16 -0
- package/build/_modules/ai/_services/ai-llm.service-base.d.ts.map +1 -1
- package/build/_modules/ai/_services/ai-llm.service-base.js +65 -0
- package/build/_modules/ai/_services/ai-llm.service-base.js.map +1 -1
- package/build/_modules/ai/index.d.ts +4 -1
- package/build/_modules/ai/index.d.ts.map +1 -1
- package/build/_modules/ai/index.js +9 -1
- package/build/_modules/ai/index.js.map +1 -1
- package/package.json +11 -2
- package/src/_modules/ai/_collections/ai-model-config-validator.util.spec.ts +150 -0
- package/src/_modules/ai/_collections/ai-model-config-validator.util.ts +131 -0
- package/src/_modules/ai/_collections/ai-provider-error.util.ts +98 -0
- package/src/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.ts +16 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.ts +72 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.ts +71 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.ts +57 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.ts +60 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.ts +56 -0
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.ts +107 -0
- package/src/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.ts +15 -0
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.ts +14 -0
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.ts +11 -0
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.ts +30 -0
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.ts +19 -0
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.ts +20 -0
- package/src/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.spec.ts +1 -1
- package/src/_modules/ai/{_services → _modules/ai-mock/_services}/ai-embedding-mock.service.ts +2 -2
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.ts +134 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.ts +127 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.ts +105 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.ts +50 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.ts +65 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.ts +112 -0
- package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.ts +142 -0
- package/src/_modules/ai/_modules/ai-mock/index.ts +44 -0
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +77 -35
- package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +1 -1
- package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +1 -1
- package/src/_modules/ai/_services/ai-llm.service-base.reconciler.spec.ts +133 -0
- package/src/_modules/ai/_services/ai-llm.service-base.ts +80 -0
- package/src/_modules/ai/index.ts +11 -1
- package/build/_modules/ai/_services/ai-embedding-mock.service.d.ts.map +0 -1
- 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
|
+
* permissziv 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":";;;AAAA,yEAA2E;AAC3E,
|
|
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;
|
|
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,
|
|
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.
|
|
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.
|
|
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 (permissziv, 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 (permissziv)', () => {
|
|
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` (permissziv, 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
|
+
}
|