@exellix/ai-skills 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +600 -0
- package/dist/analysis/analyze-skill-request.d.ts +12 -0
- package/dist/analysis/analyze-skill-request.d.ts.map +1 -0
- package/dist/analysis/analyze-skill-request.js +201 -0
- package/dist/analysis/analyze-skill-request.js.map +1 -0
- package/dist/analysis/build-skill-request-analysis-packet.d.ts +14 -0
- package/dist/analysis/build-skill-request-analysis-packet.d.ts.map +1 -0
- package/dist/analysis/build-skill-request-analysis-packet.js +106 -0
- package/dist/analysis/build-skill-request-analysis-packet.js.map +1 -0
- package/dist/analysis/collect-deterministic-findings.d.ts +14 -0
- package/dist/analysis/collect-deterministic-findings.d.ts.map +1 -0
- package/dist/analysis/collect-deterministic-findings.js +221 -0
- package/dist/analysis/collect-deterministic-findings.js.map +1 -0
- package/dist/analysis/constants.d.ts +5 -0
- package/dist/analysis/constants.d.ts.map +1 -0
- package/dist/analysis/constants.js +5 -0
- package/dist/analysis/constants.js.map +1 -0
- package/dist/analysis/format-skill-request-analysis-markdown.d.ts +8 -0
- package/dist/analysis/format-skill-request-analysis-markdown.d.ts.map +1 -0
- package/dist/analysis/format-skill-request-analysis-markdown.js +121 -0
- package/dist/analysis/format-skill-request-analysis-markdown.js.map +1 -0
- package/dist/analysis/path-utils.d.ts +11 -0
- package/dist/analysis/path-utils.d.ts.map +1 -0
- package/dist/analysis/path-utils.js +69 -0
- package/dist/analysis/path-utils.js.map +1 -0
- package/dist/analysis/sanitize-for-packet.d.ts +28 -0
- package/dist/analysis/sanitize-for-packet.d.ts.map +1 -0
- package/dist/analysis/sanitize-for-packet.js +107 -0
- package/dist/analysis/sanitize-for-packet.js.map +1 -0
- package/dist/analysis/types.d.ts +139 -0
- package/dist/analysis/types.d.ts.map +1 -0
- package/dist/analysis/types.js +2 -0
- package/dist/analysis/types.js.map +1 -0
- package/dist/catalog/canonical-skill-key.d.ts +5 -0
- package/dist/catalog/canonical-skill-key.d.ts.map +1 -0
- package/dist/catalog/canonical-skill-key.js +16 -0
- package/dist/catalog/canonical-skill-key.js.map +1 -0
- package/dist/catalog/constants.d.ts +7 -0
- package/dist/catalog/constants.d.ts.map +1 -0
- package/dist/catalog/constants.js +7 -0
- package/dist/catalog/constants.js.map +1 -0
- package/dist/catalog/env.d.ts +4 -0
- package/dist/catalog/env.d.ts.map +1 -0
- package/dist/catalog/env.js +15 -0
- package/dist/catalog/env.js.map +1 -0
- package/dist/catalog/gateway-template.d.ts +6 -0
- package/dist/catalog/gateway-template.d.ts.map +1 -0
- package/dist/catalog/gateway-template.js +15 -0
- package/dist/catalog/gateway-template.js.map +1 -0
- package/dist/catalog/index.d.ts +3 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +3 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/catalog/seed.d.ts +12 -0
- package/dist/catalog/seed.d.ts.map +1 -0
- package/dist/catalog/seed.js +45 -0
- package/dist/catalog/seed.js.map +1 -0
- package/dist/catalog/skill-catalog.d.ts +28 -0
- package/dist/catalog/skill-catalog.d.ts.map +1 -0
- package/dist/catalog/skill-catalog.js +139 -0
- package/dist/catalog/skill-catalog.js.map +1 -0
- package/dist/catalog/store-factory.d.ts +18 -0
- package/dist/catalog/store-factory.d.ts.map +1 -0
- package/dist/catalog/store-factory.js +36 -0
- package/dist/catalog/store-factory.js.map +1 -0
- package/dist/catalog/types.d.ts +61 -0
- package/dist/catalog/types.d.ts.map +1 -0
- package/dist/catalog/types.js +22 -0
- package/dist/catalog/types.js.map +1 -0
- package/dist/catalox/ai-engines-catalog.d.ts +24 -0
- package/dist/catalox/ai-engines-catalog.d.ts.map +1 -0
- package/dist/catalox/ai-engines-catalog.js +89 -0
- package/dist/catalox/ai-engines-catalog.js.map +1 -0
- package/dist/catalox/ai-skills-catalog.d.ts +32 -0
- package/dist/catalox/ai-skills-catalog.d.ts.map +1 -0
- package/dist/catalox/ai-skills-catalog.js +202 -0
- package/dist/catalox/ai-skills-catalog.js.map +1 -0
- package/dist/catalox/catalox-skill-errors.d.ts +15 -0
- package/dist/catalox/catalox-skill-errors.d.ts.map +1 -0
- package/dist/catalox/catalox-skill-errors.js +29 -0
- package/dist/catalox/catalox-skill-errors.js.map +1 -0
- package/dist/catalox/index.d.ts +10 -0
- package/dist/catalox/index.d.ts.map +1 -0
- package/dist/catalox/index.js +10 -0
- package/dist/catalox/index.js.map +1 -0
- package/dist/catalox/init-firebase-and-catalox.d.ts +8 -0
- package/dist/catalox/init-firebase-and-catalox.d.ts.map +1 -0
- package/dist/catalox/init-firebase-and-catalox.js +48 -0
- package/dist/catalox/init-firebase-and-catalox.js.map +1 -0
- package/dist/catalox/list-ai-skills-catalog.d.ts +24 -0
- package/dist/catalox/list-ai-skills-catalog.d.ts.map +1 -0
- package/dist/catalox/list-ai-skills-catalog.js +38 -0
- package/dist/catalox/list-ai-skills-catalog.js.map +1 -0
- package/dist/catalox/skill-gateway-template-utils.d.ts +11 -0
- package/dist/catalox/skill-gateway-template-utils.d.ts.map +1 -0
- package/dist/catalox/skill-gateway-template-utils.js +31 -0
- package/dist/catalox/skill-gateway-template-utils.js.map +1 -0
- package/dist/catalox/skill-template-catalog-mutations.d.ts +143 -0
- package/dist/catalox/skill-template-catalog-mutations.d.ts.map +1 -0
- package/dist/catalox/skill-template-catalog-mutations.js +470 -0
- package/dist/catalox/skill-template-catalog-mutations.js.map +1 -0
- package/dist/catalox/skill-template-markdown.d.ts +34 -0
- package/dist/catalox/skill-template-markdown.d.ts.map +1 -0
- package/dist/catalox/skill-template-markdown.js +106 -0
- package/dist/catalox/skill-template-markdown.js.map +1 -0
- package/dist/catalox/skill-templates.d.ts +72 -0
- package/dist/catalox/skill-templates.d.ts.map +1 -0
- package/dist/catalox/skill-templates.js +80 -0
- package/dist/catalox/skill-templates.js.map +1 -0
- package/dist/client/audit-manager.d.ts +27 -0
- package/dist/client/audit-manager.d.ts.map +1 -0
- package/dist/client/audit-manager.js +260 -0
- package/dist/client/audit-manager.js.map +1 -0
- package/dist/client/base-client.d.ts +19 -0
- package/dist/client/base-client.d.ts.map +1 -0
- package/dist/client/base-client.js +20 -0
- package/dist/client/base-client.js.map +1 -0
- package/dist/client/build-gateway-invoke-request.d.ts +32 -0
- package/dist/client/build-gateway-invoke-request.d.ts.map +1 -0
- package/dist/client/build-gateway-invoke-request.js +135 -0
- package/dist/client/build-gateway-invoke-request.js.map +1 -0
- package/dist/client/invoke-skill-via-funcx.d.ts +11 -0
- package/dist/client/invoke-skill-via-funcx.d.ts.map +1 -0
- package/dist/client/invoke-skill-via-funcx.js +51 -0
- package/dist/client/invoke-skill-via-funcx.js.map +1 -0
- package/dist/client/registry-manager.d.ts +94 -0
- package/dist/client/registry-manager.d.ts.map +1 -0
- package/dist/client/registry-manager.js +287 -0
- package/dist/client/registry-manager.js.map +1 -0
- package/dist/client/skill-executor.d.ts +35 -0
- package/dist/client/skill-executor.d.ts.map +1 -0
- package/dist/client/skill-executor.js +316 -0
- package/dist/client/skill-executor.js.map +1 -0
- package/dist/client/task-executor.d.ts +21 -0
- package/dist/client/task-executor.d.ts.map +1 -0
- package/dist/client/task-executor.js +50 -0
- package/dist/client/task-executor.js.map +1 -0
- package/dist/client.d.ts +116 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +406 -0
- package/dist/client.js.map +1 -0
- package/dist/diagnostics/gateway-usage.d.ts +3 -0
- package/dist/diagnostics/gateway-usage.d.ts.map +1 -0
- package/dist/diagnostics/gateway-usage.js +26 -0
- package/dist/diagnostics/gateway-usage.js.map +1 -0
- package/dist/diagnostics/map-gateway-trace.d.ts +43 -0
- package/dist/diagnostics/map-gateway-trace.d.ts.map +1 -0
- package/dist/diagnostics/map-gateway-trace.js +243 -0
- package/dist/diagnostics/map-gateway-trace.js.map +1 -0
- package/dist/diagnostics/trace-mode.d.ts +9 -0
- package/dist/diagnostics/trace-mode.d.ts.map +1 -0
- package/dist/diagnostics/trace-mode.js +8 -0
- package/dist/diagnostics/trace-mode.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata.d.ts +7 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +65 -0
- package/dist/metadata.js.map +1 -0
- package/dist/parsers/context-parser.d.ts +2 -0
- package/dist/parsers/context-parser.d.ts.map +1 -0
- package/dist/parsers/context-parser.js +5 -0
- package/dist/parsers/context-parser.js.map +1 -0
- package/dist/parsers/input-parser.d.ts +2 -0
- package/dist/parsers/input-parser.d.ts.map +1 -0
- package/dist/parsers/input-parser.js +5 -0
- package/dist/parsers/input-parser.js.map +1 -0
- package/dist/runtime-objects.d.ts +11 -0
- package/dist/runtime-objects.d.ts.map +1 -0
- package/dist/runtime-objects.js +21 -0
- package/dist/runtime-objects.js.map +1 -0
- package/dist/skill-execution-trace-error.d.ts +20 -0
- package/dist/skill-execution-trace-error.d.ts.map +1 -0
- package/dist/skill-execution-trace-error.js +21 -0
- package/dist/skill-execution-trace-error.js.map +1 -0
- package/dist/types.d.ts +534 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/build-activix-billing-patch.d.ts +24 -0
- package/dist/utils/build-activix-billing-patch.d.ts.map +1 -0
- package/dist/utils/build-activix-billing-patch.js +70 -0
- package/dist/utils/build-activix-billing-patch.js.map +1 -0
- package/dist/utils/enrich-activix-identity.d.ts +30 -0
- package/dist/utils/enrich-activix-identity.d.ts.map +1 -0
- package/dist/utils/enrich-activix-identity.js +34 -0
- package/dist/utils/enrich-activix-identity.js.map +1 -0
- package/dist/utils/exellix-skills-logxer-defaults.d.ts +16 -0
- package/dist/utils/exellix-skills-logxer-defaults.d.ts.map +1 -0
- package/dist/utils/exellix-skills-logxer-defaults.js +37 -0
- package/dist/utils/exellix-skills-logxer-defaults.js.map +1 -0
- package/dist/utils/flex-md-parser.d.ts +23 -0
- package/dist/utils/flex-md-parser.d.ts.map +1 -0
- package/dist/utils/flex-md-parser.js +98 -0
- package/dist/utils/flex-md-parser.js.map +1 -0
- package/dist/utils/gateway-execution-summary.d.ts +18 -0
- package/dist/utils/gateway-execution-summary.d.ts.map +1 -0
- package/dist/utils/gateway-execution-summary.js +42 -0
- package/dist/utils/gateway-execution-summary.js.map +1 -0
- package/dist/utils/gateway-invoke-rejection.d.ts +9 -0
- package/dist/utils/gateway-invoke-rejection.d.ts.map +1 -0
- package/dist/utils/gateway-invoke-rejection.js +28 -0
- package/dist/utils/gateway-invoke-rejection.js.map +1 -0
- package/dist/utils/normalize-billing-metadata.d.ts +17 -0
- package/dist/utils/normalize-billing-metadata.d.ts.map +1 -0
- package/dist/utils/normalize-billing-metadata.js +75 -0
- package/dist/utils/normalize-billing-metadata.js.map +1 -0
- package/dist/utils/normalize-output-parsed.d.ts +25 -0
- package/dist/utils/normalize-output-parsed.d.ts.map +1 -0
- package/dist/utils/normalize-output-parsed.js +128 -0
- package/dist/utils/normalize-output-parsed.js.map +1 -0
- package/dist/utils/patch-activix-activity-after-skill.d.ts +19 -0
- package/dist/utils/patch-activix-activity-after-skill.d.ts.map +1 -0
- package/dist/utils/patch-activix-activity-after-skill.js +81 -0
- package/dist/utils/patch-activix-activity-after-skill.js.map +1 -0
- package/dist/utils/rendrix-render-skill-templates.d.ts +14 -0
- package/dist/utils/rendrix-render-skill-templates.d.ts.map +1 -0
- package/dist/utils/rendrix-render-skill-templates.js +25 -0
- package/dist/utils/rendrix-render-skill-templates.js.map +1 -0
- package/dist/utils/resolve-activity-id.d.ts +9 -0
- package/dist/utils/resolve-activity-id.d.ts.map +1 -0
- package/dist/utils/resolve-activity-id.js +27 -0
- package/dist/utils/resolve-activity-id.js.map +1 -0
- package/dist/utils/resolve-gateway-job-task-ids.d.ts +19 -0
- package/dist/utils/resolve-gateway-job-task-ids.d.ts.map +1 -0
- package/dist/utils/resolve-gateway-job-task-ids.js +21 -0
- package/dist/utils/resolve-gateway-job-task-ids.js.map +1 -0
- package/dist/utils/resolve-identity.d.ts +12 -0
- package/dist/utils/resolve-identity.d.ts.map +1 -0
- package/dist/utils/resolve-identity.js +36 -0
- package/dist/utils/resolve-identity.js.map +1 -0
- package/dist/utils/resolve-run-skill-ai-engine.d.ts +8 -0
- package/dist/utils/resolve-run-skill-ai-engine.d.ts.map +1 -0
- package/dist/utils/resolve-run-skill-ai-engine.js +20 -0
- package/dist/utils/resolve-run-skill-ai-engine.js.map +1 -0
- package/dist/utils/run-skill-request.d.ts +11 -0
- package/dist/utils/run-skill-request.d.ts.map +1 -0
- package/dist/utils/run-skill-request.js +44 -0
- package/dist/utils/run-skill-request.js.map +1 -0
- package/dist/utils/validate-mandatory-activix-invoke-fields.d.ts +7 -0
- package/dist/utils/validate-mandatory-activix-invoke-fields.d.ts.map +1 -0
- package/dist/utils/validate-mandatory-activix-invoke-fields.js +16 -0
- package/dist/utils/validate-mandatory-activix-invoke-fields.js.map +1 -0
- package/dist/utils/validate-session-id.d.ts +6 -0
- package/dist/utils/validate-session-id.d.ts.map +1 -0
- package/dist/utils/validate-session-id.js +18 -0
- package/dist/utils/validate-session-id.js.map +1 -0
- package/erc-manifest.json +11 -0
- package/package.json +76 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { run } from "@x12i/funcx/functions";
|
|
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
|
+
import { FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID } from "./constants.js";
|
|
6
|
+
function emptyReportFromFindings(findings, flexMdFrameHint) {
|
|
7
|
+
const verdict = verdictFromFindings(findings);
|
|
8
|
+
return {
|
|
9
|
+
verdict,
|
|
10
|
+
confidence: verdict === "ok" ? 0.85 : verdict === "warnings" ? 0.5 : 0.2,
|
|
11
|
+
inputAssessment: {
|
|
12
|
+
plausible: !findings.some((f) => f.severity === "error"),
|
|
13
|
+
summary: "Deterministic-only analysis (FuncX LLM skipped).",
|
|
14
|
+
issues: findings.filter((f) => f.category !== "smartInput" && f.category !== "template"),
|
|
15
|
+
},
|
|
16
|
+
smartInputAssessment: {
|
|
17
|
+
configured: findings.some((f) => f.category === "smartInput") || false,
|
|
18
|
+
pathsOk: !findings.some((f) => f.id.startsWith("SMART_INPUT") && f.severity === "error"),
|
|
19
|
+
issues: findings.filter((f) => f.category === "smartInput"),
|
|
20
|
+
},
|
|
21
|
+
templateAssessment: {
|
|
22
|
+
issues: findings.filter((f) => f.category === "template"),
|
|
23
|
+
unresolvedTokens: findings
|
|
24
|
+
.filter((f) => f.id === "TEMPLATE_TOKEN_UNRESOLVED" && f.evidence)
|
|
25
|
+
.map((f) => f.evidence),
|
|
26
|
+
},
|
|
27
|
+
configAssessment: {
|
|
28
|
+
issues: findings.filter((f) => f.category === "modelConfig" || f.category === "catalog"),
|
|
29
|
+
},
|
|
30
|
+
expectedResponse: {
|
|
31
|
+
flexMdFrame: flexMdFrameHint,
|
|
32
|
+
parsedShape: {},
|
|
33
|
+
metadataExpectations: [
|
|
34
|
+
{ field: "usage", required: false, notes: "From gateway metadata when invoked." },
|
|
35
|
+
{
|
|
36
|
+
field: "costUsd",
|
|
37
|
+
required: false,
|
|
38
|
+
notes: "USD total when gateway metadata.costStatus is priced (≥9.3) or cost/costUsd is numeric.",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
field: "costStatus",
|
|
42
|
+
required: false,
|
|
43
|
+
notes: 'SDK exposes "unpriced" or legacy "deferred" only — not gateway "priced".',
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
runSkillResponseShape: {
|
|
47
|
+
fields: ["rawText", "flexMd", "parsed", "metadata"],
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
findings,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function isSkillRequestAnalysisReport(v) {
|
|
54
|
+
if (!v || typeof v !== "object")
|
|
55
|
+
return false;
|
|
56
|
+
const r = v;
|
|
57
|
+
return (typeof r.verdict === "string" &&
|
|
58
|
+
Array.isArray(r.findings) &&
|
|
59
|
+
typeof r.inputAssessment === "object" &&
|
|
60
|
+
typeof r.expectedResponse === "object");
|
|
61
|
+
}
|
|
62
|
+
function asFindingArray(v) {
|
|
63
|
+
return Array.isArray(v) ? v : [];
|
|
64
|
+
}
|
|
65
|
+
function normalizePartialFuncxReport(raw) {
|
|
66
|
+
const verdict = raw.verdict === "ok" || raw.verdict === "warnings" || raw.verdict === "errors"
|
|
67
|
+
? raw.verdict
|
|
68
|
+
: "warnings";
|
|
69
|
+
const inputAssessment = (raw.inputAssessment ?? {});
|
|
70
|
+
const smartInputAssessment = (raw.smartInputAssessment ?? {});
|
|
71
|
+
const templateAssessment = (raw.templateAssessment ?? {});
|
|
72
|
+
const configAssessment = (raw.configAssessment ?? {});
|
|
73
|
+
const expectedResponse = (raw.expectedResponse ?? {});
|
|
74
|
+
return {
|
|
75
|
+
verdict,
|
|
76
|
+
confidence: typeof raw.confidence === "number" ? raw.confidence : 0.5,
|
|
77
|
+
inputAssessment: {
|
|
78
|
+
plausible: inputAssessment.plausible === true,
|
|
79
|
+
summary: typeof inputAssessment.summary === "string" ? inputAssessment.summary : "",
|
|
80
|
+
issues: asFindingArray(inputAssessment.issues),
|
|
81
|
+
},
|
|
82
|
+
smartInputAssessment: {
|
|
83
|
+
configured: smartInputAssessment.configured === true,
|
|
84
|
+
pathsOk: smartInputAssessment.pathsOk !== false,
|
|
85
|
+
issues: asFindingArray(smartInputAssessment.issues),
|
|
86
|
+
...(typeof smartInputAssessment.renderedPreview === "string"
|
|
87
|
+
? { renderedPreview: smartInputAssessment.renderedPreview }
|
|
88
|
+
: {}),
|
|
89
|
+
},
|
|
90
|
+
templateAssessment: {
|
|
91
|
+
issues: asFindingArray(templateAssessment.issues),
|
|
92
|
+
...(Array.isArray(templateAssessment.unresolvedTokens)
|
|
93
|
+
? { unresolvedTokens: templateAssessment.unresolvedTokens }
|
|
94
|
+
: {}),
|
|
95
|
+
...(Array.isArray(templateAssessment.renderAnomalies)
|
|
96
|
+
? { renderAnomalies: templateAssessment.renderAnomalies }
|
|
97
|
+
: {}),
|
|
98
|
+
},
|
|
99
|
+
configAssessment: {
|
|
100
|
+
issues: asFindingArray(configAssessment.issues),
|
|
101
|
+
...(typeof configAssessment.modelConfigNotes === "string"
|
|
102
|
+
? { modelConfigNotes: configAssessment.modelConfigNotes }
|
|
103
|
+
: {}),
|
|
104
|
+
...(typeof configAssessment.timeoutNotes === "string"
|
|
105
|
+
? { timeoutNotes: configAssessment.timeoutNotes }
|
|
106
|
+
: {}),
|
|
107
|
+
},
|
|
108
|
+
expectedResponse: {
|
|
109
|
+
...(typeof expectedResponse.flexMdFrame === "string"
|
|
110
|
+
? { flexMdFrame: expectedResponse.flexMdFrame }
|
|
111
|
+
: {}),
|
|
112
|
+
parsedShape: expectedResponse.parsedShape && typeof expectedResponse.parsedShape === "object"
|
|
113
|
+
? expectedResponse.parsedShape
|
|
114
|
+
: {},
|
|
115
|
+
metadataExpectations: Array.isArray(expectedResponse.metadataExpectations)
|
|
116
|
+
? expectedResponse.metadataExpectations
|
|
117
|
+
: [],
|
|
118
|
+
runSkillResponseShape: {
|
|
119
|
+
fields: Array.isArray(expectedResponse.runSkillResponseShape?.fields)
|
|
120
|
+
? expectedResponse.runSkillResponseShape
|
|
121
|
+
.fields
|
|
122
|
+
: ["rawText", "flexMd", "parsed", "metadata"],
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
findings: asFindingArray(raw.findings),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function coerceFuncxRunResult(raw) {
|
|
129
|
+
if (isSkillRequestAnalysisReport(raw))
|
|
130
|
+
return raw;
|
|
131
|
+
const wrapped = raw;
|
|
132
|
+
if (isSkillRequestAnalysisReport(wrapped.result))
|
|
133
|
+
return wrapped.result;
|
|
134
|
+
if (isSkillRequestAnalysisReport(wrapped.report))
|
|
135
|
+
return wrapped.report;
|
|
136
|
+
const candidate = wrapped.result && typeof wrapped.result === "object"
|
|
137
|
+
? wrapped.result
|
|
138
|
+
: raw && typeof raw === "object"
|
|
139
|
+
? raw
|
|
140
|
+
: null;
|
|
141
|
+
if (candidate && typeof candidate.verdict === "string") {
|
|
142
|
+
return normalizePartialFuncxReport(candidate);
|
|
143
|
+
}
|
|
144
|
+
throw new Error("[AI-SKILLS] FuncX analyze-gateway-invoke-request returned an unexpected shape; expected SkillRequestAnalysisReport.");
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Preflight analysis for a {@link RunSkillRequest}: real sanitized gateway packet + FuncX review.
|
|
148
|
+
* **Not chained into {@link runSkill}** — call explicitly from implementation-phase clients.
|
|
149
|
+
*/
|
|
150
|
+
export async function analyzeSkillRequest(catalox, skillRequest, options) {
|
|
151
|
+
const built = await buildSkillRequestAnalysisPacket({ catalox, skillRequest, options });
|
|
152
|
+
const { packet, deterministicFindings, gatewayPayload } = built;
|
|
153
|
+
const functionId = skillRequest.skillKey;
|
|
154
|
+
const skillKey = skillRequest.skillKey;
|
|
155
|
+
if (options?.strictDeterministic && deterministicFindings.some((f) => f.severity === "error")) {
|
|
156
|
+
const ids = deterministicFindings.filter((f) => f.severity === "error").map((f) => f.id);
|
|
157
|
+
throw new Error(`[AI-SKILLS] analyzeSkillRequest strictDeterministic: blocking findings: ${ids.join(", ")}`);
|
|
158
|
+
}
|
|
159
|
+
let report;
|
|
160
|
+
let confidence;
|
|
161
|
+
if (options?.deterministicOnly) {
|
|
162
|
+
report = emptyReportFromFindings(deterministicFindings, packet.flexMdFrameHint);
|
|
163
|
+
confidence = report.confidence;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
options?.logger?.info?.("[AI-SKILLS] analyzeSkillRequest → FuncX", {
|
|
167
|
+
functionId: FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID,
|
|
168
|
+
targetFunctionId: functionId,
|
|
169
|
+
});
|
|
170
|
+
const funcxRun = options?.funcxRunOverride ?? run;
|
|
171
|
+
const raw = await funcxRun(FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID, packet, {
|
|
172
|
+
mode: options?.funcxMode ?? "strong",
|
|
173
|
+
validateOutput: options?.funcxValidateOutput !== false,
|
|
174
|
+
});
|
|
175
|
+
report = coerceFuncxRunResult(raw);
|
|
176
|
+
confidence = report.confidence;
|
|
177
|
+
}
|
|
178
|
+
let markdownReport = typeof report.markdownReport === "string"
|
|
179
|
+
? report.markdownReport
|
|
180
|
+
: "";
|
|
181
|
+
if (!markdownReport || markdownReport.trim().length < 80) {
|
|
182
|
+
markdownReport = formatSkillRequestAnalysisMarkdown({
|
|
183
|
+
functionId,
|
|
184
|
+
skillKey,
|
|
185
|
+
report,
|
|
186
|
+
deterministicFindings,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
const { markdownReport: _md, ...reportWithoutMd } = report;
|
|
190
|
+
return {
|
|
191
|
+
functionId,
|
|
192
|
+
skillKey,
|
|
193
|
+
verdict: report.verdict,
|
|
194
|
+
confidence,
|
|
195
|
+
report: reportWithoutMd,
|
|
196
|
+
markdownReport,
|
|
197
|
+
deterministicFindings,
|
|
198
|
+
gatewayPayload,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
//# 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":"AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EACH,6BAA6B,EAC7B,8BAA8B,GACjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,EACH,+BAA+B,EAC/B,gCAAgC,EAChC,0BAA0B,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AASxF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACjD,MAA6C;IAE7C,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAClD,MAAM,gBAAgB,GAAG,OAAO,EAAE,wBAAwB,IAAI,MAAM,CAAC;IACrE,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC;IAEzC,IAAI,eAAuB,CAAC;IAC5B,IAAI,SAAiB,CAAC;IACtB,IAAI,aAAiC,CAAC;IAEtC,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC;QACxD,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC;IAChD,CAAC;SAAM,CAAC;QACJ,MAAM,KAAK,GAAG,6BAA6B,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE;YACxF,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;QACH,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;QAC9C,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;QAClC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,2BAA2B,CAAC;QAClD,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,QAAQ,EAAE,YAAY,CAAC,QAAQ;KAClC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,8BAA8B,CAAC;QAClD,YAAY;QACZ,KAAK;QACL,MAAM;QACN,mBAAmB,EAAE,eAAe;QACpC,aAAa,EAAE,SAAS;KAC3B,CAAC,CAAC;IAEH,IAAI,oBAAoB,GAAG,eAAe,CAAC;IAC3C,IAAI,cAAc,GAAG,SAAS,CAAC;IAC/B,MAAM,cAAc,GAAuD,EAAE,CAAC;IAC9E,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,+BAA+B,CAAC,YAAY,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;QAC3F,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QACrD,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,cAAc,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,wBAAwB;YAC5B,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,UAAU,EAAE,wEAAwE;SACvF,CAAC,CAAC;IACP,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,cAAc,CAAC,aAAa,IAAI,EAAE,CAA4B,CAAC;IAEtF,MAAM,qBAAqB,GAAG;QAC1B,GAAG,cAAc;QACjB,GAAG,4BAA4B,CAAC;YAChC,YAAY;YACZ,aAAa;YACb,eAAe;YACf,SAAS;YACT,oBAAoB;YACpB,cAAc;SACb,CAAC;KACL,CAAC;IAEF,MAAM,kBAAkB,GAAG,0BAA0B,CACjD,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,EACpD,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,cAAc,EAAE,EAC9D,gBAAgB,CACnB,CAAC;IACF,IAAI,aAAa,EAAE,CAAC;QAChB,kBAAkB,CAAC,aAAa,GAAG,aAAa,CAAC;IACrD,CAAC;IAED,MAAM,MAAM,GAAG;QACX,UAAU;QACV,WAAW,EAAE,cAAc,CAAC,WAAW;QACvC,KAAK,EAAE,KAAK,IAAI,SAAS;QACzB,MAAM,EAAE,MAAM,IAAI,SAAS;QAC3B,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,cAAc,EAAE,+BAA+B,CAAC,cAAc,EAAE,gBAAgB,CAAC;QACjF,eAAe,EAAE,gCAAgC,CAAC,YAAY,CAAC;QAC/D,SAAS,EAAE,kBAAkB;QAC7B,GAAG,CAAC,YAAY,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,oBAAoB,EAAE,2BAA2B,CAAC,YAAY,CAAC,cAAc,CAAC;QAC9E,qBAAqB;QACrB,eAAe,EAAE,sBAAsB,CAAC,eAAe,EAAE,SAAS,EAAE,oBAAoB,CAAC;QACzF,sBAAsB,EAAE,6BAA6B,CAAC,eAAe,EAAE,SAAS,CAAC;KACpF,CAAC;IAEF,OAAO;QACH,MAAM;QACN,qBAAqB;QACrB,cAAc;QACd,eAAe;QACf,SAAS;QACT,oBAAoB;QACpB,cAAc;QACd,aAAa;KAChB,CAAC;AACN,CAAC"}
|
|
@@ -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;AASnD,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,CAmOtH;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,2BAA2B,EAAE,GAAG,IAAI,GAAG,UAAU,GAAG,QAAQ,CAIzG"}
|
|
@@ -0,0 +1,221 @@
|
|
|
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 { resolveOutputContractFields, markdownHeadingToFieldKey, } from "../utils/normalize-output-parsed.js";
|
|
6
|
+
import { extractFlexMdFrameHint, extractTemplateTokenInventory, findUnresolvedMustacheTokens, isEmptyResolvedValue, resolveDotPath, } from "./path-utils.js";
|
|
7
|
+
const SECTION_HEADER = /^#{2,3}\s+(.+?)\s*$/gm;
|
|
8
|
+
function finding(partial) {
|
|
9
|
+
return partial;
|
|
10
|
+
}
|
|
11
|
+
function templateSectionKeys(...texts) {
|
|
12
|
+
const keys = new Set();
|
|
13
|
+
for (const text of texts) {
|
|
14
|
+
if (!text)
|
|
15
|
+
continue;
|
|
16
|
+
for (const match of text.matchAll(SECTION_HEADER)) {
|
|
17
|
+
const key = markdownHeadingToFieldKey(match[1] ?? "");
|
|
18
|
+
if (key)
|
|
19
|
+
keys.add(key);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return keys;
|
|
23
|
+
}
|
|
24
|
+
export function collectDeterministicFindings(params) {
|
|
25
|
+
const findings = [];
|
|
26
|
+
const { skillRequest, workingMemory } = params;
|
|
27
|
+
const hasSmartInput = skillRequest.smartInput !== undefined;
|
|
28
|
+
try {
|
|
29
|
+
validateMandatoryActivixInvokeFields(skillRequest);
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
findings.push(finding({
|
|
33
|
+
id: "ACTIVIX_MANDATORY_FIELDS_MISSING",
|
|
34
|
+
severity: "error",
|
|
35
|
+
category: "activix",
|
|
36
|
+
message: e instanceof Error ? e.message : String(e),
|
|
37
|
+
suggestion: "Set non-empty agentId, jobTypeId, and taskTypeId on RunSkillRequest.",
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
const { jobId, taskId, missingJobId, missingTaskId } = resolveGatewayJobAndTaskIds({
|
|
41
|
+
jobId: skillRequest.jobId,
|
|
42
|
+
taskId: skillRequest.taskId,
|
|
43
|
+
identity: skillRequest.identity,
|
|
44
|
+
});
|
|
45
|
+
if (missingJobId) {
|
|
46
|
+
findings.push(finding({
|
|
47
|
+
id: "JOB_ID_MISSING",
|
|
48
|
+
severity: "warning",
|
|
49
|
+
category: "activix",
|
|
50
|
+
path: "jobId",
|
|
51
|
+
message: "jobId is missing or empty on the request and identity.",
|
|
52
|
+
suggestion: "Supply a non-empty jobId before invoke.",
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
if (missingTaskId) {
|
|
56
|
+
findings.push(finding({
|
|
57
|
+
id: "TASK_ID_MISSING",
|
|
58
|
+
severity: "warning",
|
|
59
|
+
category: "activix",
|
|
60
|
+
path: "taskId",
|
|
61
|
+
message: "taskId is missing or empty on the request and identity.",
|
|
62
|
+
suggestion: "Supply a non-empty taskId before invoke.",
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const identitySession = skillRequest.identity &&
|
|
67
|
+
typeof skillRequest.identity === "object" &&
|
|
68
|
+
!Array.isArray(skillRequest.identity)
|
|
69
|
+
? skillRequest.identity.sessionId
|
|
70
|
+
: undefined;
|
|
71
|
+
validateSessionIdAgreement(skillRequest.sessionId, identitySession);
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
findings.push(finding({
|
|
75
|
+
id: "SESSION_ID_MISMATCH",
|
|
76
|
+
severity: "error",
|
|
77
|
+
category: "session",
|
|
78
|
+
path: "sessionId",
|
|
79
|
+
message: e instanceof Error ? e.message : String(e),
|
|
80
|
+
suggestion: "Align sessionId and identity.sessionId or omit one.",
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
resolveAiEngineIdForRunSkill(skillRequest);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
findings.push(finding({
|
|
88
|
+
id: "AI_ENGINE_ID_UNKNOWN",
|
|
89
|
+
severity: "error",
|
|
90
|
+
category: "catalog",
|
|
91
|
+
path: "aiEngineId",
|
|
92
|
+
message: e instanceof Error ? e.message : String(e),
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
const inputEmpty = skillRequest.input === undefined ||
|
|
96
|
+
skillRequest.input === null ||
|
|
97
|
+
(typeof skillRequest.input === "string" && skillRequest.input.trim() === "") ||
|
|
98
|
+
(typeof skillRequest.input === "object" &&
|
|
99
|
+
!Array.isArray(skillRequest.input) &&
|
|
100
|
+
Object.keys(skillRequest.input).length === 0);
|
|
101
|
+
if (inputEmpty) {
|
|
102
|
+
findings.push(finding({
|
|
103
|
+
id: "INPUT_EMPTY",
|
|
104
|
+
severity: "warning",
|
|
105
|
+
category: "workingMemory",
|
|
106
|
+
path: "input",
|
|
107
|
+
message: "RunSkillRequest.input is empty; workingMemory.input may not carry user content.",
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
const smartInput = skillRequest.smartInput;
|
|
111
|
+
const paths = smartInput?.paths ?? [];
|
|
112
|
+
if (paths.length > 0) {
|
|
113
|
+
for (const entry of paths) {
|
|
114
|
+
const path = typeof entry.path === "string" ? entry.path.trim() : "";
|
|
115
|
+
if (!path) {
|
|
116
|
+
findings.push(finding({
|
|
117
|
+
id: "SMART_INPUT_PATH_EMPTY",
|
|
118
|
+
severity: "warning",
|
|
119
|
+
category: "smartInput",
|
|
120
|
+
message: "smartInput.paths contains an entry with an empty path.",
|
|
121
|
+
}));
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const resolved = resolveDotPath(workingMemory, path);
|
|
125
|
+
const required = entry.required === true;
|
|
126
|
+
if (!resolved.found || isEmptyResolvedValue(resolved.value)) {
|
|
127
|
+
findings.push(finding({
|
|
128
|
+
id: required ? "SMART_INPUT_PATH_MISSING" : "SMART_INPUT_PATH_EMPTY_VALUE",
|
|
129
|
+
severity: required ? "error" : "warning",
|
|
130
|
+
category: "smartInput",
|
|
131
|
+
path,
|
|
132
|
+
message: required
|
|
133
|
+
? `Required smartInput path "${path}" does not resolve in workingMemory.`
|
|
134
|
+
: `smartInput path "${path}" is missing or empty in workingMemory.`,
|
|
135
|
+
suggestion: `Ensure variables, executionMemory, or input populate "${path}".`,
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const unresolvedInstr = findUnresolvedMustacheTokens(params.instructionsRendered, hasSmartInput);
|
|
141
|
+
const unresolvedPrompt = findUnresolvedMustacheTokens(params.promptRendered, hasSmartInput);
|
|
142
|
+
for (const token of [...unresolvedInstr, ...unresolvedPrompt]) {
|
|
143
|
+
findings.push(finding({
|
|
144
|
+
id: "TEMPLATE_TOKEN_UNRESOLVED",
|
|
145
|
+
severity: "warning",
|
|
146
|
+
category: "template",
|
|
147
|
+
message: `Rendered template still contains unresolved token ${token}.`,
|
|
148
|
+
evidence: token,
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
const contractFields = resolveOutputContractFields(skillRequest.outputContract);
|
|
152
|
+
if (contractFields.length > 0) {
|
|
153
|
+
const sectionKeys = templateSectionKeys(params.instructionsRaw, params.promptRaw);
|
|
154
|
+
const flexHint = extractFlexMdFrameHint(params.instructionsRaw, params.promptRaw);
|
|
155
|
+
for (const field of contractFields) {
|
|
156
|
+
if (!sectionKeys.has(field) && flexHint === undefined) {
|
|
157
|
+
findings.push(finding({
|
|
158
|
+
id: "OUTPUT_CONTRACT_FIELD_NOT_IN_TEMPLATE",
|
|
159
|
+
severity: "warning",
|
|
160
|
+
category: "outputContract",
|
|
161
|
+
path: field,
|
|
162
|
+
message: `outputContract expects "${field}" but no matching ### heading was found in templates.`,
|
|
163
|
+
suggestion: "Add a markdown section or FlexMD @payload for this field.",
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const inventory = extractTemplateTokenInventory(params.instructionsRaw, params.promptRaw);
|
|
169
|
+
for (const tokenPath of inventory) {
|
|
170
|
+
const root = tokenPath.split(".")[0];
|
|
171
|
+
if (root === "smartInput")
|
|
172
|
+
continue;
|
|
173
|
+
const resolved = resolveDotPath(workingMemory, tokenPath);
|
|
174
|
+
if (!resolved.found && root !== "input" && root !== "variables") {
|
|
175
|
+
const altRoot = resolveDotPath(workingMemory, root);
|
|
176
|
+
if (!altRoot.found) {
|
|
177
|
+
findings.push(finding({
|
|
178
|
+
id: "TEMPLATE_TOKEN_LIKELY_MISSING",
|
|
179
|
+
severity: "info",
|
|
180
|
+
category: "template",
|
|
181
|
+
path: tokenPath,
|
|
182
|
+
message: `Template references "{{${tokenPath}}}" but "${root}" is not present at workingMemory root.`,
|
|
183
|
+
}));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const totalChars = params.instructionsRaw.length +
|
|
188
|
+
params.promptRaw.length +
|
|
189
|
+
params.instructionsRendered.length +
|
|
190
|
+
params.promptRendered.length;
|
|
191
|
+
const threshold = params.templateSizeThreshold ?? 80_000;
|
|
192
|
+
if (totalChars > threshold) {
|
|
193
|
+
findings.push(finding({
|
|
194
|
+
id: "TEMPLATE_PAYLOAD_LARGE",
|
|
195
|
+
severity: "warning",
|
|
196
|
+
category: "template",
|
|
197
|
+
message: `Combined template text is ~${totalChars} characters (threshold ${threshold}).`,
|
|
198
|
+
suggestion: "Consider shortening templates or raising context limits.",
|
|
199
|
+
}));
|
|
200
|
+
}
|
|
201
|
+
if (!skillRequest.skillKey?.trim()) {
|
|
202
|
+
findings.push(finding({
|
|
203
|
+
id: "SKILL_KEY_MISSING",
|
|
204
|
+
severity: "error",
|
|
205
|
+
category: "catalog",
|
|
206
|
+
path: "skillKey",
|
|
207
|
+
message: "skillKey is required for Catalox template load and gateway actionRef.",
|
|
208
|
+
}));
|
|
209
|
+
}
|
|
210
|
+
void jobId;
|
|
211
|
+
void taskId;
|
|
212
|
+
return findings;
|
|
213
|
+
}
|
|
214
|
+
export function verdictFromFindings(findings) {
|
|
215
|
+
if (findings.some((f) => f.severity === "error"))
|
|
216
|
+
return "errors";
|
|
217
|
+
if (findings.some((f) => f.severity === "warning"))
|
|
218
|
+
return "warnings";
|
|
219
|
+
return "ok";
|
|
220
|
+
}
|
|
221
|
+
//# 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.0.1. */
|
|
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. */
|
|
4
|
+
export declare const FUNCX_MIN_VERSION_FOR_ANALYZE_GATEWAY = "4.0.1";
|
|
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,4EAA4E;AAC5E,eAAO,MAAM,qCAAqC,UAAU,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** FuncX catalog id (slash alias accepted by `run()`). Requires `@x12i/funcx` ≥ 4.0.1. */
|
|
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. */
|
|
4
|
+
export const FUNCX_MIN_VERSION_FOR_ANALYZE_GATEWAY = "4.0.1";
|
|
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,4EAA4E;AAC5E,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"}
|