@x12i/ai-gateway 7.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4259 -0
- package/config.defaults.json +31 -0
- package/dist/activity-manager.d.ts +206 -0
- package/dist/activity-manager.js +1051 -0
- package/dist/config/activity-tracking-config.d.ts +11 -0
- package/dist/config/activity-tracking-config.js +15 -0
- package/dist/config.defaults.json +31 -0
- package/dist/content-normalizer/content-normalizer.d.ts +46 -0
- package/dist/content-normalizer/content-normalizer.js +393 -0
- package/dist/content-normalizer/index.d.ts +7 -0
- package/dist/content-normalizer/index.js +6 -0
- package/dist/content-normalizer/types.d.ts +33 -0
- package/dist/content-normalizer/types.js +4 -0
- package/dist/defaults/instructions-blocks.json +61 -0
- package/dist/defaults/model-config.json +16 -0
- package/dist/defaults/template-rendering.json +6 -0
- package/dist/flex-md-loader.d.ts +109 -0
- package/dist/flex-md-loader.js +940 -0
- package/dist/gateway-config.d.ts +49 -0
- package/dist/gateway-config.js +292 -0
- package/dist/gateway-conversion.d.ts +29 -0
- package/dist/gateway-conversion.js +174 -0
- package/dist/gateway-instructions.d.ts +30 -0
- package/dist/gateway-instructions.js +62 -0
- package/dist/gateway-memory.d.ts +51 -0
- package/dist/gateway-memory.js +207 -0
- package/dist/gateway-messages.d.ts +23 -0
- package/dist/gateway-messages.js +83 -0
- package/dist/gateway-meta.d.ts +25 -0
- package/dist/gateway-meta.js +87 -0
- package/dist/gateway-provider-auto-register.d.ts +17 -0
- package/dist/gateway-provider-auto-register.js +159 -0
- package/dist/gateway-provider.d.ts +54 -0
- package/dist/gateway-provider.js +202 -0
- package/dist/gateway-rate-limiter-constants.d.ts +16 -0
- package/dist/gateway-rate-limiter-constants.js +16 -0
- package/dist/gateway-rate-limiter.d.ts +56 -0
- package/dist/gateway-rate-limiter.js +107 -0
- package/dist/gateway-retry.d.ts +49 -0
- package/dist/gateway-retry.js +204 -0
- package/dist/gateway-utils.d.ts +21 -0
- package/dist/gateway-utils.js +181 -0
- package/dist/gateway-validation.d.ts +13 -0
- package/dist/gateway-validation.js +50 -0
- package/dist/gateway.d.ts +39 -0
- package/dist/gateway.js +430 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.js +55 -0
- package/dist/instruction-errors.d.ts +16 -0
- package/dist/instruction-errors.js +29 -0
- package/dist/instruction-optimizer.d.ts +113 -0
- package/dist/instruction-optimizer.js +293 -0
- package/dist/instructions-parser.d.ts +31 -0
- package/dist/instructions-parser.js +56 -0
- package/dist/logger-factory.d.ts +17 -0
- package/dist/logger-factory.js +42 -0
- package/dist/message-builder.d.ts +41 -0
- package/dist/message-builder.js +522 -0
- package/dist/object-types-library-integration.d.ts +22 -0
- package/dist/object-types-library-integration.js +27 -0
- package/dist/object-types-library.d.ts +351 -0
- package/dist/object-types-library.js +210 -0
- package/dist/output-auditor.d.ts +44 -0
- package/dist/output-auditor.js +49 -0
- package/dist/request-report-generator.d.ts +60 -0
- package/dist/request-report-generator.js +169 -0
- package/dist/response-analyzer/format-type-detector.d.ts +35 -0
- package/dist/response-analyzer/format-type-detector.js +115 -0
- package/dist/response-analyzer/index.d.ts +9 -0
- package/dist/response-analyzer/index.js +8 -0
- package/dist/response-analyzer/object-type-detector.d.ts +42 -0
- package/dist/response-analyzer/object-type-detector.js +95 -0
- package/dist/response-analyzer/response-analyzer.d.ts +38 -0
- package/dist/response-analyzer/response-analyzer.js +97 -0
- package/dist/response-analyzer/types.d.ts +97 -0
- package/dist/response-analyzer/types.js +4 -0
- package/dist/response-fallback-fixer.d.ts +11 -0
- package/dist/response-fallback-fixer.js +123 -0
- package/dist/runtime-objects.d.ts +52 -0
- package/dist/runtime-objects.js +46 -0
- package/dist/template-parser.d.ts +58 -0
- package/dist/template-parser.js +99 -0
- package/dist/template-render-merge.d.ts +9 -0
- package/dist/template-render-merge.js +40 -0
- package/dist/troubleshooting-helper.d.ts +123 -0
- package/dist/troubleshooting-helper.js +596 -0
- package/dist/types.d.ts +1173 -0
- package/dist/types.js +6 -0
- package/dist/usage-tracker.d.ts +78 -0
- package/dist/usage-tracker.js +79 -0
- package/dist-cjs/activity-manager.cjs +1056 -0
- package/dist-cjs/activity-manager.d.ts +206 -0
- package/dist-cjs/config/activity-tracking-config.cjs +18 -0
- package/dist-cjs/config/activity-tracking-config.d.ts +11 -0
- package/dist-cjs/config.defaults.json +31 -0
- package/dist-cjs/content-normalizer/content-normalizer.cjs +398 -0
- package/dist-cjs/content-normalizer/content-normalizer.d.ts +46 -0
- package/dist-cjs/content-normalizer/index.cjs +12 -0
- package/dist-cjs/content-normalizer/index.d.ts +7 -0
- package/dist-cjs/content-normalizer/types.cjs +5 -0
- package/dist-cjs/content-normalizer/types.d.ts +33 -0
- package/dist-cjs/defaults/instructions-blocks.json +61 -0
- package/dist-cjs/defaults/model-config.json +16 -0
- package/dist-cjs/defaults/template-rendering.json +6 -0
- package/dist-cjs/flex-md-loader.cjs +986 -0
- package/dist-cjs/flex-md-loader.d.ts +109 -0
- package/dist-cjs/gateway-config.cjs +331 -0
- package/dist-cjs/gateway-config.d.ts +49 -0
- package/dist-cjs/gateway-conversion.cjs +212 -0
- package/dist-cjs/gateway-conversion.d.ts +29 -0
- package/dist-cjs/gateway-instructions.cjs +67 -0
- package/dist-cjs/gateway-instructions.d.ts +30 -0
- package/dist-cjs/gateway-memory.cjs +211 -0
- package/dist-cjs/gateway-memory.d.ts +51 -0
- package/dist-cjs/gateway-messages.cjs +86 -0
- package/dist-cjs/gateway-messages.d.ts +23 -0
- package/dist-cjs/gateway-meta.cjs +90 -0
- package/dist-cjs/gateway-meta.d.ts +25 -0
- package/dist-cjs/gateway-provider-auto-register.cjs +195 -0
- package/dist-cjs/gateway-provider-auto-register.d.ts +17 -0
- package/dist-cjs/gateway-provider.cjs +214 -0
- package/dist-cjs/gateway-provider.d.ts +54 -0
- package/dist-cjs/gateway-rate-limiter-constants.cjs +19 -0
- package/dist-cjs/gateway-rate-limiter-constants.d.ts +16 -0
- package/dist-cjs/gateway-rate-limiter.cjs +111 -0
- package/dist-cjs/gateway-rate-limiter.d.ts +56 -0
- package/dist-cjs/gateway-retry.cjs +212 -0
- package/dist-cjs/gateway-retry.d.ts +49 -0
- package/dist-cjs/gateway-utils.cjs +219 -0
- package/dist-cjs/gateway-utils.d.ts +21 -0
- package/dist-cjs/gateway-validation.cjs +54 -0
- package/dist-cjs/gateway-validation.d.ts +13 -0
- package/dist-cjs/gateway.cjs +434 -0
- package/dist-cjs/gateway.d.ts +39 -0
- package/dist-cjs/index.cjs +108 -0
- package/dist-cjs/index.d.ts +36 -0
- package/dist-cjs/instruction-errors.cjs +34 -0
- package/dist-cjs/instruction-errors.d.ts +16 -0
- package/dist-cjs/instruction-optimizer.cjs +299 -0
- package/dist-cjs/instruction-optimizer.d.ts +113 -0
- package/dist-cjs/instructions-parser.cjs +61 -0
- package/dist-cjs/instructions-parser.d.ts +31 -0
- package/dist-cjs/logger-factory.cjs +45 -0
- package/dist-cjs/logger-factory.d.ts +17 -0
- package/dist-cjs/message-builder.cjs +558 -0
- package/dist-cjs/message-builder.d.ts +41 -0
- package/dist-cjs/object-types-library-integration.cjs +32 -0
- package/dist-cjs/object-types-library-integration.d.ts +22 -0
- package/dist-cjs/object-types-library.cjs +215 -0
- package/dist-cjs/object-types-library.d.ts +351 -0
- package/dist-cjs/output-auditor.cjs +52 -0
- package/dist-cjs/output-auditor.d.ts +44 -0
- package/dist-cjs/request-report-generator.cjs +172 -0
- package/dist-cjs/request-report-generator.d.ts +60 -0
- package/dist-cjs/response-analyzer/format-type-detector.cjs +119 -0
- package/dist-cjs/response-analyzer/format-type-detector.d.ts +35 -0
- package/dist-cjs/response-analyzer/index.cjs +14 -0
- package/dist-cjs/response-analyzer/index.d.ts +9 -0
- package/dist-cjs/response-analyzer/object-type-detector.cjs +99 -0
- package/dist-cjs/response-analyzer/object-type-detector.d.ts +42 -0
- package/dist-cjs/response-analyzer/response-analyzer.cjs +101 -0
- package/dist-cjs/response-analyzer/response-analyzer.d.ts +38 -0
- package/dist-cjs/response-analyzer/types.cjs +5 -0
- package/dist-cjs/response-analyzer/types.d.ts +97 -0
- package/dist-cjs/response-fallback-fixer.cjs +126 -0
- package/dist-cjs/response-fallback-fixer.d.ts +11 -0
- package/dist-cjs/runtime-objects.cjs +52 -0
- package/dist-cjs/runtime-objects.d.ts +52 -0
- package/dist-cjs/template-parser.cjs +136 -0
- package/dist-cjs/template-parser.d.ts +58 -0
- package/dist-cjs/template-render-merge.cjs +43 -0
- package/dist-cjs/template-render-merge.d.ts +9 -0
- package/dist-cjs/troubleshooting-helper.cjs +611 -0
- package/dist-cjs/troubleshooting-helper.d.ts +123 -0
- package/dist-cjs/types.cjs +7 -0
- package/dist-cjs/types.d.ts +1173 -0
- package/dist-cjs/usage-tracker.cjs +83 -0
- package/dist-cjs/usage-tracker.d.ts +78 -0
- package/package.json +91 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Gateway Utilities Module
|
|
4
|
+
* Handles utility functions
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.generateMD5Hash = generateMD5Hash;
|
|
41
|
+
exports.ensureTaskTypeId = ensureTaskTypeId;
|
|
42
|
+
exports.mergeConfig = mergeConfig;
|
|
43
|
+
const crypto = __importStar(require("crypto"));
|
|
44
|
+
const gateway_instructions_js_1 = require("./gateway-instructions.cjs");
|
|
45
|
+
const flex_md_loader_js_1 = require("./flex-md-loader.cjs");
|
|
46
|
+
/**
|
|
47
|
+
* Generates MD5 hash of a string
|
|
48
|
+
*/
|
|
49
|
+
function generateMD5Hash(text) {
|
|
50
|
+
return crypto.createHash('md5').update(text).digest('hex');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Auto-generates taskTypeId from MD5 hash of pre-parsed instructions if not provided
|
|
54
|
+
*/
|
|
55
|
+
async function ensureTaskTypeId(request, logger) {
|
|
56
|
+
if (request.taskTypeId) {
|
|
57
|
+
return request.taskTypeId;
|
|
58
|
+
}
|
|
59
|
+
const preParsedInstructions = (0, gateway_instructions_js_1.getPreParsedInstructions)(request.instructions);
|
|
60
|
+
// Generate MD5 hash
|
|
61
|
+
const taskTypeId = generateMD5Hash(preParsedInstructions);
|
|
62
|
+
logger.debug('Auto-generated taskTypeId from instructions MD5 hash', {
|
|
63
|
+
jobId: request.jobId,
|
|
64
|
+
taskTypeId,
|
|
65
|
+
instructionsLength: preParsedInstructions.length,
|
|
66
|
+
instructionsPreview: preParsedInstructions.substring(0, 100) + (preParsedInstructions.length > 100 ? '...' : '')
|
|
67
|
+
});
|
|
68
|
+
return taskTypeId;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Merges config with defaults
|
|
72
|
+
* Supports using internal system action defaults (internalSkill or skillAudit) when useInternalDefaults is set
|
|
73
|
+
*/
|
|
74
|
+
async function mergeConfig(request, config, logger) {
|
|
75
|
+
const useInternalDefaults = request.useInternalDefaults;
|
|
76
|
+
const internalDefaults = useInternalDefaults
|
|
77
|
+
? (useInternalDefaults === 'skill'
|
|
78
|
+
? config.internalSystemActions?.internalSkill
|
|
79
|
+
: config.internalSystemActions?.skillAudit)
|
|
80
|
+
: undefined;
|
|
81
|
+
logger.verbose('Merging request config with gateway defaults', {
|
|
82
|
+
jobId: request.jobId,
|
|
83
|
+
hasRequestConfig: !!request.config,
|
|
84
|
+
hasModelConfig: !!request.modelConfig,
|
|
85
|
+
requestModel: request.config?.model,
|
|
86
|
+
modelConfigModel: request.modelConfig?.model || request.modelConfig?.modelId,
|
|
87
|
+
requestProvider: request.config?.provider,
|
|
88
|
+
modelConfigProvider: request.modelConfig?.provider,
|
|
89
|
+
defaultEngine: config.defaultEngine,
|
|
90
|
+
useInternalDefaults,
|
|
91
|
+
hasInternalDefaults: !!internalDefaults
|
|
92
|
+
});
|
|
93
|
+
// Default model to "gpt-5-nano" if nothing is provided (most permissive - always works)
|
|
94
|
+
const defaultModel = 'gpt-5-nano';
|
|
95
|
+
// Priority: modelConfig > request.config > internalSystemActions[useInternalDefaults] > gateway defaults
|
|
96
|
+
// First, merge modelConfig into a config-like object if present
|
|
97
|
+
const modelConfigAsConfig = request.modelConfig ? {
|
|
98
|
+
model: request.modelConfig.model || request.modelConfig.modelId,
|
|
99
|
+
provider: request.modelConfig.provider,
|
|
100
|
+
temperature: request.modelConfig.temperature,
|
|
101
|
+
maxTokens: request.modelConfig.maxTokens,
|
|
102
|
+
topP: request.modelConfig.topP,
|
|
103
|
+
frequencyPenalty: request.modelConfig.frequencyPenalty,
|
|
104
|
+
presencePenalty: request.modelConfig.presencePenalty,
|
|
105
|
+
stop: request.modelConfig.stop,
|
|
106
|
+
// Include any additional properties from modelConfig
|
|
107
|
+
...Object.fromEntries(Object.entries(request.modelConfig).filter(([key]) => !['model', 'modelId', 'provider', 'temperature', 'maxTokens', 'topP', 'frequencyPenalty', 'presencePenalty', 'stop'].includes(key)))
|
|
108
|
+
} : undefined;
|
|
109
|
+
const merged = {
|
|
110
|
+
// Start with gateway defaults (lowest priority)
|
|
111
|
+
temperature: config.temperature ?? 0.7,
|
|
112
|
+
// maxTokens will be set from flex-md if available, otherwise fallback to 2000
|
|
113
|
+
topP: config.topP ?? 1.0,
|
|
114
|
+
frequencyPenalty: config.frequencyPenalty ?? 0.0,
|
|
115
|
+
presencePenalty: config.presencePenalty ?? 0.0,
|
|
116
|
+
// Apply internal system action defaults (medium priority) if useInternalDefaults is set
|
|
117
|
+
...(internalDefaults ? {
|
|
118
|
+
model: internalDefaults.model,
|
|
119
|
+
provider: internalDefaults.engine || config.defaultEngine,
|
|
120
|
+
temperature: internalDefaults.temperature ?? config.temperature ?? 0.7,
|
|
121
|
+
// maxTokens from internalDefaults only if explicitly set, otherwise will be auto-detected
|
|
122
|
+
...(internalDefaults.maxTokens !== undefined ? { maxTokens: internalDefaults.maxTokens } : {})
|
|
123
|
+
} : {}),
|
|
124
|
+
// Request config overrides (higher priority)
|
|
125
|
+
...request.config,
|
|
126
|
+
// ModelConfig overrides (highest priority) - merge only defined values
|
|
127
|
+
...(modelConfigAsConfig ? Object.fromEntries(Object.entries(modelConfigAsConfig).filter(([_, value]) => value !== undefined)) : {}),
|
|
128
|
+
// Ensure model is set: modelConfig > request.config > internalDefaults > default
|
|
129
|
+
model: modelConfigAsConfig?.model || request.config?.model || internalDefaults?.model || defaultModel,
|
|
130
|
+
// Ensure provider is set: modelConfig > request.config > internalDefaults > gateway default
|
|
131
|
+
// Provider is required for router to know which provider to use
|
|
132
|
+
provider: modelConfigAsConfig?.provider || request.config?.provider || internalDefaults?.engine || config.defaultEngine
|
|
133
|
+
};
|
|
134
|
+
// Log if using default model
|
|
135
|
+
if (!request.config?.model && !internalDefaults?.model) {
|
|
136
|
+
logger.info('Using default model: gpt-5-nano (no model provided in request)', {
|
|
137
|
+
jobId: request.jobId,
|
|
138
|
+
note: 'Default model ensures requests always work regardless of configuration'
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
// Auto-get maxTokens from flex-md if not explicitly set in ANY config source
|
|
142
|
+
// Check all possible sources: request.config, internalDefaults, gateway config
|
|
143
|
+
const maxTokensExplicitlySet = request.config?.maxTokens !== undefined ||
|
|
144
|
+
internalDefaults?.maxTokens !== undefined ||
|
|
145
|
+
config.maxTokens !== undefined;
|
|
146
|
+
if (!maxTokensExplicitlySet && merged.model && merged.provider) {
|
|
147
|
+
// Try to get maxTokens from flex-md
|
|
148
|
+
try {
|
|
149
|
+
const flexMdMaxTokens = await (0, flex_md_loader_js_1.getModelMaxTokensFromFlexMd)(merged.provider, merged.model);
|
|
150
|
+
if (flexMdMaxTokens && flexMdMaxTokens > 0) {
|
|
151
|
+
merged.maxTokens = flexMdMaxTokens;
|
|
152
|
+
logger.debug('Using maxTokens from flex-md', {
|
|
153
|
+
jobId: request.jobId,
|
|
154
|
+
model: merged.model,
|
|
155
|
+
provider: merged.provider,
|
|
156
|
+
maxTokens: merged.maxTokens,
|
|
157
|
+
source: 'flex-md'
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
// flex-md doesn't have model info or returned invalid value - use fallback
|
|
162
|
+
merged.maxTokens = 2000;
|
|
163
|
+
logger.debug('Using fallback maxTokens (flex-md unavailable or no model info)', {
|
|
164
|
+
jobId: request.jobId,
|
|
165
|
+
model: merged.model,
|
|
166
|
+
provider: merged.provider,
|
|
167
|
+
maxTokens: merged.maxTokens,
|
|
168
|
+
note: 'Set maxTokens explicitly in config for custom values.'
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
// Error loading flex-md or getting model info - use fallback
|
|
174
|
+
merged.maxTokens = 2000;
|
|
175
|
+
logger.debug('Using fallback maxTokens (flex-md error)', {
|
|
176
|
+
jobId: request.jobId,
|
|
177
|
+
model: merged.model,
|
|
178
|
+
provider: merged.provider,
|
|
179
|
+
maxTokens: merged.maxTokens,
|
|
180
|
+
error: error instanceof Error ? error.message : String(error),
|
|
181
|
+
note: 'Set maxTokens explicitly in config for custom values.'
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else if (!merged.maxTokens) {
|
|
186
|
+
// If maxTokens wasn't set and wasn't auto-detected, use fallback
|
|
187
|
+
// This should rarely happen, but handle edge cases
|
|
188
|
+
merged.maxTokens = 2000;
|
|
189
|
+
logger.debug('Using fallback maxTokens (not auto-detected and not explicitly set)', {
|
|
190
|
+
jobId: request.jobId,
|
|
191
|
+
model: merged.model,
|
|
192
|
+
provider: merged.provider,
|
|
193
|
+
maxTokens: merged.maxTokens,
|
|
194
|
+
maxTokensExplicitlySet
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// maxTokens was explicitly set - log which source
|
|
199
|
+
const source = request.config?.maxTokens !== undefined ? 'request.config' :
|
|
200
|
+
internalDefaults?.maxTokens !== undefined ? `internalSystemActions.${useInternalDefaults}` :
|
|
201
|
+
'gateway.config';
|
|
202
|
+
logger.debug('Using explicitly set maxTokens', {
|
|
203
|
+
jobId: request.jobId,
|
|
204
|
+
model: merged.model,
|
|
205
|
+
provider: merged.provider,
|
|
206
|
+
maxTokens: merged.maxTokens,
|
|
207
|
+
source
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
logger.debug('Config merged', {
|
|
211
|
+
jobId: request.jobId,
|
|
212
|
+
finalModel: merged.model,
|
|
213
|
+
finalProvider: merged.provider,
|
|
214
|
+
finalTemperature: merged.temperature,
|
|
215
|
+
finalMaxTokens: merged.maxTokens,
|
|
216
|
+
usedInternalDefaults: !!internalDefaults
|
|
217
|
+
});
|
|
218
|
+
return merged;
|
|
219
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateway Utilities Module
|
|
3
|
+
* Handles utility functions
|
|
4
|
+
*/
|
|
5
|
+
import type { ChatRequest, GatewayConfig } from './types.js';
|
|
6
|
+
import type { Logxer } from '@x12i/logxer';
|
|
7
|
+
/**
|
|
8
|
+
* Generates MD5 hash of a string
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateMD5Hash(text: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Auto-generates taskTypeId from MD5 hash of pre-parsed instructions if not provided
|
|
13
|
+
*/
|
|
14
|
+
export declare function ensureTaskTypeId(request: ChatRequest, logger: Logxer): Promise<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Merges config with defaults
|
|
17
|
+
* Supports using internal system action defaults (internalSkill or skillAudit) when useInternalDefaults is set
|
|
18
|
+
*/
|
|
19
|
+
export declare function mergeConfig(request: ChatRequest & {
|
|
20
|
+
useInternalDefaults?: 'skill' | 'audit';
|
|
21
|
+
}, config: GatewayConfig, logger: Logxer): Promise<ChatRequest['config']>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Gateway Validation Module
|
|
4
|
+
* Basic validation for clean proxy implementation
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.validateChatRequest = validateChatRequest;
|
|
8
|
+
exports.validateAIRequest = validateAIRequest;
|
|
9
|
+
/**
|
|
10
|
+
* Validates ChatRequest has required fields
|
|
11
|
+
*/
|
|
12
|
+
function validateChatRequest(request) {
|
|
13
|
+
if (!request.aiRequestId) {
|
|
14
|
+
throw new Error('aiRequestId is required');
|
|
15
|
+
}
|
|
16
|
+
if (!request.agentId) {
|
|
17
|
+
throw new Error('agentId is required');
|
|
18
|
+
}
|
|
19
|
+
// Reject input field - it has been removed
|
|
20
|
+
if ('input' in request && request.input !== undefined) {
|
|
21
|
+
const err = new Error(`The 'input' field has been removed. Use workingMemory.input instead for template rendering. Prompt templates should contain {{input}} which will be resolved from workingMemory.input.`);
|
|
22
|
+
err.code = 'INPUT_FIELD_DEPRECATED';
|
|
23
|
+
err.details = {
|
|
24
|
+
field: 'input',
|
|
25
|
+
alternative: 'workingMemory.input',
|
|
26
|
+
message: 'Input data must be provided via workingMemory.input for template rendering'
|
|
27
|
+
};
|
|
28
|
+
throw err;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Validates AIRequest has required fields
|
|
33
|
+
*/
|
|
34
|
+
function validateAIRequest(request) {
|
|
35
|
+
if (!request.aiRequestId) {
|
|
36
|
+
throw new Error('aiRequestId is required for AI requests');
|
|
37
|
+
}
|
|
38
|
+
if (!request.agentId) {
|
|
39
|
+
throw new Error('agentId is required for AI requests');
|
|
40
|
+
}
|
|
41
|
+
// Reject input field - it has been removed
|
|
42
|
+
if ('input' in request && request.input !== undefined) {
|
|
43
|
+
const err = new Error(`The 'input' field has been removed. Use workingMemory.input instead for template rendering. Prompt templates should contain {{input}} which will be resolved from workingMemory.input.`);
|
|
44
|
+
err.code = 'INPUT_FIELD_DEPRECATED';
|
|
45
|
+
err.details = {
|
|
46
|
+
field: 'input',
|
|
47
|
+
alternative: 'workingMemory.input',
|
|
48
|
+
message: 'Input data must be provided via workingMemory.input for template rendering'
|
|
49
|
+
};
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
// Note: primaryObjectType and secondaryObjectTypes are now optional
|
|
53
|
+
// The gateway is a clean proxy - no object type validation logic
|
|
54
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateway Validation Module
|
|
3
|
+
* Basic validation for clean proxy implementation
|
|
4
|
+
*/
|
|
5
|
+
import type { ChatRequest, AIRequest } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Validates ChatRequest has required fields
|
|
8
|
+
*/
|
|
9
|
+
export declare function validateChatRequest(request: ChatRequest): void;
|
|
10
|
+
/**
|
|
11
|
+
* Validates AIRequest has required fields
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateAIRequest(request: AIRequest): void;
|