@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.
Files changed (179) hide show
  1. package/README.md +4259 -0
  2. package/config.defaults.json +31 -0
  3. package/dist/activity-manager.d.ts +206 -0
  4. package/dist/activity-manager.js +1051 -0
  5. package/dist/config/activity-tracking-config.d.ts +11 -0
  6. package/dist/config/activity-tracking-config.js +15 -0
  7. package/dist/config.defaults.json +31 -0
  8. package/dist/content-normalizer/content-normalizer.d.ts +46 -0
  9. package/dist/content-normalizer/content-normalizer.js +393 -0
  10. package/dist/content-normalizer/index.d.ts +7 -0
  11. package/dist/content-normalizer/index.js +6 -0
  12. package/dist/content-normalizer/types.d.ts +33 -0
  13. package/dist/content-normalizer/types.js +4 -0
  14. package/dist/defaults/instructions-blocks.json +61 -0
  15. package/dist/defaults/model-config.json +16 -0
  16. package/dist/defaults/template-rendering.json +6 -0
  17. package/dist/flex-md-loader.d.ts +109 -0
  18. package/dist/flex-md-loader.js +940 -0
  19. package/dist/gateway-config.d.ts +49 -0
  20. package/dist/gateway-config.js +292 -0
  21. package/dist/gateway-conversion.d.ts +29 -0
  22. package/dist/gateway-conversion.js +174 -0
  23. package/dist/gateway-instructions.d.ts +30 -0
  24. package/dist/gateway-instructions.js +62 -0
  25. package/dist/gateway-memory.d.ts +51 -0
  26. package/dist/gateway-memory.js +207 -0
  27. package/dist/gateway-messages.d.ts +23 -0
  28. package/dist/gateway-messages.js +83 -0
  29. package/dist/gateway-meta.d.ts +25 -0
  30. package/dist/gateway-meta.js +87 -0
  31. package/dist/gateway-provider-auto-register.d.ts +17 -0
  32. package/dist/gateway-provider-auto-register.js +159 -0
  33. package/dist/gateway-provider.d.ts +54 -0
  34. package/dist/gateway-provider.js +202 -0
  35. package/dist/gateway-rate-limiter-constants.d.ts +16 -0
  36. package/dist/gateway-rate-limiter-constants.js +16 -0
  37. package/dist/gateway-rate-limiter.d.ts +56 -0
  38. package/dist/gateway-rate-limiter.js +107 -0
  39. package/dist/gateway-retry.d.ts +49 -0
  40. package/dist/gateway-retry.js +204 -0
  41. package/dist/gateway-utils.d.ts +21 -0
  42. package/dist/gateway-utils.js +181 -0
  43. package/dist/gateway-validation.d.ts +13 -0
  44. package/dist/gateway-validation.js +50 -0
  45. package/dist/gateway.d.ts +39 -0
  46. package/dist/gateway.js +430 -0
  47. package/dist/index.d.ts +36 -0
  48. package/dist/index.js +55 -0
  49. package/dist/instruction-errors.d.ts +16 -0
  50. package/dist/instruction-errors.js +29 -0
  51. package/dist/instruction-optimizer.d.ts +113 -0
  52. package/dist/instruction-optimizer.js +293 -0
  53. package/dist/instructions-parser.d.ts +31 -0
  54. package/dist/instructions-parser.js +56 -0
  55. package/dist/logger-factory.d.ts +17 -0
  56. package/dist/logger-factory.js +42 -0
  57. package/dist/message-builder.d.ts +41 -0
  58. package/dist/message-builder.js +522 -0
  59. package/dist/object-types-library-integration.d.ts +22 -0
  60. package/dist/object-types-library-integration.js +27 -0
  61. package/dist/object-types-library.d.ts +351 -0
  62. package/dist/object-types-library.js +210 -0
  63. package/dist/output-auditor.d.ts +44 -0
  64. package/dist/output-auditor.js +49 -0
  65. package/dist/request-report-generator.d.ts +60 -0
  66. package/dist/request-report-generator.js +169 -0
  67. package/dist/response-analyzer/format-type-detector.d.ts +35 -0
  68. package/dist/response-analyzer/format-type-detector.js +115 -0
  69. package/dist/response-analyzer/index.d.ts +9 -0
  70. package/dist/response-analyzer/index.js +8 -0
  71. package/dist/response-analyzer/object-type-detector.d.ts +42 -0
  72. package/dist/response-analyzer/object-type-detector.js +95 -0
  73. package/dist/response-analyzer/response-analyzer.d.ts +38 -0
  74. package/dist/response-analyzer/response-analyzer.js +97 -0
  75. package/dist/response-analyzer/types.d.ts +97 -0
  76. package/dist/response-analyzer/types.js +4 -0
  77. package/dist/response-fallback-fixer.d.ts +11 -0
  78. package/dist/response-fallback-fixer.js +123 -0
  79. package/dist/runtime-objects.d.ts +52 -0
  80. package/dist/runtime-objects.js +46 -0
  81. package/dist/template-parser.d.ts +58 -0
  82. package/dist/template-parser.js +99 -0
  83. package/dist/template-render-merge.d.ts +9 -0
  84. package/dist/template-render-merge.js +40 -0
  85. package/dist/troubleshooting-helper.d.ts +123 -0
  86. package/dist/troubleshooting-helper.js +596 -0
  87. package/dist/types.d.ts +1173 -0
  88. package/dist/types.js +6 -0
  89. package/dist/usage-tracker.d.ts +78 -0
  90. package/dist/usage-tracker.js +79 -0
  91. package/dist-cjs/activity-manager.cjs +1056 -0
  92. package/dist-cjs/activity-manager.d.ts +206 -0
  93. package/dist-cjs/config/activity-tracking-config.cjs +18 -0
  94. package/dist-cjs/config/activity-tracking-config.d.ts +11 -0
  95. package/dist-cjs/config.defaults.json +31 -0
  96. package/dist-cjs/content-normalizer/content-normalizer.cjs +398 -0
  97. package/dist-cjs/content-normalizer/content-normalizer.d.ts +46 -0
  98. package/dist-cjs/content-normalizer/index.cjs +12 -0
  99. package/dist-cjs/content-normalizer/index.d.ts +7 -0
  100. package/dist-cjs/content-normalizer/types.cjs +5 -0
  101. package/dist-cjs/content-normalizer/types.d.ts +33 -0
  102. package/dist-cjs/defaults/instructions-blocks.json +61 -0
  103. package/dist-cjs/defaults/model-config.json +16 -0
  104. package/dist-cjs/defaults/template-rendering.json +6 -0
  105. package/dist-cjs/flex-md-loader.cjs +986 -0
  106. package/dist-cjs/flex-md-loader.d.ts +109 -0
  107. package/dist-cjs/gateway-config.cjs +331 -0
  108. package/dist-cjs/gateway-config.d.ts +49 -0
  109. package/dist-cjs/gateway-conversion.cjs +212 -0
  110. package/dist-cjs/gateway-conversion.d.ts +29 -0
  111. package/dist-cjs/gateway-instructions.cjs +67 -0
  112. package/dist-cjs/gateway-instructions.d.ts +30 -0
  113. package/dist-cjs/gateway-memory.cjs +211 -0
  114. package/dist-cjs/gateway-memory.d.ts +51 -0
  115. package/dist-cjs/gateway-messages.cjs +86 -0
  116. package/dist-cjs/gateway-messages.d.ts +23 -0
  117. package/dist-cjs/gateway-meta.cjs +90 -0
  118. package/dist-cjs/gateway-meta.d.ts +25 -0
  119. package/dist-cjs/gateway-provider-auto-register.cjs +195 -0
  120. package/dist-cjs/gateway-provider-auto-register.d.ts +17 -0
  121. package/dist-cjs/gateway-provider.cjs +214 -0
  122. package/dist-cjs/gateway-provider.d.ts +54 -0
  123. package/dist-cjs/gateway-rate-limiter-constants.cjs +19 -0
  124. package/dist-cjs/gateway-rate-limiter-constants.d.ts +16 -0
  125. package/dist-cjs/gateway-rate-limiter.cjs +111 -0
  126. package/dist-cjs/gateway-rate-limiter.d.ts +56 -0
  127. package/dist-cjs/gateway-retry.cjs +212 -0
  128. package/dist-cjs/gateway-retry.d.ts +49 -0
  129. package/dist-cjs/gateway-utils.cjs +219 -0
  130. package/dist-cjs/gateway-utils.d.ts +21 -0
  131. package/dist-cjs/gateway-validation.cjs +54 -0
  132. package/dist-cjs/gateway-validation.d.ts +13 -0
  133. package/dist-cjs/gateway.cjs +434 -0
  134. package/dist-cjs/gateway.d.ts +39 -0
  135. package/dist-cjs/index.cjs +108 -0
  136. package/dist-cjs/index.d.ts +36 -0
  137. package/dist-cjs/instruction-errors.cjs +34 -0
  138. package/dist-cjs/instruction-errors.d.ts +16 -0
  139. package/dist-cjs/instruction-optimizer.cjs +299 -0
  140. package/dist-cjs/instruction-optimizer.d.ts +113 -0
  141. package/dist-cjs/instructions-parser.cjs +61 -0
  142. package/dist-cjs/instructions-parser.d.ts +31 -0
  143. package/dist-cjs/logger-factory.cjs +45 -0
  144. package/dist-cjs/logger-factory.d.ts +17 -0
  145. package/dist-cjs/message-builder.cjs +558 -0
  146. package/dist-cjs/message-builder.d.ts +41 -0
  147. package/dist-cjs/object-types-library-integration.cjs +32 -0
  148. package/dist-cjs/object-types-library-integration.d.ts +22 -0
  149. package/dist-cjs/object-types-library.cjs +215 -0
  150. package/dist-cjs/object-types-library.d.ts +351 -0
  151. package/dist-cjs/output-auditor.cjs +52 -0
  152. package/dist-cjs/output-auditor.d.ts +44 -0
  153. package/dist-cjs/request-report-generator.cjs +172 -0
  154. package/dist-cjs/request-report-generator.d.ts +60 -0
  155. package/dist-cjs/response-analyzer/format-type-detector.cjs +119 -0
  156. package/dist-cjs/response-analyzer/format-type-detector.d.ts +35 -0
  157. package/dist-cjs/response-analyzer/index.cjs +14 -0
  158. package/dist-cjs/response-analyzer/index.d.ts +9 -0
  159. package/dist-cjs/response-analyzer/object-type-detector.cjs +99 -0
  160. package/dist-cjs/response-analyzer/object-type-detector.d.ts +42 -0
  161. package/dist-cjs/response-analyzer/response-analyzer.cjs +101 -0
  162. package/dist-cjs/response-analyzer/response-analyzer.d.ts +38 -0
  163. package/dist-cjs/response-analyzer/types.cjs +5 -0
  164. package/dist-cjs/response-analyzer/types.d.ts +97 -0
  165. package/dist-cjs/response-fallback-fixer.cjs +126 -0
  166. package/dist-cjs/response-fallback-fixer.d.ts +11 -0
  167. package/dist-cjs/runtime-objects.cjs +52 -0
  168. package/dist-cjs/runtime-objects.d.ts +52 -0
  169. package/dist-cjs/template-parser.cjs +136 -0
  170. package/dist-cjs/template-parser.d.ts +58 -0
  171. package/dist-cjs/template-render-merge.cjs +43 -0
  172. package/dist-cjs/template-render-merge.d.ts +9 -0
  173. package/dist-cjs/troubleshooting-helper.cjs +611 -0
  174. package/dist-cjs/troubleshooting-helper.d.ts +123 -0
  175. package/dist-cjs/types.cjs +7 -0
  176. package/dist-cjs/types.d.ts +1173 -0
  177. package/dist-cjs/usage-tracker.cjs +83 -0
  178. package/dist-cjs/usage-tracker.d.ts +78 -0
  179. 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;