@x12i/ai-gateway 9.1.3 → 9.1.5
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 +3 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +1 -1
- package/dist/message-builder.js +2 -2
- package/dist/template-render-merge.d.ts +12 -1
- package/dist/template-render-merge.js +19 -0
- package/dist/types.d.ts +14 -3
- package/dist-cjs/index.cjs +2 -1
- package/dist-cjs/index.d.ts +3 -2
- package/dist-cjs/message-builder.cjs +1 -1
- package/dist-cjs/template-render-merge.cjs +20 -0
- package/dist-cjs/template-render-merge.d.ts +12 -1
- package/dist-cjs/types.d.ts +14 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -789,7 +789,9 @@ const response = await gateway.invoke({
|
|
|
789
789
|
|
|
790
790
|
- **`GatewayConfig.templateRendering`** — default `TemplateRenderOptions` for every `invoke()` render path (merged after packaged **`src/defaults/template-rendering.json`**, which ships with **`subPathSearch.enabled: false`**). Your gateway config overrides that JSON.
|
|
791
791
|
- **`templateRenderOptions` on the request** (`ChatRequest` / `AIInvokeRequest`) — merged on top of the gateway default for that call only (per-field override; `subPathSearch` fields merge with request winning).
|
|
792
|
-
-
|
|
792
|
+
- **Smart Input (optional shorthand on the request)** — top-level **`smartInput`** (`SmartInputConfig`) and **`smartInputRenderOptions`** (`SmartInputRenderOptions`) are merged into the same Rendrix options object **after** `GatewayConfig.templateRendering` and **before** `templateRenderOptions`. If you set the same field both as a shorthand and inside **`templateRenderOptions`**, the nested **`templateRenderOptions`** value wins. Templates use the **`{{smartInput}}`** insertion macro (see **`@x12i/rendrix`**). Types **`SmartInputConfig`** and **`SmartInputRenderOptions`** are re-exported from this package.
|
|
793
|
+
- For programmatic merges (tests or wrappers), use **`mergeGatewayAndRequestTemplateRenderOptions`** (same rules as `buildMessages`).
|
|
794
|
+
- Supported fields match the parser: **`templateId`**, **`subPathSearch`** (`enabled`, `roots`), **`silentMissingMustTokens`** (legacy Handlebars-style silence for missing MUST paths), **`smartInput`**, **`smartInputRenderOptions`**.
|
|
793
795
|
- **Sub-path root priority:** `subPathSearch.roots` is an **ordered** list. The parser tries roots in **array order**; **the first root that resolves the leaf path wins** (see ISSUE-005). There is no separate “priority” field—the order of `roots` *is* the priority. Omit `roots` when `enabled` is true to use **`@x12i/rendrix`** packaged defaults.
|
|
794
796
|
|
|
795
797
|
```typescript
|
package/dist/index.d.ts
CHANGED
|
@@ -16,9 +16,10 @@ export * from '@x12i/ai-providers-router';
|
|
|
16
16
|
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
|
-
export type { GatewayConfig, ProviderModelRef, ModelConfig, RetryConfig, ChatRequest, AIInvokeRequest, AIRequest, GatewayActionType, GatewayInvokeRejectionMetadata, GatewayTraceRequestIds, GatewayTraceMergedConfig, EnhancedLLMResponse, InstructionMetadata, ValidationRule, TemplateRenderOptions } from './types.js';
|
|
19
|
+
export type { GatewayConfig, ProviderModelRef, ModelConfig, RetryConfig, ChatRequest, AIInvokeRequest, AIRequest, GatewayActionType, GatewayInvokeRejectionMetadata, GatewayTraceRequestIds, GatewayTraceMergedConfig, EnhancedLLMResponse, InstructionMetadata, ValidationRule, TemplateRenderOptions, SmartInputConfig, SmartInputRenderOptions } from './types.js';
|
|
20
20
|
export { attachGatewayInvokeRejectionMetadata, buildInvokeRejectionMetadata, tryExtractRouterLikePayloadFromErrorChain, pickRequestIdsFromRouterLike } from './gateway-utils.js';
|
|
21
|
-
export { mergeTemplateRenderOptions } from './template-render-merge.js';
|
|
21
|
+
export { mergeGatewayAndRequestTemplateRenderOptions, mergeTemplateRenderOptions } from './template-render-merge.js';
|
|
22
|
+
export type { GatewayTemplateRenderRequestSlice } from './template-render-merge.js';
|
|
22
23
|
export type { UsageTier } from './types.js';
|
|
23
24
|
export { Activix } from '@x12i/activix';
|
|
24
25
|
export type { ActivixRunContext, FindByRunContextCriteria, GetJobActivitiesInput, GetJobActivitiesResult } from '@x12i/activix';
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@ export { AIGateway } from './gateway.js';
|
|
|
18
18
|
export { InstructionNotFoundError, InstructionBackendError } from './instruction-errors.js';
|
|
19
19
|
export { autoRegisterProviders } from './gateway-provider-auto-register.js';
|
|
20
20
|
export { attachGatewayInvokeRejectionMetadata, buildInvokeRejectionMetadata, tryExtractRouterLikePayloadFromErrorChain, pickRequestIdsFromRouterLike } from './gateway-utils.js';
|
|
21
|
-
export { mergeTemplateRenderOptions } from './template-render-merge.js';
|
|
21
|
+
export { mergeGatewayAndRequestTemplateRenderOptions, mergeTemplateRenderOptions } from './template-render-merge.js';
|
|
22
22
|
// Usage tracking: UsageTracker class methods are available but consumption calculation is disabled
|
|
23
23
|
// (x-models was previously used for RPM/TPM tracking but is no longer integrated)
|
|
24
24
|
// Re-export activity tracking primitives (Activix)
|
package/dist/message-builder.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Handles flex-md format exclusively
|
|
5
5
|
*/
|
|
6
6
|
import { parseTemplate } from './template-parser.js';
|
|
7
|
-
import {
|
|
7
|
+
import { mergeGatewayAndRequestTemplateRenderOptions } from './template-render-merge.js';
|
|
8
8
|
import { resolveNestedInstructionsBlock } from './gateway-instructions.js';
|
|
9
9
|
// Type guard
|
|
10
10
|
// AIRequest is distinguished by having primaryObjectType or objectTypes
|
|
@@ -379,7 +379,7 @@ export async function buildMessages(request, config, options = {}) {
|
|
|
379
379
|
const shortTermMemory = options.shortTermMemory;
|
|
380
380
|
const experienceMemory = options.experienceMemory;
|
|
381
381
|
const knowledgeMemory = options.knowledgeMemory;
|
|
382
|
-
const templateRenderOptions =
|
|
382
|
+
const templateRenderOptions = mergeGatewayAndRequestTemplateRenderOptions(config.templateRendering, request);
|
|
383
383
|
if (request.instructions) {
|
|
384
384
|
if (typeof request.instructions === 'string') {
|
|
385
385
|
logger.info('Using instructions as template text', {
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Merge @x12i/rendrix TemplateRenderOptions from gateway defaults and per-request overrides.
|
|
3
3
|
*/
|
|
4
|
-
import type { TemplateRenderOptions } from '@x12i/rendrix';
|
|
4
|
+
import type { SmartInputConfig, SmartInputRenderOptions, TemplateRenderOptions } from '@x12i/rendrix';
|
|
5
|
+
/** Request fields that participate in gateway + Rendrix template option merging. */
|
|
6
|
+
export type GatewayTemplateRenderRequestSlice = {
|
|
7
|
+
smartInput?: SmartInputConfig;
|
|
8
|
+
smartInputRenderOptions?: SmartInputRenderOptions;
|
|
9
|
+
templateRenderOptions?: TemplateRenderOptions;
|
|
10
|
+
};
|
|
5
11
|
/**
|
|
6
12
|
* Deep-merge template render options. Request/gateway overrides win per field.
|
|
7
13
|
* For `subPathSearch`, `roots` on the override replace the base list when present.
|
|
8
14
|
*/
|
|
9
15
|
export declare function mergeTemplateRenderOptions(base?: TemplateRenderOptions, override?: TemplateRenderOptions): TemplateRenderOptions | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Gateway default `templateRendering` + optional request shorthand (`smartInput`, `smartInputRenderOptions`) + `templateRenderOptions`.
|
|
18
|
+
* Same merge order as {@link buildMessages}.
|
|
19
|
+
*/
|
|
20
|
+
export declare function mergeGatewayAndRequestTemplateRenderOptions(gatewayTemplateRendering: TemplateRenderOptions | undefined, request: GatewayTemplateRenderRequestSlice): TemplateRenderOptions | undefined;
|
|
@@ -6,6 +6,10 @@ function hasMeaningfulOptions(o) {
|
|
|
6
6
|
return true;
|
|
7
7
|
if (o.silentMissingMustTokens !== undefined)
|
|
8
8
|
return true;
|
|
9
|
+
if (o.smartInput !== undefined)
|
|
10
|
+
return true;
|
|
11
|
+
if (o.smartInputRenderOptions !== undefined)
|
|
12
|
+
return true;
|
|
9
13
|
if (o.subPathSearch !== undefined) {
|
|
10
14
|
const s = o.subPathSearch;
|
|
11
15
|
return (s.enabled !== undefined ||
|
|
@@ -38,3 +42,18 @@ export function mergeTemplateRenderOptions(base, override) {
|
|
|
38
42
|
}
|
|
39
43
|
return hasMeaningfulOptions(merged) ? merged : undefined;
|
|
40
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Gateway default `templateRendering` + optional request shorthand (`smartInput`, `smartInputRenderOptions`) + `templateRenderOptions`.
|
|
47
|
+
* Same merge order as {@link buildMessages}.
|
|
48
|
+
*/
|
|
49
|
+
export function mergeGatewayAndRequestTemplateRenderOptions(gatewayTemplateRendering, request) {
|
|
50
|
+
const requestSmartTemplateOpts = request.smartInput !== undefined || request.smartInputRenderOptions !== undefined
|
|
51
|
+
? {
|
|
52
|
+
...(request.smartInput !== undefined ? { smartInput: request.smartInput } : {}),
|
|
53
|
+
...(request.smartInputRenderOptions !== undefined
|
|
54
|
+
? { smartInputRenderOptions: request.smartInputRenderOptions }
|
|
55
|
+
: {})
|
|
56
|
+
}
|
|
57
|
+
: undefined;
|
|
58
|
+
return mergeTemplateRenderOptions(mergeTemplateRenderOptions(gatewayTemplateRendering, requestSmartTemplateOpts), request.templateRenderOptions);
|
|
59
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ type AIProvider = string;
|
|
|
8
8
|
type AIModel = string;
|
|
9
9
|
export type UsageTier = string;
|
|
10
10
|
import type { Activix } from '@x12i/activix';
|
|
11
|
-
import type { TemplateRenderOptions } from '@x12i/rendrix';
|
|
11
|
+
import type { SmartInputConfig, SmartInputRenderOptions, TemplateRenderOptions } from '@x12i/rendrix';
|
|
12
12
|
import type { Logxer } from '@x12i/logxer';
|
|
13
13
|
/**
|
|
14
14
|
* Diagnostics options for opt-in authoritative tracing.
|
|
@@ -168,8 +168,8 @@ export type ActivityIdentity = {
|
|
|
168
168
|
*/
|
|
169
169
|
actionRef?: string;
|
|
170
170
|
};
|
|
171
|
-
/** Re-export parser template options for gateway consumers (MUST/optional protocol, subPathSearch, etc.). */
|
|
172
|
-
export type { TemplateRenderOptions } from '@x12i/rendrix';
|
|
171
|
+
/** Re-export parser template options for gateway consumers (MUST/optional protocol, subPathSearch, smartInput, etc.). */
|
|
172
|
+
export type { SmartInputConfig, SmartInputRenderOptions, TemplateRenderOptions } from '@x12i/rendrix';
|
|
173
173
|
type LLMRequest = Parameters<LLMProviderRouter['invoke']>[0];
|
|
174
174
|
type LLMResponse = Awaited<ReturnType<LLMProviderRouter['invoke']>>;
|
|
175
175
|
/**
|
|
@@ -635,6 +635,17 @@ interface BaseLLMRequest extends Omit<LLMRequest, 'messages' | 'input' | 'reques
|
|
|
635
635
|
* the full list or only set `enabled` and inherit `roots` from the gateway default merge.
|
|
636
636
|
*/
|
|
637
637
|
templateRenderOptions?: TemplateRenderOptions;
|
|
638
|
+
/**
|
|
639
|
+
* Smart Input paths for Rendrix `{{smartInput}}` (optional shorthand).
|
|
640
|
+
* Merged into render options after gateway `templateRendering` and before `templateRenderOptions`
|
|
641
|
+
* (nested `templateRenderOptions.smartInput` wins when both are set).
|
|
642
|
+
*/
|
|
643
|
+
smartInput?: SmartInputConfig;
|
|
644
|
+
/**
|
|
645
|
+
* Rendering controls for Smart Input markdown (optional shorthand).
|
|
646
|
+
* Merged the same way as `smartInput`; `templateRenderOptions.smartInputRenderOptions` wins when both are set.
|
|
647
|
+
*/
|
|
648
|
+
smartInputRenderOptions?: SmartInputRenderOptions;
|
|
638
649
|
/**
|
|
639
650
|
* Messages array - Optional, can be used instead of instructions/prompt
|
|
640
651
|
* If provided, will be appended as-is after built messages; instructions template text is still parsed for the system message when present
|
package/dist-cjs/index.cjs
CHANGED
|
@@ -21,7 +21,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
21
21
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
22
22
|
};
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.resetObjectTypesLibrary = exports.getObjectTypesLibrary = exports.initializeObjectTypesLibrary = exports.getObjectTypesForAgent = exports.getObjectType = exports.OBJECT_TYPES_LIBRARY = exports.assertValidAIRequest = exports.formatDiagnostic = exports.runValidationTests = 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.mergeTemplateRenderOptions = 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;
|
|
24
|
+
exports.resetObjectTypesLibrary = exports.getObjectTypesLibrary = exports.initializeObjectTypesLibrary = exports.getObjectTypesForAgent = exports.getObjectType = exports.OBJECT_TYPES_LIBRARY = exports.assertValidAIRequest = exports.formatDiagnostic = exports.runValidationTests = 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.mergeTemplateRenderOptions = exports.mergeGatewayAndRequestTemplateRenderOptions = 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
25
|
// Re-export router class and types (base functionality)
|
|
26
26
|
var ai_providers_router_1 = require("@x12i/ai-providers-router");
|
|
27
27
|
Object.defineProperty(exports, "LLMProviderRouter", { enumerable: true, get: function () { return ai_providers_router_1.LLMProviderRouter; } });
|
|
@@ -49,6 +49,7 @@ Object.defineProperty(exports, "buildInvokeRejectionMetadata", { enumerable: tru
|
|
|
49
49
|
Object.defineProperty(exports, "tryExtractRouterLikePayloadFromErrorChain", { enumerable: true, get: function () { return gateway_utils_js_1.tryExtractRouterLikePayloadFromErrorChain; } });
|
|
50
50
|
Object.defineProperty(exports, "pickRequestIdsFromRouterLike", { enumerable: true, get: function () { return gateway_utils_js_1.pickRequestIdsFromRouterLike; } });
|
|
51
51
|
var template_render_merge_js_1 = require("./template-render-merge.cjs");
|
|
52
|
+
Object.defineProperty(exports, "mergeGatewayAndRequestTemplateRenderOptions", { enumerable: true, get: function () { return template_render_merge_js_1.mergeGatewayAndRequestTemplateRenderOptions; } });
|
|
52
53
|
Object.defineProperty(exports, "mergeTemplateRenderOptions", { enumerable: true, get: function () { return template_render_merge_js_1.mergeTemplateRenderOptions; } });
|
|
53
54
|
// Usage tracking: UsageTracker class methods are available but consumption calculation is disabled
|
|
54
55
|
// (x-models was previously used for RPM/TPM tracking but is no longer integrated)
|
package/dist-cjs/index.d.ts
CHANGED
|
@@ -16,9 +16,10 @@ export * from '@x12i/ai-providers-router';
|
|
|
16
16
|
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
|
-
export type { GatewayConfig, ProviderModelRef, ModelConfig, RetryConfig, ChatRequest, AIInvokeRequest, AIRequest, GatewayActionType, GatewayInvokeRejectionMetadata, GatewayTraceRequestIds, GatewayTraceMergedConfig, EnhancedLLMResponse, InstructionMetadata, ValidationRule, TemplateRenderOptions } from './types.js';
|
|
19
|
+
export type { GatewayConfig, ProviderModelRef, ModelConfig, RetryConfig, ChatRequest, AIInvokeRequest, AIRequest, GatewayActionType, GatewayInvokeRejectionMetadata, GatewayTraceRequestIds, GatewayTraceMergedConfig, EnhancedLLMResponse, InstructionMetadata, ValidationRule, TemplateRenderOptions, SmartInputConfig, SmartInputRenderOptions } from './types.js';
|
|
20
20
|
export { attachGatewayInvokeRejectionMetadata, buildInvokeRejectionMetadata, tryExtractRouterLikePayloadFromErrorChain, pickRequestIdsFromRouterLike } from './gateway-utils.js';
|
|
21
|
-
export { mergeTemplateRenderOptions } from './template-render-merge.js';
|
|
21
|
+
export { mergeGatewayAndRequestTemplateRenderOptions, mergeTemplateRenderOptions } from './template-render-merge.js';
|
|
22
|
+
export type { GatewayTemplateRenderRequestSlice } from './template-render-merge.js';
|
|
22
23
|
export type { UsageTier } from './types.js';
|
|
23
24
|
export { Activix } from '@x12i/activix';
|
|
24
25
|
export type { ActivixRunContext, FindByRunContextCriteria, GetJobActivitiesInput, GetJobActivitiesResult } from '@x12i/activix';
|
|
@@ -415,7 +415,7 @@ async function buildMessages(request, config, options = {}) {
|
|
|
415
415
|
const shortTermMemory = options.shortTermMemory;
|
|
416
416
|
const experienceMemory = options.experienceMemory;
|
|
417
417
|
const knowledgeMemory = options.knowledgeMemory;
|
|
418
|
-
const templateRenderOptions = (0, template_render_merge_js_1.
|
|
418
|
+
const templateRenderOptions = (0, template_render_merge_js_1.mergeGatewayAndRequestTemplateRenderOptions)(config.templateRendering, request);
|
|
419
419
|
if (request.instructions) {
|
|
420
420
|
if (typeof request.instructions === 'string') {
|
|
421
421
|
logger.info('Using instructions as template text', {
|
|
@@ -4,11 +4,16 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.mergeTemplateRenderOptions = mergeTemplateRenderOptions;
|
|
7
|
+
exports.mergeGatewayAndRequestTemplateRenderOptions = mergeGatewayAndRequestTemplateRenderOptions;
|
|
7
8
|
function hasMeaningfulOptions(o) {
|
|
8
9
|
if (o.templateId !== undefined)
|
|
9
10
|
return true;
|
|
10
11
|
if (o.silentMissingMustTokens !== undefined)
|
|
11
12
|
return true;
|
|
13
|
+
if (o.smartInput !== undefined)
|
|
14
|
+
return true;
|
|
15
|
+
if (o.smartInputRenderOptions !== undefined)
|
|
16
|
+
return true;
|
|
12
17
|
if (o.subPathSearch !== undefined) {
|
|
13
18
|
const s = o.subPathSearch;
|
|
14
19
|
return (s.enabled !== undefined ||
|
|
@@ -41,3 +46,18 @@ function mergeTemplateRenderOptions(base, override) {
|
|
|
41
46
|
}
|
|
42
47
|
return hasMeaningfulOptions(merged) ? merged : undefined;
|
|
43
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Gateway default `templateRendering` + optional request shorthand (`smartInput`, `smartInputRenderOptions`) + `templateRenderOptions`.
|
|
51
|
+
* Same merge order as {@link buildMessages}.
|
|
52
|
+
*/
|
|
53
|
+
function mergeGatewayAndRequestTemplateRenderOptions(gatewayTemplateRendering, request) {
|
|
54
|
+
const requestSmartTemplateOpts = request.smartInput !== undefined || request.smartInputRenderOptions !== undefined
|
|
55
|
+
? {
|
|
56
|
+
...(request.smartInput !== undefined ? { smartInput: request.smartInput } : {}),
|
|
57
|
+
...(request.smartInputRenderOptions !== undefined
|
|
58
|
+
? { smartInputRenderOptions: request.smartInputRenderOptions }
|
|
59
|
+
: {})
|
|
60
|
+
}
|
|
61
|
+
: undefined;
|
|
62
|
+
return mergeTemplateRenderOptions(mergeTemplateRenderOptions(gatewayTemplateRendering, requestSmartTemplateOpts), request.templateRenderOptions);
|
|
63
|
+
}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Merge @x12i/rendrix TemplateRenderOptions from gateway defaults and per-request overrides.
|
|
3
3
|
*/
|
|
4
|
-
import type { TemplateRenderOptions } from '@x12i/rendrix';
|
|
4
|
+
import type { SmartInputConfig, SmartInputRenderOptions, TemplateRenderOptions } from '@x12i/rendrix';
|
|
5
|
+
/** Request fields that participate in gateway + Rendrix template option merging. */
|
|
6
|
+
export type GatewayTemplateRenderRequestSlice = {
|
|
7
|
+
smartInput?: SmartInputConfig;
|
|
8
|
+
smartInputRenderOptions?: SmartInputRenderOptions;
|
|
9
|
+
templateRenderOptions?: TemplateRenderOptions;
|
|
10
|
+
};
|
|
5
11
|
/**
|
|
6
12
|
* Deep-merge template render options. Request/gateway overrides win per field.
|
|
7
13
|
* For `subPathSearch`, `roots` on the override replace the base list when present.
|
|
8
14
|
*/
|
|
9
15
|
export declare function mergeTemplateRenderOptions(base?: TemplateRenderOptions, override?: TemplateRenderOptions): TemplateRenderOptions | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Gateway default `templateRendering` + optional request shorthand (`smartInput`, `smartInputRenderOptions`) + `templateRenderOptions`.
|
|
18
|
+
* Same merge order as {@link buildMessages}.
|
|
19
|
+
*/
|
|
20
|
+
export declare function mergeGatewayAndRequestTemplateRenderOptions(gatewayTemplateRendering: TemplateRenderOptions | undefined, request: GatewayTemplateRenderRequestSlice): TemplateRenderOptions | undefined;
|
package/dist-cjs/types.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ type AIProvider = string;
|
|
|
8
8
|
type AIModel = string;
|
|
9
9
|
export type UsageTier = string;
|
|
10
10
|
import type { Activix } from '@x12i/activix';
|
|
11
|
-
import type { TemplateRenderOptions } from '@x12i/rendrix';
|
|
11
|
+
import type { SmartInputConfig, SmartInputRenderOptions, TemplateRenderOptions } from '@x12i/rendrix';
|
|
12
12
|
import type { Logxer } from '@x12i/logxer';
|
|
13
13
|
/**
|
|
14
14
|
* Diagnostics options for opt-in authoritative tracing.
|
|
@@ -168,8 +168,8 @@ export type ActivityIdentity = {
|
|
|
168
168
|
*/
|
|
169
169
|
actionRef?: string;
|
|
170
170
|
};
|
|
171
|
-
/** Re-export parser template options for gateway consumers (MUST/optional protocol, subPathSearch, etc.). */
|
|
172
|
-
export type { TemplateRenderOptions } from '@x12i/rendrix';
|
|
171
|
+
/** Re-export parser template options for gateway consumers (MUST/optional protocol, subPathSearch, smartInput, etc.). */
|
|
172
|
+
export type { SmartInputConfig, SmartInputRenderOptions, TemplateRenderOptions } from '@x12i/rendrix';
|
|
173
173
|
type LLMRequest = Parameters<LLMProviderRouter['invoke']>[0];
|
|
174
174
|
type LLMResponse = Awaited<ReturnType<LLMProviderRouter['invoke']>>;
|
|
175
175
|
/**
|
|
@@ -635,6 +635,17 @@ interface BaseLLMRequest extends Omit<LLMRequest, 'messages' | 'input' | 'reques
|
|
|
635
635
|
* the full list or only set `enabled` and inherit `roots` from the gateway default merge.
|
|
636
636
|
*/
|
|
637
637
|
templateRenderOptions?: TemplateRenderOptions;
|
|
638
|
+
/**
|
|
639
|
+
* Smart Input paths for Rendrix `{{smartInput}}` (optional shorthand).
|
|
640
|
+
* Merged into render options after gateway `templateRendering` and before `templateRenderOptions`
|
|
641
|
+
* (nested `templateRenderOptions.smartInput` wins when both are set).
|
|
642
|
+
*/
|
|
643
|
+
smartInput?: SmartInputConfig;
|
|
644
|
+
/**
|
|
645
|
+
* Rendering controls for Smart Input markdown (optional shorthand).
|
|
646
|
+
* Merged the same way as `smartInput`; `templateRenderOptions.smartInputRenderOptions` wins when both are set.
|
|
647
|
+
*/
|
|
648
|
+
smartInputRenderOptions?: SmartInputRenderOptions;
|
|
638
649
|
/**
|
|
639
650
|
* Messages array - Optional, can be used instead of instructions/prompt
|
|
640
651
|
* If provided, will be appended as-is after built messages; instructions template text is still parsed for the system message when present
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x12i/ai-gateway",
|
|
3
|
-
"version": "9.1.
|
|
3
|
+
"version": "9.1.5",
|
|
4
4
|
"description": "AI Gateway - Unified interface for LLM provider routing and management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"license": "mit",
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"@x12i/ai-providers-router": "^4.7.7",
|
|
64
|
-
"@x12i/rendrix": "^4.
|
|
64
|
+
"@x12i/rendrix": "^4.3.0",
|
|
65
65
|
"@aws-sdk/s3-request-presigner": "^3.953.0",
|
|
66
66
|
"@x12i/env": "^4.0.1",
|
|
67
67
|
"@x12i/logxer": "^4.3.5",
|