@exellix/ai-skills 6.2.2 → 6.3.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.
Files changed (124) hide show
  1. package/dist/analysis/analyze-skill-request.d.ts +13 -0
  2. package/dist/analysis/analyze-skill-request.d.ts.map +1 -0
  3. package/dist/analysis/analyze-skill-request.js +103 -0
  4. package/dist/analysis/analyze-skill-request.js.map +1 -0
  5. package/dist/analysis/build-skill-request-analysis-packet.d.ts +14 -0
  6. package/dist/analysis/build-skill-request-analysis-packet.d.ts.map +1 -0
  7. package/dist/analysis/build-skill-request-analysis-packet.js +106 -0
  8. package/dist/analysis/build-skill-request-analysis-packet.js.map +1 -0
  9. package/dist/analysis/collect-deterministic-findings.d.ts +14 -0
  10. package/dist/analysis/collect-deterministic-findings.d.ts.map +1 -0
  11. package/dist/analysis/collect-deterministic-findings.js +245 -0
  12. package/dist/analysis/collect-deterministic-findings.js.map +1 -0
  13. package/dist/analysis/constants.d.ts +5 -0
  14. package/dist/analysis/constants.d.ts.map +1 -0
  15. package/dist/analysis/constants.js +5 -0
  16. package/dist/analysis/constants.js.map +1 -0
  17. package/dist/analysis/format-skill-request-analysis-markdown.d.ts +8 -0
  18. package/dist/analysis/format-skill-request-analysis-markdown.d.ts.map +1 -0
  19. package/dist/analysis/format-skill-request-analysis-markdown.js +121 -0
  20. package/dist/analysis/format-skill-request-analysis-markdown.js.map +1 -0
  21. package/dist/analysis/path-utils.d.ts +11 -0
  22. package/dist/analysis/path-utils.d.ts.map +1 -0
  23. package/dist/analysis/path-utils.js +69 -0
  24. package/dist/analysis/path-utils.js.map +1 -0
  25. package/dist/analysis/sanitize-for-packet.d.ts +28 -0
  26. package/dist/analysis/sanitize-for-packet.d.ts.map +1 -0
  27. package/dist/analysis/sanitize-for-packet.js +107 -0
  28. package/dist/analysis/sanitize-for-packet.js.map +1 -0
  29. package/dist/analysis/types.d.ts +124 -0
  30. package/dist/analysis/types.d.ts.map +1 -0
  31. package/dist/analysis/types.js +2 -0
  32. package/dist/analysis/types.js.map +1 -0
  33. package/dist/catalog/canonical-skill-key.d.ts +5 -0
  34. package/dist/catalog/canonical-skill-key.d.ts.map +1 -0
  35. package/dist/catalog/canonical-skill-key.js +16 -0
  36. package/dist/catalog/canonical-skill-key.js.map +1 -0
  37. package/dist/catalog/constants.d.ts +7 -0
  38. package/dist/catalog/constants.d.ts.map +1 -0
  39. package/dist/catalog/constants.js +7 -0
  40. package/dist/catalog/constants.js.map +1 -0
  41. package/dist/catalog/env.d.ts +4 -0
  42. package/dist/catalog/env.d.ts.map +1 -0
  43. package/dist/catalog/env.js +15 -0
  44. package/dist/catalog/env.js.map +1 -0
  45. package/dist/catalog/gateway-template.d.ts +6 -0
  46. package/dist/catalog/gateway-template.d.ts.map +1 -0
  47. package/dist/catalog/gateway-template.js +15 -0
  48. package/dist/catalog/gateway-template.js.map +1 -0
  49. package/dist/catalog/index.d.ts +3 -0
  50. package/dist/catalog/index.d.ts.map +1 -0
  51. package/dist/catalog/index.js +3 -0
  52. package/dist/catalog/index.js.map +1 -0
  53. package/dist/catalog/seed.d.ts +12 -0
  54. package/dist/catalog/seed.d.ts.map +1 -0
  55. package/dist/catalog/seed.js +45 -0
  56. package/dist/catalog/seed.js.map +1 -0
  57. package/dist/catalog/skill-catalog.d.ts +28 -0
  58. package/dist/catalog/skill-catalog.d.ts.map +1 -0
  59. package/dist/catalog/skill-catalog.js +139 -0
  60. package/dist/catalog/skill-catalog.js.map +1 -0
  61. package/dist/catalog/store-factory.d.ts +18 -0
  62. package/dist/catalog/store-factory.d.ts.map +1 -0
  63. package/dist/catalog/store-factory.js +36 -0
  64. package/dist/catalog/store-factory.js.map +1 -0
  65. package/dist/catalog/types.d.ts +61 -0
  66. package/dist/catalog/types.d.ts.map +1 -0
  67. package/dist/catalog/types.js +22 -0
  68. package/dist/catalog/types.js.map +1 -0
  69. package/dist/client/audit-manager.d.ts +27 -0
  70. package/dist/client/audit-manager.d.ts.map +1 -0
  71. package/dist/client/audit-manager.js +260 -0
  72. package/dist/client/audit-manager.js.map +1 -0
  73. package/dist/client/invoke-skill-via-funcx.d.ts +11 -0
  74. package/dist/client/invoke-skill-via-funcx.d.ts.map +1 -0
  75. package/dist/client/invoke-skill-via-funcx.js +51 -0
  76. package/dist/client/invoke-skill-via-funcx.js.map +1 -0
  77. package/dist/client/skill-executor.d.ts.map +1 -1
  78. package/dist/client/skill-executor.js +3 -9
  79. package/dist/client/skill-executor.js.map +1 -1
  80. package/dist/client/task-executor.d.ts +21 -0
  81. package/dist/client/task-executor.d.ts.map +1 -0
  82. package/dist/client/task-executor.js +50 -0
  83. package/dist/client/task-executor.js.map +1 -0
  84. package/dist/errors/skillModelResolutionError.d.ts +28 -0
  85. package/dist/errors/skillModelResolutionError.d.ts.map +1 -0
  86. package/dist/errors/{skill-model-resolution-error.js → skillModelResolutionError.js} +12 -15
  87. package/dist/errors/skillModelResolutionError.js.map +1 -0
  88. package/dist/index.d.ts +7 -8
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +4 -4
  91. package/dist/index.js.map +1 -1
  92. package/dist/invocation/resolveModelConfigForSkillInvoke.d.ts +6 -11
  93. package/dist/invocation/resolveModelConfigForSkillInvoke.d.ts.map +1 -1
  94. package/dist/invocation/resolveModelConfigForSkillInvoke.js +11 -23
  95. package/dist/invocation/resolveModelConfigForSkillInvoke.js.map +1 -1
  96. package/dist/invocation/resolveSkillProfileToWireModel.d.ts +14 -2
  97. package/dist/invocation/resolveSkillProfileToWireModel.d.ts.map +1 -1
  98. package/dist/invocation/resolveSkillProfileToWireModel.js +93 -2
  99. package/dist/invocation/resolveSkillProfileToWireModel.js.map +1 -1
  100. package/dist/metadata.d.ts +7 -0
  101. package/dist/metadata.d.ts.map +1 -0
  102. package/dist/metadata.js +65 -0
  103. package/dist/metadata.js.map +1 -0
  104. package/dist/optimixer/build-optimixer-model-profile.d.ts +18 -0
  105. package/dist/optimixer/build-optimixer-model-profile.d.ts.map +1 -0
  106. package/dist/optimixer/build-optimixer-model-profile.js +69 -0
  107. package/dist/optimixer/build-optimixer-model-profile.js.map +1 -0
  108. package/dist/optimixer/skills-optimixer.d.ts +2 -3
  109. package/dist/optimixer/skills-optimixer.d.ts.map +1 -1
  110. package/dist/optimixer/skills-optimixer.js +8 -11
  111. package/dist/optimixer/skills-optimixer.js.map +1 -1
  112. package/erc-manifest.json +10 -10
  113. package/package.json +1 -1
  114. package/dist/errors/skill-model-resolution-error.d.ts +0 -28
  115. package/dist/errors/skill-model-resolution-error.d.ts.map +0 -1
  116. package/dist/errors/skill-model-resolution-error.js.map +0 -1
  117. package/dist/invocation/optimixerModelProfileFromResolved.d.ts +0 -5
  118. package/dist/invocation/optimixerModelProfileFromResolved.d.ts.map +0 -1
  119. package/dist/invocation/optimixerModelProfileFromResolved.js +0 -76
  120. package/dist/invocation/optimixerModelProfileFromResolved.js.map +0 -1
  121. package/dist/invocation/resolveSkillModelReference.d.ts +0 -18
  122. package/dist/invocation/resolveSkillModelReference.d.ts.map +0 -1
  123. package/dist/invocation/resolveSkillModelReference.js +0 -93
  124. package/dist/invocation/resolveSkillModelReference.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ import type { Catalox } from "@x12i/catalox";
2
+ import type { Logxer } from "@x12i/logxer";
3
+ import type { RunSkillRequest } from "../types.js";
4
+ import type { AnalyzeSkillRequestOptions, AnalyzeSkillRequestResult } from "./types.js";
5
+ /**
6
+ * Preflight analysis for a {@link RunSkillRequest}: builds the sanitized gateway invoke packet
7
+ * and runs SDK deterministic checks. **Not chained into {@link runSkill}** — no `gateway.invoke()`.
8
+ */
9
+ export declare function analyzeSkillRequest(catalox: Catalox, skillRequest: RunSkillRequest, options?: AnalyzeSkillRequestOptions & {
10
+ logger?: Logxer;
11
+ verbose?: boolean;
12
+ }): Promise<AnalyzeSkillRequestResult>;
13
+ //# sourceMappingURL=analyze-skill-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-skill-request.d.ts","sourceRoot":"","sources":["../../src/analysis/analyze-skill-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,OAAO,KAAK,EACR,0BAA0B,EAC1B,yBAAyB,EAG5B,MAAM,YAAY,CAAC;AAqDpB;;;GAGG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,eAAe,EAC7B,OAAO,CAAC,EAAE,0BAA0B,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9E,OAAO,CAAC,yBAAyB,CAAC,CAuDpC"}
@@ -0,0 +1,103 @@
1
+ import { DebugLogAbstract } from "@x12i/logxer";
2
+ import { buildSkillRequestAnalysisPacket } from "./build-skill-request-analysis-packet.js";
3
+ import { formatSkillRequestAnalysisMarkdown } from "./format-skill-request-analysis-markdown.js";
4
+ import { verdictFromFindings } from "./collect-deterministic-findings.js";
5
+ function reportFromFindings(findings, flexMdFrameHint) {
6
+ const verdict = verdictFromFindings(findings);
7
+ return {
8
+ verdict,
9
+ confidence: verdict === "ok" ? 0.85 : verdict === "warnings" ? 0.5 : 0.2,
10
+ inputAssessment: {
11
+ plausible: !findings.some((f) => f.severity === "error"),
12
+ summary: "Deterministic preflight (gateway packet build + static checks).",
13
+ issues: findings.filter((f) => f.category !== "smartInput" && f.category !== "template"),
14
+ },
15
+ smartInputAssessment: {
16
+ configured: findings.some((f) => f.category === "smartInput") || false,
17
+ pathsOk: !findings.some((f) => f.id.startsWith("SMART_INPUT") && f.severity === "error"),
18
+ issues: findings.filter((f) => f.category === "smartInput"),
19
+ },
20
+ templateAssessment: {
21
+ issues: findings.filter((f) => f.category === "template"),
22
+ unresolvedTokens: findings
23
+ .filter((f) => f.id === "TEMPLATE_TOKEN_UNRESOLVED" && f.evidence)
24
+ .map((f) => f.evidence),
25
+ },
26
+ configAssessment: {
27
+ issues: findings.filter((f) => f.category === "modelConfig" || f.category === "catalog"),
28
+ },
29
+ expectedResponse: {
30
+ flexMdFrame: flexMdFrameHint,
31
+ parsedShape: {},
32
+ metadataExpectations: [
33
+ { field: "usage", required: false, notes: "From gateway metadata when invoked." },
34
+ {
35
+ field: "costUsd",
36
+ required: false,
37
+ notes: "USD total when gateway metadata.costStatus is priced (≥9.3) or cost/costUsd is numeric.",
38
+ },
39
+ {
40
+ field: "costStatus",
41
+ required: false,
42
+ notes: 'SDK exposes "unpriced" or legacy "deferred" only — not gateway "priced".',
43
+ },
44
+ ],
45
+ runSkillResponseShape: {
46
+ fields: ["rawText", "flexMd", "parsed", "metadata"],
47
+ },
48
+ },
49
+ findings,
50
+ };
51
+ }
52
+ /**
53
+ * Preflight analysis for a {@link RunSkillRequest}: builds the sanitized gateway invoke packet
54
+ * and runs SDK deterministic checks. **Not chained into {@link runSkill}** — no `gateway.invoke()`.
55
+ */
56
+ export async function analyzeSkillRequest(catalox, skillRequest, options) {
57
+ const built = await buildSkillRequestAnalysisPacket({ catalox, skillRequest, options });
58
+ const { packet, deterministicFindings, gatewayPayload } = built;
59
+ const functionId = skillRequest.skillKey;
60
+ const skillKey = skillRequest.skillKey;
61
+ const logger = options?.logger;
62
+ logger?.debug?.("[AI-SKILLS] analyzeSkillRequest packet built", {
63
+ skillKey,
64
+ findingCount: deterministicFindings.length,
65
+ debugKind: DebugLogAbstract.EVENT,
66
+ });
67
+ if (options?.strictDeterministic && deterministicFindings.some((f) => f.severity === "error")) {
68
+ const ids = deterministicFindings.filter((f) => f.severity === "error").map((f) => f.id);
69
+ throw new Error(`[AI-SKILLS] analyzeSkillRequest strictDeterministic: blocking findings: ${ids.join(", ")}`);
70
+ }
71
+ const report = reportFromFindings(deterministicFindings, packet.flexMdFrameHint);
72
+ const confidence = report.confidence;
73
+ const markdownReport = formatSkillRequestAnalysisMarkdown({
74
+ functionId,
75
+ skillKey,
76
+ report,
77
+ deterministicFindings,
78
+ });
79
+ logger?.info?.("[AI-SKILLS] analyzeSkillRequest completed", {
80
+ skillKey,
81
+ verdict: report.verdict,
82
+ findingCount: deterministicFindings.length,
83
+ debugKind: DebugLogAbstract.EVENT,
84
+ });
85
+ if (options?.verbose) {
86
+ logger?.verbose?.("[AI-SKILLS] analyzeSkillRequest gateway payload", {
87
+ skillKey,
88
+ gatewayPayload,
89
+ debugKind: DebugLogAbstract.EVENT,
90
+ });
91
+ }
92
+ return {
93
+ functionId,
94
+ skillKey,
95
+ verdict: report.verdict,
96
+ confidence,
97
+ report,
98
+ markdownReport,
99
+ deterministicFindings,
100
+ gatewayPayload,
101
+ };
102
+ }
103
+ //# sourceMappingURL=analyze-skill-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-skill-request.js","sourceRoot":"","sources":["../../src/analysis/analyze-skill-request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Catalox } from "@x12i/catalox";
2
+ import type { RunSkillRequest } from "../types.js";
3
+ import type { AnalyzeSkillRequestOptions, BuildSkillRequestAnalysisPacketResult } from "./types.js";
4
+ export type BuildSkillRequestAnalysisPacketParams = {
5
+ catalox: Catalox;
6
+ skillRequest: RunSkillRequest;
7
+ options?: Pick<AnalyzeSkillRequestOptions, "templateOverride" | "maxTemplateCharsInPacket" | "cataloxAppId">;
8
+ };
9
+ /**
10
+ * Builds the real sanitized gateway invoke packet and SDK {@link deterministicFindings}
11
+ * without calling ai-gateway or executing the target skill.
12
+ */
13
+ export declare function buildSkillRequestAnalysisPacket(params: BuildSkillRequestAnalysisPacketParams): Promise<BuildSkillRequestAnalysisPacketResult>;
14
+ //# sourceMappingURL=build-skill-request-analysis-packet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-skill-request-analysis-packet.d.ts","sourceRoot":"","sources":["../../src/analysis/build-skill-request-analysis-packet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgBnD,OAAO,KAAK,EAAE,0BAA0B,EAAE,qCAAqC,EAAE,MAAM,YAAY,CAAC;AAEpG,MAAM,MAAM,qCAAqC,GAAG;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,kBAAkB,GAAG,0BAA0B,GAAG,cAAc,CAAC,CAAC;CAChH,CAAC;AAEF;;;GAGG;AACH,wBAAsB,+BAA+B,CACjD,MAAM,EAAE,qCAAqC,GAC9C,OAAO,CAAC,qCAAqC,CAAC,CAwGhD"}
@@ -0,0 +1,106 @@
1
+ import { buildSkillGatewayInvokePayload } from "../client/build-gateway-invoke-request.js";
2
+ import { renderSkillTemplatesWithRendrix } from "../utils/rendrix-render-skill-templates.js";
3
+ import { defaultAiSkillsCataloxContext, fetchSkillTemplatesFromCatalox, } from "../catalox/skill-templates.js";
4
+ import { resolveGatewayJobAndTaskIds } from "../utils/resolve-gateway-job-task-ids.js";
5
+ import { resolveOutputContractFields } from "../utils/normalize-output-parsed.js";
6
+ import { collectDeterministicFindings } from "./collect-deterministic-findings.js";
7
+ import { sanitizeGatewayPayloadForPacket, sanitizeRunSkillRequestForPacket, sanitizeTemplatesForPacket, } from "./sanitize-for-packet.js";
8
+ import { extractFlexMdFrameHint, extractTemplateTokenInventory } from "./path-utils.js";
9
+ /**
10
+ * Builds the real sanitized gateway invoke packet and SDK {@link deterministicFindings}
11
+ * without calling ai-gateway or executing the target skill.
12
+ */
13
+ export async function buildSkillRequestAnalysisPacket(params) {
14
+ const { catalox, skillRequest, options } = params;
15
+ const maxTemplateChars = options?.maxTemplateCharsInPacket ?? 12_000;
16
+ const functionId = skillRequest.skillKey;
17
+ let instructionsRaw;
18
+ let promptRaw;
19
+ let catalogStatus;
20
+ if (options?.templateOverride) {
21
+ instructionsRaw = options.templateOverride.instructions;
22
+ promptRaw = options.templateOverride.prompt;
23
+ }
24
+ else {
25
+ const cxCtx = defaultAiSkillsCataloxContext({ appId: options?.cataloxAppId });
26
+ const fetched = await fetchSkillTemplatesFromCatalox(catalox, cxCtx, skillRequest.skillKey, {
27
+ audit: false,
28
+ });
29
+ instructionsRaw = fetched.instructionsPayload;
30
+ promptRaw = fetched.promptPayload;
31
+ catalogStatus = fetched.status;
32
+ }
33
+ const { jobId, taskId } = resolveGatewayJobAndTaskIds({
34
+ jobId: skillRequest.jobId,
35
+ taskId: skillRequest.taskId,
36
+ identity: skillRequest.identity,
37
+ });
38
+ const gatewayPayload = buildSkillGatewayInvokePayload({
39
+ skillRequest,
40
+ jobId,
41
+ taskId,
42
+ instructionsPayload: instructionsRaw,
43
+ promptPayload: promptRaw,
44
+ });
45
+ let instructionsRendered = instructionsRaw;
46
+ let promptRendered = promptRaw;
47
+ const renderFindings = [];
48
+ try {
49
+ const rendered = renderSkillTemplatesWithRendrix(skillRequest, instructionsRaw, promptRaw);
50
+ instructionsRendered = rendered.instructionsRendered;
51
+ promptRendered = rendered.promptRendered;
52
+ }
53
+ catch (e) {
54
+ renderFindings.push({
55
+ id: "TEMPLATE_RENDER_FAILED",
56
+ severity: "error",
57
+ category: "template",
58
+ message: e instanceof Error ? e.message : String(e),
59
+ suggestion: "Fix smartInput paths, workingMemory, or template tokens before invoke.",
60
+ });
61
+ }
62
+ const workingMemory = (gatewayPayload.workingMemory ?? {});
63
+ const deterministicFindings = [
64
+ ...renderFindings,
65
+ ...collectDeterministicFindings({
66
+ skillRequest,
67
+ workingMemory,
68
+ instructionsRaw,
69
+ promptRaw,
70
+ instructionsRendered,
71
+ promptRendered,
72
+ }),
73
+ ];
74
+ const templatesSanitized = sanitizeTemplatesForPacket({ instructions: instructionsRaw, prompt: promptRaw }, { instructions: instructionsRendered, prompt: promptRendered }, maxTemplateChars);
75
+ if (catalogStatus) {
76
+ templatesSanitized.catalogStatus = catalogStatus;
77
+ }
78
+ const packet = {
79
+ functionId,
80
+ aiRequestId: gatewayPayload.aiRequestId,
81
+ jobId: jobId || undefined,
82
+ taskId: taskId || undefined,
83
+ agentId: skillRequest.agentId,
84
+ jobTypeId: skillRequest.jobTypeId,
85
+ taskTypeId: skillRequest.taskTypeId,
86
+ gatewayPayload: sanitizeGatewayPayloadForPacket(gatewayPayload, maxTemplateChars),
87
+ runSkillRequest: sanitizeRunSkillRequestForPacket(skillRequest),
88
+ templates: templatesSanitized,
89
+ ...(skillRequest.outputContract !== undefined ? { outputContract: skillRequest.outputContract } : {}),
90
+ resolvedOutputFields: resolveOutputContractFields(skillRequest.outputContract),
91
+ deterministicFindings,
92
+ flexMdFrameHint: extractFlexMdFrameHint(instructionsRaw, promptRaw, instructionsRendered),
93
+ templateTokenInventory: extractTemplateTokenInventory(instructionsRaw, promptRaw),
94
+ };
95
+ return {
96
+ packet,
97
+ deterministicFindings,
98
+ gatewayPayload,
99
+ instructionsRaw,
100
+ promptRaw,
101
+ instructionsRendered,
102
+ promptRendered,
103
+ catalogStatus,
104
+ };
105
+ }
106
+ //# sourceMappingURL=build-skill-request-analysis-packet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-skill-request-analysis-packet.js","sourceRoot":"","sources":["../../src/analysis/build-skill-request-analysis-packet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { RunSkillRequest } from "../types.js";
2
+ import type { SkillRequestAnalysisFinding } from "./types.js";
3
+ export type CollectDeterministicFindingsParams = {
4
+ skillRequest: RunSkillRequest;
5
+ workingMemory: Record<string, unknown>;
6
+ instructionsRaw: string;
7
+ promptRaw: string;
8
+ instructionsRendered: string;
9
+ promptRendered: string;
10
+ templateSizeThreshold?: number;
11
+ };
12
+ export declare function collectDeterministicFindings(params: CollectDeterministicFindingsParams): SkillRequestAnalysisFinding[];
13
+ export declare function verdictFromFindings(findings: SkillRequestAnalysisFinding[]): "ok" | "warnings" | "errors";
14
+ //# sourceMappingURL=collect-deterministic-findings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-deterministic-findings.d.ts","sourceRoot":"","sources":["../../src/analysis/collect-deterministic-findings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAUnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AA8B9D,MAAM,MAAM,kCAAkC,GAAG;IAC7C,YAAY,EAAE,eAAe,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,kCAAkC,GAAG,2BAA2B,EAAE,CAoQtH;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,2BAA2B,EAAE,GAAG,IAAI,GAAG,UAAU,GAAG,QAAQ,CAIzG"}
@@ -0,0 +1,245 @@
1
+ import { validateMandatoryActivixInvokeFields } from "../utils/validate-mandatory-activix-invoke-fields.js";
2
+ import { validateSessionIdAgreement } from "../utils/validate-session-id.js";
3
+ import { resolveGatewayJobAndTaskIds } from "../utils/resolve-gateway-job-task-ids.js";
4
+ import { resolveAiEngineIdForRunSkill } from "../utils/resolve-run-skill-ai-engine.js";
5
+ import { assessModelConfigForInvoke } from "../utils/validate-model-config-for-invoke.js";
6
+ import { resolveOutputContractFields, markdownHeadingToFieldKey, } from "../utils/normalize-output-parsed.js";
7
+ import { extractFlexMdFrameHint, extractTemplateTokenInventory, findUnresolvedMustacheTokens, isEmptyResolvedValue, resolveDotPath, } from "./path-utils.js";
8
+ const SECTION_HEADER = /^#{2,3}\s+(.+?)\s*$/gm;
9
+ function finding(partial) {
10
+ return partial;
11
+ }
12
+ function templateSectionKeys(...texts) {
13
+ const keys = new Set();
14
+ for (const text of texts) {
15
+ if (!text)
16
+ continue;
17
+ for (const match of text.matchAll(SECTION_HEADER)) {
18
+ const key = markdownHeadingToFieldKey(match[1] ?? "");
19
+ if (key)
20
+ keys.add(key);
21
+ }
22
+ }
23
+ return keys;
24
+ }
25
+ export function collectDeterministicFindings(params) {
26
+ const findings = [];
27
+ const { skillRequest, workingMemory } = params;
28
+ const hasSmartInput = skillRequest.smartInput !== undefined;
29
+ try {
30
+ validateMandatoryActivixInvokeFields(skillRequest);
31
+ }
32
+ catch (e) {
33
+ findings.push(finding({
34
+ id: "ACTIVIX_MANDATORY_FIELDS_MISSING",
35
+ severity: "error",
36
+ category: "activix",
37
+ message: e instanceof Error ? e.message : String(e),
38
+ suggestion: "Set non-empty agentId, jobTypeId, and taskTypeId on RunSkillRequest.",
39
+ }));
40
+ }
41
+ const { jobId, taskId, missingJobId, missingTaskId } = resolveGatewayJobAndTaskIds({
42
+ jobId: skillRequest.jobId,
43
+ taskId: skillRequest.taskId,
44
+ identity: skillRequest.identity,
45
+ });
46
+ if (missingJobId) {
47
+ findings.push(finding({
48
+ id: "JOB_ID_MISSING",
49
+ severity: "warning",
50
+ category: "activix",
51
+ path: "jobId",
52
+ message: "jobId is missing or empty on the request and identity.",
53
+ suggestion: "Supply a non-empty jobId before invoke.",
54
+ }));
55
+ }
56
+ if (missingTaskId) {
57
+ findings.push(finding({
58
+ id: "TASK_ID_MISSING",
59
+ severity: "warning",
60
+ category: "activix",
61
+ path: "taskId",
62
+ message: "taskId is missing or empty on the request and identity.",
63
+ suggestion: "Supply a non-empty taskId before invoke.",
64
+ }));
65
+ }
66
+ try {
67
+ const identitySession = skillRequest.identity &&
68
+ typeof skillRequest.identity === "object" &&
69
+ !Array.isArray(skillRequest.identity)
70
+ ? skillRequest.identity.sessionId
71
+ : undefined;
72
+ validateSessionIdAgreement(skillRequest.sessionId, identitySession);
73
+ }
74
+ catch (e) {
75
+ findings.push(finding({
76
+ id: "SESSION_ID_MISMATCH",
77
+ severity: "error",
78
+ category: "session",
79
+ path: "sessionId",
80
+ message: e instanceof Error ? e.message : String(e),
81
+ suggestion: "Align sessionId and identity.sessionId or omit one.",
82
+ }));
83
+ }
84
+ const modelIssue = assessModelConfigForInvoke(skillRequest.modelConfig);
85
+ if (modelIssue?.code === "MODEL_MISSING") {
86
+ findings.push(finding({
87
+ id: "MODEL_CONFIG_MISSING",
88
+ severity: "error",
89
+ category: "modelConfig",
90
+ path: "modelConfig.model",
91
+ message: modelIssue.message,
92
+ suggestion: "Set modelConfig.model (or modelId) to the concrete provider wire id from resolveInvocationPlan in @exellix/ai-tasks.",
93
+ }));
94
+ }
95
+ const mc = skillRequest.modelConfig;
96
+ if (mc &&
97
+ (mc.maxTokens !== undefined || mc.max_completion_tokens !== undefined || mc.max_output_tokens !== undefined)) {
98
+ findings.push(finding({
99
+ id: "CALLER_MAX_TOKENS_IGNORED",
100
+ severity: "warning",
101
+ category: "modelConfig",
102
+ path: "modelConfig.maxTokens",
103
+ message: "Caller-supplied maxTokens is ignored — @x12i/optimixer sets the completion budget before gateway.invoke() (gateway v10 requires maxTokens; runSkill merges Optimixer output).",
104
+ suggestion: "Remove maxTokens from modelConfig; tune Catalox optimixer catalog fields instead.",
105
+ }));
106
+ }
107
+ try {
108
+ resolveAiEngineIdForRunSkill(skillRequest);
109
+ }
110
+ catch (e) {
111
+ findings.push(finding({
112
+ id: "AI_ENGINE_ID_UNKNOWN",
113
+ severity: "error",
114
+ category: "catalog",
115
+ path: "aiEngineId",
116
+ message: e instanceof Error ? e.message : String(e),
117
+ }));
118
+ }
119
+ const inputEmpty = skillRequest.input === undefined ||
120
+ skillRequest.input === null ||
121
+ (typeof skillRequest.input === "string" && skillRequest.input.trim() === "") ||
122
+ (typeof skillRequest.input === "object" &&
123
+ !Array.isArray(skillRequest.input) &&
124
+ Object.keys(skillRequest.input).length === 0);
125
+ if (inputEmpty) {
126
+ findings.push(finding({
127
+ id: "INPUT_EMPTY",
128
+ severity: "warning",
129
+ category: "workingMemory",
130
+ path: "input",
131
+ message: "RunSkillRequest.input is empty; workingMemory.input may not carry user content.",
132
+ }));
133
+ }
134
+ const smartInput = skillRequest.smartInput;
135
+ const paths = smartInput?.paths ?? [];
136
+ if (paths.length > 0) {
137
+ for (const entry of paths) {
138
+ const path = typeof entry.path === "string" ? entry.path.trim() : "";
139
+ if (!path) {
140
+ findings.push(finding({
141
+ id: "SMART_INPUT_PATH_EMPTY",
142
+ severity: "warning",
143
+ category: "smartInput",
144
+ message: "smartInput.paths contains an entry with an empty path.",
145
+ }));
146
+ continue;
147
+ }
148
+ const resolved = resolveDotPath(workingMemory, path);
149
+ const required = entry.required === true;
150
+ if (!resolved.found || isEmptyResolvedValue(resolved.value)) {
151
+ findings.push(finding({
152
+ id: required ? "SMART_INPUT_PATH_MISSING" : "SMART_INPUT_PATH_EMPTY_VALUE",
153
+ severity: required ? "error" : "warning",
154
+ category: "smartInput",
155
+ path,
156
+ message: required
157
+ ? `Required smartInput path "${path}" does not resolve in workingMemory.`
158
+ : `smartInput path "${path}" is missing or empty in workingMemory.`,
159
+ suggestion: `Ensure variables, executionMemory, or input populate "${path}".`,
160
+ }));
161
+ }
162
+ }
163
+ }
164
+ const unresolvedInstr = findUnresolvedMustacheTokens(params.instructionsRendered, hasSmartInput);
165
+ const unresolvedPrompt = findUnresolvedMustacheTokens(params.promptRendered, hasSmartInput);
166
+ for (const token of [...unresolvedInstr, ...unresolvedPrompt]) {
167
+ findings.push(finding({
168
+ id: "TEMPLATE_TOKEN_UNRESOLVED",
169
+ severity: "warning",
170
+ category: "template",
171
+ message: `Rendered template still contains unresolved token ${token}.`,
172
+ evidence: token,
173
+ }));
174
+ }
175
+ const contractFields = resolveOutputContractFields(skillRequest.outputContract);
176
+ if (contractFields.length > 0) {
177
+ const sectionKeys = templateSectionKeys(params.instructionsRaw, params.promptRaw);
178
+ const flexHint = extractFlexMdFrameHint(params.instructionsRaw, params.promptRaw);
179
+ for (const field of contractFields) {
180
+ if (!sectionKeys.has(field) && flexHint === undefined) {
181
+ findings.push(finding({
182
+ id: "OUTPUT_CONTRACT_FIELD_NOT_IN_TEMPLATE",
183
+ severity: "warning",
184
+ category: "outputContract",
185
+ path: field,
186
+ message: `outputContract expects "${field}" but no matching ### heading was found in templates.`,
187
+ suggestion: "Add a markdown section or FlexMD @payload for this field.",
188
+ }));
189
+ }
190
+ }
191
+ }
192
+ const inventory = extractTemplateTokenInventory(params.instructionsRaw, params.promptRaw);
193
+ for (const tokenPath of inventory) {
194
+ const root = tokenPath.split(".")[0];
195
+ if (root === "smartInput")
196
+ continue;
197
+ const resolved = resolveDotPath(workingMemory, tokenPath);
198
+ if (!resolved.found && root !== "input" && root !== "variables") {
199
+ const altRoot = resolveDotPath(workingMemory, root);
200
+ if (!altRoot.found) {
201
+ findings.push(finding({
202
+ id: "TEMPLATE_TOKEN_LIKELY_MISSING",
203
+ severity: "info",
204
+ category: "template",
205
+ path: tokenPath,
206
+ message: `Template references "{{${tokenPath}}}" but "${root}" is not present at workingMemory root.`,
207
+ }));
208
+ }
209
+ }
210
+ }
211
+ const totalChars = params.instructionsRaw.length +
212
+ params.promptRaw.length +
213
+ params.instructionsRendered.length +
214
+ params.promptRendered.length;
215
+ const threshold = params.templateSizeThreshold ?? 80_000;
216
+ if (totalChars > threshold) {
217
+ findings.push(finding({
218
+ id: "TEMPLATE_PAYLOAD_LARGE",
219
+ severity: "warning",
220
+ category: "template",
221
+ message: `Combined template text is ~${totalChars} characters (threshold ${threshold}).`,
222
+ suggestion: "Consider shortening templates or raising context limits.",
223
+ }));
224
+ }
225
+ if (!skillRequest.skillKey?.trim()) {
226
+ findings.push(finding({
227
+ id: "SKILL_KEY_MISSING",
228
+ severity: "error",
229
+ category: "catalog",
230
+ path: "skillKey",
231
+ message: "skillKey is required for Catalox template load and gateway actionRef.",
232
+ }));
233
+ }
234
+ void jobId;
235
+ void taskId;
236
+ return findings;
237
+ }
238
+ export function verdictFromFindings(findings) {
239
+ if (findings.some((f) => f.severity === "error"))
240
+ return "errors";
241
+ if (findings.some((f) => f.severity === "warning"))
242
+ return "warnings";
243
+ return "ok";
244
+ }
245
+ //# sourceMappingURL=collect-deterministic-findings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-deterministic-findings.js","sourceRoot":"","sources":["../../src/analysis/collect-deterministic-findings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** FuncX catalog id (slash alias accepted by `run()`). Requires `@x12i/funcx` ≥ 4.3.3. */
2
+ export declare const FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID = "ai-skills/analyze-gateway-invoke-request";
3
+ /** Minimum `@x12i/funcx` version that ships the gateway invoke analyzer (ai-profiles mode presets ≥4.3.3). */
4
+ export declare const FUNCX_MIN_VERSION_FOR_ANALYZE_GATEWAY = "4.3.3";
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/analysis/constants.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,eAAO,MAAM,uCAAuC,6CAA6C,CAAC;AAElG,8GAA8G;AAC9G,eAAO,MAAM,qCAAqC,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** FuncX catalog id (slash alias accepted by `run()`). Requires `@x12i/funcx` ≥ 4.3.3. */
2
+ export const FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID = "ai-skills/analyze-gateway-invoke-request";
3
+ /** Minimum `@x12i/funcx` version that ships the gateway invoke analyzer (ai-profiles mode presets ≥4.3.3). */
4
+ export const FUNCX_MIN_VERSION_FOR_ANALYZE_GATEWAY = "4.3.3";
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/analysis/constants.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,CAAC,MAAM,uCAAuC,GAAG,0CAA0C,CAAC;AAElG,8GAA8G;AAC9G,MAAM,CAAC,MAAM,qCAAqC,GAAG,OAAO,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SkillRequestAnalysisFinding, SkillRequestAnalysisReport } from "./types.js";
2
+ export declare function formatSkillRequestAnalysisMarkdown(args: {
3
+ functionId: string;
4
+ skillKey: string;
5
+ report: SkillRequestAnalysisReport;
6
+ deterministicFindings?: SkillRequestAnalysisFinding[];
7
+ }): string;
8
+ //# sourceMappingURL=format-skill-request-analysis-markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-skill-request-analysis-markdown.d.ts","sourceRoot":"","sources":["../../src/analysis/format-skill-request-analysis-markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAQ1F,wBAAgB,kCAAkC,CAAC,IAAI,EAAE;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,0BAA0B,CAAC;IACnC,qBAAqB,CAAC,EAAE,2BAA2B,EAAE,CAAC;CACzD,GAAG,MAAM,CA2GT"}