@exellix/ai-tasks 8.2.0 → 8.2.2

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 (62) hide show
  1. package/.metadata/log-diagnostics.json +13 -0
  2. package/dist/core/task-sdk.d.ts.map +1 -1
  3. package/dist/core/task-sdk.js +7 -0
  4. package/dist/core/task-sdk.js.map +1 -1
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/internal/runPostStepLlmCall.d.ts.map +1 -1
  10. package/dist/internal/runPostStepLlmCall.js +65 -1
  11. package/dist/internal/runPostStepLlmCall.js.map +1 -1
  12. package/dist/invocation/index.d.ts +1 -0
  13. package/dist/invocation/index.d.ts.map +1 -1
  14. package/dist/invocation/index.js +1 -0
  15. package/dist/invocation/index.js.map +1 -1
  16. package/dist/invocation/invocationPolicy.d.ts +2 -4
  17. package/dist/invocation/invocationPolicy.d.ts.map +1 -1
  18. package/dist/invocation/invocationPolicy.js +2 -9
  19. package/dist/invocation/invocationPolicy.js.map +1 -1
  20. package/dist/invocation/preferOpenRouterPolicy.d.ts +37 -0
  21. package/dist/invocation/preferOpenRouterPolicy.d.ts.map +1 -0
  22. package/dist/invocation/preferOpenRouterPolicy.js +81 -0
  23. package/dist/invocation/preferOpenRouterPolicy.js.map +1 -0
  24. package/dist/invocation/resolveInvocationPlan.d.ts.map +1 -1
  25. package/dist/invocation/resolveInvocationPlan.js +3 -12
  26. package/dist/invocation/resolveInvocationPlan.js.map +1 -1
  27. package/dist/invocation/resolveProfileInvocationRouting.d.ts +2 -1
  28. package/dist/invocation/resolveProfileInvocationRouting.d.ts.map +1 -1
  29. package/dist/invocation/resolveProfileInvocationRouting.js +25 -3
  30. package/dist/invocation/resolveProfileInvocationRouting.js.map +1 -1
  31. package/dist/invocation/types.d.ts +4 -1
  32. package/dist/invocation/types.d.ts.map +1 -1
  33. package/dist/logxer/aiTasksDiagnosticCodes.d.ts +1 -0
  34. package/dist/logxer/aiTasksDiagnosticCodes.d.ts.map +1 -1
  35. package/dist/logxer/aiTasksDiagnosticCodes.js +1 -0
  36. package/dist/logxer/aiTasksDiagnosticCodes.js.map +1 -1
  37. package/dist/logxer/packageLogxers.d.ts.map +1 -1
  38. package/dist/logxer/packageLogxers.js +2 -1
  39. package/dist/logxer/packageLogxers.js.map +1 -1
  40. package/dist/observability/extractHttpEndpointFromError.d.ts +4 -0
  41. package/dist/observability/extractHttpEndpointFromError.d.ts.map +1 -0
  42. package/dist/observability/extractHttpEndpointFromError.js +54 -0
  43. package/dist/observability/extractHttpEndpointFromError.js.map +1 -0
  44. package/dist/observability/logLlmProviderInvocation.d.ts +55 -0
  45. package/dist/observability/logLlmProviderInvocation.d.ts.map +1 -0
  46. package/dist/observability/logLlmProviderInvocation.js +187 -0
  47. package/dist/observability/logLlmProviderInvocation.js.map +1 -0
  48. package/dist/observability/logRunTaskFailure.d.ts.map +1 -1
  49. package/dist/observability/logRunTaskFailure.js +7 -0
  50. package/dist/observability/logRunTaskFailure.js.map +1 -1
  51. package/dist/strategies/direct-execution-strategy.d.ts.map +1 -1
  52. package/dist/strategies/direct-execution-strategy.js +56 -1
  53. package/dist/strategies/direct-execution-strategy.js.map +1 -1
  54. package/dist/utils/aiProfileModelFormat.d.ts +1 -1
  55. package/dist/utils/aiProfileModelFormat.d.ts.map +1 -1
  56. package/dist/utils/aiProfileModelFormat.js +30 -7
  57. package/dist/utils/aiProfileModelFormat.js.map +1 -1
  58. package/dist/utils/resolveAiProfileModel.d.ts +7 -1
  59. package/dist/utils/resolveAiProfileModel.d.ts.map +1 -1
  60. package/dist/utils/resolveAiProfileModel.js +6 -2
  61. package/dist/utils/resolveAiProfileModel.js.map +1 -1
  62. package/package.json +9 -8
@@ -0,0 +1,54 @@
1
+ const URL_KEYS = new Set(["url", "baseUrl", "baseURL", "endpoint", "requestUrl"]);
2
+ const MAX_DEPTH = 8;
3
+ const MAX_NODES = 120;
4
+ function isHttpUrl(value) {
5
+ return /^https?:\/\//i.test(value.trim());
6
+ }
7
+ function collectUrls(value, out, depth, budget) {
8
+ if (budget.n <= 0 || depth > MAX_DEPTH || value == null)
9
+ return;
10
+ if (typeof value === "string") {
11
+ if (isHttpUrl(value))
12
+ out.add(value.trim());
13
+ return;
14
+ }
15
+ if (typeof value !== "object")
16
+ return;
17
+ budget.n--;
18
+ if (Array.isArray(value)) {
19
+ for (const item of value) {
20
+ collectUrls(item, out, depth + 1, budget);
21
+ if (budget.n <= 0)
22
+ return;
23
+ }
24
+ return;
25
+ }
26
+ for (const [key, child] of Object.entries(value)) {
27
+ if (typeof child === "string" && URL_KEYS.has(key) && isHttpUrl(child)) {
28
+ out.add(child.trim());
29
+ }
30
+ collectUrls(child, out, depth + 1, budget);
31
+ if (budget.n <= 0)
32
+ return;
33
+ }
34
+ }
35
+ /** Best-effort: find HTTP endpoint(s) nested in upstream error / activity payloads. */
36
+ export function extractHttpEndpointsFromError(err) {
37
+ const urls = new Set();
38
+ collectUrls(err, urls, 0, { n: MAX_NODES });
39
+ let current = err;
40
+ for (let i = 0; i < 4; i++) {
41
+ if (!current || typeof current !== "object")
42
+ break;
43
+ const cause = current.cause;
44
+ if (cause === undefined || cause === current)
45
+ break;
46
+ collectUrls(cause, urls, 0, { n: MAX_NODES });
47
+ current = cause;
48
+ }
49
+ return [...urls];
50
+ }
51
+ export function pickOpenRouterEndpoint(endpoints) {
52
+ return endpoints.find((u) => /openrouter\.ai/i.test(u));
53
+ }
54
+ //# sourceMappingURL=extractHttpEndpointFromError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractHttpEndpointFromError.js","sourceRoot":"","sources":["../../src/observability/extractHttpEndpointFromError.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;AAClF,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,GAAgB,EAAE,KAAa,EAAE,MAAqB;IACzF,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,SAAS,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,SAAS,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO;IAEtC,MAAM,CAAC,CAAC,EAAE,CAAC;IACX,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC;gBAAE,OAAO;QAC5B,CAAC;QACD,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO;IAC5B,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,6BAA6B,CAAC,GAAY;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAE5C,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,MAAM;QACnD,MAAM,KAAK,GAAI,OAA+B,CAAC,KAAK,CAAC;QACrD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO;YAAE,MAAM;QACpD,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9C,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAAmB;IACxD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,55 @@
1
+ import type { InvokeAttemptSummary, RoutingDiagnostics } from "../types/llmCall.js";
2
+ import type { InvocationPhase, InvocationPhasePlan, InvocationRouting } from "../invocation/types.js";
3
+ import { type LlmAdapterHint } from "./llmRouteContext.js";
4
+ export type LlmInvokePath = "xynthesis-funcx" | "ai-skills-gateway";
5
+ export type LlmProviderInvocationLog = {
6
+ phase: InvocationPhase | "main" | string;
7
+ stage?: string;
8
+ profile?: string;
9
+ routing?: InvocationRouting;
10
+ provider?: string;
11
+ model?: string;
12
+ engineLabel?: string;
13
+ invokePath?: LlmInvokePath;
14
+ intendedAdapter?: LlmAdapterHint;
15
+ intendedBaseUrl?: string;
16
+ preferOpenRouter?: boolean;
17
+ openrouterApiKeyPresent?: boolean;
18
+ anthropicApiKeyPresent?: boolean;
19
+ openaiBaseUrl?: string;
20
+ observedProvider?: string;
21
+ observedRouting?: RoutingDiagnostics;
22
+ httpEndpoint?: string;
23
+ httpConfirmed?: boolean;
24
+ ok?: boolean;
25
+ errorMessage?: string;
26
+ };
27
+ export declare function buildLlmProviderInvocationLog(args: {
28
+ phase: LlmProviderInvocationLog["phase"];
29
+ stage?: string;
30
+ profile?: string;
31
+ routing?: InvocationRouting;
32
+ provider?: string;
33
+ model?: string;
34
+ engineLabel?: string;
35
+ invokeSummary?: InvokeAttemptSummary;
36
+ routingDiagnostics?: RoutingDiagnostics;
37
+ error?: unknown;
38
+ ok?: boolean;
39
+ }): LlmProviderInvocationLog;
40
+ export declare function logLlmProviderInvokeScheduled(payload: LlmProviderInvocationLog): void;
41
+ export declare function logLlmProviderInvokeObserved(payload: LlmProviderInvocationLog): void;
42
+ export declare function logLlmProviderInvocationPlanPhase(plan: InvocationPhasePlan): void;
43
+ export type RunTaskModelConfigPlanInput = {
44
+ preActionModel?: string;
45
+ skillModel?: string;
46
+ postActionModel?: string;
47
+ xynthesisModel?: string;
48
+ };
49
+ /** Map graph-engine / runTask modelConfig slots to a resolveInvocationPlan triple. */
50
+ export declare function modelConfigToInvocationProfiles(modelConfig: RunTaskModelConfigPlanInput | undefined | null): RunTaskModelConfigPlanInput | null;
51
+ export declare function logRunTaskInvocationPlan(args: {
52
+ modelConfig?: RunTaskModelConfigPlanInput | null;
53
+ skillKey?: string;
54
+ }): Promise<void>;
55
+ //# sourceMappingURL=logLlmProviderInvocation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logLlmProviderInvocation.d.ts","sourceRoot":"","sources":["../../src/observability/logLlmProviderInvocation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAStG,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEnF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAUpE,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAoCF,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,OAAO,CAAC;CACd,GAAG,wBAAwB,CAsC3B;AAmDD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAErF;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAEpF;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAgBjF;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,2BAA2B,GAAG,SAAS,GAAG,IAAI,GAC1D,2BAA2B,GAAG,IAAI,CAOpC;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,WAAW,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BhB"}
@@ -0,0 +1,187 @@
1
+ import { DebugLogAbstract, fieldEvidence } from "@x12i/logxer";
2
+ import { resolveInvocationPlan } from "../invocation/resolveInvocationPlan.js";
3
+ import { resolvePreferOpenRouterPolicy } from "../invocation/preferOpenRouterPolicy.js";
4
+ import { AI_TASKS_DIAGNOSTIC_CODES } from "../logxer/aiTasksDiagnosticCodes.js";
5
+ import { getAiTasksLogxer } from "../logxer/packageLogxers.js";
6
+ import { extractHttpEndpointsFromError, pickOpenRouterEndpoint, } from "./extractHttpEndpointFromError.js";
7
+ import { inferLlmRouteFromModel } from "./llmRouteContext.js";
8
+ const ADAPTER_BASE_URL = {
9
+ openrouter: "https://openrouter.ai/api/v1",
10
+ "openai-direct": "https://api.openai.com/v1",
11
+ "anthropic-direct": "https://api.anthropic.com/v1",
12
+ "google-direct": "https://generativelanguage.googleapis.com/v1beta",
13
+ "groq-direct": "https://api.groq.com/openai/v1",
14
+ };
15
+ function envFlag(name) {
16
+ return Boolean(process.env[name]?.trim());
17
+ }
18
+ function detectEnvSnapshot() {
19
+ const policy = resolvePreferOpenRouterPolicy({});
20
+ return {
21
+ preferOpenRouter: policy.preferOpenRouter,
22
+ openrouterApiKeyPresent: policy.openrouterApiKeyPresent,
23
+ anthropicApiKeyPresent: envFlag("ANTHROPIC_API_KEY"),
24
+ openaiBaseUrl: process.env.OPENAI_BASE_URL?.trim(),
25
+ };
26
+ }
27
+ function intendedBaseUrl(adapter, routing) {
28
+ if (routing === "openrouter")
29
+ return ADAPTER_BASE_URL.openrouter;
30
+ return ADAPTER_BASE_URL[adapter];
31
+ }
32
+ function invokePathForPhase(phase, stage) {
33
+ if (stage === "main-skill" || phase === "skill")
34
+ return "ai-skills-gateway";
35
+ return "xynthesis-funcx";
36
+ }
37
+ function routingFromSummary(summary) {
38
+ const r = summary?.routing;
39
+ return r && typeof r === "object" ? r : undefined;
40
+ }
41
+ function modelFromSummary(summary) {
42
+ const resolved = summary?.modelResolved ?? summary?.modelUsed ?? summary?.modelRequested;
43
+ return typeof resolved === "string" && resolved.trim() ? resolved.trim() : undefined;
44
+ }
45
+ export function buildLlmProviderInvocationLog(args) {
46
+ const env = detectEnvSnapshot();
47
+ const route = inferLlmRouteFromModel(args.model);
48
+ const adapter = args.routing === "openrouter" ? "openrouter" : route.adapterHint;
49
+ const observedRouting = args.routingDiagnostics ?? routingFromSummary(args.invokeSummary);
50
+ const endpoints = args.error ? extractHttpEndpointsFromError(args.error) : [];
51
+ const httpEndpoint = pickOpenRouterEndpoint(endpoints) ??
52
+ endpoints.find((u) => /chat\/completions|\/v1/i.test(u)) ??
53
+ endpoints[0];
54
+ const observedProvider = (typeof observedRouting?.provider === "string" && observedRouting.provider.trim()
55
+ ? observedRouting.provider.trim()
56
+ : undefined) ??
57
+ (httpEndpoint && /openrouter\.ai/i.test(httpEndpoint) ? "openrouter" : undefined);
58
+ return {
59
+ phase: args.phase,
60
+ stage: args.stage,
61
+ profile: args.profile,
62
+ routing: args.routing,
63
+ provider: args.provider ?? route.providerPrefix,
64
+ model: args.model ?? modelFromSummary(args.invokeSummary),
65
+ engineLabel: args.engineLabel,
66
+ invokePath: invokePathForPhase(args.phase, args.stage),
67
+ intendedAdapter: adapter,
68
+ intendedBaseUrl: intendedBaseUrl(adapter, args.routing),
69
+ ...env,
70
+ observedProvider,
71
+ ...(observedRouting ? { observedRouting } : {}),
72
+ ...(httpEndpoint ? { httpEndpoint, httpConfirmed: true } : {}),
73
+ ok: args.ok,
74
+ ...(args.error instanceof Error
75
+ ? { errorMessage: args.error.message }
76
+ : args.error
77
+ ? { errorMessage: String(args.error) }
78
+ : {}),
79
+ };
80
+ }
81
+ function logPayload(payload, timing) {
82
+ const evidence = [
83
+ fieldEvidence("timing", timing),
84
+ fieldEvidence("phase", payload.phase),
85
+ ...(payload.stage ? [fieldEvidence("stage", payload.stage)] : []),
86
+ ...(payload.profile ? [fieldEvidence("profile", payload.profile)] : []),
87
+ ...(payload.routing ? [fieldEvidence("routing", payload.routing)] : []),
88
+ ...(payload.provider ? [fieldEvidence("provider", payload.provider)] : []),
89
+ ...(payload.model ? [fieldEvidence("model", payload.model)] : []),
90
+ ...(payload.engineLabel ? [fieldEvidence("engineLabel", payload.engineLabel)] : []),
91
+ ...(payload.invokePath ? [fieldEvidence("invokePath", payload.invokePath)] : []),
92
+ ...(payload.intendedAdapter ? [fieldEvidence("intendedAdapter", payload.intendedAdapter)] : []),
93
+ ...(payload.intendedBaseUrl ? [fieldEvidence("intendedBaseUrl", payload.intendedBaseUrl)] : []),
94
+ ...(payload.preferOpenRouter !== undefined
95
+ ? [fieldEvidence("preferOpenRouter", payload.preferOpenRouter)]
96
+ : []),
97
+ ...(payload.openrouterApiKeyPresent !== undefined
98
+ ? [fieldEvidence("openrouterApiKeyPresent", payload.openrouterApiKeyPresent)]
99
+ : []),
100
+ ...(payload.anthropicApiKeyPresent !== undefined
101
+ ? [fieldEvidence("anthropicApiKeyPresent", payload.anthropicApiKeyPresent)]
102
+ : []),
103
+ ...(payload.openaiBaseUrl ? [fieldEvidence("openaiBaseUrl", payload.openaiBaseUrl)] : []),
104
+ ...(payload.observedProvider ? [fieldEvidence("observedProvider", payload.observedProvider)] : []),
105
+ ...(payload.httpEndpoint ? [fieldEvidence("httpEndpoint", payload.httpEndpoint)] : []),
106
+ ...(payload.httpConfirmed !== undefined
107
+ ? [fieldEvidence("httpConfirmed", payload.httpConfirmed)]
108
+ : []),
109
+ ...(payload.ok !== undefined ? [fieldEvidence("ok", payload.ok)] : []),
110
+ ...(payload.errorMessage ? [fieldEvidence("errorMessage", payload.errorMessage)] : []),
111
+ ];
112
+ getAiTasksLogxer().warnCode(AI_TASKS_DIAGNOSTIC_CODES.LLM_PROVIDER_INVOCATION, {
113
+ source: "@exellix/ai-tasks",
114
+ debugKind: DebugLogAbstract.TRACE,
115
+ diagnostics: {
116
+ summary: timing === "plan"
117
+ ? "LLM invocation plan (pre-run routing; does not prove HTTP was sent)"
118
+ : timing === "scheduled"
119
+ ? "LLM invoke scheduled (intended adapter/baseUrl; HTTP not yet confirmed)"
120
+ : payload.httpConfirmed
121
+ ? "LLM invoke observed with HTTP endpoint in upstream payload"
122
+ : "LLM invoke finished without HTTP endpoint in ai-tasks-visible payload",
123
+ },
124
+ evidence,
125
+ });
126
+ }
127
+ export function logLlmProviderInvokeScheduled(payload) {
128
+ logPayload(payload, "scheduled");
129
+ }
130
+ export function logLlmProviderInvokeObserved(payload) {
131
+ logPayload(payload, "observed");
132
+ }
133
+ export function logLlmProviderInvocationPlanPhase(plan) {
134
+ logPayload({
135
+ ...buildLlmProviderInvocationLog({
136
+ phase: plan.phase,
137
+ profile: plan.profileSlot,
138
+ routing: plan.routing,
139
+ provider: plan.provider,
140
+ model: plan.modelId,
141
+ engineLabel: plan.engineLabel,
142
+ ok: true,
143
+ }),
144
+ invokePath: invokePathForPhase(plan.phase),
145
+ }, "plan");
146
+ }
147
+ /** Map graph-engine / runTask modelConfig slots to a resolveInvocationPlan triple. */
148
+ export function modelConfigToInvocationProfiles(modelConfig) {
149
+ if (!modelConfig)
150
+ return null;
151
+ const pre = modelConfig.preActionModel ?? modelConfig.xynthesisModel;
152
+ const skill = modelConfig.skillModel;
153
+ const post = modelConfig.postActionModel ?? modelConfig.xynthesisModel;
154
+ if (!pre?.trim() || !skill?.trim() || !post?.trim())
155
+ return null;
156
+ return { preActionModel: pre, skillModel: skill, postActionModel: post };
157
+ }
158
+ export async function logRunTaskInvocationPlan(args) {
159
+ const profiles = modelConfigToInvocationProfiles(args.modelConfig);
160
+ if (!profiles?.preActionModel || !profiles.skillModel || !profiles.postActionModel)
161
+ return;
162
+ const policy = resolvePreferOpenRouterPolicy({});
163
+ const plan = await resolveInvocationPlan({
164
+ profiles: {
165
+ preActionModel: profiles.preActionModel,
166
+ skillModel: profiles.skillModel,
167
+ postActionModel: profiles.postActionModel,
168
+ },
169
+ policy: {
170
+ preferOpenRouter: policy.preferOpenRouter,
171
+ openrouterApiKeyPresent: policy.openrouterApiKeyPresent,
172
+ },
173
+ runTaskContext: args.skillKey ? { skillKey: args.skillKey } : undefined,
174
+ });
175
+ for (const phase of plan.phases) {
176
+ logLlmProviderInvocationPlanPhase(phase);
177
+ }
178
+ if (plan.warnings?.length) {
179
+ getAiTasksLogxer().warnCode(AI_TASKS_DIAGNOSTIC_CODES.LLM_PROVIDER_INVOCATION, {
180
+ source: "@exellix/ai-tasks",
181
+ debugKind: DebugLogAbstract.TRACE,
182
+ diagnostics: { summary: "Invocation plan warnings" },
183
+ evidence: plan.warnings.map((w, i) => fieldEvidence(`planWarning.${i}`, w)),
184
+ });
185
+ }
186
+ }
187
+ //# sourceMappingURL=logLlmProviderInvocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logLlmProviderInvocation.js","sourceRoot":"","sources":["../../src/observability/logLlmProviderInvocation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"logRunTaskFailure.d.ts","sourceRoot":"","sources":["../../src/observability/logRunTaskFailure.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,oCAAoC,CAAC;AAO5C,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAAG;IAC9D,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAaF;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,qBAAqB,GAAG,KAAK,CA8E7E"}
1
+ {"version":3,"file":"logRunTaskFailure.d.ts","sourceRoot":"","sources":["../../src/observability/logRunTaskFailure.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,oCAAoC,CAAC;AAW5C,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAAG;IAC9D,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAaF;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,qBAAqB,GAAG,KAAK,CAqF7E"}
@@ -6,6 +6,7 @@ import { isTaskConfigurationCompileError } from "../errors/taskConfigurationComp
6
6
  import { AI_TASKS_DIAGNOSTIC_CODES } from "../logxer/aiTasksDiagnosticCodes.js";
7
7
  import { getAiTasksLogxer } from "../logxer/packageLogxers.js";
8
8
  import { inferLlmRouteFromModel } from "./llmRouteContext.js";
9
+ import { extractHttpEndpointsFromError, pickOpenRouterEndpoint, } from "./extractHttpEndpointFromError.js";
9
10
  function rootMessageFromError(error) {
10
11
  return {
11
12
  message: error.message,
@@ -27,6 +28,10 @@ export function logAndEnrichRunTaskFailure(args) {
27
28
  const route = details?.llmRoute ??
28
29
  inferLlmRouteFromModel(details?.modelConfig?.skillModel ??
29
30
  args.modelConfig?.skillModel);
31
+ const httpEndpoints = extractHttpEndpointsFromError(args.cause);
32
+ const httpEndpoint = pickOpenRouterEndpoint(httpEndpoints) ??
33
+ httpEndpoints.find((u) => /chat\/completions|\/v1/i.test(u)) ??
34
+ httpEndpoints[0];
30
35
  const failureClassification = details?.failureClassification ??
31
36
  classifyRunTaskFailure({
32
37
  message: root.message,
@@ -62,6 +67,8 @@ export function logAndEnrichRunTaskFailure(args) {
62
67
  ? [fieldEvidence("adapterHint", route.adapterHint)]
63
68
  : []),
64
69
  ...(route.routingNote ? [fieldEvidence("routingNote", route.routingNote)] : []),
70
+ ...(httpEndpoint ? [fieldEvidence("httpEndpoint", httpEndpoint)] : []),
71
+ ...(httpEndpoint ? [fieldEvidence("httpConfirmed", true)] : []),
65
72
  ...(route.likelyEnvKeys.length
66
73
  ? [fieldEvidence("likelyEnvKeys", route.likelyEnvKeys.join(", "))]
67
74
  : []),
@@ -1 +1 @@
1
- {"version":3,"file":"logRunTaskFailure.js","sourceRoot":"","sources":["../../src/observability/logRunTaskFailure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logRunTaskFailure.js","sourceRoot":"","sources":["../../src/observability/logRunTaskFailure.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"direct-execution-strategy.d.ts","sourceRoot":"","sources":["../../src/strategies/direct-execution-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA4B,MAAM,oBAAoB,CAAC;AAInF,KAAK,iBAAiB,GAAG,mBAAmB,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAQ5E;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB,GAAG,iBAAiB;IAIrD,OAAO,CAAC,OAAO,GAAG,GAAG,EACzB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAiHrC,OAAO,IAAI,MAAM;IAIjB,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;CAG5C"}
1
+ {"version":3,"file":"direct-execution-strategy.d.ts","sourceRoot":"","sources":["../../src/strategies/direct-execution-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA4B,MAAM,oBAAoB,CAAC;AAInF,KAAK,iBAAiB,GAAG,mBAAmB,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAgB5E;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB,GAAG,iBAAiB;IAIrD,OAAO,CAAC,OAAO,GAAG,GAAG,EACzB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IA6KrC,OAAO,IAAI,MAAM;IAIjB,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;CAG5C"}
@@ -2,6 +2,10 @@ import { SkillExecutionTraceError } from "@exellix/ai-skills";
2
2
  import { ExecutionType } from "../types/executionType.js";
3
3
  import { LlmCallContextError } from "../types/llmCall.js";
4
4
  import { logAndEnrichRunTaskFailure } from "../observability/logRunTaskFailure.js";
5
+ import { buildLlmProviderInvocationLog, logLlmProviderInvokeObserved, logLlmProviderInvokeScheduled, } from "../observability/logLlmProviderInvocation.js";
6
+ import { resolvePreferOpenRouterPolicy } from "../invocation/preferOpenRouterPolicy.js";
7
+ import { resolveProfileInvocationRouting } from "../invocation/resolveProfileInvocationRouting.js";
8
+ import { isResolvableModelAlias } from "../utils/aiProfileModelFormat.js";
5
9
  import { pickRunSkillRequestFields } from "../utils/bridgeRunSkillGatewayMemory.js";
6
10
  import { buildAiSkillsModelConfigForMain } from "../utils/routeModelConfigSlots.js";
7
11
  import { resolveModelReference } from "../utils/resolveAiProfileModel.js";
@@ -69,11 +73,62 @@ export class DirectExecutionStrategy {
69
73
  const resolvedMainModel = runSkillRequest.modelConfig?.model ??
70
74
  llmCall?.model ??
71
75
  taskRequest.modelConfig?.skillModel;
76
+ const profileSlot = taskRequest.modelConfig?.skillModel ?? resolvedMainModel;
77
+ let skillRouting;
78
+ if (typeof profileSlot === "string" && profileSlot.trim()) {
79
+ const policy = resolvePreferOpenRouterPolicy({});
80
+ if (isResolvableModelAlias(profileSlot) || profileSlot.includes("@") || profileSlot.includes("/")) {
81
+ try {
82
+ skillRouting = await resolveProfileInvocationRouting(profileSlot, {
83
+ phaseKind: "skill",
84
+ effectiveUseOpenRouter: policy.effectiveUseOpenRouter,
85
+ });
86
+ }
87
+ catch {
88
+ /* best-effort diagnostics */
89
+ }
90
+ }
91
+ }
92
+ logLlmProviderInvokeScheduled(buildLlmProviderInvocationLog({
93
+ phase: "skill",
94
+ stage: "main-skill",
95
+ profile: profileSlot,
96
+ routing: skillRouting?.routing,
97
+ provider: skillRouting?.provider,
98
+ model: resolvedMainModel ?? skillRouting?.modelId,
99
+ engineLabel: skillRouting?.engineLabel,
100
+ ok: true,
101
+ }));
72
102
  const startMs = Date.now();
73
103
  try {
74
- return await this.client.runSkill(runSkillRequest);
104
+ const result = await this.client.runSkill(runSkillRequest);
105
+ logLlmProviderInvokeObserved(buildLlmProviderInvocationLog({
106
+ phase: "skill",
107
+ stage: "main-skill",
108
+ profile: profileSlot,
109
+ routing: skillRouting?.routing,
110
+ provider: skillRouting?.provider,
111
+ model: result.metadata?.modelUsed ??
112
+ result.metadata?.model ??
113
+ resolvedMainModel ??
114
+ skillRouting?.modelId,
115
+ engineLabel: skillRouting?.engineLabel,
116
+ ok: true,
117
+ }));
118
+ return result;
75
119
  }
76
120
  catch (error) {
121
+ logLlmProviderInvokeObserved(buildLlmProviderInvocationLog({
122
+ phase: "skill",
123
+ stage: "main-skill",
124
+ profile: profileSlot,
125
+ routing: skillRouting?.routing,
126
+ provider: skillRouting?.provider,
127
+ model: resolvedMainModel ?? skillRouting?.modelId,
128
+ engineLabel: skillRouting?.engineLabel,
129
+ error,
130
+ ok: false,
131
+ }));
77
132
  const durationMs = Date.now() - startMs;
78
133
  // Trace-mode typed error: pass through unchanged. Carries `RunSkillDiagnostics` with `trace.invokeRequest`
79
134
  // (modelConfig + timeoutMs echo), `usage`, `routing`, `costUsd`, `attempts[]`.
@@ -1 +1 @@
1
- {"version":3,"file":"direct-execution-strategy.js","sourceRoot":"","sources":["../../src/strategies/direct-execution-strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"direct-execution-strategy.js","sourceRoot":"","sources":["../../src/strategies/direct-execution-strategy.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  export declare const LEGACY_TIER_TO_PROFILE: Record<string, string>;
3
3
  /** True when `value` is a known ai-profiles profile, shortcut, or legacy tier alias. */
4
4
  export declare function isResolvableModelAlias(value: string): boolean;
5
- /** Format a resolved ai-profiles choice as a concrete provider model id for ai-skills / xynthesis. */
5
+ /** Format a resolved ai-profiles choice as a concrete provider model id for ai-skills MAIN. */
6
6
  export declare function formatResolvedProfileModelId(provider: string, modelId: string): string;
7
7
  /** Map legacy tiers to ai-profiles keys without resolving to a provider model id. */
8
8
  export declare function normalizeXynthesisModelAlias(value: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"aiProfileModelFormat.d.ts","sourceRoot":"","sources":["../../src/utils/aiProfileModelFormat.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIzD,CAAC;AA+DF,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAK7D;AAED,sGAAsG;AACtG,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAOtF;AAED,qFAAqF;AACrF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlE"}
1
+ {"version":3,"file":"aiProfileModelFormat.d.ts","sourceRoot":"","sources":["../../src/utils/aiProfileModelFormat.ts"],"names":[],"mappings":"AAGA,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIzD,CAAC;AA+DF,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAY7D;AASD,+FAA+F;AAC/F,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAYtF;AAED,qFAAqF;AACrF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlE"}
@@ -1,3 +1,4 @@
1
+ import { isKnownProfileOrShortcut } from "@x12i/ai-profiles";
1
2
  import { isConcreteModelId } from "./concreteModelId.js";
2
3
  /** Legacy graph-engine tier names → `@x12i/ai-profiles` profile keys. */
3
4
  export const LEGACY_TIER_TO_PROFILE = {
@@ -64,24 +65,46 @@ const KNOWN_AI_PROFILE_ALIAS_KEYS = new Set([
64
65
  ]);
65
66
  /** True when `value` is a known ai-profiles profile, shortcut, or legacy tier alias. */
66
67
  export function isResolvableModelAlias(value) {
67
- const key = value.trim().toLowerCase();
68
- if (!key)
68
+ const trimmed = value.trim();
69
+ if (!trimmed)
69
70
  return false;
70
- if (isConcreteModelId(value))
71
+ if (isConcreteModelId(trimmed))
71
72
  return false;
72
- return KNOWN_AI_PROFILE_ALIAS_KEYS.has(key);
73
+ const { profileInput } = parseProfileSlotForAlias(trimmed);
74
+ const key = profileInput.toLowerCase();
75
+ if (KNOWN_AI_PROFILE_ALIAS_KEYS.has(key))
76
+ return true;
77
+ try {
78
+ return isKnownProfileOrShortcut(profileInput);
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ }
84
+ function parseProfileSlotForAlias(profileSlot) {
85
+ const trimmed = profileSlot.trim();
86
+ const at = trimmed.indexOf("@");
87
+ if (at > 0)
88
+ return { profileInput: trimmed.slice(0, at).trim() };
89
+ return { profileInput: trimmed };
73
90
  }
74
- /** Format a resolved ai-profiles choice as a concrete provider model id for ai-skills / xynthesis. */
91
+ /** Format a resolved ai-profiles choice as a concrete provider model id for ai-skills MAIN. */
75
92
  export function formatResolvedProfileModelId(provider, modelId) {
76
93
  const trimmed = modelId.trim();
94
+ const providerTrim = provider.trim();
77
95
  if (!trimmed)
78
96
  return trimmed;
97
+ if (providerTrim.toLowerCase() === "openrouter") {
98
+ if (trimmed.startsWith("openrouter/"))
99
+ return trimmed;
100
+ return `openrouter/${trimmed}`;
101
+ }
79
102
  if (trimmed.includes("/"))
80
103
  return trimmed;
81
- const providerPrefix = `${provider.trim()}/`;
104
+ const providerPrefix = `${providerTrim}/`;
82
105
  if (trimmed.startsWith(providerPrefix))
83
106
  return trimmed;
84
- return `${provider.trim()}/${trimmed}`;
107
+ return `${providerTrim}/${trimmed}`;
85
108
  }
86
109
  /** Map legacy tiers to ai-profiles keys without resolving to a provider model id. */
87
110
  export function normalizeXynthesisModelAlias(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"aiProfileModelFormat.js","sourceRoot":"","sources":["../../src/utils/aiProfileModelFormat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,yEAAyE;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC5D,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,UAAU;CACpB,CAAC;AAEF,uEAAuE;AACvE,MAAM,eAAe,GAAG;IACtB,OAAO;IACP,MAAM;IACN,UAAU;IACV,MAAM;IACN,KAAK;IACL,MAAM;IACN,SAAS;IACT,UAAU;CACF,CAAC;AAEX,iEAAiE;AACjE,MAAM,wBAAwB,GAAG;IAC/B,SAAS;IACT,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;IACZ,SAAS;IACT,OAAO;IACP,YAAY;IACZ,UAAU;IACV,SAAS;IACT,UAAU;IACV,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,MAAM;IACN,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,OAAO;IACP,OAAO;IACP,aAAa;IACb,cAAc;IACd,eAAe;IACf,kBAAkB;CACV,CAAC;AAEX,sEAAsE;AACtE,MAAM,wBAAwB,GAAG;IAC/B,gBAAgB;IAChB,aAAa;IACb,QAAQ;IACR,WAAW;IACX,OAAO;IACP,iBAAiB;IACjB,YAAY;IACZ,mBAAmB;IACnB,UAAU;IACV,cAAc;CACN,CAAC;AAEX,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAS;IAClD,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC;IACtC,GAAG,eAAe;IAClB,GAAG,wBAAwB;IAC3B,GAAG,wBAAwB;CAC5B,CAAC,CAAC;AAEH,wFAAwF;AACxF,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,2BAA2B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,4BAA4B,CAAC,QAAgB,EAAE,OAAe;IAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1C,MAAM,cAAc,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IAC7C,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,OAAO,CAAC;IACvD,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;AACzC,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7B,OAAO,sBAAsB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"aiProfileModelFormat.js","sourceRoot":"","sources":["../../src/utils/aiProfileModelFormat.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,13 @@ import type { ResolveAIProfileOptions } from "@x12i/ai-profiles";
2
2
  export { formatResolvedProfileModelId, isResolvableModelAlias, normalizeXynthesisModelAlias, } from "./aiProfileModelFormat.js";
3
3
  /** @deprecated Prefer {@link isResolvableModelAlias}. Kept for tests and call sites expecting the old name. */
4
4
  export declare function isAliasLikeModelValue(value: string): boolean;
5
- export type ResolveModelReferenceOptions = ResolveAIProfileOptions;
5
+ export type ResolveModelReferenceOptions = Omit<ResolveAIProfileOptions, "useOpenRouter"> & {
6
+ /** Prefer OpenRouter when key present. See `.docs/prefer-openrouter-routing-policy.md`. */
7
+ preferOpenRouter?: boolean;
8
+ /** @deprecated Use `preferOpenRouter`. */
9
+ useOpenRouter?: boolean;
10
+ openrouterApiKeyPresent?: boolean;
11
+ };
6
12
  /**
7
13
  * Resolve a model reference for `@exellix/ai-skills` MAIN: pass through concrete ids and
8
14
  * unrecognized strings; map known ai-profiles aliases to concrete provider/model ids.
@@ -1 +1 @@
1
- {"version":3,"file":"resolveAiProfileModel.d.ts","sourceRoot":"","sources":["../../src/utils/resolveAiProfileModel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AASjE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC,+GAA+G;AAC/G,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,MAAM,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;AAEnE;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,CAAC,EAAE,4BAA4B,GACrC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B;AAED;;;GAGG;AACH,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe7B"}
1
+ {"version":3,"file":"resolveAiProfileModel.d.ts","sourceRoot":"","sources":["../../src/utils/resolveAiProfileModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAUjE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC,+GAA+G;AAC/G,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC,uBAAuB,EAAE,eAAe,CAAC,GAAG;IAC1F,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,CAAC,EAAE,4BAA4B,GACrC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkB7B;AAED;;;GAGG;AACH,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe7B"}
@@ -1,5 +1,5 @@
1
- import { resolveUseOpenRouter } from "@x12i/ai-profiles";
2
1
  import { resolveProfileInvocationRouting } from "../invocation/resolveProfileInvocationRouting.js";
2
+ import { resolvePreferOpenRouterPolicy } from "../invocation/preferOpenRouterPolicy.js";
3
3
  import { isResolvableModelAlias, normalizeXynthesisModelAlias, } from "./aiProfileModelFormat.js";
4
4
  import { isConcreteModelId } from "./concreteModelId.js";
5
5
  export { formatResolvedProfileModelId, isResolvableModelAlias, normalizeXynthesisModelAlias, } from "./aiProfileModelFormat.js";
@@ -21,9 +21,13 @@ export async function resolveModelReference(value, options) {
21
21
  return trimmed;
22
22
  if (!isResolvableModelAlias(trimmed) && !trimmed.includes("@"))
23
23
  return trimmed;
24
+ const { effectiveUseOpenRouter } = resolvePreferOpenRouterPolicy({
25
+ preferOpenRouter: options?.preferOpenRouter ?? options?.useOpenRouter,
26
+ openrouterApiKeyPresent: options?.openrouterApiKeyPresent,
27
+ });
24
28
  const resolved = await resolveProfileInvocationRouting(trimmed, {
25
29
  phaseKind: "skill",
26
- useOpenRouter: resolveUseOpenRouter(options?.useOpenRouter),
30
+ effectiveUseOpenRouter,
27
31
  source: options?.source ?? "auto",
28
32
  });
29
33
  return resolved.modelId;