@vibe-agent-toolkit/cli 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 +4 -5
- package/dist/bin/vat +95 -28
- package/dist/bin/vat.js +95 -28
- package/dist/bin/vat.js.map +1 -1
- package/dist/bin.js +137 -76
- package/dist/bin.js.map +1 -1
- package/dist/command-loaders.d.ts +44 -0
- package/dist/command-loaders.d.ts.map +1 -0
- package/dist/command-loaders.js +60 -0
- package/dist/command-loaders.js.map +1 -0
- package/dist/commands/agent/build.d.ts.map +1 -1
- package/dist/commands/agent/build.js +2 -1
- package/dist/commands/agent/build.js.map +1 -1
- package/dist/commands/agent/import.d.ts.map +1 -1
- package/dist/commands/agent/import.js +3 -2
- package/dist/commands/agent/import.js.map +1 -1
- package/dist/commands/agent/index.js +1 -1
- package/dist/commands/agent/install-path.d.ts +36 -0
- package/dist/commands/agent/install-path.d.ts.map +1 -0
- package/dist/commands/agent/install-path.js +44 -0
- package/dist/commands/agent/install-path.js.map +1 -0
- package/dist/commands/agent/install.d.ts.map +1 -1
- package/dist/commands/agent/install.js +66 -13
- package/dist/commands/agent/install.js.map +1 -1
- package/dist/commands/agent/installed.d.ts.map +1 -1
- package/dist/commands/agent/installed.js +22 -12
- package/dist/commands/agent/installed.js.map +1 -1
- package/dist/commands/agent/list.d.ts.map +1 -1
- package/dist/commands/agent/list.js +2 -1
- package/dist/commands/agent/list.js.map +1 -1
- package/dist/commands/agent/run.d.ts.map +1 -1
- package/dist/commands/agent/run.js +2 -1
- package/dist/commands/agent/run.js.map +1 -1
- package/dist/commands/agent/uninstall.d.ts.map +1 -1
- package/dist/commands/agent/uninstall.js +13 -6
- package/dist/commands/agent/uninstall.js.map +1 -1
- package/dist/commands/agent/validate.d.ts.map +1 -1
- package/dist/commands/agent/validate.js +3 -2
- package/dist/commands/agent/validate.js.map +1 -1
- package/dist/commands/ard/emit.d.ts +153 -0
- package/dist/commands/ard/emit.d.ts.map +1 -0
- package/dist/commands/ard/emit.js +276 -0
- package/dist/commands/ard/emit.js.map +1 -0
- package/dist/commands/ard/index.d.ts +12 -0
- package/dist/commands/ard/index.d.ts.map +1 -0
- package/dist/commands/ard/index.js +80 -0
- package/dist/commands/ard/index.js.map +1 -0
- package/dist/commands/ard/surfaces.d.ts +56 -0
- package/dist/commands/ard/surfaces.d.ts.map +1 -0
- package/dist/commands/ard/surfaces.js +150 -0
- package/dist/commands/ard/surfaces.js.map +1 -0
- package/dist/commands/audit/distributed-tree.d.ts +60 -2
- package/dist/commands/audit/distributed-tree.d.ts.map +1 -1
- package/dist/commands/audit/distributed-tree.js +73 -1
- package/dist/commands/audit/distributed-tree.js.map +1 -1
- package/dist/commands/audit/git-url-clone.d.ts +1 -1
- package/dist/commands/audit/git-url-clone.d.ts.map +1 -1
- package/dist/commands/audit/git-url-clone.js.map +1 -1
- package/dist/commands/audit/hierarchical-output.d.ts +1 -1
- package/dist/commands/audit/hierarchical-output.d.ts.map +1 -1
- package/dist/commands/audit/hierarchical-output.js +1 -1
- package/dist/commands/audit/hierarchical-output.js.map +1 -1
- package/dist/commands/audit/provenance.d.ts.map +1 -1
- package/dist/commands/audit/provenance.js +4 -3
- package/dist/commands/audit/provenance.js.map +1 -1
- package/dist/commands/audit/scan-population.d.ts +158 -0
- package/dist/commands/audit/scan-population.d.ts.map +1 -0
- package/dist/commands/audit/scan-population.js +292 -0
- package/dist/commands/audit/scan-population.js.map +1 -0
- package/dist/commands/audit-settings.d.ts.map +1 -1
- package/dist/commands/audit-settings.js +6 -5
- package/dist/commands/audit-settings.js.map +1 -1
- package/dist/commands/audit.d.ts +98 -8
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +1133 -395
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/build.d.ts +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +40 -36
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/cache/cache-control.d.ts +82 -0
- package/dist/commands/cache/cache-control.d.ts.map +1 -0
- package/dist/commands/cache/cache-control.js +86 -0
- package/dist/commands/cache/cache-control.js.map +1 -0
- package/dist/commands/cache/clear.d.ts +105 -0
- package/dist/commands/cache/clear.d.ts.map +1 -0
- package/dist/commands/cache/clear.js +248 -0
- package/dist/commands/cache/clear.js.map +1 -0
- package/dist/commands/cache/index.d.ts +18 -0
- package/dist/commands/cache/index.d.ts.map +1 -0
- package/dist/commands/cache/index.js +94 -0
- package/dist/commands/cache/index.js.map +1 -0
- package/dist/commands/claude/claude-config.d.ts.map +1 -1
- package/dist/commands/claude/claude-config.js +6 -0
- package/dist/commands/claude/claude-config.js.map +1 -1
- package/dist/commands/claude/context.d.ts +340 -0
- package/dist/commands/claude/context.d.ts.map +1 -0
- package/dist/commands/claude/context.js +1080 -0
- package/dist/commands/claude/context.js.map +1 -0
- package/dist/commands/claude/index.d.ts +14 -0
- package/dist/commands/claude/index.d.ts.map +1 -1
- package/dist/commands/claude/index.js +22 -2
- package/dist/commands/claude/index.js.map +1 -1
- package/dist/commands/claude/marketplace/changelog-utils.d.ts +1 -1
- package/dist/commands/claude/marketplace/changelog-utils.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/changelog-utils.js +1 -2
- package/dist/commands/claude/marketplace/changelog-utils.js.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.js +40 -31
- package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
- package/dist/commands/claude/marketplace/license-utils.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/license-utils.js +0 -1
- package/dist/commands/claude/marketplace/license-utils.js.map +1 -1
- package/dist/commands/claude/marketplace/publish-tree.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/publish-tree.js +0 -6
- package/dist/commands/claude/marketplace/publish-tree.js.map +1 -1
- package/dist/commands/claude/marketplace/publish.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/publish.js +2 -1
- package/dist/commands/claude/marketplace/publish.js.map +1 -1
- package/dist/commands/claude/marketplace/validate.d.ts +73 -22
- package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/validate.js +407 -72
- package/dist/commands/claude/marketplace/validate.js.map +1 -1
- package/dist/commands/claude/org/api-keys.d.ts +0 -3
- package/dist/commands/claude/org/api-keys.d.ts.map +1 -1
- package/dist/commands/claude/org/api-keys.js +2 -1
- package/dist/commands/claude/org/api-keys.js.map +1 -1
- package/dist/commands/claude/org/helpers.d.ts +54 -1
- package/dist/commands/claude/org/helpers.d.ts.map +1 -1
- package/dist/commands/claude/org/helpers.js +42 -7
- package/dist/commands/claude/org/helpers.js.map +1 -1
- package/dist/commands/claude/org/index.d.ts.map +1 -1
- package/dist/commands/claude/org/index.js +24 -16
- package/dist/commands/claude/org/index.js.map +1 -1
- package/dist/commands/claude/org/invites.d.ts +0 -3
- package/dist/commands/claude/org/invites.d.ts.map +1 -1
- package/dist/commands/claude/org/invites.js +3 -2
- package/dist/commands/claude/org/invites.js.map +1 -1
- package/dist/commands/claude/org/skills.d.ts +527 -0
- package/dist/commands/claude/org/skills.d.ts.map +1 -1
- package/dist/commands/claude/org/skills.js +1414 -108
- package/dist/commands/claude/org/skills.js.map +1 -1
- package/dist/commands/claude/org/users.d.ts +0 -3
- package/dist/commands/claude/org/users.d.ts.map +1 -1
- package/dist/commands/claude/org/users.js +6 -3
- package/dist/commands/claude/org/users.js.map +1 -1
- package/dist/commands/claude/org/workspaces.d.ts +0 -3
- package/dist/commands/claude/org/workspaces.d.ts.map +1 -1
- package/dist/commands/claude/org/workspaces.js +11 -7
- package/dist/commands/claude/org/workspaces.js.map +1 -1
- package/dist/commands/claude/plugin/build.d.ts +41 -3
- package/dist/commands/claude/plugin/build.d.ts.map +1 -1
- package/dist/commands/claude/plugin/build.js +147 -80
- package/dist/commands/claude/plugin/build.js.map +1 -1
- package/dist/commands/claude/plugin/helpers.d.ts.map +1 -1
- package/dist/commands/claude/plugin/helpers.js +2 -7
- package/dist/commands/claude/plugin/helpers.js.map +1 -1
- package/dist/commands/claude/plugin/install.d.ts +12 -0
- package/dist/commands/claude/plugin/install.d.ts.map +1 -1
- package/dist/commands/claude/plugin/install.js +93 -62
- package/dist/commands/claude/plugin/install.js.map +1 -1
- package/dist/commands/claude/plugin/list.d.ts.map +1 -1
- package/dist/commands/claude/plugin/list.js +3 -2
- package/dist/commands/claude/plugin/list.js.map +1 -1
- package/dist/commands/claude/plugin/marketplace-json.d.ts +24 -9
- package/dist/commands/claude/plugin/marketplace-json.d.ts.map +1 -1
- package/dist/commands/claude/plugin/marketplace-json.js +10 -9
- package/dist/commands/claude/plugin/marketplace-json.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-changelog.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-changelog.js +0 -2
- package/dist/commands/claude/plugin/plugin-changelog.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-files.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-files.js +3 -6
- package/dist/commands/claude/plugin/plugin-files.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-validators.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-validators.js +3 -6
- package/dist/commands/claude/plugin/plugin-validators.js.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.d.ts +73 -0
- package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.js +221 -14
- package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
- package/dist/commands/claude/plugin/uninstall.d.ts.map +1 -1
- package/dist/commands/claude/plugin/uninstall.js +4 -4
- package/dist/commands/claude/plugin/uninstall.js.map +1 -1
- package/dist/commands/consistency-check.d.ts +17 -15
- package/dist/commands/consistency-check.d.ts.map +1 -1
- package/dist/commands/consistency-check.js +152 -106
- package/dist/commands/consistency-check.js.map +1 -1
- package/dist/commands/corpus/index.d.ts.map +1 -1
- package/dist/commands/corpus/index.js +3 -0
- package/dist/commands/corpus/index.js.map +1 -1
- package/dist/commands/corpus/report.d.ts +1 -2
- package/dist/commands/corpus/report.d.ts.map +1 -1
- package/dist/commands/corpus/report.js +1 -3
- package/dist/commands/corpus/report.js.map +1 -1
- package/dist/commands/corpus/runner.d.ts +58 -1
- package/dist/commands/corpus/runner.d.ts.map +1 -1
- package/dist/commands/corpus/runner.js +95 -41
- package/dist/commands/corpus/runner.js.map +1 -1
- package/dist/commands/corpus/scan.d.ts.map +1 -1
- package/dist/commands/corpus/scan.js +20 -12
- package/dist/commands/corpus/scan.js.map +1 -1
- package/dist/commands/corpus/seed.d.ts +4 -4
- package/dist/commands/corpus/seed.d.ts.map +1 -1
- package/dist/commands/corpus/seed.js +1 -3
- package/dist/commands/corpus/seed.js.map +1 -1
- package/dist/commands/doctor.d.ts +50 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +245 -52
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/inventory.d.ts +13 -1
- package/dist/commands/inventory.d.ts.map +1 -1
- package/dist/commands/inventory.js +128 -17
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/mcp/collections.d.ts +1 -1
- package/dist/commands/mcp/collections.d.ts.map +1 -1
- package/dist/commands/mcp/list-collections.d.ts.map +1 -1
- package/dist/commands/mcp/list-collections.js +2 -1
- package/dist/commands/mcp/list-collections.js.map +1 -1
- package/dist/commands/mcp/serve.d.ts.map +1 -1
- package/dist/commands/mcp/serve.js +3 -2
- package/dist/commands/mcp/serve.js.map +1 -1
- package/dist/commands/okf/index.d.ts +11 -0
- package/dist/commands/okf/index.d.ts.map +1 -0
- package/dist/commands/okf/index.js +114 -0
- package/dist/commands/okf/index.js.map +1 -0
- package/dist/commands/okf/validate.d.ts +191 -0
- package/dist/commands/okf/validate.d.ts.map +1 -0
- package/dist/commands/okf/validate.js +190 -0
- package/dist/commands/okf/validate.js.map +1 -0
- package/dist/commands/phase-utils.d.ts +182 -114
- package/dist/commands/phase-utils.d.ts.map +1 -1
- package/dist/commands/phase-utils.js +154 -163
- package/dist/commands/phase-utils.js.map +1 -1
- package/dist/commands/positional-args.d.ts.map +1 -1
- package/dist/commands/positional-args.js +3 -2
- package/dist/commands/positional-args.js.map +1 -1
- package/dist/commands/rag/clear-command.d.ts.map +1 -1
- package/dist/commands/rag/clear-command.js +2 -1
- package/dist/commands/rag/clear-command.js.map +1 -1
- package/dist/commands/rag/index-command.d.ts +64 -0
- package/dist/commands/rag/index-command.d.ts.map +1 -1
- package/dist/commands/rag/index-command.js +72 -6
- package/dist/commands/rag/index-command.js.map +1 -1
- package/dist/commands/rag/index.d.ts.map +1 -1
- package/dist/commands/rag/index.js +23 -10
- package/dist/commands/rag/index.js.map +1 -1
- package/dist/commands/rag/query-command.d.ts.map +1 -1
- package/dist/commands/rag/query-command.js +2 -1
- package/dist/commands/rag/query-command.js.map +1 -1
- package/dist/commands/rag/stats-command.d.ts.map +1 -1
- package/dist/commands/rag/stats-command.js +2 -1
- package/dist/commands/rag/stats-command.js.map +1 -1
- package/dist/commands/resources/builtin-help.d.ts +27 -0
- package/dist/commands/resources/builtin-help.d.ts.map +1 -0
- package/dist/commands/resources/builtin-help.js +46 -0
- package/dist/commands/resources/builtin-help.js.map +1 -0
- package/dist/commands/resources/check-progress.d.ts +154 -0
- package/dist/commands/resources/check-progress.d.ts.map +1 -0
- package/dist/commands/resources/check-progress.js +222 -0
- package/dist/commands/resources/check-progress.js.map +1 -0
- package/dist/commands/resources/check-supervisor.d.ts +465 -0
- package/dist/commands/resources/check-supervisor.d.ts.map +1 -0
- package/dist/commands/resources/check-supervisor.js +573 -0
- package/dist/commands/resources/check-supervisor.js.map +1 -0
- package/dist/commands/resources/check.d.ts +593 -0
- package/dist/commands/resources/check.d.ts.map +1 -0
- package/dist/commands/resources/check.js +1365 -0
- package/dist/commands/resources/check.js.map +1 -0
- package/dist/commands/resources/index.d.ts.map +1 -1
- package/dist/commands/resources/index.js +425 -6
- package/dist/commands/resources/index.js.map +1 -1
- package/dist/commands/resources/query.d.ts +106 -0
- package/dist/commands/resources/query.d.ts.map +1 -0
- package/dist/commands/resources/query.js +177 -0
- package/dist/commands/resources/query.js.map +1 -0
- package/dist/commands/resources/scan.d.ts +24 -0
- package/dist/commands/resources/scan.d.ts.map +1 -1
- package/dist/commands/resources/scan.js +17 -8
- package/dist/commands/resources/scan.js.map +1 -1
- package/dist/commands/resources/validate.d.ts +57 -4
- package/dist/commands/resources/validate.d.ts.map +1 -1
- package/dist/commands/resources/validate.js +224 -56
- package/dist/commands/resources/validate.js.map +1 -1
- package/dist/commands/skill/review-checklist.d.ts +3 -2
- package/dist/commands/skill/review-checklist.d.ts.map +1 -1
- package/dist/commands/skill/review-checklist.js +40 -2
- package/dist/commands/skill/review-checklist.js.map +1 -1
- package/dist/commands/skill/review.d.ts +247 -0
- package/dist/commands/skill/review.d.ts.map +1 -1
- package/dist/commands/skill/review.js +99 -62
- package/dist/commands/skill/review.js.map +1 -1
- package/dist/commands/skill/test/configure.d.ts +56 -0
- package/dist/commands/skill/test/configure.d.ts.map +1 -1
- package/dist/commands/skill/test/configure.js +75 -16
- package/dist/commands/skill/test/configure.js.map +1 -1
- package/dist/commands/skill/test/run.d.ts +63 -10
- package/dist/commands/skill/test/run.d.ts.map +1 -1
- package/dist/commands/skill/test/run.js +258 -77
- package/dist/commands/skill/test/run.js.map +1 -1
- package/dist/commands/skills/build.d.ts +94 -4
- package/dist/commands/skills/build.d.ts.map +1 -1
- package/dist/commands/skills/build.js +325 -97
- package/dist/commands/skills/build.js.map +1 -1
- package/dist/commands/skills/install.d.ts +2 -1
- package/dist/commands/skills/install.d.ts.map +1 -1
- package/dist/commands/skills/install.js +20 -31
- package/dist/commands/skills/install.js.map +1 -1
- package/dist/commands/skills/list.d.ts +2 -1
- package/dist/commands/skills/list.d.ts.map +1 -1
- package/dist/commands/skills/list.js +44 -26
- package/dist/commands/skills/list.js.map +1 -1
- package/dist/commands/skills/package.d.ts +24 -3
- package/dist/commands/skills/package.d.ts.map +1 -1
- package/dist/commands/skills/package.js +42 -17
- package/dist/commands/skills/package.js.map +1 -1
- package/dist/commands/skills/scope-guard.d.ts.map +1 -1
- package/dist/commands/skills/scope-guard.js +3 -5
- package/dist/commands/skills/scope-guard.js.map +1 -1
- package/dist/commands/skills/shared.d.ts.map +1 -1
- package/dist/commands/skills/shared.js +2 -4
- package/dist/commands/skills/shared.js.map +1 -1
- package/dist/commands/skills/skill-discovery.d.ts +47 -6
- package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
- package/dist/commands/skills/skill-discovery.js +66 -16
- package/dist/commands/skills/skill-discovery.js.map +1 -1
- package/dist/commands/skills/source-resolvers.d.ts +15 -0
- package/dist/commands/skills/source-resolvers.d.ts.map +1 -1
- package/dist/commands/skills/source-resolvers.js +25 -4
- package/dist/commands/skills/source-resolvers.js.map +1 -1
- package/dist/commands/skills/validate-command.d.ts.map +1 -1
- package/dist/commands/skills/validate-command.js +11 -3
- package/dist/commands/skills/validate-command.js.map +1 -1
- package/dist/commands/skills/validate.d.ts +140 -4
- package/dist/commands/skills/validate.d.ts.map +1 -1
- package/dist/commands/skills/validate.js +224 -67
- package/dist/commands/skills/validate.js.map +1 -1
- package/dist/commands/validate.d.ts +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +63 -27
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/verify.d.ts +119 -15
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +357 -142
- package/dist/commands/verify.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/report-schemas.d.ts +45 -0
- package/dist/report-schemas.d.ts.map +1 -0
- package/dist/report-schemas.js +100 -0
- package/dist/report-schemas.js.map +1 -0
- package/dist/skill-resolution/classify.js +2 -2
- package/dist/skill-resolution/classify.js.map +1 -1
- package/dist/skill-resolution/packaging-config.d.ts +49 -5
- package/dist/skill-resolution/packaging-config.d.ts.map +1 -1
- package/dist/skill-resolution/packaging-config.js +59 -19
- package/dist/skill-resolution/packaging-config.js.map +1 -1
- package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
- package/dist/skill-resolution/resolve-skill-reference.js +55 -57
- package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
- package/dist/utils/agent-discovery.d.ts.map +1 -1
- package/dist/utils/agent-discovery.js +22 -11
- package/dist/utils/agent-discovery.js.map +1 -1
- package/dist/utils/agent-runner.d.ts.map +1 -1
- package/dist/utils/agent-runner.js +7 -4
- package/dist/utils/agent-runner.js.map +1 -1
- package/dist/utils/claude-context-lens.d.ts +34 -0
- package/dist/utils/claude-context-lens.d.ts.map +1 -0
- package/dist/utils/claude-context-lens.js +39 -0
- package/dist/utils/claude-context-lens.js.map +1 -0
- package/dist/utils/command-error.d.ts +144 -7
- package/dist/utils/command-error.d.ts.map +1 -1
- package/dist/utils/command-error.js +179 -16
- package/dist/utils/command-error.js.map +1 -1
- package/dist/utils/config-loader.d.ts +2 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +40 -14
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/corpus-target.d.ts +26 -0
- package/dist/utils/corpus-target.d.ts.map +1 -0
- package/dist/utils/corpus-target.js +35 -0
- package/dist/utils/corpus-target.js.map +1 -0
- package/dist/utils/edge-lens-evaluation.d.ts +83 -0
- package/dist/utils/edge-lens-evaluation.d.ts.map +1 -0
- package/dist/utils/edge-lens-evaluation.js +110 -0
- package/dist/utils/edge-lens-evaluation.js.map +1 -0
- package/dist/utils/help-loader.d.ts.map +1 -1
- package/dist/utils/help-loader.js +0 -1
- package/dist/utils/help-loader.js.map +1 -1
- package/dist/utils/issue-anchor.d.ts +2 -2
- package/dist/utils/issue-anchor.d.ts.map +1 -1
- package/dist/utils/issue-anchor.js +1 -1
- package/dist/utils/issue-rendering.d.ts +3 -3
- package/dist/utils/issue-rendering.d.ts.map +1 -1
- package/dist/utils/issue-rendering.js +3 -3
- package/dist/utils/issue-rendering.js.map +1 -1
- package/dist/utils/issue-severity.d.ts +12 -5
- package/dist/utils/issue-severity.d.ts.map +1 -1
- package/dist/utils/issue-severity.js +1 -1
- package/dist/utils/issue-severity.js.map +1 -1
- package/dist/utils/optional-backend.d.ts +78 -0
- package/dist/utils/optional-backend.d.ts.map +1 -0
- package/dist/utils/optional-backend.js +117 -0
- package/dist/utils/optional-backend.js.map +1 -0
- package/dist/utils/output.d.ts +26 -0
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +35 -0
- package/dist/utils/output.js.map +1 -1
- package/dist/utils/package-json.d.ts +24 -0
- package/dist/utils/package-json.d.ts.map +1 -0
- package/dist/utils/package-json.js +49 -0
- package/dist/utils/package-json.js.map +1 -0
- package/dist/utils/population-wiring.d.ts +100 -0
- package/dist/utils/population-wiring.d.ts.map +1 -0
- package/dist/utils/population-wiring.js +98 -0
- package/dist/utils/population-wiring.js.map +1 -0
- package/dist/utils/project-root-policy.d.ts +20 -0
- package/dist/utils/project-root-policy.d.ts.map +1 -1
- package/dist/utils/project-root-policy.js +30 -0
- package/dist/utils/project-root-policy.js.map +1 -1
- package/dist/utils/projection-lenses.d.ts +98 -0
- package/dist/utils/projection-lenses.d.ts.map +1 -0
- package/dist/utils/projection-lenses.js +203 -0
- package/dist/utils/projection-lenses.js.map +1 -0
- package/dist/utils/projection-query.d.ts +324 -0
- package/dist/utils/projection-query.d.ts.map +1 -0
- package/dist/utils/projection-query.js +357 -0
- package/dist/utils/projection-query.js.map +1 -0
- package/dist/utils/projection-store.d.ts +335 -0
- package/dist/utils/projection-store.d.ts.map +1 -0
- package/dist/utils/projection-store.js +522 -0
- package/dist/utils/projection-store.js.map +1 -0
- package/dist/utils/relation-limits.d.ts +50 -0
- package/dist/utils/relation-limits.d.ts.map +1 -0
- package/dist/utils/relation-limits.js +50 -0
- package/dist/utils/relation-limits.js.map +1 -0
- package/dist/utils/repeatable-option.d.ts +37 -0
- package/dist/utils/repeatable-option.d.ts.map +1 -0
- package/dist/utils/repeatable-option.js +39 -0
- package/dist/utils/repeatable-option.js.map +1 -0
- package/dist/utils/resource-loader.d.ts +132 -2
- package/dist/utils/resource-loader.d.ts.map +1 -1
- package/dist/utils/resource-loader.js +288 -27
- package/dist/utils/resource-loader.js.map +1 -1
- package/dist/utils/root-argv.d.ts +53 -0
- package/dist/utils/root-argv.d.ts.map +1 -0
- package/dist/utils/root-argv.js +215 -0
- package/dist/utils/root-argv.js.map +1 -0
- package/dist/utils/run-integrity.d.ts +95 -0
- package/dist/utils/run-integrity.d.ts.map +1 -0
- package/dist/utils/run-integrity.js +102 -0
- package/dist/utils/run-integrity.js.map +1 -0
- package/dist/utils/skill-discovery.d.ts.map +1 -1
- package/dist/utils/skill-discovery.js +2 -1
- package/dist/utils/skill-discovery.js.map +1 -1
- package/dist/utils/skill-packaging-config.d.ts +63 -1
- package/dist/utils/skill-packaging-config.d.ts.map +1 -1
- package/dist/utils/skill-packaging-config.js +56 -1
- package/dist/utils/skill-packaging-config.js.map +1 -1
- package/dist/utils/sqlite-experimental-warning.d.ts +69 -0
- package/dist/utils/sqlite-experimental-warning.d.ts.map +1 -0
- package/dist/utils/sqlite-experimental-warning.js +144 -0
- package/dist/utils/sqlite-experimental-warning.js.map +1 -0
- package/dist/utils/url-redact.d.ts.map +1 -1
- package/dist/utils/url-redact.js +4 -6
- package/dist/utils/url-redact.js.map +1 -1
- package/dist/utils/user-context-scanner.d.ts +8 -0
- package/dist/utils/user-context-scanner.d.ts.map +1 -1
- package/dist/utils/user-context-scanner.js +4 -2
- package/dist/utils/user-context-scanner.js.map +1 -1
- package/dist/utils/validate-help-files.d.ts.map +1 -1
- package/dist/utils/validate-help-files.js +12 -6
- package/dist/utils/validate-help-files.js.map +1 -1
- package/dist/utils/vat-bin-path.d.ts +36 -0
- package/dist/utils/vat-bin-path.d.ts.map +1 -0
- package/dist/utils/vat-bin-path.js +48 -0
- package/dist/utils/vat-bin-path.js.map +1 -0
- package/dist/utils/verdict-helpers.d.ts +1 -1
- package/dist/utils/verdict-helpers.d.ts.map +1 -1
- package/dist/utils/verdict-helpers.js +1 -1
- package/dist/utils/verdict-helpers.js.map +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -3
- package/dist/version.js.map +1 -1
- package/docs/agent.md +2 -2
- package/docs/audit.md +141 -37
- package/docs/doctor.md +7 -6
- package/docs/index.md +40 -12
- package/docs/mcp.md +2 -2
- package/docs/rag.md +3 -2
- package/docs/resources.md +13 -3
- package/docs/skill-test.md +10 -9
- package/docs/skills.md +53 -69
- package/package.json +38 -27
- package/schemas/ard-emit.json +149 -0
- package/schemas/okf-validate.json +170 -0
- package/schemas/resources-check.json +229 -0
- package/schemas/skill-review.json +230 -0
- package/dist/commands/resources/command-helpers.d.ts +0 -5
- package/dist/commands/resources/command-helpers.d.ts.map +0 -1
- package/dist/commands/resources/command-helpers.js +0 -6
- package/dist/commands/resources/command-helpers.js.map +0 -1
|
@@ -9,21 +9,69 @@
|
|
|
9
9
|
* - anything the caller names in `exclude` (glob, or a bare/trailing-slash
|
|
10
10
|
* directory name; a pattern matching nothing is returned to the caller)
|
|
11
11
|
*
|
|
12
|
+
* Symlinks are judged before anything is copied, identically on both crawl
|
|
13
|
+
* routes: a FILE symlink whose target this copy ships is copied by content and
|
|
14
|
+
* reported; one that leaves the source, does not resolve, names a directory,
|
|
15
|
+
* or names a file the copy leaves out stops the copy by name
|
|
16
|
+
* ({@link PluginSymlinkRefusedError}) before the first byte lands.
|
|
17
|
+
*
|
|
12
18
|
* Respects .gitignore via crawlDirectory (respectGitignore: true, the default).
|
|
13
19
|
* Returns counts keyed to the spec's YAML summary extension.
|
|
14
20
|
*/
|
|
15
21
|
import { existsSync } from 'node:fs';
|
|
16
|
-
import { copyFile, mkdir } from 'node:fs/promises';
|
|
22
|
+
import { copyFile, lstat, mkdir, readdir, realpath, stat } from 'node:fs/promises';
|
|
17
23
|
import { dirname } from 'node:path';
|
|
18
24
|
import { AGENT_INSTRUCTION_FILE_PATTERNS, toAnyDepthGlobs } from '@vibe-agent-toolkit/agent-skills';
|
|
19
|
-
import {
|
|
25
|
+
import { isGlob, isPathAbsentError, safePath, toForwardSlash, VatError } from '@vibe-agent-toolkit/utils';
|
|
26
|
+
import { crawlDirectory, crawlPathFilter } from '@vibe-agent-toolkit/utils/crawl';
|
|
27
|
+
import { gitFindRoot } from '@vibe-agent-toolkit/utils/git';
|
|
20
28
|
import picomatch from 'picomatch';
|
|
29
|
+
function describeRefusal(entry) {
|
|
30
|
+
switch (entry.reason) {
|
|
31
|
+
case 'escapes-source':
|
|
32
|
+
return 'points outside the plugin source, so the bundle would carry a file from elsewhere on the build host';
|
|
33
|
+
case 'unresolvable':
|
|
34
|
+
return 'does not resolve to anything (dangling, or a loop)';
|
|
35
|
+
case 'directory':
|
|
36
|
+
return 'is a directory symlink; a bundle is a plain tree and cannot carry a directory alias';
|
|
37
|
+
case 'target-excluded':
|
|
38
|
+
return `resolves to '${entry.target}', which this copy leaves out (excluded, gitignored, untracked, or`
|
|
39
|
+
+ ' packaged by another phase), so the bundle would carry the excluded bytes under the link\'s name';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The copy stopped because the plugin source holds symlinks that cannot ship.
|
|
44
|
+
*
|
|
45
|
+
* The sibling of the listing refusal (`DirectoryListingRefusedError` from the
|
|
46
|
+
* crawl): thrown BEFORE the first byte is copied, with every offender named,
|
|
47
|
+
* so a failing build leaves no half-written bundle and the operator fixes the
|
|
48
|
+
* whole list in one pass. Measured before this existed: on the git route a
|
|
49
|
+
* directory or dangling symlink threw a raw `ENOTSUP` / `ENOENT` out of
|
|
50
|
+
* `copyFile` after earlier files had already landed, and a file symlink out of
|
|
51
|
+
* the source was copied by content with no diagnostic at all; on the walk route
|
|
52
|
+
* every symlink was silently dropped.
|
|
53
|
+
*
|
|
54
|
+
* The message speaks the bundle's coordinates (root-relative paths), never the
|
|
55
|
+
* build host's absolute paths, and names the remedy — the `exclude:` knob — in
|
|
56
|
+
* the same terms the listing refusal does.
|
|
57
|
+
*/
|
|
58
|
+
export class PluginSymlinkRefusedError extends VatError {
|
|
59
|
+
refused;
|
|
60
|
+
constructor(refused) {
|
|
61
|
+
const lines = refused.map((entry) => ` - '${entry.path}' ${describeRefusal(entry)}`);
|
|
62
|
+
super('PLUGIN_SYMLINK_REFUSED', `Refusing to copy the plugin source: ${refused.length} symbolic link(s) cannot be shipped in a bundle,`
|
|
63
|
+
+ ` so nothing was copied.\n${lines.join('\n')}\n`
|
|
64
|
+
+ 'Replace each link with the file it points at, or name it in the plugin\'s `exclude:` list to leave'
|
|
65
|
+
+ ' it out of the bundle deliberately.');
|
|
66
|
+
this.refused = refused;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
21
69
|
/**
|
|
22
70
|
* Built-in exclusions for the verbatim plugin copy.
|
|
23
71
|
*
|
|
24
72
|
* The agent-instruction list ONLY. `NEVER_PACKAGE_IN_SKILL_BUNDLE` also carries
|
|
25
73
|
* the navigation patterns, and importing that here would strip the front page off
|
|
26
|
-
* three in five real plugins: measured
|
|
74
|
+
* three in five real plugins: measured, 50 of 86 installed plugins ship
|
|
27
75
|
* a plugin-root `README.md` (57 of 94 when first measured — the population moves as
|
|
28
76
|
* plugins come and go; the ratio is what carries the argument, so re-measure rather
|
|
29
77
|
* than cite this as current), and `copyDistributionFiles` copies READMEs to the marketplace root
|
|
@@ -103,6 +151,131 @@ function classifyRelative(rel) {
|
|
|
103
151
|
return 'mcpCopied';
|
|
104
152
|
return undefined;
|
|
105
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Split the crawl's paths into regular files and symlinks by `lstat`, on BOTH
|
|
156
|
+
* routes — this is the one predicate the two crawl lanes share. The walker
|
|
157
|
+
* never yields a symlink (see {@link sweepSymlinks}), so there it finds none;
|
|
158
|
+
* `git ls-files` yields every tracked symlink as an ordinary path, so there it
|
|
159
|
+
* is what stops `copyFile` from being the first thing to notice.
|
|
160
|
+
*/
|
|
161
|
+
async function partitionByLstat(sourceDir, files) {
|
|
162
|
+
const regular = [];
|
|
163
|
+
const links = [];
|
|
164
|
+
for (const abs of files) {
|
|
165
|
+
const entry = { abs, rel: toForwardSlash(safePath.relative(sourceDir, abs)) };
|
|
166
|
+
const info = await lstat(abs);
|
|
167
|
+
(info.isSymbolicLink() ? links : regular).push(entry);
|
|
168
|
+
}
|
|
169
|
+
return { regular, links };
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Every symlink under `sourceDir` that the exclude list admits — the half of the
|
|
173
|
+
* population the walk route cannot see.
|
|
174
|
+
*
|
|
175
|
+
* `crawlDirectory`'s walker skips every symlink entry unless `followSymlinks`
|
|
176
|
+
* is set, and following would not do either: a directory link would be
|
|
177
|
+
* traversed (its contents yielded under the link's name) and a dangling one
|
|
178
|
+
* silently skipped as absence. Neither is "here is a symlink, decide". So on
|
|
179
|
+
* the walk route this pass lists them itself, with the SAME membership filter
|
|
180
|
+
* the crawl applied, and hands each one to the same judgement the git route's
|
|
181
|
+
* tracked symlinks get. A directory that will not list is not swallowed here:
|
|
182
|
+
* the crawl has already refused it by name before this runs.
|
|
183
|
+
*
|
|
184
|
+
* Only the walk route needs it. Inside a repository `git ls-files` already
|
|
185
|
+
* yields the tracked symlinks, and a sweep there would also find IGNORED ones
|
|
186
|
+
* (`node_modules/.bin/*` is nothing but symlinks) and refuse a bundle for links
|
|
187
|
+
* the crawl had correctly left out. The route is read the way the crawl reads
|
|
188
|
+
* it — is there a repository above `sourceDir` — with one gap: a repository
|
|
189
|
+
* whose `git ls-files` fails makes the crawl fall back to the walker, and that
|
|
190
|
+
* run gets no sweep. A repository with no working `git` already hard-fails the
|
|
191
|
+
* default scan elsewhere, so the gap is not widened here.
|
|
192
|
+
*/
|
|
193
|
+
async function sweepSymlinks(sourceDir, isMember) {
|
|
194
|
+
const found = [];
|
|
195
|
+
const walk = async (dir) => {
|
|
196
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
197
|
+
for (const entry of entries) {
|
|
198
|
+
const abs = safePath.join(dir, entry.name);
|
|
199
|
+
const rel = toForwardSlash(safePath.relative(sourceDir, abs));
|
|
200
|
+
if (!isMember(rel))
|
|
201
|
+
continue;
|
|
202
|
+
if (entry.isSymbolicLink()) {
|
|
203
|
+
found.push({ abs, rel });
|
|
204
|
+
}
|
|
205
|
+
else if (entry.isDirectory()) {
|
|
206
|
+
await walk(abs);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
await walk(sourceDir);
|
|
211
|
+
return found;
|
|
212
|
+
}
|
|
213
|
+
/** Is `real` the source root itself, or beneath it? Both sides canonical. */
|
|
214
|
+
function isUnderSource(real, realSource) {
|
|
215
|
+
return real === realSource || real.startsWith(`${realSource}/`);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Judge one symlink: the one shape that ships (`'file'`, in-tree, copied by
|
|
219
|
+
* content) or the refusal that stops the copy.
|
|
220
|
+
*
|
|
221
|
+
* `shipped` is the set of root-relative REGULAR files this copy will land —
|
|
222
|
+
* after the crawl's membership (built-in exclusions, gitignore, tracking) and
|
|
223
|
+
* the caller's `exclude:`. A link ships only when its target is in that set:
|
|
224
|
+
* "in-tree" alone is not enough, because the tree is not the bundle. Every
|
|
225
|
+
* way a file can be left out — a caller pattern, `.claude-plugin/**`, a skill
|
|
226
|
+
* dir another phase produces, a gitignored or untracked path on the git route
|
|
227
|
+
* — is a way a one-line alias would put its bytes back, under a different
|
|
228
|
+
* name, with nothing to say so. Asking "would the target ship on its own?"
|
|
229
|
+
* closes all of them with the copy's own answer rather than re-deriving each
|
|
230
|
+
* exclusion here.
|
|
231
|
+
*/
|
|
232
|
+
async function classifySymlink(link, realSource, shipped) {
|
|
233
|
+
let real;
|
|
234
|
+
try {
|
|
235
|
+
real = toForwardSlash(await realpath(link.abs));
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
// 'unresolvable' is what the message says it is: dangling, or a loop. A
|
|
239
|
+
// link whose target the OS REFUSES to resolve is neither — it resolves to
|
|
240
|
+
// something this process may not see — and reporting it as dangling sends
|
|
241
|
+
// the operator to fix a link that is fine.
|
|
242
|
+
if (!isPathAbsentError(error) && !isSymlinkLoop(error))
|
|
243
|
+
throw error;
|
|
244
|
+
return { path: link.rel, reason: 'unresolvable' };
|
|
245
|
+
}
|
|
246
|
+
if (!isUnderSource(real, realSource))
|
|
247
|
+
return { path: link.rel, reason: 'escapes-source' };
|
|
248
|
+
if ((await stat(real)).isDirectory())
|
|
249
|
+
return { path: link.rel, reason: 'directory' };
|
|
250
|
+
const target = toForwardSlash(safePath.relative(realSource, real));
|
|
251
|
+
return shipped.has(target) ? 'file' : { path: link.rel, reason: 'target-excluded', target };
|
|
252
|
+
}
|
|
253
|
+
/** `realpath` on a link that chases its own tail. */
|
|
254
|
+
function isSymlinkLoop(error) {
|
|
255
|
+
return error?.code === 'ELOOP';
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Judge every symlink and split them: the ones that ship, and the ones that
|
|
259
|
+
* stop the copy. Sorted by path so the refusal reads the same on every
|
|
260
|
+
* filesystem — `readdir` order is not stable across platforms.
|
|
261
|
+
*/
|
|
262
|
+
async function judgeSymlinks(sourceDir, links, shipped) {
|
|
263
|
+
const copyable = [];
|
|
264
|
+
const refused = [];
|
|
265
|
+
if (links.length === 0)
|
|
266
|
+
return { copyable, refused };
|
|
267
|
+
const realSource = toForwardSlash(await realpath(sourceDir));
|
|
268
|
+
for (const link of [...links].toSorted((a, b) => a.rel.localeCompare(b.rel))) {
|
|
269
|
+
const verdict = await classifySymlink(link, realSource, shipped);
|
|
270
|
+
if (verdict === 'file') {
|
|
271
|
+
copyable.push(link);
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
refused.push(verdict);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return { copyable, refused };
|
|
278
|
+
}
|
|
106
279
|
export async function treeCopyPlugin(options) {
|
|
107
280
|
const { sourceDir, destDir, excludeSkillDirs = [], exclude: callerExclude = [], warn } = options;
|
|
108
281
|
const result = {
|
|
@@ -112,13 +285,12 @@ export async function treeCopyPlugin(options) {
|
|
|
112
285
|
mcpCopied: 0,
|
|
113
286
|
filesCopied: 0,
|
|
114
287
|
unusedExcludePatterns: [],
|
|
288
|
+
symlinksCopied: [],
|
|
115
289
|
};
|
|
116
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- sourceDir resolved from config
|
|
117
290
|
if (!existsSync(sourceDir)) {
|
|
118
291
|
return result;
|
|
119
292
|
}
|
|
120
293
|
const authorMarketplaceJson = safePath.join(sourceDir, '.claude-plugin', 'marketplace.json');
|
|
121
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- controlled path
|
|
122
294
|
if (existsSync(authorMarketplaceJson) && warn) {
|
|
123
295
|
warn(`Ignoring ${toForwardSlash(authorMarketplaceJson)}: marketplace.json is VAT-generated ` +
|
|
124
296
|
`at the marketplace level and cannot be supplied per-plugin.`);
|
|
@@ -127,6 +299,14 @@ export async function treeCopyPlugin(options) {
|
|
|
127
299
|
...EXCLUDE_PATTERNS,
|
|
128
300
|
...excludeSkillDirs.flatMap((name) => expandExcludePattern(`skills/${name}`)),
|
|
129
301
|
];
|
|
302
|
+
// A directory the crawl cannot LIST stops the copy, by name. The alternative —
|
|
303
|
+
// enumerate around it and copy what was seen — ships a plugin missing every
|
|
304
|
+
// file beneath that directory while the build reports success, which is the
|
|
305
|
+
// silent-drop shape this whole function is built to refuse (see the
|
|
306
|
+
// zero-match report below). Refusing here also runs BEFORE the first copy,
|
|
307
|
+
// so a build that fails leaves no half-written bundle to be mistaken for one.
|
|
308
|
+
// Only the walk route lists directories; inside a repository `git ls-files`
|
|
309
|
+
// answers and a refusal surfaces on the file copy instead.
|
|
130
310
|
const files = await crawlDirectory({
|
|
131
311
|
baseDir: sourceDir,
|
|
132
312
|
include: ['**/*'],
|
|
@@ -134,27 +314,54 @@ export async function treeCopyPlugin(options) {
|
|
|
134
314
|
absolute: true,
|
|
135
315
|
filesOnly: true,
|
|
136
316
|
respectGitignore: true,
|
|
317
|
+
unreadable: {
|
|
318
|
+
refuse: {
|
|
319
|
+
root: sourceDir,
|
|
320
|
+
remedy: 'Fix the permissions on that directory, or name it in the plugin\'s `exclude:` list to leave it out of the bundle deliberately.',
|
|
321
|
+
},
|
|
322
|
+
},
|
|
137
323
|
});
|
|
138
324
|
// Caller `exclude:` patterns are applied HERE rather than handed to the crawl,
|
|
139
325
|
// for two reasons: the two crawl lanes disagree about directory-shaped patterns
|
|
140
326
|
// (see expandExcludePattern), and a pattern that matches nothing must be
|
|
141
327
|
// reportable — a file the crawl never returns is a drop nothing can observe.
|
|
142
328
|
const excludeMatchers = buildExcludeMatchers(callerExclude);
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
329
|
+
const notExcludedByCaller = (entry) => !isExcludedByCaller(entry.rel, excludeMatchers);
|
|
330
|
+
// Symlinks are decided BEFORE the first copy, on both routes, and by one
|
|
331
|
+
// judgement (see classifySymlink). The two lanes used to disagree twice over:
|
|
332
|
+
// the walker dropped every symlink silently, while `git ls-files` handed them
|
|
333
|
+
// to `copyFile`, which followed a link out of the source (shipping a file from
|
|
334
|
+
// elsewhere on the build host) and threw a raw errno on a directory or
|
|
335
|
+
// dangling one after earlier files had already landed. Collect first, judge,
|
|
336
|
+
// then copy — the same shape as the listing refusal above, so a build that
|
|
337
|
+
// fails on a symlink leaves no half-written bundle either.
|
|
338
|
+
const { regular, links: crawledLinks } = await partitionByLstat(sourceDir, files);
|
|
339
|
+
const links = gitFindRoot(sourceDir) === null
|
|
340
|
+
? [...crawledLinks, ...(await sweepSymlinks(sourceDir, crawlPathFilter(['**/*'], exclude)))]
|
|
341
|
+
: crawledLinks;
|
|
342
|
+
// A link the caller excluded is left out like any other excluded path — and
|
|
343
|
+
// that is the remedy the refusal names, so it must count as a hit here.
|
|
344
|
+
// The regular files are filtered FIRST so the judgement can ask whether a
|
|
345
|
+
// link's target is one of them (see classifySymlink) — and so a caller
|
|
346
|
+
// pattern that matches only a link's target still records its hit.
|
|
347
|
+
const shippedRegular = regular.filter(notExcludedByCaller);
|
|
348
|
+
const { copyable, refused } = await judgeSymlinks(sourceDir, links.filter(notExcludedByCaller), new Set(shippedRegular.map((entry) => entry.rel)));
|
|
349
|
+
if (refused.length > 0) {
|
|
350
|
+
throw new PluginSymlinkRefusedError(refused);
|
|
351
|
+
}
|
|
352
|
+
for (const entry of [...shippedRegular, ...copyable]) {
|
|
353
|
+
const target = safePath.join(destDir, entry.rel);
|
|
150
354
|
await mkdir(dirname(target), { recursive: true });
|
|
151
|
-
|
|
355
|
+
// `copyFile` follows a symlink, which is the point for the in-tree file
|
|
356
|
+
// links that reach here: the bundle carries the target's bytes.
|
|
357
|
+
await copyFile(entry.abs, target);
|
|
152
358
|
result.filesCopied += 1;
|
|
153
|
-
const bucket = classifyRelative(rel);
|
|
359
|
+
const bucket = classifyRelative(entry.rel);
|
|
154
360
|
if (bucket) {
|
|
155
361
|
result[bucket] += 1;
|
|
156
362
|
}
|
|
157
363
|
}
|
|
364
|
+
result.symlinksCopied = copyable.map((entry) => entry.rel);
|
|
158
365
|
// A typo'd or wrong-shaped exclude pattern used to be perfectly silent: the
|
|
159
366
|
// knob no-oped and the junk shipped anyway. Zero matches is the only evidence
|
|
160
367
|
// the author can get, so it always leaves this function — as DATA, on the one
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-copy.js","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/tree-copy.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tree-copy.js","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/tree-copy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/uninstall.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/uninstall.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,4BAA4B,IAAI,OAAO,CA0CtD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// packages/cli/src/commands/claude/plugin/uninstall.ts
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { findPluginsByPackage, getClaudeUserPaths, uninstallPlugin } from '@vibe-agent-toolkit/claude-marketplace';
|
|
4
|
+
import { ExitCode } from '@vibe-agent-toolkit/schema';
|
|
4
5
|
import { safePath } from '@vibe-agent-toolkit/utils';
|
|
5
6
|
import { Command } from 'commander';
|
|
6
7
|
import { handleCommandError } from '../../../utils/command-error.js';
|
|
@@ -60,10 +61,10 @@ async function pluginUninstallCommand(pluginKeyArg, options) {
|
|
|
60
61
|
process.stdout.write(`pluginsRemoved: 0\n`);
|
|
61
62
|
process.stdout.write(`plugins: []\n`);
|
|
62
63
|
process.stdout.write(`duration: ${Date.now() - startTime}ms\n`);
|
|
63
|
-
process.exit(
|
|
64
|
+
process.exit(ExitCode.OK);
|
|
64
65
|
}
|
|
65
66
|
logger.error('No plugins found to uninstall');
|
|
66
|
-
process.exit(
|
|
67
|
+
process.exit(ExitCode.ERROR);
|
|
67
68
|
}
|
|
68
69
|
const results = [];
|
|
69
70
|
for (const pluginKey of pluginKeys) {
|
|
@@ -93,7 +94,7 @@ async function pluginUninstallCommand(pluginKeyArg, options) {
|
|
|
93
94
|
process.stdout.write(` warning: "${r.warning}"\n`);
|
|
94
95
|
}
|
|
95
96
|
process.stdout.write(`duration: ${Date.now() - startTime}ms\n`);
|
|
96
|
-
process.exit(
|
|
97
|
+
process.exit(ExitCode.OK);
|
|
97
98
|
}
|
|
98
99
|
catch (error) {
|
|
99
100
|
handleCommandError(error, logger, startTime, 'PluginUninstall');
|
|
@@ -102,7 +103,6 @@ async function pluginUninstallCommand(pluginKeyArg, options) {
|
|
|
102
103
|
function resolvePluginKeys(pluginKeyArg, options, logger) {
|
|
103
104
|
if (options.all) {
|
|
104
105
|
const cwd = process.cwd();
|
|
105
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- path constructed from validated cwd and constant package.json name
|
|
106
106
|
const pkgRaw = readFileSync(safePath.join(cwd, 'package.json'), 'utf-8');
|
|
107
107
|
const pkg = JSON.parse(pkgRaw);
|
|
108
108
|
logger.info(`📦 Finding all plugins from ${pkg.name}...`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/uninstall.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACnH,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQ/C,MAAM,UAAU,4BAA4B;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAEzC,OAAO;SACJ,WAAW,CAAC,yCAAyC,CAAC;SACtD,QAAQ,CAAC,sBAAsB,EAAE,wDAAwD,CAAC;SAC1F,MAAM,CAAC,WAAW,EAAE,qEAAqE,EAAE,KAAK,CAAC;SACjG,MAAM,CAAC,WAAW,EAAE,wCAAwC,EAAE,KAAK,CAAC;SACpE,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,sBAAsB,CAAC;SAC9B,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BzB,CAAC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,YAAgC,EAChC,OAAsC;IAEtC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,iBAAiB,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEpE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,uDAAuD;gBACvD,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,MAAM,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
* Config.yaml discovery is the SOURCE OF TRUTH for what skills exist.
|
|
6
6
|
* package.json is a SUSPECT being validated, never an input for truth.
|
|
7
7
|
*/
|
|
8
|
+
import type { PluginLocalSkillIndex } from '@vibe-agent-toolkit/agent-skills';
|
|
8
9
|
import type { ProjectConfig } from '@vibe-agent-toolkit/resources';
|
|
10
|
+
import type { Severity } from '@vibe-agent-toolkit/schema';
|
|
9
11
|
import type { DiscoveredSkill } from './skills/command-helpers.js';
|
|
10
|
-
export type ConsistencyIssueSeverity = 'error' | 'warning' | 'info';
|
|
11
12
|
export interface ConsistencyIssue {
|
|
12
|
-
severity:
|
|
13
|
+
severity: Severity;
|
|
13
14
|
code: string;
|
|
14
15
|
message: string;
|
|
15
16
|
fix: string;
|
|
@@ -25,11 +26,6 @@ export interface ConsistencyCheckResult {
|
|
|
25
26
|
infos: number;
|
|
26
27
|
};
|
|
27
28
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Determine whether a skill is published.
|
|
30
|
-
* `publish` defaults to `true` when not set in skills.config.
|
|
31
|
-
*/
|
|
32
|
-
export declare function isSkillPublished(skillName: string, config: ProjectConfig): boolean;
|
|
33
29
|
/**
|
|
34
30
|
* Read the `vat.skills` array from `package.json` at the given project root.
|
|
35
31
|
* Returns `undefined` when no `package.json` or no `vat.skills` field exists.
|
|
@@ -46,17 +42,20 @@ export declare function readVatSkillsFromPackageJson(projectRoot: string): strin
|
|
|
46
42
|
*/
|
|
47
43
|
export declare function matchesSimpleGlob(skillName: string, selector: string): boolean;
|
|
48
44
|
/**
|
|
49
|
-
* Resolve which
|
|
45
|
+
* Resolve which skills are assigned to at least one plugin.
|
|
50
46
|
*
|
|
51
47
|
* Assignment is additive per plugin:
|
|
52
|
-
* - **Pool path**: `plugin.skills` glob selectors matched against
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
48
|
+
* - **Pool path**: `plugin.skills` glob selectors matched against PUBLISHED skill
|
|
49
|
+
* names — a `publish: false` skill is not in the pool, so no selector reaches it.
|
|
50
|
+
* - **Plugin-local path**: any discovered skill the plugin build packages — its
|
|
51
|
+
* `SKILL.md` directory is a location in `pluginLocal` (`indexPluginLocalSkills`:
|
|
52
|
+
* git-tracked skill dirs under a plugin's `skills/`) — is assigned by location,
|
|
53
|
+
* INDEPENDENT of `publish`: it ships with its plugin either way. A skill merely
|
|
54
|
+
* sitting there untracked is not: the plugin build does not ship it.
|
|
56
55
|
*
|
|
57
|
-
* Returns the set of
|
|
56
|
+
* Returns the set of skill names assigned to at least one plugin.
|
|
58
57
|
*/
|
|
59
|
-
export declare function resolveAssignedSkills(config: ProjectConfig, discoveredSkills: DiscoveredSkill[],
|
|
58
|
+
export declare function resolveAssignedSkills(config: ProjectConfig, discoveredSkills: DiscoveredSkill[], pluginLocal: PluginLocalSkillIndex): Set<string>;
|
|
60
59
|
/**
|
|
61
60
|
* Assert that vendored skill-creator licensing artifacts are present on disk
|
|
62
61
|
* and declared in the npm `files` allowlist.
|
|
@@ -76,7 +75,10 @@ export declare function assertVendoredLicensingShipped(packageDir: string, files
|
|
|
76
75
|
* @param discoveredSkills - Skills found via config.yaml glob discovery (source of truth)
|
|
77
76
|
* @param config - Parsed project configuration
|
|
78
77
|
* @param projectRoot - Project root directory (for reading package.json)
|
|
78
|
+
* @param pluginLocal - The run's plugin-local index (`indexPluginLocalSkills(config, projectRoot)`).
|
|
79
|
+
* Required, so the one index `vat verify` builds per run serves every phase: an optional
|
|
80
|
+
* parameter would let a call site quietly crawl every plugin again.
|
|
79
81
|
* @returns Consistency check result with issues and summary
|
|
80
82
|
*/
|
|
81
|
-
export declare function runConsistencyChecks(discoveredSkills: DiscoveredSkill[], config: ProjectConfig, projectRoot: string): ConsistencyCheckResult;
|
|
83
|
+
export declare function runConsistencyChecks(discoveredSkills: DiscoveredSkill[], config: ProjectConfig, projectRoot: string, pluginLocal: PluginLocalSkillIndex): ConsistencyCheckResult;
|
|
82
84
|
//# sourceMappingURL=consistency-check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consistency-check.d.ts","sourceRoot":"","sources":["../../src/commands/consistency-check.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"consistency-check.d.ts","sourceRoot":"","sources":["../../src/commands/consistency-check.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,qBAAqB,EAA8C,MAAM,kCAAkC,CAAC;AAC1H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAO3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAMnE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE;QACP,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAkBD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,GAClB,MAAM,EAAE,GAAG,SAAS,CAYtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CA4BT;AAyBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,gBAAgB,EAAE,eAAe,EAAE,EACnC,WAAW,EAAE,qBAAqB,GACjC,GAAG,CAAC,MAAM,CAAC,CAsBb;AAkUD;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EAAE,GACvB,MAAM,EAAE,CA0CV;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,gBAAgB,EAAE,eAAe,EAAE,EACnC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,qBAAqB,GACjC,sBAAsB,CAgDxB"}
|