@vibe-agent-toolkit/cli 0.2.0-rc.1 → 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 +115 -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 +2 -2
- package/dist/commands/audit/distributed-tree.d.ts.map +1 -1
- package/dist/commands/audit/distributed-tree.js +11 -7
- 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 +1126 -394
- 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 +34 -6
- package/dist/commands/cache/clear.d.ts.map +1 -1
- package/dist/commands/cache/clear.js +101 -15
- package/dist/commands/cache/clear.js.map +1 -1
- package/dist/commands/cache/index.d.ts +13 -63
- package/dist/commands/cache/index.d.ts.map +1 -1
- package/dist/commands/cache/index.js +47 -79
- package/dist/commands/cache/index.js.map +1 -1
- 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 +121 -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 +418 -4
- 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 +42 -2
- package/dist/commands/resources/validate.d.ts.map +1 -1
- package/dist/commands/resources/validate.js +208 -55
- 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 +1 -1
- package/dist/commands/skills/package.d.ts.map +1 -1
- package/dist/commands/skills/package.js +6 -8
- 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 +61 -11
- 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 +138 -20
- package/dist/utils/command-error.d.ts.map +1 -1
- package/dist/utils/command-error.js +172 -36
- 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 +19 -11
- 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 +35 -26
- 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
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable security/detect-non-literal-fs-filename -- Paths are user-provided CLI arguments */
|
|
2
1
|
/**
|
|
3
2
|
* `vat claude marketplace validate [path]` — strict marketplace validation.
|
|
4
3
|
*
|
|
@@ -9,19 +8,21 @@
|
|
|
9
8
|
* - README.md should exist (warning)
|
|
10
9
|
* - CHANGELOG.md should exist (warning)
|
|
11
10
|
*/
|
|
12
|
-
import { existsSync, readdirSync } from 'node:fs';
|
|
13
|
-
import { calculateValidationStatus, countBySeverity, } from '@vibe-agent-toolkit/agent-schema';
|
|
11
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
14
12
|
import { validateMarketplace, validateSkill, } from '@vibe-agent-toolkit/agent-skills';
|
|
15
13
|
import { validatePlugin } from '@vibe-agent-toolkit/claude-marketplace';
|
|
16
|
-
import {
|
|
14
|
+
import { calculateValidationStatus, countBySeverity, } from '@vibe-agent-toolkit/schema';
|
|
15
|
+
import { direntKindFollowingSync, findProjectRoot, isPathAbsentError, issueLocation, isVatError, normalizePath, PathEscapesRootError, relativeEscapesRoot, safePath, toForwardSlash, toForwardSlashAnyPlatform } from '@vibe-agent-toolkit/utils';
|
|
17
16
|
import { Command } from 'commander';
|
|
18
|
-
import { formatDuration,
|
|
17
|
+
import { formatDuration, reportCommandError } from '../../../utils/command-error.js';
|
|
19
18
|
import { loadConfig } from '../../../utils/config-loader.js';
|
|
20
19
|
import { summarizeFindings } from '../../../utils/issue-rendering.js';
|
|
21
20
|
import { resolveIssueSeverity } from '../../../utils/issue-severity.js';
|
|
22
21
|
import { createLogger } from '../../../utils/logger.js';
|
|
23
22
|
import { writeYamlOutput } from '../../../utils/output.js';
|
|
24
23
|
import { relativizePathEntries } from '../../../utils/relativize-paths.js';
|
|
24
|
+
import { runIntegrityFinding } from '../../../utils/run-integrity.js';
|
|
25
|
+
import { finishCommand } from '../../phase-utils.js';
|
|
25
26
|
/**
|
|
26
27
|
* Check for required/recommended files in the marketplace root.
|
|
27
28
|
*/
|
|
@@ -45,29 +46,171 @@ function checkMarketplaceFiles(marketplacePath) {
|
|
|
45
46
|
}
|
|
46
47
|
return issues;
|
|
47
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* The boundary of what this command may read, applied to every path the walk
|
|
51
|
+
* opens below a contained plugin — not only to the declared `source`.
|
|
52
|
+
*
|
|
53
|
+
* 🚨 **Containment used to stop at the `source`.** Inside a contained plugin,
|
|
54
|
+
* `skills/` was `readdir`ed through a directory link, a `SKILL.md` parsed
|
|
55
|
+
* through a file link, and `.claude-plugin/plugin.json` read through one — each
|
|
56
|
+
* pointing OUT of the root — and the outside file's findings were published at
|
|
57
|
+
* a root-relative location whose real file is not under the root. A
|
|
58
|
+
* marketplace checkout is the untrusted input (git carries symlinks), so the
|
|
59
|
+
* class the source lane closed was open one level down, while the help text
|
|
60
|
+
* and the refusal message promised the absolute.
|
|
61
|
+
*
|
|
62
|
+
* Same predicate as {@link containedPluginDir}: real path against the root's
|
|
63
|
+
* own real path, so a link INSIDE the root is followed (the link is not the
|
|
64
|
+
* offence, leaving the root is) and one that leaves it is recorded by its
|
|
65
|
+
* root-relative spelling in `refused` and never opened. The record is what the
|
|
66
|
+
* document publishes and what the builder turns into the run-integrity
|
|
67
|
+
* refusal: a path the run would not read is a plugin the run did not finish
|
|
68
|
+
* validating, and silence there is the reassuring failure.
|
|
69
|
+
*/
|
|
70
|
+
class WalkBoundary {
|
|
71
|
+
marketplacePath;
|
|
72
|
+
realRoot;
|
|
73
|
+
refused = [];
|
|
74
|
+
constructor(marketplacePath, realRoot) {
|
|
75
|
+
this.marketplacePath = marketplacePath;
|
|
76
|
+
this.realRoot = realRoot;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* May the walk open `abs`? `true` when its real path sits under the root.
|
|
80
|
+
* `false` records the refusal by name and is final for that path: nothing
|
|
81
|
+
* beneath it is visited either, because nothing beneath it was read.
|
|
82
|
+
*/
|
|
83
|
+
contains(abs) {
|
|
84
|
+
const real = toForwardSlash(normalizePath(abs));
|
|
85
|
+
if (!relativeEscapesRoot(safePath.relative(this.realRoot, real)))
|
|
86
|
+
return true;
|
|
87
|
+
this.refused.push(issueLocation(abs, this.marketplacePath));
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
48
91
|
/**
|
|
49
92
|
* Validate all SKILL.md files within a plugin's skills/ directory.
|
|
93
|
+
*
|
|
94
|
+
* Every path opened here — `skills/`, each skill directory, each `SKILL.md` —
|
|
95
|
+
* is checked against `boundary` first, so a link out of the root at any of
|
|
96
|
+
* the three depths is refused by name rather than read. A skill directory is
|
|
97
|
+
* recognised by what it RESOLVES to (a link to an in-root directory is a
|
|
98
|
+
* skill directory; `Dirent.isDirectory()` said no to every link and skipped
|
|
99
|
+
* the skill silently), which is the same by-real-path rule the source gets.
|
|
50
100
|
*/
|
|
51
|
-
async function validatePluginSkills(pluginDir, marketplacePath) {
|
|
101
|
+
async function validatePluginSkills(pluginDir, marketplacePath, boundary, validation) {
|
|
52
102
|
const skillsDir = safePath.join(pluginDir, 'skills');
|
|
53
|
-
if (!existsSync(skillsDir))
|
|
103
|
+
if (!existsSync(skillsDir) || !boundary.contains(skillsDir))
|
|
54
104
|
return [];
|
|
55
105
|
const issues = [];
|
|
56
106
|
const skillEntries = readdirSync(skillsDir, { withFileTypes: true });
|
|
57
107
|
for (const skillEntry of skillEntries) {
|
|
58
|
-
if (!skillEntry.isDirectory())
|
|
59
|
-
continue;
|
|
60
108
|
const skillDir = safePath.join(skillsDir, skillEntry.name);
|
|
109
|
+
if (!isDirectory(skillDir) || !boundary.contains(skillDir))
|
|
110
|
+
continue;
|
|
61
111
|
const skillMdPath = safePath.join(skillDir, 'SKILL.md');
|
|
62
|
-
if (!existsSync(skillMdPath))
|
|
112
|
+
if (!existsSync(skillMdPath) || !boundary.contains(skillMdPath))
|
|
63
113
|
continue;
|
|
64
|
-
|
|
114
|
+
// Severity only (no `allow`), resolved here so a default-`ignore` code can still be raised.
|
|
115
|
+
const severity = validation?.severity === undefined ? {} : { severity: validation.severity };
|
|
116
|
+
const skillResult = await validateSkill({ skillPath: skillMdPath, rootDir: skillDir, locationRoot: marketplacePath, validation: severity });
|
|
65
117
|
issues.push(...skillResult.issues);
|
|
66
118
|
}
|
|
67
119
|
return issues;
|
|
68
120
|
}
|
|
69
121
|
/**
|
|
70
|
-
*
|
|
122
|
+
* Whether `dir` is a directory. `false` for a file and for nothing — both are
|
|
123
|
+
* "no plugin directory here". A path the process cannot stat is NOT: a
|
|
124
|
+
* declared source the OS refuses used to be reported as one that does not
|
|
125
|
+
* resolve, sending the reader to create a directory that is there. The refusal
|
|
126
|
+
* propagates and the command refuses the run by errno, like every other verb.
|
|
127
|
+
*/
|
|
128
|
+
function isDirectory(dir) {
|
|
129
|
+
try {
|
|
130
|
+
return statSync(dir).isDirectory();
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
if (isPathAbsentError(error))
|
|
134
|
+
return false;
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The directory a declared `source` names, as the two paths the run needs —
|
|
140
|
+
* or `undefined` when it names nothing this command may enter.
|
|
141
|
+
*
|
|
142
|
+
* 🚨 **This used to be `safePath.resolve(root, source)` + `isDirectory`, and
|
|
143
|
+
* that walked `/etc`.** `marketplace.json` is attacker-reachable content — it
|
|
144
|
+
* is the thing being audited — and every string `source` was resolved and
|
|
145
|
+
* ENTERED. The document then published `../../../../etc/…` locations, breaking
|
|
146
|
+
* the "every location is relative to root" contract the help text claims.
|
|
147
|
+
*
|
|
148
|
+
* Containment is decided by REAL path, in two steps:
|
|
149
|
+
*
|
|
150
|
+
* 1. `joinUnderRoot` refuses lexically: an absolute source (POSIX root, drive
|
|
151
|
+
* letter) or a `..` that climbs above the root. The source is
|
|
152
|
+
* forward-slashed FIRST, because on POSIX `plugins\..\..\x` is one segment
|
|
153
|
+
* to `path.resolve` — it resolved to a name containing backslashes, and the
|
|
154
|
+
* same string walks out of the root on Windows. That also fixes the LOW:
|
|
155
|
+
* `.\plugins\x` resolved to `<root>/./plugins/x`, which `statSync` accepts
|
|
156
|
+
* but which is not the string `undeclared` builds for the same directory,
|
|
157
|
+
* so one plugin was published as both validated and undeclared.
|
|
158
|
+
* 2. `realpath` refuses what only the filesystem knows: a symlink inside the
|
|
159
|
+
* root pointing out is outside. The check is against the root's OWN real
|
|
160
|
+
* path, so a root reached through a symlink (macOS `/var` → `/private/var`)
|
|
161
|
+
* does not read as escaping itself.
|
|
162
|
+
*
|
|
163
|
+
* The schema refuses step 1's cases at the manifest before this runs, so here
|
|
164
|
+
* step 1 is the belt to that suspender. The consumer keeps it because the
|
|
165
|
+
* schema is `.passthrough()` Postel's-Law tolerant by design and this is the
|
|
166
|
+
* one place a wrong answer opens a directory.
|
|
167
|
+
*
|
|
168
|
+
* @returns `lexical` — the path as declared, resolved, which is what the
|
|
169
|
+
* validators are handed so findings read `plugins/s/…` as the manifest spells
|
|
170
|
+
* it; `real` — the identity, for "have I seen this directory?"
|
|
171
|
+
*/
|
|
172
|
+
function containedPluginDir(marketplacePath, realRoot, source) {
|
|
173
|
+
let lexical;
|
|
174
|
+
try {
|
|
175
|
+
lexical = safePath.joinUnderRoot(marketplacePath, toForwardSlashAnyPlatform(source));
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
// `joinUnderRoot` refuses an escape by design. Anything else (a
|
|
179
|
+
// `TypeError` from a bad argument) is a bug.
|
|
180
|
+
if (!isVatError(error, PathEscapesRootError.code))
|
|
181
|
+
throw error;
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
if (!isDirectory(lexical))
|
|
185
|
+
return undefined;
|
|
186
|
+
const real = toForwardSlash(normalizePath(lexical));
|
|
187
|
+
return relativeEscapesRoot(safePath.relative(realRoot, real)) ? undefined : { lexical, real };
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Validate the plugins the manifest DECLARES with a local source.
|
|
191
|
+
*
|
|
192
|
+
* 🚨 **This walked `plugins/*` and shipped both defects that has.** The
|
|
193
|
+
* denominator was a count of directories under `plugins/`, so a co-located
|
|
194
|
+
* marketplace (`source: "./"` — the shape `detectResourceFormat` recognises on
|
|
195
|
+
* purpose and `vat audit` recurses into) declared 1, walked 0, and was refused
|
|
196
|
+
* at exit 1 on a code no override can lower; and a manifest declaring
|
|
197
|
+
* `./plugins/a` over a `plugins/` holding only an undeclared `b` validated
|
|
198
|
+
* "1 of 1" and passed with `a` never looked at. Each declared `source` is now
|
|
199
|
+
* resolved against the marketplace root and THAT directory is validated — see
|
|
200
|
+
* {@link containedPluginDir} for the containment the resolution enforces;
|
|
201
|
+
* `extractClaudeMarketplaceInventory` (`vat inventory`/`vat audit`) applies
|
|
202
|
+
* the same predicate on its side. A source that does not resolve to a directory INSIDE the root is
|
|
203
|
+
* simply absent from the results; the builder derives the refusal from that
|
|
204
|
+
* absence, so it lands on the document whatever this function's caller does.
|
|
205
|
+
*
|
|
206
|
+
* Directories under `plugins/` that no entry names come back as `undeclared`,
|
|
207
|
+
* relative to the root: listed, not validated, not a failure. The manifest is
|
|
208
|
+
* the marketplace's contract with its installer — Claude Code installs only
|
|
209
|
+
* what `plugins[]` names — so an undeclared directory cannot ship and grading
|
|
210
|
+
* it would grade something no consumer can receive; failing on it would turn a
|
|
211
|
+
* publishing gate into a tree-hygiene gate. Naming it costs nothing and is what
|
|
212
|
+
* lets a reader tell "the plugin you meant is under another name" from "it is
|
|
213
|
+
* not there at all" when a declared source did not resolve.
|
|
71
214
|
*
|
|
72
215
|
* `validation` is the governing project's severity map (see
|
|
73
216
|
* {@link resolveProjectValidationConfig}). It is applied to each plugin result
|
|
@@ -78,36 +221,98 @@ async function validatePluginSkills(pluginDir, marketplacePath) {
|
|
|
78
221
|
* `plugins[]`, or a plugin `status: warning` above an issue list that no longer
|
|
79
222
|
* contains a warning.
|
|
80
223
|
*/
|
|
81
|
-
async function
|
|
82
|
-
const pluginsDir = safePath.join(marketplacePath, 'plugins');
|
|
83
|
-
if (!existsSync(pluginsDir))
|
|
84
|
-
return { pluginResults: [], issues: [] };
|
|
224
|
+
async function validateDeclaredPlugins(marketplacePath, declared, validation) {
|
|
85
225
|
const pluginResults = [];
|
|
86
226
|
const issues = [];
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
227
|
+
// Keyed by REAL path: one directory is validated once however many entries
|
|
228
|
+
// name it, and the same key is what `undeclaredPluginDirs` compares against.
|
|
229
|
+
const validatedByDir = new Map();
|
|
230
|
+
const realRoot = toForwardSlash(normalizePath(marketplacePath));
|
|
231
|
+
const boundary = new WalkBoundary(marketplacePath, realRoot);
|
|
232
|
+
for (const entry of declared) {
|
|
233
|
+
// A source that names nothing inside the root — nothing at all, a file,
|
|
234
|
+
// an absolute path, a `..` climb, a symlink out — is simply absent from the
|
|
235
|
+
// results, and the builder refuses the run by name from that absence.
|
|
236
|
+
const dir = containedPluginDir(marketplacePath, realRoot, entry.source);
|
|
237
|
+
if (dir === undefined)
|
|
238
|
+
continue;
|
|
239
|
+
// Two entries, one directory: the directory's findings were collected
|
|
240
|
+
// twice and COUNTED twice (`PLUGIN_MISSING_AUTHOR: 2` for one file). Each
|
|
241
|
+
// entry still gets its row — the manifest declared two — but the file is
|
|
242
|
+
// inspected once and its findings enter `issues` once.
|
|
243
|
+
const seen = validatedByDir.get(dir.real);
|
|
244
|
+
if (seen !== undefined) {
|
|
245
|
+
pluginResults.push({ ...entry, result: seen });
|
|
90
246
|
continue;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
247
|
+
}
|
|
248
|
+
const result = await validateContainedPlugin(dir.lexical, marketplacePath, boundary, validation);
|
|
249
|
+
validatedByDir.set(dir.real, result);
|
|
250
|
+
pluginResults.push({ ...entry, result });
|
|
251
|
+
issues.push(...result.issues);
|
|
252
|
+
issues.push(...await validatePluginSkills(dir.lexical, marketplacePath, boundary, validation));
|
|
253
|
+
}
|
|
254
|
+
return {
|
|
255
|
+
pluginResults,
|
|
256
|
+
undeclared: undeclaredPluginDirs(marketplacePath, new Set(validatedByDir.keys())),
|
|
257
|
+
refused: boundary.refused,
|
|
258
|
+
issues,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Validate one contained plugin directory — unless its manifest is a link out
|
|
263
|
+
* of the root, in which case the manifest is refused by name and the plugin's
|
|
264
|
+
* row says so instead of carrying findings about a file the run did not read.
|
|
265
|
+
*
|
|
266
|
+
* The row keeps `status: 'error'` with no issues: the error is the refusal
|
|
267
|
+
* the builder publishes once for the run, and a `success` row for a plugin
|
|
268
|
+
* whose manifest was never opened would be the reassuring lie this whole
|
|
269
|
+
* boundary exists to refuse.
|
|
270
|
+
*/
|
|
271
|
+
async function validateContainedPlugin(pluginDir, marketplacePath, boundary, validation) {
|
|
272
|
+
const manifestPath = safePath.join(pluginDir, '.claude-plugin', 'plugin.json');
|
|
273
|
+
if (existsSync(manifestPath) && !boundary.contains(manifestPath)) {
|
|
274
|
+
return {
|
|
275
|
+
path: pluginDir,
|
|
276
|
+
type: 'claude-plugin',
|
|
277
|
+
status: 'error',
|
|
278
|
+
summary: `Plugin manifest not read: ${issueLocation(manifestPath, marketplacePath)} resolves outside the marketplace root`,
|
|
279
|
+
issues: [],
|
|
280
|
+
issueCounts: countBySeverity([]),
|
|
104
281
|
};
|
|
105
|
-
pluginResults.push(pluginResult);
|
|
106
|
-
issues.push(...pluginIssues);
|
|
107
|
-
const skillIssues = await validatePluginSkills(pluginDir, marketplacePath);
|
|
108
|
-
issues.push(...resolveIssueSeverity(skillIssues, validation));
|
|
109
282
|
}
|
|
110
|
-
|
|
283
|
+
// `locationRoot` is not optional here even though the parameter is: omitted,
|
|
284
|
+
// `validatePlugin` anchors at the plugin's own discovered project root, so
|
|
285
|
+
// its findings land in a different coordinate system than the marketplace
|
|
286
|
+
// and skill findings beside them — and every plugin's manifest collapses to
|
|
287
|
+
// the same `.claude-plugin/plugin.json`.
|
|
288
|
+
const rawResult = await validatePlugin(pluginDir, { strict: true, locationRoot: marketplacePath });
|
|
289
|
+
const pluginIssues = resolveIssueSeverity(rawResult.issues, validation);
|
|
290
|
+
return {
|
|
291
|
+
...rawResult,
|
|
292
|
+
issues: pluginIssues,
|
|
293
|
+
status: calculateValidationStatus(pluginIssues),
|
|
294
|
+
issueCounts: countBySeverity(pluginIssues),
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Directories under `<root>/plugins/` that no declared source resolved to,
|
|
299
|
+
* relative to the root. The conventional location is the only one walked: an
|
|
300
|
+
* undeclared plugin anywhere else is indistinguishable from any other directory.
|
|
301
|
+
*
|
|
302
|
+
* @param validatedDirs - REAL paths of the directories the run validated, so
|
|
303
|
+
* the comparison cannot be defeated by two spellings of one directory.
|
|
304
|
+
*/
|
|
305
|
+
function undeclaredPluginDirs(marketplacePath, validatedDirs) {
|
|
306
|
+
const pluginsDir = safePath.join(marketplacePath, 'plugins');
|
|
307
|
+
if (!existsSync(pluginsDir))
|
|
308
|
+
return [];
|
|
309
|
+
return readdirSync(pluginsDir, { withFileTypes: true })
|
|
310
|
+
// Followed: a plugin directory that is a link is a plugin the marketplace
|
|
311
|
+
// ships, and `validatedDirs` is real paths for exactly that reason.
|
|
312
|
+
.filter((entry) => direntKindFollowingSync(pluginsDir, entry) === 'directory')
|
|
313
|
+
.map((entry) => safePath.join(pluginsDir, entry.name))
|
|
314
|
+
.filter((dir) => !validatedDirs.has(toForwardSlash(normalizePath(dir))))
|
|
315
|
+
.map((dir) => issueLocation(dir, marketplacePath));
|
|
111
316
|
}
|
|
112
317
|
/**
|
|
113
318
|
* The `validation` config governing findings about `marketplacePath`.
|
|
@@ -173,10 +378,13 @@ function resolveProjectValidationConfig(marketplacePath, logger) {
|
|
|
173
378
|
*
|
|
174
379
|
* Severity resolution is likewise INSIDE this function rather than a step the
|
|
175
380
|
* command adds after it. Its absence is the whole defect this addressed, and a
|
|
176
|
-
* command-body step is one a caller can forget: with it here, `
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
381
|
+
* command-body step is one a caller can forget: with it here, the flat `issues`
|
|
382
|
+
* list and `plugins[].issues` derive from a single resolved set, and the
|
|
383
|
+
* smallest testable entry point is the one that includes the filter. The run's
|
|
384
|
+
* `status` — and with it the exit code — is derived one step later, in
|
|
385
|
+
* {@link buildMarketplaceValidateReport}, from the issues the document actually
|
|
386
|
+
* publishes: that is where the run-integrity refusal is added, and a status
|
|
387
|
+
* computed here would not see it.
|
|
180
388
|
*
|
|
181
389
|
* Exported so that contract is testable against a real marketplace without a
|
|
182
390
|
* CLI spawn; the command adds only the exit code and the emission.
|
|
@@ -200,24 +408,20 @@ export async function collectMarketplaceFindings(marketplacePath, logger) {
|
|
|
200
408
|
return {
|
|
201
409
|
marketplaceResult,
|
|
202
410
|
pluginResults: [],
|
|
411
|
+
undeclared: [],
|
|
412
|
+
refused: [],
|
|
203
413
|
issues: [...marketplaceResult.issues],
|
|
204
|
-
status: 'error',
|
|
205
414
|
};
|
|
206
415
|
}
|
|
207
416
|
const validation = resolveProjectValidationConfig(marketplacePath, logger);
|
|
208
417
|
const fileIssues = checkMarketplaceFiles(marketplacePath);
|
|
209
|
-
const { pluginResults, issues: pluginIssues } = await
|
|
418
|
+
const { pluginResults, undeclared, refused, issues: pluginIssues } = await validateDeclaredPlugins(marketplacePath, marketplaceResult.metadata?.localPluginSources ?? [], validation);
|
|
210
419
|
const issues = [
|
|
211
420
|
...resolveIssueSeverity(marketplaceResult.issues, validation),
|
|
212
421
|
...resolveIssueSeverity(fileIssues, validation),
|
|
213
422
|
...pluginIssues,
|
|
214
423
|
];
|
|
215
|
-
return {
|
|
216
|
-
marketplaceResult,
|
|
217
|
-
pluginResults,
|
|
218
|
-
issues,
|
|
219
|
-
status: calculateValidationStatus(issues),
|
|
220
|
-
};
|
|
424
|
+
return { marketplaceResult, pluginResults, undeclared, refused, issues };
|
|
221
425
|
}
|
|
222
426
|
/**
|
|
223
427
|
* Group key for findings that carry no `location` at all.
|
|
@@ -277,19 +481,40 @@ export function summarizeIssuesByLocation(issues) {
|
|
|
277
481
|
* against a real marketplace in `payload-path-coordinates.test.ts`, not here.
|
|
278
482
|
*/
|
|
279
483
|
export function buildMarketplaceValidateReport(input) {
|
|
280
|
-
const {
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
484
|
+
const { root, marketplace, pluginResults, undeclared, refused, bailSummary, duration, verbose } = input;
|
|
485
|
+
const issues = [
|
|
486
|
+
...unfinishedRunFinding(marketplace, pluginResults, refused),
|
|
487
|
+
...input.issues,
|
|
488
|
+
];
|
|
489
|
+
const issueCounts = countBySeverity(issues);
|
|
490
|
+
const plugins = pluginResults.map(({ name, source, result }) => ({
|
|
491
|
+
name,
|
|
492
|
+
source,
|
|
493
|
+
path: result.path,
|
|
494
|
+
status: result.status,
|
|
495
|
+
metadata: result.metadata,
|
|
496
|
+
issues: result.issues,
|
|
286
497
|
}));
|
|
287
498
|
return {
|
|
288
|
-
|
|
499
|
+
// Derived from the issues THIS document publishes — the refusal above
|
|
500
|
+
// included — so the status, the counts and the listing cannot disagree, and
|
|
501
|
+
// the exit code the command takes from it cannot either.
|
|
502
|
+
status: calculateValidationStatus(issues),
|
|
289
503
|
// Stated once, and the only absolute path in the document.
|
|
290
504
|
root,
|
|
291
505
|
...(marketplace ? { marketplace } : {}),
|
|
506
|
+
// The numerator. Beside `marketplace.localPluginSources` it says whether
|
|
507
|
+
// every declared source resolved; without it "three local plugins, all
|
|
508
|
+
// clean" and "three local plugins, none looked at" are the same document.
|
|
509
|
+
pluginsValidated: pluginResults.length,
|
|
292
510
|
plugins: relativizePathEntries(plugins, root),
|
|
511
|
+
// Named, not graded — see `validateDeclaredPlugins`. Always present, so an
|
|
512
|
+
// empty list is a statement that `plugins/` was looked at.
|
|
513
|
+
undeclared: [...undeclared],
|
|
514
|
+
// Paths the walk would not open (real path outside the root) — see
|
|
515
|
+
// `WalkBoundary`. Always present: an empty list says every path the run
|
|
516
|
+
// read was under `root`, which is the containment claim the help text makes.
|
|
517
|
+
refused: [...refused],
|
|
293
518
|
// One row per inspected asset by default; the flat per-issue list under
|
|
294
519
|
// `--verbose`. Either way every `location` stays relative to `root` above.
|
|
295
520
|
issues: verbose === true ? issues : summarizeIssuesByLocation(issues),
|
|
@@ -297,41 +522,132 @@ export function buildMarketplaceValidateReport(input) {
|
|
|
297
522
|
// severity, so an info-only run is `success` and the info would otherwise
|
|
298
523
|
// be unreported.
|
|
299
524
|
issueCounts,
|
|
300
|
-
summary
|
|
525
|
+
summary: bailSummary
|
|
526
|
+
?? `${issueCounts.errors} error(s), ${issueCounts.warnings} warning(s), ${issueCounts.info} info`,
|
|
301
527
|
duration,
|
|
302
528
|
};
|
|
303
529
|
}
|
|
304
|
-
|
|
530
|
+
/**
|
|
531
|
+
* The refusal for a run in which a declared local source did not resolve.
|
|
532
|
+
*
|
|
533
|
+
* 🚨 **Two shapes of this shipped.** First, the plugin walk returned nothing
|
|
534
|
+
* when `plugins/` was absent, and the document carried no count, so a
|
|
535
|
+
* marketplace declaring three relative-path plugins over a missing `plugins/`
|
|
536
|
+
* reported `status: success`, exit 0. Then the count that fixed it —
|
|
537
|
+
* `validated < declared` by NUMBER — was wrong in both directions: a co-located
|
|
538
|
+
* `source: "./"` marketplace walked 0 against declared 1 and was refused, and
|
|
539
|
+
* an undeclared `plugins/b` counted for a declared `a` that did not exist.
|
|
540
|
+
*
|
|
541
|
+
* 🔑 **The condition is by IDENTITY, not by count.** `marketplace.localPluginSources`
|
|
542
|
+
* is the manifest's own list of local entries; `pluginResults` names the entry
|
|
543
|
+
* each validated plugin satisfies. A declared entry with no result is a source
|
|
544
|
+
* that did not resolve to a directory, and that is what is refused — whatever
|
|
545
|
+
* else the tree holds. Both halves are in the document, so the refusal is
|
|
546
|
+
* derivable from the document alone. All-remote stays green (nothing local
|
|
547
|
+
* declared); no entries stays green; an undeclared directory is listed under
|
|
548
|
+
* `undeclared` and stays green here — it cannot ship, so it is not a plugin
|
|
549
|
+
* that went unvalidated; a bailed manifest carries no sources and stays a
|
|
550
|
+
* manifest error alone.
|
|
551
|
+
*
|
|
552
|
+
* The message names the unresolved sources: the reader's next move is to fix
|
|
553
|
+
* the `source` or build the tree, and either needs the name.
|
|
554
|
+
*
|
|
555
|
+
* The second half is the same claim one level down: a path INSIDE a validated
|
|
556
|
+
* plugin that the walk refused to open because it resolves outside the root
|
|
557
|
+
* (`refused`, from {@link WalkBoundary}). The plugin's row exists, but what
|
|
558
|
+
* sits behind that path was never read, so the document is not a verdict
|
|
559
|
+
* about it either. ONE finding carries both halves — the claim is about the
|
|
560
|
+
* run, and two reports about one run is the per-finding duplication
|
|
561
|
+
* `run-integrity.ts` forbids.
|
|
562
|
+
*
|
|
563
|
+
* Derived here in the builder, not in {@link collectMarketplaceFindings}, so
|
|
564
|
+
* the status the document publishes — and the exit code taken from it — cannot
|
|
565
|
+
* be computed over an issue set that lacks it. Shared mechanism:
|
|
566
|
+
* `run-integrity.ts`.
|
|
567
|
+
*
|
|
568
|
+
* @param marketplace - The manifest's metadata; `undefined` when the run bailed
|
|
569
|
+
* @param validated - The declared local plugins the run validated
|
|
570
|
+
* @param refused - Root-relative paths the walk would not open
|
|
571
|
+
* @returns The one finding, or nothing
|
|
572
|
+
*/
|
|
573
|
+
function unfinishedRunFinding(marketplace, validated, refused) {
|
|
574
|
+
const declared = marketplace?.localPluginSources ?? [];
|
|
575
|
+
const unresolved = declared.filter((entry) => !validated.some((v) => v.name === entry.name && v.source === entry.source));
|
|
576
|
+
if (unresolved.length === 0 && refused.length === 0)
|
|
577
|
+
return [];
|
|
578
|
+
const parts = [];
|
|
579
|
+
if (unresolved.length > 0) {
|
|
580
|
+
const named = unresolved.map((entry) => `\`${entry.name}\` (${entry.source})`).join(', ');
|
|
581
|
+
parts.push(`The manifest declares ${declared.length} plugin(s) with a local source and this run validated`
|
|
582
|
+
+ ` ${validated.length} of them, so this document is not a verdict about the rest: it reads the`
|
|
583
|
+
+ ' same as a run over a marketplace whose plugins are all clean.'
|
|
584
|
+
+ ` Declared source(s) that did not resolve to a directory under the marketplace root: ${named}.`
|
|
585
|
+
+ ' Usually the marketplace was not built, was built somewhere else, or the entry\'s `source`'
|
|
586
|
+
+ ' names the wrong directory — `undeclared` above lists the `plugins/` directories the'
|
|
587
|
+
+ ' manifest does not name. A source that resolves OUTSIDE the root (a symlink pointing out)'
|
|
588
|
+
+ ' is refused the same way: this command never leaves the directory it was pointed at.'
|
|
589
|
+
+ ' Fix the `source`, run `vat build` first, or point this command at the built marketplace.');
|
|
590
|
+
}
|
|
591
|
+
if (refused.length > 0) {
|
|
592
|
+
const named = refused.map((path) => `\`${path}\``).join(', ');
|
|
593
|
+
parts.push(`This run refused to open ${refused.length} path(s) inside a validated plugin because each resolves`
|
|
594
|
+
+ ` OUTSIDE the marketplace root (a symbolic link pointing out): ${named}.`
|
|
595
|
+
+ ' Nothing behind them was read, so this document is not a verdict about the skills or manifest'
|
|
596
|
+
+ ' they hold — this command never leaves the directory it was pointed at. Replace each link'
|
|
597
|
+
+ ' with the files it points at, or move its target under the marketplace root.');
|
|
598
|
+
}
|
|
599
|
+
return [runIntegrityFinding(parts.join(' '))];
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* Validate a marketplace and hand back its document and exit code, printing
|
|
603
|
+
* nothing on stdout.
|
|
604
|
+
*
|
|
605
|
+
* The phase entry point for `vat verify`, which runs this once per configured
|
|
606
|
+
* marketplace IN ITS OWN PROCESS. Progress and findings still go to stderr as
|
|
607
|
+
* they always did; only the decision of where the document lands moves to the
|
|
608
|
+
* caller — stdout for a command-line run, `phases[].report` for an orchestrated
|
|
609
|
+
* one.
|
|
610
|
+
*/
|
|
611
|
+
export async function runMarketplaceValidatePhase(targetPath, options) {
|
|
305
612
|
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
306
613
|
const startTime = Date.now();
|
|
307
614
|
try {
|
|
308
615
|
const marketplacePath = safePath.resolve(targetPath ?? '.');
|
|
309
616
|
logger.info(`Validating marketplace: ${marketplacePath}`);
|
|
310
|
-
const { marketplaceResult, pluginResults,
|
|
617
|
+
const { marketplaceResult, pluginResults, undeclared, refused, issues } = await collectMarketplaceFindings(marketplacePath, logger);
|
|
618
|
+
// A bailed run reports WHY it stopped; a completed run reports what it
|
|
619
|
+
// found. Both emit through the one builder, so the document has a single
|
|
620
|
+
// shape either way.
|
|
311
621
|
const bailed = marketplaceResult.status === 'error';
|
|
312
|
-
const
|
|
313
|
-
writeYamlOutput(buildMarketplaceValidateReport({
|
|
314
|
-
status,
|
|
622
|
+
const document = buildMarketplaceValidateReport({
|
|
315
623
|
root: marketplacePath,
|
|
316
624
|
marketplace: marketplaceResult.metadata,
|
|
317
625
|
pluginResults,
|
|
626
|
+
undeclared,
|
|
627
|
+
refused,
|
|
318
628
|
issues,
|
|
319
|
-
|
|
320
|
-
// A bailed run reports WHY it stopped; a completed run reports what it
|
|
321
|
-
// found. Both emit through the one builder, so the document has a
|
|
322
|
-
// single shape either way.
|
|
323
|
-
summary: bailed
|
|
324
|
-
? marketplaceResult.summary
|
|
325
|
-
: `${issueCounts.errors} error(s), ${issueCounts.warnings} warning(s), ${issueCounts.info} info`,
|
|
629
|
+
...(bailed ? { bailSummary: marketplaceResult.summary } : {}),
|
|
326
630
|
duration: formatDuration(Date.now() - startTime),
|
|
327
631
|
verbose: options.verbose === true,
|
|
328
|
-
})
|
|
329
|
-
|
|
632
|
+
});
|
|
633
|
+
// From the DOCUMENT, so the exit code and the published status are one
|
|
634
|
+
// derivation — the run-integrity refusal lands in the builder, and an exit
|
|
635
|
+
// code computed upstream of it would answer 0 over `status: error`.
|
|
636
|
+
return { document, exitCode: document.status === 'error' ? 1 : 0 };
|
|
330
637
|
}
|
|
331
638
|
catch (error) {
|
|
332
|
-
|
|
639
|
+
return {
|
|
640
|
+
document: reportCommandError(error, logger, startTime, 'MarketplaceValidate'),
|
|
641
|
+
exitCode: 2,
|
|
642
|
+
failed: true,
|
|
643
|
+
};
|
|
333
644
|
}
|
|
334
645
|
}
|
|
646
|
+
async function marketplaceValidateCommand(targetPath, options) {
|
|
647
|
+
// `undefined`: this command offers no `--format`, so its failure envelope is
|
|
648
|
+
// YAML like its report.
|
|
649
|
+
finishCommand(await runMarketplaceValidatePhase(targetPath, options), writeYamlOutput, undefined);
|
|
650
|
+
}
|
|
335
651
|
export function createMarketplaceValidateCommand() {
|
|
336
652
|
const command = new Command('validate');
|
|
337
653
|
command
|
|
@@ -350,6 +666,25 @@ Description:
|
|
|
350
666
|
Output (YAML on stdout):
|
|
351
667
|
root: the marketplace directory — every location below is relative to it
|
|
352
668
|
status, issueCounts, summary, duration, marketplace, plugins
|
|
669
|
+
pluginsValidated: how many of the manifest's relative-path sources
|
|
670
|
+
(marketplace.localPluginSources) resolved to a directory and were
|
|
671
|
+
validated — each plugins[] row names the entry it satisfies. A
|
|
672
|
+
declared source that does not resolve is reported as
|
|
673
|
+
RESOURCE_CHECK_BROKEN at error (exit 1), naming it, rather than as
|
|
674
|
+
a pass — a plugin the manifest ships and this run never saw is not
|
|
675
|
+
a verdict. A source is never followed outside the root: an absolute
|
|
676
|
+
path or a ".." segment fails the manifest schema, and a symlink that
|
|
677
|
+
points out is refused like an unresolved source. Co-located
|
|
678
|
+
marketplaces (source: "./") are validated at the root. An
|
|
679
|
+
all-remote marketplace has nothing local and stays green.
|
|
680
|
+
undeclared: directories under plugins/ that no manifest entry names.
|
|
681
|
+
Listed only — they cannot be installed, so they are neither
|
|
682
|
+
validated nor a failure.
|
|
683
|
+
refused: paths inside a validated plugin this run would not open because
|
|
684
|
+
they resolve outside the root (a skills/ dir, skill dir, SKILL.md
|
|
685
|
+
or plugin.json that is a symlink pointing out). Containment is by
|
|
686
|
+
real path at every depth, not only at the declared source; each is
|
|
687
|
+
named here and in the RESOURCE_CHECK_BROKEN finding (exit 1).
|
|
353
688
|
|
|
354
689
|
issues: one row per inspected location, carrying only that location's counts
|
|
355
690
|
({location, errors?, warnings?, info?, codes}). A zero bucket is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/commands/claude/marketplace/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/commands/claude/marketplace/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5D,OAAO,EACL,mBAAmB,EACnB,aAAa,GAEd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EACL,yBAAyB,EACzB,eAAe,GAIhB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAClP,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAA4B,MAAM,mCAAmC,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAQxE;;GAEG;AACH,SAAS,qBAAqB,CAAC,eAAuB;IACpD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,UAAU,GAA4E;QAC1F,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE;QAC9G,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,4BAA4B,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,+BAA+B,EAAE;QACrH,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,+BAA+B,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,kCAAkC,EAAE;KAC/H,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,IAAI,EAAE,KAAK,CAAC,IAA+B;gBAC3C,OAAO,EAAE,4BAA4B,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,EAAE;gBACjE,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;gBACpF,GAAG,EAAE,SAAS,KAAK,CAAC,IAAI,oCAAoC;aAC7D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,YAAY;IAIG;IACA;IAJV,OAAO,GAAa,EAAE,CAAC;IAEhC,YACmB,eAAuB,EACvB,QAAgB;QADhB,oBAAe,GAAf,eAAe,CAAQ;QACvB,aAAQ,GAAR,QAAQ,CAAQ;IAChC,CAAC;IAEJ;;;;OAIG;IACH,QAAQ,CAAC,GAAW;QAClB,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,eAAuB,EACvB,QAAsB,EACtB,UAAwC;IAExC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvE,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAErE,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAS;QAErE,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,SAAS;QAE1E,4FAA4F;QAC5F,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC7F,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5I,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,iBAAiB,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,SAAS,kBAAkB,CACzB,eAAuB,EACvB,QAAgB,EAChB,MAAc;IAEd,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gEAAgE;QAChE,6CAA6C;QAC7C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC;YAAE,MAAM,KAAK,CAAC;QAC/D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChG,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,KAAK,UAAU,uBAAuB,CACpC,eAAuB,EACvB,QAAsC,EACtC,UAAwC;IAExC,MAAM,aAAa,GAAwB,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,cAAc,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC3D,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,wEAAwE;QACxE,4EAA4E;QAC5E,sEAAsE;QACtE,MAAM,GAAG,GAAG,kBAAkB,CAAC,eAAe,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxE,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAEhC,sEAAsE;QACtE,0EAA0E;QAC1E,yEAAyE;QACzE,uDAAuD;QACvD,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACjG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,OAAO;QACL,aAAa;QACb,UAAU,EAAE,oBAAoB,CAAC,eAAe,EAAE,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,uBAAuB,CACpC,SAAiB,EACjB,eAAuB,EACvB,QAAsB,EACtB,UAAwC;IAExC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC/E,IAAI,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,6BAA6B,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,wCAAwC;YAC1H,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC;SACjC,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,yCAAyC;IACzC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,CAAC;IACnG,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxE,OAAO;QACL,GAAG,SAAS;QACZ,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,yBAAyB,CAAC,YAAY,CAAC;QAC/C,WAAW,EAAE,eAAe,CAAC,YAAY,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,eAAuB,EAAE,aAAkC;IACvF,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACrD,0EAA0E;QAC1E,oEAAoE;SACnE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,WAAW,CAAC;SAC7E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SACrD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACvE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,SAAS,8BAA8B,CACrC,eAAuB,EACvB,MAAuC;IAEvC,MAAM,WAAW,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;IACrD,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,2BAA2B,WAAW,8CAA8C;YAClF,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAChG,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,eAAuB,EACvB,MAAuC;IAEvC,MAAM,iBAAiB,GAAG,MAAM,mBAAmB,CAAC,eAAe,EAAE;QACnE,YAAY,EAAE,eAAe;KAC9B,CAAC,CAAC;IAEH,4EAA4E;IAC5E,EAAE;IACF,2EAA2E;IAC3E,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,6DAA6D;IAC7D,IAAI,iBAAiB,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACzC,OAAO;YACL,iBAAiB;YACjB,aAAa,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC;SACtC,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,8BAA8B,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,uBAAuB,CAChG,eAAe,EACf,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,IAAI,EAAE,EACpD,UAAU,CACX,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC;QAC7D,GAAG,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC;QAC/C,GAAG,YAAY;KAChB,CAAC;IAEF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC3E,CAAC;AAqDD;;;;;;;;;;;GAWG;AACH,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAUtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAkC;IAElC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsC,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC;QACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,EAAE;QAC7D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAa,EAAE,CAAC;QAC1F,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAAqC;IAErC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAExG,MAAM,MAAM,GAAG;QACb,GAAG,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC;QAC5D,GAAG,KAAK,CAAC,MAAM;KAChB,CAAC;IACF,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI;QACJ,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,sEAAsE;QACtE,4EAA4E;QAC5E,yDAAyD;QACzD,MAAM,EAAE,yBAAyB,CAAC,MAAM,CAAC;QACzC,2DAA2D;QAC3D,IAAI;QACJ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,yEAAyE;QACzE,uEAAuE;QACvE,0EAA0E;QAC1E,gBAAgB,EAAE,aAAa,CAAC,MAAM;QACtC,OAAO,EAAE,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC;QAC7C,2EAA2E;QAC3E,2DAA2D;QAC3D,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC;QAC3B,mEAAmE;QACnE,wEAAwE;QACxE,6EAA6E;QAC7E,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;QACrB,wEAAwE;QACxE,2EAA2E;QAC3E,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC;QACrE,0EAA0E;QAC1E,0EAA0E;QAC1E,iBAAiB;QACjB,WAAW;QACX,OAAO,EAAE,WAAW;eACf,GAAG,WAAW,CAAC,MAAM,cAAc,WAAW,CAAC,QAAQ,gBAAgB,WAAW,CAAC,IAAI,OAAO;QACnG,QAAQ;KACT,CAAC;AACJ,CAAC;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,SAAS,oBAAoB,CAC3B,WAAyC,EACzC,SAAuC,EACvC,OAA0B;IAE1B,MAAM,QAAQ,GAAG,WAAW,EAAE,kBAAkB,IAAI,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CACtF,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1F,KAAK,CAAC,IAAI,CACR,yBAAyB,QAAQ,CAAC,MAAM,uDAAuD;cAC7F,IAAI,SAAS,CAAC,MAAM,0EAA0E;cAC9F,gEAAgE;cAChE,uFAAuF,KAAK,GAAG;cAC/F,4FAA4F;cAC5F,sFAAsF;cACtF,2FAA2F;cAC3F,sFAAsF;cACtF,2FAA2F,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CACR,4BAA4B,OAAO,CAAC,MAAM,0DAA0D;cAClG,iEAAiE,KAAK,GAAG;cACzE,+FAA+F;cAC/F,2FAA2F;cAC3F,8EAA8E,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAA8B,EAC9B,OAAmC;IAEnC,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,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,2BAA2B,eAAe,EAAE,CAAC,CAAC;QAE1D,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GACrE,MAAM,0BAA0B,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAE5D,uEAAuE;QACvE,yEAAyE;QACzE,oBAAoB;QACpB,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,KAAK,OAAO,CAAC;QACpD,MAAM,QAAQ,GAAG,8BAA8B,CAAC;YAC9C,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,iBAAiB,CAAC,QAAQ;YACvC,aAAa;YACb,UAAU;YACV,OAAO;YACP,MAAM;YACN,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAChD,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI;SAClC,CAAC,CAAC;QAEH,uEAAuE;QACvE,2EAA2E;QAC3E,oEAAoE;QACpE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,QAAQ,EAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,CAAC;YAC7E,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,UAA8B,EAC9B,OAAmC;IAEnC,6EAA6E;IAC7E,wBAAwB;IACxB,aAAa,CAAC,MAAM,2BAA2B,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO;SACJ,WAAW,CAAC,iDAAiD,CAAC;SAC9D,QAAQ,CAAC,QAAQ,EAAE,4DAA4D,CAAC;SAChF,MAAM,CAAC,aAAa,EAAE,sBAAsB,CAAC;SAC7C,MAAM,CAAC,eAAe,EAAE,4DAA4D,CAAC;SACrF,MAAM,CAAC,0BAA0B,CAAC;SAClC,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CzB,CAAC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|