@x12i/ai-gateway 9.6.3 → 9.6.7
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 +10 -3
- package/dist/ai-tools-client.d.ts +27 -3
- package/dist/ai-tools-client.js +54 -8
- package/dist/gateway-config.d.ts +2 -0
- package/dist/gateway-config.js +16 -10
- package/dist/gateway-log-meta.d.ts +5 -1
- package/dist/gateway-log-meta.js +19 -1
- package/dist/gateway-provider-auto-register.js +1 -1
- package/dist/gateway-utils.d.ts +2 -1
- package/dist/gateway-utils.js +9 -7
- package/dist/gateway.d.ts +2 -0
- package/dist/gateway.js +601 -578
- package/dist/index.d.ts +4 -3
- package/dist/index.js +3 -2
- package/dist/logger-factory.d.ts +2 -0
- package/dist/logger-factory.js +11 -14
- package/dist/openrouter-routing.d.ts +12 -0
- package/dist/openrouter-routing.js +27 -0
- package/dist/runtime-objects.d.ts +2 -19
- package/dist/types.d.ts +4 -1
- package/dist-cjs/ai-tools-client.cjs +54 -8
- package/dist-cjs/ai-tools-client.d.ts +27 -3
- package/dist-cjs/gateway-config.cjs +16 -10
- package/dist-cjs/gateway-config.d.ts +2 -0
- package/dist-cjs/gateway-log-meta.cjs +19 -1
- package/dist-cjs/gateway-log-meta.d.ts +5 -1
- package/dist-cjs/gateway-provider-auto-register.cjs +1 -1
- package/dist-cjs/gateway-utils.cjs +9 -7
- package/dist-cjs/gateway-utils.d.ts +2 -1
- package/dist-cjs/gateway.cjs +601 -578
- package/dist-cjs/gateway.d.ts +2 -0
- package/dist-cjs/index.cjs +3 -2
- package/dist-cjs/index.d.ts +4 -3
- package/dist-cjs/logger-factory.cjs +11 -14
- package/dist-cjs/logger-factory.d.ts +2 -0
- package/dist-cjs/openrouter-routing.cjs +27 -0
- package/dist-cjs/openrouter-routing.d.ts +12 -0
- package/dist-cjs/runtime-objects.d.ts +2 -19
- package/dist-cjs/types.d.ts +4 -1
- package/package.json +5 -5
package/dist-cjs/gateway.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export declare class AIGateway {
|
|
|
20
20
|
private defaultModelConfig;
|
|
21
21
|
private _autoRegisterDone;
|
|
22
22
|
private _aiToolsClient;
|
|
23
|
+
private readonly preferOpenRouter;
|
|
24
|
+
private readonly openRouterApiKey?;
|
|
23
25
|
constructor(config?: GatewayConfig, activityManager?: ActivityManager);
|
|
24
26
|
/**
|
|
25
27
|
* Invoke chat request (without structured output requirements)
|
package/dist-cjs/index.cjs
CHANGED
|
@@ -29,9 +29,10 @@ export { Activix } from '@x12i/activix';
|
|
|
29
29
|
export { normalizeToActivixCostShape } from '@x12i/activix';
|
|
30
30
|
export { ActivityManager, ensureGatewayRequestIdentity } from './activity-manager.js';
|
|
31
31
|
export { OptimixerManager } from './optimixer-manager.js';
|
|
32
|
-
export { activityIdentityToLogMeta, withActivityIdentity, gatewayLogDebug } from './gateway-log-meta.js';
|
|
32
|
+
export { activityIdentityToLogContext, activityIdentityToLogMeta, withActivityIdentity, withGatewayLogContext, gatewayLogDebug } from './gateway-log-meta.js';
|
|
33
|
+
export { createGatewayLogger, GATEWAY_LOG_ENV_PREFIX } from './logger-factory.js';
|
|
33
34
|
// Re-export logging (@x12i/logxer)
|
|
34
|
-
export { createLogxer, DebugLogAbstract } from '@x12i/logxer';
|
|
35
|
+
export { createLogxer, DebugLogAbstract, runWithLogContext, getStationRuntimeIdentity, mergeRuntimeIdentity } from '@x12i/logxer';
|
|
35
36
|
// Runtime observability surface (leaf package: no downstream runtime objects)
|
|
36
37
|
export { runtimeObjects } from './runtime-objects.js';
|
|
37
38
|
// Export rate limiter
|
package/dist-cjs/index.d.ts
CHANGED
|
@@ -34,9 +34,10 @@ export { normalizeToActivixCostShape } from '@x12i/activix';
|
|
|
34
34
|
export { ActivityManager, ensureGatewayRequestIdentity } from './activity-manager.js';
|
|
35
35
|
export { OptimixerManager } from './optimixer-manager.js';
|
|
36
36
|
export type { ActivityIdentity } from './types.js';
|
|
37
|
-
export { activityIdentityToLogMeta, withActivityIdentity, gatewayLogDebug } from './gateway-log-meta.js';
|
|
38
|
-
export {
|
|
39
|
-
export
|
|
37
|
+
export { activityIdentityToLogContext, activityIdentityToLogMeta, withActivityIdentity, withGatewayLogContext, gatewayLogDebug } from './gateway-log-meta.js';
|
|
38
|
+
export { createGatewayLogger, GATEWAY_LOG_ENV_PREFIX } from './logger-factory.js';
|
|
39
|
+
export { createLogxer, DebugLogAbstract, runWithLogContext, getStationRuntimeIdentity, mergeRuntimeIdentity } from '@x12i/logxer';
|
|
40
|
+
export type { Logxer, LogMeta, RuntimeIdentity, LogRuntimeContext, GetJobLogsInput, GetJobLogsResult, QueryableLogLine } from '@x12i/logxer';
|
|
40
41
|
export { runtimeObjects } from './runtime-objects.js';
|
|
41
42
|
export type { ActivixQueryableClient, LogxerQueryableClient, PackageRuntimeObjects, RuntimeObjects } from './runtime-objects.js';
|
|
42
43
|
export { GatewayRateLimiter } from './gateway-rate-limiter.js';
|
|
@@ -3,16 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Creates and configures logxer instances for the gateway
|
|
5
5
|
*/
|
|
6
|
-
import { createLogxer } from '@x12i/logxer';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
service,
|
|
13
|
-
env: process.env.NODE_ENV,
|
|
6
|
+
import { createLogxer, getStationRuntimeIdentity, mergeRuntimeIdentity } from '@x12i/logxer';
|
|
7
|
+
/** Stable ERC 2.0 env prefix — controls `AI_GATEWAY_LOGS_LEVEL`, etc. */
|
|
8
|
+
export const GATEWAY_LOG_ENV_PREFIX = 'AI_GATEWAY';
|
|
9
|
+
function resolveGatewayRuntimeIdentity(packageName) {
|
|
10
|
+
return mergeRuntimeIdentity(getStationRuntimeIdentity(), {
|
|
11
|
+
service: process.env.AI_GATEWAY_LOG_SERVICE ?? packageName ?? GATEWAY_LOG_ENV_PREFIX,
|
|
14
12
|
version: process.env.npm_package_version
|
|
15
|
-
};
|
|
13
|
+
});
|
|
16
14
|
}
|
|
17
15
|
/**
|
|
18
16
|
* Creates a logger instance based on configuration
|
|
@@ -28,13 +26,12 @@ export function createGatewayLogger(config) {
|
|
|
28
26
|
return createNoOpLogger();
|
|
29
27
|
}
|
|
30
28
|
return createLogxer({
|
|
31
|
-
packageName: config.packageName ||
|
|
32
|
-
envPrefix:
|
|
29
|
+
packageName: config.packageName || GATEWAY_LOG_ENV_PREFIX,
|
|
30
|
+
envPrefix: GATEWAY_LOG_ENV_PREFIX,
|
|
33
31
|
debugNamespace: 'ai-gateway'
|
|
34
32
|
}, {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
runtimeIdentity: resolveDefaultRuntimeIdentity(config.packageName)
|
|
33
|
+
// Level/format/sinks: ERC 2.0 env discovery (`AI_GATEWAY_LOGS_LEVEL`, host-level format, …).
|
|
34
|
+
runtimeIdentity: resolveGatewayRuntimeIdentity(config.packageName)
|
|
38
35
|
});
|
|
39
36
|
}
|
|
40
37
|
function createNoOpLogger() {
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Creates and configures logxer instances for the gateway
|
|
5
5
|
*/
|
|
6
6
|
import { type Logxer } from '@x12i/logxer';
|
|
7
|
+
/** Stable ERC 2.0 env prefix — controls `AI_GATEWAY_LOGS_LEVEL`, etc. */
|
|
8
|
+
export declare const GATEWAY_LOG_ENV_PREFIX = "AI_GATEWAY";
|
|
7
9
|
/**
|
|
8
10
|
* Creates a logger instance based on configuration
|
|
9
11
|
*
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenRouter API key and gateway-level "prefer OpenRouter" flag.
|
|
3
|
+
* Provider/model routing (openrouter vs vendor) is resolved by @x12i/ai-tools in mergeConfig.
|
|
4
|
+
*/
|
|
5
|
+
export function resolveOpenRouterApiKey(config = {}) {
|
|
6
|
+
const explicit = config.openrouter?.apiKey;
|
|
7
|
+
if (typeof explicit === 'string' && explicit.trim() && !explicit.startsWith('ENV.')) {
|
|
8
|
+
return explicit.trim();
|
|
9
|
+
}
|
|
10
|
+
const env = process.env.OPENROUTER_API_KEY?.trim();
|
|
11
|
+
return env || undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* When true, pass `routeViaOpenRouter: true` into ai-tools resolveModel (prefer OpenRouter even with direct keys).
|
|
15
|
+
* Default: true when OPENROUTER_API_KEY is set. `USE_OPENROUTER=false` turns this off; ai-tools still falls back
|
|
16
|
+
* when a vendor API key is missing.
|
|
17
|
+
*/
|
|
18
|
+
export function resolvePreferOpenRouter(config = {}) {
|
|
19
|
+
if (config.openRouter?.enabled === true)
|
|
20
|
+
return true;
|
|
21
|
+
if (config.openRouter?.enabled === false)
|
|
22
|
+
return false;
|
|
23
|
+
const env = process.env.USE_OPENROUTER;
|
|
24
|
+
if (env === 'false' || env === '0')
|
|
25
|
+
return false;
|
|
26
|
+
return !!resolveOpenRouterApiKey(config);
|
|
27
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenRouter API key and gateway-level "prefer OpenRouter" flag.
|
|
3
|
+
* Provider/model routing (openrouter vs vendor) is resolved by @x12i/ai-tools in mergeConfig.
|
|
4
|
+
*/
|
|
5
|
+
import type { GatewayConfig } from './types.js';
|
|
6
|
+
export declare function resolveOpenRouterApiKey(config?: GatewayConfig): string | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* When true, pass `routeViaOpenRouter: true` into ai-tools resolveModel (prefer OpenRouter even with direct keys).
|
|
9
|
+
* Default: true when OPENROUTER_API_KEY is set. `USE_OPENROUTER=false` turns this off; ai-tools still falls back
|
|
10
|
+
* when a vendor API key is missing.
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolvePreferOpenRouter(config?: GatewayConfig): boolean;
|
|
@@ -1,25 +1,8 @@
|
|
|
1
1
|
import type { Logxer } from '@x12i/logxer';
|
|
2
2
|
import type { Activix, ActivixQueryableClient } from '@x12i/activix';
|
|
3
3
|
export type { ActivixQueryableClient } from '@x12i/activix';
|
|
4
|
-
export type
|
|
5
|
-
|
|
6
|
-
jobId: string;
|
|
7
|
-
graphId?: string;
|
|
8
|
-
nodeId?: string;
|
|
9
|
-
limit?: number;
|
|
10
|
-
}): Promise<{
|
|
11
|
-
jobId: string;
|
|
12
|
-
lines: Array<{
|
|
13
|
-
ts?: number | string;
|
|
14
|
-
level?: 'debug' | 'info' | 'warn' | 'error';
|
|
15
|
-
scope?: string;
|
|
16
|
-
packageName?: string;
|
|
17
|
-
nodeId?: string;
|
|
18
|
-
message: string;
|
|
19
|
-
data?: unknown;
|
|
20
|
-
}>;
|
|
21
|
-
}>;
|
|
22
|
-
};
|
|
4
|
+
export type { GetJobLogsInput, GetJobLogsResult } from '@x12i/logxer';
|
|
5
|
+
export type LogxerQueryableClient = Pick<Logxer, 'getJobLogs'>;
|
|
23
6
|
export type PackageRuntimeObjects = {
|
|
24
7
|
name: string;
|
|
25
8
|
activixClient?: ActivixQueryableClient;
|
package/dist-cjs/types.d.ts
CHANGED
|
@@ -375,10 +375,13 @@ export interface GatewayConfig extends Omit<RouterConfig, 'defaultEngine' | 'log
|
|
|
375
375
|
apiKey: string;
|
|
376
376
|
};
|
|
377
377
|
/**
|
|
378
|
-
*
|
|
378
|
+
* OpenRouter preference (not a hard off-switch when {@link openrouter}.apiKey or OPENROUTER_API_KEY is set).
|
|
379
|
+
* - `enabled: true` or omitted with OPENROUTER_API_KEY: prefer OpenRouter even when direct provider keys exist.
|
|
380
|
+
* - `enabled: false` or USE_OPENROUTER=false: use direct providers when their API keys exist; OpenRouter still used as fallback when a requested provider has no key.
|
|
379
381
|
*/
|
|
380
382
|
openRouter?: {
|
|
381
383
|
enabled?: boolean;
|
|
384
|
+
prefer?: boolean;
|
|
382
385
|
};
|
|
383
386
|
/**
|
|
384
387
|
* Operational mode override (`process.env.mode` / `MODE` when omitted).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x12i/ai-gateway",
|
|
3
|
-
"version": "9.6.
|
|
3
|
+
"version": "9.6.7",
|
|
4
4
|
"description": "AI Gateway - Unified interface for LLM provider routing and management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
"author": "x12i",
|
|
42
42
|
"license": "mit",
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@x12i/activix": "^8.3.
|
|
45
|
-
"@x12i/ai-providers-router": "^4.8.
|
|
46
|
-
"@x12i/ai-tools": "^2.
|
|
44
|
+
"@x12i/activix": "^8.3.1",
|
|
45
|
+
"@x12i/ai-providers-router": "^4.8.6",
|
|
46
|
+
"@x12i/ai-tools": "^2.1.2",
|
|
47
47
|
"@x12i/flex-md": "^4.8.0",
|
|
48
48
|
"@x12i/logxer": "^4.4.0",
|
|
49
|
-
"@x12i/optimixer": "^2.4.
|
|
49
|
+
"@x12i/optimixer": "^2.4.1",
|
|
50
50
|
"@x12i/rendrix": "^4.3.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|