@visulima/vis 1.0.0-alpha.20 → 1.0.0-alpha.21
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/CHANGELOG.md +10 -0
- package/dist/packem_chunks/bin.js +1 -1
- package/index.js +26 -26
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
## @visulima/vis [1.0.0-alpha.21](https://github.com/visulima/visulima/compare/@visulima/vis@1.0.0-alpha.20...@visulima/vis@1.0.0-alpha.21) (2026-05-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Dependencies
|
|
5
|
+
|
|
6
|
+
* **@visulima/tui:** upgraded to 1.0.0-alpha.16
|
|
7
|
+
* **@visulima/cerebro:** upgraded to 3.0.0-alpha.24
|
|
8
|
+
* **@visulima/fs:** upgraded to 5.0.0-alpha.23
|
|
9
|
+
* **@visulima/package:** upgraded to 5.0.0-alpha.22
|
|
10
|
+
|
|
1
11
|
## @visulima/vis [1.0.0-alpha.20](https://github.com/visulima/visulima/compare/@visulima/vis@1.0.0-alpha.19...@visulima/vis@1.0.0-alpha.20) (2026-05-14)
|
|
2
12
|
|
|
3
13
|
### ⚠ BREAKING CHANGES
|
|
@@ -1001,7 +1001,7 @@ To install the missing package${n}, please run the following command:
|
|
|
1001
1001
|
|
|
1002
1002
|
or
|
|
1003
1003
|
|
|
1004
|
-
`),r.postMessage&&(i+=r.postMessage),i},"generateMissingPackagesInstallMessage");var cT=Object.defineProperty,lT=f((e,t)=>cT(e,"name",{value:t,configurable:!0}),"c$t"),uT=Object.defineProperty,N1=lT((e,t)=>uT(e,"name",{value:t,configurable:!0}),"p");const pT=Ze(import.meta.url),js=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,dT=N1(e=>{if(typeof js<"u"&&js.versions&&js.versions.node){const[t,r]=js.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return js.getBuiltinModule(e)}return pT(e)},"__cjs_getBuiltinModule"),{existsSync:Wa,readFileSync:R1}=dT("node:fs");var fT=Object.defineProperty,F1=N1((e,t)=>fT(e,"name",{value:t,configurable:!0}),"i");F1(async e=>{const t=await yo(["lerna.json","turbo.json"],{type:"file",...e&&{cwd:e}});if(t?.endsWith("lerna.json")){const n=await bo(t);if(n&&typeof n=="object"&&!Array.isArray(n)){const i=n;if(i.useWorkspaces||i.packages)return{path:Ge(t),strategy:"lerna"}}}const r=t?.endsWith("turbo.json");try{const{packageManager:n,path:i}=await oT(e);if(["npm","yarn"].includes(n)){const s=C(i,"package.json");if(Wa(s)&&R1(C(i,"package.json"),"utf8").includes("workspaces"))return{path:i,strategy:r?"turbo":n}}else if(n==="pnpm"){const s=C(i,"pnpm-workspace.yaml");if(Wa(s))return{path:i,strategy:r?"turbo":"pnpm"}}}catch(n){if(!(n instanceof Ri))throw n}throw new Error(`No monorepo root could be found upwards from the directory ${e} using lerna, yarn, pnpm, or npm as indicators.`)},"findMonorepoRoot");const L1=F1(e=>{const t=vo(["lerna.json","turbo.json"],{type:"file",...e&&{cwd:e}});if(t?.endsWith("lerna.json")){const n=ke(t);if(n.useWorkspaces||n.packages)return{path:Ge(t),strategy:"lerna"}}const r=t?.endsWith("turbo.json");try{const{packageManager:n,path:i}=aT(e);if(["npm","yarn"].includes(n)){const s=C(i,"package.json");if(Wa(s)&&R1(C(i,"package.json"),"utf8").includes("workspaces"))return{path:i,strategy:r?"turbo":n}}else if(n==="pnpm"){const s=C(i,"pnpm-workspace.yaml");if(Wa(s))return{path:i,strategy:r?"turbo":"pnpm"}}}catch(n){if(!(n instanceof Ri))throw n}throw new Error(`No monorepo root could be found upwards from the directory ${e} using lerna, yarn, pnpm, or npm as indicators.`)},"findMonorepoRootSync");var mT="1.0.0-alpha.19";const Ua={version:mT};var hT=Object.defineProperty,gT=f((e,t)=>hT(e,"name",{value:t,configurable:!0}),"e$_");const yT={argument:{description:"Target selector (same syntax as `vis run`): `build`, `:build`, `~:test`, `#tag:lint`, …",name:"selector",type:String},description:"Show the execution plan for a target without running it",examples:[["vis action-graph build","Print the task plan for `build` on every project"],["vis action-graph :test","Moon-style selector"],["vis action-graph build --json","Emit a JSON description of the plan"],['vis action-graph lint --query "tag=frontend"',"Filter projects by query"]],group:"Workspace",loader:gT(()=>import("./handler.js"),"loader"),name:"action-graph",options:[{defaultValue:!1,description:"Emit JSON instead of ASCII",name:"json",type:Boolean},{description:"Filter matched projects by a query",name:"query",type:String}]};var vT=Object.defineProperty,bT=f((e,t)=>vT(e,"name",{value:t,configurable:!0}),"e$Z");const $T={argument:{description:"Packages to add (e.g., react react-dom)",name:"packages",type:String},description:"Add packages using the detected package manager",examples:[["vis add react react-dom","Add packages"],["vis add -D typescript @types/react","Add as dev dependencies"],["vis add react --filter app","Add to specific workspace package"],["vis add react --to web","Add to one package, auto-conforming the version to existing catalogs / sibling deps"],["vis add -g typescript","Add globally (uses npm)"],["vis add lodash -w","Add to workspace root"],["vis add lodash --no-socket-check","Add without Socket.dev check"],["vis add lodash --no-typosquat-check","Skip typosquat name check"],["vis add lodash --no-marshall-check","Skip the offline marshall pipeline (author, downloads, etc.)"],["vis add lodash --run-scripts","Run lifecycle scripts (opts out of vis's default block-by-default policy)"]],group:"Dependencies",loader:bT(()=>import("./handler16.js"),"loader"),name:"add",options:[{alias:"D",defaultValue:!1,description:"Add as dev dependency",name:"save-dev",type:Boolean},{alias:"E",defaultValue:!1,description:"Save exact version",name:"exact",type:Boolean},{alias:"P",defaultValue:!1,description:"Add as peer dependency",name:"save-peer",type:Boolean},{alias:"O",defaultValue:!1,description:"Add as optional dependency",name:"save-optional",type:Boolean},{alias:"g",defaultValue:!1,description:"Install globally (uses npm)",name:"global",type:Boolean},{alias:"w",defaultValue:!1,description:"Add to workspace root",name:"workspace-root",type:Boolean},{defaultValue:!1,description:"Use workspace protocol (pnpm)",name:"workspace",type:Boolean},{alias:"F",description:"Filter by workspace package name",multiple:!0,name:"filter",type:String},{description:"Target a single workspace package and auto-conform the version to existing catalogs / sibling deps (syncpack#285)",name:"to",type:String},{defaultValue:!1,description:"Skip typosquat name check before adding",name:"no-typosquat-check",type:Boolean},{defaultValue:!1,description:"Skip Socket.dev security check before adding",name:"no-socket-check",type:Boolean},{defaultValue:!1,description:"Skip the offline marshall pipeline (author, provenance, metadata, downloads, expired-domains, new-bin, signatures, archived-repo)",name:"no-marshall-check",type:Boolean},{defaultValue:!1,description:"Run lifecycle scripts during add (opts out of vis's default block-by-default policy; allowlisted packages run via security.policies.installScripts.allow)",name:"run-scripts",type:Boolean},{defaultValue:!1,description:"After adding, recursively install non-optional peer dependencies that aren't already in the workspace (matches nypm's installPeerDependencies)",name:"auto-install-peers",type:Boolean}]},Gf={description:"Override the cache DB path (defaults to <cache>/vis/advisories/db.sqlite via @visulima/find-cache-dir).",name:"db",type:String},qf={description:"Output format: table (default) or json.",name:"format",type:String},wT={commandPath:["advisories"],description:"Download and ingest one or more OSV ecosystem dumps into the local cache",examples:[["vis advisories sync","Sync the npm ecosystem (default)"],["vis advisories sync --ecosystem npm","Sync a single explicit ecosystem"],["vis advisories sync --ecosystem npm,PyPI","Sync several ecosystems in one pass"],["vis advisories sync --force","Re-download even when the ETag matches"],["vis advisories sync --source https://mirror.example.com","Use a corporate OSV mirror (must be in allowedHosts)"]],group:"Security & Health",loader:Pe(()=>import("./sync.js"),"advisoriesSyncExecute"),name:"sync",options:[{description:"Comma-separated list of ecosystems to sync (default: npm).",name:"ecosystem",type:String},{defaultValue:!1,description:"Re-download and re-ingest even if the upstream ETag is unchanged.",name:"force",type:Boolean},{description:"Override the advisory source URL. Must be https and resolve to an allowed host.",name:"source",type:String},Gf,qf]},kT={commandPath:["advisories"],description:"Print the local advisory DB summary: path, schema version, ecosystems, row counts, last sync, ETag",examples:[["vis advisories status","Human-readable summary"],["vis advisories status --format json","Machine-readable for CI freshness checks"]],group:"Security & Health",loader:Pe(()=>import("./status.js"),"advisoriesStatusExecute"),name:"status",options:[Gf,qf]},ST={commandPath:["advisories"],description:"Delete the local advisory DB. The next `vis audit --offline` will fail until you re-sync",examples:[["vis advisories prune","Confirm and delete the local DB"],["vis advisories prune --force","Delete without confirmation"]],group:"Security & Health",loader:Pe(()=>import("./prune.js"),"advisoriesPruneExecute"),name:"prune",options:[Gf,{defaultValue:!1,description:"Skip the confirmation prompt.",name:"force",type:Boolean},qf]},ET=[wT,kT,ST];var DT=Object.defineProperty,CT=f((e,t)=>DT(e,"name",{value:t,configurable:!0}),"e$Y");const AT={argument:{description:"The target to run (e.g., build, test, lint)",name:"target",type:String},description:"Run a target only on projects affected by recent changes",examples:[["vis affected build","Run build on affected projects"],["vis affected test --base=main","Run tests on projects changed since main"],["vis affected destroy --reverse","Tear down affected projects leaves-first"]],group:"Run & Execute",loader:CT(()=>import("./handler2.js"),"loader"),name:"affected",options:[{defaultValue:"HEAD~1",description:"Git base ref for comparison",name:"base",type:String},{defaultValue:"HEAD",description:"Git head ref for comparison",name:"head",type:String},{defaultValue:"deep",description:'Downstream scope: "none", "direct", or "deep" — controls how far to include dependents of changed projects',name:"downstream",type:String},{defaultValue:"none",description:'Upstream scope: "none", "direct", or "deep" — controls how far to include dependencies of changed projects',name:"upstream",type:String},{defaultValue:3,description:"Maximum number of parallel tasks",name:"parallel",type:Number},{defaultValue:!0,description:"Enable caching (use --no-cache to disable)",name:"cache",type:Boolean},{defaultValue:!1,description:"Show what would run without executing",name:"dry-run",type:Boolean},{description:'Partition tasks for distributed CI (e.g., "1/4" for first of four runners). Falls back to VIS_PARTITION env var.',name:"partition",type:String},{description:"Filter affected projects by a query (e.g. 'language=typescript && tag=lib')",name:"query",type:String},{defaultValue:!1,description:"Run the dependency graph in reverse (leaves first, then their dependents). Useful for teardown targets like `destroy`/`undeploy` where dependents must run before the things they depend on.",name:"reverse",type:Boolean},{description:"Comma-separated tags this runner advertises (e.g. 'gpu,slow'). Forwarded verbatim to the downstream `vis run` so capability-gated tasks resolve identically. Falls back to VIS_RUNNER_TAGS env var.",name:"runner-tags",type:String}]},I1={description:"Output format: table or json (default: table)",name:"format",type:String},OT={commandPath:["ai"],description:"List detected AI providers and show which one is selected",examples:[["vis ai providers","List all AI providers and their status"],["vis ai providers --format json","Output as JSON"]],group:"System",loader:Pe(()=>import("./handler30.js"),"aiProvidersExecute"),name:"providers",options:[I1]},jT={commandPath:["ai"],description:"Test the best available AI provider with a quick prompt",examples:[["vis ai test","Test the selected provider"]],group:"System",loader:Pe(()=>import("./handler30.js"),"aiTestExecute"),name:"test",options:[]},xT={argument:{description:"Task ID to propose a fix for (e.g. @my/app:build)",name:"taskId",type:String},commandPath:["ai"],description:"Read a failed task's logs and propose a structured patch (Phase 1: local-only, no git)",examples:[["vis ai fix @myorg/app:build","Print proposed patch for the failed task"],["vis ai fix @myorg/app:build --apply","Apply the patch to disk after confirming"],["vis ai fix @myorg/app:build --format json","Machine-readable patch output"],["vis ai fix @myorg/app:build --run 2026-04-28T...","Inspect a specific historical run"]],group:"System",loader:Pe(()=>import("./handler30.js"),"aiFixExecute"),name:"fix",options:[I1,{description:"Use a specific run ID from .vis/runs/ instead of the latest run",name:"run",type:String},{defaultValue:!1,description:"Apply the proposed patch to disk after printing it",name:"apply",type:Boolean},{defaultValue:!1,description:"Bypass the AI response cache",name:"no-cache",type:Boolean},{defaultValue:!1,description:"Skip the confirmation prompt before applying",name:"yes",type:Boolean}]},PT={description:"AI-assisted commands: provider detection and failure-fix proposals (cache management lives under `vis cache`)",examples:[["vis ai","List all AI subcommands"],["vis ai discover-help","Machine-readable subcommand catalogue (for AI agents)"]],group:"System",loader:Pe(()=>import("./handler30.js"),"aiRootExecute"),name:"ai",options:[]},NT={commandPath:["ai"],description:"Print the machine-readable AI subcommand catalogue (JSON to stdout, designed for AI agents)",examples:[["vis ai discover-help","Emit the discovery payload as JSON"],["vis ai discover-help | jq '.subcommands[].path'","List all available paths"]],group:"System",loader:Pe(()=>import("./handler30.js"),"aiDiscoverHelpExecute"),name:"discover-help",options:[]},RT={commandPath:["ai"],description:"Diagnose the most recent failed task and post a structured patch as a PR/MR comment (or Buildkite annotation)",examples:[["vis ai heal","Heal the most recent failure"],["vis ai heal --dry-run","Propose a patch but skip apply / validate / post"],["vis ai heal --run 2026-04-28T...","Heal a specific historical run"]],group:"System",loader:Pe(()=>import("./heal.js").then(e=>e.h),"aiHeal"),name:"heal",options:[{defaultValue:!1,description:"Show the proposal and exit without applying or posting it",name:"dry-run",type:Boolean},{defaultValue:!1,description:"Bypass the AI response cache",name:"no-cache",type:Boolean},{description:"Use a specific run ID from .vis/runs/ instead of the latest run",name:"run",type:String},{description:"Per-task validation timeout in seconds (default: 1800)",name:"validation-timeout",type:Number}]},FT={commandPath:["ai","heal"],description:"Re-run the proposed fix and commit it to the PR/MR branch when validation passes",examples:[["vis ai heal accept","Triggered automatically by a `/vis heal accept` PR comment (GitHub/GitLab) or a Buildkite block-step unblock"]],group:"System",loader:Pe(()=>import("./heal-accept.js"),"aiHealAccept"),name:"accept",options:[{description:"Use a specific run ID from .vis/runs/ instead of the latest run",name:"run",type:String},{description:"Per-task validation timeout in seconds (default: 1800)",name:"validation-timeout",type:Number}]},T1=[PT,NT,OT,jT,xT,RT,FT],yZ=Object.defineProperty({__proto__:null,default:T1},Symbol.toStringTag,{value:"Module"});var LT=Object.defineProperty,IT=f((e,t)=>LT(e,"name",{value:t,configurable:!0}),"e$X");const TT={argument:{description:"Package name to analyze (e.g., react)",name:"package",required:!0,type:String},description:"Analyze a single package update with AI",examples:[["vis analyze react","Analyze updating react to latest"],["vis analyze react 19.0.0","Analyze updating react to specific version"],["vis analyze react --ai-type security","Run security-focused analysis"],["vis analyze react --format json","Output as JSON"]],group:"System",loader:IT(()=>import("./handler3.js"),"loader"),name:"analyze",options:[{description:"AI analysis type: impact, security, compatibility, or recommend (default: impact)",name:"ai-type",type:String},{defaultValue:!1,description:"Check for known security vulnerabilities",name:"security",type:Boolean},{description:"Output format: table or json (default: table)",name:"format",type:String}]};var BT=Object.defineProperty,_T=f((e,t)=>BT(e,"name",{value:t,configurable:!0}),"e$W");const MT={description:"Review and approve dependencies with build scripts",examples:[["vis approve-builds","Scan and list unapproved build scripts"],["vis approve-builds --all","Approve all pending builds (pnpm)"],["vis approve-builds --write","Write unapproved entries into vis.config.ts security.policies.installScripts.allow"],["vis approve-builds --sync-native","Sync allowBuilds to native PM config"]],group:"Security & Health",loader:_T(()=>import("./handler31.js"),"loader"),name:"approve-builds",options:[{defaultValue:!1,description:"Approve all pending builds without prompting (pnpm only)",name:"all",type:Boolean},{defaultValue:!1,description:"Force vis scanning even for pnpm (instead of delegating)",name:"scan",type:Boolean},{defaultValue:!1,description:"Sync allowBuilds to native PM config (bun: trustedDependencies, npm: .npmrc, yarn: .yarnrc.yml)",name:"sync-native",type:Boolean},{defaultValue:!1,description:"Write unapproved entries directly into vis.config.ts security.policies.installScripts.allow (LavaMoat 'auto' parity)",name:"write",type:Boolean}]};var VT=Object.defineProperty,WT=f((e,t)=>VT(e,"name",{value:t,configurable:!0}),"e$V");const UT={description:"Audit installed packages for vulnerabilities and supply chain risks",examples:[["vis audit","Full audit of all installed packages"],["vis audit --severity high","Show only high/critical issues"],["vis audit --format json","Output as JSON for CI integration"],["vis audit --format sarif","Output SARIF 2.1.0 for code-scanning uploads"],["vis audit --format csaf","Output CSAF 2.0 csaf_vex for enterprise vuln pipelines"],["vis audit --format cyclonedx-vex","Output a CycloneDX 1.7 BOM with vulnerabilities[] (SBOM + VEX)"],["vis audit --report report.html","Write a self-contained HTML report to ./report.html"],["vis audit --usage","Only report vulnerabilities in statically-imported packages"],["vis audit --offline","Query the local OSV cache only (no network)"],["vis audit --offline --db ./vendor.sqlite","Use a specific advisory DB"],["vis audit --ecosystem npm,pypi","Scan multiple OSV ecosystems (npm, pypi, crates.io, maven, go, rubygems)"],["vis audit --prod-only","Skip devDependencies"],["vis audit --fail-on high","Exit non-zero on any high or critical finding"],["vis audit --show-fixes","Print fix-suggestion lines (no apply, no rescan)"],["vis audit --fix","Apply direct-dep upgrades for vulnerable packages, then rescan (dry-run preview by default)"],["vis audit --fix --yes","Skip the confirmation prompt and run the upgrades immediately"],["vis audit --fix --allow-major","Permit major-version bumps when the lowest fix is outside the existing range"],["vis audit --fix-transitive","Write PM-specific overrides for vulnerable transitives (dry-run preview by default)"],["vis audit --exit-code","Exit with code 1 if issues found (for CI)"],["vis audit --show-accepted","Include acknowledged risks in output"],["vis audit --sync","Sync accepted risks to native PM config (pnpm-workspace.yaml / .yarnrc.yml)"],["vis audit --policies license,vulnerability","Run only the named policies (default: every configured policy)"],["vis audit --policies none","Skip the policy engine entirely"]],group:"Security & Health",loader:WT(()=>import("./handler45.js"),"loader"),name:"audit",options:[{description:"Minimum severity to report: low, medium, high, critical (default: low)",name:"severity",type:String},{description:"Output format: table, json, sarif, csaf, or cyclonedx-vex (default: table)",name:"format",type:String},{description:"Write a self-contained HTML report to this path. Auto-opens in a TTY when not in CI.",name:"report",type:String},{defaultValue:!1,description:"Only report vulnerabilities in statically-imported packages (reachability filter).",name:"usage",type:Boolean},{defaultValue:!1,description:"Disable the reachability filter even if enabled in config.",name:"no-usage",type:Boolean},{defaultValue:!1,description:"Query the local OSV advisory cache only — no network calls. Errors if the cache is missing.",name:"offline",type:Boolean},{description:"Override the offline advisory DB path (default: <cache>/vis/advisories/db.sqlite).",name:"db",type:String},{description:"Comma-separated list of OSV ecosystems to scan (default: npm). Supported: npm, pypi, crates.io (or 'cargo'), maven, go, rubygems. Non-npm ecosystems require --offline (online OSV path is npm-only).",name:"ecosystem",type:String},{defaultValue:!1,description:"Skip devDependencies — scan production graph only.",name:"prod-only",type:Boolean},{description:"Exit non-zero when any finding is at this severity or higher. One of: low, medium, high, critical.",name:"fail-on",type:String},{defaultValue:!1,description:"Print fix-suggestion lines for each finding (no apply, no rescan)",name:"show-fixes",type:Boolean},{defaultValue:!1,description:"Apply direct-dep fixes for vulnerable packages by running the active PM update command, then rescan",name:"fix",type:Boolean},{defaultValue:!1,description:"Apply transitive fixes by writing PM-specific overrides (pnpm-workspace.yaml / package.json overrides / resolutions)",name:"fix-transitive",type:Boolean},{defaultValue:!1,description:"Skip confirmation prompt for --fix / --fix-transitive (required in CI)",name:"yes",type:Boolean},{defaultValue:!1,description:"Allow --fix to bump a direct dep across a major version when the lowest fix is outside the existing range",name:"allow-major",type:Boolean},{defaultValue:!1,description:"Exit with code 1 if any issues found (for CI)",name:"exit-code",type:Boolean},{defaultValue:!1,description:"Include acknowledged (accepted risk) issues in output",name:"show-accepted",type:Boolean},{defaultValue:!1,description:"Sync vis accepted risks to native PM config (pnpm-workspace.yaml / .yarnrc.yml)",name:"sync",type:Boolean},{description:"Comma-separated list of supply-chain policies to evaluate (default: every configured policy). Use 'none' to skip the engine entirely, 'all' to force the full set. Known: malware, firstSeen, unexpectedDeps, publisherChange, installScripts, score, vulnerability, license.",name:"policies",type:String}]},No={description:"Cache directory (overrides config and default). Relative paths are resolved against the workspace root.",name:"cache-dir",type:String},Bc={description:"Cache scope: 'shared' (default — main worktree's cache), 'worktree' (this checkout's local cache), or 'all' (both)",name:"scope",type:String},B1={description:"Cache type: 'task' (workspace task cache), 'ai' (AI response cache), 'socket' (Socket.dev report cache), or 'all' (default)",name:"type",type:String},GT={commandPath:["cache"],description:"List all cache entries",examples:[["vis cache list","List all cache entries"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheListExecute"),name:"list",options:[No,Bc,{description:"Output format: table or json (default: table)",name:"format",type:String}]},qT={commandPath:["cache"],description:"Remove cache entries (defaults to all stores: workspace task cache, AI responses, Socket.dev reports)",examples:[["vis cache clean","Remove all cache entries from every store"],["vis cache clean --type=ai","Clear only the AI response cache"],["vis cache clean --type=task","Clear only the workspace task cache"],["vis cache clean --dry-run","Preview what clean would remove"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheCleanExecute"),name:"clean",options:[No,B1,{defaultValue:!1,description:"Preview without deleting",name:"dry-run",type:Boolean},{defaultValue:!1,description:"Skip the confirmation prompt for out-of-workspace cache directories",name:"force",type:Boolean}]},zT={commandPath:["cache"],description:"Remove old and oversized cache entries",examples:[["vis cache prune","Remove old and oversized entries"],["vis cache prune --max-age-days=3 --max-size=500MB","Prune with custom limits"],["vis cache prune --keep-last=30","Keep only the 30 most recent entries"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cachePruneExecute"),name:"prune",options:[No,Bc,{description:"Remove entries older than N days",name:"max-age-days",type:Number},{description:"Evict oldest entries until cache is under this size (e.g. 500MB)",name:"max-size",type:String},{description:"Keep only the N most recent entries (sorted newest-first by mtime)",name:"keep-last",type:Number}]},HT={commandPath:["cache"],description:"Print on-disk footprint and stats for one or more cache stores (task / ai / socket)",examples:[["vis cache size","Show stats for every cache store"],["vis cache size --type=ai","Show only the AI response cache (entries, size, oldest, newest)"],["vis cache size --type=task --format=json","Machine-readable task cache size"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheSizeExecute"),name:"size",options:[No,Bc,B1,{description:"Output format: table or json (default: table)",name:"format",type:String}]},zf={description:"Output format: table or json (default: table)",name:"format",type:String},_1={description:"Use a specific run ID from .vis/runs/ instead of the latest run",name:"run",type:String},JT={argument:{description:"Task ID to explain (e.g. @my/app:build)",name:"taskId",type:String},commandPath:["cache"],description:"Explain why a task missed the cache by diffing hash inputs against the previous run",examples:[["vis cache why @myorg/app:build","Show which inputs changed since the last run"],["vis cache why @myorg/app:build --json","Machine-readable output for CI"],["vis cache why @myorg/app:build --run 2026-04-28T...","Inspect a specific historical run"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheWhyExecute"),name:"why",options:[zf,_1]},KT={argument:{description:"Task ID to print the hash for (e.g. @my/app:build)",name:"taskId",type:String},commandPath:["cache"],description:"Print the recorded hash and per-input hash details for a task",examples:[["vis cache hash @myorg/app:build","Show the resolved hash + contributing inputs"],["vis cache hash @myorg/app:build --json","Machine-readable output"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheHashExecute"),name:"hash",options:[zf,_1]},YT={argument:{description:"Task ID to verify (e.g. @my/app:build)",name:"taskId",type:String},commandPath:["cache"],description:"Verify cache restore fidelity: extract the cached entry into a tmp directory and diff each file's content, mode, and mtime against the live workspace. Exits 1 on any drift (changed content, mode, mtime) or if a cached output is missing from the workspace. With --scope=all, the first cache directory containing the task is used.",examples:[["vis cache verify @myorg/app:build","Diff cached outputs vs live workspace files"],["vis cache verify @myorg/app:build --format=json","Machine-readable diff (status: ok | drift)"],["vis cache verify @myorg/app:build --cache-dir=.alt-cache","Verify against a non-default cache directory"],["vis cache verify @myorg/app:build --scope=all","Search shared and worktree caches for the task"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheVerifyExecute"),name:"verify",options:[No,Bc,zf]},XT={commandPath:["cache"],description:"Probe the configured remote cache (HTTP HEAD or REAPI Capabilities) and report reachability, latency, and negotiated capabilities",examples:[["vis cache doctor","Probe the remoteCache configured in vis.config.ts"],["vis cache doctor --url=grpcs://cache.example.com:443 --backend=reapi","Override URL/backend ad-hoc"],["vis cache doctor --json","Machine-readable output"]],group:"Workspace",loader:Pe(()=>import("./doctor-probe.js"),"cacheDoctorExecute"),name:"doctor",options:[{description:"Override remote cache URL (otherwise read from vis.config.ts remoteCache.url, or TURBO_API env var)",name:"url",type:String},{description:"Override backend selector: 'http' or 'reapi'",name:"backend",type:String},{description:"Output format: table or json (default: table)",name:"format",type:String},{defaultValue:5e3,description:"Probe timeout in milliseconds (default: 5000)",name:"timeout",type:Number}]},QT=[GT,qT,zT,HT,JT,KT,YT,XT];var ZT=Object.defineProperty,eB=f((e,t)=>ZT(e,"name",{value:t,configurable:!0}),"e$U");const tB={alias:["c","outdated"],argument:{description:"Specific packages to check (checks all if omitted)",name:"packages",type:String},description:"Check for outdated dependencies, security vulnerabilities, and supply chain settings",examples:[["vis check","Check all catalog dependencies"],["vis check react","Check specific packages"],["vis check --target minor","Only show minor/patch updates"],["vis check --exclude '@types/*'","Exclude packages by pattern"],["vis check --no-security","Skip vulnerability scanning"],["vis check --security-config","Audit supply chain security settings"],["vis check --security-config --sync","Sync security config to pnpm-workspace.yaml"]],group:"Security & Health",loader:eB(()=>import("./handler4.js"),"loader"),name:"check",options:[{alias:"t",description:"Update target: latest, minor, or patch (default: latest)",name:"target",type:String},{description:"Glob pattern to include packages (repeatable)",lazyMultiple:!0,name:"include",type:String},{description:"Glob pattern to exclude packages (repeatable)",lazyMultiple:!0,name:"exclude",type:String},{defaultValue:!1,description:"Include prerelease versions",name:"prerelease",type:Boolean},{defaultValue:!1,description:"Skip security vulnerability scanning",name:"no-security",type:Boolean},{defaultValue:!1,description:"Audit supply chain security settings",name:"security-config",type:Boolean},{defaultValue:!1,description:"Sync security settings to pnpm-workspace.yaml (pnpm only, requires --security-config)",name:"sync",type:Boolean},{description:"Output format: table, json, or minimal (default: table)",name:"format",type:String},{defaultValue:!1,description:"Exit with code 1 if outdated dependencies found (for CI)",name:"exit-code",type:Boolean},{defaultValue:!1,description:"Run AI analysis on outdated packages",name:"ai",type:Boolean},{description:"AI analysis type: impact, security, compatibility, or recommend",name:"ai-type",type:String},{alias:"D",conflicts:"prod",description:"Check only devDependencies (npm/yarn mode)",name:"dev",type:Boolean},{alias:"P",conflicts:"dev",description:"Check only dependencies (npm/yarn mode)",name:"prod",type:Boolean},{defaultValue:!1,description:"Include peerDependencies in outdated checks",name:"peer",type:Boolean},{defaultValue:!1,description:"Also check workspace-owned package names against the registry",name:"include-internal",type:Boolean}]};var rB=Object.defineProperty,nB=f((e,t)=>rB(e,"name",{value:t,configurable:!0}),"e$T");const iB={argument:{description:"Comma-separated list of targets to run (e.g., lint,test,build)",name:"targets",type:String},description:"Run affected targets in a CI-optimized pipeline",examples:[["vis ci lint,test,build","Run lint, test, and build on affected projects"],["vis ci test --base=origin/main","Override the base ref"],["vis ci build --no-install","Skip the install step (assume deps already present)"],["vis ci build --parallel=6","Increase concurrency"]],group:"Run & Execute",loader:nB(()=>import("./handler5.js"),"loader"),name:"ci",options:[{defaultValue:!0,description:"Install dependencies before running targets (use --no-install to skip)",name:"install",type:Boolean},{defaultValue:!1,description:"Skip the toolchain pre-flight (no auto-install for any pinned tool: node / pnpm / yarn / npm / bun / deno / go / python / ruby / rust)",name:"skip-toolchain",type:Boolean},{description:"Git base ref for affected detection (default: auto-detected from CI env)",name:"base",type:String},{description:"Git head ref for affected detection (default: HEAD)",name:"head",type:String},{defaultValue:"none",description:"Upstream scope: none | direct | deep",name:"upstream",type:String},{defaultValue:"deep",description:"Downstream scope: none | direct | deep",name:"downstream",type:String},{defaultValue:4,description:"Maximum number of parallel tasks per target",name:"parallel",type:Number},{description:'Partition tasks for distributed CI (e.g., "1/4")',name:"partition",type:String},{description:"Filter affected projects by a query (e.g. 'language=typescript && tag=lib')",name:"query",type:String}]};var sB=Object.defineProperty,oB=f((e,t)=>sB(e,"name",{value:t,configurable:!0}),"e$S");const aB={description:"Remove node_modules from all workspace projects",examples:[["vis clean","Remove all node_modules directories"],["vis clean --lockfile","Also remove lockfiles"],["vis clean --dry-run","Preview what would be removed"]],group:"Workspace",loader:oB(()=>import("./handler6.js"),"loader"),name:"clean",options:[{alias:"l",defaultValue:!1,description:"Also remove lockfiles (pnpm-lock.yaml, package-lock.json, etc.)",name:"lockfile",type:Boolean},{defaultValue:!1,description:"Preview what would be removed without deleting",name:"dry-run",type:Boolean}]};var cB=Object.defineProperty,lB=f((e,t)=>cB(e,"name",{value:t,configurable:!0}),"e$R");const uB={argument:{description:"Template to use (e.g., vis:app, create-vite, user/repo) — omit for interactive mode",name:"template",type:String},description:"Create a new project from a template",examples:[["vis create","Interactive project scaffolding"],["vis create vis:monorepo my-workspace","Create a monorepo workspace"],["vis create vis:app my-app","Scaffold a Vite application"],["vis create vis:library my-lib","Create a TypeScript library"],["vis create vite my-app -- --template react-ts","Use create-vite with React TypeScript"],["vis create user/repo my-project","Clone a GitHub template"],["vis create --list","Show available templates"]],group:"Scaffold & Config",loader:lB(()=>import("./handler42.js"),"loader"),name:"create",options:[{defaultValue:!1,description:"Show available templates",name:"list",type:Boolean},{description:"Generate editor configs (vscode)",name:"editor",type:String},{defaultValue:!1,description:"Initialize a git repository",name:"git-init",type:Boolean},{defaultValue:!1,description:"Skip interactive prompts",name:"no-interactive",type:Boolean}]};var pB=Object.defineProperty,dB=f((e,t)=>pB(e,"name",{value:t,configurable:!0}),"e$Q");const fB={description:"Deduplicate dependencies using the detected package manager",examples:[["vis dedupe","Run deduplication"],["vis dedupe --check","Preview changes without modifying (CI-friendly)"]],group:"Dependencies",loader:dB(()=>import("./handler7.js"),"loader"),name:"dedupe",options:[{defaultValue:!1,description:"Preview changes without modifying files (dry-run)",name:"check",type:Boolean}]};var mB=Object.defineProperty,hB=f((e,t)=>mB(e,"name",{value:t,configurable:!0}),"e$P");const gB={alias:"dc",description:"Create or update .devcontainer/devcontainer.json interactively",examples:[["vis devcontainer","Launch interactive devcontainer config editor"],["vis dc","Alias for devcontainer"],["vis devcontainer --template node-pnpm","Start from Node.js + pnpm template"]],group:"Scaffold & Config",loader:hB(()=>import("./handler46.js"),"loader"),name:"devcontainer",options:[{alias:"t",description:"Start from a template: node, node-pnpm, node-postgres, node-dind, fullstack, python, go, rust, java, devops, minimal, custom",name:"template",type:String},{alias:"o",description:"Output path (default: .devcontainer/devcontainer.json)",name:"output",type:String}]};var yB=Object.defineProperty,vB=f((e,t)=>yB(e,"name",{value:t,configurable:!0}),"e$O");const bB={argument:{description:"Package to execute (optionally with @version)",name:"package",type:String},description:"Execute a remote package without permanent installation",examples:[["vis dlx create-vite my-app","Scaffold a new project"],["vis dlx typescript@5.5.4 tsc --version","Run specific version"],["vis dlx -p cowsay -p lolcatjs -c 'echo hi | cowsay | lolcatjs'","Multiple packages with shell"],["vis install && vis dlx --offline typescript tsc --version","Hardened: pre-install + offline (no registry fetch on dlx)"]],group:"Run & Execute",loader:vB(()=>import("./handler8.js"),"loader"),name:"dlx",options:[{alias:"p",description:"Additional packages to install (repeatable)",multiple:!0,name:"package",type:String},{alias:"c",defaultValue:!1,description:"Execute within shell environment",name:"shell-mode",type:Boolean},{alias:"s",defaultValue:!1,description:"Suppress output except command results",name:"silent",type:Boolean},{defaultValue:!1,description:"Resolve from local store only — fail rather than fetch from the registry. Pair with `vis install` for hardened npx-style workflows.",name:"offline",type:Boolean}]};var $B=Object.defineProperty,wB=f((e,t)=>$B(e,"name",{value:t,configurable:!0}),"e$N");const kB={argument:{description:"Docker subcommand: scaffold | prune",name:"subcommand",type:String},description:"Docker integration — scaffold a minimal context or prune unfocused deps",examples:[["vis docker scaffold --focus=my-app","Generate .vis/docker/workspace for my-app + its deps"],["vis docker scaffold --focus=my-app --include-sources","Also copy focus source trees"],["vis docker scaffold --focus=my-app,other --out=.vis/docker","Focus multiple projects"],["vis docker prune --context=.vis/docker","Strip unfocused projects inside a build stage"]],group:"Workspace",loader:wB(()=>import("./handler9.js"),"loader"),name:"docker",options:[{description:"Project name(s) to focus on — comma-separated for multiple",name:"focus",type:String},{description:"Output directory for the scaffold (default: .vis/docker)",name:"out",type:String},{defaultValue:!1,description:"Also copy focus project source trees to <out>/sources",name:"include-sources",type:Boolean},{description:"Scaffold root for `vis docker prune` (default: .vis/docker)",name:"context",type:String},{defaultValue:!0,description:"Rewrite the workspace lockfile to drop unfocused projects (use --no-prune-lockfile to copy verbatim)",name:"prune-lockfile",type:Boolean}]};var SB=Object.defineProperty,EB=f((e,t)=>SB(e,"name",{value:t,configurable:!0}),"e$M");const DB={description:"Run a full project health check (outdated, security, duplicates, optimizations)",examples:[["vis doctor","Full project health check"],["vis doctor --fix","Check and auto-apply safe fixes"],["vis doctor --format json","Machine-readable output for CI"],["vis doctor --only security","Only run the security scans"],["vis doctor --skip optimization,runtime","Skip the listed sections"],["vis doctor --quiet","Summary only, no per-section breakdown"],["vis doctor --no-progress","Disable live progress UI (sequential logs)"],["vis doctor --exit-code","Exit with code 1 if security issues found"],["vis doctor --exit-code --strict","Fail on any issue (outdated, duplicates, security)"]],group:"Security & Health",loader:EB(()=>import("./handler41.js"),"loader"),name:"doctor",options:[{description:"Output format: table or json (default: table). Alias: --json",name:"format",type:String},{defaultValue:!1,description:"Shorthand for --format json",name:"json",type:Boolean},{defaultValue:!1,description:"Exit with code 1 if issues found",name:"exit-code",type:Boolean},{defaultValue:!1,description:"Auto-apply safe fixes (security overrides + codemods, SIGTERM orphans)",name:"fix",type:Boolean},{defaultValue:!1,description:"With --fix: escalate orphan cleanup to SIGKILL / taskkill /F (use when SIGTERM is ignored)",name:"fix-force",type:Boolean},{defaultValue:!1,description:"With --exit-code: also fail on outdated and duplicate deps",name:"strict",type:Boolean},{description:"Comma-separated sections to run: dependencies,security,optimization,runtime",name:"only",type:String},{description:"Comma-separated sections to skip",name:"skip",type:String},{defaultValue:!1,description:"Suppress per-section detail; print summary only",name:"quiet",type:Boolean},{defaultValue:!1,description:"Disable live progress UI (forces sequential logs)",name:"no-progress",type:Boolean},{defaultValue:!1,description:"Bypass the doctor result cache (~/.vis/cache/doctor)",name:"no-cache",type:Boolean},{description:"Comma-separated package name patterns to scope findings (supports * globs, e.g. '@types/*,react')",name:"filter",type:String}]};var CB=Object.defineProperty,AB=f((e,t)=>CB(e,"name",{value:t,configurable:!0}),"e$L");const OB={argument:{description:"Command to execute followed by arguments",name:"command",type:String},description:"Execute a local node_modules/.bin command (no remote fallback)",examples:[["vis exec eslint .","Run local eslint"],["vis exec tsc --noEmit","Run local TypeScript check"],["vis exec -r -- eslint .","Run in all workspace packages"],["vis exec -c 'echo $PATH'","Shell mode"]],group:"Run & Execute",loader:AB(()=>import("./handler10.js"),"loader"),name:"exec",options:[{alias:"c",defaultValue:!1,description:"Execute within shell environment",name:"shell-mode",type:Boolean},{alias:"r",defaultValue:!1,description:"Run in every workspace package",name:"recursive",type:Boolean},{alias:"w",defaultValue:!1,description:"Run on workspace root only",name:"workspace-root",type:Boolean},{alias:"F",description:"Filter packages by name pattern",multiple:!0,name:"filter",type:String},{defaultValue:!1,description:"Run concurrently without topological ordering",name:"parallel",type:Boolean},{defaultValue:!1,description:"Reverse topological execution order",name:"reverse",type:Boolean}]};var jB=Object.defineProperty,xB=f((e,t)=>jB(e,"name",{value:t,configurable:!0}),"e$K");const PB={argument:{description:"Template name (or remote source like git://… or npm://…) — omit for interactive picker",name:"template",type:String},description:"Scaffold files from an in-repo template",examples:[["vis generate","Pick a template interactively"],["vis generate package","Run the 'package' template"],["vis generate component -- --name=Button --style=primary","Pre-fill option values"],["vis generate package --to=./packages/new --force","Custom destination + overwrite"],["vis generate package --dry-run","Print planned writes without touching disk"],["vis generate git://github.com/org/template#main","Fetch and run a remote template"],["vis generate --list","Show discovered templates"],["vis generate --list --json","Machine-readable template list"],["vis generate package --describe --json","Print template metadata (variables, destination) as JSON"]],group:"Scaffold & Config",loader:xB(()=>import("./handler37.js"),"loader"),name:"generate",options:[{defaultValue:!1,description:"List discovered templates",name:"list",type:Boolean},{defaultValue:!1,description:"Print template metadata (about, destination, variables) without running produce",name:"describe",type:Boolean},{defaultValue:!1,description:"Emit JSON output (with --list or --describe)",name:"json",type:Boolean},{description:"Destination directory",name:"to",type:String},{defaultValue:!1,description:"Print planned writes without touching disk",name:"dry-run",type:Boolean},{defaultValue:!1,description:"Overwrite existing files without prompting",name:"force",type:Boolean},{defaultValue:!1,description:"Skip prompts; use template defaults",name:"defaults",type:Boolean},{defaultValue:!1,description:"Skip running post-generation scripts",name:"skip-scripts",type:Boolean},{defaultValue:!1,description:"Skip interactive prompts (errors on missing required values)",name:"no-interactive",type:Boolean},{defaultValue:!1,description:"Prefer locally cached remote templates over re-downloading",name:"prefer-offline",type:Boolean}]};var NB=Object.defineProperty,RB=f((e,t)=>NB(e,"name",{value:t,configurable:!0}),"t$w");const FB={description:"Visualize the project dependency graph",examples:[["vis graph","Show colored dependency graph (TUI in TTY, ASCII otherwise)"],["vis graph --format=ascii","Force ASCII tree output"],["vis graph --format=dot","Output in Graphviz DOT format"],["vis graph --format=html --output=graph.html","Generate interactive HTML graph"],["vis graph --format=json --output=graph.json","Save JSON graph to file"]],group:"Workspace",loader:RB(()=>import("./handler38.js"),"loader"),name:"graph",options:[{alias:"f",defaultValue:void 0,description:"Output format: tui, ascii, dot, json, html (default: tui in TTY, ascii otherwise)",name:"format",type:String},{alias:"o",description:"Write output to file instead of stdout",name:"output",type:String},{alias:"d",description:"Maximum dependency tree depth for ASCII output (default: unlimited)",name:"depth",type:Number}]},M1=["pre-commit","pre-merge-commit","prepare-commit-msg","commit-msg","post-commit","applypatch-msg","pre-applypatch","post-applypatch","pre-rebase","post-rewrite","post-checkout","post-merge","pre-push","pre-auto-gc"],V1=".vis-hooks",vZ=[".pre-commit-config.yaml",".pre-commit-config.yml","prek.toml"],bZ={commit:"pre-commit","merge-commit":"pre-merge-commit",push:"pre-push"},$Z=new Set(["commit-msg","post-checkout","post-commit","post-merge","post-rewrite","pre-commit","pre-merge-commit","pre-push","pre-rebase","prepare-commit-msg"]),wZ=new Set(["commit-msg","post-checkout","post-merge","post-rewrite","pre-rebase","prepare-commit-msg"]),kZ=new Set(["fail","script","system"]);var LB=Object.defineProperty,ti=f((e,t)=>LB(e,"name",{value:t,configurable:!0}),"e$I");const ri={defaultValue:V1,description:"Custom hooks directory",name:"hooks-dir",type:String},ni=[{defaultValue:void 0,description:"Set to 0 to disable git hooks, set to 2 for debug output",name:"VIS_GIT_HOOKS",type:String}],IB={commandPath:["hook"],description:"Install git hooks for the workspace (migrates husky / prek on prompt)",env:[...ni],examples:[["vis hook install","Install git hooks in .vis-hooks/"],["vis hook install --hooks-dir=.githooks","Install hooks in a custom directory"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookInstallExecute})),"loader"),name:"install",options:[ri]},TB={commandPath:["hook"],description:"Remove git hooks and reset core.hooksPath",env:[...ni],examples:[["vis hook uninstall","Remove git hooks and reset core.hooksPath"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookUninstallExecute})),"loader"),name:"uninstall",options:[ri]},BB={commandPath:["hook"],description:"Migrate from husky or prek to vis hooks (auto-detected)",env:[...ni],examples:[["vis hook migrate","Migrate from husky or prek to vis hooks (auto-detected)"],["vis hook migrate --dry-run","Preview what a migration would write without touching disk"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookMigrateExecute})),"loader"),name:"migrate",options:[ri,{defaultValue:!1,description:"Preview migrate without writing files",name:"dry-run",type:Boolean}]},_B={commandPath:["hook"],description:"Show configured hooks grouped by stage",env:[...ni],examples:[["vis hook list","Show configured hooks grouped by stage"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookListExecute})),"loader"),name:"list",options:[ri]},MB={commandPath:["hook"],description:"Sanity-check installed hooks and the bundled runner",env:[...ni],examples:[["vis hook validate","Sanity-check installed hooks and the bundled runner"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookValidateExecute})),"loader"),name:"validate",options:[ri]},VB={argument:{description:"Hook stage to run (e.g. pre-commit, commit-msg). Defaults to pre-commit.",name:"stage",type:String},commandPath:["hook"],description:"Run a specific hook stage against tracked files",env:[...ni],examples:[["vis hook run pre-commit --all-files","Run the pre-commit hooks against every tracked file"],["vis hook run pre-commit --from-ref=main --to-ref=HEAD","Run pre-commit hooks on files changed between two refs"],["vis hook run pre-commit --last-commit","Shortcut for --from-ref HEAD~1 --to-ref HEAD"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookRunExecute})),"loader"),name:"run",options:[ri,{defaultValue:!1,description:"Run against every tracked file",name:"all-files",type:Boolean},{defaultValue:void 0,description:"Include files changed since this ref",name:"from-ref",type:String},{defaultValue:void 0,description:"Include files changed up to this ref",name:"to-ref",type:String},{defaultValue:!1,description:"Shortcut for --from-ref HEAD~1 --to-ref HEAD",name:"last-commit",type:Boolean}]},WB={argument:{description:"Target to add (currently: `secrets`)",name:"target",type:String},commandPath:["hook"],description:"Add a managed hook snippet (e.g. `vis secrets --staged`)",env:[...ni],examples:[["vis hook add secrets","Add a pre-commit hook that runs `vis secrets --staged`"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookAddExecute})),"loader"),name:"add",options:[ri]},UB=[IB,TB,BB,_B,MB,VB,WB];var GB=Object.defineProperty,qB=f((e,t)=>GB(e,"name",{value:t,configurable:!0}),"e$H");const zB={argument:{description:"Project name to check (required)",name:"project",type:String},description:'Exit with inverted codes for CI "Ignored Build Step" gating (Vercel/Netlify)',examples:[["vis ignore my-app","Check if my-app is affected and decide whether to build"],["vis ignore my-app --base $VERCEL_GIT_PREVIOUS_SHA","Explicit base ref"],["vis ignore my-app --json","Emit the decision as JSON instead of text"],["vis ignore my-app --verbose","Print debug info about the decision path"],["vis ignore my-app --exit-zero-on-build","Normal exit semantics (0=build, 0=skip)"]],group:"Run & Execute",loader:qB(()=>import("./handler32.js"),"loader"),name:"ignore",options:[{description:"Git base ref for comparison. Defaults to CI provider env vars, then HEAD~1.",name:"base",type:String},{defaultValue:"HEAD",description:"Git head ref for comparison",name:"head",type:String},{defaultValue:"deep",description:'Downstream scope: "none", "direct", or "deep"',name:"downstream",type:String},{defaultValue:"none",description:'Upstream scope: "none", "direct", or "deep"',name:"upstream",type:String},{defaultValue:!1,description:"Emit the decision as JSON on stdout instead of human text",name:"json",type:Boolean},{defaultValue:!1,description:"Exit 0 on build (normal semantics) instead of 1 (inverted Vercel/Netlify semantics)",name:"exit-zero-on-build",type:Boolean},{defaultValue:!1,description:"Enable verbose debug output",name:"verbose",type:Boolean}]};var HB=Object.defineProperty,JB=f((e,t)=>HB(e,"name",{value:t,configurable:!0}),"e$G");const KB={description:"Remove vis from the system (self-uninstall)",examples:[["vis implode","Interactive uninstall"],["vis implode --yes","Non-interactive uninstall (CI)"]],group:"System",loader:JB(()=>import("./handler11.js"),"loader"),name:"implode",options:[{alias:"y",defaultValue:!1,description:"Skip confirmation prompt",name:"yes",type:Boolean}]};var YB=Object.defineProperty,XB=f((e,t)=>YB(e,"name",{value:t,configurable:!0}),"e$F");const QB={alias:"view",argument:{description:"Package name followed by optional metadata fields (e.g. 'react version dependencies')",name:"args",type:String},description:"Show npm registry metadata for a package (alias of `npm view` / `pnpm view` / `yarn info` / `bun pm view`)",examples:[["vis info react","Full registry metadata for react"],["vis info react version","Latest version only"],["vis info react versions","All published versions"],["vis info react@18 dependencies","Dependencies of react@18"],["vis info react --json","Emit JSON"],["vis view react","Alias matching npm/pnpm"]],group:"Dependencies",loader:XB(()=>import("./handler12.js"),"loader"),name:"info",options:[{defaultValue:!1,description:"Output as JSON",name:"json",type:Boolean}]};var ZB=Object.defineProperty,e_=f((e,t)=>ZB(e,"name",{value:t,configurable:!0}),"e$E");const t_={description:"Initialize vis.config.ts with best-practice security defaults",examples:[["vis init","Interactive setup wizard"],["vis init --no-interactive","Create minimal config without prompts"],["vis init --force","Overwrite existing config"],["vis init --sync-native","Also sync to native PM config files"]],group:"Scaffold & Config",loader:e_(()=>import("./handler13.js"),"loader"),name:"init",options:[{defaultValue:!1,description:"Overwrite existing config file",name:"force",type:Boolean},{defaultValue:!1,description:"Skip interactive prompts",name:"no-interactive",type:Boolean},{defaultValue:!1,description:"Sync settings to native PM config files",name:"sync-native",type:Boolean}]};var r_=Object.defineProperty,n_=f((e,t)=>r_(e,"name",{value:t,configurable:!0}),"e$D");const i_={argument:{description:"Package to inspect, optionally pinned: `<name>` or `<name>@<spec>`. `<spec>` may be a version, range, or dist-tag.",name:"package"},description:"Run all marshalls against a package without installing it",examples:[["vis inspect express","Run every marshall against express@latest"],["vis inspect lodash@4.17.21","Pin to an exact version"],["vis inspect react@^18","Resolve a semver range, then inspect the best match"],["vis inspect express --json","Emit findings as JSON for CI integration"],["vis inspect express --strict","Exit non-zero on any warning, not just errors"],["vis inspect express --only author,downloads","Run a subset of marshalls"],["vis inspect express --only signatures","Signatures are off by default; opt in with --only"]],group:"Security & Health",loader:n_(()=>import("./handler14.js"),"loader"),name:"inspect",options:[{defaultValue:!1,description:"Emit findings as a JSON document instead of the human-readable table.",name:"json",type:Boolean},{defaultValue:!1,description:"Exit non-zero on any finding (warnings included). Default exits non-zero only on errors.",name:"strict",type:Boolean},{description:"Comma-separated subset of marshalls to run. Known: author, archivedRepo, downloads, expiredDomains, metadata, newBin, provenance, signatures. Signatures only runs when explicitly requested here.",name:"only",type:String}]};var s_=Object.defineProperty,o_=f((e,t)=>s_(e,"name",{value:t,configurable:!0}),"e$C");const a_={alias:"i",argument:{description:"Optional package names. When provided, delegates to `vis add` (enables npm-style `alias npm='vis install'` wrappers).",name:"packages",type:String},description:"Install dependencies using the detected package manager",examples:[["vis install","Install all dependencies (frozen-lockfile by default when a lockfile is present)"],["vis install react react-dom","Delegates to `vis add` — enables shell aliases like `alias npm='vis install'`"],["vis i --no-frozen-lockfile","Allow lockfile updates (escape hatch for the default)"],["vis install --ci","Clean install: wipe node_modules + frozen lockfile (mirrors npm ci / pnpm ci)"],["vis install --prefer-offline","Use cached packages when available, fall back to network"],["vis install --prod","Install production dependencies only"],["vis install --filter app","Install for specific workspace package"],["vis install --run-scripts","Run lifecycle scripts (opts out of vis's default block-by-default policy; allowlisted packages run via security.policies.installScripts.allow)"],["vis install --no-typosquat-check","Skip typosquat name check"],["vis install --installer aube","Force aube as the installer (errors if not on PATH)"],["vis install --no-aube","Bypass aube; use the lockfile-detected PM"]],group:"Dependencies",loader:o_(()=>import("./handler15.js"),"loader"),name:"install",options:[{alias:"P",conflicts:"dev",description:"Skip devDependencies (no positional args) / add as peer (with positional args, npm-style)",name:"prod",type:Boolean},{alias:"D",conflicts:"prod",description:"Install devDependencies only (no positional args) / add as dev (with positional args, npm-style)",name:"dev",type:Boolean},{defaultValue:!1,description:"Add as optional dependency (only with positional args; mirrors `npm install -O`)",name:"save-optional",type:Boolean},{alias:"E",defaultValue:!1,description:"Save exact version (only with positional args; mirrors `npm install -E`)",name:"exact",type:Boolean},{defaultValue:!1,description:"Skip Socket.dev security check (only with positional args; mirrors `vis add --no-socket-check`)",name:"no-socket-check",type:Boolean},{defaultValue:!1,description:"Skip the offline marshall pipeline (only with positional args; mirrors `vis add --no-marshall-check`)",name:"no-marshall-check",type:Boolean},{defaultValue:!1,description:"Use frozen lockfile (CI mode, maps to npm ci)",name:"frozen-lockfile",type:Boolean},{defaultValue:!1,description:"Opt out of vis's default frozen-lockfile behavior and allow lockfile updates",name:"no-frozen-lockfile",type:Boolean},{defaultValue:!1,description:"Clean install: wipe node_modules then install with frozen lockfile",name:"ci",type:Boolean},{alias:"f",defaultValue:!1,description:"Force reinstall all dependencies",name:"force",type:Boolean},{defaultValue:!1,description:"Run lifecycle scripts (opts out of vis's default block-by-default policy; allowlisted packages run via security.policies.installScripts.allow)",name:"run-scripts",type:Boolean},{defaultValue:!1,description:"Update lockfile without installing",name:"lockfile-only",type:Boolean},{defaultValue:!1,description:"Skip optional dependencies",name:"no-optional",type:Boolean},{defaultValue:!1,description:"Use only cached packages",name:"offline",type:Boolean},{defaultValue:!1,description:"Prefer cached packages, fall back to network when missing",name:"prefer-offline",type:Boolean},{alias:"s",defaultValue:!1,description:"Suppress output",name:"silent",type:Boolean},{alias:"r",defaultValue:!1,description:"Install in all workspace packages",name:"recursive",type:Boolean},{alias:"w",defaultValue:!1,description:"Target workspace root",name:"workspace-root",type:Boolean},{alias:"F",description:"Filter by workspace package name",multiple:!0,name:"filter",type:String},{defaultValue:!1,description:"Skip typosquat name check",name:"no-typosquat-check",type:Boolean},{description:"Pick the installer explicitly. One of: auto, aube, pnpm, npm, yarn, bun. Overrides VIS_INSTALLER and install.backend in vis.config.",name:"installer",type:String},{defaultValue:!1,description:"Skip aube and use the lockfile-detected PM. Wins over --installer / VIS_INSTALLER / install.backend.",name:"no-aube",type:Boolean}]};var c_=Object.defineProperty,l_=f((e,t)=>c_(e,"name",{value:t,configurable:!0}),"e$B");const u_={alias:"ln",argument:{description:"Package name or directory path to link (omit to register current package)",name:"target",type:String},description:"Link a local package for development",examples:[["vis link ./packages/utils","Link local directory package (works on all PMs)"],["vis link","Register current package globally (pnpm <=10, yarn, npm, bun)"],["vis link react","Link global package into current project (pnpm <=10, yarn, npm, bun)"]],group:"Dependencies",loader:l_(()=>import("./handler17.js"),"loader"),name:"link"};var p_=Object.defineProperty,d_=f((e,t)=>p_(e,"name",{value:t,configurable:!0}),"e$A");const f_={description:"Lint workspace dependency policies (workspace-protocol, banned-deps, redefine-root, workspace-versions, custom-types, empty-deps, root-private, root-package-manager, root-deps, missing-package-json, dead-workspace-patterns, types-in-deps, similar-deps)",examples:[["vis lint","Run every enabled lint and exit non-zero on failures"],["vis lint --workspace-protocol","Only check that internal deps use workspace:*"],["vis lint --workspace-protocol --fix","Auto-rewrite internal deps to use workspace:*"],["vis lint --redefine-root","Flag deps duplicated between root and child packages"],["vis lint --banned-deps","Flag deps matching policy.bannedDeps in vis config"],["vis lint --workspace-versions","Flag external deps declared at different versions across packages"],["vis lint --workspace-versions --fix","Rewrite drifting deps to the highest sibling version"],["vis lint --workspace-versions --dep react","Limit version-drift check to a single dep"],["vis lint --workspace-versions --resolve catalog --fix","Rewrite drifting deps to catalog: when a catalog already pins them"],["vis lint --workspace-versions --resolve catalog --propose-min 3","Suggest new catalog entries for deps ≥3 packages already agree on"],["vis lint --custom-types","Flag drift in engines.{node,pnpm}, packageManager, volta.{node,pnpm,yarn}, devEngines"],["vis lint --custom-types --fix","Align all engines/packageManager/volta versions to the highest sibling"],["vis lint --empty-deps --fix","Drop empty `dependencies` / `devDependencies` / etc. blocks across the workspace"],["vis lint --root-private --fix",'Ensure the workspace root package.json has "private": true'],["vis lint --root-package-manager","Ensure the root package.json declares a `packageManager` field"],["vis lint --root-deps --fix","Move runtime deps off the private workspace root into devDependencies"],["vis lint --missing-package-json","Flag workspace dirs that don't contain a package.json"],["vis lint --dead-workspace-patterns --fix","Drop workspace patterns that match zero packages"],["vis lint --types-in-deps --fix","Move @types/* out of dependencies on private packages"],["vis lint --similar-deps","Flag drift across related dep families (react+react-dom, @babel/*, …)"],["vis lint --ban left-pad --ban request","One-off ban: flag any package declaring left-pad or request"],["vis lint --pin react@18.2.0","One-off pin: flag any package declaring react at a different version"],["vis lint --format json","Emit findings as JSON for CI / editor integrations"]],group:"Security & Health",loader:d_(()=>import("./handler43.js"),"loader"),name:"lint",options:[{defaultValue:!1,description:"Lint that internal deps use the workspace: protocol",name:"workspace-protocol",type:Boolean},{defaultValue:!1,description:"Lint that no child re-declares a dep already pinned in the workspace root",name:"redefine-root",type:Boolean},{defaultValue:!1,description:"Lint deps against policy.bannedDeps in vis config",name:"banned-deps",type:Boolean},{defaultValue:!1,description:"Lint that all packages declare external deps at the same version",name:"workspace-versions",type:Boolean},{defaultValue:!1,description:"Lint engines.{node,pnpm}, packageManager, volta.*, devEngines.* for drift across packages",name:"custom-types",type:Boolean},{defaultValue:!1,description:"Flag empty dependency blocks (`dependencies: {}`, `devDependencies: {}`, …) across the workspace",name:"empty-deps",type:Boolean},{defaultValue:!1,description:'Ensure the workspace root package.json sets `"private": true`',name:"root-private",type:Boolean},{defaultValue:!1,description:"Ensure the workspace root package.json declares a `packageManager` field",name:"root-package-manager",type:Boolean},{defaultValue:!1,description:"Flag runtime dependencies on the private workspace root (move them to devDependencies)",name:"root-deps",type:Boolean},{defaultValue:!1,description:"Flag workspace directories that lack a package.json",name:"missing-package-json",type:Boolean},{defaultValue:!1,description:"Flag workspace patterns (in `pnpm-workspace.yaml` / `package.json#workspaces`) that match zero packages",name:"dead-workspace-patterns",type:Boolean},{defaultValue:!1,description:"Flag `@types/*` declared in `dependencies` on a private package (should be in devDependencies)",name:"types-in-deps",type:Boolean},{defaultValue:!1,description:"Flag version drift across related dep families (react+react-dom, @babel/*, @storybook/*, …)",name:"similar-deps",type:Boolean},{description:"Restrict --workspace-versions to a single dep",name:"dep",type:String},{description:"Ban a dep name or glob for this run (repeatable). Auto-enables --banned-deps.",multiple:!0,name:"ban",type:String},{description:"Pin a dep to an exact specifier for this run, e.g. react@^18.2.0 (repeatable). Auto-enables --workspace-versions.",multiple:!0,name:"pin",type:String},{description:"Conflict resolution for --workspace-versions: highest, lowest, or catalog (default: highest)",name:"resolve",type:String},{description:"Propose catalog entries for deps ≥N packages already agree on. Activates with --resolve catalog.",name:"propose-min",type:Number},{defaultValue:!1,description:"Auto-fix violations in place (writes package.json files)",name:"fix",type:Boolean},{description:"Specifier used by --fix for workspace-protocol (default: workspace:*)",name:"fix-specifier",type:String},{description:"Output format: human, json, or minimal (default: human)",name:"format",type:String},{defaultValue:!1,description:"Suppress all output except errors",name:"quiet",type:Boolean}]};var m_=Object.defineProperty,h_=f((e,t)=>m_(e,"name",{value:t,configurable:!0}),"e$z");const g_={description:"List all workspace projects with metadata",examples:[["vis list","Show all projects"],["vis list --targets","Per-target rows with type, cache status and description"],["vis list --targets --inferred","Only show targets synthesized by Project Crystal-style inference"],["vis list --deps","Human-readable table of every dep-instance across the workspace"],["vis list --deps --internal-only","Only workspace deps in human form"],["vis list --deps --format=ndjson","Stream every dep-instance as NDJSON for jq pipelines"],["vis list --deps --format=json --pretty","Single pretty-printed JSON array of dep-instances"],["vis list --format=json","Machine-readable project listing"],['vis list --query "tag=frontend"',"Filter by query"]],group:"Workspace",loader:h_(()=>import("./handler33.js"),"loader"),name:"list",options:[{defaultValue:!1,description:"Filter target rows to only inferred targets (implies --targets)",name:"inferred",type:Boolean},{description:"Output format: table (default), json (single document), or ndjson (one record per line; --deps only)",name:"format",type:String},{defaultValue:!1,description:"Pretty-print with 2-space indent (only meaningful with --format=json)",name:"pretty",type:Boolean},{description:"Filter projects by query",name:"query",type:String},{defaultValue:!1,description:"Show per-target rows (type, cache, description)",name:"targets",type:Boolean},{defaultValue:!1,description:"Render a dep-instance view (table by default; use --format=ndjson|json for jq-friendly streams)",name:"deps",type:Boolean},{description:"Restrict --deps to specific dep blocks (repeatable)",multiple:!0,name:"dep-type",type:String},{defaultValue:!1,description:"With --deps: only show internal/workspace deps",name:"internal-only",type:Boolean},{defaultValue:!1,description:"With --deps: only show external/registry deps",name:"external-only",type:Boolean},{description:"With --deps: glob of declaring package names to keep (repeatable)",multiple:!0,name:"include",type:String},{description:"With --deps: glob of declaring package names to drop (repeatable)",multiple:!0,name:"exclude",type:String}]};var y_=Object.defineProperty,St=f((e,t)=>y_(e,"name",{value:t,configurable:!0}),"t$p");const Pt=[{defaultValue:!1,description:"Preview changes without applying",name:"dry-run",type:Boolean},{alias:"y",defaultValue:!1,description:"Skip the confirmation prompt",name:"yes",type:Boolean}],v_={commandPath:["migrate"],description:"Migrate dependencies and scripts to vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateDepsExecute})),"loader"),name:"deps",options:[...Pt]},b_={commandPath:["migrate"],description:"Inline lint-staged configuration into vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateLintStagedExecute})),"loader"),name:"lint-staged",options:[...Pt]},$_={commandPath:["migrate"],description:"Inline nano-staged configuration into vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateNanoStagedExecute})),"loader"),name:"nano-staged",options:[...Pt]},w_={commandPath:["migrate"],description:"Migrate turborepo tasks/config to vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateTurborepoExecute})),"loader"),name:"turborepo",options:[...Pt]},k_={commandPath:["migrate"],description:"Migrate nx targets/config to vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateNxExecute})),"loader"),name:"nx",options:[...Pt,{defaultValue:!1,description:"Overwrite an existing vis.config.ts (a .bak is taken first)",name:"force",type:Boolean}]},S_={commandPath:["migrate"],description:"Migrate moon tasks/templates to vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateMoonExecute})),"loader"),name:"moon",options:[...Pt,{defaultValue:!1,description:"Copy .moon/templates/* into .vis/templates/* so `vis generate` works without .moon/",name:"copy-templates",type:Boolean}]},E_={commandPath:["migrate"],description:"Migrate gitleaks config/baseline/hooks to `vis secrets`",examples:[["vis migrate gitleaks","Migrate gitleaks config/baseline/hooks to `vis secrets`"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateGitleaksExecute})),"loader"),name:"gitleaks",options:[...Pt]},D_={commandPath:["migrate"],description:"Migrate Kingfisher baseline/hooks/scripts to `vis secrets`",examples:[["vis migrate kingfisher","Migrate Kingfisher baseline/hooks/scripts to `vis secrets`"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateKingfisherExecute})),"loader"),name:"kingfisher",options:[...Pt]},C_={commandPath:["migrate"],description:"Replace secretlint with `vis secrets`",examples:[["vis migrate secretlint","Replace secretlint with `vis secrets`"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateSecretlintExecute})),"loader"),name:"secretlint",options:[...Pt]},A_={commandPath:["migrate"],description:"Translate syncpack customTypes into vis policy and strip the syncpack dep/scripts",examples:[["vis migrate syncpack","Translate syncpack customTypes into vis policy and strip the syncpack dep/scripts"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateSyncpackExecute})),"loader"),name:"syncpack",options:[...Pt]},O_={commandPath:["migrate"],description:"Strip sherif config/dep/scripts and surface ignore-rules as a positive `vis lint --<rule>` command",examples:[["vis migrate sherif","Strip sherif config/dep/scripts and surface ignore-rules as a positive `vis lint --<rule>` command"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateSherifExecute})),"loader"),name:"sherif",options:[...Pt]},j_={commandPath:["migrate"],description:"Auto-rewrite vis.config.ts to use renamed fields (targetDefaults → tasks, taskDefaults → scopedTasks, taskRunnerOptions → taskRunner)",examples:[["vis migrate self","Rewrite vis.config.ts in-place (a .bak is taken first)"],["vis migrate self --dry-run","Preview the rewrite without writing"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateSelfExecute})),"loader"),name:"self",options:[...Pt]},x_={commandPath:["migrate"],description:"Audit the workspace for stray gitleaks/secretlint/sherif/syncpack references (exit 1 on issues)",examples:[["vis migrate verify","Audit the workspace for stray gitleaks/secretlint/sherif/syncpack references (exit 1 on issues)"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateVerifyExecute})),"loader"),name:"verify",options:[]},P_={commandPath:["migrate"],description:"Run every applicable migration non-interactively (autodetected)",examples:[["vis migrate all --yes","Run every detected migration without prompting (CI-friendly)"],["vis migrate all --dry-run","Preview every detected migration without writing files"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateAllExecute})),"loader"),name:"all",options:[...Pt]},N_=[P_,v_,b_,$_,w_,k_,S_,j_,E_,D_,C_,A_,O_,x_];var R_=Object.defineProperty,F_=f((e,t)=>R_(e,"name",{value:t,configurable:!0}),"r$x");const L_=new Set(["--cwd"]),I_=new Set(["--help","--version","-h","-V"]),T_=F_(e=>{const t=[];for(let r=0;r<e.length;r+=1){const n=e[r];if(n!==void 0){if(I_.has(n))return!1;if(n.startsWith("-")){const i=n.indexOf("="),s=i===-1?n:n.slice(0,i);if(L_.has(s)&&i===-1){const o=e[r+1];o!==void 0&&!o.startsWith("-")&&(r+=1)}continue}t.push(n)}}return t.length===1&&t[0]==="migrate"},"isBareMigrateInvocation");var B_=Object.defineProperty,__=f((e,t)=>B_(e,"name",{value:t,configurable:!0}),"t$o");const Mg=__(e=>e in xl&&xl[e]!=="0"&&xl[e]!=="false","check"),Ir=Mg("CI")||Mg("CONTINUOUS_INTEGRATION");var M_=Object.defineProperty,hu=f((e,t)=>M_(e,"name",{value:t,configurable:!0}),"i$j");class V_{static{f(this,"MigrateStore")}static{hu(this,"MigrateStore")}#e;#r=new Set;constructor(t){this.#e={applyProgress:null,checkedItems:new Set(t.map(r=>r.entry.id)),error:null,focusedPanel:"list",items:t,phase:"browsing",selectedIndex:0}}getSnapshot=hu(()=>this.#e,"getSnapshot");subscribe=hu(t=>(this.#r.add(t),()=>{this.#r.delete(t)}),"subscribe");getCheckedItems(){return this.#e.items.filter(t=>this.#e.checkedItems.has(t.entry.id))}getSelectedItem(){return this.#e.items[this.#e.selectedIndex]??null}setSelectedIndex(t){const r=Math.max(0,Math.min(t,this.#e.items.length-1));r!==this.#e.selectedIndex&&this.#t({...this.#e,selectedIndex:r})}setFocusedPanel(t){t!==this.#e.focusedPanel&&this.#t({...this.#e,focusedPanel:t})}toggleCheck(t){const r=new Set(this.#e.checkedItems);r.has(t)?r.delete(t):r.add(t),this.#t({...this.#e,checkedItems:r})}checkAll(){this.#t({...this.#e,checkedItems:new Set(this.#e.items.map(t=>t.entry.id))})}uncheckAll(){this.#t({...this.#e,checkedItems:new Set})}toggleAll(){this.#e.checkedItems.size===this.#e.items.length?this.uncheckAll():this.checkAll()}startApply(){const t=this.getCheckedItems().length;this.#t({...this.#e,applyProgress:{current:0,total:t},phase:"applying"})}updateApplyProgress(t){this.#e.applyProgress&&this.#t({...this.#e,applyProgress:{...this.#e.applyProgress,current:t}})}markDone(){this.#t({...this.#e,phase:"done"})}setError(t){this.#t({...this.#e,error:t,phase:"error"})}#t(t){this.#e=t;for(const r of this.#r)try{r()}catch{}}}var W_=Object.defineProperty,U_=f((e,t)=>W_(e,"name",{value:t,configurable:!0}),"f$a");const Vg=U_(({autoExitSeconds:e,onCancel:t,visible:r})=>{const{exit:n}=vb(),[i,s]=Is(e||3),o=Js(null),a=Js(0);gb(()=>{if(!r)return;const c=e||3;s(c),a.current=Date.now();let u=c;return o.current=setInterval(()=>{u-=1,u<=0?(o.current&&(clearInterval(o.current),o.current=null),s(0),n()):s(u)},1e3),()=>{o.current&&(clearInterval(o.current),o.current=null)}},[r,e,n]);const l=yb(()=>{o.current&&(clearInterval(o.current),o.current=null),t()},[t]);return bb((c,u)=>{Date.now()-a.current<200||(c==="q"?n():l())},{isActive:r}),z(Ap,{backgroundColor:"#1e1e1e",footer:pe(H,{dimColor:!0,children:["Press"," ",z(H,{bold:!0,color:"white",children:"q"})," ","to exit,"," ",z(H,{bold:!0,color:"white",children:"any key"})," ","to stay"]}),title:`Exiting in ${i}…`,visible:r,width:50,children:z(H,{dimColor:!0,children:"Stay to explore the results interactively."})})},"QuitDialog");var G_=Object.defineProperty,W1=f((e,t)=>G_(e,"name",{value:t,configurable:!0}),"n$n");const q_=W1(e=>{if(e.startsWith("⚠"))return"yellow";e.startsWith("── ")||e.startsWith("[dry-run]")},"colorForPreviewLine"),z_=W1(({focused:e,item:t,scrollRef:r})=>t?pe(he,{borderColor:e?"white":"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,children:[z(he,{flexShrink:0,paddingTop:1,paddingX:2,children:z(H,{bold:!0,color:"white",children:t.entry.title})}),z(he,{flexShrink:0,paddingBottom:1,paddingX:2,children:z(H,{dimColor:!0,children:t.entry.description})}),z(iD,{flexGrow:1,flexShrink:1,paddingX:2,ref:r,scrollbar:!0,scrollbarColor:"gray",scrollbarStyle:"block",children:pe(he,{flexDirection:"column",children:[z(H,{dimColor:!0,children:"── What will change ──"}),z(H,{}),t.preview.length===0&&z(H,{dimColor:!0,children:"(no preview available)"}),t.preview.map((i,s)=>{const o=q_(i);return i===""?z(H,{},`blank-${String(s)}`):z(H,{color:o,children:i},`${String(s)}-${i.slice(0,20)}`)})]})})]}):z(he,{alignItems:"center",borderColor:"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,justifyContent:"center",children:z(H,{dimColor:!0,children:"No migration selected"})}),"MigrateDetailPanel");var H_=Object.defineProperty,U1=f((e,t)=>H_(e,"name",{value:t,configurable:!0}),"g$d");const J_=U1(({checked:e,isSelected:t,item:r})=>{const n=e?"☑":"☐",i=r.preview.length;return pe(he,{flexShrink:0,height:1,children:[z(H,{children:t?">":" "}),pe(H,{color:e?"white":"gray",children:[" ",n," "]}),z(he,{flexGrow:1,children:z(H,{bold:t,inverse:t,wrap:"truncate",children:r.entry.title})}),pe(H,{dimColor:!0,children:[" ",i," ","change",i===1?"":"s"," "]})]})},"MigrationRow"),K_=U1(({checkedItems:e,focused:t,isDryRun:r,items:n,scrollOffset:i,selectedIndex:s,viewportHeight:o})=>{const a=t?"white":"gray",l=n.filter(p=>e.has(p.entry.id)).length,c=n.map((p,m)=>z(J_,{checked:e.has(p.entry.id),isSelected:m===s,item:p},p.entry.id)),u=n.length,d=u>o&&o>0;return pe(he,{borderColor:a,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[pe(he,{flexShrink:0,gap:1,paddingX:1,children:[z(H,{bold:!0,inverse:!0,children:" MIGRATE "}),pe(H,{wrap:"truncate",children:[n.length," ","applicable"]}),l>0&&pe(H,{dimColor:!0,children:[" — ",l," selected"]}),r&&z(H,{color:"yellow",children:" (dry-run)"})]}),pe(he,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[z(he,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingLeft:1,children:z(he,{flexDirection:"column",marginTop:-i,children:c})}),d&&z(he,{flexShrink:0,marginLeft:1,marginRight:1,children:z(sD,{contentHeight:u,placement:"inset",scrollOffset:i,style:"block",viewportHeight:o})})]})]})},"MigrateListPanel");var Y_=Object.defineProperty,X_=f((e,t)=>Y_(e,"name",{value:t,configurable:!0}),"N$e");const Q_=100,Z_=40,e3=10,t3=X_(({autoExitSeconds:e=0,isDryRun:t,store:r})=>{const{exit:n}=vb(),{columns:i,rows:s}=nD(),o=rD(r.subscribe,r.getSnapshot),[a,l]=Is(!1),[c,u]=Is(!1),[d,p]=Is(!1),[m,g]=Is(0),$=Js(null),S=Js(null),k=Js(null),v=o.items[o.selectedIndex]??null,h=Math.max(1,s-6),b=yb(Y=>{g(P=>Y>=P+h?Math.max(0,Y-h+1):Y<P?Math.max(0,Y):P)},[h]);if(gb(()=>{S.current?.scrollToTop()},[v?.entry.id]),bb((Y,P)=>{if(Y==="c"&&P.ctrl){n();return}if(!d){if(c){Y==="u"||P.return?(u(!1),r.startApply(),n(r.getCheckedItems())):P.escape||Y==="q"?u(!1):P.downArrow||Y==="j"?k.current?.scrollBy(1):(P.upArrow||Y==="k")&&k.current?.scrollBy(-1);return}if(a){P.escape||Y==="?"?l(!1):Y==="q"?(l(!1),p(!0)):P.downArrow||Y==="j"?$.current?.scrollBy(1):(P.upArrow||Y==="k")&&$.current?.scrollBy(-1);return}if(Y==="?"){l(!0);return}if(Y==="q"){p(!0);return}if(P.tab){r.setFocusedPanel(o.focusedPanel==="list"?"detail":"list");return}if(o.focusedPanel==="list"){if(P.downArrow||Y==="j"){const N=Math.min(o.selectedIndex+1,o.items.length-1);r.setSelectedIndex(N),b(N);return}if(P.upArrow||Y==="k"){const N=Math.max(o.selectedIndex-1,0);r.setSelectedIndex(N),b(N);return}if(P.pageDown){const N=Math.min(o.selectedIndex+10,o.items.length-1);r.setSelectedIndex(N),b(N);return}if(P.pageUp){const N=Math.max(o.selectedIndex-10,0);r.setSelectedIndex(N),b(N);return}if(P.home){r.setSelectedIndex(0),g(0);return}if(P.end){const N=o.items.length-1;r.setSelectedIndex(N),b(N);return}if(Y===" "||P.return){v&&r.toggleCheck(v.entry.id);return}if(Y==="a"){r.toggleAll();return}if(Y==="u"&&!t&&o.checkedItems.size>0){u(!0);return}P.rightArrow&&r.setFocusedPanel("detail");return}if(o.focusedPanel==="detail"){if(P.escape||P.leftArrow){r.setFocusedPanel("list");return}if(P.downArrow||Y==="j"){S.current?.scrollBy(1);return}if(P.upArrow||Y==="k"){S.current?.scrollBy(-1);return}if(P.pageDown){S.current?.scrollBy(10);return}if(P.pageUp){S.current?.scrollBy(-10);return}if(P.home){S.current?.scrollToTop();return}P.end&&S.current?.scrollToBottom()}}},{isActive:!0}),i<Z_||s<e3)return z(he,{alignItems:"center",height:s,justifyContent:"center",width:i,children:pe(H,{color:"yellow",children:["Terminal too small (",i,"x",s,")"]})});const w=i>=Q_,y=[pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"q"}),z(H,{dimColor:!0,children:"QUIT"})]},"q"),pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"?"}),z(H,{dimColor:!0,children:"HELP"})]},"?"),pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"↑↓"}),z(H,{dimColor:!0,children:"NAV"})]},"nav"),pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"Space"}),z(H,{dimColor:!0,children:"CHECK"})]},"sp"),pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"a"}),z(H,{dimColor:!0,children:"ALL"})]},"a")];!t&&o.checkedItems.size>0&&y.push(pe(he,{gap:1,children:[z(H,{bold:!0,color:"green",children:"u"}),z(H,{dimColor:!0,children:"APPLY"})]},"u")),y.push(pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"Tab"}),z(H,{dimColor:!0,children:"PANEL"})]},"tab"));const D=z(he,{borderBottom:!1,borderColor:"gray",borderLeft:!1,borderRight:!1,borderStyle:"single",flexShrink:0,children:z(he,{flexWrap:"wrap",gap:2,paddingX:1,children:y})}),E=pe(Ap,{footer:pe(H,{dimColor:!0,children:[z(H,{bold:!0,color:"white",children:"↑↓"})," scroll ",z(H,{bold:!0,color:"white",children:"?"}),"/",z(H,{bold:!0,color:"white",children:"Esc"})," close"]}),scrollRef:$,title:"KEYBOARD SHORTCUTS",visible:a,width:52,children:[pe(he,{flexDirection:"column",marginBottom:1,children:[z(H,{bold:!0,color:"white",children:"NAVIGATION"}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" ↑/k"}),z(H,{dimColor:!0,children:" Move up"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" ↓/j"}),z(H,{dimColor:!0,children:" Move down"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" Tab"}),z(H,{dimColor:!0,children:" Switch panel"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" →/←"}),z(H,{dimColor:!0,children:" Focus detail/list"})]})]}),pe(he,{flexDirection:"column",marginBottom:1,children:[z(H,{bold:!0,color:"white",children:"SELECTION"}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" Space"}),z(H,{dimColor:!0,children:" Toggle migration"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" a"}),z(H,{dimColor:!0,children:" Toggle all"})]})]}),pe(he,{flexDirection:"column",children:[z(H,{bold:!0,color:"white",children:"ACTIONS"}),!t&&pe(H,{children:[z(H,{bold:!0,color:"white",children:" u"}),z(H,{dimColor:!0,children:" Apply selected migrations"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" q"}),z(H,{dimColor:!0,children:" Quit"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" ?"}),z(H,{dimColor:!0,children:" Toggle help"})]})]})]}),A=r.getCheckedItems(),j=z(he,{alignItems:"center",flexDirection:"column",children:pe(H,{dimColor:!0,children:["Press ",z(H,{bold:!0,color:"white",children:"u"})," or ",z(H,{bold:!0,color:"white",children:"Enter"})," to confirm, ",z(H,{bold:!0,color:"white",children:"Esc"})," to cancel"]})}),G=z(Ap,{footer:j,scrollRef:k,title:`Apply ${String(A.length)} migration${A.length===1?"":"s"}?`,visible:c,width:70,children:A.map(Y=>pe(he,{gap:1,children:[pe(H,{children:[" ",Y.entry.title]}),pe(H,{dimColor:!0,children:["(",Y.preview.length," ","change",Y.preview.length===1?"":"s",")"]})]},Y.entry.id))}),W=z(K_,{checkedItems:o.checkedItems,focused:o.focusedPanel==="list",isDryRun:t,items:o.items,scrollOffset:m,selectedIndex:o.selectedIndex,viewportHeight:h}),ce=z(z_,{focused:o.focusedPanel==="detail",item:v,scrollRef:S});if(w){const Y=Math.floor(i*.55);return pe(he,{flexDirection:"column",height:s,width:i,children:[pe(he,{flexDirection:"row",flexGrow:1,children:[z(he,{flexGrow:1,children:W}),z(he,{width:Y,children:ce})]}),D,G,z(Vg,{autoExitSeconds:e||3,onCancel:f(()=>{p(!1)},"onCancel"),visible:d}),E]})}const te=Math.floor(s*.45);return pe(he,{flexDirection:"column",height:s,width:i,children:[z(he,{height:te,children:W}),z(he,{flexGrow:1,children:ce}),D,G,z(Vg,{autoExitSeconds:e||3,onCancel:f(()=>{p(!1)},"onCancel"),visible:d}),E]})},"VisMigrateApp");var r3=Object.defineProperty,Hf=f((e,t)=>r3(e,"name",{value:t,configurable:!0}),"r$v");const n3=/\n([ \t]+)/,i3=Hf(e=>{const{indent:t,lineEnding:r}=oD(e),n={};return t!==void 0&&(n.indent=t),(r==="lf"||r==="crlf")&&(n.lineEnding=r),n},"resolveEditorConfigDefaults"),br=Hf((e,t,r={})=>{const{defaultIndent:n=" ",useEditorconfig:i=!0}=r;if(i){const{indent:s}=i3(e);if(s!==void 0)return s}if(t!==void 0){const s=n3.exec(t);if(s?.[1]!==void 0)return s[1]}return n},"resolveIndentForFile"),Jf=Hf((e,t={})=>{const r=x(e)?J(e):void 0;return br(e,r,t)},"resolveIndentForExistingFile");var s3=Object.defineProperty,o3=f((e,t)=>s3(e,"name",{value:t,configurable:!0}),"t$n");const G1=[".lintstagedrc.json",".lintstagedrc"],q1=[".lintstagedrc.yaml",".lintstagedrc.yml",".lintstagedrc.mjs","lint-staged.config.mjs",".lintstagedrc.cjs","lint-staged.config.cjs",".lintstagedrc.js","lint-staged.config.js",".lintstagedrc.ts","lint-staged.config.ts",".lintstagedrc.mts","lint-staged.config.mts",".lintstagedrc.cts","lint-staged.config.cts"],Kf=[...G1,...q1],a3=[/^((?:[A-Z_][A-Z0-9_]*(?:=\S*)?\s+)*)(pnpm|pnpm exec|npx|yarn|yarn run|npm exec|npm run|bunx|bun run|bun x)\s+lint-staged\b/,/^((?:[A-Z_][A-Z0-9_]*(?:=\S*)?\s+)*)lint-staged\b/],z1=[".nano-staged.json",".nanostagedrc"],H1=[".nano-staged.mjs",".nano-staged.cjs",".nano-staged.js","nano-staged.config.mjs","nano-staged.config.cjs","nano-staged.config.js","nano-staged.config.mts","nano-staged.config.cts","nano-staged.config.ts"],Yf=[...z1,...H1],c3=[/^((?:[A-Z_][A-Z0-9_]*(?:=\S*)?\s+)*)(pnpm|pnpm exec|npx|yarn|yarn run|npm exec|npm run|bunx|bun run|bun x)\s+nano-staged\b/,/^((?:[A-Z_][A-Z0-9_]*(?:=\S*)?\s+)*)nano-staged\b/],J1=["husky","lint-staged","nano-staged"],l3=/\(is-ci \|\| husky \|\| exit 0\)\s*&&\s*/g,u3=/\bhusky(?:\s+install)?\s*&&\s*/g,p3=/\s*&&\s*husky(?:\s+install)?/g,d3=/\s*\|\|\s*husky(?:\s+install)?/g,f3=[l3,u3,p3,d3],K1=o3(e=>{if(e==="husky"||e==="husky install")return;let t=e;for(const r of f3)t=t.replace(r,"");return t=t.trim(),t===e?e:t||void 0},"cleanHuskyFromScript");var m3=Object.defineProperty,Ga=f((e,t)=>m3(e,"name",{value:t,configurable:!0}),"o$r");const h3=/\/$/,g3=Ga(e=>{let t='"$0"';for(let r=0;r<e;r+=1)t=`"$(dirname ${t})"`;return t},"nestedDirname"),y3=Ga(e=>{const t=e.split("/").filter(r=>r!==""&&r!==".").length+2;return`#!/usr/bin/env sh
|
|
1004
|
+
`),r.postMessage&&(i+=r.postMessage),i},"generateMissingPackagesInstallMessage");var cT=Object.defineProperty,lT=f((e,t)=>cT(e,"name",{value:t,configurable:!0}),"c$t"),uT=Object.defineProperty,N1=lT((e,t)=>uT(e,"name",{value:t,configurable:!0}),"p");const pT=Ze(import.meta.url),js=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,dT=N1(e=>{if(typeof js<"u"&&js.versions&&js.versions.node){const[t,r]=js.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return js.getBuiltinModule(e)}return pT(e)},"__cjs_getBuiltinModule"),{existsSync:Wa,readFileSync:R1}=dT("node:fs");var fT=Object.defineProperty,F1=N1((e,t)=>fT(e,"name",{value:t,configurable:!0}),"i");F1(async e=>{const t=await yo(["lerna.json","turbo.json"],{type:"file",...e&&{cwd:e}});if(t?.endsWith("lerna.json")){const n=await bo(t);if(n&&typeof n=="object"&&!Array.isArray(n)){const i=n;if(i.useWorkspaces||i.packages)return{path:Ge(t),strategy:"lerna"}}}const r=t?.endsWith("turbo.json");try{const{packageManager:n,path:i}=await oT(e);if(["npm","yarn"].includes(n)){const s=C(i,"package.json");if(Wa(s)&&R1(C(i,"package.json"),"utf8").includes("workspaces"))return{path:i,strategy:r?"turbo":n}}else if(n==="pnpm"){const s=C(i,"pnpm-workspace.yaml");if(Wa(s))return{path:i,strategy:r?"turbo":"pnpm"}}}catch(n){if(!(n instanceof Ri))throw n}throw new Error(`No monorepo root could be found upwards from the directory ${e} using lerna, yarn, pnpm, or npm as indicators.`)},"findMonorepoRoot");const L1=F1(e=>{const t=vo(["lerna.json","turbo.json"],{type:"file",...e&&{cwd:e}});if(t?.endsWith("lerna.json")){const n=ke(t);if(n.useWorkspaces||n.packages)return{path:Ge(t),strategy:"lerna"}}const r=t?.endsWith("turbo.json");try{const{packageManager:n,path:i}=aT(e);if(["npm","yarn"].includes(n)){const s=C(i,"package.json");if(Wa(s)&&R1(C(i,"package.json"),"utf8").includes("workspaces"))return{path:i,strategy:r?"turbo":n}}else if(n==="pnpm"){const s=C(i,"pnpm-workspace.yaml");if(Wa(s))return{path:i,strategy:r?"turbo":"pnpm"}}}catch(n){if(!(n instanceof Ri))throw n}throw new Error(`No monorepo root could be found upwards from the directory ${e} using lerna, yarn, pnpm, or npm as indicators.`)},"findMonorepoRootSync");var mT="1.0.0-alpha.20";const Ua={version:mT};var hT=Object.defineProperty,gT=f((e,t)=>hT(e,"name",{value:t,configurable:!0}),"e$_");const yT={argument:{description:"Target selector (same syntax as `vis run`): `build`, `:build`, `~:test`, `#tag:lint`, …",name:"selector",type:String},description:"Show the execution plan for a target without running it",examples:[["vis action-graph build","Print the task plan for `build` on every project"],["vis action-graph :test","Moon-style selector"],["vis action-graph build --json","Emit a JSON description of the plan"],['vis action-graph lint --query "tag=frontend"',"Filter projects by query"]],group:"Workspace",loader:gT(()=>import("./handler.js"),"loader"),name:"action-graph",options:[{defaultValue:!1,description:"Emit JSON instead of ASCII",name:"json",type:Boolean},{description:"Filter matched projects by a query",name:"query",type:String}]};var vT=Object.defineProperty,bT=f((e,t)=>vT(e,"name",{value:t,configurable:!0}),"e$Z");const $T={argument:{description:"Packages to add (e.g., react react-dom)",name:"packages",type:String},description:"Add packages using the detected package manager",examples:[["vis add react react-dom","Add packages"],["vis add -D typescript @types/react","Add as dev dependencies"],["vis add react --filter app","Add to specific workspace package"],["vis add react --to web","Add to one package, auto-conforming the version to existing catalogs / sibling deps"],["vis add -g typescript","Add globally (uses npm)"],["vis add lodash -w","Add to workspace root"],["vis add lodash --no-socket-check","Add without Socket.dev check"],["vis add lodash --no-typosquat-check","Skip typosquat name check"],["vis add lodash --no-marshall-check","Skip the offline marshall pipeline (author, downloads, etc.)"],["vis add lodash --run-scripts","Run lifecycle scripts (opts out of vis's default block-by-default policy)"]],group:"Dependencies",loader:bT(()=>import("./handler16.js"),"loader"),name:"add",options:[{alias:"D",defaultValue:!1,description:"Add as dev dependency",name:"save-dev",type:Boolean},{alias:"E",defaultValue:!1,description:"Save exact version",name:"exact",type:Boolean},{alias:"P",defaultValue:!1,description:"Add as peer dependency",name:"save-peer",type:Boolean},{alias:"O",defaultValue:!1,description:"Add as optional dependency",name:"save-optional",type:Boolean},{alias:"g",defaultValue:!1,description:"Install globally (uses npm)",name:"global",type:Boolean},{alias:"w",defaultValue:!1,description:"Add to workspace root",name:"workspace-root",type:Boolean},{defaultValue:!1,description:"Use workspace protocol (pnpm)",name:"workspace",type:Boolean},{alias:"F",description:"Filter by workspace package name",multiple:!0,name:"filter",type:String},{description:"Target a single workspace package and auto-conform the version to existing catalogs / sibling deps (syncpack#285)",name:"to",type:String},{defaultValue:!1,description:"Skip typosquat name check before adding",name:"no-typosquat-check",type:Boolean},{defaultValue:!1,description:"Skip Socket.dev security check before adding",name:"no-socket-check",type:Boolean},{defaultValue:!1,description:"Skip the offline marshall pipeline (author, provenance, metadata, downloads, expired-domains, new-bin, signatures, archived-repo)",name:"no-marshall-check",type:Boolean},{defaultValue:!1,description:"Run lifecycle scripts during add (opts out of vis's default block-by-default policy; allowlisted packages run via security.policies.installScripts.allow)",name:"run-scripts",type:Boolean},{defaultValue:!1,description:"After adding, recursively install non-optional peer dependencies that aren't already in the workspace (matches nypm's installPeerDependencies)",name:"auto-install-peers",type:Boolean}]},Gf={description:"Override the cache DB path (defaults to <cache>/vis/advisories/db.sqlite via @visulima/find-cache-dir).",name:"db",type:String},qf={description:"Output format: table (default) or json.",name:"format",type:String},wT={commandPath:["advisories"],description:"Download and ingest one or more OSV ecosystem dumps into the local cache",examples:[["vis advisories sync","Sync the npm ecosystem (default)"],["vis advisories sync --ecosystem npm","Sync a single explicit ecosystem"],["vis advisories sync --ecosystem npm,PyPI","Sync several ecosystems in one pass"],["vis advisories sync --force","Re-download even when the ETag matches"],["vis advisories sync --source https://mirror.example.com","Use a corporate OSV mirror (must be in allowedHosts)"]],group:"Security & Health",loader:Pe(()=>import("./sync.js"),"advisoriesSyncExecute"),name:"sync",options:[{description:"Comma-separated list of ecosystems to sync (default: npm).",name:"ecosystem",type:String},{defaultValue:!1,description:"Re-download and re-ingest even if the upstream ETag is unchanged.",name:"force",type:Boolean},{description:"Override the advisory source URL. Must be https and resolve to an allowed host.",name:"source",type:String},Gf,qf]},kT={commandPath:["advisories"],description:"Print the local advisory DB summary: path, schema version, ecosystems, row counts, last sync, ETag",examples:[["vis advisories status","Human-readable summary"],["vis advisories status --format json","Machine-readable for CI freshness checks"]],group:"Security & Health",loader:Pe(()=>import("./status.js"),"advisoriesStatusExecute"),name:"status",options:[Gf,qf]},ST={commandPath:["advisories"],description:"Delete the local advisory DB. The next `vis audit --offline` will fail until you re-sync",examples:[["vis advisories prune","Confirm and delete the local DB"],["vis advisories prune --force","Delete without confirmation"]],group:"Security & Health",loader:Pe(()=>import("./prune.js"),"advisoriesPruneExecute"),name:"prune",options:[Gf,{defaultValue:!1,description:"Skip the confirmation prompt.",name:"force",type:Boolean},qf]},ET=[wT,kT,ST];var DT=Object.defineProperty,CT=f((e,t)=>DT(e,"name",{value:t,configurable:!0}),"e$Y");const AT={argument:{description:"The target to run (e.g., build, test, lint)",name:"target",type:String},description:"Run a target only on projects affected by recent changes",examples:[["vis affected build","Run build on affected projects"],["vis affected test --base=main","Run tests on projects changed since main"],["vis affected destroy --reverse","Tear down affected projects leaves-first"]],group:"Run & Execute",loader:CT(()=>import("./handler2.js"),"loader"),name:"affected",options:[{defaultValue:"HEAD~1",description:"Git base ref for comparison",name:"base",type:String},{defaultValue:"HEAD",description:"Git head ref for comparison",name:"head",type:String},{defaultValue:"deep",description:'Downstream scope: "none", "direct", or "deep" — controls how far to include dependents of changed projects',name:"downstream",type:String},{defaultValue:"none",description:'Upstream scope: "none", "direct", or "deep" — controls how far to include dependencies of changed projects',name:"upstream",type:String},{defaultValue:3,description:"Maximum number of parallel tasks",name:"parallel",type:Number},{defaultValue:!0,description:"Enable caching (use --no-cache to disable)",name:"cache",type:Boolean},{defaultValue:!1,description:"Show what would run without executing",name:"dry-run",type:Boolean},{description:'Partition tasks for distributed CI (e.g., "1/4" for first of four runners). Falls back to VIS_PARTITION env var.',name:"partition",type:String},{description:"Filter affected projects by a query (e.g. 'language=typescript && tag=lib')",name:"query",type:String},{defaultValue:!1,description:"Run the dependency graph in reverse (leaves first, then their dependents). Useful for teardown targets like `destroy`/`undeploy` where dependents must run before the things they depend on.",name:"reverse",type:Boolean},{description:"Comma-separated tags this runner advertises (e.g. 'gpu,slow'). Forwarded verbatim to the downstream `vis run` so capability-gated tasks resolve identically. Falls back to VIS_RUNNER_TAGS env var.",name:"runner-tags",type:String}]},I1={description:"Output format: table or json (default: table)",name:"format",type:String},OT={commandPath:["ai"],description:"List detected AI providers and show which one is selected",examples:[["vis ai providers","List all AI providers and their status"],["vis ai providers --format json","Output as JSON"]],group:"System",loader:Pe(()=>import("./handler30.js"),"aiProvidersExecute"),name:"providers",options:[I1]},jT={commandPath:["ai"],description:"Test the best available AI provider with a quick prompt",examples:[["vis ai test","Test the selected provider"]],group:"System",loader:Pe(()=>import("./handler30.js"),"aiTestExecute"),name:"test",options:[]},xT={argument:{description:"Task ID to propose a fix for (e.g. @my/app:build)",name:"taskId",type:String},commandPath:["ai"],description:"Read a failed task's logs and propose a structured patch (Phase 1: local-only, no git)",examples:[["vis ai fix @myorg/app:build","Print proposed patch for the failed task"],["vis ai fix @myorg/app:build --apply","Apply the patch to disk after confirming"],["vis ai fix @myorg/app:build --format json","Machine-readable patch output"],["vis ai fix @myorg/app:build --run 2026-04-28T...","Inspect a specific historical run"]],group:"System",loader:Pe(()=>import("./handler30.js"),"aiFixExecute"),name:"fix",options:[I1,{description:"Use a specific run ID from .vis/runs/ instead of the latest run",name:"run",type:String},{defaultValue:!1,description:"Apply the proposed patch to disk after printing it",name:"apply",type:Boolean},{defaultValue:!1,description:"Bypass the AI response cache",name:"no-cache",type:Boolean},{defaultValue:!1,description:"Skip the confirmation prompt before applying",name:"yes",type:Boolean}]},PT={description:"AI-assisted commands: provider detection and failure-fix proposals (cache management lives under `vis cache`)",examples:[["vis ai","List all AI subcommands"],["vis ai discover-help","Machine-readable subcommand catalogue (for AI agents)"]],group:"System",loader:Pe(()=>import("./handler30.js"),"aiRootExecute"),name:"ai",options:[]},NT={commandPath:["ai"],description:"Print the machine-readable AI subcommand catalogue (JSON to stdout, designed for AI agents)",examples:[["vis ai discover-help","Emit the discovery payload as JSON"],["vis ai discover-help | jq '.subcommands[].path'","List all available paths"]],group:"System",loader:Pe(()=>import("./handler30.js"),"aiDiscoverHelpExecute"),name:"discover-help",options:[]},RT={commandPath:["ai"],description:"Diagnose the most recent failed task and post a structured patch as a PR/MR comment (or Buildkite annotation)",examples:[["vis ai heal","Heal the most recent failure"],["vis ai heal --dry-run","Propose a patch but skip apply / validate / post"],["vis ai heal --run 2026-04-28T...","Heal a specific historical run"]],group:"System",loader:Pe(()=>import("./heal.js").then(e=>e.h),"aiHeal"),name:"heal",options:[{defaultValue:!1,description:"Show the proposal and exit without applying or posting it",name:"dry-run",type:Boolean},{defaultValue:!1,description:"Bypass the AI response cache",name:"no-cache",type:Boolean},{description:"Use a specific run ID from .vis/runs/ instead of the latest run",name:"run",type:String},{description:"Per-task validation timeout in seconds (default: 1800)",name:"validation-timeout",type:Number}]},FT={commandPath:["ai","heal"],description:"Re-run the proposed fix and commit it to the PR/MR branch when validation passes",examples:[["vis ai heal accept","Triggered automatically by a `/vis heal accept` PR comment (GitHub/GitLab) or a Buildkite block-step unblock"]],group:"System",loader:Pe(()=>import("./heal-accept.js"),"aiHealAccept"),name:"accept",options:[{description:"Use a specific run ID from .vis/runs/ instead of the latest run",name:"run",type:String},{description:"Per-task validation timeout in seconds (default: 1800)",name:"validation-timeout",type:Number}]},T1=[PT,NT,OT,jT,xT,RT,FT],yZ=Object.defineProperty({__proto__:null,default:T1},Symbol.toStringTag,{value:"Module"});var LT=Object.defineProperty,IT=f((e,t)=>LT(e,"name",{value:t,configurable:!0}),"e$X");const TT={argument:{description:"Package name to analyze (e.g., react)",name:"package",required:!0,type:String},description:"Analyze a single package update with AI",examples:[["vis analyze react","Analyze updating react to latest"],["vis analyze react 19.0.0","Analyze updating react to specific version"],["vis analyze react --ai-type security","Run security-focused analysis"],["vis analyze react --format json","Output as JSON"]],group:"System",loader:IT(()=>import("./handler3.js"),"loader"),name:"analyze",options:[{description:"AI analysis type: impact, security, compatibility, or recommend (default: impact)",name:"ai-type",type:String},{defaultValue:!1,description:"Check for known security vulnerabilities",name:"security",type:Boolean},{description:"Output format: table or json (default: table)",name:"format",type:String}]};var BT=Object.defineProperty,_T=f((e,t)=>BT(e,"name",{value:t,configurable:!0}),"e$W");const MT={description:"Review and approve dependencies with build scripts",examples:[["vis approve-builds","Scan and list unapproved build scripts"],["vis approve-builds --all","Approve all pending builds (pnpm)"],["vis approve-builds --write","Write unapproved entries into vis.config.ts security.policies.installScripts.allow"],["vis approve-builds --sync-native","Sync allowBuilds to native PM config"]],group:"Security & Health",loader:_T(()=>import("./handler31.js"),"loader"),name:"approve-builds",options:[{defaultValue:!1,description:"Approve all pending builds without prompting (pnpm only)",name:"all",type:Boolean},{defaultValue:!1,description:"Force vis scanning even for pnpm (instead of delegating)",name:"scan",type:Boolean},{defaultValue:!1,description:"Sync allowBuilds to native PM config (bun: trustedDependencies, npm: .npmrc, yarn: .yarnrc.yml)",name:"sync-native",type:Boolean},{defaultValue:!1,description:"Write unapproved entries directly into vis.config.ts security.policies.installScripts.allow (LavaMoat 'auto' parity)",name:"write",type:Boolean}]};var VT=Object.defineProperty,WT=f((e,t)=>VT(e,"name",{value:t,configurable:!0}),"e$V");const UT={description:"Audit installed packages for vulnerabilities and supply chain risks",examples:[["vis audit","Full audit of all installed packages"],["vis audit --severity high","Show only high/critical issues"],["vis audit --format json","Output as JSON for CI integration"],["vis audit --format sarif","Output SARIF 2.1.0 for code-scanning uploads"],["vis audit --format csaf","Output CSAF 2.0 csaf_vex for enterprise vuln pipelines"],["vis audit --format cyclonedx-vex","Output a CycloneDX 1.7 BOM with vulnerabilities[] (SBOM + VEX)"],["vis audit --report report.html","Write a self-contained HTML report to ./report.html"],["vis audit --usage","Only report vulnerabilities in statically-imported packages"],["vis audit --offline","Query the local OSV cache only (no network)"],["vis audit --offline --db ./vendor.sqlite","Use a specific advisory DB"],["vis audit --ecosystem npm,pypi","Scan multiple OSV ecosystems (npm, pypi, crates.io, maven, go, rubygems)"],["vis audit --prod-only","Skip devDependencies"],["vis audit --fail-on high","Exit non-zero on any high or critical finding"],["vis audit --show-fixes","Print fix-suggestion lines (no apply, no rescan)"],["vis audit --fix","Apply direct-dep upgrades for vulnerable packages, then rescan (dry-run preview by default)"],["vis audit --fix --yes","Skip the confirmation prompt and run the upgrades immediately"],["vis audit --fix --allow-major","Permit major-version bumps when the lowest fix is outside the existing range"],["vis audit --fix-transitive","Write PM-specific overrides for vulnerable transitives (dry-run preview by default)"],["vis audit --exit-code","Exit with code 1 if issues found (for CI)"],["vis audit --show-accepted","Include acknowledged risks in output"],["vis audit --sync","Sync accepted risks to native PM config (pnpm-workspace.yaml / .yarnrc.yml)"],["vis audit --policies license,vulnerability","Run only the named policies (default: every configured policy)"],["vis audit --policies none","Skip the policy engine entirely"]],group:"Security & Health",loader:WT(()=>import("./handler45.js"),"loader"),name:"audit",options:[{description:"Minimum severity to report: low, medium, high, critical (default: low)",name:"severity",type:String},{description:"Output format: table, json, sarif, csaf, or cyclonedx-vex (default: table)",name:"format",type:String},{description:"Write a self-contained HTML report to this path. Auto-opens in a TTY when not in CI.",name:"report",type:String},{defaultValue:!1,description:"Only report vulnerabilities in statically-imported packages (reachability filter).",name:"usage",type:Boolean},{defaultValue:!1,description:"Disable the reachability filter even if enabled in config.",name:"no-usage",type:Boolean},{defaultValue:!1,description:"Query the local OSV advisory cache only — no network calls. Errors if the cache is missing.",name:"offline",type:Boolean},{description:"Override the offline advisory DB path (default: <cache>/vis/advisories/db.sqlite).",name:"db",type:String},{description:"Comma-separated list of OSV ecosystems to scan (default: npm). Supported: npm, pypi, crates.io (or 'cargo'), maven, go, rubygems. Non-npm ecosystems require --offline (online OSV path is npm-only).",name:"ecosystem",type:String},{defaultValue:!1,description:"Skip devDependencies — scan production graph only.",name:"prod-only",type:Boolean},{description:"Exit non-zero when any finding is at this severity or higher. One of: low, medium, high, critical.",name:"fail-on",type:String},{defaultValue:!1,description:"Print fix-suggestion lines for each finding (no apply, no rescan)",name:"show-fixes",type:Boolean},{defaultValue:!1,description:"Apply direct-dep fixes for vulnerable packages by running the active PM update command, then rescan",name:"fix",type:Boolean},{defaultValue:!1,description:"Apply transitive fixes by writing PM-specific overrides (pnpm-workspace.yaml / package.json overrides / resolutions)",name:"fix-transitive",type:Boolean},{defaultValue:!1,description:"Skip confirmation prompt for --fix / --fix-transitive (required in CI)",name:"yes",type:Boolean},{defaultValue:!1,description:"Allow --fix to bump a direct dep across a major version when the lowest fix is outside the existing range",name:"allow-major",type:Boolean},{defaultValue:!1,description:"Exit with code 1 if any issues found (for CI)",name:"exit-code",type:Boolean},{defaultValue:!1,description:"Include acknowledged (accepted risk) issues in output",name:"show-accepted",type:Boolean},{defaultValue:!1,description:"Sync vis accepted risks to native PM config (pnpm-workspace.yaml / .yarnrc.yml)",name:"sync",type:Boolean},{description:"Comma-separated list of supply-chain policies to evaluate (default: every configured policy). Use 'none' to skip the engine entirely, 'all' to force the full set. Known: malware, firstSeen, unexpectedDeps, publisherChange, installScripts, score, vulnerability, license.",name:"policies",type:String}]},No={description:"Cache directory (overrides config and default). Relative paths are resolved against the workspace root.",name:"cache-dir",type:String},Bc={description:"Cache scope: 'shared' (default — main worktree's cache), 'worktree' (this checkout's local cache), or 'all' (both)",name:"scope",type:String},B1={description:"Cache type: 'task' (workspace task cache), 'ai' (AI response cache), 'socket' (Socket.dev report cache), or 'all' (default)",name:"type",type:String},GT={commandPath:["cache"],description:"List all cache entries",examples:[["vis cache list","List all cache entries"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheListExecute"),name:"list",options:[No,Bc,{description:"Output format: table or json (default: table)",name:"format",type:String}]},qT={commandPath:["cache"],description:"Remove cache entries (defaults to all stores: workspace task cache, AI responses, Socket.dev reports)",examples:[["vis cache clean","Remove all cache entries from every store"],["vis cache clean --type=ai","Clear only the AI response cache"],["vis cache clean --type=task","Clear only the workspace task cache"],["vis cache clean --dry-run","Preview what clean would remove"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheCleanExecute"),name:"clean",options:[No,B1,{defaultValue:!1,description:"Preview without deleting",name:"dry-run",type:Boolean},{defaultValue:!1,description:"Skip the confirmation prompt for out-of-workspace cache directories",name:"force",type:Boolean}]},zT={commandPath:["cache"],description:"Remove old and oversized cache entries",examples:[["vis cache prune","Remove old and oversized entries"],["vis cache prune --max-age-days=3 --max-size=500MB","Prune with custom limits"],["vis cache prune --keep-last=30","Keep only the 30 most recent entries"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cachePruneExecute"),name:"prune",options:[No,Bc,{description:"Remove entries older than N days",name:"max-age-days",type:Number},{description:"Evict oldest entries until cache is under this size (e.g. 500MB)",name:"max-size",type:String},{description:"Keep only the N most recent entries (sorted newest-first by mtime)",name:"keep-last",type:Number}]},HT={commandPath:["cache"],description:"Print on-disk footprint and stats for one or more cache stores (task / ai / socket)",examples:[["vis cache size","Show stats for every cache store"],["vis cache size --type=ai","Show only the AI response cache (entries, size, oldest, newest)"],["vis cache size --type=task --format=json","Machine-readable task cache size"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheSizeExecute"),name:"size",options:[No,Bc,B1,{description:"Output format: table or json (default: table)",name:"format",type:String}]},zf={description:"Output format: table or json (default: table)",name:"format",type:String},_1={description:"Use a specific run ID from .vis/runs/ instead of the latest run",name:"run",type:String},JT={argument:{description:"Task ID to explain (e.g. @my/app:build)",name:"taskId",type:String},commandPath:["cache"],description:"Explain why a task missed the cache by diffing hash inputs against the previous run",examples:[["vis cache why @myorg/app:build","Show which inputs changed since the last run"],["vis cache why @myorg/app:build --json","Machine-readable output for CI"],["vis cache why @myorg/app:build --run 2026-04-28T...","Inspect a specific historical run"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheWhyExecute"),name:"why",options:[zf,_1]},KT={argument:{description:"Task ID to print the hash for (e.g. @my/app:build)",name:"taskId",type:String},commandPath:["cache"],description:"Print the recorded hash and per-input hash details for a task",examples:[["vis cache hash @myorg/app:build","Show the resolved hash + contributing inputs"],["vis cache hash @myorg/app:build --json","Machine-readable output"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheHashExecute"),name:"hash",options:[zf,_1]},YT={argument:{description:"Task ID to verify (e.g. @my/app:build)",name:"taskId",type:String},commandPath:["cache"],description:"Verify cache restore fidelity: extract the cached entry into a tmp directory and diff each file's content, mode, and mtime against the live workspace. Exits 1 on any drift (changed content, mode, mtime) or if a cached output is missing from the workspace. With --scope=all, the first cache directory containing the task is used.",examples:[["vis cache verify @myorg/app:build","Diff cached outputs vs live workspace files"],["vis cache verify @myorg/app:build --format=json","Machine-readable diff (status: ok | drift)"],["vis cache verify @myorg/app:build --cache-dir=.alt-cache","Verify against a non-default cache directory"],["vis cache verify @myorg/app:build --scope=all","Search shared and worktree caches for the task"]],group:"Workspace",loader:Pe(()=>import("./handler23.js"),"cacheVerifyExecute"),name:"verify",options:[No,Bc,zf]},XT={commandPath:["cache"],description:"Probe the configured remote cache (HTTP HEAD or REAPI Capabilities) and report reachability, latency, and negotiated capabilities",examples:[["vis cache doctor","Probe the remoteCache configured in vis.config.ts"],["vis cache doctor --url=grpcs://cache.example.com:443 --backend=reapi","Override URL/backend ad-hoc"],["vis cache doctor --json","Machine-readable output"]],group:"Workspace",loader:Pe(()=>import("./doctor-probe.js"),"cacheDoctorExecute"),name:"doctor",options:[{description:"Override remote cache URL (otherwise read from vis.config.ts remoteCache.url, or TURBO_API env var)",name:"url",type:String},{description:"Override backend selector: 'http' or 'reapi'",name:"backend",type:String},{description:"Output format: table or json (default: table)",name:"format",type:String},{defaultValue:5e3,description:"Probe timeout in milliseconds (default: 5000)",name:"timeout",type:Number}]},QT=[GT,qT,zT,HT,JT,KT,YT,XT];var ZT=Object.defineProperty,eB=f((e,t)=>ZT(e,"name",{value:t,configurable:!0}),"e$U");const tB={alias:["c","outdated"],argument:{description:"Specific packages to check (checks all if omitted)",name:"packages",type:String},description:"Check for outdated dependencies, security vulnerabilities, and supply chain settings",examples:[["vis check","Check all catalog dependencies"],["vis check react","Check specific packages"],["vis check --target minor","Only show minor/patch updates"],["vis check --exclude '@types/*'","Exclude packages by pattern"],["vis check --no-security","Skip vulnerability scanning"],["vis check --security-config","Audit supply chain security settings"],["vis check --security-config --sync","Sync security config to pnpm-workspace.yaml"]],group:"Security & Health",loader:eB(()=>import("./handler4.js"),"loader"),name:"check",options:[{alias:"t",description:"Update target: latest, minor, or patch (default: latest)",name:"target",type:String},{description:"Glob pattern to include packages (repeatable)",lazyMultiple:!0,name:"include",type:String},{description:"Glob pattern to exclude packages (repeatable)",lazyMultiple:!0,name:"exclude",type:String},{defaultValue:!1,description:"Include prerelease versions",name:"prerelease",type:Boolean},{defaultValue:!1,description:"Skip security vulnerability scanning",name:"no-security",type:Boolean},{defaultValue:!1,description:"Audit supply chain security settings",name:"security-config",type:Boolean},{defaultValue:!1,description:"Sync security settings to pnpm-workspace.yaml (pnpm only, requires --security-config)",name:"sync",type:Boolean},{description:"Output format: table, json, or minimal (default: table)",name:"format",type:String},{defaultValue:!1,description:"Exit with code 1 if outdated dependencies found (for CI)",name:"exit-code",type:Boolean},{defaultValue:!1,description:"Run AI analysis on outdated packages",name:"ai",type:Boolean},{description:"AI analysis type: impact, security, compatibility, or recommend",name:"ai-type",type:String},{alias:"D",conflicts:"prod",description:"Check only devDependencies (npm/yarn mode)",name:"dev",type:Boolean},{alias:"P",conflicts:"dev",description:"Check only dependencies (npm/yarn mode)",name:"prod",type:Boolean},{defaultValue:!1,description:"Include peerDependencies in outdated checks",name:"peer",type:Boolean},{defaultValue:!1,description:"Also check workspace-owned package names against the registry",name:"include-internal",type:Boolean}]};var rB=Object.defineProperty,nB=f((e,t)=>rB(e,"name",{value:t,configurable:!0}),"e$T");const iB={argument:{description:"Comma-separated list of targets to run (e.g., lint,test,build)",name:"targets",type:String},description:"Run affected targets in a CI-optimized pipeline",examples:[["vis ci lint,test,build","Run lint, test, and build on affected projects"],["vis ci test --base=origin/main","Override the base ref"],["vis ci build --no-install","Skip the install step (assume deps already present)"],["vis ci build --parallel=6","Increase concurrency"]],group:"Run & Execute",loader:nB(()=>import("./handler5.js"),"loader"),name:"ci",options:[{defaultValue:!0,description:"Install dependencies before running targets (use --no-install to skip)",name:"install",type:Boolean},{defaultValue:!1,description:"Skip the toolchain pre-flight (no auto-install for any pinned tool: node / pnpm / yarn / npm / bun / deno / go / python / ruby / rust)",name:"skip-toolchain",type:Boolean},{description:"Git base ref for affected detection (default: auto-detected from CI env)",name:"base",type:String},{description:"Git head ref for affected detection (default: HEAD)",name:"head",type:String},{defaultValue:"none",description:"Upstream scope: none | direct | deep",name:"upstream",type:String},{defaultValue:"deep",description:"Downstream scope: none | direct | deep",name:"downstream",type:String},{defaultValue:4,description:"Maximum number of parallel tasks per target",name:"parallel",type:Number},{description:'Partition tasks for distributed CI (e.g., "1/4")',name:"partition",type:String},{description:"Filter affected projects by a query (e.g. 'language=typescript && tag=lib')",name:"query",type:String}]};var sB=Object.defineProperty,oB=f((e,t)=>sB(e,"name",{value:t,configurable:!0}),"e$S");const aB={description:"Remove node_modules from all workspace projects",examples:[["vis clean","Remove all node_modules directories"],["vis clean --lockfile","Also remove lockfiles"],["vis clean --dry-run","Preview what would be removed"]],group:"Workspace",loader:oB(()=>import("./handler6.js"),"loader"),name:"clean",options:[{alias:"l",defaultValue:!1,description:"Also remove lockfiles (pnpm-lock.yaml, package-lock.json, etc.)",name:"lockfile",type:Boolean},{defaultValue:!1,description:"Preview what would be removed without deleting",name:"dry-run",type:Boolean}]};var cB=Object.defineProperty,lB=f((e,t)=>cB(e,"name",{value:t,configurable:!0}),"e$R");const uB={argument:{description:"Template to use (e.g., vis:app, create-vite, user/repo) — omit for interactive mode",name:"template",type:String},description:"Create a new project from a template",examples:[["vis create","Interactive project scaffolding"],["vis create vis:monorepo my-workspace","Create a monorepo workspace"],["vis create vis:app my-app","Scaffold a Vite application"],["vis create vis:library my-lib","Create a TypeScript library"],["vis create vite my-app -- --template react-ts","Use create-vite with React TypeScript"],["vis create user/repo my-project","Clone a GitHub template"],["vis create --list","Show available templates"]],group:"Scaffold & Config",loader:lB(()=>import("./handler42.js"),"loader"),name:"create",options:[{defaultValue:!1,description:"Show available templates",name:"list",type:Boolean},{description:"Generate editor configs (vscode)",name:"editor",type:String},{defaultValue:!1,description:"Initialize a git repository",name:"git-init",type:Boolean},{defaultValue:!1,description:"Skip interactive prompts",name:"no-interactive",type:Boolean}]};var pB=Object.defineProperty,dB=f((e,t)=>pB(e,"name",{value:t,configurable:!0}),"e$Q");const fB={description:"Deduplicate dependencies using the detected package manager",examples:[["vis dedupe","Run deduplication"],["vis dedupe --check","Preview changes without modifying (CI-friendly)"]],group:"Dependencies",loader:dB(()=>import("./handler7.js"),"loader"),name:"dedupe",options:[{defaultValue:!1,description:"Preview changes without modifying files (dry-run)",name:"check",type:Boolean}]};var mB=Object.defineProperty,hB=f((e,t)=>mB(e,"name",{value:t,configurable:!0}),"e$P");const gB={alias:"dc",description:"Create or update .devcontainer/devcontainer.json interactively",examples:[["vis devcontainer","Launch interactive devcontainer config editor"],["vis dc","Alias for devcontainer"],["vis devcontainer --template node-pnpm","Start from Node.js + pnpm template"]],group:"Scaffold & Config",loader:hB(()=>import("./handler46.js"),"loader"),name:"devcontainer",options:[{alias:"t",description:"Start from a template: node, node-pnpm, node-postgres, node-dind, fullstack, python, go, rust, java, devops, minimal, custom",name:"template",type:String},{alias:"o",description:"Output path (default: .devcontainer/devcontainer.json)",name:"output",type:String}]};var yB=Object.defineProperty,vB=f((e,t)=>yB(e,"name",{value:t,configurable:!0}),"e$O");const bB={argument:{description:"Package to execute (optionally with @version)",name:"package",type:String},description:"Execute a remote package without permanent installation",examples:[["vis dlx create-vite my-app","Scaffold a new project"],["vis dlx typescript@5.5.4 tsc --version","Run specific version"],["vis dlx -p cowsay -p lolcatjs -c 'echo hi | cowsay | lolcatjs'","Multiple packages with shell"],["vis install && vis dlx --offline typescript tsc --version","Hardened: pre-install + offline (no registry fetch on dlx)"]],group:"Run & Execute",loader:vB(()=>import("./handler8.js"),"loader"),name:"dlx",options:[{alias:"p",description:"Additional packages to install (repeatable)",multiple:!0,name:"package",type:String},{alias:"c",defaultValue:!1,description:"Execute within shell environment",name:"shell-mode",type:Boolean},{alias:"s",defaultValue:!1,description:"Suppress output except command results",name:"silent",type:Boolean},{defaultValue:!1,description:"Resolve from local store only — fail rather than fetch from the registry. Pair with `vis install` for hardened npx-style workflows.",name:"offline",type:Boolean}]};var $B=Object.defineProperty,wB=f((e,t)=>$B(e,"name",{value:t,configurable:!0}),"e$N");const kB={argument:{description:"Docker subcommand: scaffold | prune",name:"subcommand",type:String},description:"Docker integration — scaffold a minimal context or prune unfocused deps",examples:[["vis docker scaffold --focus=my-app","Generate .vis/docker/workspace for my-app + its deps"],["vis docker scaffold --focus=my-app --include-sources","Also copy focus source trees"],["vis docker scaffold --focus=my-app,other --out=.vis/docker","Focus multiple projects"],["vis docker prune --context=.vis/docker","Strip unfocused projects inside a build stage"]],group:"Workspace",loader:wB(()=>import("./handler9.js"),"loader"),name:"docker",options:[{description:"Project name(s) to focus on — comma-separated for multiple",name:"focus",type:String},{description:"Output directory for the scaffold (default: .vis/docker)",name:"out",type:String},{defaultValue:!1,description:"Also copy focus project source trees to <out>/sources",name:"include-sources",type:Boolean},{description:"Scaffold root for `vis docker prune` (default: .vis/docker)",name:"context",type:String},{defaultValue:!0,description:"Rewrite the workspace lockfile to drop unfocused projects (use --no-prune-lockfile to copy verbatim)",name:"prune-lockfile",type:Boolean}]};var SB=Object.defineProperty,EB=f((e,t)=>SB(e,"name",{value:t,configurable:!0}),"e$M");const DB={description:"Run a full project health check (outdated, security, duplicates, optimizations)",examples:[["vis doctor","Full project health check"],["vis doctor --fix","Check and auto-apply safe fixes"],["vis doctor --format json","Machine-readable output for CI"],["vis doctor --only security","Only run the security scans"],["vis doctor --skip optimization,runtime","Skip the listed sections"],["vis doctor --quiet","Summary only, no per-section breakdown"],["vis doctor --no-progress","Disable live progress UI (sequential logs)"],["vis doctor --exit-code","Exit with code 1 if security issues found"],["vis doctor --exit-code --strict","Fail on any issue (outdated, duplicates, security)"]],group:"Security & Health",loader:EB(()=>import("./handler41.js"),"loader"),name:"doctor",options:[{description:"Output format: table or json (default: table). Alias: --json",name:"format",type:String},{defaultValue:!1,description:"Shorthand for --format json",name:"json",type:Boolean},{defaultValue:!1,description:"Exit with code 1 if issues found",name:"exit-code",type:Boolean},{defaultValue:!1,description:"Auto-apply safe fixes (security overrides + codemods, SIGTERM orphans)",name:"fix",type:Boolean},{defaultValue:!1,description:"With --fix: escalate orphan cleanup to SIGKILL / taskkill /F (use when SIGTERM is ignored)",name:"fix-force",type:Boolean},{defaultValue:!1,description:"With --exit-code: also fail on outdated and duplicate deps",name:"strict",type:Boolean},{description:"Comma-separated sections to run: dependencies,security,optimization,runtime",name:"only",type:String},{description:"Comma-separated sections to skip",name:"skip",type:String},{defaultValue:!1,description:"Suppress per-section detail; print summary only",name:"quiet",type:Boolean},{defaultValue:!1,description:"Disable live progress UI (forces sequential logs)",name:"no-progress",type:Boolean},{defaultValue:!1,description:"Bypass the doctor result cache (~/.vis/cache/doctor)",name:"no-cache",type:Boolean},{description:"Comma-separated package name patterns to scope findings (supports * globs, e.g. '@types/*,react')",name:"filter",type:String}]};var CB=Object.defineProperty,AB=f((e,t)=>CB(e,"name",{value:t,configurable:!0}),"e$L");const OB={argument:{description:"Command to execute followed by arguments",name:"command",type:String},description:"Execute a local node_modules/.bin command (no remote fallback)",examples:[["vis exec eslint .","Run local eslint"],["vis exec tsc --noEmit","Run local TypeScript check"],["vis exec -r -- eslint .","Run in all workspace packages"],["vis exec -c 'echo $PATH'","Shell mode"]],group:"Run & Execute",loader:AB(()=>import("./handler10.js"),"loader"),name:"exec",options:[{alias:"c",defaultValue:!1,description:"Execute within shell environment",name:"shell-mode",type:Boolean},{alias:"r",defaultValue:!1,description:"Run in every workspace package",name:"recursive",type:Boolean},{alias:"w",defaultValue:!1,description:"Run on workspace root only",name:"workspace-root",type:Boolean},{alias:"F",description:"Filter packages by name pattern",multiple:!0,name:"filter",type:String},{defaultValue:!1,description:"Run concurrently without topological ordering",name:"parallel",type:Boolean},{defaultValue:!1,description:"Reverse topological execution order",name:"reverse",type:Boolean}]};var jB=Object.defineProperty,xB=f((e,t)=>jB(e,"name",{value:t,configurable:!0}),"e$K");const PB={argument:{description:"Template name (or remote source like git://… or npm://…) — omit for interactive picker",name:"template",type:String},description:"Scaffold files from an in-repo template",examples:[["vis generate","Pick a template interactively"],["vis generate package","Run the 'package' template"],["vis generate component -- --name=Button --style=primary","Pre-fill option values"],["vis generate package --to=./packages/new --force","Custom destination + overwrite"],["vis generate package --dry-run","Print planned writes without touching disk"],["vis generate git://github.com/org/template#main","Fetch and run a remote template"],["vis generate --list","Show discovered templates"],["vis generate --list --json","Machine-readable template list"],["vis generate package --describe --json","Print template metadata (variables, destination) as JSON"]],group:"Scaffold & Config",loader:xB(()=>import("./handler37.js"),"loader"),name:"generate",options:[{defaultValue:!1,description:"List discovered templates",name:"list",type:Boolean},{defaultValue:!1,description:"Print template metadata (about, destination, variables) without running produce",name:"describe",type:Boolean},{defaultValue:!1,description:"Emit JSON output (with --list or --describe)",name:"json",type:Boolean},{description:"Destination directory",name:"to",type:String},{defaultValue:!1,description:"Print planned writes without touching disk",name:"dry-run",type:Boolean},{defaultValue:!1,description:"Overwrite existing files without prompting",name:"force",type:Boolean},{defaultValue:!1,description:"Skip prompts; use template defaults",name:"defaults",type:Boolean},{defaultValue:!1,description:"Skip running post-generation scripts",name:"skip-scripts",type:Boolean},{defaultValue:!1,description:"Skip interactive prompts (errors on missing required values)",name:"no-interactive",type:Boolean},{defaultValue:!1,description:"Prefer locally cached remote templates over re-downloading",name:"prefer-offline",type:Boolean}]};var NB=Object.defineProperty,RB=f((e,t)=>NB(e,"name",{value:t,configurable:!0}),"t$w");const FB={description:"Visualize the project dependency graph",examples:[["vis graph","Show colored dependency graph (TUI in TTY, ASCII otherwise)"],["vis graph --format=ascii","Force ASCII tree output"],["vis graph --format=dot","Output in Graphviz DOT format"],["vis graph --format=html --output=graph.html","Generate interactive HTML graph"],["vis graph --format=json --output=graph.json","Save JSON graph to file"]],group:"Workspace",loader:RB(()=>import("./handler38.js"),"loader"),name:"graph",options:[{alias:"f",defaultValue:void 0,description:"Output format: tui, ascii, dot, json, html (default: tui in TTY, ascii otherwise)",name:"format",type:String},{alias:"o",description:"Write output to file instead of stdout",name:"output",type:String},{alias:"d",description:"Maximum dependency tree depth for ASCII output (default: unlimited)",name:"depth",type:Number}]},M1=["pre-commit","pre-merge-commit","prepare-commit-msg","commit-msg","post-commit","applypatch-msg","pre-applypatch","post-applypatch","pre-rebase","post-rewrite","post-checkout","post-merge","pre-push","pre-auto-gc"],V1=".vis-hooks",vZ=[".pre-commit-config.yaml",".pre-commit-config.yml","prek.toml"],bZ={commit:"pre-commit","merge-commit":"pre-merge-commit",push:"pre-push"},$Z=new Set(["commit-msg","post-checkout","post-commit","post-merge","post-rewrite","pre-commit","pre-merge-commit","pre-push","pre-rebase","prepare-commit-msg"]),wZ=new Set(["commit-msg","post-checkout","post-merge","post-rewrite","pre-rebase","prepare-commit-msg"]),kZ=new Set(["fail","script","system"]);var LB=Object.defineProperty,ti=f((e,t)=>LB(e,"name",{value:t,configurable:!0}),"e$I");const ri={defaultValue:V1,description:"Custom hooks directory",name:"hooks-dir",type:String},ni=[{defaultValue:void 0,description:"Set to 0 to disable git hooks, set to 2 for debug output",name:"VIS_GIT_HOOKS",type:String}],IB={commandPath:["hook"],description:"Install git hooks for the workspace (migrates husky / prek on prompt)",env:[...ni],examples:[["vis hook install","Install git hooks in .vis-hooks/"],["vis hook install --hooks-dir=.githooks","Install hooks in a custom directory"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookInstallExecute})),"loader"),name:"install",options:[ri]},TB={commandPath:["hook"],description:"Remove git hooks and reset core.hooksPath",env:[...ni],examples:[["vis hook uninstall","Remove git hooks and reset core.hooksPath"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookUninstallExecute})),"loader"),name:"uninstall",options:[ri]},BB={commandPath:["hook"],description:"Migrate from husky or prek to vis hooks (auto-detected)",env:[...ni],examples:[["vis hook migrate","Migrate from husky or prek to vis hooks (auto-detected)"],["vis hook migrate --dry-run","Preview what a migration would write without touching disk"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookMigrateExecute})),"loader"),name:"migrate",options:[ri,{defaultValue:!1,description:"Preview migrate without writing files",name:"dry-run",type:Boolean}]},_B={commandPath:["hook"],description:"Show configured hooks grouped by stage",env:[...ni],examples:[["vis hook list","Show configured hooks grouped by stage"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookListExecute})),"loader"),name:"list",options:[ri]},MB={commandPath:["hook"],description:"Sanity-check installed hooks and the bundled runner",env:[...ni],examples:[["vis hook validate","Sanity-check installed hooks and the bundled runner"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookValidateExecute})),"loader"),name:"validate",options:[ri]},VB={argument:{description:"Hook stage to run (e.g. pre-commit, commit-msg). Defaults to pre-commit.",name:"stage",type:String},commandPath:["hook"],description:"Run a specific hook stage against tracked files",env:[...ni],examples:[["vis hook run pre-commit --all-files","Run the pre-commit hooks against every tracked file"],["vis hook run pre-commit --from-ref=main --to-ref=HEAD","Run pre-commit hooks on files changed between two refs"],["vis hook run pre-commit --last-commit","Shortcut for --from-ref HEAD~1 --to-ref HEAD"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookRunExecute})),"loader"),name:"run",options:[ri,{defaultValue:!1,description:"Run against every tracked file",name:"all-files",type:Boolean},{defaultValue:void 0,description:"Include files changed since this ref",name:"from-ref",type:String},{defaultValue:void 0,description:"Include files changed up to this ref",name:"to-ref",type:String},{defaultValue:!1,description:"Shortcut for --from-ref HEAD~1 --to-ref HEAD",name:"last-commit",type:Boolean}]},WB={argument:{description:"Target to add (currently: `secrets`)",name:"target",type:String},commandPath:["hook"],description:"Add a managed hook snippet (e.g. `vis secrets --staged`)",env:[...ni],examples:[["vis hook add secrets","Add a pre-commit hook that runs `vis secrets --staged`"]],group:"Git Hooks",loader:ti(()=>import("./handler44.js").then(e=>({default:e.hookAddExecute})),"loader"),name:"add",options:[ri]},UB=[IB,TB,BB,_B,MB,VB,WB];var GB=Object.defineProperty,qB=f((e,t)=>GB(e,"name",{value:t,configurable:!0}),"e$H");const zB={argument:{description:"Project name to check (required)",name:"project",type:String},description:'Exit with inverted codes for CI "Ignored Build Step" gating (Vercel/Netlify)',examples:[["vis ignore my-app","Check if my-app is affected and decide whether to build"],["vis ignore my-app --base $VERCEL_GIT_PREVIOUS_SHA","Explicit base ref"],["vis ignore my-app --json","Emit the decision as JSON instead of text"],["vis ignore my-app --verbose","Print debug info about the decision path"],["vis ignore my-app --exit-zero-on-build","Normal exit semantics (0=build, 0=skip)"]],group:"Run & Execute",loader:qB(()=>import("./handler32.js"),"loader"),name:"ignore",options:[{description:"Git base ref for comparison. Defaults to CI provider env vars, then HEAD~1.",name:"base",type:String},{defaultValue:"HEAD",description:"Git head ref for comparison",name:"head",type:String},{defaultValue:"deep",description:'Downstream scope: "none", "direct", or "deep"',name:"downstream",type:String},{defaultValue:"none",description:'Upstream scope: "none", "direct", or "deep"',name:"upstream",type:String},{defaultValue:!1,description:"Emit the decision as JSON on stdout instead of human text",name:"json",type:Boolean},{defaultValue:!1,description:"Exit 0 on build (normal semantics) instead of 1 (inverted Vercel/Netlify semantics)",name:"exit-zero-on-build",type:Boolean},{defaultValue:!1,description:"Enable verbose debug output",name:"verbose",type:Boolean}]};var HB=Object.defineProperty,JB=f((e,t)=>HB(e,"name",{value:t,configurable:!0}),"e$G");const KB={description:"Remove vis from the system (self-uninstall)",examples:[["vis implode","Interactive uninstall"],["vis implode --yes","Non-interactive uninstall (CI)"]],group:"System",loader:JB(()=>import("./handler11.js"),"loader"),name:"implode",options:[{alias:"y",defaultValue:!1,description:"Skip confirmation prompt",name:"yes",type:Boolean}]};var YB=Object.defineProperty,XB=f((e,t)=>YB(e,"name",{value:t,configurable:!0}),"e$F");const QB={alias:"view",argument:{description:"Package name followed by optional metadata fields (e.g. 'react version dependencies')",name:"args",type:String},description:"Show npm registry metadata for a package (alias of `npm view` / `pnpm view` / `yarn info` / `bun pm view`)",examples:[["vis info react","Full registry metadata for react"],["vis info react version","Latest version only"],["vis info react versions","All published versions"],["vis info react@18 dependencies","Dependencies of react@18"],["vis info react --json","Emit JSON"],["vis view react","Alias matching npm/pnpm"]],group:"Dependencies",loader:XB(()=>import("./handler12.js"),"loader"),name:"info",options:[{defaultValue:!1,description:"Output as JSON",name:"json",type:Boolean}]};var ZB=Object.defineProperty,e_=f((e,t)=>ZB(e,"name",{value:t,configurable:!0}),"e$E");const t_={description:"Initialize vis.config.ts with best-practice security defaults",examples:[["vis init","Interactive setup wizard"],["vis init --no-interactive","Create minimal config without prompts"],["vis init --force","Overwrite existing config"],["vis init --sync-native","Also sync to native PM config files"]],group:"Scaffold & Config",loader:e_(()=>import("./handler13.js"),"loader"),name:"init",options:[{defaultValue:!1,description:"Overwrite existing config file",name:"force",type:Boolean},{defaultValue:!1,description:"Skip interactive prompts",name:"no-interactive",type:Boolean},{defaultValue:!1,description:"Sync settings to native PM config files",name:"sync-native",type:Boolean}]};var r_=Object.defineProperty,n_=f((e,t)=>r_(e,"name",{value:t,configurable:!0}),"e$D");const i_={argument:{description:"Package to inspect, optionally pinned: `<name>` or `<name>@<spec>`. `<spec>` may be a version, range, or dist-tag.",name:"package"},description:"Run all marshalls against a package without installing it",examples:[["vis inspect express","Run every marshall against express@latest"],["vis inspect lodash@4.17.21","Pin to an exact version"],["vis inspect react@^18","Resolve a semver range, then inspect the best match"],["vis inspect express --json","Emit findings as JSON for CI integration"],["vis inspect express --strict","Exit non-zero on any warning, not just errors"],["vis inspect express --only author,downloads","Run a subset of marshalls"],["vis inspect express --only signatures","Signatures are off by default; opt in with --only"]],group:"Security & Health",loader:n_(()=>import("./handler14.js"),"loader"),name:"inspect",options:[{defaultValue:!1,description:"Emit findings as a JSON document instead of the human-readable table.",name:"json",type:Boolean},{defaultValue:!1,description:"Exit non-zero on any finding (warnings included). Default exits non-zero only on errors.",name:"strict",type:Boolean},{description:"Comma-separated subset of marshalls to run. Known: author, archivedRepo, downloads, expiredDomains, metadata, newBin, provenance, signatures. Signatures only runs when explicitly requested here.",name:"only",type:String}]};var s_=Object.defineProperty,o_=f((e,t)=>s_(e,"name",{value:t,configurable:!0}),"e$C");const a_={alias:"i",argument:{description:"Optional package names. When provided, delegates to `vis add` (enables npm-style `alias npm='vis install'` wrappers).",name:"packages",type:String},description:"Install dependencies using the detected package manager",examples:[["vis install","Install all dependencies (frozen-lockfile by default when a lockfile is present)"],["vis install react react-dom","Delegates to `vis add` — enables shell aliases like `alias npm='vis install'`"],["vis i --no-frozen-lockfile","Allow lockfile updates (escape hatch for the default)"],["vis install --ci","Clean install: wipe node_modules + frozen lockfile (mirrors npm ci / pnpm ci)"],["vis install --prefer-offline","Use cached packages when available, fall back to network"],["vis install --prod","Install production dependencies only"],["vis install --filter app","Install for specific workspace package"],["vis install --run-scripts","Run lifecycle scripts (opts out of vis's default block-by-default policy; allowlisted packages run via security.policies.installScripts.allow)"],["vis install --no-typosquat-check","Skip typosquat name check"],["vis install --installer aube","Force aube as the installer (errors if not on PATH)"],["vis install --no-aube","Bypass aube; use the lockfile-detected PM"]],group:"Dependencies",loader:o_(()=>import("./handler15.js"),"loader"),name:"install",options:[{alias:"P",conflicts:"dev",description:"Skip devDependencies (no positional args) / add as peer (with positional args, npm-style)",name:"prod",type:Boolean},{alias:"D",conflicts:"prod",description:"Install devDependencies only (no positional args) / add as dev (with positional args, npm-style)",name:"dev",type:Boolean},{defaultValue:!1,description:"Add as optional dependency (only with positional args; mirrors `npm install -O`)",name:"save-optional",type:Boolean},{alias:"E",defaultValue:!1,description:"Save exact version (only with positional args; mirrors `npm install -E`)",name:"exact",type:Boolean},{defaultValue:!1,description:"Skip Socket.dev security check (only with positional args; mirrors `vis add --no-socket-check`)",name:"no-socket-check",type:Boolean},{defaultValue:!1,description:"Skip the offline marshall pipeline (only with positional args; mirrors `vis add --no-marshall-check`)",name:"no-marshall-check",type:Boolean},{defaultValue:!1,description:"Use frozen lockfile (CI mode, maps to npm ci)",name:"frozen-lockfile",type:Boolean},{defaultValue:!1,description:"Opt out of vis's default frozen-lockfile behavior and allow lockfile updates",name:"no-frozen-lockfile",type:Boolean},{defaultValue:!1,description:"Clean install: wipe node_modules then install with frozen lockfile",name:"ci",type:Boolean},{alias:"f",defaultValue:!1,description:"Force reinstall all dependencies",name:"force",type:Boolean},{defaultValue:!1,description:"Run lifecycle scripts (opts out of vis's default block-by-default policy; allowlisted packages run via security.policies.installScripts.allow)",name:"run-scripts",type:Boolean},{defaultValue:!1,description:"Update lockfile without installing",name:"lockfile-only",type:Boolean},{defaultValue:!1,description:"Skip optional dependencies",name:"no-optional",type:Boolean},{defaultValue:!1,description:"Use only cached packages",name:"offline",type:Boolean},{defaultValue:!1,description:"Prefer cached packages, fall back to network when missing",name:"prefer-offline",type:Boolean},{alias:"s",defaultValue:!1,description:"Suppress output",name:"silent",type:Boolean},{alias:"r",defaultValue:!1,description:"Install in all workspace packages",name:"recursive",type:Boolean},{alias:"w",defaultValue:!1,description:"Target workspace root",name:"workspace-root",type:Boolean},{alias:"F",description:"Filter by workspace package name",multiple:!0,name:"filter",type:String},{defaultValue:!1,description:"Skip typosquat name check",name:"no-typosquat-check",type:Boolean},{description:"Pick the installer explicitly. One of: auto, aube, pnpm, npm, yarn, bun. Overrides VIS_INSTALLER and install.backend in vis.config.",name:"installer",type:String},{defaultValue:!1,description:"Skip aube and use the lockfile-detected PM. Wins over --installer / VIS_INSTALLER / install.backend.",name:"no-aube",type:Boolean}]};var c_=Object.defineProperty,l_=f((e,t)=>c_(e,"name",{value:t,configurable:!0}),"e$B");const u_={alias:"ln",argument:{description:"Package name or directory path to link (omit to register current package)",name:"target",type:String},description:"Link a local package for development",examples:[["vis link ./packages/utils","Link local directory package (works on all PMs)"],["vis link","Register current package globally (pnpm <=10, yarn, npm, bun)"],["vis link react","Link global package into current project (pnpm <=10, yarn, npm, bun)"]],group:"Dependencies",loader:l_(()=>import("./handler17.js"),"loader"),name:"link"};var p_=Object.defineProperty,d_=f((e,t)=>p_(e,"name",{value:t,configurable:!0}),"e$A");const f_={description:"Lint workspace dependency policies (workspace-protocol, banned-deps, redefine-root, workspace-versions, custom-types, empty-deps, root-private, root-package-manager, root-deps, missing-package-json, dead-workspace-patterns, types-in-deps, similar-deps)",examples:[["vis lint","Run every enabled lint and exit non-zero on failures"],["vis lint --workspace-protocol","Only check that internal deps use workspace:*"],["vis lint --workspace-protocol --fix","Auto-rewrite internal deps to use workspace:*"],["vis lint --redefine-root","Flag deps duplicated between root and child packages"],["vis lint --banned-deps","Flag deps matching policy.bannedDeps in vis config"],["vis lint --workspace-versions","Flag external deps declared at different versions across packages"],["vis lint --workspace-versions --fix","Rewrite drifting deps to the highest sibling version"],["vis lint --workspace-versions --dep react","Limit version-drift check to a single dep"],["vis lint --workspace-versions --resolve catalog --fix","Rewrite drifting deps to catalog: when a catalog already pins them"],["vis lint --workspace-versions --resolve catalog --propose-min 3","Suggest new catalog entries for deps ≥3 packages already agree on"],["vis lint --custom-types","Flag drift in engines.{node,pnpm}, packageManager, volta.{node,pnpm,yarn}, devEngines"],["vis lint --custom-types --fix","Align all engines/packageManager/volta versions to the highest sibling"],["vis lint --empty-deps --fix","Drop empty `dependencies` / `devDependencies` / etc. blocks across the workspace"],["vis lint --root-private --fix",'Ensure the workspace root package.json has "private": true'],["vis lint --root-package-manager","Ensure the root package.json declares a `packageManager` field"],["vis lint --root-deps --fix","Move runtime deps off the private workspace root into devDependencies"],["vis lint --missing-package-json","Flag workspace dirs that don't contain a package.json"],["vis lint --dead-workspace-patterns --fix","Drop workspace patterns that match zero packages"],["vis lint --types-in-deps --fix","Move @types/* out of dependencies on private packages"],["vis lint --similar-deps","Flag drift across related dep families (react+react-dom, @babel/*, …)"],["vis lint --ban left-pad --ban request","One-off ban: flag any package declaring left-pad or request"],["vis lint --pin react@18.2.0","One-off pin: flag any package declaring react at a different version"],["vis lint --format json","Emit findings as JSON for CI / editor integrations"]],group:"Security & Health",loader:d_(()=>import("./handler43.js"),"loader"),name:"lint",options:[{defaultValue:!1,description:"Lint that internal deps use the workspace: protocol",name:"workspace-protocol",type:Boolean},{defaultValue:!1,description:"Lint that no child re-declares a dep already pinned in the workspace root",name:"redefine-root",type:Boolean},{defaultValue:!1,description:"Lint deps against policy.bannedDeps in vis config",name:"banned-deps",type:Boolean},{defaultValue:!1,description:"Lint that all packages declare external deps at the same version",name:"workspace-versions",type:Boolean},{defaultValue:!1,description:"Lint engines.{node,pnpm}, packageManager, volta.*, devEngines.* for drift across packages",name:"custom-types",type:Boolean},{defaultValue:!1,description:"Flag empty dependency blocks (`dependencies: {}`, `devDependencies: {}`, …) across the workspace",name:"empty-deps",type:Boolean},{defaultValue:!1,description:'Ensure the workspace root package.json sets `"private": true`',name:"root-private",type:Boolean},{defaultValue:!1,description:"Ensure the workspace root package.json declares a `packageManager` field",name:"root-package-manager",type:Boolean},{defaultValue:!1,description:"Flag runtime dependencies on the private workspace root (move them to devDependencies)",name:"root-deps",type:Boolean},{defaultValue:!1,description:"Flag workspace directories that lack a package.json",name:"missing-package-json",type:Boolean},{defaultValue:!1,description:"Flag workspace patterns (in `pnpm-workspace.yaml` / `package.json#workspaces`) that match zero packages",name:"dead-workspace-patterns",type:Boolean},{defaultValue:!1,description:"Flag `@types/*` declared in `dependencies` on a private package (should be in devDependencies)",name:"types-in-deps",type:Boolean},{defaultValue:!1,description:"Flag version drift across related dep families (react+react-dom, @babel/*, @storybook/*, …)",name:"similar-deps",type:Boolean},{description:"Restrict --workspace-versions to a single dep",name:"dep",type:String},{description:"Ban a dep name or glob for this run (repeatable). Auto-enables --banned-deps.",multiple:!0,name:"ban",type:String},{description:"Pin a dep to an exact specifier for this run, e.g. react@^18.2.0 (repeatable). Auto-enables --workspace-versions.",multiple:!0,name:"pin",type:String},{description:"Conflict resolution for --workspace-versions: highest, lowest, or catalog (default: highest)",name:"resolve",type:String},{description:"Propose catalog entries for deps ≥N packages already agree on. Activates with --resolve catalog.",name:"propose-min",type:Number},{defaultValue:!1,description:"Auto-fix violations in place (writes package.json files)",name:"fix",type:Boolean},{description:"Specifier used by --fix for workspace-protocol (default: workspace:*)",name:"fix-specifier",type:String},{description:"Output format: human, json, or minimal (default: human)",name:"format",type:String},{defaultValue:!1,description:"Suppress all output except errors",name:"quiet",type:Boolean}]};var m_=Object.defineProperty,h_=f((e,t)=>m_(e,"name",{value:t,configurable:!0}),"e$z");const g_={description:"List all workspace projects with metadata",examples:[["vis list","Show all projects"],["vis list --targets","Per-target rows with type, cache status and description"],["vis list --targets --inferred","Only show targets synthesized by Project Crystal-style inference"],["vis list --deps","Human-readable table of every dep-instance across the workspace"],["vis list --deps --internal-only","Only workspace deps in human form"],["vis list --deps --format=ndjson","Stream every dep-instance as NDJSON for jq pipelines"],["vis list --deps --format=json --pretty","Single pretty-printed JSON array of dep-instances"],["vis list --format=json","Machine-readable project listing"],['vis list --query "tag=frontend"',"Filter by query"]],group:"Workspace",loader:h_(()=>import("./handler33.js"),"loader"),name:"list",options:[{defaultValue:!1,description:"Filter target rows to only inferred targets (implies --targets)",name:"inferred",type:Boolean},{description:"Output format: table (default), json (single document), or ndjson (one record per line; --deps only)",name:"format",type:String},{defaultValue:!1,description:"Pretty-print with 2-space indent (only meaningful with --format=json)",name:"pretty",type:Boolean},{description:"Filter projects by query",name:"query",type:String},{defaultValue:!1,description:"Show per-target rows (type, cache, description)",name:"targets",type:Boolean},{defaultValue:!1,description:"Render a dep-instance view (table by default; use --format=ndjson|json for jq-friendly streams)",name:"deps",type:Boolean},{description:"Restrict --deps to specific dep blocks (repeatable)",multiple:!0,name:"dep-type",type:String},{defaultValue:!1,description:"With --deps: only show internal/workspace deps",name:"internal-only",type:Boolean},{defaultValue:!1,description:"With --deps: only show external/registry deps",name:"external-only",type:Boolean},{description:"With --deps: glob of declaring package names to keep (repeatable)",multiple:!0,name:"include",type:String},{description:"With --deps: glob of declaring package names to drop (repeatable)",multiple:!0,name:"exclude",type:String}]};var y_=Object.defineProperty,St=f((e,t)=>y_(e,"name",{value:t,configurable:!0}),"t$p");const Pt=[{defaultValue:!1,description:"Preview changes without applying",name:"dry-run",type:Boolean},{alias:"y",defaultValue:!1,description:"Skip the confirmation prompt",name:"yes",type:Boolean}],v_={commandPath:["migrate"],description:"Migrate dependencies and scripts to vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateDepsExecute})),"loader"),name:"deps",options:[...Pt]},b_={commandPath:["migrate"],description:"Inline lint-staged configuration into vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateLintStagedExecute})),"loader"),name:"lint-staged",options:[...Pt]},$_={commandPath:["migrate"],description:"Inline nano-staged configuration into vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateNanoStagedExecute})),"loader"),name:"nano-staged",options:[...Pt]},w_={commandPath:["migrate"],description:"Migrate turborepo tasks/config to vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateTurborepoExecute})),"loader"),name:"turborepo",options:[...Pt]},k_={commandPath:["migrate"],description:"Migrate nx targets/config to vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateNxExecute})),"loader"),name:"nx",options:[...Pt,{defaultValue:!1,description:"Overwrite an existing vis.config.ts (a .bak is taken first)",name:"force",type:Boolean}]},S_={commandPath:["migrate"],description:"Migrate moon tasks/templates to vis",group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateMoonExecute})),"loader"),name:"moon",options:[...Pt,{defaultValue:!1,description:"Copy .moon/templates/* into .vis/templates/* so `vis generate` works without .moon/",name:"copy-templates",type:Boolean}]},E_={commandPath:["migrate"],description:"Migrate gitleaks config/baseline/hooks to `vis secrets`",examples:[["vis migrate gitleaks","Migrate gitleaks config/baseline/hooks to `vis secrets`"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateGitleaksExecute})),"loader"),name:"gitleaks",options:[...Pt]},D_={commandPath:["migrate"],description:"Migrate Kingfisher baseline/hooks/scripts to `vis secrets`",examples:[["vis migrate kingfisher","Migrate Kingfisher baseline/hooks/scripts to `vis secrets`"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateKingfisherExecute})),"loader"),name:"kingfisher",options:[...Pt]},C_={commandPath:["migrate"],description:"Replace secretlint with `vis secrets`",examples:[["vis migrate secretlint","Replace secretlint with `vis secrets`"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateSecretlintExecute})),"loader"),name:"secretlint",options:[...Pt]},A_={commandPath:["migrate"],description:"Translate syncpack customTypes into vis policy and strip the syncpack dep/scripts",examples:[["vis migrate syncpack","Translate syncpack customTypes into vis policy and strip the syncpack dep/scripts"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateSyncpackExecute})),"loader"),name:"syncpack",options:[...Pt]},O_={commandPath:["migrate"],description:"Strip sherif config/dep/scripts and surface ignore-rules as a positive `vis lint --<rule>` command",examples:[["vis migrate sherif","Strip sherif config/dep/scripts and surface ignore-rules as a positive `vis lint --<rule>` command"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateSherifExecute})),"loader"),name:"sherif",options:[...Pt]},j_={commandPath:["migrate"],description:"Auto-rewrite vis.config.ts to use renamed fields (targetDefaults → tasks, taskDefaults → scopedTasks, taskRunnerOptions → taskRunner)",examples:[["vis migrate self","Rewrite vis.config.ts in-place (a .bak is taken first)"],["vis migrate self --dry-run","Preview the rewrite without writing"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateSelfExecute})),"loader"),name:"self",options:[...Pt]},x_={commandPath:["migrate"],description:"Audit the workspace for stray gitleaks/secretlint/sherif/syncpack references (exit 1 on issues)",examples:[["vis migrate verify","Audit the workspace for stray gitleaks/secretlint/sherif/syncpack references (exit 1 on issues)"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateVerifyExecute})),"loader"),name:"verify",options:[]},P_={commandPath:["migrate"],description:"Run every applicable migration non-interactively (autodetected)",examples:[["vis migrate all --yes","Run every detected migration without prompting (CI-friendly)"],["vis migrate all --dry-run","Preview every detected migration without writing files"]],group:"Migrate",loader:St(()=>import("./handler35.js").then(e=>({default:e.migrateAllExecute})),"loader"),name:"all",options:[...Pt]},N_=[P_,v_,b_,$_,w_,k_,S_,j_,E_,D_,C_,A_,O_,x_];var R_=Object.defineProperty,F_=f((e,t)=>R_(e,"name",{value:t,configurable:!0}),"r$x");const L_=new Set(["--cwd"]),I_=new Set(["--help","--version","-h","-V"]),T_=F_(e=>{const t=[];for(let r=0;r<e.length;r+=1){const n=e[r];if(n!==void 0){if(I_.has(n))return!1;if(n.startsWith("-")){const i=n.indexOf("="),s=i===-1?n:n.slice(0,i);if(L_.has(s)&&i===-1){const o=e[r+1];o!==void 0&&!o.startsWith("-")&&(r+=1)}continue}t.push(n)}}return t.length===1&&t[0]==="migrate"},"isBareMigrateInvocation");var B_=Object.defineProperty,__=f((e,t)=>B_(e,"name",{value:t,configurable:!0}),"t$o");const Mg=__(e=>e in xl&&xl[e]!=="0"&&xl[e]!=="false","check"),Ir=Mg("CI")||Mg("CONTINUOUS_INTEGRATION");var M_=Object.defineProperty,hu=f((e,t)=>M_(e,"name",{value:t,configurable:!0}),"i$j");class V_{static{f(this,"MigrateStore")}static{hu(this,"MigrateStore")}#e;#r=new Set;constructor(t){this.#e={applyProgress:null,checkedItems:new Set(t.map(r=>r.entry.id)),error:null,focusedPanel:"list",items:t,phase:"browsing",selectedIndex:0}}getSnapshot=hu(()=>this.#e,"getSnapshot");subscribe=hu(t=>(this.#r.add(t),()=>{this.#r.delete(t)}),"subscribe");getCheckedItems(){return this.#e.items.filter(t=>this.#e.checkedItems.has(t.entry.id))}getSelectedItem(){return this.#e.items[this.#e.selectedIndex]??null}setSelectedIndex(t){const r=Math.max(0,Math.min(t,this.#e.items.length-1));r!==this.#e.selectedIndex&&this.#t({...this.#e,selectedIndex:r})}setFocusedPanel(t){t!==this.#e.focusedPanel&&this.#t({...this.#e,focusedPanel:t})}toggleCheck(t){const r=new Set(this.#e.checkedItems);r.has(t)?r.delete(t):r.add(t),this.#t({...this.#e,checkedItems:r})}checkAll(){this.#t({...this.#e,checkedItems:new Set(this.#e.items.map(t=>t.entry.id))})}uncheckAll(){this.#t({...this.#e,checkedItems:new Set})}toggleAll(){this.#e.checkedItems.size===this.#e.items.length?this.uncheckAll():this.checkAll()}startApply(){const t=this.getCheckedItems().length;this.#t({...this.#e,applyProgress:{current:0,total:t},phase:"applying"})}updateApplyProgress(t){this.#e.applyProgress&&this.#t({...this.#e,applyProgress:{...this.#e.applyProgress,current:t}})}markDone(){this.#t({...this.#e,phase:"done"})}setError(t){this.#t({...this.#e,error:t,phase:"error"})}#t(t){this.#e=t;for(const r of this.#r)try{r()}catch{}}}var W_=Object.defineProperty,U_=f((e,t)=>W_(e,"name",{value:t,configurable:!0}),"f$a");const Vg=U_(({autoExitSeconds:e,onCancel:t,visible:r})=>{const{exit:n}=vb(),[i,s]=Is(e||3),o=Js(null),a=Js(0);gb(()=>{if(!r)return;const c=e||3;s(c),a.current=Date.now();let u=c;return o.current=setInterval(()=>{u-=1,u<=0?(o.current&&(clearInterval(o.current),o.current=null),s(0),n()):s(u)},1e3),()=>{o.current&&(clearInterval(o.current),o.current=null)}},[r,e,n]);const l=yb(()=>{o.current&&(clearInterval(o.current),o.current=null),t()},[t]);return bb((c,u)=>{Date.now()-a.current<200||(c==="q"?n():l())},{isActive:r}),z(Ap,{backgroundColor:"#1e1e1e",footer:pe(H,{dimColor:!0,children:["Press"," ",z(H,{bold:!0,color:"white",children:"q"})," ","to exit,"," ",z(H,{bold:!0,color:"white",children:"any key"})," ","to stay"]}),title:`Exiting in ${i}…`,visible:r,width:50,children:z(H,{dimColor:!0,children:"Stay to explore the results interactively."})})},"QuitDialog");var G_=Object.defineProperty,W1=f((e,t)=>G_(e,"name",{value:t,configurable:!0}),"n$n");const q_=W1(e=>{if(e.startsWith("⚠"))return"yellow";e.startsWith("── ")||e.startsWith("[dry-run]")},"colorForPreviewLine"),z_=W1(({focused:e,item:t,scrollRef:r})=>t?pe(he,{borderColor:e?"white":"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,children:[z(he,{flexShrink:0,paddingTop:1,paddingX:2,children:z(H,{bold:!0,color:"white",children:t.entry.title})}),z(he,{flexShrink:0,paddingBottom:1,paddingX:2,children:z(H,{dimColor:!0,children:t.entry.description})}),z(iD,{flexGrow:1,flexShrink:1,paddingX:2,ref:r,scrollbar:!0,scrollbarColor:"gray",scrollbarStyle:"block",children:pe(he,{flexDirection:"column",children:[z(H,{dimColor:!0,children:"── What will change ──"}),z(H,{}),t.preview.length===0&&z(H,{dimColor:!0,children:"(no preview available)"}),t.preview.map((i,s)=>{const o=q_(i);return i===""?z(H,{},`blank-${String(s)}`):z(H,{color:o,children:i},`${String(s)}-${i.slice(0,20)}`)})]})})]}):z(he,{alignItems:"center",borderColor:"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,justifyContent:"center",children:z(H,{dimColor:!0,children:"No migration selected"})}),"MigrateDetailPanel");var H_=Object.defineProperty,U1=f((e,t)=>H_(e,"name",{value:t,configurable:!0}),"g$d");const J_=U1(({checked:e,isSelected:t,item:r})=>{const n=e?"☑":"☐",i=r.preview.length;return pe(he,{flexShrink:0,height:1,children:[z(H,{children:t?">":" "}),pe(H,{color:e?"white":"gray",children:[" ",n," "]}),z(he,{flexGrow:1,children:z(H,{bold:t,inverse:t,wrap:"truncate",children:r.entry.title})}),pe(H,{dimColor:!0,children:[" ",i," ","change",i===1?"":"s"," "]})]})},"MigrationRow"),K_=U1(({checkedItems:e,focused:t,isDryRun:r,items:n,scrollOffset:i,selectedIndex:s,viewportHeight:o})=>{const a=t?"white":"gray",l=n.filter(p=>e.has(p.entry.id)).length,c=n.map((p,m)=>z(J_,{checked:e.has(p.entry.id),isSelected:m===s,item:p},p.entry.id)),u=n.length,d=u>o&&o>0;return pe(he,{borderColor:a,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[pe(he,{flexShrink:0,gap:1,paddingX:1,children:[z(H,{bold:!0,inverse:!0,children:" MIGRATE "}),pe(H,{wrap:"truncate",children:[n.length," ","applicable"]}),l>0&&pe(H,{dimColor:!0,children:[" — ",l," selected"]}),r&&z(H,{color:"yellow",children:" (dry-run)"})]}),pe(he,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[z(he,{flexDirection:"column",flexGrow:1,overflow:"hidden",paddingLeft:1,children:z(he,{flexDirection:"column",marginTop:-i,children:c})}),d&&z(he,{flexShrink:0,marginLeft:1,marginRight:1,children:z(sD,{contentHeight:u,placement:"inset",scrollOffset:i,style:"block",viewportHeight:o})})]})]})},"MigrateListPanel");var Y_=Object.defineProperty,X_=f((e,t)=>Y_(e,"name",{value:t,configurable:!0}),"N$e");const Q_=100,Z_=40,e3=10,t3=X_(({autoExitSeconds:e=0,isDryRun:t,store:r})=>{const{exit:n}=vb(),{columns:i,rows:s}=nD(),o=rD(r.subscribe,r.getSnapshot),[a,l]=Is(!1),[c,u]=Is(!1),[d,p]=Is(!1),[m,g]=Is(0),$=Js(null),S=Js(null),k=Js(null),v=o.items[o.selectedIndex]??null,h=Math.max(1,s-6),b=yb(Y=>{g(P=>Y>=P+h?Math.max(0,Y-h+1):Y<P?Math.max(0,Y):P)},[h]);if(gb(()=>{S.current?.scrollToTop()},[v?.entry.id]),bb((Y,P)=>{if(Y==="c"&&P.ctrl){n();return}if(!d){if(c){Y==="u"||P.return?(u(!1),r.startApply(),n(r.getCheckedItems())):P.escape||Y==="q"?u(!1):P.downArrow||Y==="j"?k.current?.scrollBy(1):(P.upArrow||Y==="k")&&k.current?.scrollBy(-1);return}if(a){P.escape||Y==="?"?l(!1):Y==="q"?(l(!1),p(!0)):P.downArrow||Y==="j"?$.current?.scrollBy(1):(P.upArrow||Y==="k")&&$.current?.scrollBy(-1);return}if(Y==="?"){l(!0);return}if(Y==="q"){p(!0);return}if(P.tab){r.setFocusedPanel(o.focusedPanel==="list"?"detail":"list");return}if(o.focusedPanel==="list"){if(P.downArrow||Y==="j"){const N=Math.min(o.selectedIndex+1,o.items.length-1);r.setSelectedIndex(N),b(N);return}if(P.upArrow||Y==="k"){const N=Math.max(o.selectedIndex-1,0);r.setSelectedIndex(N),b(N);return}if(P.pageDown){const N=Math.min(o.selectedIndex+10,o.items.length-1);r.setSelectedIndex(N),b(N);return}if(P.pageUp){const N=Math.max(o.selectedIndex-10,0);r.setSelectedIndex(N),b(N);return}if(P.home){r.setSelectedIndex(0),g(0);return}if(P.end){const N=o.items.length-1;r.setSelectedIndex(N),b(N);return}if(Y===" "||P.return){v&&r.toggleCheck(v.entry.id);return}if(Y==="a"){r.toggleAll();return}if(Y==="u"&&!t&&o.checkedItems.size>0){u(!0);return}P.rightArrow&&r.setFocusedPanel("detail");return}if(o.focusedPanel==="detail"){if(P.escape||P.leftArrow){r.setFocusedPanel("list");return}if(P.downArrow||Y==="j"){S.current?.scrollBy(1);return}if(P.upArrow||Y==="k"){S.current?.scrollBy(-1);return}if(P.pageDown){S.current?.scrollBy(10);return}if(P.pageUp){S.current?.scrollBy(-10);return}if(P.home){S.current?.scrollToTop();return}P.end&&S.current?.scrollToBottom()}}},{isActive:!0}),i<Z_||s<e3)return z(he,{alignItems:"center",height:s,justifyContent:"center",width:i,children:pe(H,{color:"yellow",children:["Terminal too small (",i,"x",s,")"]})});const w=i>=Q_,y=[pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"q"}),z(H,{dimColor:!0,children:"QUIT"})]},"q"),pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"?"}),z(H,{dimColor:!0,children:"HELP"})]},"?"),pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"↑↓"}),z(H,{dimColor:!0,children:"NAV"})]},"nav"),pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"Space"}),z(H,{dimColor:!0,children:"CHECK"})]},"sp"),pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"a"}),z(H,{dimColor:!0,children:"ALL"})]},"a")];!t&&o.checkedItems.size>0&&y.push(pe(he,{gap:1,children:[z(H,{bold:!0,color:"green",children:"u"}),z(H,{dimColor:!0,children:"APPLY"})]},"u")),y.push(pe(he,{gap:1,children:[z(H,{bold:!0,color:"white",children:"Tab"}),z(H,{dimColor:!0,children:"PANEL"})]},"tab"));const D=z(he,{borderBottom:!1,borderColor:"gray",borderLeft:!1,borderRight:!1,borderStyle:"single",flexShrink:0,children:z(he,{flexWrap:"wrap",gap:2,paddingX:1,children:y})}),E=pe(Ap,{footer:pe(H,{dimColor:!0,children:[z(H,{bold:!0,color:"white",children:"↑↓"})," scroll ",z(H,{bold:!0,color:"white",children:"?"}),"/",z(H,{bold:!0,color:"white",children:"Esc"})," close"]}),scrollRef:$,title:"KEYBOARD SHORTCUTS",visible:a,width:52,children:[pe(he,{flexDirection:"column",marginBottom:1,children:[z(H,{bold:!0,color:"white",children:"NAVIGATION"}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" ↑/k"}),z(H,{dimColor:!0,children:" Move up"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" ↓/j"}),z(H,{dimColor:!0,children:" Move down"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" Tab"}),z(H,{dimColor:!0,children:" Switch panel"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" →/←"}),z(H,{dimColor:!0,children:" Focus detail/list"})]})]}),pe(he,{flexDirection:"column",marginBottom:1,children:[z(H,{bold:!0,color:"white",children:"SELECTION"}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" Space"}),z(H,{dimColor:!0,children:" Toggle migration"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" a"}),z(H,{dimColor:!0,children:" Toggle all"})]})]}),pe(he,{flexDirection:"column",children:[z(H,{bold:!0,color:"white",children:"ACTIONS"}),!t&&pe(H,{children:[z(H,{bold:!0,color:"white",children:" u"}),z(H,{dimColor:!0,children:" Apply selected migrations"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" q"}),z(H,{dimColor:!0,children:" Quit"})]}),pe(H,{children:[z(H,{bold:!0,color:"white",children:" ?"}),z(H,{dimColor:!0,children:" Toggle help"})]})]})]}),A=r.getCheckedItems(),j=z(he,{alignItems:"center",flexDirection:"column",children:pe(H,{dimColor:!0,children:["Press ",z(H,{bold:!0,color:"white",children:"u"})," or ",z(H,{bold:!0,color:"white",children:"Enter"})," to confirm, ",z(H,{bold:!0,color:"white",children:"Esc"})," to cancel"]})}),G=z(Ap,{footer:j,scrollRef:k,title:`Apply ${String(A.length)} migration${A.length===1?"":"s"}?`,visible:c,width:70,children:A.map(Y=>pe(he,{gap:1,children:[pe(H,{children:[" ",Y.entry.title]}),pe(H,{dimColor:!0,children:["(",Y.preview.length," ","change",Y.preview.length===1?"":"s",")"]})]},Y.entry.id))}),W=z(K_,{checkedItems:o.checkedItems,focused:o.focusedPanel==="list",isDryRun:t,items:o.items,scrollOffset:m,selectedIndex:o.selectedIndex,viewportHeight:h}),ce=z(z_,{focused:o.focusedPanel==="detail",item:v,scrollRef:S});if(w){const Y=Math.floor(i*.55);return pe(he,{flexDirection:"column",height:s,width:i,children:[pe(he,{flexDirection:"row",flexGrow:1,children:[z(he,{flexGrow:1,children:W}),z(he,{width:Y,children:ce})]}),D,G,z(Vg,{autoExitSeconds:e||3,onCancel:f(()=>{p(!1)},"onCancel"),visible:d}),E]})}const te=Math.floor(s*.45);return pe(he,{flexDirection:"column",height:s,width:i,children:[z(he,{height:te,children:W}),z(he,{flexGrow:1,children:ce}),D,G,z(Vg,{autoExitSeconds:e||3,onCancel:f(()=>{p(!1)},"onCancel"),visible:d}),E]})},"VisMigrateApp");var r3=Object.defineProperty,Hf=f((e,t)=>r3(e,"name",{value:t,configurable:!0}),"r$v");const n3=/\n([ \t]+)/,i3=Hf(e=>{const{indent:t,lineEnding:r}=oD(e),n={};return t!==void 0&&(n.indent=t),(r==="lf"||r==="crlf")&&(n.lineEnding=r),n},"resolveEditorConfigDefaults"),br=Hf((e,t,r={})=>{const{defaultIndent:n=" ",useEditorconfig:i=!0}=r;if(i){const{indent:s}=i3(e);if(s!==void 0)return s}if(t!==void 0){const s=n3.exec(t);if(s?.[1]!==void 0)return s[1]}return n},"resolveIndentForFile"),Jf=Hf((e,t={})=>{const r=x(e)?J(e):void 0;return br(e,r,t)},"resolveIndentForExistingFile");var s3=Object.defineProperty,o3=f((e,t)=>s3(e,"name",{value:t,configurable:!0}),"t$n");const G1=[".lintstagedrc.json",".lintstagedrc"],q1=[".lintstagedrc.yaml",".lintstagedrc.yml",".lintstagedrc.mjs","lint-staged.config.mjs",".lintstagedrc.cjs","lint-staged.config.cjs",".lintstagedrc.js","lint-staged.config.js",".lintstagedrc.ts","lint-staged.config.ts",".lintstagedrc.mts","lint-staged.config.mts",".lintstagedrc.cts","lint-staged.config.cts"],Kf=[...G1,...q1],a3=[/^((?:[A-Z_][A-Z0-9_]*(?:=\S*)?\s+)*)(pnpm|pnpm exec|npx|yarn|yarn run|npm exec|npm run|bunx|bun run|bun x)\s+lint-staged\b/,/^((?:[A-Z_][A-Z0-9_]*(?:=\S*)?\s+)*)lint-staged\b/],z1=[".nano-staged.json",".nanostagedrc"],H1=[".nano-staged.mjs",".nano-staged.cjs",".nano-staged.js","nano-staged.config.mjs","nano-staged.config.cjs","nano-staged.config.js","nano-staged.config.mts","nano-staged.config.cts","nano-staged.config.ts"],Yf=[...z1,...H1],c3=[/^((?:[A-Z_][A-Z0-9_]*(?:=\S*)?\s+)*)(pnpm|pnpm exec|npx|yarn|yarn run|npm exec|npm run|bunx|bun run|bun x)\s+nano-staged\b/,/^((?:[A-Z_][A-Z0-9_]*(?:=\S*)?\s+)*)nano-staged\b/],J1=["husky","lint-staged","nano-staged"],l3=/\(is-ci \|\| husky \|\| exit 0\)\s*&&\s*/g,u3=/\bhusky(?:\s+install)?\s*&&\s*/g,p3=/\s*&&\s*husky(?:\s+install)?/g,d3=/\s*\|\|\s*husky(?:\s+install)?/g,f3=[l3,u3,p3,d3],K1=o3(e=>{if(e==="husky"||e==="husky install")return;let t=e;for(const r of f3)t=t.replace(r,"");return t=t.trim(),t===e?e:t||void 0},"cleanHuskyFromScript");var m3=Object.defineProperty,Ga=f((e,t)=>m3(e,"name",{value:t,configurable:!0}),"o$r");const h3=/\/$/,g3=Ga(e=>{let t='"$0"';for(let r=0;r<e;r+=1)t=`"$(dirname ${t})"`;return t},"nestedDirname"),y3=Ga(e=>{const t=e.split("/").filter(r=>r!==""&&r!==".").length+2;return`#!/usr/bin/env sh
|
|
1005
1005
|
{ [ "$VIS_GIT_HOOKS" = "2" ]; } && set -x
|
|
1006
1006
|
n=$(basename "$0")
|
|
1007
1007
|
s=$(dirname "$(dirname "$0")")/$n
|
package/index.js
CHANGED
|
@@ -82,7 +82,7 @@ function requireNative() {
|
|
|
82
82
|
const binding = require('@visulima/vis-binding-android-arm64')
|
|
83
83
|
const bindingPackageVersion = require('@visulima/vis-binding-android-arm64/package.json').version
|
|
84
84
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
85
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
85
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
86
86
|
}
|
|
87
87
|
return binding
|
|
88
88
|
} catch (e) {
|
|
@@ -98,7 +98,7 @@ function requireNative() {
|
|
|
98
98
|
const binding = require('@visulima/vis-binding-android-arm-eabi')
|
|
99
99
|
const bindingPackageVersion = require('@visulima/vis-binding-android-arm-eabi/package.json').version
|
|
100
100
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
101
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
101
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
102
102
|
}
|
|
103
103
|
return binding
|
|
104
104
|
} catch (e) {
|
|
@@ -119,7 +119,7 @@ function requireNative() {
|
|
|
119
119
|
const binding = require('@visulima/vis-binding-win32-x64-gnu')
|
|
120
120
|
const bindingPackageVersion = require('@visulima/vis-binding-win32-x64-gnu/package.json').version
|
|
121
121
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
122
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
122
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
123
123
|
}
|
|
124
124
|
return binding
|
|
125
125
|
} catch (e) {
|
|
@@ -135,7 +135,7 @@ function requireNative() {
|
|
|
135
135
|
const binding = require('@visulima/vis-binding-win32-x64-msvc')
|
|
136
136
|
const bindingPackageVersion = require('@visulima/vis-binding-win32-x64-msvc/package.json').version
|
|
137
137
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
138
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
138
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
139
139
|
}
|
|
140
140
|
return binding
|
|
141
141
|
} catch (e) {
|
|
@@ -152,7 +152,7 @@ function requireNative() {
|
|
|
152
152
|
const binding = require('@visulima/vis-binding-win32-ia32-msvc')
|
|
153
153
|
const bindingPackageVersion = require('@visulima/vis-binding-win32-ia32-msvc/package.json').version
|
|
154
154
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
155
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
155
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
156
156
|
}
|
|
157
157
|
return binding
|
|
158
158
|
} catch (e) {
|
|
@@ -168,7 +168,7 @@ function requireNative() {
|
|
|
168
168
|
const binding = require('@visulima/vis-binding-win32-arm64-msvc')
|
|
169
169
|
const bindingPackageVersion = require('@visulima/vis-binding-win32-arm64-msvc/package.json').version
|
|
170
170
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
171
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
171
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
172
172
|
}
|
|
173
173
|
return binding
|
|
174
174
|
} catch (e) {
|
|
@@ -187,7 +187,7 @@ function requireNative() {
|
|
|
187
187
|
const binding = require('@visulima/vis-binding-darwin-universal')
|
|
188
188
|
const bindingPackageVersion = require('@visulima/vis-binding-darwin-universal/package.json').version
|
|
189
189
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
190
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
190
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
191
191
|
}
|
|
192
192
|
return binding
|
|
193
193
|
} catch (e) {
|
|
@@ -203,7 +203,7 @@ function requireNative() {
|
|
|
203
203
|
const binding = require('@visulima/vis-binding-darwin-x64')
|
|
204
204
|
const bindingPackageVersion = require('@visulima/vis-binding-darwin-x64/package.json').version
|
|
205
205
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
206
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
206
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
207
207
|
}
|
|
208
208
|
return binding
|
|
209
209
|
} catch (e) {
|
|
@@ -219,7 +219,7 @@ function requireNative() {
|
|
|
219
219
|
const binding = require('@visulima/vis-binding-darwin-arm64')
|
|
220
220
|
const bindingPackageVersion = require('@visulima/vis-binding-darwin-arm64/package.json').version
|
|
221
221
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
222
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
222
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
223
223
|
}
|
|
224
224
|
return binding
|
|
225
225
|
} catch (e) {
|
|
@@ -239,7 +239,7 @@ function requireNative() {
|
|
|
239
239
|
const binding = require('@visulima/vis-binding-freebsd-x64')
|
|
240
240
|
const bindingPackageVersion = require('@visulima/vis-binding-freebsd-x64/package.json').version
|
|
241
241
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
242
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
242
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
243
243
|
}
|
|
244
244
|
return binding
|
|
245
245
|
} catch (e) {
|
|
@@ -255,7 +255,7 @@ function requireNative() {
|
|
|
255
255
|
const binding = require('@visulima/vis-binding-freebsd-arm64')
|
|
256
256
|
const bindingPackageVersion = require('@visulima/vis-binding-freebsd-arm64/package.json').version
|
|
257
257
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
258
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
258
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
259
259
|
}
|
|
260
260
|
return binding
|
|
261
261
|
} catch (e) {
|
|
@@ -276,7 +276,7 @@ function requireNative() {
|
|
|
276
276
|
const binding = require('@visulima/vis-binding-linux-x64-musl')
|
|
277
277
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-x64-musl/package.json').version
|
|
278
278
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
279
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
279
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
280
280
|
}
|
|
281
281
|
return binding
|
|
282
282
|
} catch (e) {
|
|
@@ -292,7 +292,7 @@ function requireNative() {
|
|
|
292
292
|
const binding = require('@visulima/vis-binding-linux-x64-gnu')
|
|
293
293
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-x64-gnu/package.json').version
|
|
294
294
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
295
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
295
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
296
296
|
}
|
|
297
297
|
return binding
|
|
298
298
|
} catch (e) {
|
|
@@ -310,7 +310,7 @@ function requireNative() {
|
|
|
310
310
|
const binding = require('@visulima/vis-binding-linux-arm64-musl')
|
|
311
311
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-arm64-musl/package.json').version
|
|
312
312
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
313
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
313
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
314
314
|
}
|
|
315
315
|
return binding
|
|
316
316
|
} catch (e) {
|
|
@@ -326,7 +326,7 @@ function requireNative() {
|
|
|
326
326
|
const binding = require('@visulima/vis-binding-linux-arm64-gnu')
|
|
327
327
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-arm64-gnu/package.json').version
|
|
328
328
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
329
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
329
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
330
330
|
}
|
|
331
331
|
return binding
|
|
332
332
|
} catch (e) {
|
|
@@ -344,7 +344,7 @@ function requireNative() {
|
|
|
344
344
|
const binding = require('@visulima/vis-binding-linux-arm-musleabihf')
|
|
345
345
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-arm-musleabihf/package.json').version
|
|
346
346
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
347
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
347
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
348
348
|
}
|
|
349
349
|
return binding
|
|
350
350
|
} catch (e) {
|
|
@@ -360,7 +360,7 @@ function requireNative() {
|
|
|
360
360
|
const binding = require('@visulima/vis-binding-linux-arm-gnueabihf')
|
|
361
361
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-arm-gnueabihf/package.json').version
|
|
362
362
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
363
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
363
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
364
364
|
}
|
|
365
365
|
return binding
|
|
366
366
|
} catch (e) {
|
|
@@ -378,7 +378,7 @@ function requireNative() {
|
|
|
378
378
|
const binding = require('@visulima/vis-binding-linux-loong64-musl')
|
|
379
379
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-loong64-musl/package.json').version
|
|
380
380
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
381
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
381
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
382
382
|
}
|
|
383
383
|
return binding
|
|
384
384
|
} catch (e) {
|
|
@@ -394,7 +394,7 @@ function requireNative() {
|
|
|
394
394
|
const binding = require('@visulima/vis-binding-linux-loong64-gnu')
|
|
395
395
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-loong64-gnu/package.json').version
|
|
396
396
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
397
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
397
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
398
398
|
}
|
|
399
399
|
return binding
|
|
400
400
|
} catch (e) {
|
|
@@ -412,7 +412,7 @@ function requireNative() {
|
|
|
412
412
|
const binding = require('@visulima/vis-binding-linux-riscv64-musl')
|
|
413
413
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-riscv64-musl/package.json').version
|
|
414
414
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
415
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
415
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
416
416
|
}
|
|
417
417
|
return binding
|
|
418
418
|
} catch (e) {
|
|
@@ -428,7 +428,7 @@ function requireNative() {
|
|
|
428
428
|
const binding = require('@visulima/vis-binding-linux-riscv64-gnu')
|
|
429
429
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-riscv64-gnu/package.json').version
|
|
430
430
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
431
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
431
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
432
432
|
}
|
|
433
433
|
return binding
|
|
434
434
|
} catch (e) {
|
|
@@ -445,7 +445,7 @@ function requireNative() {
|
|
|
445
445
|
const binding = require('@visulima/vis-binding-linux-ppc64-gnu')
|
|
446
446
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-ppc64-gnu/package.json').version
|
|
447
447
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
448
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
448
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
449
449
|
}
|
|
450
450
|
return binding
|
|
451
451
|
} catch (e) {
|
|
@@ -461,7 +461,7 @@ function requireNative() {
|
|
|
461
461
|
const binding = require('@visulima/vis-binding-linux-s390x-gnu')
|
|
462
462
|
const bindingPackageVersion = require('@visulima/vis-binding-linux-s390x-gnu/package.json').version
|
|
463
463
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
464
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
464
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
465
465
|
}
|
|
466
466
|
return binding
|
|
467
467
|
} catch (e) {
|
|
@@ -481,7 +481,7 @@ function requireNative() {
|
|
|
481
481
|
const binding = require('@visulima/vis-binding-openharmony-arm64')
|
|
482
482
|
const bindingPackageVersion = require('@visulima/vis-binding-openharmony-arm64/package.json').version
|
|
483
483
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
484
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
484
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
485
485
|
}
|
|
486
486
|
return binding
|
|
487
487
|
} catch (e) {
|
|
@@ -497,7 +497,7 @@ function requireNative() {
|
|
|
497
497
|
const binding = require('@visulima/vis-binding-openharmony-x64')
|
|
498
498
|
const bindingPackageVersion = require('@visulima/vis-binding-openharmony-x64/package.json').version
|
|
499
499
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
500
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
500
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
501
501
|
}
|
|
502
502
|
return binding
|
|
503
503
|
} catch (e) {
|
|
@@ -513,7 +513,7 @@ function requireNative() {
|
|
|
513
513
|
const binding = require('@visulima/vis-binding-openharmony-arm')
|
|
514
514
|
const bindingPackageVersion = require('@visulima/vis-binding-openharmony-arm/package.json').version
|
|
515
515
|
if (bindingPackageVersion !== '1.0.0-alpha.19' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
516
|
-
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.
|
|
516
|
+
throw new Error(`Native binding package version mismatch, expected 1.0.0-alpha.21 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
517
517
|
}
|
|
518
518
|
return binding
|
|
519
519
|
} catch (e) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/vis",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.21",
|
|
4
4
|
"description": "A monorepo dev toolkit — task runner, remote caching, security scanning, git hooks, and AI agent integrations — powered by @visulima/task-runner",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"build",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"@visulima/secret-scanner": "1.0.0-alpha.3",
|
|
81
81
|
"@visulima/task-runner": "1.0.0-alpha.14",
|
|
82
|
-
"@visulima/tui": "1.0.0-alpha.
|
|
82
|
+
"@visulima/tui": "1.0.0-alpha.16",
|
|
83
83
|
"jiti": "^2.7.0",
|
|
84
84
|
"module-replacements": "^2.11.0",
|
|
85
85
|
"module-replacements-codemods": "^1.2.1",
|
|
@@ -100,14 +100,14 @@
|
|
|
100
100
|
}
|
|
101
101
|
},
|
|
102
102
|
"optionalDependencies": {
|
|
103
|
-
"@visulima/vis-binding-darwin-arm64": "1.0.0-alpha.
|
|
104
|
-
"@visulima/vis-binding-linux-arm64-
|
|
105
|
-
"@visulima/vis-binding-linux-
|
|
106
|
-
"@visulima/vis-binding-linux-
|
|
107
|
-
"@visulima/vis-binding-darwin-x64": "1.0.0-alpha.
|
|
108
|
-
"@visulima/vis-binding-
|
|
109
|
-
"@visulima/vis-binding-
|
|
110
|
-
"@visulima/vis-binding-win32-x64-msvc": "1.0.0-alpha.
|
|
103
|
+
"@visulima/vis-binding-darwin-arm64": "1.0.0-alpha.21",
|
|
104
|
+
"@visulima/vis-binding-linux-arm64-musl": "1.0.0-alpha.21",
|
|
105
|
+
"@visulima/vis-binding-linux-x64-gnu": "1.0.0-alpha.21",
|
|
106
|
+
"@visulima/vis-binding-linux-arm64-gnu": "1.0.0-alpha.21",
|
|
107
|
+
"@visulima/vis-binding-darwin-x64": "1.0.0-alpha.21",
|
|
108
|
+
"@visulima/vis-binding-win32-arm64-msvc": "1.0.0-alpha.21",
|
|
109
|
+
"@visulima/vis-binding-linux-x64-musl": "1.0.0-alpha.21",
|
|
110
|
+
"@visulima/vis-binding-win32-x64-msvc": "1.0.0-alpha.21"
|
|
111
111
|
},
|
|
112
112
|
"engines": {
|
|
113
113
|
"node": "^22.14.0 || >=24.10.0"
|