@x12i/ai-gateway 9.2.0 → 9.3.4
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 +105 -13
- package/dist/activity-manager.d.ts +1 -0
- package/dist/activity-manager.js +123 -26
- package/dist/ai-tools-client.d.ts +20 -0
- package/dist/ai-tools-client.js +91 -0
- package/dist/gateway-config.d.ts +2 -0
- package/dist/gateway-config.js +2 -1
- package/dist/gateway-mode.d.ts +40 -0
- package/dist/gateway-mode.js +75 -0
- package/dist/gateway-utils.d.ts +28 -1
- package/dist/gateway-utils.js +137 -12
- package/dist/gateway.d.ts +3 -0
- package/dist/gateway.js +34 -6
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -1
- package/dist/types.d.ts +21 -0
- package/dist-cjs/activity-manager.cjs +137 -45
- package/dist-cjs/activity-manager.d.ts +1 -0
- package/dist-cjs/ai-tools-client.cjs +91 -0
- package/dist-cjs/ai-tools-client.d.ts +20 -0
- package/dist-cjs/config/activity-tracking-config.cjs +1 -4
- package/dist-cjs/content-normalizer/content-normalizer.cjs +3 -8
- package/dist-cjs/content-normalizer/index.cjs +1 -7
- package/dist-cjs/content-normalizer/types.cjs +1 -2
- package/dist-cjs/flex-md-loader.cjs +20 -67
- package/dist-cjs/gateway-config.cjs +25 -63
- package/dist-cjs/gateway-config.d.ts +2 -0
- package/dist-cjs/gateway-conversion.cjs +10 -48
- package/dist-cjs/gateway-instructions.cjs +5 -10
- package/dist-cjs/gateway-log-meta.cjs +9 -14
- package/dist-cjs/gateway-memory.cjs +2 -6
- package/dist-cjs/gateway-messages.cjs +3 -6
- package/dist-cjs/gateway-meta.cjs +1 -4
- package/dist-cjs/gateway-mode.cjs +75 -0
- package/dist-cjs/gateway-mode.d.ts +40 -0
- package/dist-cjs/gateway-provider-auto-register.cjs +2 -38
- package/dist-cjs/gateway-provider.cjs +10 -22
- package/dist-cjs/gateway-rate-limiter-constants.cjs +2 -5
- package/dist-cjs/gateway-rate-limiter.cjs +5 -9
- package/dist-cjs/gateway-retry.cjs +6 -14
- package/dist-cjs/gateway-utils.cjs +160 -89
- package/dist-cjs/gateway-utils.d.ts +28 -1
- package/dist-cjs/gateway-validation.cjs +2 -6
- package/dist-cjs/gateway.cjs +91 -67
- package/dist-cjs/gateway.d.ts +3 -0
- package/dist-cjs/index.cjs +22 -98
- package/dist-cjs/index.d.ts +3 -1
- package/dist-cjs/instruction-errors.cjs +2 -7
- package/dist-cjs/instruction-optimizer.cjs +4 -10
- package/dist-cjs/instructions-parser.cjs +5 -10
- package/dist-cjs/logger-factory.cjs +3 -6
- package/dist-cjs/memory-path-resolution.cjs +8 -18
- package/dist-cjs/message-builder.cjs +11 -47
- package/dist-cjs/object-types-library-integration.cjs +3 -8
- package/dist-cjs/object-types-library.cjs +5 -10
- package/dist-cjs/output-auditor.cjs +1 -4
- package/dist-cjs/output-contract-normalizer.cjs +9 -14
- package/dist-cjs/request-report-generator.cjs +1 -4
- package/dist-cjs/response-analyzer/format-type-detector.cjs +1 -5
- package/dist-cjs/response-analyzer/index.cjs +3 -9
- package/dist-cjs/response-analyzer/object-type-detector.cjs +1 -5
- package/dist-cjs/response-analyzer/response-analyzer.cjs +6 -10
- package/dist-cjs/response-analyzer/types.cjs +1 -2
- package/dist-cjs/response-fallback-fixer.cjs +1 -4
- package/dist-cjs/runtime-objects.cjs +7 -13
- package/dist-cjs/template-parser.cjs +5 -42
- package/dist-cjs/template-render-merge.cjs +2 -6
- package/dist-cjs/troubleshooting-helper.cjs +13 -28
- package/dist-cjs/types.cjs +1 -2
- package/dist-cjs/types.d.ts +21 -0
- package/dist-cjs/usage-tracker.cjs +3 -7
- package/package.json +11 -5
package/dist-cjs/gateway.cjs
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @x12i/ai-gateway
|
|
4
3
|
*
|
|
5
4
|
* Simplified AI Gateway - Clean proxy implementation
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const gateway_retry_js_1 = require("./gateway-retry.cjs");
|
|
6
|
+
import { validateChatRequest, validateAIRequest } from './gateway-validation.js';
|
|
7
|
+
import { ensureGatewayRequestIdentity } from './activity-manager.js';
|
|
8
|
+
import { initializeGatewayComponents } from './gateway-config.js';
|
|
9
|
+
import { buildMessages } from './message-builder.js';
|
|
10
|
+
import { extractJsonFromFlexMd } from './flex-md-loader.js';
|
|
11
|
+
import { enrichParsedContentForOutputContract, resolveOutputContractFieldKeys } from './output-contract-normalizer.js';
|
|
12
|
+
import { attachGatewayInvokeRejectionMetadata, buildInvokeRejectionMetadata, capActivityFullResponsePayload, DEFAULT_ACTIVITY_FULL_RESPONSE_MAX_CHARS, extractCostUsdFromRouterResponse, extractTokenUsageFromRouterResponse, mergeConfig, pickEffectiveModelConfigForMetadata, pickInvokeRoutingMetadataSlice, pickTraceMergedRouterConfig, resolveCostCompletionWithAiTools, tryExtractRouterLikePayloadFromErrorChain } from './gateway-utils.js';
|
|
13
|
+
import { getAiToolsClient } from './ai-tools-client.js';
|
|
14
|
+
import { autoRegisterProviders } from './gateway-provider-auto-register.js';
|
|
15
|
+
import { setGatewayLastJobId, setGatewayRuntimeClients } from './runtime-objects.js';
|
|
16
|
+
import { gatewayLogDebug, withActivityIdentity } from './gateway-log-meta.js';
|
|
17
|
+
import { invokeWithRetry } from './gateway-retry.js';
|
|
20
18
|
/** Error message thrown by the router when no provider is registered or specified */
|
|
21
19
|
const NO_PROVIDER_ERROR = 'No provider specified and no providers registered';
|
|
22
20
|
const NO_PROVIDER_HINT = ' Set OPEN_ROUTER_KEY (or OPENROUTER_API_KEY) in the environment to use OpenRouter, or register a provider with the router (e.g. via autoRegisterProviders or gateway config).';
|
|
@@ -28,7 +26,7 @@ function warnIfSuccessfulInvokeReportsZeroUsageOrCost(logger, identity, meta, in
|
|
|
28
26
|
const zeroCost = typeof cost === 'number' && cost === 0;
|
|
29
27
|
if (!zeroTokens && !zeroCostUsd && !zeroCost)
|
|
30
28
|
return;
|
|
31
|
-
logger.warn('Successful provider response reported zero token usage and/or zero cost; verify router adapter usage and billing metadata',
|
|
29
|
+
logger.warn('Successful provider response reported zero token usage and/or zero cost; verify router adapter usage and billing metadata', withActivityIdentity(identity, {
|
|
32
30
|
invokeKind,
|
|
33
31
|
zeroTokens,
|
|
34
32
|
zeroCostUsd,
|
|
@@ -36,28 +34,31 @@ function warnIfSuccessfulInvokeReportsZeroUsageOrCost(logger, identity, meta, in
|
|
|
36
34
|
tokens,
|
|
37
35
|
costUsd,
|
|
38
36
|
cost,
|
|
39
|
-
debugKind:
|
|
37
|
+
debugKind: gatewayLogDebug.anomaly
|
|
40
38
|
}));
|
|
41
39
|
}
|
|
42
40
|
/**
|
|
43
41
|
* Simplified AI Gateway - Clean proxy implementation
|
|
44
42
|
*/
|
|
45
|
-
class AIGateway {
|
|
43
|
+
export class AIGateway {
|
|
46
44
|
router;
|
|
47
45
|
config;
|
|
48
46
|
logger;
|
|
49
47
|
activityManager;
|
|
50
48
|
messageBuilderConfig;
|
|
49
|
+
defaultModelConfig = {};
|
|
51
50
|
_autoRegisterDone = false;
|
|
51
|
+
_aiToolsClient = null;
|
|
52
52
|
constructor(config = {}, activityManager) {
|
|
53
53
|
this.config = config;
|
|
54
54
|
this.activityManager = activityManager;
|
|
55
|
-
const components =
|
|
55
|
+
const components = initializeGatewayComponents(config);
|
|
56
56
|
this.logger = components.logger;
|
|
57
57
|
this.router = components.router;
|
|
58
58
|
this.activityManager = components.activityManager;
|
|
59
59
|
this.messageBuilderConfig = components.messageBuilderConfig;
|
|
60
|
-
|
|
60
|
+
this.defaultModelConfig = components.defaultModelConfig ?? {};
|
|
61
|
+
setGatewayRuntimeClients({
|
|
61
62
|
activix: this.activityManager?.getTracker(),
|
|
62
63
|
logger: this.logger
|
|
63
64
|
});
|
|
@@ -72,20 +73,24 @@ class AIGateway {
|
|
|
72
73
|
async invokeChat(request) {
|
|
73
74
|
const startTime = Date.now();
|
|
74
75
|
// Basic validation
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
validateChatRequest(request);
|
|
77
|
+
ensureGatewayRequestIdentity(request, undefined, this.logger);
|
|
78
|
+
setGatewayLastJobId(resolveRuntimeJobId(request));
|
|
78
79
|
// Generate simple task type ID
|
|
79
80
|
const taskTypeId = request.taskTypeId || `task-${Date.now()}`;
|
|
80
81
|
// Simple message construction
|
|
81
82
|
const messages = this.buildSimpleMessages(request);
|
|
82
83
|
// Merge config (modelConfig > request.config > gateway defaults)
|
|
83
|
-
const
|
|
84
|
+
const aiTools = await this.getAiTools();
|
|
85
|
+
const mergedConfig = await mergeConfig(request, this.config, this.logger, {
|
|
86
|
+
defaultModelConfig: this.defaultModelConfig,
|
|
87
|
+
catalog: aiTools?.catalog ?? null
|
|
88
|
+
});
|
|
84
89
|
// Activix start snapshot must match what the router receives (modelConfig-only callers omit request.config.model).
|
|
85
90
|
request._mergedRouterConfig = mergedConfig;
|
|
86
91
|
// Lazy auto-register providers from env (OPENAI_API_KEY, etc.) so consumers don't have to call init
|
|
87
92
|
if (!this._autoRegisterDone) {
|
|
88
|
-
await
|
|
93
|
+
await autoRegisterProviders(this.router, this.logger);
|
|
89
94
|
this._autoRegisterDone = true;
|
|
90
95
|
}
|
|
91
96
|
// Start activity tracking if available
|
|
@@ -113,8 +118,12 @@ class AIGateway {
|
|
|
113
118
|
mode: 'sync'
|
|
114
119
|
});
|
|
115
120
|
const metaChat = response?.metadata || {};
|
|
116
|
-
const tokensChat =
|
|
117
|
-
const costCompletionChat =
|
|
121
|
+
const tokensChat = extractTokenUsageFromRouterResponse(response);
|
|
122
|
+
const costCompletionChat = await resolveCostCompletionWithAiTools(response, tokensChat, {
|
|
123
|
+
mergedConfig,
|
|
124
|
+
calculator: aiTools?.calculator ?? null,
|
|
125
|
+
calculateCost: this.config.aiTools?.calculateCost
|
|
126
|
+
});
|
|
118
127
|
// Create enhanced response
|
|
119
128
|
const enhancedResponse = {
|
|
120
129
|
content: response.content || '',
|
|
@@ -133,7 +142,10 @@ class AIGateway {
|
|
|
133
142
|
: { cost: costCompletionChat.cost })
|
|
134
143
|
}
|
|
135
144
|
: {}),
|
|
136
|
-
...(costCompletionChat.costStatus ? { costStatus: costCompletionChat.costStatus } : {})
|
|
145
|
+
...(costCompletionChat.costStatus ? { costStatus: costCompletionChat.costStatus } : {}),
|
|
146
|
+
...(costCompletionChat.costBreakdown
|
|
147
|
+
? { costBreakdown: costCompletionChat.costBreakdown }
|
|
148
|
+
: {})
|
|
137
149
|
}
|
|
138
150
|
};
|
|
139
151
|
// Track activity success if activity was started
|
|
@@ -175,9 +187,9 @@ class AIGateway {
|
|
|
175
187
|
async invoke(request) {
|
|
176
188
|
const startTime = Date.now();
|
|
177
189
|
// Basic validation
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
190
|
+
validateAIRequest(request);
|
|
191
|
+
ensureGatewayRequestIdentity(request, undefined, this.logger);
|
|
192
|
+
setGatewayLastJobId(resolveRuntimeJobId(request));
|
|
181
193
|
// Generate simple task type ID
|
|
182
194
|
const taskTypeId = request.taskTypeId || `task-${Date.now()}`;
|
|
183
195
|
// Resolve instructions and build messages using proper components
|
|
@@ -188,7 +200,7 @@ class AIGateway {
|
|
|
188
200
|
// Use proper instruction resolution and message building
|
|
189
201
|
let builtMessages;
|
|
190
202
|
try {
|
|
191
|
-
builtMessages = await
|
|
203
|
+
builtMessages = await buildMessages(request, this.messageBuilderConfig, {
|
|
192
204
|
parsedSnapshot
|
|
193
205
|
});
|
|
194
206
|
messages = builtMessages.messages;
|
|
@@ -233,13 +245,13 @@ class AIGateway {
|
|
|
233
245
|
failureType: 'validation-failure'
|
|
234
246
|
}, startTime);
|
|
235
247
|
}
|
|
236
|
-
const rejectMeta =
|
|
248
|
+
const rejectMeta = buildInvokeRejectionMetadata({
|
|
237
249
|
request,
|
|
238
250
|
taskTypeId,
|
|
239
251
|
startTime,
|
|
240
252
|
gatewayAiRequestId: request.aiRequestId
|
|
241
253
|
});
|
|
242
|
-
|
|
254
|
+
attachGatewayInvokeRejectionMetadata(err, rejectMeta);
|
|
243
255
|
// Re-throw the error so it propagates to the caller
|
|
244
256
|
throw err;
|
|
245
257
|
}
|
|
@@ -253,14 +265,18 @@ class AIGateway {
|
|
|
253
265
|
// Attach parsedSnapshot to request for activity tracking
|
|
254
266
|
request._parsedRequest = parsedSnapshot;
|
|
255
267
|
// Merge config (modelConfig > request.config > gateway defaults)
|
|
256
|
-
const
|
|
268
|
+
const aiTools = await this.getAiTools();
|
|
269
|
+
const mergedConfig = await mergeConfig(request, this.config, this.logger, {
|
|
270
|
+
defaultModelConfig: this.defaultModelConfig,
|
|
271
|
+
catalog: aiTools?.catalog ?? null
|
|
272
|
+
});
|
|
257
273
|
request._mergedRouterConfig = mergedConfig;
|
|
258
274
|
const diagnosticsMode = request.diagnostics?.mode;
|
|
259
275
|
const traceEnabled = diagnosticsMode === 'trace';
|
|
260
276
|
const includeRawProviderPayload = request.diagnostics?.includeRawProviderPayload === true;
|
|
261
277
|
// Lazy auto-register providers from env (OPENAI_API_KEY, etc.) so consumers don't have to call init
|
|
262
278
|
if (!this._autoRegisterDone) {
|
|
263
|
-
await
|
|
279
|
+
await autoRegisterProviders(this.router, this.logger);
|
|
264
280
|
this._autoRegisterDone = true;
|
|
265
281
|
}
|
|
266
282
|
// Start activity tracking if available
|
|
@@ -351,7 +367,7 @@ class AIGateway {
|
|
|
351
367
|
// Track per-retry attempt objects through retry hooks.
|
|
352
368
|
const attemptIndexByRetry = new Map();
|
|
353
369
|
try {
|
|
354
|
-
const result = await
|
|
370
|
+
const result = await invokeWithRetry({
|
|
355
371
|
...baseRequest,
|
|
356
372
|
request: {
|
|
357
373
|
...baseRequest.request,
|
|
@@ -391,7 +407,7 @@ class AIGateway {
|
|
|
391
407
|
const respAny = tryResp;
|
|
392
408
|
if (ok && respAny) {
|
|
393
409
|
const meta = respAny.metadata || {};
|
|
394
|
-
const tokenCounts =
|
|
410
|
+
const tokenCounts = extractTokenUsageFromRouterResponse(respAny);
|
|
395
411
|
a.usage = {
|
|
396
412
|
tokens: tokenCounts,
|
|
397
413
|
maxTokensRequested: typeof meta?.maxTokensRequested === 'number'
|
|
@@ -420,7 +436,7 @@ class AIGateway {
|
|
|
420
436
|
a.routing.requestIds = requestIds;
|
|
421
437
|
a.modelUsed =
|
|
422
438
|
meta?.modelUsed || meta?.model || respAny.model || candidate.model;
|
|
423
|
-
const attemptCostUsd =
|
|
439
|
+
const attemptCostUsd = extractCostUsdFromRouterResponse(respAny);
|
|
424
440
|
if (typeof attemptCostUsd === 'number')
|
|
425
441
|
a.costUsd = attemptCostUsd;
|
|
426
442
|
if (includeRawProviderPayload) {
|
|
@@ -485,35 +501,35 @@ class AIGateway {
|
|
|
485
501
|
let parsingMethod = undefined;
|
|
486
502
|
// Actually use flex-md parsing - extract structured data from markdown
|
|
487
503
|
try {
|
|
488
|
-
this.logger.debug('Attempting flex-md extraction',
|
|
504
|
+
this.logger.debug('Attempting flex-md extraction', withActivityIdentity(request.identity, {
|
|
489
505
|
contentLength: content.length,
|
|
490
506
|
hasInstructions: !!resolvedRequest.instructions,
|
|
491
|
-
debugKind:
|
|
507
|
+
debugKind: gatewayLogDebug.intent
|
|
492
508
|
}));
|
|
493
509
|
// Let flex-md extract structured data from the response content
|
|
494
|
-
const extractionResult = await
|
|
495
|
-
this.logger.debug('Flex-md extraction result',
|
|
510
|
+
const extractionResult = await extractJsonFromFlexMd(content, this.logger);
|
|
511
|
+
this.logger.debug('Flex-md extraction result', withActivityIdentity(request.identity, {
|
|
496
512
|
hasResult: !!extractionResult,
|
|
497
513
|
hasJson: !!(extractionResult && extractionResult.json),
|
|
498
514
|
method: extractionResult?.method,
|
|
499
515
|
jsonType: extractionResult?.json ? typeof extractionResult.json : 'none',
|
|
500
|
-
debugKind:
|
|
516
|
+
debugKind: gatewayLogDebug.state
|
|
501
517
|
}));
|
|
502
518
|
if (extractionResult && extractionResult.json) {
|
|
503
519
|
// Successfully extracted structured data
|
|
504
520
|
parsedContent = extractionResult.json;
|
|
505
|
-
this.logger.info('Flex-md extraction successful - parsed into structured object',
|
|
521
|
+
this.logger.info('Flex-md extraction successful - parsed into structured object', withActivityIdentity(request.identity, {
|
|
506
522
|
method: extractionResult.method,
|
|
507
523
|
extractedKeys: Object.keys(extractionResult.json),
|
|
508
|
-
debugKind:
|
|
524
|
+
debugKind: gatewayLogDebug.event
|
|
509
525
|
}));
|
|
510
526
|
}
|
|
511
527
|
else {
|
|
512
528
|
// Extraction failed, fall back to raw text wrapper
|
|
513
|
-
this.logger.warn('Flex-md extraction failed - no structured data extracted',
|
|
529
|
+
this.logger.warn('Flex-md extraction failed - no structured data extracted', withActivityIdentity(request.identity, {
|
|
514
530
|
hasResult: !!extractionResult,
|
|
515
531
|
method: extractionResult?.method || 'none',
|
|
516
|
-
debugKind:
|
|
532
|
+
debugKind: gatewayLogDebug.anomaly
|
|
517
533
|
}));
|
|
518
534
|
parsedContent = { rawText: content };
|
|
519
535
|
}
|
|
@@ -521,32 +537,36 @@ class AIGateway {
|
|
|
521
537
|
catch (extractionError) {
|
|
522
538
|
// Extraction failed, fall back to raw text wrapper
|
|
523
539
|
const errorMessage = extractionError instanceof Error ? extractionError.message : String(extractionError);
|
|
524
|
-
this.logger.warn('Flex-md extraction failed - flex-md library compatibility issue',
|
|
540
|
+
this.logger.warn('Flex-md extraction failed - flex-md library compatibility issue', withActivityIdentity(request.identity, {
|
|
525
541
|
error: errorMessage,
|
|
526
542
|
issue: 'flex-md uses require() in ES module context - needs fixing in flex-md-loader.ts',
|
|
527
543
|
fallback: 'using rawText wrapper',
|
|
528
|
-
debugKind:
|
|
544
|
+
debugKind: gatewayLogDebug.anomaly
|
|
529
545
|
}));
|
|
530
546
|
parsedContent = { rawText: content };
|
|
531
547
|
}
|
|
532
548
|
contentType = 'structured';
|
|
533
549
|
parsingMethod = 'flex-md';
|
|
534
|
-
const outputContractKeys =
|
|
535
|
-
parsedContent = await
|
|
536
|
-
let tokens =
|
|
550
|
+
const outputContractKeys = resolveOutputContractFieldKeys(request);
|
|
551
|
+
parsedContent = await enrichParsedContentForOutputContract(parsedContent, content, outputContractKeys, this.logger);
|
|
552
|
+
let tokens = extractTokenUsageFromRouterResponse(routerResponse);
|
|
537
553
|
if (!(tokens.prompt || tokens.completion || tokens.total)) {
|
|
538
554
|
const alt = routerResponse?.rawResponse ?? routerResponse?.raw;
|
|
539
555
|
if (alt != null && typeof alt === 'object' && alt !== routerResponse) {
|
|
540
|
-
const second =
|
|
556
|
+
const second = extractTokenUsageFromRouterResponse(alt);
|
|
541
557
|
if (second.prompt || second.completion || second.total)
|
|
542
558
|
tokens = second;
|
|
543
559
|
}
|
|
544
560
|
}
|
|
545
|
-
const costCompletion =
|
|
561
|
+
const costCompletion = await resolveCostCompletionWithAiTools(routerResponse, tokens, {
|
|
562
|
+
mergedConfig,
|
|
563
|
+
calculator: aiTools?.calculator ?? null,
|
|
564
|
+
calculateCost: this.config.aiTools?.calculateCost
|
|
565
|
+
});
|
|
546
566
|
const routerMetaForCost = routerResponse?.metadata || {};
|
|
547
|
-
const routingMetadataSlice =
|
|
548
|
-
const effectiveModelConfig =
|
|
549
|
-
const traceMergedRouterSnapshot = traceEnabled ?
|
|
567
|
+
const routingMetadataSlice = pickInvokeRoutingMetadataSlice(routerResponse, mergedConfig);
|
|
568
|
+
const effectiveModelConfig = pickEffectiveModelConfigForMetadata(mergedConfig);
|
|
569
|
+
const traceMergedRouterSnapshot = traceEnabled ? pickTraceMergedRouterConfig(mergedConfig) : undefined;
|
|
550
570
|
const enhancedResponse = {
|
|
551
571
|
content: content,
|
|
552
572
|
parsedContent: parsedContent,
|
|
@@ -570,6 +590,7 @@ class AIGateway {
|
|
|
570
590
|
}
|
|
571
591
|
: {}),
|
|
572
592
|
...(costCompletion.costStatus ? { costStatus: costCompletion.costStatus } : {}),
|
|
593
|
+
...(costCompletion.costBreakdown ? { costBreakdown: costCompletion.costBreakdown } : {}),
|
|
573
594
|
...(traceEnabled
|
|
574
595
|
? {
|
|
575
596
|
requestIds: traceRequestIds,
|
|
@@ -590,10 +611,10 @@ class AIGateway {
|
|
|
590
611
|
const includeFullProviderBlob = diag?.includeFullProviderResponseInActivity !== false;
|
|
591
612
|
const maxFullChars = typeof diag?.activityFullResponseMaxChars === 'number' && diag.activityFullResponseMaxChars > 0
|
|
592
613
|
? diag.activityFullResponseMaxChars
|
|
593
|
-
:
|
|
614
|
+
: DEFAULT_ACTIVITY_FULL_RESPONSE_MAX_CHARS;
|
|
594
615
|
const rawFull = routerResponse.rawResponse || routerResponse;
|
|
595
616
|
const fullResponseForActivity = includeFullProviderBlob
|
|
596
|
-
?
|
|
617
|
+
? capActivityFullResponsePayload(rawFull, maxFullChars)
|
|
597
618
|
: undefined;
|
|
598
619
|
// Create activity response with proper structure for ActivityTracker
|
|
599
620
|
const activityResponse = {
|
|
@@ -627,17 +648,17 @@ class AIGateway {
|
|
|
627
648
|
costUsd: enhancedResponse.metadata.costUsd,
|
|
628
649
|
cost: enhancedResponse.metadata.cost
|
|
629
650
|
}, 'invoke');
|
|
630
|
-
this.logger.debug('gateway: enhancedResponse',
|
|
651
|
+
this.logger.debug('gateway: enhancedResponse', withActivityIdentity(request.identity, {
|
|
631
652
|
latencyMs: enhancedResponse.metadata?.latencyMs,
|
|
632
653
|
contentType: enhancedResponse.metadata?.contentType,
|
|
633
|
-
debugKind:
|
|
654
|
+
debugKind: gatewayLogDebug.state
|
|
634
655
|
}));
|
|
635
656
|
return enhancedResponse;
|
|
636
657
|
}
|
|
637
658
|
catch (error) {
|
|
638
659
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
639
|
-
const partial =
|
|
640
|
-
const rejectMeta =
|
|
660
|
+
const partial = tryExtractRouterLikePayloadFromErrorChain(err);
|
|
661
|
+
const rejectMeta = buildInvokeRejectionMetadata({
|
|
641
662
|
request,
|
|
642
663
|
taskTypeId,
|
|
643
664
|
startTime,
|
|
@@ -645,11 +666,11 @@ class AIGateway {
|
|
|
645
666
|
partialRouterPayload: partial,
|
|
646
667
|
gatewayAiRequestId: request.aiRequestId
|
|
647
668
|
});
|
|
648
|
-
|
|
669
|
+
attachGatewayInvokeRejectionMetadata(err, rejectMeta);
|
|
649
670
|
if (err.message.includes(NO_PROVIDER_ERROR)) {
|
|
650
671
|
const wrapped = new Error(err.message + NO_PROVIDER_HINT);
|
|
651
672
|
wrapped.cause = err;
|
|
652
|
-
|
|
673
|
+
attachGatewayInvokeRejectionMetadata(wrapped, rejectMeta);
|
|
653
674
|
throw wrapped;
|
|
654
675
|
}
|
|
655
676
|
throw err;
|
|
@@ -705,13 +726,16 @@ class AIGateway {
|
|
|
705
726
|
}
|
|
706
727
|
setActivityManager(activityManager) {
|
|
707
728
|
this.activityManager = activityManager;
|
|
708
|
-
|
|
729
|
+
setGatewayRuntimeClients({
|
|
709
730
|
activix: this.activityManager.getTracker(),
|
|
710
731
|
logger: this.logger
|
|
711
732
|
});
|
|
712
733
|
}
|
|
734
|
+
getAiTools() {
|
|
735
|
+
this._aiToolsClient ??= getAiToolsClient(this.config, this.logger);
|
|
736
|
+
return this._aiToolsClient;
|
|
737
|
+
}
|
|
713
738
|
}
|
|
714
|
-
exports.AIGateway = AIGateway;
|
|
715
739
|
function resolveRuntimeJobId(request) {
|
|
716
740
|
return request.identity.jobId || request.identity.sessionId || request.aiRequestId;
|
|
717
741
|
}
|
package/dist-cjs/gateway.d.ts
CHANGED
|
@@ -16,7 +16,9 @@ export declare class AIGateway {
|
|
|
16
16
|
private logger;
|
|
17
17
|
private activityManager?;
|
|
18
18
|
private messageBuilderConfig?;
|
|
19
|
+
private defaultModelConfig;
|
|
19
20
|
private _autoRegisterDone;
|
|
21
|
+
private _aiToolsClient;
|
|
20
22
|
constructor(config?: GatewayConfig, activityManager?: ActivityManager);
|
|
21
23
|
/**
|
|
22
24
|
* Invoke chat request (without structured output requirements)
|
|
@@ -36,4 +38,5 @@ export declare class AIGateway {
|
|
|
36
38
|
getLogger(): Logxer;
|
|
37
39
|
getActivityManager(): ActivityManager | undefined;
|
|
38
40
|
setActivityManager(activityManager: ActivityManager): void;
|
|
41
|
+
private getAiTools;
|
|
39
42
|
}
|
package/dist-cjs/index.cjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @x12i/ai-gateway
|
|
4
3
|
*
|
|
@@ -6,117 +5,42 @@
|
|
|
6
5
|
* This package exposes all functionality from @x12i/ai-providers-router
|
|
7
6
|
* with enhanced features: context propagation, usage tier tracking, and comprehensive metadata.
|
|
8
7
|
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
21
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
22
|
-
};
|
|
23
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.createValidationTestCases = exports.createTestAIRequest = exports.supportsJSONMode = exports.diagnoseResponse = exports.diagnoseRequest = exports.validateResponse = exports.extractJSON = exports.validateJSON = exports.validateAIRequest = exports.DEFAULT_RATE_LIMIT_ENABLED = exports.DEFAULT_RATE_LIMIT_MIN_INTERVAL_MS = exports.GatewayRateLimiter = exports.runtimeObjects = exports.DebugLogAbstract = exports.createLogxer = exports.gatewayLogDebug = exports.withActivityIdentity = exports.activityIdentityToLogMeta = exports.ensureGatewayRequestIdentity = exports.ActivityManager = exports.Activix = exports.resolveGatewayMemoryPathValue = exports.prepareWorkingMemoryForTemplateRender = exports.parseLooseJsonObject = exports.mapSmartInputPathsInputsToInput = exports.extractCallerInputsBag = exports.coalesceMergedInputBucket = exports.buildMemoryResolutionRootFromWorkingMemory = exports.GATEWAY_DUAL_MEMORY_ROOTS = exports.mergeTemplateRenderOptions = exports.mergeGatewayAndRequestTemplateRenderOptions = exports.resolveOutputContractFieldKeys = exports.enrichParsedContentForOutputContract = exports.contractSpecToFieldKeys = exports.hasNonZeroTokenUsage = exports.resolveCostCompletionForActivity = exports.resolveActivityCostCompletion = exports.pickRequestIdsFromRouterLike = exports.tryExtractRouterLikePayloadFromErrorChain = exports.buildInvokeRejectionMetadata = exports.attachGatewayInvokeRejectionMetadata = exports.autoRegisterProviders = exports.InstructionBackendError = exports.InstructionNotFoundError = exports.AIGateway = exports.FallbackExhaustedError = exports.ProviderNotFoundError = exports.createRouterFromConfig = exports.createRouter = exports.LLMProviderRouter = void 0;
|
|
25
|
-
exports.resetObjectTypesLibrary = exports.getObjectTypesLibrary = exports.initializeObjectTypesLibrary = exports.getObjectTypesForAgent = exports.getObjectType = exports.OBJECT_TYPES_LIBRARY = exports.assertValidAIRequest = exports.formatDiagnostic = exports.runValidationTests = void 0;
|
|
26
8
|
// Re-export router class and types (base functionality)
|
|
27
|
-
|
|
28
|
-
Object.defineProperty(exports, "LLMProviderRouter", { enumerable: true, get: function () { return ai_providers_router_1.LLMProviderRouter; } });
|
|
9
|
+
export { LLMProviderRouter } from '@x12i/ai-providers-router';
|
|
29
10
|
// Re-export factory functions
|
|
30
|
-
|
|
31
|
-
Object.defineProperty(exports, "createRouter", { enumerable: true, get: function () { return ai_providers_router_2.createRouter; } });
|
|
32
|
-
Object.defineProperty(exports, "createRouterFromConfig", { enumerable: true, get: function () { return ai_providers_router_2.createRouterFromConfig; } });
|
|
11
|
+
export { createRouter, createRouterFromConfig } from '@x12i/ai-providers-router';
|
|
33
12
|
// Re-export error classes
|
|
34
|
-
|
|
35
|
-
Object.defineProperty(exports, "ProviderNotFoundError", { enumerable: true, get: function () { return ai_providers_router_3.ProviderNotFoundError; } });
|
|
36
|
-
Object.defineProperty(exports, "FallbackExhaustedError", { enumerable: true, get: function () { return ai_providers_router_3.FallbackExhaustedError; } });
|
|
13
|
+
export { ProviderNotFoundError, FallbackExhaustedError } from '@x12i/ai-providers-router';
|
|
37
14
|
// Re-export all from router (includes everything it exports)
|
|
38
|
-
|
|
15
|
+
export * from '@x12i/ai-providers-router';
|
|
39
16
|
// Export enhanced gateway
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Object.defineProperty(exports, "attachGatewayInvokeRejectionMetadata", { enumerable: true, get: function () { return gateway_utils_js_1.attachGatewayInvokeRejectionMetadata; } });
|
|
49
|
-
Object.defineProperty(exports, "buildInvokeRejectionMetadata", { enumerable: true, get: function () { return gateway_utils_js_1.buildInvokeRejectionMetadata; } });
|
|
50
|
-
Object.defineProperty(exports, "tryExtractRouterLikePayloadFromErrorChain", { enumerable: true, get: function () { return gateway_utils_js_1.tryExtractRouterLikePayloadFromErrorChain; } });
|
|
51
|
-
Object.defineProperty(exports, "pickRequestIdsFromRouterLike", { enumerable: true, get: function () { return gateway_utils_js_1.pickRequestIdsFromRouterLike; } });
|
|
52
|
-
Object.defineProperty(exports, "resolveActivityCostCompletion", { enumerable: true, get: function () { return gateway_utils_js_1.resolveActivityCostCompletion; } });
|
|
53
|
-
Object.defineProperty(exports, "resolveCostCompletionForActivity", { enumerable: true, get: function () { return gateway_utils_js_1.resolveCostCompletionForActivity; } });
|
|
54
|
-
Object.defineProperty(exports, "hasNonZeroTokenUsage", { enumerable: true, get: function () { return gateway_utils_js_1.hasNonZeroTokenUsage; } });
|
|
55
|
-
var output_contract_normalizer_js_1 = require("./output-contract-normalizer.cjs");
|
|
56
|
-
Object.defineProperty(exports, "contractSpecToFieldKeys", { enumerable: true, get: function () { return output_contract_normalizer_js_1.contractSpecToFieldKeys; } });
|
|
57
|
-
Object.defineProperty(exports, "enrichParsedContentForOutputContract", { enumerable: true, get: function () { return output_contract_normalizer_js_1.enrichParsedContentForOutputContract; } });
|
|
58
|
-
Object.defineProperty(exports, "resolveOutputContractFieldKeys", { enumerable: true, get: function () { return output_contract_normalizer_js_1.resolveOutputContractFieldKeys; } });
|
|
59
|
-
var template_render_merge_js_1 = require("./template-render-merge.cjs");
|
|
60
|
-
Object.defineProperty(exports, "mergeGatewayAndRequestTemplateRenderOptions", { enumerable: true, get: function () { return template_render_merge_js_1.mergeGatewayAndRequestTemplateRenderOptions; } });
|
|
61
|
-
Object.defineProperty(exports, "mergeTemplateRenderOptions", { enumerable: true, get: function () { return template_render_merge_js_1.mergeTemplateRenderOptions; } });
|
|
62
|
-
var memory_path_resolution_js_1 = require("./memory-path-resolution.cjs");
|
|
63
|
-
Object.defineProperty(exports, "GATEWAY_DUAL_MEMORY_ROOTS", { enumerable: true, get: function () { return memory_path_resolution_js_1.GATEWAY_DUAL_MEMORY_ROOTS; } });
|
|
64
|
-
Object.defineProperty(exports, "buildMemoryResolutionRootFromWorkingMemory", { enumerable: true, get: function () { return memory_path_resolution_js_1.buildMemoryResolutionRootFromWorkingMemory; } });
|
|
65
|
-
Object.defineProperty(exports, "coalesceMergedInputBucket", { enumerable: true, get: function () { return memory_path_resolution_js_1.coalesceMergedInputBucket; } });
|
|
66
|
-
Object.defineProperty(exports, "extractCallerInputsBag", { enumerable: true, get: function () { return memory_path_resolution_js_1.extractCallerInputsBag; } });
|
|
67
|
-
Object.defineProperty(exports, "mapSmartInputPathsInputsToInput", { enumerable: true, get: function () { return memory_path_resolution_js_1.mapSmartInputPathsInputsToInput; } });
|
|
68
|
-
Object.defineProperty(exports, "parseLooseJsonObject", { enumerable: true, get: function () { return memory_path_resolution_js_1.parseLooseJsonObject; } });
|
|
69
|
-
Object.defineProperty(exports, "prepareWorkingMemoryForTemplateRender", { enumerable: true, get: function () { return memory_path_resolution_js_1.prepareWorkingMemoryForTemplateRender; } });
|
|
70
|
-
Object.defineProperty(exports, "resolveGatewayMemoryPathValue", { enumerable: true, get: function () { return memory_path_resolution_js_1.resolveGatewayMemoryPathValue; } });
|
|
17
|
+
export { AIGateway } from './gateway.js';
|
|
18
|
+
export { InstructionNotFoundError, InstructionBackendError } from './instruction-errors.js';
|
|
19
|
+
export { autoRegisterProviders } from './gateway-provider-auto-register.js';
|
|
20
|
+
export { attachGatewayInvokeRejectionMetadata, buildInvokeRejectionMetadata, tryExtractRouterLikePayloadFromErrorChain, pickRequestIdsFromRouterLike, resolveActivityCostCompletion, resolveCostCompletionForActivity, resolveCostCompletionWithAiTools, hasNonZeroTokenUsage } from './gateway-utils.js';
|
|
21
|
+
export { getGatewayOperationalMode, isProdGatewayMode, resolveGatewayDefaultModel, parseModelProviderSpec, CODE_DEFAULT_MODEL } from './gateway-mode.js';
|
|
22
|
+
export { contractSpecToFieldKeys, enrichParsedContentForOutputContract, resolveOutputContractFieldKeys } from './output-contract-normalizer.js';
|
|
23
|
+
export { mergeGatewayAndRequestTemplateRenderOptions, mergeTemplateRenderOptions } from './template-render-merge.js';
|
|
24
|
+
export { GATEWAY_DUAL_MEMORY_ROOTS, buildMemoryResolutionRootFromWorkingMemory, coalesceMergedInputBucket, extractCallerInputsBag, mapSmartInputPathsInputsToInput, parseLooseJsonObject, prepareWorkingMemoryForTemplateRender, resolveGatewayMemoryPathValue } from './memory-path-resolution.js';
|
|
71
25
|
// Usage tracking: UsageTracker class methods are available but consumption calculation is disabled
|
|
72
26
|
// (x-models was previously used for RPM/TPM tracking but is no longer integrated)
|
|
73
27
|
// Re-export activity tracking primitives (Activix)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
Object.defineProperty(exports, "ActivityManager", { enumerable: true, get: function () { return activity_manager_js_1.ActivityManager; } });
|
|
78
|
-
Object.defineProperty(exports, "ensureGatewayRequestIdentity", { enumerable: true, get: function () { return activity_manager_js_1.ensureGatewayRequestIdentity; } });
|
|
79
|
-
var gateway_log_meta_js_1 = require("./gateway-log-meta.cjs");
|
|
80
|
-
Object.defineProperty(exports, "activityIdentityToLogMeta", { enumerable: true, get: function () { return gateway_log_meta_js_1.activityIdentityToLogMeta; } });
|
|
81
|
-
Object.defineProperty(exports, "withActivityIdentity", { enumerable: true, get: function () { return gateway_log_meta_js_1.withActivityIdentity; } });
|
|
82
|
-
Object.defineProperty(exports, "gatewayLogDebug", { enumerable: true, get: function () { return gateway_log_meta_js_1.gatewayLogDebug; } });
|
|
28
|
+
export { Activix } from '@x12i/activix';
|
|
29
|
+
export { ActivityManager, ensureGatewayRequestIdentity } from './activity-manager.js';
|
|
30
|
+
export { activityIdentityToLogMeta, withActivityIdentity, gatewayLogDebug } from './gateway-log-meta.js';
|
|
83
31
|
// Re-export logging (@x12i/logxer)
|
|
84
|
-
|
|
85
|
-
Object.defineProperty(exports, "createLogxer", { enumerable: true, get: function () { return logxer_1.createLogxer; } });
|
|
86
|
-
Object.defineProperty(exports, "DebugLogAbstract", { enumerable: true, get: function () { return logxer_1.DebugLogAbstract; } });
|
|
32
|
+
export { createLogxer, DebugLogAbstract } from '@x12i/logxer';
|
|
87
33
|
// Runtime observability surface (leaf package: no downstream runtime objects)
|
|
88
|
-
|
|
89
|
-
Object.defineProperty(exports, "runtimeObjects", { enumerable: true, get: function () { return runtime_objects_js_1.runtimeObjects; } });
|
|
34
|
+
export { runtimeObjects } from './runtime-objects.js';
|
|
90
35
|
// Export rate limiter
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
var gateway_rate_limiter_constants_js_1 = require("./gateway-rate-limiter-constants.cjs");
|
|
94
|
-
Object.defineProperty(exports, "DEFAULT_RATE_LIMIT_MIN_INTERVAL_MS", { enumerable: true, get: function () { return gateway_rate_limiter_constants_js_1.DEFAULT_RATE_LIMIT_MIN_INTERVAL_MS; } });
|
|
95
|
-
Object.defineProperty(exports, "DEFAULT_RATE_LIMIT_ENABLED", { enumerable: true, get: function () { return gateway_rate_limiter_constants_js_1.DEFAULT_RATE_LIMIT_ENABLED; } });
|
|
36
|
+
export { GatewayRateLimiter } from './gateway-rate-limiter.js';
|
|
37
|
+
export { DEFAULT_RATE_LIMIT_MIN_INTERVAL_MS, DEFAULT_RATE_LIMIT_ENABLED } from './gateway-rate-limiter-constants.js';
|
|
96
38
|
// Export troubleshooting helpers
|
|
97
|
-
|
|
98
|
-
Object.defineProperty(exports, "validateAIRequest", { enumerable: true, get: function () { return troubleshooting_helper_js_1.validateAIRequest; } });
|
|
99
|
-
Object.defineProperty(exports, "validateJSON", { enumerable: true, get: function () { return troubleshooting_helper_js_1.validateJSON; } });
|
|
100
|
-
Object.defineProperty(exports, "extractJSON", { enumerable: true, get: function () { return troubleshooting_helper_js_1.extractJSON; } });
|
|
101
|
-
Object.defineProperty(exports, "validateResponse", { enumerable: true, get: function () { return troubleshooting_helper_js_1.validateResponse; } });
|
|
102
|
-
Object.defineProperty(exports, "diagnoseRequest", { enumerable: true, get: function () { return troubleshooting_helper_js_1.diagnoseRequest; } });
|
|
103
|
-
Object.defineProperty(exports, "diagnoseResponse", { enumerable: true, get: function () { return troubleshooting_helper_js_1.diagnoseResponse; } });
|
|
104
|
-
Object.defineProperty(exports, "supportsJSONMode", { enumerable: true, get: function () { return troubleshooting_helper_js_1.supportsJSONMode; } });
|
|
105
|
-
Object.defineProperty(exports, "createTestAIRequest", { enumerable: true, get: function () { return troubleshooting_helper_js_1.createTestAIRequest; } });
|
|
106
|
-
Object.defineProperty(exports, "createValidationTestCases", { enumerable: true, get: function () { return troubleshooting_helper_js_1.createValidationTestCases; } });
|
|
107
|
-
Object.defineProperty(exports, "runValidationTests", { enumerable: true, get: function () { return troubleshooting_helper_js_1.runValidationTests; } });
|
|
108
|
-
Object.defineProperty(exports, "formatDiagnostic", { enumerable: true, get: function () { return troubleshooting_helper_js_1.formatDiagnostic; } });
|
|
109
|
-
Object.defineProperty(exports, "assertValidAIRequest", { enumerable: true, get: function () { return troubleshooting_helper_js_1.assertValidAIRequest; } });
|
|
39
|
+
export { validateAIRequest, validateJSON, extractJSON, validateResponse, diagnoseRequest, diagnoseResponse, supportsJSONMode, createTestAIRequest, createValidationTestCases, runValidationTests, formatDiagnostic, assertValidAIRequest } from './troubleshooting-helper.js';
|
|
110
40
|
// Export object types library
|
|
111
|
-
|
|
112
|
-
Object.defineProperty(exports, "OBJECT_TYPES_LIBRARY", { enumerable: true, get: function () { return object_types_library_js_1.OBJECT_TYPES_LIBRARY; } });
|
|
113
|
-
Object.defineProperty(exports, "getObjectType", { enumerable: true, get: function () { return object_types_library_js_1.getObjectType; } });
|
|
114
|
-
Object.defineProperty(exports, "getObjectTypesForAgent", { enumerable: true, get: function () { return object_types_library_js_1.getObjectTypesForAgent; } });
|
|
41
|
+
export { OBJECT_TYPES_LIBRARY, getObjectType, getObjectTypesForAgent } from './object-types-library.js';
|
|
115
42
|
// Re-export outputs library integration functions
|
|
116
|
-
|
|
117
|
-
Object.defineProperty(exports, "initializeObjectTypesLibrary", { enumerable: true, get: function () { return object_types_library_integration_js_1.initializeObjectTypesLibrary; } });
|
|
118
|
-
Object.defineProperty(exports, "getObjectTypesLibrary", { enumerable: true, get: function () { return object_types_library_integration_js_1.getObjectTypesLibrary; } });
|
|
119
|
-
Object.defineProperty(exports, "resetObjectTypesLibrary", { enumerable: true, get: function () { return object_types_library_integration_js_1.resetObjectTypesLibrary; } });
|
|
43
|
+
export { initializeObjectTypesLibrary, getObjectTypesLibrary, resetObjectTypesLibrary } from './object-types-library-integration.js';
|
|
120
44
|
// Re-export outputs library types and utilities for convenience
|
|
121
45
|
// Note: Since we use dynamic imports for the outputs library, these types may not be available
|
|
122
46
|
// at compile time if the package isn't installed. Users can import directly from
|
package/dist-cjs/index.d.ts
CHANGED
|
@@ -17,7 +17,9 @@ export { AIGateway } from './gateway.js';
|
|
|
17
17
|
export { InstructionNotFoundError, InstructionBackendError } from './instruction-errors.js';
|
|
18
18
|
export { autoRegisterProviders } from './gateway-provider-auto-register.js';
|
|
19
19
|
export type { GatewayConfig, ProviderModelRef, ModelConfig, RetryConfig, ChatRequest, AIInvokeRequest, AIRequest, GatewayActionType, GatewayInvokeRejectionMetadata, GatewayTraceRequestIds, GatewayTraceMergedConfig, EnhancedLLMResponse, InstructionMetadata, ValidationRule, TemplateRenderOptions, SmartInputConfig, SmartInputRenderOptions } from './types.js';
|
|
20
|
-
export { attachGatewayInvokeRejectionMetadata, buildInvokeRejectionMetadata, tryExtractRouterLikePayloadFromErrorChain, pickRequestIdsFromRouterLike, resolveActivityCostCompletion, resolveCostCompletionForActivity, hasNonZeroTokenUsage } from './gateway-utils.js';
|
|
20
|
+
export { attachGatewayInvokeRejectionMetadata, buildInvokeRejectionMetadata, tryExtractRouterLikePayloadFromErrorChain, pickRequestIdsFromRouterLike, resolveActivityCostCompletion, resolveCostCompletionForActivity, resolveCostCompletionWithAiTools, hasNonZeroTokenUsage } from './gateway-utils.js';
|
|
21
|
+
export { getGatewayOperationalMode, isProdGatewayMode, resolveGatewayDefaultModel, parseModelProviderSpec, CODE_DEFAULT_MODEL } from './gateway-mode.js';
|
|
22
|
+
export type { GatewayOperationalMode, GatewayDefaultModelSource, DefaultModelSubstitutionReason, ResolvedGatewayDefault } from './gateway-mode.js';
|
|
21
23
|
export type { ActivityCostStatus, ResolvedActivityCost } from './gateway-utils.js';
|
|
22
24
|
export { contractSpecToFieldKeys, enrichParsedContentForOutputContract, resolveOutputContractFieldKeys } from './output-contract-normalizer.js';
|
|
23
25
|
export type { OutputContractSpec } from './output-contract-normalizer.js';
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Errors for instruction / prompt template and instructions-block resolution.
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
exports.InstructionBackendError = exports.InstructionNotFoundError = void 0;
|
|
7
|
-
class InstructionNotFoundError extends Error {
|
|
4
|
+
export class InstructionNotFoundError extends Error {
|
|
8
5
|
key;
|
|
9
6
|
backend;
|
|
10
7
|
originalKey;
|
|
@@ -16,8 +13,7 @@ class InstructionNotFoundError extends Error {
|
|
|
16
13
|
this.name = 'InstructionNotFoundError';
|
|
17
14
|
}
|
|
18
15
|
}
|
|
19
|
-
|
|
20
|
-
class InstructionBackendError extends Error {
|
|
16
|
+
export class InstructionBackendError extends Error {
|
|
21
17
|
key;
|
|
22
18
|
backend;
|
|
23
19
|
isRetryable;
|
|
@@ -31,4 +27,3 @@ class InstructionBackendError extends Error {
|
|
|
31
27
|
this.name = 'InstructionBackendError';
|
|
32
28
|
}
|
|
33
29
|
}
|
|
34
|
-
exports.InstructionBackendError = InstructionBackendError;
|