@x12i/ai-gateway 11.0.7 → 11.1.0

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 (77) hide show
  1. package/dist/gateway-config.d.ts +4 -4
  2. package/dist/gateway-config.js +18 -53
  3. package/dist/gateway-log-levels.d.ts +3 -1
  4. package/dist/gateway-log-levels.js +2 -1
  5. package/dist/gateway-retry.d.ts +2 -2
  6. package/dist/gateway-router.d.ts +42 -0
  7. package/dist/gateway-router.js +118 -0
  8. package/dist/gateway-utils.d.ts +2 -2
  9. package/dist/gateway-utils.js +1 -1
  10. package/dist/gateway.d.ts +2 -3
  11. package/dist/gateway.js +4 -16
  12. package/dist/index.d.ts +9 -13
  13. package/dist/index.js +7 -13
  14. package/dist/openrouter-runtime-adapter/index.d.ts +1 -3
  15. package/dist/openrouter-runtime-adapter/index.js +1 -3
  16. package/dist/openrouter-runtime-adapter/map-gateway-request.d.ts +1 -2
  17. package/dist/openrouter-runtime-adapter/map-gateway-request.js +0 -1
  18. package/dist/openrouter-runtime-adapter/map-runtime-errors.d.ts +14 -3
  19. package/dist/openrouter-runtime-adapter/map-runtime-errors.js +13 -3
  20. package/dist/openrouter-runtime-adapter/map-runtime-response.d.ts +2 -2
  21. package/dist/openrouter-runtime-adapter/map-server-tools.d.ts +1 -1
  22. package/dist/openrouter-runtime-adapter/should-use-openrouter-runtime.d.ts +1 -6
  23. package/dist/openrouter-runtime-adapter/should-use-openrouter-runtime.js +1 -6
  24. package/dist/router-errors.d.ts +52 -0
  25. package/dist/router-errors.js +115 -0
  26. package/dist/router-types.d.ts +147 -0
  27. package/dist/router-types.js +4 -0
  28. package/dist/types.d.ts +11 -16
  29. package/dist-cjs/gateway-config.cjs +18 -53
  30. package/dist-cjs/gateway-config.d.ts +4 -4
  31. package/dist-cjs/gateway-log-levels.cjs +2 -1
  32. package/dist-cjs/gateway-log-levels.d.ts +3 -1
  33. package/dist-cjs/gateway-retry.d.ts +2 -2
  34. package/dist-cjs/gateway-router.cjs +118 -0
  35. package/dist-cjs/gateway-router.d.ts +42 -0
  36. package/dist-cjs/gateway-utils.cjs +1 -1
  37. package/dist-cjs/gateway-utils.d.ts +2 -2
  38. package/dist-cjs/gateway.cjs +4 -16
  39. package/dist-cjs/gateway.d.ts +2 -3
  40. package/dist-cjs/index.cjs +7 -13
  41. package/dist-cjs/index.d.ts +9 -13
  42. package/dist-cjs/openrouter-runtime-adapter/index.cjs +1 -3
  43. package/dist-cjs/openrouter-runtime-adapter/index.d.ts +1 -3
  44. package/dist-cjs/openrouter-runtime-adapter/map-gateway-request.cjs +0 -1
  45. package/dist-cjs/openrouter-runtime-adapter/map-gateway-request.d.ts +1 -2
  46. package/dist-cjs/openrouter-runtime-adapter/map-runtime-errors.cjs +13 -3
  47. package/dist-cjs/openrouter-runtime-adapter/map-runtime-errors.d.ts +14 -3
  48. package/dist-cjs/openrouter-runtime-adapter/map-runtime-response.d.ts +2 -2
  49. package/dist-cjs/openrouter-runtime-adapter/map-server-tools.d.ts +1 -1
  50. package/dist-cjs/openrouter-runtime-adapter/should-use-openrouter-runtime.cjs +1 -6
  51. package/dist-cjs/openrouter-runtime-adapter/should-use-openrouter-runtime.d.ts +1 -6
  52. package/dist-cjs/router-errors.cjs +115 -0
  53. package/dist-cjs/router-errors.d.ts +52 -0
  54. package/dist-cjs/router-types.cjs +4 -0
  55. package/dist-cjs/router-types.d.ts +147 -0
  56. package/dist-cjs/types.d.ts +11 -16
  57. package/package.json +5 -6
  58. package/dist/gateway-provider-auto-register.d.ts +0 -17
  59. package/dist/gateway-provider-auto-register.js +0 -159
  60. package/dist/gateway-provider.d.ts +0 -54
  61. package/dist/gateway-provider.js +0 -202
  62. package/dist/openrouter-runtime-adapter/create-openrouter-runtime-adapter.d.ts +0 -23
  63. package/dist/openrouter-runtime-adapter/create-openrouter-runtime-adapter.js +0 -31
  64. package/dist/openrouter-runtime-adapter/create-openrouter-runtime-provider.d.ts +0 -10
  65. package/dist/openrouter-runtime-adapter/create-openrouter-runtime-provider.js +0 -152
  66. package/dist/openrouter-runtime-adapter/register-openrouter-runtime.d.ts +0 -10
  67. package/dist/openrouter-runtime-adapter/register-openrouter-runtime.js +0 -19
  68. package/dist-cjs/gateway-provider-auto-register.cjs +0 -159
  69. package/dist-cjs/gateway-provider-auto-register.d.ts +0 -17
  70. package/dist-cjs/gateway-provider.cjs +0 -202
  71. package/dist-cjs/gateway-provider.d.ts +0 -54
  72. package/dist-cjs/openrouter-runtime-adapter/create-openrouter-runtime-adapter.cjs +0 -31
  73. package/dist-cjs/openrouter-runtime-adapter/create-openrouter-runtime-adapter.d.ts +0 -23
  74. package/dist-cjs/openrouter-runtime-adapter/create-openrouter-runtime-provider.cjs +0 -152
  75. package/dist-cjs/openrouter-runtime-adapter/create-openrouter-runtime-provider.d.ts +0 -10
  76. package/dist-cjs/openrouter-runtime-adapter/register-openrouter-runtime.cjs +0 -19
  77. package/dist-cjs/openrouter-runtime-adapter/register-openrouter-runtime.d.ts +0 -10
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import type { GatewayConfig } from './types.js';
6
6
  import type { Logxer } from '@x12i/logxer';
7
- import { LLMProviderRouter } from '@x12i/ai-providers-router';
7
+ import { GatewayRouter } from './gateway-router.js';
8
8
  import { ActivityManager } from './activity-manager.js';
9
9
  import { UsageTracker } from './usage-tracker.js';
10
10
  import type { MessageBuilderConfig } from './message-builder.js';
@@ -12,7 +12,7 @@ import type { TemplateRenderOptions } from '@x12i/rendrix';
12
12
  export interface GatewayConfigContext {
13
13
  config: GatewayConfig;
14
14
  logger: Logxer;
15
- router: LLMProviderRouter;
15
+ router: GatewayRouter;
16
16
  activityManager: ActivityManager;
17
17
  usageTracker: UsageTracker;
18
18
  messageBuilderConfig: MessageBuilderConfig;
@@ -27,13 +27,13 @@ export declare function loadConfig(logger: Logxer): {
27
27
  /**
28
28
  * Sets up request interceptor for jobId propagation and config cleanup
29
29
  */
30
- export declare function setupRequestInterceptor(router: LLMProviderRouter, logger: Logxer): void;
30
+ export declare function setupRequestInterceptor(router: GatewayRouter, logger: Logxer): void;
31
31
  /**
32
32
  * Initializes gateway components
33
33
  */
34
34
  export declare function initializeGatewayComponents(config: GatewayConfig): {
35
35
  logger: Logxer;
36
- router: LLMProviderRouter;
36
+ router: GatewayRouter;
37
37
  activityManager: ActivityManager;
38
38
  usageTracker: UsageTracker;
39
39
  messageBuilderConfig: MessageBuilderConfig;
@@ -6,12 +6,11 @@ import * as fs from 'fs';
6
6
  import * as path from 'path';
7
7
  import { fileURLToPath } from 'url';
8
8
  import { resolveOpenRouterApiKey, resolvePreferOpenRouter, } from './openrouter-routing.js';
9
- import { LLMProviderRouter } from '@x12i/ai-providers-router';
9
+ import { GatewayRouter } from './gateway-router.js';
10
10
  import { createGatewayLogger } from './logger-factory.js';
11
11
  import { ActivityManager } from './activity-manager.js';
12
12
  import { UsageTracker } from './usage-tracker.js';
13
13
  import { mergeTemplateRenderOptions } from './template-render-merge.js';
14
- import { registerOpenRouterRuntime, shouldUseOpenRouterRuntime, } from './openrouter-runtime-adapter/index.js';
15
14
  /** Resolve current module directory across ESM/CJS builds. */
16
15
  function getModuleDir() {
17
16
  if (typeof __dirname !== 'undefined') {
@@ -83,12 +82,12 @@ export function loadConfig(logger) {
83
82
  */
84
83
  export function setupRequestInterceptor(router, logger) {
85
84
  logger.debug('Setting up request interceptor for jobId propagation and config cleanup');
86
- router.addRequestInterceptor(async (request, provider) => {
85
+ router.addRequestInterceptor(async (request) => {
87
86
  const identityJobId = request?.identity?.jobId;
88
87
  if (typeof identityJobId === 'string' && identityJobId.trim().length > 0) {
89
88
  logger.verbose('Propagating identity.jobId to request metadata', {
90
89
  jobId: identityJobId,
91
- provider: provider?.getProviderName?.() || 'unknown'
90
+ provider: 'openrouter'
92
91
  });
93
92
  if (!request.config) {
94
93
  request.config = {};
@@ -99,7 +98,7 @@ export function setupRequestInterceptor(router, logger) {
99
98
  request.config.metadata.jobId = identityJobId;
100
99
  }
101
100
  if (request.config && 'provider' in request.config) {
102
- logger.debug('Removing provider from config before passing to provider', {
101
+ logger.debug('Removing provider from config before passing to router', {
103
102
  provider: request.config.provider
104
103
  });
105
104
  const { provider: _, ...cleanConfig } = request.config;
@@ -126,59 +125,25 @@ export function initializeGatewayComponents(config) {
126
125
  defaultEngine: config.defaultEngine,
127
126
  hasTemplateRenderingDefaults: !!defaultTemplateRendering
128
127
  });
129
- const routerConfig = {};
130
- const defaultTarget = config.defaultTarget;
131
- if (defaultTarget) {
132
- routerConfig.defaultTarget = defaultTarget;
133
- }
134
- else if (config.defaultProvider !== undefined) {
135
- routerConfig.defaultProvider = config.defaultProvider;
136
- }
137
- else if (config.defaultEngine !== undefined) {
138
- routerConfig.defaultProvider = config.defaultEngine;
139
- }
140
- const fallbackChain = config.fallbackChain;
141
- if (fallbackChain) {
142
- routerConfig.fallbackChain = fallbackChain;
143
- }
144
- else if (config.fallbackChain !== undefined) {
145
- routerConfig.fallbackChain = config.fallbackChain;
146
- }
147
- if (config.autoDiscover !== undefined)
148
- routerConfig.autoDiscover = config.autoDiscover;
149
- if (config.usageTracker !== undefined)
150
- routerConfig.usageTracker = config.usageTracker;
151
- if (config.verbose !== undefined)
152
- routerConfig.verbose = config.verbose;
153
- if (config.logLevel !== undefined)
154
- routerConfig.logLevel = config.logLevel;
155
- if (config.logging !== undefined)
156
- routerConfig.logging = config.logging;
157
128
  const openRouterKey = resolveOpenRouterApiKey(config);
158
129
  const preferOpenRouter = resolvePreferOpenRouter(config);
159
- if (openRouterKey) {
160
- routerConfig.openrouter = { apiKey: openRouterKey };
161
- routerConfig.openRouter = {
162
- enabled: true,
163
- prefer: preferOpenRouter,
164
- };
165
- if (preferOpenRouter) {
166
- routerConfig.defaultMode = 'openrouter';
167
- }
168
- }
169
- const router = new LLMProviderRouter(routerConfig);
130
+ const router = new GatewayRouter({
131
+ verbose: config.verbose,
132
+ logLevel: config.logLevel,
133
+ logging: config.logging,
134
+ logger,
135
+ usageTracker: config.usageTracker,
136
+ openrouterRuntime: config.openrouterRuntime,
137
+ ...(openRouterKey ? { openrouter: { apiKey: openRouterKey } } : {}),
138
+ });
170
139
  setupRequestInterceptor(router, logger);
171
- if (openRouterKey && shouldUseOpenRouterRuntime(config)) {
172
- registerOpenRouterRuntime(router, {
173
- apiKey: openRouterKey,
174
- logger,
175
- runtimeConfig: config.openrouterRuntime,
140
+ if (openRouterKey) {
141
+ logger.debug('OpenRouter runtime enabled via @x12i/ai-router-runtime', {
142
+ openrouterRuntimeEnabled: config.openrouterRuntime?.enabled !== false,
176
143
  });
177
144
  }
178
- else if (openRouterKey) {
179
- logger.debug('OpenRouter legacy provider path enabled (runtime disabled)', {
180
- AI_GATEWAY_USE_OPENROUTER_RUNTIME: process.env.AI_GATEWAY_USE_OPENROUTER_RUNTIME,
181
- AI_GATEWAY_USE_LEGACY_OPENROUTER: process.env.AI_GATEWAY_USE_LEGACY_OPENROUTER,
145
+ else {
146
+ logger.debug('OpenRouter runtime not configured (OPENROUTER_API_KEY missing)', {
182
147
  openrouterRuntimeEnabled: config.openrouterRuntime?.enabled,
183
148
  });
184
149
  }
@@ -3,6 +3,8 @@
3
3
  * @see node_modules/@x12i/logxer/docs/package-log-levels-stack.md
4
4
  */
5
5
  import { type PackageLogLevelsConfig } from '@x12i/logxer';
6
+ /** @deprecated Use {@link ROUTER_LOG_ENV_PREFIX} from gateway-router. Kept for env var compatibility. */
7
+ export declare const ROUTER_LOG_ENV_PREFIX = "AI_ROUTER_RUNTIME";
6
8
  /** Stable ERC 2.0 env prefix — controls `AI_GATEWAY_LOGS_LEVEL`, etc. */
7
9
  export declare const GATEWAY_LOG_ENV_PREFIX = "AI_GATEWAY";
8
10
  /**
@@ -17,7 +19,7 @@ export declare const GATEWAY_LOGXER_PACKAGE: {
17
19
  /** Known `envPrefix` values in this package's dependency stack (for hosts / `.env`). */
18
20
  export declare const GATEWAY_STACK_LOG_PREFIXES: {
19
21
  readonly gateway: "AI_GATEWAY";
20
- readonly router: "AI_PROVIDER_ROUTER";
22
+ readonly router: "AI_ROUTER_RUNTIME";
21
23
  readonly flexMd: "FLEX_MD";
22
24
  };
23
25
  /**
@@ -3,7 +3,8 @@
3
3
  * @see node_modules/@x12i/logxer/docs/package-log-levels-stack.md
4
4
  */
5
5
  import { applyPackageLogLevelsFromEnv, mergePackageLogLevelsConfig } from '@x12i/logxer';
6
- import { ROUTER_LOG_ENV_PREFIX } from '@x12i/ai-providers-router';
6
+ /** @deprecated Use {@link ROUTER_LOG_ENV_PREFIX} from gateway-router. Kept for env var compatibility. */
7
+ export const ROUTER_LOG_ENV_PREFIX = 'AI_ROUTER_RUNTIME';
7
8
  /** Stable ERC 2.0 env prefix — controls `AI_GATEWAY_LOGS_LEVEL`, etc. */
8
9
  export const GATEWAY_LOG_ENV_PREFIX = 'AI_GATEWAY';
9
10
  /**
@@ -6,7 +6,7 @@
6
6
  * Between-calls rate limiting is handled separately in gateway-rate-limiter.ts (smart).
7
7
  */
8
8
  import type { RetryConfig } from './types.js';
9
- import type { LLMProviderRouter } from '@x12i/ai-providers-router';
9
+ import type { GatewayRouter } from './gateway-router.js';
10
10
  import type { Logxer } from '@x12i/logxer';
11
11
  /**
12
12
  * Determines if an error is a network error (fetch failed, DNS, connectivity)
@@ -34,7 +34,7 @@ export declare function sleep(ms: number): Promise<void>;
34
34
  * Invokes router with retry logic for network and server errors
35
35
  * Returns response and retry metadata
36
36
  */
37
- export declare function invokeWithRetry(routerRequest: any, retryConfig: RetryConfig, jobId: string, router: LLMProviderRouter, logger: Logxer, hooks?: {
37
+ export declare function invokeWithRetry(routerRequest: any, retryConfig: RetryConfig, jobId: string, router: GatewayRouter, logger: Logxer, hooks?: {
38
38
  /**
39
39
  * Called immediately before each provider call attempt (including the first try).
40
40
  * `retryIndex` is 0-based within this invokeWithRetry call.
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Gateway router backed by @x12i/ai-router-runtime.
3
+ */
4
+ import { type AiRouterRuntime } from '@x12i/ai-router-runtime';
5
+ import type { AIResponse, AIRouterRequest, GatewayRouterConfig, HealthCheckResult } from './router-types.js';
6
+ import type { GatewayOpenRouterRuntimeConfig } from './types.js';
7
+ /** Stable ERC 2.0 env prefix for router runtime logging. */
8
+ export declare const ROUTER_LOG_ENV_PREFIX = "AI_ROUTER_RUNTIME";
9
+ export type CreateRouterConfig = GatewayRouterConfig & {
10
+ openrouterRuntime?: GatewayOpenRouterRuntimeConfig;
11
+ };
12
+ type RequestInterceptor = (request: Record<string, unknown>, provider?: {
13
+ getProviderName?: () => string;
14
+ }) => Promise<Record<string, unknown>> | Record<string, unknown>;
15
+ export declare class GatewayRouter {
16
+ private readonly runtime;
17
+ private readonly logger?;
18
+ private readonly apiKey?;
19
+ private readonly requestInterceptors;
20
+ constructor(config?: CreateRouterConfig);
21
+ addRequestInterceptor(interceptor: RequestInterceptor): void;
22
+ addResponseInterceptor(_interceptor: unknown): void;
23
+ invoke(input: AIRouterRequest): Promise<AIResponse>;
24
+ registerProvider(_provider: unknown): void;
25
+ listProviders(): string[];
26
+ getAdapterRegistry(): {
27
+ register: (_adapter: unknown) => void;
28
+ };
29
+ getProviderRegistry(): {
30
+ register: (_provider: unknown) => void;
31
+ unregister: (_name: string) => void;
32
+ get: (_name: string) => undefined;
33
+ };
34
+ checkHealth(provider: string): Promise<HealthCheckResult>;
35
+ /** Access the underlying @x12i/ai-router-runtime instance. */
36
+ getRuntime(): AiRouterRuntime;
37
+ }
38
+ /** @deprecated Use {@link GatewayRouter}. */
39
+ export declare const LLMProviderRouter: typeof GatewayRouter;
40
+ export declare function createRouter(config?: CreateRouterConfig): Promise<GatewayRouter>;
41
+ export declare function createRouterFromConfig(_configPath: string): Promise<GatewayRouter>;
42
+ export {};
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Gateway router backed by @x12i/ai-router-runtime.
3
+ */
4
+ import { createAiRouterRuntime, AiRouterError, } from '@x12i/ai-router-runtime';
5
+ import { resolveOpenRouterRuntimeDefaults } from './openrouter-runtime-adapter/should-use-openrouter-runtime.js';
6
+ import { mapGatewayRequestToRuntimeRequest, } from './openrouter-runtime-adapter/map-gateway-request.js';
7
+ import { parseRuntimeResponseToAIResponse } from './openrouter-runtime-adapter/map-runtime-response.js';
8
+ import { mapRuntimeErrorToGatewayError, throwMappedRuntimeResponseErrors, } from './openrouter-runtime-adapter/map-runtime-errors.js';
9
+ import { OpenRouterApiKeyMissingError } from './router-errors.js';
10
+ /** Stable ERC 2.0 env prefix for router runtime logging. */
11
+ export const ROUTER_LOG_ENV_PREFIX = 'AI_ROUTER_RUNTIME';
12
+ function mapLogxerToRuntimeLogger(logger) {
13
+ return {
14
+ debug: (event, data) => logger.debug(event, data),
15
+ info: (event, data) => logger.info(event, data),
16
+ warn: (event, data) => logger.warn(event, data),
17
+ error: (event, data) => logger.error(event, data),
18
+ };
19
+ }
20
+ function buildRuntimeOptions(config, apiKey) {
21
+ const runtimeDefaults = resolveOpenRouterRuntimeDefaults({ openrouterRuntime: config.openrouterRuntime });
22
+ const timeoutMs = config.timeoutMs ?? config.defaultTimeoutMs;
23
+ return {
24
+ provider: 'openrouter',
25
+ logger: config.logger ? mapLogxerToRuntimeLogger(config.logger) : undefined,
26
+ openrouter: {
27
+ apiKey,
28
+ defaults: {
29
+ apiMode: runtimeDefaults.apiMode,
30
+ retry: { enabled: false },
31
+ onPolicyViolation: 'throw',
32
+ ...(timeoutMs ? { timeoutMs } : {}),
33
+ },
34
+ },
35
+ };
36
+ }
37
+ export class GatewayRouter {
38
+ runtime;
39
+ logger;
40
+ apiKey;
41
+ requestInterceptors = [];
42
+ constructor(config = {}) {
43
+ this.logger = config.logger;
44
+ this.apiKey = config.openrouter?.apiKey;
45
+ this.runtime = createAiRouterRuntime(buildRuntimeOptions(config, this.apiKey));
46
+ }
47
+ addRequestInterceptor(interceptor) {
48
+ this.requestInterceptors.push(interceptor);
49
+ }
50
+ addResponseInterceptor(_interceptor) {
51
+ this.logger?.debug('addResponseInterceptor is not supported with @x12i/ai-router-runtime');
52
+ }
53
+ async invoke(input) {
54
+ if (!this.apiKey) {
55
+ throw new OpenRouterApiKeyMissingError();
56
+ }
57
+ let request = { ...(input.request ?? {}) };
58
+ for (const interceptor of this.requestInterceptors) {
59
+ request = (await interceptor(request, { getProviderName: () => 'openrouter' }));
60
+ }
61
+ const runtimeRequest = mapGatewayRequestToRuntimeRequest(request, {
62
+ timeoutMs: input.exec?.timeoutMs,
63
+ });
64
+ try {
65
+ const response = await this.runtime.run(runtimeRequest);
66
+ if (response.status !== 'completed') {
67
+ throwMappedRuntimeResponseErrors(response);
68
+ }
69
+ return parseRuntimeResponseToAIResponse({
70
+ requestId: input.requestId ?? runtimeRequest.id ?? 'unknown',
71
+ execResult: { rawResponse: response },
72
+ });
73
+ }
74
+ catch (err) {
75
+ if (err instanceof AiRouterError && err.code === 'OPENROUTER_API_KEY_MISSING') {
76
+ throw new OpenRouterApiKeyMissingError();
77
+ }
78
+ throw mapRuntimeErrorToGatewayError(err);
79
+ }
80
+ }
81
+ registerProvider(_provider) {
82
+ this.logger?.warn('registerProvider is not supported with @x12i/ai-router-runtime; only openrouter is available');
83
+ }
84
+ listProviders() {
85
+ return this.apiKey ? ['openrouter'] : [];
86
+ }
87
+ getAdapterRegistry() {
88
+ return { register: () => undefined };
89
+ }
90
+ getProviderRegistry() {
91
+ return {
92
+ register: () => undefined,
93
+ unregister: () => undefined,
94
+ get: () => undefined,
95
+ };
96
+ }
97
+ async checkHealth(provider) {
98
+ if (provider !== 'openrouter') {
99
+ return { provider, healthy: false, error: `Provider "${provider}" is not supported` };
100
+ }
101
+ if (!this.apiKey) {
102
+ return { provider, healthy: false, error: 'OPENROUTER_API_KEY is missing' };
103
+ }
104
+ return { provider, healthy: true, latencyMs: 0 };
105
+ }
106
+ /** Access the underlying @x12i/ai-router-runtime instance. */
107
+ getRuntime() {
108
+ return this.runtime;
109
+ }
110
+ }
111
+ /** @deprecated Use {@link GatewayRouter}. */
112
+ export const LLMProviderRouter = GatewayRouter;
113
+ export async function createRouter(config) {
114
+ return new GatewayRouter(config ?? {});
115
+ }
116
+ export async function createRouterFromConfig(_configPath) {
117
+ return createRouter();
118
+ }
@@ -3,8 +3,8 @@
3
3
  * Handles utility functions
4
4
  */
5
5
  import type { AIInvokeRequest, ChatRequest, GatewayConfig, GatewayFallbackAttempt, GatewayInvokeRejectionMetadata, GatewayTraceAttempt, GatewayTraceMergedConfig, GatewayTraceRequestIds, GatewayTraceUsageSummary, ModelConfig } from './types.js';
6
- import { FallbackExhaustedError } from '@x12i/ai-providers-router';
7
- import type { ProviderFailureCode } from '@x12i/ai-providers-router';
6
+ import { FallbackExhaustedError } from './router-errors.js';
7
+ import type { ProviderFailureCode } from './router-errors.js';
8
8
  import type { Logxer } from '@x12i/logxer';
9
9
  import { type AiCostResult, type AiModelsCatalogClient, type CostCalculator, type OpenRouterRoutingConfig } from '@x12i/ai-tools';
10
10
  import { pickOpenRouterRuntimeMetadataSlice, enrichTraceOpenRouterRuntimeMetadata } from './openrouter-runtime-adapter/index.js';
@@ -3,7 +3,7 @@
3
3
  * Handles utility functions
4
4
  */
5
5
  import * as crypto from 'crypto';
6
- import { FallbackExhaustedError, enrichRunTaskError, providerAttemptsFromFallbackAttempts } from '@x12i/ai-providers-router';
6
+ import { FallbackExhaustedError, enrichRunTaskError, providerAttemptsFromFallbackAttempts } from './router-errors.js';
7
7
  import { ModelResolutionError, ModelProfileInputRejectedError, ModelProfileUnroutableError, resolveInvokeModel, } from '@x12i/ai-tools';
8
8
  import { extractHttpStatusCode } from './gateway-retry.js';
9
9
  import { gatewayLogDebug, withActivityIdentity } from './gateway-log-meta.js';
package/dist/gateway.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Simplified AI Gateway - Clean proxy implementation
5
5
  */
6
- import { LLMProviderRouter } from '@x12i/ai-providers-router';
6
+ import { GatewayRouter } from './gateway-router.js';
7
7
  import type { GatewayConfig, ChatRequest, AIInvokeRequest, EnhancedLLMResponse } from './types.js';
8
8
  import type { Logxer } from '@x12i/logxer';
9
9
  import { ActivityManager } from './activity-manager.js';
@@ -16,7 +16,6 @@ export declare class AIGateway {
16
16
  private logger;
17
17
  private activityManager?;
18
18
  private messageBuilderConfig?;
19
- private _autoRegisterDone;
20
19
  private _aiToolsClient;
21
20
  private readonly preferOpenRouter;
22
21
  private readonly openRouterApiKey?;
@@ -31,7 +30,7 @@ export declare class AIGateway {
31
30
  invoke<TContent = unknown>(request: AIInvokeRequest): Promise<EnhancedLLMResponse<TContent>>;
32
31
  register(provider: any): void;
33
32
  listProviders(): string[];
34
- getRouter(): LLMProviderRouter;
33
+ getRouter(): GatewayRouter;
35
34
  getLogger(): Logxer;
36
35
  getActivityManager(): ActivityManager | undefined;
37
36
  setActivityManager(activityManager: ActivityManager): void;
package/dist/gateway.js CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Simplified AI Gateway - Clean proxy implementation
5
5
  */
6
- import { FallbackExhaustedError } from '@x12i/ai-providers-router';
6
+ import { FallbackExhaustedError } from './router-errors.js';
7
7
  import { validateChatRequest, validateAIRequest } from './gateway-validation.js';
8
8
  import { ensureGatewayRequestIdentity } from './activity-manager.js';
9
9
  import { initializeGatewayComponents } from './gateway-config.js';
@@ -14,14 +14,13 @@ import { enrichParsedContentForOutputContract, resolveOutputContractFieldKeys }
14
14
  import { attachGatewayInvokeRejectionMetadata, buildGatewayFallbackAttemptsFromTrace, buildInvokeRejectionMetadata, capActivityFullResponsePayload, formatFallbackExhaustionMessage, logResolvedModelRouting, enrichGatewayFallbackExhaustedError, mapGatewayFallbackAttemptsToRouter, DEFAULT_ACTIVITY_FULL_RESPONSE_MAX_CHARS, extractCostUsdFromRouterResponse, extractTokenUsageFromRouterResponse, mergeConfig, pickEffectiveModelConfigForMetadata, pickInvokeRoutingMetadataSlice, pickTraceMergedRouterConfig, pickEnhancedOpenRouterMetadata, resolveCostCompletionWithAiTools, buildTraceUsageSummary, enrichTraceAttemptsWithBilling, tryExtractRouterLikePayloadFromErrorChain, tryExtractOpenRouterMetadataFromErrorChain, } from './gateway-utils.js';
15
15
  import { buildTraceAttemptOpenRouterRuntimeSlice } from './openrouter-runtime-adapter/index.js';
16
16
  import { getAiToolsClient } from './ai-tools-client.js';
17
- import { autoRegisterProviders } from './gateway-provider-auto-register.js';
18
17
  import { setGatewayLastJobId, setGatewayRuntimeClients } from './runtime-objects.js';
19
18
  import { gatewayLogDebug, withActivityIdentity, withGatewayLogContext } from './gateway-log-meta.js';
20
19
  import { exceptionEvidence, fieldEvidence, GatewayLogCode, gatewayErrorCode, gatewayWarnCode } from './gateway-log-diagnostics.js';
21
20
  import { invokeWithRetry } from './gateway-retry.js';
22
- /** Error message thrown by the router when no provider is registered or specified */
23
- const NO_PROVIDER_ERROR = 'No provider specified and no providers registered';
24
- const NO_PROVIDER_HINT = ' Set OPENROUTER_API_KEY in the environment to use OpenRouter, or register a provider with the router (e.g. via autoRegisterProviders or gateway config).';
21
+ /** Error message when OpenRouter is not configured */
22
+ const NO_PROVIDER_ERROR = 'OPENROUTER_API_KEY is required';
23
+ const NO_PROVIDER_HINT = ' Set OPENROUTER_API_KEY in the environment to use OpenRouter.';
25
24
  /** Warn when a successful call reports no tokens and/or explicit zero cost (often missing adapter metadata). */
26
25
  function warnIfSuccessfulInvokeReportsZeroUsageOrCost(logger, identity, meta, invokeKind) {
27
26
  const { tokens, costUsd, cost } = meta;
@@ -58,7 +57,6 @@ export class AIGateway {
58
57
  logger;
59
58
  activityManager;
60
59
  messageBuilderConfig;
61
- _autoRegisterDone = false;
62
60
  _aiToolsClient = null;
63
61
  preferOpenRouter;
64
62
  openRouterApiKey;
@@ -151,11 +149,6 @@ export class AIGateway {
151
149
  });
152
150
  // Activix start snapshot must match what the router receives (modelConfig-only callers omit request.config.model).
153
151
  request._mergedRouterConfig = mergedConfig;
154
- // Lazy auto-register providers from env (OPENAI_API_KEY, etc.) so consumers don't have to call init
155
- if (!this._autoRegisterDone) {
156
- await autoRegisterProviders(this.router, this.logger);
157
- this._autoRegisterDone = true;
158
- }
159
152
  // Start activity tracking if available
160
153
  let activity = undefined;
161
154
  if (this.activityManager) {
@@ -346,11 +339,6 @@ export class AIGateway {
346
339
  const diagnosticsMode = request.diagnostics?.mode;
347
340
  const traceEnabled = diagnosticsMode === 'trace';
348
341
  const includeRawProviderPayload = request.diagnostics?.includeRawProviderPayload === true;
349
- // Lazy auto-register providers from env (OPENAI_API_KEY, etc.) so consumers don't have to call init
350
- if (!this._autoRegisterDone) {
351
- await autoRegisterProviders(this.router, this.logger);
352
- this._autoRegisterDone = true;
353
- }
354
342
  // Start activity tracking if available
355
343
  let activity = undefined;
356
344
  if (this.activityManager) {
package/dist/index.d.ts CHANGED
@@ -2,22 +2,19 @@
2
2
  * @x12i/ai-gateway
3
3
  *
4
4
  * Unified gateway for LLM provider routing and management.
5
- * This package exposes all functionality from @x12i/ai-providers-router
6
- * with enhanced features: context propagation, usage tier tracking, and comprehensive metadata.
5
+ * Router execution is backed by @x12i/ai-router-runtime with enhanced gateway features.
7
6
  */
8
- export { LLMProviderRouter } from '@x12i/ai-providers-router';
9
- export type { RouterConfig, HealthCheckResult } from '@x12i/ai-providers-router';
10
- export { createRouter, createRouterFromConfig } from '@x12i/ai-providers-router';
11
- export type { CreateRouterConfig } from '@x12i/ai-providers-router';
12
- export { ProviderNotFoundError, FallbackExhaustedError, OpenRouterApiKeyMissingError, } from '@x12i/ai-providers-router';
13
- export type { RequestInterceptor, ResponseInterceptor } from '@x12i/ai-providers-router';
14
- export type { UsageTracker } from '@x12i/ai-providers-router';
15
- export * from '@x12i/ai-providers-router';
7
+ export { createAiRouterRuntime, AiRouterError, IMPLEMENTED_AI_PROVIDERS, isImplementedAiProvider, providerNotImplemented, resolveProvider, } from '@x12i/ai-router-runtime';
8
+ export type { AiProviderId, AiRouterRequest, AiRouterRuntime, AiRouterRuntimeOptions, ImplementedAiProvider, } from '@x12i/ai-router-runtime';
9
+ export { GatewayRouter, LLMProviderRouter, createRouter, createRouterFromConfig, ROUTER_LOG_ENV_PREFIX, } from './gateway-router.js';
10
+ export type { CreateRouterConfig } from './gateway-router.js';
11
+ export type { AIResponse, AIRouterRequest, GatewayRouterConfig, RouterConfig, HealthCheckResult, RouterMode, NormalizedUsage, ProviderModelRef as RouterProviderModelRef, } from './router-types.js';
12
+ export { FallbackExhaustedError, ProviderNotFoundError, OpenRouterApiKeyMissingError, PROVIDER_FAILURE_CODES, operatorHintForProviderFailureCode, enrichRunTaskError, providerAttemptsFromFallbackAttempts, buildProviderAttemptDetail, } from './router-errors.js';
13
+ export type { FallbackAttempt, ProviderFailureCode, ProviderAttemptDetail, } from './router-errors.js';
16
14
  export { AIGateway } from './gateway.js';
17
15
  export { InstructionNotFoundError, InstructionBackendError, ModelRequiredError, MaxTokensRequiredError, GatewayAliasModelRejectedError, GatewayValidationError, ProviderConfigError, ProviderInvokeError, GatewayPolicyViolationError, } from './instruction-errors.js';
18
16
  export { normalizeInvokeModelAtIngress } from './invoke-model-ingress.js';
19
- export { autoRegisterProviders } from './gateway-provider-auto-register.js';
20
- export { registerOpenRouterRuntime, shouldUseOpenRouterRuntime, mapGatewayServerTools, } from './openrouter-runtime-adapter/index.js';
17
+ export { shouldUseOpenRouterRuntime, mapGatewayServerTools, } from './openrouter-runtime-adapter/index.js';
21
18
  export type { GatewayConfig, ProviderModelRef, ModelConfig, GatewayModelConfig, GatewayServerToolsConfig, GatewayServerToolMode, GatewayServerToolUsage, GatewayNestedServerTool, GatewayWebSearchToolConfig, GatewayWebFetchToolConfig, GatewayDatetimeToolConfig, GatewayImageGenerationToolConfig, GatewayApplyPatchToolConfig, GatewayFusionToolConfig, GatewayAdvisorToolConfig, GatewaySubagentToolConfig, GatewayOpenRouterErrorMetadata, GatewayOpenRouterConfig, GatewayOpenRouterRuntimeConfig, GatewayServerToolUsageMap, GatewayCitation, GatewayGeneratedImage, GatewayPatchProposal, GatewayOpenRouterRuntimeMetadata, RetryConfig, ChatRequest, AIInvokeRequest, AIRequest, GatewayActionType, GatewayInvokeRejectionMetadata, GatewayFallbackAttempt, GatewayTraceRequestIds, GatewayTraceAttempt, GatewayTraceUsageSummary, GatewayTraceMergedConfig, EnhancedLLMResponse, InstructionMetadata, ValidationRule, TemplateRenderOptions, SmartInputConfig, SmartInputRenderOptions } from './types.js';
22
19
  export { attachGatewayInvokeRejectionMetadata, buildInvokeRejectionMetadata, tryExtractRouterLikePayloadFromErrorChain, tryExtractOpenRouterMetadataFromErrorChain, tryExtractFallbackAttemptsFromErrorChain, pickRequestIdsFromRouterLike, resolveActivityCostCompletion, resolveCostCompletionForActivity, resolveCostCompletionWithAiTools, buildGatewayPricingRecord, mapAiCostResultToResolvedActivityCost, catalogPricingSucceeded, extractUsageExtrasFromRouterResponse, buildTraceUsageSummary, enrichTraceAttemptsWithBilling, pickEnhancedOpenRouterMetadata, hasNonZeroTokenUsage, MODEL_PROFILE_UNROUTABLE, ModelProfileUnroutableError, ModelProfileInputRejectedError, buildGatewayFallbackAttemptsFromTrace, formatFallbackExhaustionMessage, enrichGatewayFallbackExhaustedError, logResolvedModelRouting, mapGatewayFallbackAttemptsToRouter } from './gateway-utils.js';
23
20
  export { getGatewayOperationalMode, isProdGatewayMode, parseModelProviderSpec } from './gateway-mode.js';
@@ -46,7 +43,6 @@ export type { GatewayLogCode as GatewayDiagnosticCode } from './gateway-log-diag
46
43
  export { resolveInvokeModel, applyModelResolution, applyOpenRouterInvokeRouting, applyOpenRouterInvokePolicy, mapResolutionToRouterConfig, buildInvokeModelResolverOptions, buildModelResolverOptions, enrichModelResolutionError, getAiToolsClient, resetAiToolsClientForTests, resolveOpenRouterApiKey, resolvePreferOpenRouter, readPreferOpenRouterFromEnv, getAiToolsInvokeClient, createAiToolsInvokeClient, } from './ai-tools-client.js';
47
44
  export type { AiToolsClientBundle, AiToolsInvokeClient, InvokeModelResolutionDiagnostics, InvokeModelResolutionInput, InvokeModelResolutionOptions, InvokeModelResolutionResult, InvokeRouterConfigSlice, } from './ai-tools-client.js';
48
45
  export { createLogxer, DebugLogAbstract, runWithLogContext, getStationRuntimeIdentity, mergeRuntimeIdentity, conditionEvidence, sourceEvidence, logReferenceEvidence, readAgentLoggingInstructions, resolveAgentLoggingInstructionsPath, applyPackageLogLevelsFromEnv, configurePackageLogLevels, mergePackageLogLevelsConfig, setPackageLogLevel, resolveStackLogLevelForPrefix, resolvePackageLogsLevel, parseLogxerPackageLevelsEnv, LOGXER_PACKAGE_LEVELS_ENV, LOGXER_PACKAGE_LOGS_DEFAULT_ENV } from '@x12i/logxer';
49
- export { ROUTER_LOG_ENV_PREFIX } from '@x12i/ai-providers-router';
50
46
  export type { Logxer, LogMeta, RuntimeIdentity, LogRuntimeContext, GetJobLogsInput, GetJobLogsResult, QueryableLogLine, LogDiagnostics, DiagnosticEvidence, ScopeCriteria, ScopeLogsResult, StackLoggingOptions, PackageLogLevelsConfig, PackageLogLevelSetting } from '@x12i/logxer';
51
47
  export { runtimeObjects } from './runtime-objects.js';
52
48
  export type { ActivixQueryableClient, LogxerQueryableClient, PackageRuntimeObjects, RuntimeObjects } from './runtime-objects.js';
package/dist/index.js CHANGED
@@ -2,23 +2,18 @@
2
2
  * @x12i/ai-gateway
3
3
  *
4
4
  * Unified gateway for LLM provider routing and management.
5
- * This package exposes all functionality from @x12i/ai-providers-router
6
- * with enhanced features: context propagation, usage tier tracking, and comprehensive metadata.
5
+ * Router execution is backed by @x12i/ai-router-runtime with enhanced gateway features.
7
6
  */
8
- // Re-export router class and types (base functionality)
9
- export { LLMProviderRouter } from '@x12i/ai-providers-router';
10
- // Re-export factory functions
11
- export { createRouter, createRouterFromConfig } from '@x12i/ai-providers-router';
12
- // Re-export error classes
13
- export { ProviderNotFoundError, FallbackExhaustedError, OpenRouterApiKeyMissingError, } from '@x12i/ai-providers-router';
14
- // Re-export all from router (includes everything it exports)
15
- export * from '@x12i/ai-providers-router';
7
+ // Router runtime (OpenRouter protocol)
8
+ export { createAiRouterRuntime, AiRouterError, IMPLEMENTED_AI_PROVIDERS, isImplementedAiProvider, providerNotImplemented, resolveProvider, } from '@x12i/ai-router-runtime';
9
+ // Gateway router (invoke-compatible wrapper)
10
+ export { GatewayRouter, LLMProviderRouter, createRouter, createRouterFromConfig, ROUTER_LOG_ENV_PREFIX, } from './gateway-router.js';
11
+ export { FallbackExhaustedError, ProviderNotFoundError, OpenRouterApiKeyMissingError, PROVIDER_FAILURE_CODES, operatorHintForProviderFailureCode, enrichRunTaskError, providerAttemptsFromFallbackAttempts, buildProviderAttemptDetail, } from './router-errors.js';
16
12
  // Export enhanced gateway
17
13
  export { AIGateway } from './gateway.js';
18
14
  export { InstructionNotFoundError, InstructionBackendError, ModelRequiredError, MaxTokensRequiredError, GatewayAliasModelRejectedError, GatewayValidationError, ProviderConfigError, ProviderInvokeError, GatewayPolicyViolationError, } from './instruction-errors.js';
19
15
  export { normalizeInvokeModelAtIngress } from './invoke-model-ingress.js';
20
- export { autoRegisterProviders } from './gateway-provider-auto-register.js';
21
- export { registerOpenRouterRuntime, shouldUseOpenRouterRuntime, mapGatewayServerTools, } from './openrouter-runtime-adapter/index.js';
16
+ export { shouldUseOpenRouterRuntime, mapGatewayServerTools, } from './openrouter-runtime-adapter/index.js';
22
17
  export { attachGatewayInvokeRejectionMetadata, buildInvokeRejectionMetadata, tryExtractRouterLikePayloadFromErrorChain, tryExtractOpenRouterMetadataFromErrorChain, tryExtractFallbackAttemptsFromErrorChain, pickRequestIdsFromRouterLike, resolveActivityCostCompletion, resolveCostCompletionForActivity, resolveCostCompletionWithAiTools, buildGatewayPricingRecord, mapAiCostResultToResolvedActivityCost, catalogPricingSucceeded, extractUsageExtrasFromRouterResponse, buildTraceUsageSummary, enrichTraceAttemptsWithBilling, pickEnhancedOpenRouterMetadata, hasNonZeroTokenUsage, MODEL_PROFILE_UNROUTABLE, ModelProfileUnroutableError, ModelProfileInputRejectedError, buildGatewayFallbackAttemptsFromTrace, formatFallbackExhaustionMessage, enrichGatewayFallbackExhaustedError, logResolvedModelRouting, mapGatewayFallbackAttemptsToRouter } from './gateway-utils.js';
23
18
  export { getGatewayOperationalMode, isProdGatewayMode, parseModelProviderSpec } from './gateway-mode.js';
24
19
  export { DEFAULT_ACTIVITY_FULL_RESPONSE_MAX_CHARS, GATEWAY_DEFAULT_FREQUENCY_PENALTY, GATEWAY_DEFAULT_PRESENCE_PENALTY, GATEWAY_DEFAULT_RETRY, GATEWAY_DEFAULT_TEMPERATURE, GATEWAY_DEFAULT_TOP_P, resolveRetryConfig } from './gateway-defaults.js';
@@ -39,7 +34,6 @@ export { GatewayLogCode, gatewayErrorCode, gatewayInfoCode, gatewayWarnCode, gat
39
34
  export { resolveInvokeModel, applyModelResolution, applyOpenRouterInvokeRouting, applyOpenRouterInvokePolicy, mapResolutionToRouterConfig, buildInvokeModelResolverOptions, buildModelResolverOptions, enrichModelResolutionError, getAiToolsClient, resetAiToolsClientForTests, resolveOpenRouterApiKey, resolvePreferOpenRouter, readPreferOpenRouterFromEnv, getAiToolsInvokeClient, createAiToolsInvokeClient, } from './ai-tools-client.js';
40
35
  // Re-export logging (@x12i/logxer)
41
36
  export { createLogxer, DebugLogAbstract, runWithLogContext, getStationRuntimeIdentity, mergeRuntimeIdentity, conditionEvidence, sourceEvidence, logReferenceEvidence, readAgentLoggingInstructions, resolveAgentLoggingInstructionsPath, applyPackageLogLevelsFromEnv, configurePackageLogLevels, mergePackageLogLevelsConfig, setPackageLogLevel, resolveStackLogLevelForPrefix, resolvePackageLogsLevel, parseLogxerPackageLevelsEnv, LOGXER_PACKAGE_LEVELS_ENV, LOGXER_PACKAGE_LOGS_DEFAULT_ENV } from '@x12i/logxer';
42
- export { ROUTER_LOG_ENV_PREFIX } from '@x12i/ai-providers-router';
43
37
  // Runtime observability surface (leaf package: no downstream runtime objects)
44
38
  export { runtimeObjects } from './runtime-objects.js';
45
39
  // Runtime observability surface (leaf package: no downstream runtime objects)
@@ -1,6 +1,4 @@
1
- export { registerOpenRouterRuntime, shouldUseOpenRouterRuntime, resolveOpenRouterRuntimeDefaults, } from './register-openrouter-runtime.js';
2
- export { createOpenRouterRuntimeProvider } from './create-openrouter-runtime-provider.js';
3
- export { createOpenRouterRuntimeAdapter } from './create-openrouter-runtime-adapter.js';
1
+ export { shouldUseOpenRouterRuntime, resolveOpenRouterRuntimeDefaults } from './should-use-openrouter-runtime.js';
4
2
  export { mapGatewayServerTools } from './map-server-tools.js';
5
3
  export { mapGatewayRequestToRuntimeRequest } from './map-gateway-request.js';
6
4
  export { buildPartialMetadataFromRuntimeResponse, buildRouterLikeEnvelopeFromRuntimeResponse, pickOpenRouterRuntimeMetadataSlice, extractOpenRouterRuntimeRouterMetadata, parseRuntimeResponseToAIResponse, } from './map-runtime-response.js';
@@ -1,6 +1,4 @@
1
- export { registerOpenRouterRuntime, shouldUseOpenRouterRuntime, resolveOpenRouterRuntimeDefaults, } from './register-openrouter-runtime.js';
2
- export { createOpenRouterRuntimeProvider } from './create-openrouter-runtime-provider.js';
3
- export { createOpenRouterRuntimeAdapter } from './create-openrouter-runtime-adapter.js';
1
+ export { shouldUseOpenRouterRuntime, resolveOpenRouterRuntimeDefaults } from './should-use-openrouter-runtime.js';
4
2
  export { mapGatewayServerTools } from './map-server-tools.js';
5
3
  export { mapGatewayRequestToRuntimeRequest } from './map-gateway-request.js';
6
4
  export { buildPartialMetadataFromRuntimeResponse, buildRouterLikeEnvelopeFromRuntimeResponse, pickOpenRouterRuntimeMetadataSlice, extractOpenRouterRuntimeRouterMetadata, parseRuntimeResponseToAIResponse, } from './map-runtime-response.js';
@@ -1,5 +1,4 @@
1
- import type { RuntimeRequest } from '@x12i/openrouter-runtime';
2
- export declare const OPENROUTER_RUNTIME_OPERATION = "openrouter-runtime.run";
1
+ import type { RuntimeRequest } from '@x12i/ai-router-runtime';
3
2
  export type GatewayRouterInvokeRequest = {
4
3
  messages?: Array<{
5
4
  role: string;
@@ -1,5 +1,4 @@
1
1
  import { mapGatewayServerTools } from './map-server-tools.js';
2
- export const OPENROUTER_RUNTIME_OPERATION = 'openrouter-runtime.run';
3
2
  function mapMessages(messages) {
4
3
  if (!messages?.length)
5
4
  return [];
@@ -1,5 +1,16 @@
1
- import { OpenRouterHttpError, RuntimeConfigError, type RuntimeResponse } from '@x12i/openrouter-runtime';
2
- export declare function throwMappedRuntimeConfigError(err: RuntimeConfigError): never;
3
- export declare function throwMappedOpenRouterHttpError(err: OpenRouterHttpError): never;
1
+ import type { RuntimeResponse } from '@x12i/ai-router-runtime';
2
+ type RuntimeConfigErrorLike = Error & {
3
+ code: string;
4
+ details?: unknown;
5
+ };
6
+ type OpenRouterHttpErrorLike = Error & {
7
+ status: number;
8
+ code: string;
9
+ retryable: boolean;
10
+ body?: unknown;
11
+ };
12
+ export declare function throwMappedRuntimeConfigError(err: RuntimeConfigErrorLike): never;
13
+ export declare function throwMappedOpenRouterHttpError(err: OpenRouterHttpErrorLike): never;
4
14
  export declare function throwMappedRuntimeResponseErrors(response: RuntimeResponse): void;
5
15
  export declare function mapRuntimeErrorToGatewayError(err: unknown): Error;
16
+ export {};