@vibe-agent-toolkit/cli 0.2.0-rc.10 → 0.2.0-rc.12
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 +3 -3
- package/dist/bin/supervise-cli.d.ts +45 -0
- package/dist/bin/supervise-cli.d.ts.map +1 -0
- package/dist/bin/supervise-cli.js +83 -0
- package/dist/bin/supervise-cli.js.map +1 -0
- package/dist/bin/vat +94 -40
- package/dist/bin/vat.d.ts +15 -4
- package/dist/bin/vat.d.ts.map +1 -1
- package/dist/bin/vat.js +94 -40
- package/dist/bin/vat.js.map +1 -1
- package/dist/bin.js +21 -29
- package/dist/bin.js.map +1 -1
- package/dist/command-tree.d.ts +45 -0
- package/dist/command-tree.d.ts.map +1 -0
- package/dist/command-tree.js +60 -0
- package/dist/command-tree.js.map +1 -0
- package/dist/commands/agent/build-schema.d.ts +100 -0
- package/dist/commands/agent/build-schema.d.ts.map +1 -0
- package/dist/commands/agent/build-schema.js +32 -0
- package/dist/commands/agent/build-schema.js.map +1 -0
- package/dist/commands/agent/build.d.ts +1 -0
- package/dist/commands/agent/build.d.ts.map +1 -1
- package/dist/commands/agent/build.js +63 -33
- package/dist/commands/agent/build.js.map +1 -1
- package/dist/commands/agent/import-schema.d.ts +75 -0
- package/dist/commands/agent/import-schema.d.ts.map +1 -0
- package/dist/commands/agent/import-schema.js +25 -0
- package/dist/commands/agent/import-schema.js.map +1 -0
- package/dist/commands/agent/import.d.ts.map +1 -1
- package/dist/commands/agent/import.js +33 -27
- package/dist/commands/agent/import.js.map +1 -1
- package/dist/commands/agent/index.d.ts.map +1 -1
- package/dist/commands/agent/index.js +132 -37
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/install-path.d.ts.map +1 -1
- package/dist/commands/agent/install-path.js +2 -1
- package/dist/commands/agent/install-path.js.map +1 -1
- package/dist/commands/agent/install-schema.d.ts +89 -0
- package/dist/commands/agent/install-schema.d.ts.map +1 -0
- package/dist/commands/agent/install-schema.js +29 -0
- package/dist/commands/agent/install-schema.js.map +1 -0
- package/dist/commands/agent/install.d.ts +7 -1
- package/dist/commands/agent/install.d.ts.map +1 -1
- package/dist/commands/agent/install.js +78 -108
- package/dist/commands/agent/install.js.map +1 -1
- package/dist/commands/agent/installed-schema.d.ts +140 -0
- package/dist/commands/agent/installed-schema.d.ts.map +1 -0
- package/dist/commands/agent/installed-schema.js +36 -0
- package/dist/commands/agent/installed-schema.js.map +1 -0
- package/dist/commands/agent/installed.d.ts +1 -1
- package/dist/commands/agent/installed.d.ts.map +1 -1
- package/dist/commands/agent/installed.js +104 -75
- package/dist/commands/agent/installed.js.map +1 -1
- package/dist/commands/agent/list-schema.d.ts +128 -0
- package/dist/commands/agent/list-schema.d.ts.map +1 -0
- package/dist/commands/agent/list-schema.js +34 -0
- package/dist/commands/agent/list-schema.js.map +1 -0
- package/dist/commands/agent/list.d.ts +4 -3
- package/dist/commands/agent/list.d.ts.map +1 -1
- package/dist/commands/agent/list.js +50 -37
- package/dist/commands/agent/list.js.map +1 -1
- package/dist/commands/agent/run.d.ts +3 -0
- package/dist/commands/agent/run.d.ts.map +1 -1
- package/dist/commands/agent/run.js +8 -3
- package/dist/commands/agent/run.js.map +1 -1
- package/dist/commands/agent/uninstall-schema.d.ts +89 -0
- package/dist/commands/agent/uninstall-schema.d.ts.map +1 -0
- package/dist/commands/agent/uninstall-schema.js +29 -0
- package/dist/commands/agent/uninstall-schema.js.map +1 -0
- package/dist/commands/agent/uninstall.d.ts +5 -1
- package/dist/commands/agent/uninstall.d.ts.map +1 -1
- package/dist/commands/agent/uninstall.js +50 -38
- package/dist/commands/agent/uninstall.js.map +1 -1
- package/dist/commands/agent/validate-schema.d.ts +129 -0
- package/dist/commands/agent/validate-schema.d.ts.map +1 -0
- package/dist/commands/agent/validate-schema.js +35 -0
- package/dist/commands/agent/validate-schema.js.map +1 -0
- package/dist/commands/agent/validate.d.ts +6 -0
- package/dist/commands/agent/validate.d.ts.map +1 -1
- package/dist/commands/agent/validate.js +64 -36
- package/dist/commands/agent/validate.js.map +1 -1
- package/dist/commands/ard/emit-schema.d.ts +108 -0
- package/dist/commands/ard/emit-schema.d.ts.map +1 -0
- package/dist/commands/ard/emit-schema.js +37 -0
- package/dist/commands/ard/emit-schema.js.map +1 -0
- package/dist/commands/ard/emit.d.ts +31 -63
- package/dist/commands/ard/emit.d.ts.map +1 -1
- package/dist/commands/ard/emit.js +124 -68
- package/dist/commands/ard/emit.js.map +1 -1
- package/dist/commands/ard/index.d.ts.map +1 -1
- package/dist/commands/ard/index.js +17 -10
- package/dist/commands/ard/index.js.map +1 -1
- package/dist/commands/audit/compat-lane-findings.d.ts +65 -0
- package/dist/commands/audit/compat-lane-findings.d.ts.map +1 -0
- package/dist/commands/audit/compat-lane-findings.js +72 -0
- package/dist/commands/audit/compat-lane-findings.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 +23 -12
- package/dist/commands/audit/distributed-tree.js.map +1 -1
- package/dist/commands/audit/git-url-clone.d.ts +15 -7
- package/dist/commands/audit/git-url-clone.d.ts.map +1 -1
- package/dist/commands/audit/git-url-clone.js +85 -42
- package/dist/commands/audit/git-url-clone.js.map +1 -1
- package/dist/commands/audit/hierarchical-output.d.ts +28 -4
- package/dist/commands/audit/hierarchical-output.d.ts.map +1 -1
- package/dist/commands/audit/hierarchical-output.js +44 -27
- package/dist/commands/audit/hierarchical-output.js.map +1 -1
- package/dist/commands/audit/scan-population.d.ts.map +1 -1
- package/dist/commands/audit/scan-population.js +2 -1
- package/dist/commands/audit/scan-population.js.map +1 -1
- package/dist/commands/audit-schema.d.ts +1247 -0
- package/dist/commands/audit-schema.d.ts.map +1 -0
- package/dist/commands/audit-schema.js +139 -0
- package/dist/commands/audit-schema.js.map +1 -0
- package/dist/commands/audit-settings-schema.d.ts +417 -0
- package/dist/commands/audit-settings-schema.d.ts.map +1 -0
- package/dist/commands/audit-settings-schema.js +77 -0
- package/dist/commands/audit-settings-schema.js.map +1 -0
- package/dist/commands/audit-settings.d.ts +28 -9
- package/dist/commands/audit-settings.d.ts.map +1 -1
- package/dist/commands/audit-settings.js +215 -151
- package/dist/commands/audit-settings.js.map +1 -1
- package/dist/commands/audit.d.ts +72 -33
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +415 -397
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/build.d.ts +61 -4
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +176 -190
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/cache/clear-schema.d.ts +111 -0
- package/dist/commands/cache/clear-schema.d.ts.map +1 -0
- package/dist/commands/cache/clear-schema.js +37 -0
- package/dist/commands/cache/clear-schema.js.map +1 -0
- package/dist/commands/cache/clear.d.ts +28 -26
- package/dist/commands/cache/clear.d.ts.map +1 -1
- package/dist/commands/cache/clear.js +108 -103
- package/dist/commands/cache/clear.js.map +1 -1
- package/dist/commands/cache/index.d.ts.map +1 -1
- package/dist/commands/cache/index.js +13 -7
- package/dist/commands/cache/index.js.map +1 -1
- package/dist/commands/claude/claude-config.d.ts +23 -6
- package/dist/commands/claude/claude-config.d.ts.map +1 -1
- package/dist/commands/claude/claude-config.js +29 -15
- package/dist/commands/claude/claude-config.js.map +1 -1
- package/dist/commands/claude/context.d.ts +87 -2
- package/dist/commands/claude/context.d.ts.map +1 -1
- package/dist/commands/claude/context.js +116 -57
- package/dist/commands/claude/context.js.map +1 -1
- package/dist/commands/claude/marketplace/changelog-utils.js +2 -2
- package/dist/commands/claude/marketplace/changelog-utils.js.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.d.ts +14 -1
- package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.js +135 -68
- package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
- package/dist/commands/claude/marketplace/license-utils.d.ts +3 -5
- package/dist/commands/claude/marketplace/license-utils.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/license-utils.js +16 -7
- package/dist/commands/claude/marketplace/license-utils.js.map +1 -1
- package/dist/commands/claude/marketplace/publish-schema.d.ts +137 -0
- package/dist/commands/claude/marketplace/publish-schema.d.ts.map +1 -0
- package/dist/commands/claude/marketplace/publish-schema.js +32 -0
- package/dist/commands/claude/marketplace/publish-schema.js.map +1 -0
- package/dist/commands/claude/marketplace/publish-tree.d.ts +6 -0
- package/dist/commands/claude/marketplace/publish-tree.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/publish-tree.js +75 -17
- package/dist/commands/claude/marketplace/publish-tree.js.map +1 -1
- package/dist/commands/claude/marketplace/publish.d.ts +27 -0
- package/dist/commands/claude/marketplace/publish.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/publish.js +84 -50
- package/dist/commands/claude/marketplace/publish.js.map +1 -1
- package/dist/commands/claude/marketplace/validate-schema.d.ts +362 -0
- package/dist/commands/claude/marketplace/validate-schema.d.ts.map +1 -0
- package/dist/commands/claude/marketplace/validate-schema.js +67 -0
- package/dist/commands/claude/marketplace/validate-schema.js.map +1 -0
- package/dist/commands/claude/marketplace/validate.d.ts +40 -53
- package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/validate.js +358 -214
- package/dist/commands/claude/marketplace/validate.js.map +1 -1
- package/dist/commands/claude/org/api-keys.d.ts +3 -0
- package/dist/commands/claude/org/api-keys.d.ts.map +1 -1
- package/dist/commands/claude/org/api-keys.js +4 -5
- package/dist/commands/claude/org/api-keys.js.map +1 -1
- package/dist/commands/claude/org/code-analytics.js +1 -1
- package/dist/commands/claude/org/code-analytics.js.map +1 -1
- package/dist/commands/claude/org/cost.d.ts.map +1 -1
- package/dist/commands/claude/org/cost.js +11 -33
- package/dist/commands/claude/org/cost.js.map +1 -1
- package/dist/commands/claude/org/helpers.d.ts +40 -27
- package/dist/commands/claude/org/helpers.d.ts.map +1 -1
- package/dist/commands/claude/org/helpers.js +61 -66
- 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 +10 -4
- package/dist/commands/claude/org/index.js.map +1 -1
- package/dist/commands/claude/org/info.d.ts.map +1 -1
- package/dist/commands/claude/org/info.js +2 -3
- package/dist/commands/claude/org/info.js.map +1 -1
- package/dist/commands/claude/org/invites.d.ts +3 -0
- package/dist/commands/claude/org/invites.d.ts.map +1 -1
- package/dist/commands/claude/org/invites.js +5 -7
- package/dist/commands/claude/org/invites.js.map +1 -1
- package/dist/commands/claude/org/skills.d.ts +76 -21
- package/dist/commands/claude/org/skills.d.ts.map +1 -1
- package/dist/commands/claude/org/skills.js +273 -246
- package/dist/commands/claude/org/skills.js.map +1 -1
- package/dist/commands/claude/org/stubs-schema.d.ts +56 -0
- package/dist/commands/claude/org/stubs-schema.d.ts.map +1 -0
- package/dist/commands/claude/org/stubs-schema.js +23 -0
- package/dist/commands/claude/org/stubs-schema.js.map +1 -0
- package/dist/commands/claude/org/stubs.d.ts +8 -3
- package/dist/commands/claude/org/stubs.d.ts.map +1 -1
- package/dist/commands/claude/org/stubs.js +9 -9
- package/dist/commands/claude/org/stubs.js.map +1 -1
- package/dist/commands/claude/org/usage.d.ts.map +1 -1
- package/dist/commands/claude/org/usage.js +1 -2
- package/dist/commands/claude/org/usage.js.map +1 -1
- package/dist/commands/claude/org/users.d.ts +3 -0
- package/dist/commands/claude/org/users.d.ts.map +1 -1
- package/dist/commands/claude/org/users.js +6 -8
- package/dist/commands/claude/org/users.js.map +1 -1
- package/dist/commands/claude/org/workspaces.d.ts +3 -0
- package/dist/commands/claude/org/workspaces.d.ts.map +1 -1
- package/dist/commands/claude/org/workspaces.js +10 -15
- package/dist/commands/claude/org/workspaces.js.map +1 -1
- package/dist/commands/claude/plugin/build-schema.d.ts +642 -0
- package/dist/commands/claude/plugin/build-schema.d.ts.map +1 -0
- package/dist/commands/claude/plugin/build-schema.js +51 -0
- package/dist/commands/claude/plugin/build-schema.js.map +1 -0
- package/dist/commands/claude/plugin/build.d.ts +220 -45
- package/dist/commands/claude/plugin/build.d.ts.map +1 -1
- package/dist/commands/claude/plugin/build.js +466 -249
- package/dist/commands/claude/plugin/build.js.map +1 -1
- package/dist/commands/claude/plugin/helpers.d.ts +186 -24
- package/dist/commands/claude/plugin/helpers.d.ts.map +1 -1
- package/dist/commands/claude/plugin/helpers.js +110 -68
- package/dist/commands/claude/plugin/helpers.js.map +1 -1
- package/dist/commands/claude/plugin/install-schema.d.ts +144 -0
- package/dist/commands/claude/plugin/install-schema.d.ts.map +1 -0
- package/dist/commands/claude/plugin/install-schema.js +36 -0
- package/dist/commands/claude/plugin/install-schema.js.map +1 -0
- package/dist/commands/claude/plugin/install.d.ts +191 -11
- package/dist/commands/claude/plugin/install.d.ts.map +1 -1
- package/dist/commands/claude/plugin/install.js +688 -628
- package/dist/commands/claude/plugin/install.js.map +1 -1
- package/dist/commands/claude/plugin/kept-findings.d.ts +19 -0
- package/dist/commands/claude/plugin/kept-findings.d.ts.map +1 -0
- package/dist/commands/claude/plugin/kept-findings.js +24 -0
- package/dist/commands/claude/plugin/kept-findings.js.map +1 -0
- package/dist/commands/claude/plugin/list-schema.d.ts +223 -0
- package/dist/commands/claude/plugin/list-schema.d.ts.map +1 -0
- package/dist/commands/claude/plugin/list-schema.js +34 -0
- package/dist/commands/claude/plugin/list-schema.js.map +1 -0
- package/dist/commands/claude/plugin/list.d.ts +18 -0
- package/dist/commands/claude/plugin/list.d.ts.map +1 -1
- package/dist/commands/claude/plugin/list.js +53 -45
- package/dist/commands/claude/plugin/list.js.map +1 -1
- package/dist/commands/claude/plugin/npm-pack.d.ts +15 -0
- package/dist/commands/claude/plugin/npm-pack.d.ts.map +1 -0
- package/dist/commands/claude/plugin/npm-pack.js +39 -0
- package/dist/commands/claude/plugin/npm-pack.js.map +1 -0
- package/dist/commands/claude/plugin/plugin-changelog.d.ts +5 -1
- package/dist/commands/claude/plugin/plugin-changelog.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-changelog.js +9 -5
- package/dist/commands/claude/plugin/plugin-changelog.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-files.d.ts +21 -2
- package/dist/commands/claude/plugin/plugin-files.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-files.js +65 -32
- package/dist/commands/claude/plugin/plugin-files.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-validators.d.ts +13 -0
- package/dist/commands/claude/plugin/plugin-validators.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-validators.js +64 -16
- package/dist/commands/claude/plugin/plugin-validators.js.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.js +63 -37
- package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
- package/dist/commands/claude/plugin/uninstall-schema.d.ts +112 -0
- package/dist/commands/claude/plugin/uninstall-schema.d.ts.map +1 -0
- package/dist/commands/claude/plugin/uninstall-schema.js +28 -0
- package/dist/commands/claude/plugin/uninstall-schema.js.map +1 -0
- package/dist/commands/claude/plugin/uninstall.d.ts +57 -0
- package/dist/commands/claude/plugin/uninstall.d.ts.map +1 -1
- package/dist/commands/claude/plugin/uninstall.js +176 -64
- package/dist/commands/claude/plugin/uninstall.js.map +1 -1
- package/dist/commands/consistency-check.d.ts.map +1 -1
- package/dist/commands/consistency-check.js +8 -6
- 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 +26 -10
- package/dist/commands/corpus/index.js.map +1 -1
- package/dist/commands/corpus/report.d.ts +34 -16
- package/dist/commands/corpus/report.d.ts.map +1 -1
- package/dist/commands/corpus/report.js +36 -18
- package/dist/commands/corpus/report.js.map +1 -1
- package/dist/commands/corpus/runner.d.ts +25 -20
- package/dist/commands/corpus/runner.d.ts.map +1 -1
- package/dist/commands/corpus/runner.js +123 -67
- package/dist/commands/corpus/runner.js.map +1 -1
- package/dist/commands/corpus/scan-schema.d.ts +127 -0
- package/dist/commands/corpus/scan-schema.d.ts.map +1 -0
- package/dist/commands/corpus/scan-schema.js +31 -0
- package/dist/commands/corpus/scan-schema.js.map +1 -0
- package/dist/commands/corpus/scan.d.ts +31 -0
- package/dist/commands/corpus/scan.d.ts.map +1 -1
- package/dist/commands/corpus/scan.js +124 -50
- package/dist/commands/corpus/scan.js.map +1 -1
- package/dist/commands/corpus/seed.d.ts +11 -8
- package/dist/commands/corpus/seed.d.ts.map +1 -1
- package/dist/commands/corpus/seed.js +29 -11
- package/dist/commands/corpus/seed.js.map +1 -1
- package/dist/commands/doctor-render.d.ts +52 -0
- package/dist/commands/doctor-render.d.ts.map +1 -0
- package/dist/commands/doctor-render.js +110 -0
- package/dist/commands/doctor-render.js.map +1 -0
- package/dist/commands/doctor-schema.d.ts +191 -0
- package/dist/commands/doctor-schema.d.ts.map +1 -0
- package/dist/commands/doctor-schema.js +44 -0
- package/dist/commands/doctor-schema.js.map +1 -0
- package/dist/commands/doctor.d.ts +7 -62
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +126 -165
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/inventory-schema.d.ts +7297 -0
- package/dist/commands/inventory-schema.d.ts.map +1 -0
- package/dist/commands/inventory-schema.js +28 -0
- package/dist/commands/inventory-schema.js.map +1 -0
- package/dist/commands/inventory.d.ts +1 -1
- package/dist/commands/inventory.d.ts.map +1 -1
- package/dist/commands/inventory.js +89 -41
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/mcp/index.d.ts.map +1 -1
- package/dist/commands/mcp/index.js +15 -0
- package/dist/commands/mcp/index.js.map +1 -1
- package/dist/commands/mcp/list-collections-schema.d.ts +101 -0
- package/dist/commands/mcp/list-collections-schema.d.ts.map +1 -0
- package/dist/commands/mcp/list-collections-schema.js +22 -0
- package/dist/commands/mcp/list-collections-schema.js.map +1 -0
- package/dist/commands/mcp/list-collections.d.ts +1 -1
- package/dist/commands/mcp/list-collections.d.ts.map +1 -1
- package/dist/commands/mcp/list-collections.js +19 -17
- package/dist/commands/mcp/list-collections.js.map +1 -1
- package/dist/commands/mcp/serve.d.ts +5 -0
- package/dist/commands/mcp/serve.d.ts.map +1 -1
- package/dist/commands/mcp/serve.js +29 -15
- package/dist/commands/mcp/serve.js.map +1 -1
- package/dist/commands/okf/index.d.ts.map +1 -1
- package/dist/commands/okf/index.js +13 -10
- package/dist/commands/okf/index.js.map +1 -1
- package/dist/commands/okf/validate-schema.d.ts +171 -0
- package/dist/commands/okf/validate-schema.d.ts.map +1 -0
- package/dist/commands/okf/validate-schema.js +44 -0
- package/dist/commands/okf/validate-schema.js.map +1 -0
- package/dist/commands/okf/validate.d.ts +16 -145
- package/dist/commands/okf/validate.d.ts.map +1 -1
- package/dist/commands/okf/validate.js +63 -52
- package/dist/commands/okf/validate.js.map +1 -1
- package/dist/commands/orchestrator-schema.d.ts +419 -0
- package/dist/commands/orchestrator-schema.d.ts.map +1 -0
- package/dist/commands/orchestrator-schema.js +91 -0
- package/dist/commands/orchestrator-schema.js.map +1 -0
- package/dist/commands/phase-utils.d.ts +188 -220
- package/dist/commands/phase-utils.d.ts.map +1 -1
- package/dist/commands/phase-utils.js +210 -258
- package/dist/commands/phase-utils.js.map +1 -1
- package/dist/commands/positional-args.d.ts +13 -11
- package/dist/commands/positional-args.d.ts.map +1 -1
- package/dist/commands/positional-args.js +16 -15
- package/dist/commands/positional-args.js.map +1 -1
- package/dist/commands/rag/admin-schema.d.ts +152 -0
- package/dist/commands/rag/admin-schema.d.ts.map +1 -0
- package/dist/commands/rag/admin-schema.js +31 -0
- package/dist/commands/rag/admin-schema.js.map +1 -0
- package/dist/commands/rag/clear-command.d.ts.map +1 -1
- package/dist/commands/rag/clear-command.js +30 -15
- package/dist/commands/rag/clear-command.js.map +1 -1
- package/dist/commands/rag/command-helpers.d.ts +31 -7
- package/dist/commands/rag/command-helpers.d.ts.map +1 -1
- package/dist/commands/rag/command-helpers.js +41 -21
- package/dist/commands/rag/command-helpers.js.map +1 -1
- package/dist/commands/rag/index-command.d.ts +37 -48
- package/dist/commands/rag/index-command.d.ts.map +1 -1
- package/dist/commands/rag/index-command.js +80 -65
- package/dist/commands/rag/index-command.js.map +1 -1
- package/dist/commands/rag/index-schema.d.ts +107 -0
- package/dist/commands/rag/index-schema.d.ts.map +1 -0
- package/dist/commands/rag/index-schema.js +34 -0
- package/dist/commands/rag/index-schema.js.map +1 -0
- package/dist/commands/rag/index.d.ts.map +1 -1
- package/dist/commands/rag/index.js +88 -41
- package/dist/commands/rag/index.js.map +1 -1
- package/dist/commands/rag/query-command.d.ts +18 -4
- package/dist/commands/rag/query-command.d.ts.map +1 -1
- package/dist/commands/rag/query-command.js +42 -27
- package/dist/commands/rag/query-command.js.map +1 -1
- package/dist/commands/rag/query-schema.d.ts +363 -0
- package/dist/commands/rag/query-schema.d.ts.map +1 -0
- package/dist/commands/rag/query-schema.js +59 -0
- package/dist/commands/rag/query-schema.js.map +1 -0
- package/dist/commands/rag/stats-command.d.ts.map +1 -1
- package/dist/commands/rag/stats-command.js +19 -18
- package/dist/commands/rag/stats-command.js.map +1 -1
- package/dist/commands/resources/check-progress.d.ts +79 -13
- package/dist/commands/resources/check-progress.d.ts.map +1 -1
- package/dist/commands/resources/check-progress.js +112 -11
- package/dist/commands/resources/check-progress.js.map +1 -1
- package/dist/commands/resources/check-schema.d.ts +335 -0
- package/dist/commands/resources/check-schema.d.ts.map +1 -0
- package/dist/commands/resources/check-schema.js +104 -0
- package/dist/commands/resources/check-schema.js.map +1 -0
- package/dist/commands/resources/check-supervisor.d.ts +329 -71
- package/dist/commands/resources/check-supervisor.d.ts.map +1 -1
- package/dist/commands/resources/check-supervisor.js +507 -107
- package/dist/commands/resources/check-supervisor.js.map +1 -1
- package/dist/commands/resources/check.d.ts +88 -254
- package/dist/commands/resources/check.d.ts.map +1 -1
- package/dist/commands/resources/check.js +537 -310
- package/dist/commands/resources/check.js.map +1 -1
- package/dist/commands/resources/index.d.ts.map +1 -1
- package/dist/commands/resources/index.js +189 -103
- package/dist/commands/resources/index.js.map +1 -1
- package/dist/commands/resources/query-schema.d.ts +188 -0
- package/dist/commands/resources/query-schema.d.ts.map +1 -0
- package/dist/commands/resources/query-schema.js +48 -0
- package/dist/commands/resources/query-schema.js.map +1 -0
- package/dist/commands/resources/query.d.ts +18 -13
- package/dist/commands/resources/query.d.ts.map +1 -1
- package/dist/commands/resources/query.js +61 -49
- package/dist/commands/resources/query.js.map +1 -1
- package/dist/commands/resources/scan-schema.d.ts +195 -0
- package/dist/commands/resources/scan-schema.d.ts.map +1 -0
- package/dist/commands/resources/scan-schema.js +53 -0
- package/dist/commands/resources/scan-schema.js.map +1 -0
- package/dist/commands/resources/scan.d.ts +26 -3
- package/dist/commands/resources/scan.d.ts.map +1 -1
- package/dist/commands/resources/scan.js +51 -53
- package/dist/commands/resources/scan.js.map +1 -1
- package/dist/commands/resources/validate-schema.d.ts +326 -0
- package/dist/commands/resources/validate-schema.d.ts.map +1 -0
- package/dist/commands/resources/validate-schema.js +60 -0
- package/dist/commands/resources/validate-schema.js.map +1 -0
- package/dist/commands/resources/validate.d.ts +45 -169
- package/dist/commands/resources/validate.d.ts.map +1 -1
- package/dist/commands/resources/validate.js +221 -485
- package/dist/commands/resources/validate.js.map +1 -1
- package/dist/commands/skill/review-checklist.d.ts.map +1 -1
- package/dist/commands/skill/review-checklist.js +0 -1
- package/dist/commands/skill/review-checklist.js.map +1 -1
- package/dist/commands/skill/review-schema.d.ts +278 -0
- package/dist/commands/skill/review-schema.d.ts.map +1 -0
- package/dist/commands/skill/review-schema.js +46 -0
- package/dist/commands/skill/review-schema.js.map +1 -0
- package/dist/commands/skill/review.d.ts +8 -234
- package/dist/commands/skill/review.d.ts.map +1 -1
- package/dist/commands/skill/review.js +54 -77
- package/dist/commands/skill/review.js.map +1 -1
- package/dist/commands/skill/test/auth-flags.d.ts +3 -0
- package/dist/commands/skill/test/auth-flags.d.ts.map +1 -1
- package/dist/commands/skill/test/auth-flags.js +6 -2
- package/dist/commands/skill/test/auth-flags.js.map +1 -1
- package/dist/commands/skill/test/configure-schema.d.ts +67 -0
- package/dist/commands/skill/test/configure-schema.d.ts.map +1 -0
- package/dist/commands/skill/test/configure-schema.js +27 -0
- package/dist/commands/skill/test/configure-schema.js.map +1 -0
- package/dist/commands/skill/test/configure.d.ts +12 -5
- package/dist/commands/skill/test/configure.d.ts.map +1 -1
- package/dist/commands/skill/test/configure.js +101 -31
- package/dist/commands/skill/test/configure.js.map +1 -1
- package/dist/commands/skill/test/run-schema.d.ts +107 -0
- package/dist/commands/skill/test/run-schema.d.ts.map +1 -0
- package/dist/commands/skill/test/run-schema.js +36 -0
- package/dist/commands/skill/test/run-schema.js.map +1 -0
- package/dist/commands/skill/test/run.d.ts +3 -2
- package/dist/commands/skill/test/run.d.ts.map +1 -1
- package/dist/commands/skill/test/run.js +316 -155
- package/dist/commands/skill/test/run.js.map +1 -1
- package/dist/commands/skills/build-schema.d.ts +199 -0
- package/dist/commands/skills/build-schema.d.ts.map +1 -0
- package/dist/commands/skills/build-schema.js +55 -0
- package/dist/commands/skills/build-schema.js.map +1 -0
- package/dist/commands/skills/build.d.ts +95 -298
- package/dist/commands/skills/build.d.ts.map +1 -1
- package/dist/commands/skills/build.js +415 -818
- package/dist/commands/skills/build.js.map +1 -1
- package/dist/commands/skills/command-helpers.d.ts +5 -11
- package/dist/commands/skills/command-helpers.d.ts.map +1 -1
- package/dist/commands/skills/command-helpers.js +7 -17
- package/dist/commands/skills/command-helpers.js.map +1 -1
- package/dist/commands/skills/index.js +12 -6
- package/dist/commands/skills/index.js.map +1 -1
- package/dist/commands/skills/install-schema.d.ts +153 -0
- package/dist/commands/skills/install-schema.d.ts.map +1 -0
- package/dist/commands/skills/install-schema.js +44 -0
- package/dist/commands/skills/install-schema.js.map +1 -0
- package/dist/commands/skills/install.d.ts +76 -8
- package/dist/commands/skills/install.d.ts.map +1 -1
- package/dist/commands/skills/install.js +230 -194
- package/dist/commands/skills/install.js.map +1 -1
- package/dist/commands/skills/list-schema.d.ts +145 -0
- package/dist/commands/skills/list-schema.d.ts.map +1 -0
- package/dist/commands/skills/list-schema.js +37 -0
- package/dist/commands/skills/list-schema.js.map +1 -0
- package/dist/commands/skills/list.d.ts +39 -8
- package/dist/commands/skills/list.d.ts.map +1 -1
- package/dist/commands/skills/list.js +110 -122
- package/dist/commands/skills/list.js.map +1 -1
- package/dist/commands/skills/package-schema.d.ts +98 -0
- package/dist/commands/skills/package-schema.d.ts.map +1 -0
- package/dist/commands/skills/package-schema.js +32 -0
- package/dist/commands/skills/package-schema.js.map +1 -0
- package/dist/commands/skills/package.d.ts +85 -14
- package/dist/commands/skills/package.d.ts.map +1 -1
- package/dist/commands/skills/package.js +288 -207
- package/dist/commands/skills/package.js.map +1 -1
- package/dist/commands/skills/scope-guard.d.ts +27 -20
- package/dist/commands/skills/scope-guard.d.ts.map +1 -1
- package/dist/commands/skills/scope-guard.js +43 -28
- package/dist/commands/skills/scope-guard.js.map +1 -1
- package/dist/commands/skills/skill-discovery.d.ts +1 -1
- package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
- package/dist/commands/skills/skill-discovery.js +40 -19
- package/dist/commands/skills/skill-discovery.js.map +1 -1
- package/dist/commands/skills/source-resolvers.d.ts +58 -8
- package/dist/commands/skills/source-resolvers.d.ts.map +1 -1
- package/dist/commands/skills/source-resolvers.js +113 -38
- 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 +31 -51
- package/dist/commands/skills/validate-command.js.map +1 -1
- package/dist/commands/skills/validate-schema.d.ts +199 -0
- package/dist/commands/skills/validate-schema.d.ts.map +1 -0
- package/dist/commands/skills/validate-schema.js +44 -0
- package/dist/commands/skills/validate-schema.js.map +1 -0
- package/dist/commands/skills/validate.d.ts +100 -136
- package/dist/commands/skills/validate.d.ts.map +1 -1
- package/dist/commands/skills/validate.js +257 -343
- package/dist/commands/skills/validate.js.map +1 -1
- package/dist/commands/validate.d.ts +17 -5
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +139 -94
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/verify.d.ts +121 -110
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +230 -294
- package/dist/commands/verify.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/report-schemas.d.ts +12398 -35
- package/dist/report-schemas.d.ts.map +1 -1
- package/dist/report-schemas.js +624 -66
- package/dist/report-schemas.js.map +1 -1
- package/dist/skill-resolution/packaging-config.js +2 -2
- 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 +20 -13
- package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
- package/dist/utils/agent-discovery.d.ts +34 -1
- package/dist/utils/agent-discovery.d.ts.map +1 -1
- package/dist/utils/agent-discovery.js +80 -38
- package/dist/utils/agent-discovery.js.map +1 -1
- package/dist/utils/claude-context-lens.d.ts +13 -6
- package/dist/utils/claude-context-lens.d.ts.map +1 -1
- package/dist/utils/claude-context-lens.js +11 -12
- package/dist/utils/claude-context-lens.js.map +1 -1
- package/dist/utils/command-error-codes.d.ts +12 -0
- package/dist/utils/command-error-codes.d.ts.map +1 -0
- package/dist/utils/command-error-codes.js +12 -0
- package/dist/utils/command-error-codes.js.map +1 -0
- package/dist/utils/command-refusal.d.ts +58 -0
- package/dist/utils/command-refusal.d.ts.map +1 -0
- package/dist/utils/command-refusal.js +170 -0
- package/dist/utils/command-refusal.js.map +1 -0
- package/dist/utils/commander-ending.d.ts +40 -0
- package/dist/utils/commander-ending.d.ts.map +1 -0
- package/dist/utils/commander-ending.js +42 -0
- package/dist/utils/commander-ending.js.map +1 -0
- package/dist/utils/config-loader.d.ts +13 -8
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +84 -45
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/corpus-target.d.ts +1 -1
- package/dist/utils/corpus-target.d.ts.map +1 -1
- package/dist/utils/corpus-target.js +44 -5
- package/dist/utils/corpus-target.js.map +1 -1
- package/dist/utils/debug-diagnostics.d.ts +18 -0
- package/dist/utils/debug-diagnostics.d.ts.map +1 -0
- package/dist/utils/debug-diagnostics.js +23 -0
- package/dist/utils/debug-diagnostics.js.map +1 -0
- package/dist/utils/document-writer.d.ts +191 -0
- package/dist/utils/document-writer.d.ts.map +1 -0
- package/dist/utils/document-writer.js +319 -0
- package/dist/utils/document-writer.js.map +1 -0
- package/dist/utils/help-loader.d.ts +2 -2
- package/dist/utils/help-loader.js +2 -2
- package/dist/utils/install-plan.d.ts +99 -0
- package/dist/utils/install-plan.d.ts.map +1 -0
- package/dist/utils/install-plan.js +146 -0
- package/dist/utils/install-plan.js.map +1 -0
- package/dist/utils/issue-anchor.d.ts +1 -1
- package/dist/utils/issue-anchor.d.ts.map +1 -1
- package/dist/utils/issue-anchor.js.map +1 -1
- package/dist/utils/issue-rendering.d.ts +8 -3
- package/dist/utils/issue-rendering.d.ts.map +1 -1
- package/dist/utils/issue-rendering.js +4 -0
- package/dist/utils/issue-rendering.js.map +1 -1
- package/dist/utils/lens-population.d.ts +20 -0
- package/dist/utils/lens-population.d.ts.map +1 -0
- package/dist/utils/lens-population.js +15 -0
- package/dist/utils/lens-population.js.map +1 -0
- package/dist/utils/marketplace-io.d.ts +63 -0
- package/dist/utils/marketplace-io.d.ts.map +1 -0
- package/dist/utils/marketplace-io.js +63 -0
- package/dist/utils/marketplace-io.js.map +1 -0
- package/dist/utils/operator-notices.d.ts +97 -0
- package/dist/utils/operator-notices.d.ts.map +1 -0
- package/dist/utils/operator-notices.js +115 -0
- package/dist/utils/operator-notices.js.map +1 -0
- package/dist/utils/optional-backend.d.ts +18 -15
- package/dist/utils/optional-backend.d.ts.map +1 -1
- package/dist/utils/optional-backend.js +22 -33
- package/dist/utils/optional-backend.js.map +1 -1
- package/dist/utils/output.d.ts +5 -43
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +8 -63
- package/dist/utils/output.js.map +1 -1
- package/dist/utils/package-json.d.ts +3 -4
- package/dist/utils/package-json.d.ts.map +1 -1
- package/dist/utils/package-json.js +8 -8
- package/dist/utils/package-json.js.map +1 -1
- package/dist/utils/population-wiring.d.ts +31 -38
- package/dist/utils/population-wiring.d.ts.map +1 -1
- package/dist/utils/population-wiring.js +38 -32
- package/dist/utils/population-wiring.js.map +1 -1
- package/dist/utils/project-root-policy.d.ts +74 -1
- package/dist/utils/project-root-policy.d.ts.map +1 -1
- package/dist/utils/project-root-policy.js +146 -8
- package/dist/utils/project-root-policy.js.map +1 -1
- package/dist/utils/projection-lenses.d.ts +25 -7
- package/dist/utils/projection-lenses.d.ts.map +1 -1
- package/dist/utils/projection-lenses.js +20 -6
- package/dist/utils/projection-lenses.js.map +1 -1
- package/dist/utils/projection-query.d.ts +18 -11
- package/dist/utils/projection-query.d.ts.map +1 -1
- package/dist/utils/projection-query.js +47 -28
- package/dist/utils/projection-query.js.map +1 -1
- package/dist/utils/projection-store.d.ts +2 -2
- package/dist/utils/projection-store.d.ts.map +1 -1
- package/dist/utils/projection-store.js +74 -45
- package/dist/utils/projection-store.js.map +1 -1
- package/dist/utils/rag-database.d.ts +61 -0
- package/dist/utils/rag-database.d.ts.map +1 -0
- package/dist/utils/rag-database.js +178 -0
- package/dist/utils/rag-database.js.map +1 -0
- package/dist/utils/relation-limits.d.ts +7 -2
- package/dist/utils/relation-limits.d.ts.map +1 -1
- package/dist/utils/relation-limits.js +6 -1
- package/dist/utils/relation-limits.js.map +1 -1
- package/dist/utils/relativize-paths.d.ts +23 -0
- package/dist/utils/relativize-paths.d.ts.map +1 -1
- package/dist/utils/relativize-paths.js +32 -1
- package/dist/utils/relativize-paths.js.map +1 -1
- package/dist/utils/resource-loader.d.ts +78 -32
- package/dist/utils/resource-loader.d.ts.map +1 -1
- package/dist/utils/resource-loader.js +134 -66
- package/dist/utils/resource-loader.js.map +1 -1
- package/dist/utils/run-integrity.d.ts +64 -31
- package/dist/utils/run-integrity.d.ts.map +1 -1
- package/dist/utils/run-integrity.js +76 -35
- package/dist/utils/run-integrity.js.map +1 -1
- package/dist/utils/scope-locations.d.ts +7 -5
- package/dist/utils/scope-locations.d.ts.map +1 -1
- package/dist/utils/scope-locations.js +37 -12
- package/dist/utils/scope-locations.js.map +1 -1
- package/dist/utils/staging-dir.d.ts +7 -0
- package/dist/utils/staging-dir.d.ts.map +1 -0
- package/dist/utils/staging-dir.js +12 -0
- package/dist/utils/staging-dir.js.map +1 -0
- package/dist/utils/url-redact.d.ts +9 -0
- package/dist/utils/url-redact.d.ts.map +1 -1
- package/dist/utils/url-redact.js +13 -0
- package/dist/utils/url-redact.js.map +1 -1
- package/dist/utils/user-context-scanner.d.ts +3 -2
- package/dist/utils/user-context-scanner.d.ts.map +1 -1
- package/dist/utils/user-context-scanner.js +24 -4
- 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 +8 -14
- package/dist/utils/validate-help-files.js.map +1 -1
- package/dist/utils/vat-bin-path.d.ts.map +1 -1
- package/dist/utils/vat-bin-path.js +3 -3
- package/dist/utils/vat-bin-path.js.map +1 -1
- package/dist/utils/verdict-helpers.d.ts.map +1 -1
- package/dist/utils/verdict-helpers.js +5 -5
- package/dist/utils/verdict-helpers.js.map +1 -1
- package/docs/agent.md +347 -2
- package/docs/audit.md +312 -89
- package/docs/doctor.md +65 -19
- package/docs/index.md +571 -20
- package/docs/mcp.md +64 -12
- package/docs/rag.md +176 -48
- package/docs/resources.md +257 -71
- package/docs/skill-test.md +148 -19
- package/docs/skills.md +459 -174
- package/package.json +17 -20
- package/schemas/agent-build.json +268 -0
- package/schemas/agent-import.json +252 -0
- package/schemas/agent-install.json +260 -0
- package/schemas/agent-installed.json +287 -0
- package/schemas/agent-list.json +279 -0
- package/schemas/agent-uninstall.json +260 -0
- package/schemas/agent-validate.json +279 -0
- package/schemas/ard-emit.json +228 -107
- package/schemas/audit-settings.json +472 -0
- package/schemas/audit.json +635 -0
- package/schemas/cache-clear.json +273 -0
- package/schemas/claude-marketplace-publish.json +286 -0
- package/schemas/claude-marketplace-validate.json +352 -0
- package/schemas/claude-org-not-implemented.json +239 -0
- package/schemas/claude-plugin-build.json +446 -0
- package/schemas/claude-plugin-install.json +291 -0
- package/schemas/claude-plugin-list.json +326 -0
- package/schemas/claude-plugin-uninstall.json +272 -0
- package/schemas/corpus-audit.json +635 -0
- package/schemas/corpus-scan.json +293 -0
- package/schemas/doctor.json +299 -0
- package/schemas/inventory.json +982 -0
- package/schemas/mcp-list-collections.json +268 -0
- package/schemas/okf-validate.json +224 -106
- package/schemas/orchestrator.json +299 -0
- package/schemas/rag-clear.json +253 -0
- package/schemas/rag-index.json +273 -0
- package/schemas/rag-query.json +365 -0
- package/schemas/rag-stats.json +269 -0
- package/schemas/resources-check.json +280 -118
- package/schemas/resources-query.json +333 -0
- package/schemas/resources-scan.json +321 -0
- package/schemas/resources-validate.json +332 -0
- package/schemas/skill-review.json +224 -106
- package/schemas/skill-test-configure.json +256 -0
- package/schemas/skill-test-run.json +296 -0
- package/schemas/skills-build.json +325 -0
- package/schemas/skills-install.json +287 -0
- package/schemas/skills-list.json +283 -0
- package/schemas/skills-package.json +270 -0
- package/schemas/skills-validate.json +285 -0
- package/dist/commands/skills/shared.d.ts +0 -29
- package/dist/commands/skills/shared.d.ts.map +0 -1
- package/dist/commands/skills/shared.js +0 -33
- package/dist/commands/skills/shared.js.map +0 -1
- package/dist/utils/command-error.d.ts +0 -189
- package/dist/utils/command-error.d.ts.map +0 -1
- package/dist/utils/command-error.js +0 -230
- package/dist/utils/command-error.js.map +0 -1
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE writer of a `vat` command's stdout document.
|
|
3
|
+
*
|
|
4
|
+
* Every shape a command publishes is registered in `report-schemas.ts`, and
|
|
5
|
+
* this module is how it leaves: the document is looked up by verb, passed
|
|
6
|
+
* through the run-integrity refusal the registry's denominator declares,
|
|
7
|
+
* validated against its own published schema, rendered as yaml, json or text,
|
|
8
|
+
* and — for the `end…` functions — the process ends on the code the WRITTEN
|
|
9
|
+
* document derives. `local/no-stdout-outside-writer` keeps every other route
|
|
10
|
+
* to stdout out of `commands/`.
|
|
11
|
+
*
|
|
12
|
+
* 🔑 **Validated before a byte leaves.** A document the published schema
|
|
13
|
+
* rejects is a defect in VAT, and it throws here — the last resort ends it on
|
|
14
|
+
* `ERROR` — rather than shipping a shape an adopter's parser was promised
|
|
15
|
+
* would never appear.
|
|
16
|
+
*/
|
|
17
|
+
import { writeFileSync } from 'node:fs';
|
|
18
|
+
import { buildErrorReport, CODE_REGISTRY, errorDiagnostics, exitCodeForReport, } from '@vibe-agent-toolkit/schema';
|
|
19
|
+
import { isFsFaultError, suppressedFaultsOf, TREE_CLEANUP_INCOMPLETE_CODE } from '@vibe-agent-toolkit/utils';
|
|
20
|
+
import { parse as parseYaml } from 'yaml';
|
|
21
|
+
import { artifactShapeFor, exitCodeForExternal, reportShapeFor, } from '../report-schemas.js';
|
|
22
|
+
import { errorMessageOf, refusalCodeOf, withFsFaultRemedy } from './command-refusal.js';
|
|
23
|
+
import { debugDiagnosticsEnabled } from './debug-diagnostics.js';
|
|
24
|
+
import { renderYamlDocument, writeStdoutSync } from './output.js';
|
|
25
|
+
import { withRunIntegrity } from './run-integrity.js';
|
|
26
|
+
/** One finding as a compiler-style line: `location:line:column: severity: message [code]`. */
|
|
27
|
+
function findingLine(finding) {
|
|
28
|
+
const anchor = [finding.location, finding.line, finding.column].filter((part) => part !== undefined).join(':');
|
|
29
|
+
const line = `${finding.severity}: ${finding.message} [${finding.code}]`;
|
|
30
|
+
return anchor === '' ? line : `${anchor}: ${line}`;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The generic `--format text` rendering: one line per finding, then the status
|
|
34
|
+
* line with the counts and the denominator.
|
|
35
|
+
*/
|
|
36
|
+
function renderReportText(report, unit) {
|
|
37
|
+
const { errors, warnings, info } = report.summary;
|
|
38
|
+
const lines = report.findings.map(findingLine);
|
|
39
|
+
if (report.status === 'error')
|
|
40
|
+
lines.push(`error: ${report.error.message} [${report.error.code}]`);
|
|
41
|
+
lines.push(`status: ${report.status} — ${errors} errors, ${warnings} warnings, ${info} info (examined ${report.examined} ${unit})`);
|
|
42
|
+
return `${lines.join('\n')}\n`;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Write `document` in a structured format — `text` has no structure, so it is YAML.
|
|
46
|
+
*
|
|
47
|
+
* YAML opens with `---` and has NO trailing marker: `---` opens a document, so a
|
|
48
|
+
* trailer made every stdout a two-document stream a plain `YAML.parse()` refused.
|
|
49
|
+
*
|
|
50
|
+
* The ordinary stream write, not {@link writeStdoutSync}: a document follows
|
|
51
|
+
* progress written through `console.log`, and a synchronous fd-1 write would
|
|
52
|
+
* jump ahead of anything still buffered there. `makeStdioBlocking()` at startup
|
|
53
|
+
* makes both channels synchronous, so nothing is lost at `process.exit`.
|
|
54
|
+
*/
|
|
55
|
+
function writeStructured(document, format) {
|
|
56
|
+
process.stdout.write(format === 'json' ? `${JSON.stringify(document, null, 2)}\n` : `---\n${renderYamlDocument(document)}`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The document a report verb publishes, without writing it: the run-integrity
|
|
60
|
+
* refusal its registered denominator declares, then its published schema.
|
|
61
|
+
*
|
|
62
|
+
* For a lane that needs the published document before writing it — a command
|
|
63
|
+
* that warns on stderr with the refusal the writer adds. {@link writeDocument}
|
|
64
|
+
* goes through it too. (A phase of `vat build` / `validate` / `verify` hands
|
|
65
|
+
* back its report BEFORE this pass: the orchestrator judges zero examined on
|
|
66
|
+
* the whole run.)
|
|
67
|
+
*
|
|
68
|
+
* @param verb - The registered verb
|
|
69
|
+
* @param report - The document as the verb built it
|
|
70
|
+
* @returns The document as published
|
|
71
|
+
* @throws When the verb is unregistered or its schema rejects the document (a defect)
|
|
72
|
+
*/
|
|
73
|
+
export function publishedReport(verb, report) {
|
|
74
|
+
const entry = reportShapeFor(verb);
|
|
75
|
+
const published = withRunIntegrity(report, entry.examined);
|
|
76
|
+
entry.schema.parse(published);
|
|
77
|
+
return published;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Publish a report verb's document.
|
|
81
|
+
*
|
|
82
|
+
* @param verb - The registered verb, as typed after `vat`
|
|
83
|
+
* @param report - The document as the verb built it
|
|
84
|
+
* @param format - How to render it
|
|
85
|
+
* @returns The document actually written — after the run-integrity refusal
|
|
86
|
+
* @throws When the verb is unregistered or its schema rejects the document (a defect)
|
|
87
|
+
*/
|
|
88
|
+
export function writeDocument(verb, report, format) {
|
|
89
|
+
const entry = reportShapeFor(verb);
|
|
90
|
+
const written = publishedReport(verb, report);
|
|
91
|
+
if (format === 'text') {
|
|
92
|
+
const text = entry.renderText === undefined
|
|
93
|
+
? renderReportText(written, entry.examined.unit)
|
|
94
|
+
: entry.renderText(written);
|
|
95
|
+
if (text !== '')
|
|
96
|
+
process.stdout.write(text);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
writeStructured(written, format);
|
|
100
|
+
}
|
|
101
|
+
return written;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Publish a report verb's document and end on the code it derives.
|
|
105
|
+
*
|
|
106
|
+
* @param verb - The registered verb
|
|
107
|
+
* @param report - The document as the verb built it
|
|
108
|
+
* @param format - How to render it
|
|
109
|
+
*/
|
|
110
|
+
export function endWithReport(verb, report, format) {
|
|
111
|
+
process.exit(exitCodeForReport(writeDocument(verb, report, format)));
|
|
112
|
+
}
|
|
113
|
+
/** The explicit "nothing finished" — spelled out at the call site, never defaulted. */
|
|
114
|
+
export const NOTHING_FINISHED = Object.freeze({ examined: 0, findings: [], data: null });
|
|
115
|
+
/**
|
|
116
|
+
* Publish the envelope's error branch — the run could not do its job — with
|
|
117
|
+
* whatever finished, and end on `ERROR`.
|
|
118
|
+
*
|
|
119
|
+
* The message also goes to stderr, where a human reads it; `INTERNAL_ERROR`
|
|
120
|
+
* adds the stack, since that one is VAT's defect to report, and under
|
|
121
|
+
* `--debug` every refusal does — the flag exists to name the throw site.
|
|
122
|
+
*
|
|
123
|
+
* @param verb - The registered verb
|
|
124
|
+
* @param code - Which refusal: `USAGE_INVALID` for the invocation's mistake,
|
|
125
|
+
* `INPUT_UNREADABLE` for an input that cannot be read, `INTERNAL_ERROR` only
|
|
126
|
+
* for a failure VAT did not anticipate
|
|
127
|
+
* @param error - The thrown value, or the message
|
|
128
|
+
* @param format - How to render the document
|
|
129
|
+
* @param gate - The gate the run was judged by
|
|
130
|
+
* @param finished - The work that finished, or {@link NOTHING_FINISHED}
|
|
131
|
+
*/
|
|
132
|
+
export function endWithRefusal(verb, code, error, format, gate, finished) {
|
|
133
|
+
process.exit(exitCodeForReport(writeDocument(verb, refusalReport(code, error, gate, finished), format)));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* A refusal's human half: its message on stderr — the code's own description
|
|
137
|
+
* when the thrown value carries none — plus the stack for a VAT defect, or for
|
|
138
|
+
* any refusal under `--debug`, which exists to name the throw site.
|
|
139
|
+
*
|
|
140
|
+
* @returns The message the published document carries
|
|
141
|
+
*/
|
|
142
|
+
function announceRefusal(code, error) {
|
|
143
|
+
const raw = errorMessageOf(error);
|
|
144
|
+
const message = raw === '' ? CODE_REGISTRY[code].description : withFsFaultRemedy(raw, error);
|
|
145
|
+
process.stderr.write(`${message}\n`);
|
|
146
|
+
if (code === 'INTERNAL_ERROR' || debugDiagnosticsEnabled())
|
|
147
|
+
process.stderr.write(`${errorDiagnostics(error)}\n`);
|
|
148
|
+
return message;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* The envelope's error branch for a refusal, with its human half already on
|
|
152
|
+
* stderr — what {@link endWithRefusal} writes, for the lane that hands the
|
|
153
|
+
* report on instead (a phase an orchestrator folds, or an orchestrator's own
|
|
154
|
+
* refusal).
|
|
155
|
+
*
|
|
156
|
+
* @param code - Which refusal (see {@link endWithRefusal})
|
|
157
|
+
* @param error - The thrown value, or the message
|
|
158
|
+
* @param gate - The gate the run was judged by
|
|
159
|
+
* @param finished - The work that finished, or {@link NOTHING_FINISHED}
|
|
160
|
+
* @returns The error report, not yet published
|
|
161
|
+
*/
|
|
162
|
+
export function refusalReport(code, error, gate, finished) {
|
|
163
|
+
const message = announceRefusal(code, error);
|
|
164
|
+
return buildErrorReport({
|
|
165
|
+
error: { code, message },
|
|
166
|
+
gate,
|
|
167
|
+
examined: finished.examined,
|
|
168
|
+
findings: [...finished.findings, ...leftoverFindingsOf(error)],
|
|
169
|
+
data: finished.data,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* What the failure path could not clean up — a temporary directory, a staged tree —
|
|
174
|
+
* recorded beside the thrown error (`suppressedFaultsOf`), as warnings naming each.
|
|
175
|
+
* Recorded beside, never on its cause chain: a leftover is never the run's refusal.
|
|
176
|
+
*/
|
|
177
|
+
export function leftoverFindingsOf(error) {
|
|
178
|
+
return suppressedFaultsOf(error).map((fault) => {
|
|
179
|
+
process.stderr.write(`warning: ${errorMessageOf(fault)}\n`);
|
|
180
|
+
return leftoverIssueOf(fault);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* The {@link leftoverIssue} a failure to remove something stands for: its message, and — for a
|
|
185
|
+
* classified fault — the path it names (the entry left).
|
|
186
|
+
*
|
|
187
|
+
* @param fault - What the removal threw: a parked entry an uninstall or a clear could not delete
|
|
188
|
+
* (`applyTreePlanOrLeftover`'s `leftover`), or a suppressed fault beside a refusal
|
|
189
|
+
*/
|
|
190
|
+
export function leftoverIssueOf(fault) {
|
|
191
|
+
return leftoverIssue(errorMessageOf(fault), isFsFaultError(fault) ? fault.path : undefined);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Something a run made and could not remove — a temporary directory, a staged or parked tree —
|
|
195
|
+
* as the ONE warning every lane names it with ({@link TREE_CLEANUP_INCOMPLETE_CODE}), whether the
|
|
196
|
+
* run then refused or finished.
|
|
197
|
+
*
|
|
198
|
+
* @param message - What was left, and why it stayed
|
|
199
|
+
* @param path - The entry left, when known: its `link`
|
|
200
|
+
*/
|
|
201
|
+
export function leftoverIssue(message, path) {
|
|
202
|
+
return {
|
|
203
|
+
code: TREE_CLEANUP_INCOMPLETE_CODE,
|
|
204
|
+
severity: 'warning',
|
|
205
|
+
message,
|
|
206
|
+
// `link`, never `location`: a report's location is project-relative, and this is an absolute path (a temp dir, a staged tree).
|
|
207
|
+
...(path === undefined ? {} : { link: path }),
|
|
208
|
+
fix: 'Remove what the message names yourself, making it writable first if the OS refused; nothing VAT made uses it.',
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Read a report verb's document another `vat` process already wrote — a
|
|
213
|
+
* supervised child — checking it IS that verb's document: parsed in the format
|
|
214
|
+
* it was asked for and validated against the published schema.
|
|
215
|
+
*
|
|
216
|
+
* @param verb - The registered verb whose document `text` claims to be
|
|
217
|
+
* @param text - The document as the child wrote it
|
|
218
|
+
* @param format - The format the child was asked for
|
|
219
|
+
* @returns The text with the report it parses to, for {@link endWithForwardedDocument}
|
|
220
|
+
* @throws When `text` does not parse, or its schema rejects it — a truncated
|
|
221
|
+
* write among them, which the caller decides how to report
|
|
222
|
+
*/
|
|
223
|
+
export function readForwardedDocument(verb, text, format) {
|
|
224
|
+
const parsed = format === 'json' ? JSON.parse(text) : parseYaml(text);
|
|
225
|
+
reportShapeFor(verb).schema.parse(parsed);
|
|
226
|
+
return { text, report: parsed };
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Publish a forwarded document byte for byte and end on the code the document
|
|
230
|
+
* derives — never on the code the process that wrote it happened to exit with.
|
|
231
|
+
*
|
|
232
|
+
* @param document - What {@link readForwardedDocument} accepted
|
|
233
|
+
*/
|
|
234
|
+
export function endWithForwardedDocument(document) {
|
|
235
|
+
writeStdoutSync(document.text);
|
|
236
|
+
process.exit(exitCodeForReport(document.report));
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Publish an externally owned payload verbatim and end on the code its
|
|
240
|
+
* registered adapter maps `outcome` to.
|
|
241
|
+
*
|
|
242
|
+
* @param verb - A verb of an `external` entry
|
|
243
|
+
* @param payload - The payload as its owner shaped it
|
|
244
|
+
* @param format - How to render it (`text` renders YAML)
|
|
245
|
+
* @param outcome - What the external write did
|
|
246
|
+
*/
|
|
247
|
+
export function writeExternalDocument(verb, payload, format, outcome) {
|
|
248
|
+
writeStructured(payload, format);
|
|
249
|
+
process.exit(exitCodeForExternal(verb, outcome));
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* End an external verb whose run threw: publish `{ error: { code, message } }`
|
|
253
|
+
* — the one failure payload every external verb shares, since the payload it
|
|
254
|
+
* would have passed through never arrived — and end on the code its adapter
|
|
255
|
+
* maps `failed` to. The code is the thrown value's own ({@link refusalCodeOf}):
|
|
256
|
+
* a missing key or a bad argument is `USAGE_INVALID`, a refused or unanswered
|
|
257
|
+
* API call `EXTERNAL_API_FAILED`, anything uncoded `INTERNAL_ERROR`.
|
|
258
|
+
*
|
|
259
|
+
* @param verb - A verb of an `external` entry
|
|
260
|
+
* @param error - What the run threw
|
|
261
|
+
* @param format - How to render the payload
|
|
262
|
+
*/
|
|
263
|
+
export function endWithExternalRefusal(verb, error, format) {
|
|
264
|
+
const code = refusalCodeOf(error);
|
|
265
|
+
const message = announceRefusal(code, error);
|
|
266
|
+
writeExternalDocument(verb, { error: { code, message } }, format, { kind: 'failed', cause: message });
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* The one serializer for a `legacy` entry's document: unvalidated, and typed
|
|
270
|
+
* to the legacy verbs so no report verb can take this path.
|
|
271
|
+
*
|
|
272
|
+
* @param _verb - A verb of a `legacy` entry
|
|
273
|
+
* @param document - The legacy document
|
|
274
|
+
* @param format - How to render it
|
|
275
|
+
* @param text - The verb's own `--format text` rendering, written as-is; with
|
|
276
|
+
* none (a refusal has no human rendering of its own) `text` renders YAML.
|
|
277
|
+
* Required, so a caller says which it means
|
|
278
|
+
*/
|
|
279
|
+
export function writeLegacyDocument(_verb, document, format, text) {
|
|
280
|
+
// The verb's TYPE is the guarantee — only a legacy verb compiles here.
|
|
281
|
+
if (format === 'text' && text !== undefined) {
|
|
282
|
+
// Synchronously, as `claude context` always wrote it: its text can run long and the verb exits straight after.
|
|
283
|
+
writeStdoutSync(text);
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
writeStructured(document, format);
|
|
287
|
+
}
|
|
288
|
+
/** Validate a payload against its artifact entry's schema, when it declares one. */
|
|
289
|
+
function validatedArtifact(name, channel, payload) {
|
|
290
|
+
artifactShapeFor(name, channel).schema?.parse(payload);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Publish a stdout artifact — a config to paste, a file's text — and nothing else.
|
|
294
|
+
*
|
|
295
|
+
* @param name - The registered stdout artifact
|
|
296
|
+
* @param payload - The artifact; a string for `raw`
|
|
297
|
+
* @param format - `yaml` / `json`, or `raw` to write a string as-is
|
|
298
|
+
*/
|
|
299
|
+
export function writeArtifact(name, payload, format) {
|
|
300
|
+
validatedArtifact(name, 'stdout', payload);
|
|
301
|
+
if (format === 'raw') {
|
|
302
|
+
process.stdout.write(String(payload));
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
writeStructured(payload, format);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Write a registered file artifact: YAML for a `.yaml`/`.yml` path, JSON otherwise.
|
|
309
|
+
*
|
|
310
|
+
* @param name - The registered file artifact
|
|
311
|
+
* @param path - Where to write it
|
|
312
|
+
* @param payload - The artifact
|
|
313
|
+
*/
|
|
314
|
+
export function writeArtifactFile(name, path, payload) {
|
|
315
|
+
validatedArtifact(name, 'file', payload);
|
|
316
|
+
const text = /\.ya?ml$/.test(path) ? renderYamlDocument(payload) : `${JSON.stringify(payload, null, 2)}\n`;
|
|
317
|
+
writeFileSync(path, text, 'utf-8');
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=document-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-writer.js","sourceRoot":"","sources":["../../src/utils/document-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAMlB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAC7G,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GAMf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,8FAA8F;AAC9F,SAAS,WAAW,CAAC,OAAgB;IACnC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/G,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC;IACzE,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,IAAI,EAAE,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,MAAuB,EAAE,IAAY;IAC7D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IACnG,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,MAAM,MAAM,YAAY,QAAQ,cAAc,IAAI,mBAAmB,MAAM,CAAC,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC;IACpI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,eAAe,CAAC,QAAiB,EAAE,MAAsB;IAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9H,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAAI,IAAgB,EAAE,MAAiB;IACpE,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3D,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAI,IAAgB,EAAE,MAAiB,EAAE,MAAsB;IAC1F,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,KAAK,SAAS;YACzC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAChD,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAI,IAAgB,EAAE,MAAiB,EAAE,MAAsB;IAC1F,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AASD,uFAAuF;AACvF,MAAM,CAAC,MAAM,gBAAgB,GAAiB,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvG;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAgB,EAChB,IAAiB,EACjB,KAAc,EACd,MAAsB,EACtB,IAAU,EACV,QAAsB;IAEtB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,IAAiB,EAAE,KAAc;IACxD,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,gBAAgB,IAAI,uBAAuB,EAAE;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,IAAiB,EAAE,KAAc,EAAE,IAAU,EAAE,QAAsB;IACjG,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,gBAAgB,CAAC;QACtB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QACxB,IAAI;QACJ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9F,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAAwB;IACrE,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,SAAS;QACnB,OAAO;QACP,+HAA+H;QAC/H,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7C,GAAG,EAAE,+GAA+G;KACrH,CAAC;AACJ,CAAC;AAQD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAgB,EAAE,IAAY,EAAE,MAAuC;IAC3G,MAAM,MAAM,GAAY,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/E,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAyB,EAAE,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAA2B;IAClE,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAkB,EAAE,OAAgB,EAAE,MAAsB,EAAE,OAAwB;IAC1H,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAkB,EAAE,KAAc,EAAE,MAAsB;IAC/F,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,qBAAqB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AACxG,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAiB,EAAE,QAAiB,EAAE,MAAsB,EAAE,IAAwB;IACxH,uEAAuE;IACvE,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5C,+GAA+G;QAC/G,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IACD,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,oFAAoF;AACpF,SAAS,iBAAiB,CAAC,IAAY,EAAE,OAA0B,EAAE,OAAgB;IACnF,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAgB,EAAE,MAA+C;IAC3G,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IACD,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAAY,EAAE,OAAgB;IAC5E,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IAC3G,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -24,8 +24,8 @@ export declare function loadVerboseHelp(section?: string): string;
|
|
|
24
24
|
* handed to the pipe, so `process.exit` has nothing left to lose.
|
|
25
25
|
*
|
|
26
26
|
* The loop itself now lives in `output.ts` as `writeStdoutSync`, because the very
|
|
27
|
-
* same defect was later found in
|
|
28
|
-
* was being truncated at one pipe buffer. Two copies of this reasoning is exactly
|
|
27
|
+
* same defect was later found in the command-document writer — every command's
|
|
28
|
+
* YAML summary was being truncated at one pipe buffer. Two copies of this reasoning is exactly
|
|
29
29
|
* how the second lane went unfixed for so long, so there is one.
|
|
30
30
|
*/
|
|
31
31
|
export declare function writeHelpSync(content: string): void;
|
|
@@ -52,8 +52,8 @@ Please report this issue at: https://github.com/jdutton/vibe-agent-toolkit/issue
|
|
|
52
52
|
* handed to the pipe, so `process.exit` has nothing left to lose.
|
|
53
53
|
*
|
|
54
54
|
* The loop itself now lives in `output.ts` as `writeStdoutSync`, because the very
|
|
55
|
-
* same defect was later found in
|
|
56
|
-
* was being truncated at one pipe buffer. Two copies of this reasoning is exactly
|
|
55
|
+
* same defect was later found in the command-document writer — every command's
|
|
56
|
+
* YAML summary was being truncated at one pipe buffer. Two copies of this reasoning is exactly
|
|
57
57
|
* how the second lane went unfixed for so long, so there is one.
|
|
58
58
|
*/
|
|
59
59
|
export function writeHelpSync(content) {
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the flat-skill install verbs — `vat claude plugin install` (its skill lanes), `vat agent install` and
|
|
3
|
+
* `vat skills install` — share about planning an install onto the tree-change primitive: the
|
|
4
|
+
* one change a skill copy is, the one link policy of a tree an install copies from, the one
|
|
5
|
+
* refusal an occupied destination is, and the one way an archive's `$TMPDIR` staging is disposed of.
|
|
6
|
+
*/
|
|
7
|
+
import { type SkillZipEntry } from '@vibe-agent-toolkit/agent-skills';
|
|
8
|
+
import type { ValidationIssue } from '@vibe-agent-toolkit/schema';
|
|
9
|
+
import { type FsSide, type LinkPolicy, type Ownership, type TreeChange } from '@vibe-agent-toolkit/utils';
|
|
10
|
+
/** The ownership of a skill destination: `--force` takes whatever is there; otherwise it must be free. */
|
|
11
|
+
export declare function skillOwnership(force: boolean): Ownership;
|
|
12
|
+
/**
|
|
13
|
+
* The link policy of a tree an install copies from, by the side it is on.
|
|
14
|
+
*
|
|
15
|
+
* - `environment` — VAT's own staging, holding what the archive module extracted: files and
|
|
16
|
+
* directories, never a link. So a link found there is `refuse`d — never followed, never
|
|
17
|
+
* copied — and an archive lane cannot install what its archive did not hold.
|
|
18
|
+
* - anything else — a directory the operator named. Its links are kept as links (`preserve`),
|
|
19
|
+
* each already held inside the tree it is copied with ({@link installUnit}).
|
|
20
|
+
*/
|
|
21
|
+
export declare function installLinks(side: FsSide): LinkPolicy;
|
|
22
|
+
/** Where an install reads from: the directory the operator named (or VAT's staging), and the side it is on. */
|
|
23
|
+
interface InstallSourceTree {
|
|
24
|
+
readonly root: string;
|
|
25
|
+
readonly side: FsSide;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* One tree an install is about to copy — a skill, a marketplace, a plugin — as the directory to
|
|
29
|
+
* copy it from, refused when copying it would install something its source does not hold.
|
|
30
|
+
*
|
|
31
|
+
* A staged tree (`environment`) is returned as it is: it holds no link ({@link installLinks}).
|
|
32
|
+
* A tree in the operator's own directory is judged twice, because a copy keeps its links as
|
|
33
|
+
* links, verbatim:
|
|
34
|
+
*
|
|
35
|
+
* - `dir` itself may be a link (a skill directory linked into `dist/skills/`), but only to
|
|
36
|
+
* somewhere inside the directory the operator named;
|
|
37
|
+
* - no link inside it may lead outside it — `keys -> ../../../secret` stays inside the package
|
|
38
|
+
* it was written in and points at the installing user's own files once it is installed.
|
|
39
|
+
*
|
|
40
|
+
* @param tree - The directory the operator named, and its side
|
|
41
|
+
* @param dir - The tree to copy: `tree.root` or a directory found under it
|
|
42
|
+
* @param what - What the tree is, for the refusal: `the skill directory`
|
|
43
|
+
* @returns The directory to copy from: `dir`, or for an operator's tree its real path, so the copy's root is never a link
|
|
44
|
+
* @throws VatError `COPY_LINK_ESCAPES_SOURCE` (`INPUT_UNREADABLE`) naming the link; FsFaultError on
|
|
45
|
+
* the tree's side when the OS refuses to examine it
|
|
46
|
+
*/
|
|
47
|
+
export declare function installUnit(tree: InstallSourceTree, dir: string, what: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* One skill copied whole into place, every read of `source` classified on `side` — the
|
|
50
|
+
* operator's tree (`source`) or VAT's own staging an archive was extracted into (`environment`)
|
|
51
|
+
* — and its links held to that side's policy ({@link installLinks}).
|
|
52
|
+
*/
|
|
53
|
+
export declare function skillCopyChange(skill: {
|
|
54
|
+
readonly name: string;
|
|
55
|
+
readonly source: string;
|
|
56
|
+
readonly dest: string;
|
|
57
|
+
}, side: FsSide, force: boolean): TreeChange;
|
|
58
|
+
/**
|
|
59
|
+
* Where the skill is inside a skill ZIP, by the ONE layout rule every verb that takes one shares
|
|
60
|
+
* (`skillZipLayout`: `SKILL.md` at the top level, or directly inside the archive's single
|
|
61
|
+
* top-level folder) — or the refusal of an archive that is neither. The archive is the input, so
|
|
62
|
+
* the refusal is `INPUT_UNREADABLE`, decided from the entry list before anything is installed or sent.
|
|
63
|
+
*
|
|
64
|
+
* @param zipPath - The archive the operator named, for the message
|
|
65
|
+
* @param entries - Every entry of the archive, as `extractArchive` / `openArchive` list them
|
|
66
|
+
* @returns The folder the skill is in, relative to the archive's top level: `''`, or the one top-level folder
|
|
67
|
+
* @throws CommandRefusalError `INPUT_UNREADABLE`
|
|
68
|
+
*/
|
|
69
|
+
export declare function requireSkillZipLayout(zipPath: string, entries: readonly SkillZipEntry[]): string;
|
|
70
|
+
/**
|
|
71
|
+
* Extract a skill ZIP into `into`, a fresh staging directory, and answer where the skill is in it.
|
|
72
|
+
* The ONE extraction of a skill ZIP, for every verb that takes one: held to the archive policy and
|
|
73
|
+
* limits, to the one layout rule ({@link requireSkillZipLayout}), and written WITHOUT what the
|
|
74
|
+
* host that made the archive added beside the skill (`hostAddedToSkillZip`: a top-level
|
|
75
|
+
* `__MACOSX/`, a `.DS_Store`) — the layout rule does not count those, so nothing installs or
|
|
76
|
+
* sends them.
|
|
77
|
+
*
|
|
78
|
+
* @param zipPath - The archive the operator named
|
|
79
|
+
* @param into - VAT's staging directory to extract into
|
|
80
|
+
* @returns The skill's directory: `into`, or the archive's one top-level folder under it
|
|
81
|
+
* @throws ArchiveRefusedError or CommandRefusalError (`INPUT_UNREADABLE`) for an archive VAT does not
|
|
82
|
+
* take, with nothing written; FsFaultError as `extractArchive` raises it
|
|
83
|
+
*/
|
|
84
|
+
export declare function extractSkillZip(zipPath: string, into: string): Promise<string>;
|
|
85
|
+
/** A destination taken without `--force`, as the invocation's refusal saying how to proceed; anything else as itself. */
|
|
86
|
+
export declare function occupiedRefusal(error: unknown): unknown;
|
|
87
|
+
/**
|
|
88
|
+
* Run `work` in a fresh staging directory under `$TMPDIR` (`withTempDir`), disposed of after. A
|
|
89
|
+
* directory that will not go once `work` finished is not a refusal of the install it outlived:
|
|
90
|
+
* it is handed to `onLeftover` as the warning naming it. A failure of `work` is rethrown, the
|
|
91
|
+
* staging's own leftover recorded beside it (`suppressedFaultsOf`).
|
|
92
|
+
*
|
|
93
|
+
* @param prefix - The `mkdtemp` prefix, so a leaked directory names its owner
|
|
94
|
+
* @param work - Given the staging directory
|
|
95
|
+
* @param onLeftover - Given the warning for a staging directory that outlived a finished `work`
|
|
96
|
+
*/
|
|
97
|
+
export declare function inStaging(prefix: string, work: (dir: string) => Promise<void>, onLeftover: (issue: ValidationIssue) => void): Promise<void>;
|
|
98
|
+
export {};
|
|
99
|
+
//# sourceMappingURL=install-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-plan.d.ts","sourceRoot":"","sources":["../../src/utils/install-plan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAuB,KAAK,aAAa,EAAkB,MAAM,kCAAkC,CAAC;AAC3G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAEL,KAAK,MAAM,EAGX,KAAK,UAAU,EAEf,KAAK,SAAS,EAKd,KAAK,UAAU,EAKhB,MAAM,2BAA2B,CAAC;AAMnC,0GAA0G;AAC1G,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAExD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAErD;AAED,+GAA+G;AAC/G,UAAU,iBAAiB;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBtF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,UAAU,CAQ1J;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAIhG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpF;AAED,yHAAyH;AACzH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGvD;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAOjJ"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the flat-skill install verbs — `vat claude plugin install` (its skill lanes), `vat agent install` and
|
|
3
|
+
* `vat skills install` — share about planning an install onto the tree-change primitive: the
|
|
4
|
+
* one change a skill copy is, the one link policy of a tree an install copies from, the one
|
|
5
|
+
* refusal an occupied destination is, and the one way an archive's `$TMPDIR` staging is disposed of.
|
|
6
|
+
*/
|
|
7
|
+
import { hostAddedToSkillZip, skillZipLayout } from '@vibe-agent-toolkit/agent-skills';
|
|
8
|
+
import { CopyLinkEscapesSourceError, HOST_PATH_FLAVOR, isVatError, normalizePath, refuseEscapingLinks, safePath, toForwardSlash, TREE_DEST_OCCUPIED_CODE, treeChain, treeContainment, withFsFaultSync, withTempDir, } from '@vibe-agent-toolkit/utils';
|
|
9
|
+
import { ARCHIVE_LIMITS, extractArchive } from '@vibe-agent-toolkit/utils/archive';
|
|
10
|
+
import { CommandRefusalError, errorMessageOf } from './command-refusal.js';
|
|
11
|
+
import { leftoverIssue } from './document-writer.js';
|
|
12
|
+
/** The ownership of a skill destination: `--force` takes whatever is there; otherwise it must be free. */
|
|
13
|
+
export function skillOwnership(force) {
|
|
14
|
+
return force ? { kind: 'force' } : { kind: 'must-be-free' };
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The link policy of a tree an install copies from, by the side it is on.
|
|
18
|
+
*
|
|
19
|
+
* - `environment` — VAT's own staging, holding what the archive module extracted: files and
|
|
20
|
+
* directories, never a link. So a link found there is `refuse`d — never followed, never
|
|
21
|
+
* copied — and an archive lane cannot install what its archive did not hold.
|
|
22
|
+
* - anything else — a directory the operator named. Its links are kept as links (`preserve`),
|
|
23
|
+
* each already held inside the tree it is copied with ({@link installUnit}).
|
|
24
|
+
*/
|
|
25
|
+
export function installLinks(side) {
|
|
26
|
+
return side === 'environment' ? 'refuse' : 'preserve';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* One tree an install is about to copy — a skill, a marketplace, a plugin — as the directory to
|
|
30
|
+
* copy it from, refused when copying it would install something its source does not hold.
|
|
31
|
+
*
|
|
32
|
+
* A staged tree (`environment`) is returned as it is: it holds no link ({@link installLinks}).
|
|
33
|
+
* A tree in the operator's own directory is judged twice, because a copy keeps its links as
|
|
34
|
+
* links, verbatim:
|
|
35
|
+
*
|
|
36
|
+
* - `dir` itself may be a link (a skill directory linked into `dist/skills/`), but only to
|
|
37
|
+
* somewhere inside the directory the operator named;
|
|
38
|
+
* - no link inside it may lead outside it — `keys -> ../../../secret` stays inside the package
|
|
39
|
+
* it was written in and points at the installing user's own files once it is installed.
|
|
40
|
+
*
|
|
41
|
+
* @param tree - The directory the operator named, and its side
|
|
42
|
+
* @param dir - The tree to copy: `tree.root` or a directory found under it
|
|
43
|
+
* @param what - What the tree is, for the refusal: `the skill directory`
|
|
44
|
+
* @returns The directory to copy from: `dir`, or for an operator's tree its real path, so the copy's root is never a link
|
|
45
|
+
* @throws VatError `COPY_LINK_ESCAPES_SOURCE` (`INPUT_UNREADABLE`) naming the link; FsFaultError on
|
|
46
|
+
* the tree's side when the OS refuses to examine it
|
|
47
|
+
*/
|
|
48
|
+
export function installUnit(tree, dir, what) {
|
|
49
|
+
if (tree.side === 'environment')
|
|
50
|
+
return dir;
|
|
51
|
+
return withFsFaultSync({ side: tree.side, origin: 'content', action: `examine the links of ${what} ${dir}`, path: dir }, () => {
|
|
52
|
+
// `dir` may itself be a link, or below one: its chain is read by text first (the one resolver),
|
|
53
|
+
// so the kernel never resolves a link to a network path, or one leaving the tree, to answer this.
|
|
54
|
+
if (treeChain(tree.root, dir, HOST_PATH_FLAVOR).kind === 'refused')
|
|
55
|
+
throw new CopyLinkEscapesSourceError(dir, tree.root);
|
|
56
|
+
// An absent `dir` is not this check's to name: resolving it below raises the OS's own answer.
|
|
57
|
+
if (treeContainment(tree.root, dir) === 'outside')
|
|
58
|
+
throw new CopyLinkEscapesSourceError(dir, tree.root);
|
|
59
|
+
const real = toForwardSlash(normalizePath(dir, tree.root));
|
|
60
|
+
refuseEscapingLinks({
|
|
61
|
+
root: real,
|
|
62
|
+
placement: 'relocated',
|
|
63
|
+
side: tree.side,
|
|
64
|
+
flavor: HOST_PATH_FLAVOR,
|
|
65
|
+
tree: `${what} ${dir}`,
|
|
66
|
+
within: 'it',
|
|
67
|
+
consequence: 'An install keeps a link as a link, so once installed this one would point at files its source does not hold',
|
|
68
|
+
});
|
|
69
|
+
return real;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* One skill copied whole into place, every read of `source` classified on `side` — the
|
|
74
|
+
* operator's tree (`source`) or VAT's own staging an archive was extracted into (`environment`)
|
|
75
|
+
* — and its links held to that side's policy ({@link installLinks}).
|
|
76
|
+
*/
|
|
77
|
+
export function skillCopyChange(skill, side, force) {
|
|
78
|
+
return {
|
|
79
|
+
op: 'replace',
|
|
80
|
+
dest: skill.dest,
|
|
81
|
+
ownership: skillOwnership(force),
|
|
82
|
+
fill: { from: 'copy', source: skill.source, side, links: installLinks(side) },
|
|
83
|
+
label: `skill ${skill.name}`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Where the skill is inside a skill ZIP, by the ONE layout rule every verb that takes one shares
|
|
88
|
+
* (`skillZipLayout`: `SKILL.md` at the top level, or directly inside the archive's single
|
|
89
|
+
* top-level folder) — or the refusal of an archive that is neither. The archive is the input, so
|
|
90
|
+
* the refusal is `INPUT_UNREADABLE`, decided from the entry list before anything is installed or sent.
|
|
91
|
+
*
|
|
92
|
+
* @param zipPath - The archive the operator named, for the message
|
|
93
|
+
* @param entries - Every entry of the archive, as `extractArchive` / `openArchive` list them
|
|
94
|
+
* @returns The folder the skill is in, relative to the archive's top level: `''`, or the one top-level folder
|
|
95
|
+
* @throws CommandRefusalError `INPUT_UNREADABLE`
|
|
96
|
+
*/
|
|
97
|
+
export function requireSkillZipLayout(zipPath, entries) {
|
|
98
|
+
const layout = skillZipLayout(entries);
|
|
99
|
+
if ('refused' in layout)
|
|
100
|
+
throw new CommandRefusalError('INPUT_UNREADABLE', `${zipPath} is not a skill ZIP, nothing was changed: ${layout.refused}.`);
|
|
101
|
+
return layout.root;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Extract a skill ZIP into `into`, a fresh staging directory, and answer where the skill is in it.
|
|
105
|
+
* The ONE extraction of a skill ZIP, for every verb that takes one: held to the archive policy and
|
|
106
|
+
* limits, to the one layout rule ({@link requireSkillZipLayout}), and written WITHOUT what the
|
|
107
|
+
* host that made the archive added beside the skill (`hostAddedToSkillZip`: a top-level
|
|
108
|
+
* `__MACOSX/`, a `.DS_Store`) — the layout rule does not count those, so nothing installs or
|
|
109
|
+
* sends them.
|
|
110
|
+
*
|
|
111
|
+
* @param zipPath - The archive the operator named
|
|
112
|
+
* @param into - VAT's staging directory to extract into
|
|
113
|
+
* @returns The skill's directory: `into`, or the archive's one top-level folder under it
|
|
114
|
+
* @throws ArchiveRefusedError or CommandRefusalError (`INPUT_UNREADABLE`) for an archive VAT does not
|
|
115
|
+
* take, with nothing written; FsFaultError as `extractArchive` raises it
|
|
116
|
+
*/
|
|
117
|
+
export async function extractSkillZip(zipPath, into) {
|
|
118
|
+
const entries = await extractArchive({ file: zipPath, side: 'source' }, into, { format: 'zip', limits: ARCHIVE_LIMITS, omit: (entry) => hostAddedToSkillZip(entry.name) });
|
|
119
|
+
return safePath.join(into, requireSkillZipLayout(zipPath, entries));
|
|
120
|
+
}
|
|
121
|
+
/** A destination taken without `--force`, as the invocation's refusal saying how to proceed; anything else as itself. */
|
|
122
|
+
export function occupiedRefusal(error) {
|
|
123
|
+
if (!isVatError(error, TREE_DEST_OCCUPIED_CODE))
|
|
124
|
+
return error;
|
|
125
|
+
return new CommandRefusalError('USAGE_INVALID', `Something already exists where the install goes: ${error.message}. Use --force to overwrite.`, { cause: error });
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Run `work` in a fresh staging directory under `$TMPDIR` (`withTempDir`), disposed of after. A
|
|
129
|
+
* directory that will not go once `work` finished is not a refusal of the install it outlived:
|
|
130
|
+
* it is handed to `onLeftover` as the warning naming it. A failure of `work` is rethrown, the
|
|
131
|
+
* staging's own leftover recorded beside it (`suppressedFaultsOf`).
|
|
132
|
+
*
|
|
133
|
+
* @param prefix - The `mkdtemp` prefix, so a leaked directory names its owner
|
|
134
|
+
* @param work - Given the staging directory
|
|
135
|
+
* @param onLeftover - Given the warning for a staging directory that outlived a finished `work`
|
|
136
|
+
*/
|
|
137
|
+
export async function inStaging(prefix, work, onLeftover) {
|
|
138
|
+
const { value: stagedIn, leftover } = await withTempDir(prefix, async (dir) => {
|
|
139
|
+
await work(dir);
|
|
140
|
+
return dir;
|
|
141
|
+
});
|
|
142
|
+
if (leftover === undefined)
|
|
143
|
+
return;
|
|
144
|
+
onLeftover(leftoverIssue(`The install is complete, but its staging directory ${stagedIn} could not be removed: ${errorMessageOf(leftover)}`, stagedIn));
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=install-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-plan.js","sourceRoot":"","sources":["../../src/utils/install-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,5 +22,5 @@ import type { ValidationIssue } from '@vibe-agent-toolkit/schema';
|
|
|
22
22
|
* Returns `undefined` when the issue carries no anchor at all, so callers can
|
|
23
23
|
* skip the line entirely rather than print an empty label.
|
|
24
24
|
*/
|
|
25
|
-
export declare function formatIssueAnchor(issue: ValidationIssue): string | undefined;
|
|
25
|
+
export declare function formatIssueAnchor(issue: Pick<ValidationIssue, 'location' | 'line' | 'field'>): string | undefined;
|
|
26
26
|
//# sourceMappingURL=issue-anchor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-anchor.d.ts","sourceRoot":"","sources":["../../src/utils/issue-anchor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"issue-anchor.d.ts","sourceRoot":"","sources":["../../src/utils/issue-anchor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAejH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-anchor.js","sourceRoot":"","sources":["../../src/utils/issue-anchor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"issue-anchor.js","sourceRoot":"","sources":["../../src/utils/issue-anchor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA2D;IAC3F,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,EAAE,CAAC;IAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;IACjE,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,GAAG,WAAW,CAAC,CAAC,CAAE,KAAK,CAAC,QAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7C,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAe,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,KAAe,GAAG,CAAC;IACjG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|