@exellix/ai-skills 7.0.15 → 7.0.16
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/dist/invocation/aiProfileModelFormat.d.ts +0 -2
- package/dist/invocation/aiProfileModelFormat.d.ts.map +1 -1
- package/dist/invocation/aiProfileModelFormat.js +1 -5
- package/dist/invocation/aiProfileModelFormat.js.map +1 -1
- package/dist/invocation/resolveSkillProfileToWireModel.d.ts.map +1 -1
- package/dist/invocation/resolveSkillProfileToWireModel.js +18 -10
- package/dist/invocation/resolveSkillProfileToWireModel.js.map +1 -1
- package/dist/optimixer/build-optimixer-model-profile.d.ts +12 -2
- package/dist/optimixer/build-optimixer-model-profile.d.ts.map +1 -1
- package/dist/optimixer/build-optimixer-model-profile.js +41 -41
- package/dist/optimixer/build-optimixer-model-profile.js.map +1 -1
- package/dist/utils/exellix-skills-logxer-defaults.d.ts +1 -1
- package/package.json +8 -7
|
@@ -3,8 +3,6 @@ export declare function isStrictProfileChoiceKey(value: string): boolean;
|
|
|
3
3
|
/** True when the value should be resolved via ai-profiles (not a concrete wire id). */
|
|
4
4
|
export declare function isResolvableModelAlias(value: string): boolean;
|
|
5
5
|
export declare function normalizeProfileSlotInput(value: string): string;
|
|
6
|
-
/** Bare vendor SKU passthrough is handled by {@link isConcreteModelId} (catalog-backed). */
|
|
7
|
-
export declare function isBareVendorModelSku(_value: string): boolean;
|
|
8
6
|
export declare function requireStrictProfileChoiceKey(value: string, slotPath: string): string;
|
|
9
7
|
export declare function requireSkillModelReference(value: string, slotPath: string): string;
|
|
10
8
|
/** @deprecated Bare-profile expansion removed. Use {@link requireStrictProfileChoiceKey}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiProfileModelFormat.d.ts","sourceRoot":"","sources":["../../src/invocation/aiProfileModelFormat.ts"],"names":[],"mappings":"AAOA,yFAAyF;AACzF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI/D;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI7D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,
|
|
1
|
+
{"version":3,"file":"aiProfileModelFormat.d.ts","sourceRoot":"","sources":["../../src/invocation/aiProfileModelFormat.ts"],"names":[],"mappings":"AAOA,yFAAyF;AACzF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI/D;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI7D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMrF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,6FAA6F;AAC7F,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlG;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAYtF"}
|
|
@@ -12,15 +12,11 @@ export function isResolvableModelAlias(value) {
|
|
|
12
12
|
const trimmed = value.trim();
|
|
13
13
|
if (!trimmed || isConcreteModelId(trimmed))
|
|
14
14
|
return false;
|
|
15
|
-
return
|
|
15
|
+
return true;
|
|
16
16
|
}
|
|
17
17
|
export function normalizeProfileSlotInput(value) {
|
|
18
18
|
return value.trim();
|
|
19
19
|
}
|
|
20
|
-
/** Bare vendor SKU passthrough is handled by {@link isConcreteModelId} (catalog-backed). */
|
|
21
|
-
export function isBareVendorModelSku(_value) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
20
|
export function requireStrictProfileChoiceKey(value, slotPath) {
|
|
25
21
|
const trimmed = value.trim();
|
|
26
22
|
if (!trimmed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiProfileModelFormat.js","sourceRoot":"","sources":["../../src/invocation/aiProfileModelFormat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,yFAAyF;AACzF,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,wBAAwB,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"aiProfileModelFormat.js","sourceRoot":"","sources":["../../src/invocation/aiProfileModelFormat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,yFAAyF;AACzF,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,wBAAwB,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAa,EAAE,QAAgB;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,+CAA+C,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa,EAAE,QAAgB;IACxE,OAAO,6BAA6B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,6BAA6B,CAAC,WAAmB,EAAE,cAAuB;IACxF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3B,OAAO,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAAgB,EAAE,OAAe;IAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,OAAO,OAAO,CAAC;QACtD,OAAO,cAAc,OAAO,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1C,MAAM,cAAc,GAAG,GAAG,YAAY,GAAG,CAAC;IAC1C,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,OAAO,CAAC;IACvD,OAAO,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveSkillProfileToWireModel.d.ts","sourceRoot":"","sources":["../../src/invocation/resolveSkillProfileToWireModel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolveSkillProfileToWireModel.d.ts","sourceRoot":"","sources":["../../src/invocation/resolveSkillProfileToWireModel.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAqB,MAAM,mBAAmB,CAAC;AAUnG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAI/E,MAAM,MAAM,qCAAqC,GAAG,2BAA2B,GAAG;IAChF,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAyDF;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,CAAC,EAAE,qCAAqC,GAC9C,OAAO,CAAC,6BAA6B,GAAG,SAAS,CAAC,CAwDpD;AAED;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,CAAC,EAAE,qCAAqC,GAC9C,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG7B"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { AIProfilesError, resolveAIProfile } from "@x12i/ai-profiles";
|
|
2
|
-
import { formatResolvedProfileModelId,
|
|
1
|
+
import { AIProfilesError, isReasoningModel, requireBundledCatalogModel, resolveAIProfile, } from "@x12i/ai-profiles";
|
|
2
|
+
import { formatResolvedProfileModelId, requireSkillModelReference, } from "./aiProfileModelFormat.js";
|
|
3
3
|
import { isConcreteModelId } from "./concreteModelId.js";
|
|
4
4
|
import { defaultAiSkillsResolveAiProfileOptions, getAiSkillsAiProfilesSource, } from "./defaultAiProfilesResolveOptions.js";
|
|
5
5
|
import { resolvePreferOpenRouterPolicy } from "./preferOpenRouterPolicy.js";
|
|
6
6
|
import { throwSkillModelResolutionError } from "../errors/skillModelResolutionError.js";
|
|
7
|
-
import { splitGatewayWireModelForOptimixer } from "../optimixer/build-optimixer-model-profile.js";
|
|
8
7
|
function openrouterModelIdFromInvocation(resolved) {
|
|
9
8
|
const or = resolved.invocation?.openrouter?.modelId?.trim();
|
|
10
9
|
if (or)
|
|
@@ -32,19 +31,28 @@ function skillWireModelIdFromResolved(resolved) {
|
|
|
32
31
|
return formatResolvedProfileModelId(resolved.provider, resolved.modelId);
|
|
33
32
|
}
|
|
34
33
|
function resolvedSkillProfileForInvokeFromProfile(resolved) {
|
|
35
|
-
const wireModel = skillWireModelIdFromResolved(resolved);
|
|
36
|
-
const split = splitGatewayWireModelForOptimixer(wireModel);
|
|
37
34
|
return {
|
|
38
|
-
wireModel,
|
|
39
|
-
provider:
|
|
35
|
+
wireModel: skillWireModelIdFromResolved(resolved),
|
|
36
|
+
provider: resolved.provider,
|
|
40
37
|
supportsReasoning: resolved.modelSignals.isReasoningModel ? true : undefined,
|
|
41
38
|
};
|
|
42
39
|
}
|
|
43
40
|
function passthroughSkillProfileForInvoke(wire) {
|
|
44
|
-
const
|
|
41
|
+
const catalog = requireBundledCatalogModel(wire);
|
|
42
|
+
if (catalog.found !== true || !catalog.provider || !catalog.modelId) {
|
|
43
|
+
throwSkillModelResolutionError(wire, `Concrete model id "${wire}" is not in the ai-profiles catalog; cannot derive provider for Optimixer without guessing.`, "modelConfig.model");
|
|
44
|
+
}
|
|
45
|
+
let supportsReasoning;
|
|
46
|
+
try {
|
|
47
|
+
supportsReasoning = isReasoningModel(wire) === true ? true : undefined;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
supportsReasoning = undefined;
|
|
51
|
+
}
|
|
45
52
|
return {
|
|
46
53
|
wireModel: wire,
|
|
47
|
-
provider:
|
|
54
|
+
provider: catalog.provider,
|
|
55
|
+
supportsReasoning,
|
|
48
56
|
};
|
|
49
57
|
}
|
|
50
58
|
/**
|
|
@@ -57,7 +65,7 @@ export async function resolveSkillProfileForInvoke(value, options) {
|
|
|
57
65
|
if (!trimmed)
|
|
58
66
|
return undefined;
|
|
59
67
|
const slotPath = "modelConfig.model";
|
|
60
|
-
if (isConcreteModelId(trimmed)
|
|
68
|
+
if (isConcreteModelId(trimmed)) {
|
|
61
69
|
return passthroughSkillProfileForInvoke(trimmed);
|
|
62
70
|
}
|
|
63
71
|
const resolveInput = requireSkillModelReference(trimmed, slotPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveSkillProfileToWireModel.js","sourceRoot":"","sources":["../../src/invocation/resolveSkillProfileToWireModel.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"resolveSkillProfileToWireModel.js","sourceRoot":"","sources":["../../src/invocation/resolveSkillProfileToWireModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
import type { OptimixerModelProfile } from "@x12i/optimixer";
|
|
2
2
|
import type { ModelConfig } from "../types.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Map a gateway wire / catalog model id to Optimixer `{ provider, model }`.
|
|
5
|
+
*
|
|
6
|
+
* Ownership: provider + model identity come from `@x12i/ai-profiles` (catalog / gateway wire
|
|
7
|
+
* normalizer) or an explicit `modelConfig.provider`. This package does **not** guess vendors
|
|
8
|
+
* from SKU keywords (`gpt-`, `claude`, `gemini`, …).
|
|
9
|
+
*/
|
|
4
10
|
export declare function splitGatewayWireModelForOptimixer(wire: string, explicitProvider?: string): {
|
|
5
11
|
provider: string;
|
|
6
12
|
model: string;
|
|
7
13
|
};
|
|
8
14
|
export type BuildOptimixerModelProfileArgs = {
|
|
9
15
|
modelConfig: ModelConfig | undefined;
|
|
10
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* From ai-profiles resolution (`modelSignals.isReasoningModel`).
|
|
18
|
+
* When omitted, falls back to `@x12i/ai-profiles` `isReasoningModel(wire)` — never local heuristics.
|
|
19
|
+
*/
|
|
11
20
|
supportsReasoning?: boolean;
|
|
12
21
|
};
|
|
13
22
|
/**
|
|
14
23
|
* Build Optimixer `modelProfile` from resolved {@link ModelConfig}.
|
|
15
24
|
* Rejects unresolved profile/choice aliases — callers must resolve before Optimixer predict.
|
|
25
|
+
* Reasoning flags come only from ai-profiles (caller or `isReasoningModel`).
|
|
16
26
|
*/
|
|
17
27
|
export declare function buildOptimixerModelProfileFromModelConfig(args: BuildOptimixerModelProfileArgs): OptimixerModelProfile | undefined;
|
|
18
28
|
//# sourceMappingURL=build-optimixer-model-profile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-optimixer-model-profile.d.ts","sourceRoot":"","sources":["../../src/optimixer/build-optimixer-model-profile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build-optimixer-model-profile.d.ts","sourceRoot":"","sources":["../../src/optimixer/build-optimixer-model-profile.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,MAAM,GACxB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAsCrC;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,yCAAyC,CACvD,IAAI,EAAE,8BAA8B,GACnC,qBAAqB,GAAG,SAAS,CAqCnC"}
|
|
@@ -1,58 +1,48 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isReasoningModel, normalizeGatewayWireId, requireBundledCatalogModel, } from "@x12i/ai-profiles";
|
|
2
2
|
import { isResolvableModelAlias } from "../invocation/aiProfileModelFormat.js";
|
|
3
3
|
import { throwSkillModelResolutionError } from "../errors/skillModelResolutionError.js";
|
|
4
4
|
import { resolveWireModelFromModelConfig } from "../utils/validate-model-config-for-invoke.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Map a gateway wire / catalog model id to Optimixer `{ provider, model }`.
|
|
7
|
+
*
|
|
8
|
+
* Ownership: provider + model identity come from `@x12i/ai-profiles` (catalog / gateway wire
|
|
9
|
+
* normalizer) or an explicit `modelConfig.provider`. This package does **not** guess vendors
|
|
10
|
+
* from SKU keywords (`gpt-`, `claude`, `gemini`, …).
|
|
11
|
+
*/
|
|
6
12
|
export function splitGatewayWireModelForOptimixer(wire, explicitProvider) {
|
|
7
13
|
const trimmed = wire.trim();
|
|
8
14
|
if (!trimmed) {
|
|
9
15
|
throw new Error("Optimixer modelProfile requires a non-empty gateway wire model id.");
|
|
10
16
|
}
|
|
11
17
|
const providerOverride = explicitProvider?.trim();
|
|
12
|
-
|
|
18
|
+
const catalog = requireBundledCatalogModel(trimmed);
|
|
19
|
+
if (catalog.found === true && catalog.provider && catalog.modelId) {
|
|
13
20
|
return {
|
|
14
|
-
provider: providerOverride
|
|
15
|
-
model:
|
|
21
|
+
provider: providerOverride || catalog.provider,
|
|
22
|
+
model: catalog.modelId,
|
|
16
23
|
};
|
|
17
24
|
}
|
|
18
|
-
const
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
const normalized = normalizeGatewayWireId(trimmed);
|
|
26
|
+
if (normalized &&
|
|
27
|
+
typeof normalized === "object" &&
|
|
28
|
+
typeof normalized.provider === "string" &&
|
|
29
|
+
normalized.provider.trim() &&
|
|
30
|
+
typeof normalized.modelId === "string" &&
|
|
31
|
+
normalized.modelId.trim()) {
|
|
22
32
|
return {
|
|
23
|
-
provider: providerOverride
|
|
24
|
-
model:
|
|
33
|
+
provider: providerOverride || normalized.provider,
|
|
34
|
+
model: normalized.modelId,
|
|
25
35
|
};
|
|
26
36
|
}
|
|
27
|
-
|
|
28
|
-
trimmed
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
? "openai"
|
|
32
|
-
: trimmed.toLowerCase().startsWith("claude")
|
|
33
|
-
? "anthropic"
|
|
34
|
-
: trimmed.toLowerCase().startsWith("gemini")
|
|
35
|
-
? "google"
|
|
36
|
-
: undefined;
|
|
37
|
-
return {
|
|
38
|
-
provider: providerOverride ?? bareProvider ?? "openrouter",
|
|
39
|
-
model: trimmed,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
function reasoningEnabledFromCatalog(provider, model) {
|
|
43
|
-
const catalog = loadBundledModelsCatalog();
|
|
44
|
-
const entry = findCatalogModelEntry(catalog, {
|
|
45
|
-
provider: provider,
|
|
46
|
-
modelId: model,
|
|
47
|
-
openRouterModelId: provider.toLowerCase() === "openrouter" ? model : undefined,
|
|
48
|
-
});
|
|
49
|
-
if (!entry)
|
|
50
|
-
return undefined;
|
|
51
|
-
return capabilitiesFromCatalogEntry(entry).supportsReasoning === true ? true : undefined;
|
|
37
|
+
if (providerOverride) {
|
|
38
|
+
return { provider: providerOverride, model: trimmed };
|
|
39
|
+
}
|
|
40
|
+
throw new Error(`Cannot derive Optimixer provider/model from "${trimmed}" without a catalog match or modelConfig.provider. Vendor-name guessing is not supported — resolve via @x12i/ai-profiles or pass provider explicitly.`);
|
|
52
41
|
}
|
|
53
42
|
/**
|
|
54
43
|
* Build Optimixer `modelProfile` from resolved {@link ModelConfig}.
|
|
55
44
|
* Rejects unresolved profile/choice aliases — callers must resolve before Optimixer predict.
|
|
45
|
+
* Reasoning flags come only from ai-profiles (caller or `isReasoningModel`).
|
|
56
46
|
*/
|
|
57
47
|
export function buildOptimixerModelProfileFromModelConfig(args) {
|
|
58
48
|
const wire = resolveWireModelFromModelConfig(args.modelConfig);
|
|
@@ -62,11 +52,21 @@ export function buildOptimixerModelProfileFromModelConfig(args) {
|
|
|
62
52
|
throwSkillModelResolutionError(wire, `Cannot predict max tokens for unresolved model alias "${wire}". Resolve profile/choice to a concrete provider model id before Optimixer predict.`, "modelConfig.model");
|
|
63
53
|
}
|
|
64
54
|
const split = splitGatewayWireModelForOptimixer(wire, args.modelConfig?.provider);
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
55
|
+
let reasoningEnabled;
|
|
56
|
+
if (args.supportsReasoning === true) {
|
|
57
|
+
reasoningEnabled = true;
|
|
58
|
+
}
|
|
59
|
+
else if (args.supportsReasoning === false) {
|
|
60
|
+
reasoningEnabled = false;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
try {
|
|
64
|
+
reasoningEnabled = isReasoningModel(wire) === true ? true : undefined;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
reasoningEnabled = undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
70
|
const profile = {
|
|
71
71
|
provider: split.provider,
|
|
72
72
|
model: split.model,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-optimixer-model-profile.js","sourceRoot":"","sources":["../../src/optimixer/build-optimixer-model-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"build-optimixer-model-profile.js","sourceRoot":"","sources":["../../src/optimixer/build-optimixer-model-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAExF,OAAO,EAAE,+BAA+B,EAAE,MAAM,8CAA8C,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,UAAU,iCAAiC,CAC/C,IAAY,EACZ,gBAAyB;IAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,IAAI,EAAE,CAAC;IAElD,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClE,OAAO;YACL,QAAQ,EAAE,gBAAgB,IAAI,OAAO,CAAC,QAAQ;YAC9C,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACnD,IACE,UAAU;QACV,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ;QACvC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC1B,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ;QACtC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EACzB,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,gBAAgB,IAAI,UAAU,CAAC,QAAQ;YACjD,KAAK,EAAE,UAAU,CAAC,OAAO;SAC1B,CAAC;IACJ,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,KAAK,CACb,gDAAgD,OAAO,uJAAuJ,CAC/M,CAAC;AACJ,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,yCAAyC,CACvD,IAAoC;IAEpC,MAAM,IAAI,GAAG,+BAA+B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,8BAA8B,CAC5B,IAAI,EACJ,yDAAyD,IAAI,qFAAqF,EAClJ,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,iCAAiC,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAElF,IAAI,gBAAqC,CAAC;IAC1C,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;QACpC,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE,CAAC;QAC5C,gBAAgB,GAAG,KAAK,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB,GAAG,SAAS,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA0B;QACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;IAEF,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -4,7 +4,7 @@ export declare const AI_SKILLS_LOGXER_ENV_PREFIX: "AI_SKILLS";
|
|
|
4
4
|
/** Known `envPrefix` values for this package and its primary gateway stack (for hosts / `.env`). */
|
|
5
5
|
export declare const AI_SKILLS_STACK_LOG_PREFIXES: {
|
|
6
6
|
readonly gateway: "AI_GATEWAY";
|
|
7
|
-
readonly router: "
|
|
7
|
+
readonly router: "AI_ROUTER_RUNTIME";
|
|
8
8
|
readonly flexMd: "FLEX_MD";
|
|
9
9
|
readonly skills: "AI_SKILLS";
|
|
10
10
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exellix/ai-skills",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.16",
|
|
4
4
|
"description": "Foundational skill execution layer for exellix ecosystem using @x12i/ai-gateway with FlexMD 2.0 support and Catalox as the catalog store",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"doc": "docs"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
|
+
"prepublishOnly": "npm run build",
|
|
34
35
|
"build": "tsc",
|
|
35
36
|
"demo": "tsx demo.ts",
|
|
36
37
|
"test:real": "tsx test-real.ts",
|
|
@@ -60,15 +61,15 @@
|
|
|
60
61
|
},
|
|
61
62
|
"dependencies": {
|
|
62
63
|
"@exellix/catalox-ai-skills": "^1.0.5",
|
|
63
|
-
"@x12i/activix": "^9.0.
|
|
64
|
-
"@x12i/ai-gateway": "^11.
|
|
65
|
-
"@x12i/ai-profiles": "^4.1
|
|
64
|
+
"@x12i/activix": "^9.0.4",
|
|
65
|
+
"@x12i/ai-gateway": "^11.1.1",
|
|
66
|
+
"@x12i/ai-profiles": "^4.2.1",
|
|
66
67
|
"@x12i/catalox": "^5.10.1",
|
|
67
68
|
"@x12i/env": "^4.0.3",
|
|
68
69
|
"@x12i/execution-memory-manager": "^1.2.0",
|
|
69
|
-
"@x12i/graphenix-core": "^2.
|
|
70
|
-
"@x12i/graphenix-executable-contracts": "^2.
|
|
71
|
-
"@x12i/graphenix-plan-format": "^2.
|
|
70
|
+
"@x12i/graphenix-core": "^2.17.0",
|
|
71
|
+
"@x12i/graphenix-executable-contracts": "^2.17.0",
|
|
72
|
+
"@x12i/graphenix-plan-format": "^2.17.0",
|
|
72
73
|
"@x12i/logxer": "^5.1.0",
|
|
73
74
|
"@x12i/optimixer": "^3.5.3",
|
|
74
75
|
"@x12i/rendrix": "^4.3.0",
|