@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.
Files changed (72) hide show
  1. package/README.md +105 -13
  2. package/dist/activity-manager.d.ts +1 -0
  3. package/dist/activity-manager.js +123 -26
  4. package/dist/ai-tools-client.d.ts +20 -0
  5. package/dist/ai-tools-client.js +91 -0
  6. package/dist/gateway-config.d.ts +2 -0
  7. package/dist/gateway-config.js +2 -1
  8. package/dist/gateway-mode.d.ts +40 -0
  9. package/dist/gateway-mode.js +75 -0
  10. package/dist/gateway-utils.d.ts +28 -1
  11. package/dist/gateway-utils.js +137 -12
  12. package/dist/gateway.d.ts +3 -0
  13. package/dist/gateway.js +34 -6
  14. package/dist/index.d.ts +3 -1
  15. package/dist/index.js +2 -1
  16. package/dist/types.d.ts +21 -0
  17. package/dist-cjs/activity-manager.cjs +137 -45
  18. package/dist-cjs/activity-manager.d.ts +1 -0
  19. package/dist-cjs/ai-tools-client.cjs +91 -0
  20. package/dist-cjs/ai-tools-client.d.ts +20 -0
  21. package/dist-cjs/config/activity-tracking-config.cjs +1 -4
  22. package/dist-cjs/content-normalizer/content-normalizer.cjs +3 -8
  23. package/dist-cjs/content-normalizer/index.cjs +1 -7
  24. package/dist-cjs/content-normalizer/types.cjs +1 -2
  25. package/dist-cjs/flex-md-loader.cjs +20 -67
  26. package/dist-cjs/gateway-config.cjs +25 -63
  27. package/dist-cjs/gateway-config.d.ts +2 -0
  28. package/dist-cjs/gateway-conversion.cjs +10 -48
  29. package/dist-cjs/gateway-instructions.cjs +5 -10
  30. package/dist-cjs/gateway-log-meta.cjs +9 -14
  31. package/dist-cjs/gateway-memory.cjs +2 -6
  32. package/dist-cjs/gateway-messages.cjs +3 -6
  33. package/dist-cjs/gateway-meta.cjs +1 -4
  34. package/dist-cjs/gateway-mode.cjs +75 -0
  35. package/dist-cjs/gateway-mode.d.ts +40 -0
  36. package/dist-cjs/gateway-provider-auto-register.cjs +2 -38
  37. package/dist-cjs/gateway-provider.cjs +10 -22
  38. package/dist-cjs/gateway-rate-limiter-constants.cjs +2 -5
  39. package/dist-cjs/gateway-rate-limiter.cjs +5 -9
  40. package/dist-cjs/gateway-retry.cjs +6 -14
  41. package/dist-cjs/gateway-utils.cjs +160 -89
  42. package/dist-cjs/gateway-utils.d.ts +28 -1
  43. package/dist-cjs/gateway-validation.cjs +2 -6
  44. package/dist-cjs/gateway.cjs +91 -67
  45. package/dist-cjs/gateway.d.ts +3 -0
  46. package/dist-cjs/index.cjs +22 -98
  47. package/dist-cjs/index.d.ts +3 -1
  48. package/dist-cjs/instruction-errors.cjs +2 -7
  49. package/dist-cjs/instruction-optimizer.cjs +4 -10
  50. package/dist-cjs/instructions-parser.cjs +5 -10
  51. package/dist-cjs/logger-factory.cjs +3 -6
  52. package/dist-cjs/memory-path-resolution.cjs +8 -18
  53. package/dist-cjs/message-builder.cjs +11 -47
  54. package/dist-cjs/object-types-library-integration.cjs +3 -8
  55. package/dist-cjs/object-types-library.cjs +5 -10
  56. package/dist-cjs/output-auditor.cjs +1 -4
  57. package/dist-cjs/output-contract-normalizer.cjs +9 -14
  58. package/dist-cjs/request-report-generator.cjs +1 -4
  59. package/dist-cjs/response-analyzer/format-type-detector.cjs +1 -5
  60. package/dist-cjs/response-analyzer/index.cjs +3 -9
  61. package/dist-cjs/response-analyzer/object-type-detector.cjs +1 -5
  62. package/dist-cjs/response-analyzer/response-analyzer.cjs +6 -10
  63. package/dist-cjs/response-analyzer/types.cjs +1 -2
  64. package/dist-cjs/response-fallback-fixer.cjs +1 -4
  65. package/dist-cjs/runtime-objects.cjs +7 -13
  66. package/dist-cjs/template-parser.cjs +5 -42
  67. package/dist-cjs/template-render-merge.cjs +2 -6
  68. package/dist-cjs/troubleshooting-helper.cjs +13 -28
  69. package/dist-cjs/types.cjs +1 -2
  70. package/dist-cjs/types.d.ts +21 -0
  71. package/dist-cjs/usage-tracker.cjs +3 -7
  72. package/package.json +11 -5
@@ -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
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.AIGateway = void 0;
9
- const gateway_validation_js_1 = require("./gateway-validation.cjs");
10
- const activity_manager_js_1 = require("./activity-manager.cjs");
11
- const gateway_config_js_1 = require("./gateway-config.cjs");
12
- const message_builder_js_1 = require("./message-builder.cjs");
13
- const flex_md_loader_js_1 = require("./flex-md-loader.cjs");
14
- const output_contract_normalizer_js_1 = require("./output-contract-normalizer.cjs");
15
- const gateway_utils_js_1 = require("./gateway-utils.cjs");
16
- const gateway_provider_auto_register_js_1 = require("./gateway-provider-auto-register.cjs");
17
- const runtime_objects_js_1 = require("./runtime-objects.cjs");
18
- const gateway_log_meta_js_1 = require("./gateway-log-meta.cjs");
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', (0, gateway_log_meta_js_1.withActivityIdentity)(identity, {
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: gateway_log_meta_js_1.gatewayLogDebug.anomaly
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 = (0, gateway_config_js_1.initializeGatewayComponents)(config);
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
- (0, runtime_objects_js_1.setGatewayRuntimeClients)({
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
- (0, gateway_validation_js_1.validateChatRequest)(request);
76
- (0, activity_manager_js_1.ensureGatewayRequestIdentity)(request, undefined, this.logger);
77
- (0, runtime_objects_js_1.setGatewayLastJobId)(resolveRuntimeJobId(request));
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 mergedConfig = await (0, gateway_utils_js_1.mergeConfig)(request, this.config, this.logger);
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 (0, gateway_provider_auto_register_js_1.autoRegisterProviders)(this.router, this.logger);
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 = (0, gateway_utils_js_1.extractTokenUsageFromRouterResponse)(response);
117
- const costCompletionChat = (0, gateway_utils_js_1.resolveCostCompletionForActivity)(response, tokensChat);
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
- (0, gateway_validation_js_1.validateAIRequest)(request);
179
- (0, activity_manager_js_1.ensureGatewayRequestIdentity)(request, undefined, this.logger);
180
- (0, runtime_objects_js_1.setGatewayLastJobId)(resolveRuntimeJobId(request));
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 (0, message_builder_js_1.buildMessages)(request, this.messageBuilderConfig, {
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 = (0, gateway_utils_js_1.buildInvokeRejectionMetadata)({
248
+ const rejectMeta = buildInvokeRejectionMetadata({
237
249
  request,
238
250
  taskTypeId,
239
251
  startTime,
240
252
  gatewayAiRequestId: request.aiRequestId
241
253
  });
242
- (0, gateway_utils_js_1.attachGatewayInvokeRejectionMetadata)(err, rejectMeta);
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 mergedConfig = await (0, gateway_utils_js_1.mergeConfig)(request, this.config, this.logger);
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 (0, gateway_provider_auto_register_js_1.autoRegisterProviders)(this.router, this.logger);
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 (0, gateway_retry_js_1.invokeWithRetry)({
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 = (0, gateway_utils_js_1.extractTokenUsageFromRouterResponse)(respAny);
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 = (0, gateway_utils_js_1.extractCostUsdFromRouterResponse)(respAny);
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', (0, gateway_log_meta_js_1.withActivityIdentity)(request.identity, {
504
+ this.logger.debug('Attempting flex-md extraction', withActivityIdentity(request.identity, {
489
505
  contentLength: content.length,
490
506
  hasInstructions: !!resolvedRequest.instructions,
491
- debugKind: gateway_log_meta_js_1.gatewayLogDebug.intent
507
+ debugKind: gatewayLogDebug.intent
492
508
  }));
493
509
  // Let flex-md extract structured data from the response content
494
- const extractionResult = await (0, flex_md_loader_js_1.extractJsonFromFlexMd)(content, this.logger);
495
- this.logger.debug('Flex-md extraction result', (0, gateway_log_meta_js_1.withActivityIdentity)(request.identity, {
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: gateway_log_meta_js_1.gatewayLogDebug.state
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', (0, gateway_log_meta_js_1.withActivityIdentity)(request.identity, {
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: gateway_log_meta_js_1.gatewayLogDebug.event
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', (0, gateway_log_meta_js_1.withActivityIdentity)(request.identity, {
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: gateway_log_meta_js_1.gatewayLogDebug.anomaly
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', (0, gateway_log_meta_js_1.withActivityIdentity)(request.identity, {
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: gateway_log_meta_js_1.gatewayLogDebug.anomaly
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 = (0, output_contract_normalizer_js_1.resolveOutputContractFieldKeys)(request);
535
- parsedContent = await (0, output_contract_normalizer_js_1.enrichParsedContentForOutputContract)(parsedContent, content, outputContractKeys, this.logger);
536
- let tokens = (0, gateway_utils_js_1.extractTokenUsageFromRouterResponse)(routerResponse);
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 = (0, gateway_utils_js_1.extractTokenUsageFromRouterResponse)(alt);
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 = (0, gateway_utils_js_1.resolveCostCompletionForActivity)(routerResponse, tokens);
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 = (0, gateway_utils_js_1.pickInvokeRoutingMetadataSlice)(routerResponse, mergedConfig);
548
- const effectiveModelConfig = (0, gateway_utils_js_1.pickEffectiveModelConfigForMetadata)(mergedConfig);
549
- const traceMergedRouterSnapshot = traceEnabled ? (0, gateway_utils_js_1.pickTraceMergedRouterConfig)(mergedConfig) : undefined;
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
- : gateway_utils_js_1.DEFAULT_ACTIVITY_FULL_RESPONSE_MAX_CHARS;
614
+ : DEFAULT_ACTIVITY_FULL_RESPONSE_MAX_CHARS;
594
615
  const rawFull = routerResponse.rawResponse || routerResponse;
595
616
  const fullResponseForActivity = includeFullProviderBlob
596
- ? (0, gateway_utils_js_1.capActivityFullResponsePayload)(rawFull, maxFullChars)
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', (0, gateway_log_meta_js_1.withActivityIdentity)(request.identity, {
651
+ this.logger.debug('gateway: enhancedResponse', withActivityIdentity(request.identity, {
631
652
  latencyMs: enhancedResponse.metadata?.latencyMs,
632
653
  contentType: enhancedResponse.metadata?.contentType,
633
- debugKind: gateway_log_meta_js_1.gatewayLogDebug.state
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 = (0, gateway_utils_js_1.tryExtractRouterLikePayloadFromErrorChain)(err);
640
- const rejectMeta = (0, gateway_utils_js_1.buildInvokeRejectionMetadata)({
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
- (0, gateway_utils_js_1.attachGatewayInvokeRejectionMetadata)(err, rejectMeta);
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
- (0, gateway_utils_js_1.attachGatewayInvokeRejectionMetadata)(wrapped, rejectMeta);
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
- (0, runtime_objects_js_1.setGatewayRuntimeClients)({
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
  }
@@ -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
  }
@@ -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
- var ai_providers_router_1 = require("@x12i/ai-providers-router");
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
- var ai_providers_router_2 = require("@x12i/ai-providers-router");
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
- var ai_providers_router_3 = require("@x12i/ai-providers-router");
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
- __exportStar(require("@x12i/ai-providers-router"), exports);
15
+ export * from '@x12i/ai-providers-router';
39
16
  // Export enhanced gateway
40
- var gateway_js_1 = require("./gateway.cjs");
41
- Object.defineProperty(exports, "AIGateway", { enumerable: true, get: function () { return gateway_js_1.AIGateway; } });
42
- var instruction_errors_js_1 = require("./instruction-errors.cjs");
43
- Object.defineProperty(exports, "InstructionNotFoundError", { enumerable: true, get: function () { return instruction_errors_js_1.InstructionNotFoundError; } });
44
- Object.defineProperty(exports, "InstructionBackendError", { enumerable: true, get: function () { return instruction_errors_js_1.InstructionBackendError; } });
45
- var gateway_provider_auto_register_js_1 = require("./gateway-provider-auto-register.cjs");
46
- Object.defineProperty(exports, "autoRegisterProviders", { enumerable: true, get: function () { return gateway_provider_auto_register_js_1.autoRegisterProviders; } });
47
- var gateway_utils_js_1 = require("./gateway-utils.cjs");
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
- var activix_1 = require("@x12i/activix");
75
- Object.defineProperty(exports, "Activix", { enumerable: true, get: function () { return activix_1.Activix; } });
76
- var activity_manager_js_1 = require("./activity-manager.cjs");
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
- var logxer_1 = require("@x12i/logxer");
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
- var runtime_objects_js_1 = require("./runtime-objects.cjs");
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
- var gateway_rate_limiter_js_1 = require("./gateway-rate-limiter.cjs");
92
- Object.defineProperty(exports, "GatewayRateLimiter", { enumerable: true, get: function () { return gateway_rate_limiter_js_1.GatewayRateLimiter; } });
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
- var troubleshooting_helper_js_1 = require("./troubleshooting-helper.cjs");
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
- var object_types_library_js_1 = require("./object-types-library.cjs");
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
- var object_types_library_integration_js_1 = require("./object-types-library-integration.cjs");
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
@@ -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
- Object.defineProperty(exports, "__esModule", { value: true });
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
- exports.InstructionNotFoundError = InstructionNotFoundError;
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;