@x12i/ai-profiles 4.5.0 → 5.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.
- package/README.md +23 -8
- package/dist/browser.js +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/data/reasoning-coverage.json +499 -0
- package/dist/data/reasoning-directives.json +7562 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/hostIntents.d.ts +8 -0
- package/dist/hostIntents.d.ts.map +1 -0
- package/dist/hostIntents.js +41 -0
- package/dist/hostIntents.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/isConcreteModelId.js +2 -2
- package/dist/isConcreteModelId.js.map +1 -1
- package/dist/loader/loadBundledModelsCatalog.js +1 -1
- package/dist/loader/loadBundledModelsCatalog.js.map +1 -1
- package/dist/reasoning/mergeReasoningBody.d.ts +7 -0
- package/dist/reasoning/mergeReasoningBody.d.ts.map +1 -0
- package/dist/reasoning/mergeReasoningBody.js +50 -0
- package/dist/reasoning/mergeReasoningBody.js.map +1 -0
- package/dist/reasoning/resolveReasoningDocument.d.ts +4 -0
- package/dist/reasoning/resolveReasoningDocument.d.ts.map +1 -0
- package/dist/reasoning/resolveReasoningDocument.js +153 -0
- package/dist/reasoning/resolveReasoningDocument.js.map +1 -0
- package/dist/reasoning/types.d.ts +75 -22
- package/dist/reasoning/types.d.ts.map +1 -1
- package/dist/reasoning/types.js +19 -21
- package/dist/reasoning/types.js.map +1 -1
- package/dist/reasoning/validateReasoningDirectives.d.ts +9 -0
- package/dist/reasoning/validateReasoningDirectives.d.ts.map +1 -0
- package/dist/reasoning/validateReasoningDirectives.js +324 -0
- package/dist/reasoning/validateReasoningDirectives.js.map +1 -0
- package/dist/resolveAIProfile.d.ts.map +1 -1
- package/dist/resolveAIProfile.js +2 -1
- package/dist/resolveAIProfile.js.map +1 -1
- package/dist/resolveBundledInput.d.ts.map +1 -1
- package/dist/resolveBundledInput.js +2 -1
- package/dist/resolveBundledInput.js.map +1 -1
- package/dist/resolveInput.d.ts.map +1 -1
- package/dist/resolveInput.js +2 -1
- package/dist/resolveInput.js.map +1 -1
- package/dist/resolveProfileInputCore.d.ts.map +1 -1
- package/dist/resolveProfileInputCore.js +2 -1
- package/dist/resolveProfileInputCore.js.map +1 -1
- package/dist/resolveReasoning.d.ts +5 -5
- package/dist/resolveReasoning.d.ts.map +1 -1
- package/dist/resolveReasoning.js +7 -75
- package/dist/resolveReasoning.js.map +1 -1
- package/dist/validateProfileCatalogLinkage.js +1 -1
- package/dist/validateProfileCatalogLinkage.js.map +1 -1
- package/package.json +3 -1
- package/dist/reasoning/bedrockDirective.d.ts +0 -18
- package/dist/reasoning/bedrockDirective.d.ts.map +0 -1
- package/dist/reasoning/bedrockDirective.js +0 -131
- package/dist/reasoning/bedrockDirective.js.map +0 -1
- package/dist/reasoning/openRouterDirective.d.ts +0 -18
- package/dist/reasoning/openRouterDirective.d.ts.map +0 -1
- package/dist/reasoning/openRouterDirective.js +0 -136
- package/dist/reasoning/openRouterDirective.js.map +0 -1
package/dist/resolveReasoning.js
CHANGED
|
@@ -1,81 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import reasoningDirectives from "./data/reasoning-directives.json" with { type: "json" };
|
|
2
2
|
import { loadBundledModelsCatalog } from "./loader/loadBundledModelsCatalog.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import { buildOpenRouterReasoningDirective, OPENROUTER_REASONING_RESPONSE, OPENROUTER_REASONING_USAGE, } from "./reasoning/openRouterDirective.js";
|
|
7
|
-
import { unsupportedReasoningDirective, } from "./reasoning/types.js";
|
|
8
|
-
export { toAbstractEffort } from "./reasoning/types.js";
|
|
3
|
+
import { resolveReasoningDocument } from "./reasoning/resolveReasoningDocument.js";
|
|
4
|
+
export { mergeReasoningBody } from "./reasoning/mergeReasoningBody.js";
|
|
5
|
+
const document = reasoningDirectives;
|
|
9
6
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*/
|
|
13
|
-
const REASONING_MODEL_SWITCH = {
|
|
14
|
-
"deepseek/deepseek-chat": "deepseek/deepseek-reasoner",
|
|
15
|
-
};
|
|
16
|
-
function findCatalogEntry(model) {
|
|
17
|
-
const catalog = loadBundledModelsCatalog();
|
|
18
|
-
const match = resolveModelFromInput(model, catalog);
|
|
19
|
-
if (!match?.entry)
|
|
20
|
-
return undefined;
|
|
21
|
-
if (match.confidence !== "exact" && match.confidence !== "high")
|
|
22
|
-
return undefined;
|
|
23
|
-
return match.entry;
|
|
24
|
-
}
|
|
25
|
-
function directiveForEntry(entry, effort) {
|
|
26
|
-
const reasoning = entry.openrouter.reasoning;
|
|
27
|
-
if (!reasoning)
|
|
28
|
-
return undefined;
|
|
29
|
-
return buildOpenRouterReasoningDirective({
|
|
30
|
-
effort,
|
|
31
|
-
reasoning,
|
|
32
|
-
maxCompletionTokens: entry.maxCompletionTokens ?? entry.openrouter.maxCompletionTokens,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
function siblingModelId(entry) {
|
|
36
|
-
const slug = normalizeKey(entry.openrouter.modelId);
|
|
37
|
-
return REASONING_MODEL_SWITCH[slug];
|
|
38
|
-
}
|
|
39
|
-
function resolveOpenRouter(model, effort) {
|
|
40
|
-
const wire = normalizeGatewayWireId(model);
|
|
41
|
-
const lookup = wire?.modelId ?? model.trim();
|
|
42
|
-
const entry = findCatalogEntry(lookup);
|
|
43
|
-
if (!entry)
|
|
44
|
-
return unsupportedReasoningDirective();
|
|
45
|
-
const direct = directiveForEntry(entry, effort);
|
|
46
|
-
if (direct)
|
|
47
|
-
return direct;
|
|
48
|
-
if (effort === "none")
|
|
49
|
-
return unsupportedReasoningDirective();
|
|
50
|
-
const siblingId = siblingModelId(entry);
|
|
51
|
-
if (!siblingId)
|
|
52
|
-
return unsupportedReasoningDirective();
|
|
53
|
-
const sibling = findCatalogEntry(siblingId);
|
|
54
|
-
if (!sibling)
|
|
55
|
-
return unsupportedReasoningDirective();
|
|
56
|
-
const siblingDirective = directiveForEntry(sibling, effort) ?? {
|
|
57
|
-
supported: true,
|
|
58
|
-
body: {},
|
|
59
|
-
response: OPENROUTER_REASONING_RESPONSE,
|
|
60
|
-
usage: OPENROUTER_REASONING_USAGE,
|
|
61
|
-
};
|
|
62
|
-
return {
|
|
63
|
-
...siblingDirective,
|
|
64
|
-
supported: true,
|
|
65
|
-
model: sibling.openrouter.modelId,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* One lookup. The runtime merges `body` and does not interpret vendors.
|
|
70
|
-
* Unknown transport, unknown model, or no reasoning control returns `supported: false`.
|
|
7
|
+
* Translate one provider-neutral reasoning effort into a directive for the
|
|
8
|
+
* selected target and model. Reads bundled data only.
|
|
71
9
|
*/
|
|
72
10
|
export function resolveReasoning(input) {
|
|
73
|
-
|
|
74
|
-
return buildBedrockReasoningDirective(input.model, input.effort);
|
|
75
|
-
}
|
|
76
|
-
if (input.transport === "openrouter") {
|
|
77
|
-
return resolveOpenRouter(input.model, input.effort);
|
|
78
|
-
}
|
|
79
|
-
return unsupportedReasoningDirective();
|
|
11
|
+
return resolveReasoningDocument(input, document, loadBundledModelsCatalog());
|
|
80
12
|
}
|
|
81
13
|
//# sourceMappingURL=resolveReasoning.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveReasoning.js","sourceRoot":"","sources":["../src/resolveReasoning.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"resolveReasoning.js","sourceRoot":"","sources":["../src/resolveReasoning.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,kCAAkC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAmBnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,MAAM,QAAQ,GAAG,mBAAkD,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,OAAO,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import bundledModelsCatalog from "
|
|
1
|
+
import bundledModelsCatalog from "@x12i/ai-catalogs/data/models-catalog.json" with { type: "json" };
|
|
2
2
|
import bundledModelsProfiles from "./data/models-profiles.json" with { type: "json" };
|
|
3
3
|
import { buildModelsRegistry } from "./buildModelsRegistry.js";
|
|
4
4
|
import { findCatalogModelEntry } from "./catalogEnrichment.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateProfileCatalogLinkage.js","sourceRoot":"","sources":["../src/validateProfileCatalogLinkage.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,
|
|
1
|
+
{"version":3,"file":"validateProfileCatalogLinkage.js","sourceRoot":"","sources":["../src/validateProfileCatalogLinkage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x12i/ai-profiles",
|
|
3
|
-
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Resolve AI profile names into concrete model choices with bundled defaults and remote JSON refresh",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"catalog:sync-or": "npm run build && node scripts/sync-models-registry.mjs fetch-or && node scripts/extend-profiles-from-catalog.mjs && npm run registry:finish",
|
|
35
35
|
"catalog:build": "node scripts/sync-models-registry.mjs build",
|
|
36
36
|
"catalog:verify": "node scripts/sync-models-registry.mjs verify",
|
|
37
|
+
"reasoning:build": "node scripts/build-reasoning-directives.mjs",
|
|
37
38
|
"catalog:sync": "node scripts/sync-models-registry.mjs sync",
|
|
38
39
|
"verify:catalog-coverage": "npm run build && node scripts/verify-catalog-coverage.mjs",
|
|
39
40
|
"stats": "npm run build && node scripts/print-registry-stats.mjs",
|
|
@@ -84,6 +85,7 @@
|
|
|
84
85
|
"vitest": "^3.1.4"
|
|
85
86
|
},
|
|
86
87
|
"dependencies": {
|
|
88
|
+
"@x12i/ai-catalogs": "1.0.0",
|
|
87
89
|
"@x12i/env": "^4.0.1",
|
|
88
90
|
"@x12i/logxer": "^5.1.0"
|
|
89
91
|
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { AbstractEffort, ReasoningDirective } from "./types.js";
|
|
2
|
-
export declare const BEDROCK_REASONING_RESPONSE: ReasoningDirective["response"];
|
|
3
|
-
interface ClaudeVersion {
|
|
4
|
-
major: number;
|
|
5
|
-
minor: number;
|
|
6
|
-
}
|
|
7
|
-
export interface ParsedBedrockModel {
|
|
8
|
-
provider: string;
|
|
9
|
-
slug: string;
|
|
10
|
-
}
|
|
11
|
-
/** Bedrock model id or inference-profile id → provider prefix and model slug. */
|
|
12
|
-
export declare function parseBedrockModelId(model: string): ParsedBedrockModel;
|
|
13
|
-
export declare function parseClaudeVersion(slug: string): ClaudeVersion | null;
|
|
14
|
-
type ClaudeThinking = "adaptive" | "budget" | "unsupported";
|
|
15
|
-
export declare function claudeThinkingMode(slug: string): ClaudeThinking;
|
|
16
|
-
export declare function buildBedrockReasoningDirective(model: string, effort: AbstractEffort): ReasoningDirective;
|
|
17
|
-
export {};
|
|
18
|
-
//# sourceMappingURL=bedrockDirective.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bedrockDirective.d.ts","sourceRoot":"","sources":["../../src/reasoning/bedrockDirective.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErE,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,UAAU,CAOrE,CAAC;AAgBF,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAKD,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAwBrE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAiBrE;AAED,KAAK,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE5D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAU/D;AAmBD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,GACrB,kBAAkB,CAiDpB"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
export const BEDROCK_REASONING_RESPONSE = {
|
|
2
|
-
reasoningTextPaths: [
|
|
3
|
-
"output.message.content[].reasoningContent.reasoningText.text",
|
|
4
|
-
],
|
|
5
|
-
streamReasoningKeys: ["reasoningContent"],
|
|
6
|
-
stripFromHistoryPaths: [],
|
|
7
|
-
stripThinkTags: false,
|
|
8
|
-
};
|
|
9
|
-
const BUDGET_TOKENS = {
|
|
10
|
-
low: 2048,
|
|
11
|
-
medium: 8192,
|
|
12
|
-
high: 16384,
|
|
13
|
-
max: 32768,
|
|
14
|
-
};
|
|
15
|
-
const NOVA_EFFORT = {
|
|
16
|
-
low: "low",
|
|
17
|
-
medium: "medium",
|
|
18
|
-
high: "high",
|
|
19
|
-
max: "high",
|
|
20
|
-
};
|
|
21
|
-
const INFERENCE_PROFILE_PREFIX = /^(?:us|eu|apac|ap|au|ca|sa|global)\./i;
|
|
22
|
-
/** Bedrock model id or inference-profile id → provider prefix and model slug. */
|
|
23
|
-
export function parseBedrockModelId(model) {
|
|
24
|
-
let id = model.trim();
|
|
25
|
-
if (id.includes("/")) {
|
|
26
|
-
const slash = id.indexOf("/");
|
|
27
|
-
return {
|
|
28
|
-
provider: id.slice(0, slash).toLowerCase(),
|
|
29
|
-
slug: id.slice(slash + 1).toLowerCase(),
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
id = id.replace(INFERENCE_PROFILE_PREFIX, "");
|
|
33
|
-
const colon = id.indexOf(":");
|
|
34
|
-
if (colon > 0)
|
|
35
|
-
id = id.slice(0, colon);
|
|
36
|
-
id = id.replace(/-v\d+$/i, "");
|
|
37
|
-
const dot = id.indexOf(".");
|
|
38
|
-
if (dot <= 0) {
|
|
39
|
-
return { provider: "", slug: id.toLowerCase() };
|
|
40
|
-
}
|
|
41
|
-
return {
|
|
42
|
-
provider: id.slice(0, dot).toLowerCase(),
|
|
43
|
-
slug: id.slice(dot + 1).toLowerCase(),
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
export function parseClaudeVersion(slug) {
|
|
47
|
-
const named = slug.match(/claude-(?:opus|sonnet|haiku|fable|mythos)-(\d+)(?:[.-](\d+))?/);
|
|
48
|
-
if (named) {
|
|
49
|
-
return {
|
|
50
|
-
major: Number(named[1]),
|
|
51
|
-
minor: named[2] ? Number(named[2]) : 0,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
const dated = slug.match(/claude-(\d+)[.-](\d+)-(?:opus|sonnet|haiku)/);
|
|
55
|
-
if (dated) {
|
|
56
|
-
return { major: Number(dated[1]), minor: Number(dated[2]) };
|
|
57
|
-
}
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
export function claudeThinkingMode(slug) {
|
|
61
|
-
const version = parseClaudeVersion(slug);
|
|
62
|
-
if (!version)
|
|
63
|
-
return "unsupported";
|
|
64
|
-
if (version.major > 4 || (version.major === 4 && version.minor >= 6)) {
|
|
65
|
-
return "adaptive";
|
|
66
|
-
}
|
|
67
|
-
if (version.major === 4 || (version.major === 3 && version.minor >= 7)) {
|
|
68
|
-
return "budget";
|
|
69
|
-
}
|
|
70
|
-
return "unsupported";
|
|
71
|
-
}
|
|
72
|
-
function isNovaReasoningSlug(slug) {
|
|
73
|
-
if (!slug.startsWith("nova"))
|
|
74
|
-
return false;
|
|
75
|
-
return !/canvas|reel|sonic|embed|image|speech/.test(slug);
|
|
76
|
-
}
|
|
77
|
-
function supported(body) {
|
|
78
|
-
return {
|
|
79
|
-
supported: true,
|
|
80
|
-
body,
|
|
81
|
-
response: BEDROCK_REASONING_RESPONSE,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
function bedrockFields(fields) {
|
|
85
|
-
return { additionalModelRequestFields: fields };
|
|
86
|
-
}
|
|
87
|
-
export function buildBedrockReasoningDirective(model, effort) {
|
|
88
|
-
const parsed = parseBedrockModelId(model);
|
|
89
|
-
if (parsed.provider === "anthropic") {
|
|
90
|
-
const mode = claudeThinkingMode(parsed.slug);
|
|
91
|
-
if (mode === "adaptive") {
|
|
92
|
-
if (effort === "none")
|
|
93
|
-
return supported({});
|
|
94
|
-
return supported(bedrockFields({
|
|
95
|
-
thinking: { type: "adaptive" },
|
|
96
|
-
output_config: { effort },
|
|
97
|
-
}));
|
|
98
|
-
}
|
|
99
|
-
if (mode === "budget") {
|
|
100
|
-
if (effort === "none")
|
|
101
|
-
return supported({});
|
|
102
|
-
return supported(bedrockFields({
|
|
103
|
-
thinking: {
|
|
104
|
-
type: "enabled",
|
|
105
|
-
budget_tokens: BUDGET_TOKENS[effort],
|
|
106
|
-
},
|
|
107
|
-
}));
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (parsed.provider === "amazon" && isNovaReasoningSlug(parsed.slug)) {
|
|
111
|
-
if (effort === "none")
|
|
112
|
-
return supported({});
|
|
113
|
-
return supported(bedrockFields({
|
|
114
|
-
reasoningConfig: {
|
|
115
|
-
type: "enabled",
|
|
116
|
-
maxReasoningEffort: NOVA_EFFORT[effort],
|
|
117
|
-
},
|
|
118
|
-
}));
|
|
119
|
-
}
|
|
120
|
-
return {
|
|
121
|
-
supported: false,
|
|
122
|
-
body: {},
|
|
123
|
-
response: {
|
|
124
|
-
reasoningTextPaths: [],
|
|
125
|
-
streamReasoningKeys: [],
|
|
126
|
-
stripFromHistoryPaths: [],
|
|
127
|
-
stripThinkTags: false,
|
|
128
|
-
},
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=bedrockDirective.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bedrockDirective.js","sourceRoot":"","sources":["../../src/reasoning/bedrockDirective.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { AbstractEffort, ReasoningDirective } from "./types.js";
|
|
2
|
-
import type { CatalogOpenRouterReasoning, OpenRouterReasoningEffort } from "../types.js";
|
|
3
|
-
export declare const OPENROUTER_REASONING_RESPONSE: ReasoningDirective["response"];
|
|
4
|
-
export declare const OPENROUTER_REASONING_USAGE: NonNullable<ReasoningDirective["usage"]>;
|
|
5
|
-
/**
|
|
6
|
-
* Pick a gateway effort the model accepts.
|
|
7
|
-
* Returns undefined when the request must not send an effort (`none` on a
|
|
8
|
-
* mandatory model, or `none` when the allowlist rejects it).
|
|
9
|
-
*/
|
|
10
|
-
export declare function pickOpenRouterEffort(effort: AbstractEffort, allowed: readonly OpenRouterReasoningEffort[] | null, mandatory: boolean): OpenRouterReasoningEffort | undefined;
|
|
11
|
-
/** Token budget for models that accept `reasoning.max_tokens` and not effort. */
|
|
12
|
-
export declare function openRouterReasoningMaxTokens(effort: Exclude<AbstractEffort, "none">, maxCompletionTokens?: number): number;
|
|
13
|
-
export declare function buildOpenRouterReasoningDirective(input: {
|
|
14
|
-
effort: AbstractEffort;
|
|
15
|
-
reasoning: CatalogOpenRouterReasoning;
|
|
16
|
-
maxCompletionTokens?: number;
|
|
17
|
-
}): ReasoningDirective;
|
|
18
|
-
//# sourceMappingURL=openRouterDirective.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openRouterDirective.d.ts","sourceRoot":"","sources":["../../src/reasoning/openRouterDirective.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AA8BzF,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAAC,UAAU,CAQxE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAE/E,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,SAAS,yBAAyB,EAAE,GAAG,IAAI,EACpD,SAAS,EAAE,OAAO,GACjB,yBAAyB,GAAG,SAAS,CAoBvC;AA8BD,iFAAiF;AACjF,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EACvC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,MAAM,CAOR;AAaD,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,0BAA0B,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,GAAG,kBAAkB,CAgCrB"}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
const EFFORT_RANK = {
|
|
2
|
-
none: 0,
|
|
3
|
-
minimal: 1,
|
|
4
|
-
low: 2,
|
|
5
|
-
medium: 3,
|
|
6
|
-
high: 4,
|
|
7
|
-
xhigh: 5,
|
|
8
|
-
max: 6,
|
|
9
|
-
};
|
|
10
|
-
const ABSTRACT_RANK = {
|
|
11
|
-
none: 0,
|
|
12
|
-
low: 2,
|
|
13
|
-
medium: 3,
|
|
14
|
-
high: 4,
|
|
15
|
-
max: 6,
|
|
16
|
-
};
|
|
17
|
-
/** OpenRouter published share of the completion cap for each abstract effort. */
|
|
18
|
-
const MAX_TOKEN_RATIO = {
|
|
19
|
-
low: 0.2,
|
|
20
|
-
medium: 0.5,
|
|
21
|
-
high: 0.8,
|
|
22
|
-
max: 0.95,
|
|
23
|
-
};
|
|
24
|
-
const MAX_EFFORT_PREFERENCE = ["max", "xhigh", "high"];
|
|
25
|
-
export const OPENROUTER_REASONING_RESPONSE = {
|
|
26
|
-
reasoningTextPaths: [
|
|
27
|
-
"choices[].message.reasoning",
|
|
28
|
-
"choices[].message.reasoning_details",
|
|
29
|
-
],
|
|
30
|
-
streamReasoningKeys: ["reasoning", "reasoning_details"],
|
|
31
|
-
stripFromHistoryPaths: [],
|
|
32
|
-
stripThinkTags: false,
|
|
33
|
-
};
|
|
34
|
-
export const OPENROUTER_REASONING_USAGE = {
|
|
35
|
-
reasoningTokenPaths: ["usage.completion_tokens_details.reasoning_tokens"],
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Pick a gateway effort the model accepts.
|
|
39
|
-
* Returns undefined when the request must not send an effort (`none` on a
|
|
40
|
-
* mandatory model, or `none` when the allowlist rejects it).
|
|
41
|
-
*/
|
|
42
|
-
export function pickOpenRouterEffort(effort, allowed, mandatory) {
|
|
43
|
-
if (effort === "none") {
|
|
44
|
-
if (mandatory)
|
|
45
|
-
return undefined;
|
|
46
|
-
if (allowed === null || allowed.includes("none"))
|
|
47
|
-
return "none";
|
|
48
|
-
return undefined;
|
|
49
|
-
}
|
|
50
|
-
if (allowed === null) {
|
|
51
|
-
return effort;
|
|
52
|
-
}
|
|
53
|
-
if (effort === "max") {
|
|
54
|
-
for (const candidate of MAX_EFFORT_PREFERENCE) {
|
|
55
|
-
if (allowed.includes(candidate))
|
|
56
|
-
return candidate;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
else if (allowed.includes(effort)) {
|
|
60
|
-
return effort;
|
|
61
|
-
}
|
|
62
|
-
return closestAllowedEffort(effort, allowed);
|
|
63
|
-
}
|
|
64
|
-
function closestAllowedEffort(effort, allowed) {
|
|
65
|
-
const target = ABSTRACT_RANK[effort];
|
|
66
|
-
const preferLower = effort === "low";
|
|
67
|
-
let best;
|
|
68
|
-
let bestDistance = Infinity;
|
|
69
|
-
for (const candidate of allowed) {
|
|
70
|
-
if (candidate === "none")
|
|
71
|
-
continue;
|
|
72
|
-
const distance = Math.abs(EFFORT_RANK[candidate] - target);
|
|
73
|
-
if (distance < bestDistance) {
|
|
74
|
-
best = candidate;
|
|
75
|
-
bestDistance = distance;
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
if (distance === bestDistance && best) {
|
|
79
|
-
const better = preferLower
|
|
80
|
-
? EFFORT_RANK[candidate] < EFFORT_RANK[best]
|
|
81
|
-
: EFFORT_RANK[candidate] > EFFORT_RANK[best];
|
|
82
|
-
if (better)
|
|
83
|
-
best = candidate;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return best;
|
|
87
|
-
}
|
|
88
|
-
/** Token budget for models that accept `reasoning.max_tokens` and not effort. */
|
|
89
|
-
export function openRouterReasoningMaxTokens(effort, maxCompletionTokens) {
|
|
90
|
-
const cap = typeof maxCompletionTokens === "number" && maxCompletionTokens > 1024
|
|
91
|
-
? maxCompletionTokens
|
|
92
|
-
: 8192;
|
|
93
|
-
const tokens = Math.floor(cap * MAX_TOKEN_RATIO[effort]);
|
|
94
|
-
return Math.max(1024, tokens);
|
|
95
|
-
}
|
|
96
|
-
function hasEffortControl(reasoning) {
|
|
97
|
-
if (reasoning.supportedEfforts === null)
|
|
98
|
-
return true;
|
|
99
|
-
return (Array.isArray(reasoning.supportedEfforts) && reasoning.supportedEfforts.length > 0);
|
|
100
|
-
}
|
|
101
|
-
export function buildOpenRouterReasoningDirective(input) {
|
|
102
|
-
const { effort, reasoning, maxCompletionTokens } = input;
|
|
103
|
-
const mandatory = reasoning.mandatory === true;
|
|
104
|
-
let body = {};
|
|
105
|
-
if (hasEffortControl(reasoning)) {
|
|
106
|
-
const picked = pickOpenRouterEffort(effort, reasoning.supportedEfforts, mandatory);
|
|
107
|
-
if (picked) {
|
|
108
|
-
body = { reasoning: { effort: picked } };
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
else if (reasoning.supportsMaxTokens) {
|
|
112
|
-
if (effort === "none") {
|
|
113
|
-
body = mandatory ? {} : { reasoning: { enabled: false } };
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
body = {
|
|
117
|
-
reasoning: {
|
|
118
|
-
max_tokens: openRouterReasoningMaxTokens(effort, maxCompletionTokens),
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
else if (effort === "none") {
|
|
124
|
-
body = mandatory ? {} : { reasoning: { enabled: false } };
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
body = { reasoning: { enabled: true } };
|
|
128
|
-
}
|
|
129
|
-
return {
|
|
130
|
-
supported: true,
|
|
131
|
-
body,
|
|
132
|
-
response: OPENROUTER_REASONING_RESPONSE,
|
|
133
|
-
usage: OPENROUTER_REASONING_USAGE,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=openRouterDirective.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openRouterDirective.js","sourceRoot":"","sources":["../../src/reasoning/openRouterDirective.ts"],"names":[],"mappings":"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"}
|