@vibe-agent-toolkit/agent-skills 0.1.42 → 0.2.0-rc.10
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 +5 -5
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +7 -17
- package/dist/builder.js.map +1 -1
- package/dist/content-type-routing.d.ts +32 -0
- package/dist/content-type-routing.d.ts.map +1 -1
- package/dist/content-type-routing.js +23 -0
- package/dist/content-type-routing.js.map +1 -1
- package/dist/files-config.d.ts +34 -1
- package/dist/files-config.d.ts.map +1 -1
- package/dist/files-config.js +277 -39
- package/dist/files-config.js.map +1 -1
- package/dist/fs-attribution.d.ts +45 -0
- package/dist/fs-attribution.d.ts.map +1 -0
- package/dist/fs-attribution.js +57 -0
- package/dist/fs-attribution.js.map +1 -0
- package/dist/import.d.ts.map +1 -1
- package/dist/import.js +0 -4
- package/dist/import.js.map +1 -1
- package/dist/index.d.ts +13 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -7
- package/dist/index.js.map +1 -1
- package/dist/inventory/detectors/declared-but-missing.d.ts +1 -1
- package/dist/inventory/detectors/declared-but-missing.d.ts.map +1 -1
- package/dist/inventory/detectors/marketplace-source-missing.d.ts +1 -1
- package/dist/inventory/detectors/marketplace-source-missing.d.ts.map +1 -1
- package/dist/inventory/detectors/present-but-undeclared.d.ts +1 -1
- package/dist/inventory/detectors/present-but-undeclared.d.ts.map +1 -1
- package/dist/inventory/detectors/reference-target-missing.d.ts +1 -1
- package/dist/inventory/detectors/reference-target-missing.d.ts.map +1 -1
- package/dist/inventory/index.d.ts +1 -1
- package/dist/inventory/index.d.ts.map +1 -1
- package/dist/inventory/index.js +1 -1
- package/dist/inventory/index.js.map +1 -1
- package/dist/inventory/serialize.d.ts +4 -4
- package/dist/inventory/serialize.d.ts.map +1 -1
- package/dist/inventory/serialize.js +6 -6
- package/dist/inventory/serialize.js.map +1 -1
- package/dist/inventory/types.d.ts +8 -0
- package/dist/inventory/types.d.ts.map +1 -1
- package/dist/inventory/types.js.map +1 -1
- package/dist/link-graph-members.d.ts +18 -0
- package/dist/link-graph-members.d.ts.map +1 -0
- package/dist/link-graph-members.js +18 -0
- package/dist/link-graph-members.js.map +1 -0
- package/dist/parsers/frontmatter-parser.d.ts.map +1 -1
- package/dist/parsers/frontmatter-parser.js +30 -6
- package/dist/parsers/frontmatter-parser.js.map +1 -1
- package/dist/plugin-distribution-layout.d.ts +70 -6
- package/dist/plugin-distribution-layout.d.ts.map +1 -1
- package/dist/plugin-distribution-layout.js +84 -11
- package/dist/plugin-distribution-layout.js.map +1 -1
- package/dist/post-build-checks.d.ts +38 -1
- package/dist/post-build-checks.d.ts.map +1 -1
- package/dist/post-build-checks.js +68 -17
- package/dist/post-build-checks.js.map +1 -1
- package/dist/projection/skill-extent.d.ts +247 -0
- package/dist/projection/skill-extent.d.ts.map +1 -0
- package/dist/projection/skill-extent.js +560 -0
- package/dist/projection/skill-extent.js.map +1 -0
- package/dist/schemas/agent-skill-frontmatter.js +1 -1
- package/dist/schemas/agent-skill-frontmatter.js.map +1 -1
- package/dist/schemas/allowed-tools.d.ts +31 -0
- package/dist/schemas/allowed-tools.d.ts.map +1 -0
- package/dist/schemas/allowed-tools.js +88 -0
- package/dist/schemas/allowed-tools.js.map +1 -0
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +1 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/installed-plugins-registry.d.ts.map +1 -1
- package/dist/schemas/installed-plugins-registry.js +7 -1
- package/dist/schemas/installed-plugins-registry.js.map +1 -1
- package/dist/schemas/marketplace-manifest.d.ts.map +1 -1
- package/dist/schemas/marketplace-manifest.js +17 -6
- package/dist/schemas/marketplace-manifest.js.map +1 -1
- package/dist/skill-identity.d.ts +18 -3
- package/dist/skill-identity.d.ts.map +1 -1
- package/dist/skill-identity.js +25 -6
- package/dist/skill-identity.js.map +1 -1
- package/dist/skill-packager.d.ts +144 -20
- package/dist/skill-packager.d.ts.map +1 -1
- package/dist/skill-packager.js +447 -105
- package/dist/skill-packager.js.map +1 -1
- package/dist/skill-source/content-hash.d.ts.map +1 -1
- package/dist/skill-source/content-hash.js +21 -10
- package/dist/skill-source/content-hash.js.map +1 -1
- package/dist/skill-source/fetch-cache.d.ts.map +1 -1
- package/dist/skill-source/fetch-cache.js +0 -5
- package/dist/skill-source/fetch-cache.js.map +1 -1
- package/dist/skill-source/git-clone.d.ts +1 -1
- package/dist/skill-source/git-clone.d.ts.map +1 -1
- package/dist/skill-source/git-clone.js +10 -10
- package/dist/skill-source/git-clone.js.map +1 -1
- package/dist/skill-source/sources/url-source.d.ts.map +1 -1
- package/dist/skill-source/sources/url-source.js +2 -2
- package/dist/skill-source/sources/url-source.js.map +1 -1
- package/dist/skill-source/stage.d.ts.map +1 -1
- package/dist/skill-source/stage.js +0 -6
- package/dist/skill-source/stage.js.map +1 -1
- package/dist/skill-test/baseline-delta.d.ts +1575 -0
- package/dist/skill-test/baseline-delta.d.ts.map +1 -0
- package/dist/skill-test/baseline-delta.js +272 -0
- package/dist/skill-test/baseline-delta.js.map +1 -0
- package/dist/skill-test/baseline-integrity.d.ts +944 -0
- package/dist/skill-test/baseline-integrity.d.ts.map +1 -0
- package/dist/skill-test/baseline-integrity.js +3090 -0
- package/dist/skill-test/baseline-integrity.js.map +1 -0
- package/dist/skill-test/build-hook.d.ts +3 -2
- package/dist/skill-test/build-hook.d.ts.map +1 -1
- package/dist/skill-test/build-hook.js +4 -5
- package/dist/skill-test/build-hook.js.map +1 -1
- package/dist/skill-test/configure-writer.js +1 -1
- package/dist/skill-test/configure-writer.js.map +1 -1
- package/dist/skill-test/declared-env.d.ts +5 -4
- package/dist/skill-test/declared-env.d.ts.map +1 -1
- package/dist/skill-test/declared-env.js +8 -9
- package/dist/skill-test/declared-env.js.map +1 -1
- package/dist/skill-test/eval-executor.d.ts +21 -5
- package/dist/skill-test/eval-executor.d.ts.map +1 -1
- package/dist/skill-test/eval-executor.js +6 -6
- package/dist/skill-test/eval-executor.js.map +1 -1
- package/dist/skill-test/eval-fragment.d.ts +106 -28
- package/dist/skill-test/eval-fragment.d.ts.map +1 -1
- package/dist/skill-test/eval-fragment.js +78 -16
- package/dist/skill-test/eval-fragment.js.map +1 -1
- package/dist/skill-test/eval-grader.d.ts +65 -7
- package/dist/skill-test/eval-grader.d.ts.map +1 -1
- package/dist/skill-test/eval-grader.js +263 -64
- package/dist/skill-test/eval-grader.js.map +1 -1
- package/dist/skill-test/eval-inputs.d.ts +110 -8
- package/dist/skill-test/eval-inputs.d.ts.map +1 -1
- package/dist/skill-test/eval-inputs.js +177 -22
- package/dist/skill-test/eval-inputs.js.map +1 -1
- package/dist/skill-test/eval-lint.d.ts +17 -4
- package/dist/skill-test/eval-lint.d.ts.map +1 -1
- package/dist/skill-test/eval-lint.js +22 -9
- package/dist/skill-test/eval-lint.js.map +1 -1
- package/dist/skill-test/eval-suite-isolation.d.ts.map +1 -1
- package/dist/skill-test/eval-suite-isolation.js +8 -5
- package/dist/skill-test/eval-suite-isolation.js.map +1 -1
- package/dist/skill-test/evals-template.d.ts +1 -1
- package/dist/skill-test/evals-template.d.ts.map +1 -1
- package/dist/skill-test/evals-template.js +1 -3
- package/dist/skill-test/evals-template.js.map +1 -1
- package/dist/skill-test/executor-prompt.d.ts +15 -7
- package/dist/skill-test/executor-prompt.d.ts.map +1 -1
- package/dist/skill-test/executor-prompt.js +10 -7
- package/dist/skill-test/executor-prompt.js.map +1 -1
- package/dist/skill-test/failure-reason.d.ts +113 -0
- package/dist/skill-test/failure-reason.d.ts.map +1 -0
- package/dist/skill-test/failure-reason.js +124 -0
- package/dist/skill-test/failure-reason.js.map +1 -0
- package/dist/skill-test/fragment-merge.d.ts +3 -20
- package/dist/skill-test/fragment-merge.d.ts.map +1 -1
- package/dist/skill-test/fragment-merge.js +67 -8
- package/dist/skill-test/fragment-merge.js.map +1 -1
- package/dist/skill-test/grader-prompt.d.ts +29 -9
- package/dist/skill-test/grader-prompt.d.ts.map +1 -1
- package/dist/skill-test/grader-prompt.js +264 -68
- package/dist/skill-test/grader-prompt.js.map +1 -1
- package/dist/skill-test/grader-text.d.ts +145 -0
- package/dist/skill-test/grader-text.d.ts.map +1 -0
- package/dist/skill-test/grader-text.js +410 -0
- package/dist/skill-test/grader-text.js.map +1 -0
- package/dist/skill-test/grading-adapter.d.ts +38 -2
- package/dist/skill-test/grading-adapter.d.ts.map +1 -1
- package/dist/skill-test/grading-adapter.js +57 -9
- package/dist/skill-test/grading-adapter.js.map +1 -1
- package/dist/skill-test/grading-schema.d.ts +160 -5
- package/dist/skill-test/grading-schema.d.ts.map +1 -1
- package/dist/skill-test/grading-schema.js +66 -7
- package/dist/skill-test/grading-schema.js.map +1 -1
- package/dist/skill-test/harness-location.d.ts +3 -2
- package/dist/skill-test/harness-location.d.ts.map +1 -1
- package/dist/skill-test/harness-location.js +5 -16
- package/dist/skill-test/harness-location.js.map +1 -1
- package/dist/skill-test/index.d.ts +2 -2
- package/dist/skill-test/index.d.ts.map +1 -1
- package/dist/skill-test/index.js +2 -2
- package/dist/skill-test/index.js.map +1 -1
- package/dist/skill-test/lock.d.ts +58 -1
- package/dist/skill-test/lock.d.ts.map +1 -1
- package/dist/skill-test/lock.js +78 -6
- package/dist/skill-test/lock.js.map +1 -1
- package/dist/skill-test/pipeline.d.ts +19 -1
- package/dist/skill-test/pipeline.d.ts.map +1 -1
- package/dist/skill-test/pipeline.js +21 -10
- package/dist/skill-test/pipeline.js.map +1 -1
- package/dist/skill-test/preflight.d.ts +1 -1
- package/dist/skill-test/preflight.d.ts.map +1 -1
- package/dist/skill-test/preflight.js +59 -16
- package/dist/skill-test/preflight.js.map +1 -1
- package/dist/skill-test/prompt-invariants.d.ts +4 -2
- package/dist/skill-test/prompt-invariants.d.ts.map +1 -1
- package/dist/skill-test/prompt-invariants.js +5 -4
- package/dist/skill-test/prompt-invariants.js.map +1 -1
- package/dist/skill-test/run-harness.d.ts +665 -85
- package/dist/skill-test/run-harness.d.ts.map +1 -1
- package/dist/skill-test/run-harness.js +1522 -237
- package/dist/skill-test/run-harness.js.map +1 -1
- package/dist/skill-test/staging.d.ts +20 -8
- package/dist/skill-test/staging.d.ts.map +1 -1
- package/dist/skill-test/staging.js +25 -18
- package/dist/skill-test/staging.js.map +1 -1
- package/dist/skill-test/tier-plan.d.ts +1 -1
- package/dist/skill-test/tier-plan.js +1 -1
- package/dist/skill-test/tool-eval-schema.d.ts +6 -6
- package/dist/skill-test/tool-eval-schema.js +2 -2
- package/dist/skill-test/vendor-manifest.d.ts +2 -1
- package/dist/skill-test/vendor-manifest.d.ts.map +1 -1
- package/dist/skill-test/vendor-manifest.js +10 -10
- package/dist/skill-test/vendor-manifest.js.map +1 -1
- package/dist/test-input.d.ts +59 -8
- package/dist/test-input.d.ts.map +1 -1
- package/dist/test-input.js +64 -19
- package/dist/test-input.js.map +1 -1
- package/dist/validators/agent-instruction-presence.d.ts +1 -1
- package/dist/validators/agent-instruction-presence.d.ts.map +1 -1
- package/dist/validators/agent-instruction-presence.js +45 -2
- package/dist/validators/agent-instruction-presence.js.map +1 -1
- package/dist/validators/bundled-resource-link-detection.d.ts +6 -4
- package/dist/validators/bundled-resource-link-detection.d.ts.map +1 -1
- package/dist/validators/bundled-resource-link-detection.js +39 -39
- package/dist/validators/bundled-resource-link-detection.js.map +1 -1
- package/dist/validators/compat-detectors.d.ts +18 -1
- package/dist/validators/compat-detectors.d.ts.map +1 -1
- package/dist/validators/compat-detectors.js +47 -20
- package/dist/validators/compat-detectors.js.map +1 -1
- package/dist/validators/cross-skill-dependency-detection.d.ts +1 -1
- package/dist/validators/cross-skill-dependency-detection.d.ts.map +1 -1
- package/dist/validators/cross-skill-dependency-detection.js +1 -1
- package/dist/validators/cross-skill-dependency-detection.js.map +1 -1
- package/dist/validators/description-style-detection.d.ts +1 -1
- package/dist/validators/description-style-detection.d.ts.map +1 -1
- package/dist/validators/description-style-detection.js +1 -1
- package/dist/validators/description-style-detection.js.map +1 -1
- package/dist/validators/format-detection.d.ts +3 -0
- package/dist/validators/format-detection.d.ts.map +1 -1
- package/dist/validators/format-detection.js +41 -26
- package/dist/validators/format-detection.js.map +1 -1
- package/dist/validators/frontmatter-validation.d.ts +1 -1
- package/dist/validators/frontmatter-validation.d.ts.map +1 -1
- package/dist/validators/frontmatter-validation.js +2 -2
- package/dist/validators/frontmatter-validation.js.map +1 -1
- package/dist/validators/imperative-body-detection.d.ts +1 -1
- package/dist/validators/imperative-body-detection.d.ts.map +1 -1
- package/dist/validators/imperative-body-detection.js +1 -1
- package/dist/validators/imperative-body-detection.js.map +1 -1
- package/dist/validators/index.d.ts +1 -1
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/kebab-case-detection.d.ts +1 -1
- package/dist/validators/kebab-case-detection.d.ts.map +1 -1
- package/dist/validators/kebab-case-detection.js +1 -1
- package/dist/validators/kebab-case-detection.js.map +1 -1
- package/dist/validators/marketplace-validator.d.ts.map +1 -1
- package/dist/validators/marketplace-validator.js +7 -2
- package/dist/validators/marketplace-validator.js.map +1 -1
- package/dist/validators/mcp-tool-qualification.d.ts +158 -0
- package/dist/validators/mcp-tool-qualification.d.ts.map +1 -0
- package/dist/validators/mcp-tool-qualification.js +467 -0
- package/dist/validators/mcp-tool-qualification.js.map +1 -0
- package/dist/validators/packaged-size-limit.d.ts +296 -0
- package/dist/validators/packaged-size-limit.d.ts.map +1 -0
- package/dist/validators/packaged-size-limit.js +492 -0
- package/dist/validators/packaged-size-limit.js.map +1 -0
- package/dist/validators/packaging-validator.d.ts +149 -10
- package/dist/validators/packaging-validator.d.ts.map +1 -1
- package/dist/validators/packaging-validator.js +371 -55
- package/dist/validators/packaging-validator.js.map +1 -1
- package/dist/validators/plugin-hosted-shape.d.ts +4 -2
- package/dist/validators/plugin-hosted-shape.d.ts.map +1 -1
- package/dist/validators/plugin-hosted-shape.js +6 -7
- package/dist/validators/plugin-hosted-shape.js.map +1 -1
- package/dist/validators/plugin-recommended-fields.d.ts +1 -1
- package/dist/validators/plugin-recommended-fields.d.ts.map +1 -1
- package/dist/validators/plugin-recommended-fields.js +1 -1
- package/dist/validators/plugin-recommended-fields.js.map +1 -1
- package/dist/validators/referenced-path-missing.d.ts +211 -0
- package/dist/validators/referenced-path-missing.d.ts.map +1 -0
- package/dist/validators/referenced-path-missing.js +378 -0
- package/dist/validators/referenced-path-missing.js.map +1 -0
- package/dist/validators/registry-validator.d.ts.map +1 -1
- package/dist/validators/registry-validator.js +1 -2
- package/dist/validators/registry-validator.js.map +1 -1
- package/dist/validators/rule-engine/index.d.ts +1 -1
- package/dist/validators/rule-engine/rule-context.d.ts +20 -3
- package/dist/validators/rule-engine/rule-context.d.ts.map +1 -1
- package/dist/validators/rule-engine/rule-context.js +3 -1
- package/dist/validators/rule-engine/rule-context.js.map +1 -1
- package/dist/validators/rule-engine/rule-engine.d.ts +2 -2
- package/dist/validators/rule-engine/rule-engine.d.ts.map +1 -1
- package/dist/validators/rule-engine/rule-engine.js +52 -13
- package/dist/validators/rule-engine/rule-engine.js.map +1 -1
- package/dist/validators/skill-validator.d.ts.map +1 -1
- package/dist/validators/skill-validator.js +91 -54
- package/dist/validators/skill-validator.js.map +1 -1
- package/dist/validators/source-only-codes.js +1 -1
- package/dist/validators/source-only-codes.js.map +1 -1
- package/dist/validators/types.d.ts +21 -1
- package/dist/validators/types.d.ts.map +1 -1
- package/dist/validators/unified-validator.d.ts.map +1 -1
- package/dist/validators/unified-validator.js +4 -5
- package/dist/validators/unified-validator.js.map +1 -1
- package/dist/validators/validation-rules.d.ts +4 -4
- package/dist/validators/validation-rules.d.ts.map +1 -1
- package/dist/validators/validation-rules.js +9 -38
- package/dist/validators/validation-rules.js.map +1 -1
- package/dist/validators/walker-to-issues.d.ts +9 -3
- package/dist/validators/walker-to-issues.d.ts.map +1 -1
- package/dist/validators/walker-to-issues.js +64 -19
- package/dist/validators/walker-to-issues.js.map +1 -1
- package/dist/walk-link-graph.d.ts +64 -5
- package/dist/walk-link-graph.d.ts.map +1 -1
- package/dist/walk-link-graph.js +376 -92
- package/dist/walk-link-graph.js.map +1 -1
- package/package.json +14 -22
- package/dist/skill-test/exit-codes.d.ts +0 -97
- package/dist/skill-test/exit-codes.d.ts.map +0 -1
- package/dist/skill-test/exit-codes.js +0 -141
- package/dist/skill-test/exit-codes.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The skill-resource verdict engine
|
|
2
|
+
* The skill-resource verdict engine.
|
|
3
3
|
*
|
|
4
4
|
* `evaluate(ctx)` is a **pure** function: it takes an intent-aware
|
|
5
5
|
* {@link RuleContext} and returns at most one validation code (or `null` when
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* constructed context maps to exactly one expected code, and no two distinct
|
|
15
15
|
* intents may share a context signature while expecting different codes.
|
|
16
16
|
*/
|
|
17
|
-
import { CODE_REGISTRY } from '@vibe-agent-toolkit/
|
|
17
|
+
import { CODE_REGISTRY } from '@vibe-agent-toolkit/schema';
|
|
18
18
|
/**
|
|
19
19
|
* File kinds the walker refuses to bundle outright, and the code each reports.
|
|
20
20
|
* Both are "this file cannot travel", differing only in why: a navigation file
|
|
@@ -28,19 +28,34 @@ const EXCLUDED_FILE_KIND_CODES = {
|
|
|
28
28
|
};
|
|
29
29
|
/**
|
|
30
30
|
* Decide the code for a **reference edge** (`subject: 'edge'`). Ordered: the
|
|
31
|
-
* first matching intent wins. Returns `null` for
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* first matching intent wins. Returns `null` ONLY for an edge that resolves to a
|
|
32
|
+
* file the bundle actually carries — every edge the walker declined to bundle
|
|
33
|
+
* now reaches a code, at a severity that says how much it matters. A directory
|
|
34
|
+
* link and a pattern-excluded reference are both perfectly legitimate and both
|
|
35
|
+
* reported (warning / info respectively); "acceptable" decides the severity, it
|
|
36
|
+
* does not buy silence.
|
|
34
37
|
*/
|
|
35
38
|
function evaluateEdge(ctx) {
|
|
39
|
+
// An unreadable target (present on disk, unstattable anyway) is reported
|
|
40
|
+
// outright — the same failure class the resources lane reports as
|
|
41
|
+
// RESOURCE_UNREADABLE. FIRST, mirroring the walker's own cascade, where
|
|
42
|
+
// classifyPathKind runs ahead of the project-boundary check: nothing else
|
|
43
|
+
// about a file that cannot be read is knowable, so no later branch could be
|
|
44
|
+
// answering from evidence.
|
|
45
|
+
if (ctx.unreadable)
|
|
46
|
+
return 'LINK_TARGET_UNREADABLE';
|
|
36
47
|
// A target outside the project boundary is the strongest signal — it can
|
|
37
48
|
// never be bundled regardless of anything else about the edge.
|
|
38
49
|
if (ctx.outsideProject)
|
|
39
50
|
return 'LINK_OUTSIDE_PROJECT';
|
|
40
|
-
// Directory targets: an
|
|
41
|
-
// demanded a file). A navigational directory link is a valid target
|
|
51
|
+
// Directory targets: an ERROR only for a typed single-file slot (the contract
|
|
52
|
+
// demanded a file). A navigational directory link is still a valid target
|
|
53
|
+
// — but valid is not the same as unreportable, and it used to return
|
|
54
|
+
// `null` here, which made the drop invisible: the directory never travels, so
|
|
55
|
+
// the packaged link points at nothing and the author heard nothing about it.
|
|
56
|
+
// The two arms are two different findings, not one finding at two severities.
|
|
42
57
|
if (ctx.fileKind === 'directory') {
|
|
43
|
-
return ctx.typedSingleFileSlot ? 'LINK_TARGETS_DIRECTORY' :
|
|
58
|
+
return ctx.typedSingleFileSlot ? 'LINK_TARGETS_DIRECTORY' : 'LINK_TO_UNBUNDLED_DIRECTORY';
|
|
44
59
|
}
|
|
45
60
|
// Linking another skill's SKILL.md duplicates skill definitions on bundle.
|
|
46
61
|
if (ctx.crossSkillDefinition)
|
|
@@ -57,9 +72,26 @@ function evaluateEdge(ctx) {
|
|
|
57
72
|
const excludedKindCode = EXCLUDED_FILE_KIND_CODES[ctx.fileKind];
|
|
58
73
|
if (excludedKindCode)
|
|
59
74
|
return excludedKindCode;
|
|
60
|
-
//
|
|
75
|
+
// Nothing about the TARGET disqualifies it; the remaining question is what
|
|
76
|
+
// the walk did with it.
|
|
77
|
+
return evaluateWalkDecision(ctx);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Decide the code for an edge whose target is, in itself, bundlable — so the
|
|
81
|
+
* verdict turns on what the WALK did rather than on what the target is.
|
|
82
|
+
*
|
|
83
|
+
* Split out from {@link evaluateEdge} to keep each arm's ordering readable (and
|
|
84
|
+
* each function under the cognitive-complexity ceiling); the two run strictly in
|
|
85
|
+
* sequence and the combined order is unchanged.
|
|
86
|
+
*/
|
|
87
|
+
function evaluateWalkDecision(ctx) {
|
|
88
|
+
// Excluded by an author-configured pattern. Intentional — hence `info` in the
|
|
89
|
+
// registry rather than a warning — but reported, not swallowed. It returned
|
|
90
|
+
// `null` here, and "the author asked for it" justified the low severity, never
|
|
91
|
+
// the total absence of a receipt: the one lane that knows why a file did not
|
|
92
|
+
// ship is the one an author asking that question needs to hear from.
|
|
61
93
|
if (ctx.patternExcluded)
|
|
62
|
-
return
|
|
94
|
+
return 'LINK_EXCLUDED_BY_PATTERN';
|
|
63
95
|
// Beyond the configured linkFollowDepth.
|
|
64
96
|
if (ctx.droppedByDepth)
|
|
65
97
|
return 'LINK_DROPPED_BY_DEPTH';
|
|
@@ -68,8 +100,15 @@ function evaluateEdge(ctx) {
|
|
|
68
100
|
if (!ctx.existsAtSource) {
|
|
69
101
|
return ctx.phase === 'built' ? 'PACKAGED_BROKEN_LINK' : 'LINK_MISSING_TARGET';
|
|
70
102
|
}
|
|
71
|
-
//
|
|
72
|
-
|
|
103
|
+
// The target exists but nothing bundled it, because its only referrer is a
|
|
104
|
+
// file the walker does not route through. Deliberately BELOW the missing-target
|
|
105
|
+
// check: a broken link inside an HTML page is an author error with an existing,
|
|
106
|
+
// more actionable code, and reporting the routing boundary instead would send
|
|
107
|
+
// the author to fix VAT's traversal policy over their own typo.
|
|
108
|
+
if (ctx.nonRoutableSource)
|
|
109
|
+
return 'LINK_FROM_NON_ROUTABLE_FILE';
|
|
110
|
+
// An existing in-bundle file — fine, unless bundled (and rewritten) from outside the skill directory.
|
|
111
|
+
return ctx.insideSkillDir ? null : 'LINK_OUTSIDE_SKILL_DIR';
|
|
73
112
|
}
|
|
74
113
|
/**
|
|
75
114
|
* Decide the code for an **inclusion-candidate file** (`subject: 'file'`),
|
|
@@ -78,7 +117,7 @@ function evaluateEdge(ctx) {
|
|
|
78
117
|
*/
|
|
79
118
|
function evaluateFile(ctx) {
|
|
80
119
|
// Plugin artifacts are exempt from skill self-containment expectations
|
|
81
|
-
//
|
|
120
|
+
// never apply skill orphan rules to a plugin-level copy.
|
|
82
121
|
if (ctx.copyRole === 'plugin-artifact')
|
|
83
122
|
return null;
|
|
84
123
|
// Referenced (by link or documented mention) or explicitly declared in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../../src/validators/rule-engine/rule-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAwC,MAAM,
|
|
1
|
+
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../../src/validators/rule-engine/rule-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-validator.d.ts","sourceRoot":"","sources":["../../src/validators/skill-validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skill-validator.d.ts","sourceRoot":"","sources":["../../src/validators/skill-validator.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAA8B,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhG;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsIvF;AAsSD,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;CACd;AA0ID;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,SAAS,MAAM,EAAE,EACpC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC,iBAAiB,EAAE,CAarB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import { basename, dirname } from 'node:path';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { findProjectRoot, issueLocation, safePath } from '@vibe-agent-toolkit/utils';
|
|
3
|
+
import { isLocalFileLink, isParserUnavailable, parseFileCached, resolveLocalHref } from '@vibe-agent-toolkit/resources';
|
|
4
|
+
import { calculateValidationStatus, countBySeverity, createRegistryIssue, runSingleUnitValidation, } from '@vibe-agent-toolkit/schema';
|
|
5
|
+
import { findProjectRoot, isPathAbsentError, issueLocation, relativeEscapesRoot, safePath } from '@vibe-agent-toolkit/utils';
|
|
6
6
|
import { parseFrontmatter } from '../parsers/frontmatter-parser.js';
|
|
7
7
|
import { detectBundledResourceWithoutLinks } from './bundled-resource-link-detection.js';
|
|
8
8
|
import { observationToIssue, runCompatDetectors } from './compat-detectors.js';
|
|
@@ -10,6 +10,7 @@ import { detectUndeclaredCrossSkillAuth } from './cross-skill-dependency-detecti
|
|
|
10
10
|
import { validateFrontmatterRules, validateFrontmatterSchema } from './frontmatter-validation.js';
|
|
11
11
|
import { detectNonImperativeBody } from './imperative-body-detection.js';
|
|
12
12
|
import { detectKebabCaseViolation } from './kebab-case-detection.js';
|
|
13
|
+
import { collectUnqualifiedMcpToolIssues } from './mcp-tool-qualification.js';
|
|
13
14
|
import { isNeverPackagedBasename } from './validation-rules.js';
|
|
14
15
|
/**
|
|
15
16
|
* Validate an Agent Skill (SKILL.md file)
|
|
@@ -33,25 +34,16 @@ export async function validateSkill(options) {
|
|
|
33
34
|
const issues = [];
|
|
34
35
|
const allEvidence = [];
|
|
35
36
|
// Validate file exists
|
|
36
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- skillPath is user-provided but validated
|
|
37
37
|
if (!fs.existsSync(skillPath)) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return
|
|
45
|
-
path: skillPath,
|
|
46
|
-
type: isVATGenerated ? 'vat-agent' : 'agent-skill',
|
|
47
|
-
status: 'error',
|
|
48
|
-
summary: '1 error',
|
|
49
|
-
issues: missingFileIssues,
|
|
50
|
-
issueCounts: countBySeverity(missingFileIssues),
|
|
51
|
-
};
|
|
38
|
+
issues.push({
|
|
39
|
+
severity: 'error',
|
|
40
|
+
code: 'SKILL_MISSING_FRONTMATTER',
|
|
41
|
+
message: 'File does not exist',
|
|
42
|
+
location: skillLocation,
|
|
43
|
+
});
|
|
44
|
+
return buildResult(skillPath, isVATGenerated, issues, options.validation);
|
|
52
45
|
}
|
|
53
46
|
// Read file
|
|
54
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- skillPath validated above
|
|
55
47
|
const content = fs.readFileSync(skillPath, 'utf-8');
|
|
56
48
|
const lineCount = content.split('\n').length;
|
|
57
49
|
// Parse frontmatter
|
|
@@ -65,7 +57,7 @@ export async function validateSkill(options) {
|
|
|
65
57
|
line: 1,
|
|
66
58
|
fix: 'Add YAML frontmatter with name and description fields',
|
|
67
59
|
});
|
|
68
|
-
return buildResult(skillPath, isVATGenerated, issues, { lineCount });
|
|
60
|
+
return buildResult(skillPath, isVATGenerated, issues, options.validation, { lineCount });
|
|
69
61
|
}
|
|
70
62
|
const { frontmatter } = parseResult;
|
|
71
63
|
// Surface kebab-case name violations as a named info code in addition
|
|
@@ -90,12 +82,25 @@ export async function validateSkill(options) {
|
|
|
90
82
|
for (const obs of rootObservations) {
|
|
91
83
|
issues.push(observationToIssue(obs, skillLocation));
|
|
92
84
|
}
|
|
85
|
+
// Unqualified MCP tool names. This lane needs its OWN call: the detector is
|
|
86
|
+
// not one of `runCompatDetectors`, and until this line its only call sites
|
|
87
|
+
// were inside `validateSkillForPackaging`. That made the check structurally
|
|
88
|
+
// unreachable for every skill audited without a governing VAT config — which
|
|
89
|
+
// is every INSTALLED skill under `~/.claude/plugins/**`, the exact corpus the
|
|
90
|
+
// detector's precision table was measured on. `vat audit --user` before and
|
|
91
|
+
// after, over 851 installed skills: 0 occurrences -> 11 in 7 documents, with
|
|
92
|
+
// no other code's count moving — which is exactly the row
|
|
93
|
+
// docs/validation-codes.md already published from a DIRECT run of the
|
|
94
|
+
// detector. The command now reproduces the number the docs quote. See the
|
|
95
|
+
// sibling call in the linked-file walk below, and the two in
|
|
96
|
+
// packaging-validator.ts that this pair mirrors.
|
|
97
|
+
collectUnqualifiedMcpToolIssues(content, skillLocation, issues);
|
|
93
98
|
// Transitive link traversal (BFS)
|
|
94
99
|
const skillDir = options.rootDir ?? dirname(skillPath);
|
|
95
100
|
const linkedFiles = await traverseLinks(skillPath, skillDir, locationRoot, issues, allEvidence);
|
|
96
101
|
// Bundled-resource link detection — fires after link traversal so the
|
|
97
102
|
// linkedFiles set reflects everything reachable from SKILL.md.
|
|
98
|
-
const bundledResourceIssues = detectBundledResourceWithoutLinks(
|
|
103
|
+
const bundledResourceIssues = detectBundledResourceWithoutLinks(content, skillDir, linkedFiles.map((lf) => lf.path), locationRoot);
|
|
99
104
|
issues.push(...bundledResourceIssues);
|
|
100
105
|
// Unreferenced file detection
|
|
101
106
|
if (options.checkUnreferencedFiles) {
|
|
@@ -103,9 +108,13 @@ export async function validateSkill(options) {
|
|
|
103
108
|
}
|
|
104
109
|
// Build metadata
|
|
105
110
|
const metadata = buildMetadata(frontmatter, lineCount);
|
|
106
|
-
const result = buildResult(skillPath, isVATGenerated, issues, metadata);
|
|
111
|
+
const result = buildResult(skillPath, isVATGenerated, issues, options.validation, metadata);
|
|
107
112
|
if (linkedFiles.length > 0) {
|
|
108
|
-
|
|
113
|
+
// Derived from the RESOLVED issues, so an ignored finding cannot resurface here.
|
|
114
|
+
result.linkedFiles = linkedFiles.map((lf) => {
|
|
115
|
+
const location = issueLocation(lf.path, locationRoot);
|
|
116
|
+
return { ...lf, issues: result.issues.filter((issue) => issue.location === location) };
|
|
117
|
+
});
|
|
109
118
|
}
|
|
110
119
|
if (allEvidence.length > 0) {
|
|
111
120
|
result.evidence = allEvidence;
|
|
@@ -132,7 +141,7 @@ function isExemptFromUnreferencedCheck(fileName) {
|
|
|
132
141
|
*
|
|
133
142
|
* @returns 'boundary' | 'broken' | 'valid' indicating the link status
|
|
134
143
|
*/
|
|
135
|
-
function validateLocalLink(link, currentPath, skillDir, locationRoot,
|
|
144
|
+
function validateLocalLink(link, currentPath, skillDir, locationRoot, issues) {
|
|
136
145
|
// Resolve href to filesystem path (strips anchor, decodes percent-encoding).
|
|
137
146
|
// Skill validation is a single-skill bounded walk — leading-/ links are
|
|
138
147
|
// treated as unresolved (skipped) here. The resources-validate / audit paths
|
|
@@ -144,15 +153,14 @@ function validateLocalLink(link, currentPath, skillDir, locationRoot, fileIssues
|
|
|
144
153
|
}
|
|
145
154
|
const resolvedPath = resolved.resolvedPath;
|
|
146
155
|
const relativeToBoundary = safePath.relative(skillDir, resolvedPath);
|
|
147
|
-
const escapesBoundary = relativeToBoundary
|
|
156
|
+
const escapesBoundary = relativeEscapesRoot(relativeToBoundary);
|
|
148
157
|
// Check existence BEFORE boundary classification — a link that both
|
|
149
158
|
// escapes the skill directory boundary and is missing must surface as a
|
|
150
159
|
// broken link (error), not be silently swallowed as a boundary warning.
|
|
151
|
-
//
|
|
160
|
+
// LINK_OUTSIDE_SKILL_DIR (below) only applies when the target actually
|
|
152
161
|
// exists outside the boundary.
|
|
153
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- resolvedPath from parsed markdown
|
|
154
162
|
if (!fs.existsSync(resolvedPath)) {
|
|
155
|
-
|
|
163
|
+
issues.push({
|
|
156
164
|
severity: 'error',
|
|
157
165
|
code: 'LINK_INTEGRITY_BROKEN',
|
|
158
166
|
message: `Link target not found: ${link.href}`,
|
|
@@ -160,23 +168,16 @@ function validateLocalLink(link, currentPath, skillDir, locationRoot, fileIssues
|
|
|
160
168
|
...(link.line !== undefined && { line: link.line }),
|
|
161
169
|
link: link.href,
|
|
162
170
|
fix: 'Fix link path or restore missing file',
|
|
163
|
-
};
|
|
164
|
-
fileIssues.push(issue);
|
|
165
|
-
issues.push(issue);
|
|
171
|
+
});
|
|
166
172
|
return { status: 'broken', resolvedPath };
|
|
167
173
|
}
|
|
168
174
|
if (escapesBoundary) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
code: 'LINK_OUTSIDE_PROJECT',
|
|
172
|
-
message: `Link points outside skill directory: ${link.href}`,
|
|
175
|
+
// The skill-directory boundary; the project-root escape is the walker's `LINK_OUTSIDE_PROJECT`.
|
|
176
|
+
issues.push(createRegistryIssue('LINK_OUTSIDE_SKILL_DIR', `Link points outside skill directory: ${link.href}`, {
|
|
173
177
|
location: issueLocation(currentPath, locationRoot),
|
|
174
178
|
...(link.line !== undefined && { line: link.line }),
|
|
175
179
|
link: link.href,
|
|
176
|
-
|
|
177
|
-
};
|
|
178
|
-
fileIssues.push(issue);
|
|
179
|
-
issues.push(issue);
|
|
180
|
+
}));
|
|
180
181
|
return { status: 'boundary', resolvedPath };
|
|
181
182
|
}
|
|
182
183
|
return { status: 'valid', resolvedPath };
|
|
@@ -187,11 +188,10 @@ function validateLocalLink(link, currentPath, skillDir, locationRoot, fileIssues
|
|
|
187
188
|
*/
|
|
188
189
|
function processFileLinks(parseResult, currentPath, skillDir, locationRoot, issues, visited) {
|
|
189
190
|
const localLinks = parseResult.links.filter(link => isLocalFileLink(link.type));
|
|
190
|
-
const fileIssues = [];
|
|
191
191
|
const newPaths = [];
|
|
192
192
|
let linksValidated = 0;
|
|
193
193
|
for (const link of localLinks) {
|
|
194
|
-
const { status, resolvedPath } = validateLocalLink(link, currentPath, skillDir, locationRoot,
|
|
194
|
+
const { status, resolvedPath } = validateLocalLink(link, currentPath, skillDir, locationRoot, issues);
|
|
195
195
|
if (status === 'skip') {
|
|
196
196
|
continue;
|
|
197
197
|
}
|
|
@@ -201,15 +201,20 @@ function processFileLinks(parseResult, currentPath, skillDir, locationRoot, issu
|
|
|
201
201
|
newPaths.push(resolvedPath);
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
|
-
return { localLinkCount: localLinks.length, linksValidated,
|
|
204
|
+
return { localLinkCount: localLinks.length, linksValidated, newPaths, content: parseResult.content };
|
|
205
205
|
}
|
|
206
206
|
/**
|
|
207
207
|
* Traverse links from SKILL.md using BFS, validating each link target.
|
|
208
208
|
*
|
|
209
209
|
* - Missing file -> LINK_INTEGRITY_BROKEN error
|
|
210
|
-
* - Outside skill directory ->
|
|
210
|
+
* - Outside skill directory -> LINK_OUTSIDE_SKILL_DIR (default `ignore`; the
|
|
211
|
+
* adopter's `validation.severity` decides)
|
|
211
212
|
* - Existing .md file -> recurse (add to BFS queue)
|
|
212
213
|
* - Non-markdown asset -> existence check only
|
|
214
|
+
*
|
|
215
|
+
* @throws {ParserUnavailableError} If the markdown parser module cannot be
|
|
216
|
+
* loaded — a broken install fails the validation rather than being demoted to
|
|
217
|
+
* a per-document finding
|
|
213
218
|
*/
|
|
214
219
|
async function traverseLinks(skillPath, skillDir, locationRoot, issues, allEvidence) {
|
|
215
220
|
const resolvedSkillPath = safePath.resolve(skillPath);
|
|
@@ -223,9 +228,23 @@ async function traverseLinks(skillPath, skillDir, locationRoot, issues, allEvide
|
|
|
223
228
|
}
|
|
224
229
|
let parseResult;
|
|
225
230
|
try {
|
|
226
|
-
parseResult = await
|
|
231
|
+
parseResult = await parseFileCached(currentPath, 'markdown');
|
|
227
232
|
}
|
|
228
|
-
catch {
|
|
233
|
+
catch (error) {
|
|
234
|
+
// A broken INSTALL, not a broken document. The parser arrives by
|
|
235
|
+
// `import()` from inside `parseFileCached` — lazily, past the parse
|
|
236
|
+
// cache's hit-path return, so a fully warm validation loads no parser at
|
|
237
|
+
// all — which puts a loader failure in this catch. Unguarded it minted one
|
|
238
|
+
// `LINK_INTEGRITY_BROKEN` per file, blamed every innocent document, never
|
|
239
|
+
// walked the link graph, and still exited 0 on "passed with warnings".
|
|
240
|
+
//
|
|
241
|
+
// A type check rather than a hoisted `loadParser` above the loop: that
|
|
242
|
+
// also works and costs every warm run the ~730 ms remark load for parses
|
|
243
|
+
// that never happen. `isParserUnavailable` matches one type VAT
|
|
244
|
+
// constructs at one place, so it is complete by construction — not the
|
|
245
|
+
// guessed blocklist of Node loader codes that was deleted.
|
|
246
|
+
if (isParserUnavailable(error))
|
|
247
|
+
throw error;
|
|
229
248
|
issues.push({
|
|
230
249
|
severity: 'warning',
|
|
231
250
|
code: 'LINK_INTEGRITY_BROKEN',
|
|
@@ -240,13 +259,25 @@ async function traverseLinks(skillPath, skillDir, locationRoot, issues, allEvide
|
|
|
240
259
|
// the top-level invocation). Re-read raw file content so fenced code
|
|
241
260
|
// blocks remain intact for detectors.
|
|
242
261
|
if (currentPath !== resolvedSkillPath) {
|
|
243
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- currentPath verified existent by BFS predecessor
|
|
244
262
|
const linkedContent = fs.readFileSync(currentPath, 'utf-8');
|
|
245
263
|
const { evidence: linkedEvidence, observations: linkedObservations } = runCompatDetectors(linkedContent, currentPath, locationRoot);
|
|
246
264
|
allEvidence.push(...linkedEvidence);
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
265
|
+
issues.push(...linkedObservations.map(obs => observationToIssue(obs, issueLocation(currentPath, locationRoot))));
|
|
266
|
+
// Same detector on each linked file, mirroring the per-bundled-file call
|
|
267
|
+
// in packaging-validator.ts. Without it the two lanes disagree about what
|
|
268
|
+
// they scan: a skill naming its tools bare in a referenced resource file
|
|
269
|
+
// is a finding when packaged and silence when audited. On the installed
|
|
270
|
+
// corpus it adds 4 occurrences in 1 document (11/7 -> 15/8).
|
|
271
|
+
// ⚠️ That is the ONLY linked-file sample the corpus offers, so this lane's
|
|
272
|
+
// precision rests on n=1 — and one of its four occurrences is a section
|
|
273
|
+
// HEADING naming the tool, a weaker shape than the step-an-agent-copies
|
|
274
|
+
// case the SKILL.md measurement was built from. Warning severity and the
|
|
275
|
+
// per-identifier `link` waiver are what make that acceptable to ship;
|
|
276
|
+
// re-measure here first if this code is ever proposed for `error`.
|
|
277
|
+
// Whole-file bytes, frontmatter included: the detector strips leading
|
|
278
|
+
// frontmatter itself, so an `allowed-tools:` list cannot seed the
|
|
279
|
+
// vocabulary it then fires against.
|
|
280
|
+
collectUnqualifiedMcpToolIssues(linkedContent, issueLocation(currentPath, locationRoot), issues);
|
|
250
281
|
}
|
|
251
282
|
// Record linked file result (skip SKILL.md itself — it's the root)
|
|
252
283
|
if (currentPath !== resolvedSkillPath) {
|
|
@@ -255,7 +286,6 @@ async function traverseLinks(skillPath, skillDir, locationRoot, issues, allEvide
|
|
|
255
286
|
lineCount: processed.content.split('\n').length,
|
|
256
287
|
linksFound: processed.localLinkCount,
|
|
257
288
|
linksValidated: processed.linksValidated,
|
|
258
|
-
issues: processed.fileIssues,
|
|
259
289
|
});
|
|
260
290
|
}
|
|
261
291
|
}
|
|
@@ -395,11 +425,16 @@ function findBoundedMatch(line, candidate) {
|
|
|
395
425
|
function scanFileForReferences(visitedPath, candidates, results) {
|
|
396
426
|
let content;
|
|
397
427
|
try {
|
|
398
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- visitedPath from BFS traversal
|
|
399
428
|
content = fs.readFileSync(visitedPath, 'utf-8');
|
|
400
429
|
}
|
|
401
|
-
catch {
|
|
402
|
-
|
|
430
|
+
catch (error) {
|
|
431
|
+
// The BFS already read this file, so "not there now" is a race with nothing
|
|
432
|
+
// left to scan. A refusal is not that: skipping it silently dropped every
|
|
433
|
+
// implicit reference the file carried, and the unreferenced-file finding
|
|
434
|
+
// it would have cleared fired instead.
|
|
435
|
+
if (isPathAbsentError(error))
|
|
436
|
+
return;
|
|
437
|
+
throw error;
|
|
403
438
|
}
|
|
404
439
|
const lines = content.split('\n');
|
|
405
440
|
for (const [lineIndex, line] of lines.entries()) {
|
|
@@ -466,7 +501,9 @@ function buildMetadata(frontmatter, lineCount) {
|
|
|
466
501
|
}
|
|
467
502
|
return metadata;
|
|
468
503
|
}
|
|
469
|
-
|
|
504
|
+
/** The ONE exit for this lane: resolves every issue against `validation`. */
|
|
505
|
+
function buildResult(skillPath, isVATGenerated, rawIssues, validation, metadata) {
|
|
506
|
+
const issues = runSingleUnitValidation(rawIssues, validation).emitted;
|
|
470
507
|
const issueCounts = countBySeverity(issues);
|
|
471
508
|
const summary = `${issueCounts.errors} errors, ${issueCounts.warnings} warnings, ${issueCounts.info} info`;
|
|
472
509
|
const result = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-validator.js","sourceRoot":"","sources":["../../src/validators/skill-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAwB,MAAM,kCAAkC,CAAC;AACpH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAChH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAIrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAwB;IAC1D,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEtD,6EAA6E;IAC7E,mDAAmD;IACnD,6EAA6E;IAC7E,wEAAwE;IACxE,wCAAwC;IACxC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IACvG,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,WAAW,GAAqB,EAAE,CAAC;IAEzC,uBAAuB;IACvB,+GAA+G;IAC/G,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,iBAAiB,GAAsB,CAAC;gBAC5C,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,qBAAqB;gBAC9B,QAAQ,EAAE,aAAa;aACxB,CAAC,CAAC;QACH,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;YAClD,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,iBAAiB;YACzB,WAAW,EAAE,eAAe,CAAC,iBAAiB,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,YAAY;IACZ,gGAAgG;IAChG,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAE7C,oBAAoB;IACpB,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,WAAW,CAAC,KAAK;YAC1B,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,uDAAuD;SAC7D,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;IAEpC,sEAAsE;IACtE,6BAA6B;IAC7B,IAAI,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,wBAAwB,CACzC,OAAO,EACP,WAAW,CAAC,MAAM,CAAC,EACnB,aAAa,CACd,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,yEAAyE;IACzE,uEAAuE;IACvE,8BAA8B;IAC9B,MAAM,CAAC,IAAI,CACT,GAAG,yBAAyB,CAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC,EACxE,GAAG,wBAAwB,CAAC,WAAW,EAAE,aAAa,CAAC,EACvD,GAAG,8BAA8B,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,EAC/E,GAAG,uBAAuB,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAC5D,CAAC;IAEF,gDAAgD;IAChD,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAEhE,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAC9D,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACvD,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,kCAAkC;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAEhG,sEAAsE;IACtE,+DAA+D;IAC/D,MAAM,qBAAqB,GAAG,iCAAiC,CAC7D,SAAS,EACT,QAAQ,EACR,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAChC,YAAY,CACb,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;IAEtC,8BAA8B;IAC9B,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACnC,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAExE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAGD,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,SAAS,6BAA6B,CAAC,QAAgB;IACrD,OAAO,QAAQ,KAAK,UAAU,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,IAAiD,EACjD,WAAmB,EACnB,QAAgB,EAChB,YAAoB,EACpB,UAA6B,EAC7B,MAAyB;IAEzB,6EAA6E;IAC7E,wEAAwE;IACxE,6EAA6E;IAC7E,oFAAoF;IACpF,mDAAmD;IACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC1D,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;IAC3C,MAAM,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAE5D,oEAAoE;IACpE,wEAAwE;IACxE,wEAAwE;IACxE,qEAAqE;IACrE,+BAA+B;IAC/B,wGAAwG;IACxG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAoB;YAC7B,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,0BAA0B,IAAI,CAAC,IAAI,EAAE;YAC9C,QAAQ,EAAE,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,uCAAuC;SAC7C,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,KAAK,GAAoB;YAC7B,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,wCAAwC,IAAI,CAAC,IAAI,EAAE;YAC5D,QAAQ,EAAE,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,6EAA6E;SACnF,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAC3C,CAAC;AAWD;;;GAGG;AACH,SAAS,gBAAgB,CACvB,WAAyG,EACzG,WAAmB,EACnB,QAAgB,EAChB,YAAoB,EACpB,MAAyB,EACzB,OAAoB;IAEpB,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAgB,CAAC,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAElH,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QAED,cAAc,EAAE,CAAC;QAEjB,IAAI,MAAM,KAAK,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;AACnH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,aAAa,CAC1B,SAAiB,EACjB,QAAgB,EAChB,YAAoB,EACpB,MAAyB,EACzB,WAA6B;IAE7B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACrD,MAAM,WAAW,GAAiC,EAAE,CAAC;IACrD,MAAM,KAAK,GAAa,CAAC,iBAAiB,CAAC,CAAC;IAE5C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM;QACR,CAAC;QAED,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,wCAAwC,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE;gBAC3F,QAAQ,EAAE,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC;aACnD,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtG,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAElC,yEAAyE;QACzE,qEAAqE;QACrE,sCAAsC;QACtC,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;YACtC,uHAAuH;YACvH,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC5D,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAClE,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;YAC/D,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;YACpC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5H,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;QACrC,CAAC;QAED,mEAAmE;QACnE,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;YACtC,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;gBAC/C,UAAU,EAAE,SAAS,CAAC,cAAc;gBACpC,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,MAAM,EAAE,SAAS,CAAC,UAAU;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAC9B,SAAiB,EACjB,QAAgB,EAChB,YAAoB,EACpB,WAAyC,EACzC,MAAyB;IAEzB,sDAAsD;IACtD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpE,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,4CAA4C;IAC5C,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE7D,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEnC,yBAAyB;QACzB,IAAI,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,gDAAgD;QAChD,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,yDAAyD;IACzD,MAAM,YAAY,GAAG,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAE1F,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEpD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,OAAO,CAAC,CAAC;QACnE,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,0BAA0B;gBAChC,OAAO,EAAE,yDAAyD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,WAAW,EAAE;gBAC7G,QAAQ,EAAE,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC;gBAC9C,GAAG,EAAE,iFAAiF;aACvF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,0DAA0D,OAAO,EAAE;gBAC5E,QAAQ,EAAE,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC;gBAC9C,GAAG,EAAE,gFAAgF;aACtF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAkBD,8EAA8E;AAC9E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,GAAG,EAAE,IAAI,EAAS,aAAa;IAC/B,GAAG,EAAe,yBAAyB;IAC3C,GAAG,EAAE,GAAG,EAAU,cAAc;IAChC,GAAG,EAAE,GAAG,EAAU,SAAS;IAC3B,GAAG,EAAe,2BAA2B;IAC7C,GAAG,EAAe,sBAAsB;IACxC,GAAG,EAAE,GAAG,EAAU,WAAW;IAC7B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAK,wCAAwC;IAC1D,GAAG,EAAE,GAAG,EAAE,GAAG,EAAI,uDAAuD;CACzE,CAAC,CAAC;AAEH;;;GAGG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAa,EAAE,eAAuB;IAChF,qCAAqC;IACrC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oCAAoC;IACpC,MAAM,UAAU,GAAG,KAAK,GAAG,eAAe,CAAC;IAC3C,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC9C,qEAAqE;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,iBAAoC;IAEpC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,sCAAsC;IACtC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,qCAAqC;QACrC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEjC,yBAAyB;QACzB,UAAU,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAExC,mCAAmC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAY,EAAE,SAAiB;IACvD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,UAAkB,CAAC;IAEvB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjE,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;QAE5B,IAAI,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YAC/F,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,WAAmB,EACnB,UAA+B,EAC/B,OAA4B;IAE5B,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,qGAAqG;QACrG,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,wBAAwB;IAClC,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,UAAU,EAAE,CAAC;YACrD,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YAED,gDAAgD;YAChD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAEhE,OAAO,CAAC,IAAI,CAAC;gBACX,cAAc;gBACd,OAAO,EAAE,WAAW;gBACpB,WAAW;gBACX,IAAI,EAAE,SAAS,GAAG,CAAC;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,iBAAoC,EACpC,YAAiC;IAEjC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACxD,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,qBAAqB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAgB,EAChB,SAAiB,EACjB,aAAqB,EACrB,MAAyB;IAEzB,2CAA2C;IAC3C,MAAM,eAAe,GAAG,IAAI,CAAC;IAC7B,IAAI,SAAS,GAAG,eAAe,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,qCAAqC,SAAS,MAAM,eAAe,SAAS;YACrF,QAAQ,EAAE,aAAa;YACvB,GAAG,EAAE,+EAA+E;SACrF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,WAAoC,EACpC,SAAiB;IAEjB,MAAM,QAAQ,GAAiC,EAAE,SAAS,EAAE,CAAC;IAE7D,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnE,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,WAAW,CAAC,aAAa,CAAC,IAAI,OAAO,WAAW,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjF,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAClB,SAAiB,EACjB,cAAuB,EACvB,MAAyB,EACzB,QAAuC;IAEvC,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,GAAG,WAAW,CAAC,MAAM,YAAY,WAAW,CAAC,QAAQ,cAAc,WAAW,CAAC,IAAI,OAAO,CAAC;IAE3G,MAAM,MAAM,GAAqB;QAC/B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;QAClD,MAAM,EAAE,yBAAyB,CAAC,MAAM,CAAC;QACzC,OAAO;QACP,MAAM;QACN,WAAW;KACZ,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"skill-validator.js","sourceRoot":"","sources":["../../src/validators/skill-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-only-codes.js","sourceRoot":"","sources":["../../src/validators/source-only-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,sBAAsB;IACtB,
|
|
1
|
+
{"version":3,"file":"source-only-codes.js","sourceRoot":"","sources":["../../src/validators/source-only-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;IACxB,oBAAoB;IACpB,yBAAyB;IACzB,gCAAgC;CACjC,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SeverityCounts, ValidationIssue } from '@vibe-agent-toolkit/
|
|
1
|
+
import type { SeverityCounts, ValidationConfig, ValidationIssue } from '@vibe-agent-toolkit/schema';
|
|
2
2
|
import type { EvidenceRecord } from '../evidence/index.js';
|
|
3
3
|
export interface ValidationResult {
|
|
4
4
|
path: string;
|
|
@@ -29,6 +29,20 @@ export interface ValidationResult {
|
|
|
29
29
|
version?: string;
|
|
30
30
|
lineCount?: number;
|
|
31
31
|
referenceFiles?: number;
|
|
32
|
+
/** Marketplace only: every entry the manifest's `plugins` list declares. */
|
|
33
|
+
pluginEntries?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Marketplace only: the entries whose `source` is a relative path — plugins
|
|
36
|
+
* the marketplace ships itself, each as the manifest wrote it. Published so
|
|
37
|
+
* a consumer can resolve each one against the marketplace root and validate
|
|
38
|
+
* THAT directory: a count in its place let a walk of `plugins/*` satisfy the
|
|
39
|
+
* denominator by number while the declared plugin went unlooked-at, and
|
|
40
|
+
* refused the co-located `source: "./"` shape, which lives in no `plugins/`.
|
|
41
|
+
*/
|
|
42
|
+
localPluginSources?: Array<{
|
|
43
|
+
name: string;
|
|
44
|
+
source: string;
|
|
45
|
+
}>;
|
|
32
46
|
};
|
|
33
47
|
/** Raw evidence records collected during validation. Rendered in --verbose. */
|
|
34
48
|
evidence?: EvidenceRecord[];
|
|
@@ -72,6 +86,12 @@ export interface ValidateOptions {
|
|
|
72
86
|
isVATGenerated?: boolean;
|
|
73
87
|
/** Check for files in skill directory that aren't referenced in markdown content */
|
|
74
88
|
checkUnreferencedFiles?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* `severity` / `allow` applied to every registry-coded issue this lane emits.
|
|
91
|
+
* REQUIRED so a caller holding a config cannot silently omit it; `{}` when
|
|
92
|
+
* no config governs the skill or the caller resolves severity itself.
|
|
93
|
+
*/
|
|
94
|
+
validation: ValidationConfig;
|
|
75
95
|
}
|
|
76
96
|
/**
|
|
77
97
|
* Discriminated union representing different resource formats that can be validated
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validators/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validators/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-validator.d.ts","sourceRoot":"","sources":["../../src/validators/unified-validator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAqB,MAAM,kBAAkB,CAAC;AAO7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAyBnD,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAChE;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACzF;
|
|
1
|
+
{"version":3,"file":"unified-validator.d.ts","sourceRoot":"","sources":["../../src/validators/unified-validator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAqB,MAAM,kBAAkB,CAAC;AAO7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAyBnD,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAChE;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACzF;AAQD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2E7G"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { countBySeverity } from '@vibe-agent-toolkit/
|
|
2
|
-
import { issueLocation } from '@vibe-agent-toolkit/utils';
|
|
1
|
+
import { countBySeverity } from '@vibe-agent-toolkit/schema';
|
|
2
|
+
import { issueLocation, VatError } from '@vibe-agent-toolkit/utils';
|
|
3
3
|
import { resolveAnchorRoot } from './anchor-root.js';
|
|
4
4
|
import { detectResourceFormat } from './format-detection.js';
|
|
5
5
|
import { validateMarketplace } from './marketplace-validator.js';
|
|
@@ -22,10 +22,9 @@ function unknownFormatResult(path, summary, issue) {
|
|
|
22
22
|
issueCounts: countBySeverity(issues),
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
-
class ProgrammerError extends
|
|
25
|
+
class ProgrammerError extends VatError {
|
|
26
26
|
constructor(message) {
|
|
27
|
-
super(message);
|
|
28
|
-
this.name = 'ProgrammerError';
|
|
27
|
+
super('PROGRAMMER', message);
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-validator.js","sourceRoot":"","sources":["../../src/validators/unified-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,MAAM,
|
|
1
|
+
{"version":3,"file":"unified-validator.js","sourceRoot":"","sources":["../../src/validators/unified-validator.ts"],"names":[],"mappings":"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"}
|