@visulima/vis 1.0.0-alpha.13 → 1.0.0-alpha.14

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.
Files changed (100) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/LICENSE.md +7242 -385
  3. package/dist/bin.js +1 -1
  4. package/dist/config/index.d.ts +493 -1
  5. package/dist/config/index.js +1 -1
  6. package/dist/packem_chunks/applyDefaults.js +2 -2
  7. package/dist/packem_chunks/bin.js +1134 -199
  8. package/dist/packem_chunks/doctor-probe.js +2 -2
  9. package/dist/packem_chunks/fix.js +11 -11
  10. package/dist/packem_chunks/handler.js +1 -1
  11. package/dist/packem_chunks/handler10.js +1 -1
  12. package/dist/packem_chunks/handler11.js +1 -1
  13. package/dist/packem_chunks/handler12.js +5 -5
  14. package/dist/packem_chunks/handler13.js +1 -1
  15. package/dist/packem_chunks/handler14.js +20 -18
  16. package/dist/packem_chunks/handler15.js +1 -20
  17. package/dist/packem_chunks/handler16.js +1 -1
  18. package/dist/packem_chunks/handler17.js +1 -1
  19. package/dist/packem_chunks/handler18.js +1 -1
  20. package/dist/packem_chunks/handler19.js +5 -1
  21. package/dist/packem_chunks/handler2.js +1 -1
  22. package/dist/packem_chunks/handler20.js +1 -5
  23. package/dist/packem_chunks/handler21.js +1 -1
  24. package/dist/packem_chunks/handler22.js +5 -1
  25. package/dist/packem_chunks/handler23.js +1 -5
  26. package/dist/packem_chunks/handler24.js +3 -1
  27. package/dist/packem_chunks/handler25.js +1 -3
  28. package/dist/packem_chunks/handler26.js +1 -1
  29. package/dist/packem_chunks/handler27.js +7 -1
  30. package/dist/packem_chunks/handler28.js +22 -6
  31. package/dist/packem_chunks/handler29.js +3 -23
  32. package/dist/packem_chunks/handler3.js +4 -4
  33. package/dist/packem_chunks/handler30.js +18 -3
  34. package/dist/packem_chunks/handler31.js +1 -1
  35. package/dist/packem_chunks/handler32.js +2 -2
  36. package/dist/packem_chunks/handler33.js +24 -24
  37. package/dist/packem_chunks/handler34.js +2 -2
  38. package/dist/packem_chunks/handler35.js +2 -2
  39. package/dist/packem_chunks/handler36.js +20 -20
  40. package/dist/packem_chunks/handler37.js +2 -2
  41. package/dist/packem_chunks/handler38.js +6 -22
  42. package/dist/packem_chunks/handler39.js +11 -11
  43. package/dist/packem_chunks/handler4.js +1 -1
  44. package/dist/packem_chunks/handler40.js +5 -22
  45. package/dist/packem_chunks/handler41.js +24 -6
  46. package/dist/packem_chunks/handler42.js +10 -5
  47. package/dist/packem_chunks/handler43.js +153 -10
  48. package/dist/packem_chunks/handler44.js +25 -153
  49. package/dist/packem_chunks/handler45.js +3 -25
  50. package/dist/packem_chunks/handler46.js +27 -3
  51. package/dist/packem_chunks/handler47.js +41 -26
  52. package/dist/packem_chunks/handler48.js +32 -40
  53. package/dist/packem_chunks/handler5.js +7 -7
  54. package/dist/packem_chunks/handler6.js +1 -1
  55. package/dist/packem_chunks/handler7.js +1 -1
  56. package/dist/packem_chunks/handler8.js +1 -1
  57. package/dist/packem_chunks/handler9.js +1 -1
  58. package/dist/packem_chunks/heal-accept.js +4 -4
  59. package/dist/packem_chunks/heal.js +3 -3
  60. package/dist/packem_chunks/help-command.js +18 -0
  61. package/dist/packem_chunks/index.js +4 -4
  62. package/dist/packem_chunks/loader.js +1 -1
  63. package/dist/packem_chunks/tar.js +1 -1
  64. package/dist/packem_shared/ai-analysis-Dzs_nUwM.js +68 -0
  65. package/dist/packem_shared/ai-cache-Dtvmbsru.js +1 -0
  66. package/dist/packem_shared/{ai-fix-nn4zOE95.js → ai-fix-BmLM72GS.js} +4 -4
  67. package/dist/packem_shared/cache-directory-xASJia6M.js +1 -0
  68. package/dist/packem_shared/dependency-scan-DmwPKwLy.js +2 -0
  69. package/dist/packem_shared/docker-CA-scYu0.js +2 -0
  70. package/dist/packem_shared/failure-log-fD4DiFb1.js +2 -0
  71. package/dist/packem_shared/flakiness-BIg1rwvp.js +1 -0
  72. package/dist/packem_shared/{giget-CcEy_Elm.js → giget-BX2ixMoa.js} +2 -2
  73. package/dist/packem_shared/index-OlP7U_t5.js +6 -0
  74. package/dist/packem_shared/lockfile-BXylopgH.js +1 -0
  75. package/dist/packem_shared/otelPlugin-y5hoCw4b.js +1 -0
  76. package/dist/packem_shared/registry-BHqKXiLb.js +2 -0
  77. package/dist/packem_shared/run-summary-utils-D39XBHWW.js +1 -0
  78. package/dist/packem_shared/runtime-check-BaKni2y1.js +1 -0
  79. package/dist/packem_shared/selectors-BvtUXWGY.js +3 -0
  80. package/dist/packem_shared/toolchain-B7sIiJxK.js +5 -0
  81. package/dist/packem_shared/typosquats-XkC1CnOa.js +1 -0
  82. package/dist/packem_shared/verify-BVTcVfoW.js +1 -0
  83. package/dist/packem_shared/{vis-update-app-D1jl0UZZ.js → vis-update-app-DR8c4OfG.js} +1 -1
  84. package/package.json +15 -30
  85. package/dist/packem_shared/ai-analysis-hm8d2W7z.js +0 -67
  86. package/dist/packem_shared/ai-cache-DoiF80AR.js +0 -1
  87. package/dist/packem_shared/cache-directory-CwHlJhgx.js +0 -1
  88. package/dist/packem_shared/dependency-scan-COr5n63B.js +0 -2
  89. package/dist/packem_shared/docker-D6OGr5_S.js +0 -2
  90. package/dist/packem_shared/failure-log-iUVLf6ts.js +0 -2
  91. package/dist/packem_shared/flakiness-D9wf0t56.js +0 -1
  92. package/dist/packem_shared/otel-DxDUPJJH.js +0 -6
  93. package/dist/packem_shared/otelPlugin-CQq6poq8.js +0 -1
  94. package/dist/packem_shared/registry-CkubDdiY.js +0 -2
  95. package/dist/packem_shared/run-summary-utils-BfBvjzhY.js +0 -1
  96. package/dist/packem_shared/runtime-check-BXZ43CBW.js +0 -1
  97. package/dist/packem_shared/selectors-BylODRiM.js +0 -3
  98. package/dist/packem_shared/toolchain-BgBOUHII.js +0 -5
  99. package/dist/packem_shared/typosquats-CcZl99B1.js +0 -1
  100. package/dist/packem_shared/verify-Baj5mFJ7.js +0 -1
@@ -1,8 +1,8 @@
1
- var I=Object.defineProperty;var T=(c,r)=>I(c,"name",{value:r,configurable:!0});import{findPackageManagerSync as H}from"@visulima/package";import{render as j,renderToString as J,Text as y}from"@visulima/tui";import{A as V,O as W,W as Z,p as f,u as q,g as G,M as m,V as K,S as Q,B as X,c as b,v as _,j as ee,s as te}from"./bin.js";import a from"react";import{H as re,e as oe,Z as ne}from"../packem_shared/ai-analysis-hm8d2W7z.js";import{U as se,B as ie,T as M}from"../packem_shared/vis-update-app-D1jl0UZZ.js";var ae=Object.defineProperty,ce=T((c,r)=>ae(c,"name",{value:r,configurable:!0}),"$");const ye=ce(async({argument:c,logger:r,options:e,visConfig:i,workspaceRoot:C})=>{if(!C)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");const d=C;if(e.securityConfig){const t=V(d);if(W(i??{},t.name),e.sync&&t.name==="pnpm"){const o=Z(i??{});if(o.length>0){f.info(`
2
- Settings that would sync to pnpm-workspace.yaml:`);for(const x of o)f.success(` ${x}`)}else f.info("No security settings to sync.")}else e.sync&&t.name!=="pnpm"&&(f.info(`--sync is only available for pnpm projects. Your project uses ${t.name}.`),f.info("vis enforces security settings at the vis layer for non-pnpm projects."));if(!e.security&&!c?.length)return}const{packageManager:N}=H(d),U=q(d),l=i?.update??{},v=G(d,N,{dev:e.dev,prod:e.prod});if(v.size===0){r.info("No catalogs found.");return}const w=e.target??l.target??"latest";if(!["latest","minor","patch"].includes(w))throw new Error(`Invalid target "${w}". Use: latest, minor, or patch.`);const A={exclude:[...m(e.exclude),...m(l.exclude)],ignore:m(l.ignore),include:[...m(e.include),...m(l.include),...c],includeLocked:!!e.includeLocked,includePrerelease:e.prerelease||l.prerelease||!1,security:!e.noSecurity,target:w};let E=0;for(const t of v.values())E+=t.size;const h=!!process.stdout.isTTY&&!te;let u;const B=h?(t,o)=>{u?u.rerender(a.createElement(M,{current:t,total:o})):u=j(a.createElement(M,{current:t,total:o}),{interactive:!0,patchConsole:!1})}:(t,o)=>{r.info(`Checking ${String(t)}/${String(o)} dependencies...`)};h||r.info(`Checking ${String(E)} catalog dependencies against npm registry...
3
- `);const O=K(i?.security?.socket),{failed:$,outdated:s}=await Q(v,A,U,B,d,O,i?.security?.socket?.acceptedRisks);if(u&&(u.clear(),u.unmount()),$.length>0&&r.warn(`Failed to fetch: ${$.join(", ")}`),s.length===0){r.info("All catalog dependencies are up to date.");return}const k=e.format??l.format??"table",P=re(e.aiType??"impact"),p=e.ai?await oe(s,r,i?.ai,P):void 0;if(h&&k==="table"){const t=new se(s,p??null),o=i?.tui?.autoExit??!1,x=o===!0?3:typeof o=="number"?o:0;await j(a.createElement(ie,{autoExitSeconds:x,isDryRun:!0,store:t}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit();const z=process.stdout.columns||80;process.stdout.write(`
4
- `);for(const n of s){const L=n.vulnerabilities?.length||n.socketReport&&n.socketReport.alerts.length>0,S=!!n.acceptedRisk,Y=L?S?"✓":"⚠":"✓",D=S?"gray":n.updateType==="major"?"red":n.updateType==="minor"?"yellow":"green",g=n.socketReport?.score.overall,F=g===void 0?"":` [${String(Math.round(g*100))}%]`,R=g===void 0?void 0:X(g);process.stdout.write(`${J(a.createElement(y,null," ",a.createElement(y,{color:D},Y),` ${n.packageName} ${n.currentRange} → ${n.newRange}`,a.createElement(y,{dimColor:!0},` ${n.updateType}`),R?a.createElement(y,{color:R},F):null),{columns:z})}
1
+ var Y=Object.defineProperty;var b=(c,o)=>Y(c,"name",{value:o,configurable:!0});import{A as D,O as G,W as J,p as f,U as V,f as W,R as Z,F as m,J as q,V as K,B as Q,H as j,g as X,G as _,s as ee}from"./bin.js";import{render as T,renderToString as te,Text as y}from"@visulima/tui";import a from"react";import{H as oe,e as re,Z as ne}from"../packem_shared/ai-analysis-Dzs_nUwM.js";import{U as se,B as ie,T as U}from"../packem_shared/vis-update-app-DR8c4OfG.js";var ae=Object.defineProperty,ce=b((c,o)=>ae(c,"name",{value:o,configurable:!0}),"$");const ge=ce(async({argument:c,logger:o,options:e,visConfig:i,workspaceRoot:x})=>{if(!x)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");const d=x;if(e.securityConfig){const t=D(d);if(G(i??{},t.name),e.sync&&t.name==="pnpm"){const r=J(i??{});if(r.length>0){f.info(`
2
+ Settings that would sync to pnpm-workspace.yaml:`);for(const R of r)f.success(` ${R}`)}else f.info("No security settings to sync.")}else e.sync&&t.name!=="pnpm"&&(f.info(`--sync is only available for pnpm projects. Your project uses ${t.name}.`),f.info("vis enforces security settings at the vis layer for non-pnpm projects."));if(!e.security&&!c?.length)return}const{packageManager:N}=V(d),O=W(d),l=i?.update??{},w=Z(d,N,{dev:e.dev,includeInternal:e["include-internal"],peer:e.peer,prod:e.prod});if(w.size===0){o.info("No catalogs found.");return}const h=e.target??l.target??"latest";if(!["latest","minor","patch"].includes(h))throw new Error(`Invalid target "${h}". Use: latest, minor, or patch.`);const B={exclude:[...m(e.exclude),...m(l.exclude)],ignore:m(l.ignore),include:[...m(e.include),...m(l.include),...c],includeLocked:!!e.includeLocked,includePrerelease:e.prerelease||l.prerelease||!1,security:e.security!==!1,target:h};let C=0;for(const t of w.values())C+=t.size;const v=!!process.stdout.isTTY&&!ee;let u;const F=v?(t,r)=>{u?u.rerender(a.createElement(U,{current:t,total:r})):u=T(a.createElement(U,{current:t,total:r}),{interactive:!0,patchConsole:!1})}:(t,r)=>{o.info(`Checking ${String(t)}/${String(r)} dependencies...`)};v||o.info(`Checking ${String(C)} catalog dependencies against npm registry...
3
+ `);const z=q(i?.security?.socket),{failed:$,outdated:s}=await K(w,B,O,F,d,z,i?.security?.socket?.acceptedRisks);if(u&&(u.clear(),u.unmount()),$.length>0&&o.warn(`Failed to fetch: ${$.join(", ")}`),s.length===0){o.info("All catalog dependencies are up to date.");return}const k=e.format??l.format??"table",A=oe(e.aiType??"impact"),p=e.ai?await re(s,o,i?.ai,A):void 0;if(v&&k==="table"){const t=new se(s,p??null),r=i?.tui?.autoExit??!1,R=r===!0?3:typeof r=="number"?r:0;await T(a.createElement(ie,{autoExitSeconds:R,isDryRun:!0,store:t}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}).waitUntilExit();const H=process.stdout.columns||80;process.stdout.write(`
4
+ `);for(const n of s){const I=n.vulnerabilities?.length||n.socketReport&&n.socketReport.alerts.length>0,E=!!n.acceptedRisk,L=I?E?"✓":"⚠":"✓",M=E?"gray":n.updateType==="major"?"red":n.updateType==="minor"?"yellow":"green",g=n.socketReport?.score.overall,P=g===void 0?"":` [${String(Math.round(g*100))}%]`,S=g===void 0?void 0:Q(g);process.stdout.write(`${te(a.createElement(y,null," ",a.createElement(y,{color:M},L),` ${n.packageName} ${n.currentRange} → ${n.newRange}`,a.createElement(y,{dimColor:!0},` ${n.updateType}`),S?a.createElement(y,{color:S},P):null),{columns:H})}
5
5
  `)}process.stdout.write(`
6
- `),r.info(b(s))}else if(k==="json"){const t={failed:$,outdated:s};p&&(t.aiAnalysis=p),process.stdout.write(`${JSON.stringify(t,void 0,2)}
7
- `)}else k==="minimal"?process.stdout.write(`${_(s)}
8
- `):(ee(s,r),r.info(b(s)),p&&(r.info(""),r.info(ne(p))));e.exitCode&&s.length>0&&(process.exitCode=1)},"execute");export{ye as default};
6
+ `),o.info(j(s))}else if(k==="json"){const t={failed:$,outdated:s};p&&(t.aiAnalysis=p),process.stdout.write(`${JSON.stringify(t,void 0,2)}
7
+ `)}else k==="minimal"?process.stdout.write(`${X(s)}
8
+ `):(_(s,o),o.info(j(s)),p&&(o.info(""),o.info(ne(p))));e.exitCode&&s.length>0&&(process.exitCode=1)},"execute");export{ge as default};
@@ -1 +1 @@
1
- var h=Object.defineProperty;var g=(r,n)=>h(r,"name",{value:n,configurable:!0});import{r as m}from"../packem_shared/toolchain-BgBOUHII.js";var C=Object.defineProperty,a=g((r,n)=>C(r,"name",{value:n,configurable:!0}),"a");const u=a(()=>process.env.GITHUB_BASE_REF?{base:`origin/${process.env.GITHUB_BASE_REF}`,head:process.env.GITHUB_SHA??"HEAD"}:process.env.CI_MERGE_REQUEST_TARGET_BRANCH_NAME?{base:`origin/${process.env.CI_MERGE_REQUEST_TARGET_BRANCH_NAME}`,head:process.env.CI_COMMIT_SHA??"HEAD"}:process.env.BUILDKITE_PULL_REQUEST_BASE_BRANCH?{base:`origin/${process.env.BUILDKITE_PULL_REQUEST_BASE_BRANCH}`,head:process.env.BUILDKITE_COMMIT??"HEAD"}:process.env.CIRCLE_BRANCH&&process.env.CIRCLE_SHA1?{base:"origin/main",head:process.env.CIRCLE_SHA1}:{base:"origin/main",head:"HEAD"},"detectCiRefs"),A=a(async({argument:r,logger:n,options:e,runtime:s,visConfig:f,workspaceRoot:t})=>{const p=r[0];if(!p)throw new Error("Missing targets. Usage: vis ci <target>[,<target>…]");const l=p.split(",").map(o=>o.trim()).filter(Boolean);if(l.length===0)throw new Error("Missing targets. Usage: vis ci <target>[,<target>…]");if(!t)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");const{base:_,head:d}=u(),c=e.base??_,E=e.head??d;e.skipToolchain||n.info("▸ Toolchain pre-flight"),await m(t,f?.toolchain,{error:a(o=>{n.error(o)},"error"),info:a(o=>{n.info(o)},"info"),warn:a(o=>{n.warn(o)},"warn")},!!e.skipToolchain),e.install===!1?n.info("▸ Skipping install (--no-install)"):(n.info("▸ Installing dependencies"),await s.runCommand("install",{argv:["--frozen-lockfile"]}));for(const o of l){n.info(`▸ Running affected ${o} (base=${c}, head=${E})`);const i=[o,`--base=${c}`,`--head=${E}`,`--upstream=${String(e.upstream??"none")}`,`--downstream=${String(e.downstream??"deep")}`];e.parallel!==void 0&&i.push(`--parallel=${String(e.parallel)}`),e.partition&&i.push(`--partition=${String(e.partition)}`),e.query&&i.push(`--query=${String(e.query)}`),await s.runCommand("affected",{argv:i})}n.info("▸ CI pipeline complete")},"execute");export{A as default};
1
+ var h=Object.defineProperty;var g=(r,n)=>h(r,"name",{value:n,configurable:!0});import{r as m}from"../packem_shared/toolchain-B7sIiJxK.js";var C=Object.defineProperty,a=g((r,n)=>C(r,"name",{value:n,configurable:!0}),"a");const u=a(()=>process.env.GITHUB_BASE_REF?{base:`origin/${process.env.GITHUB_BASE_REF}`,head:process.env.GITHUB_SHA??"HEAD"}:process.env.CI_MERGE_REQUEST_TARGET_BRANCH_NAME?{base:`origin/${process.env.CI_MERGE_REQUEST_TARGET_BRANCH_NAME}`,head:process.env.CI_COMMIT_SHA??"HEAD"}:process.env.BUILDKITE_PULL_REQUEST_BASE_BRANCH?{base:`origin/${process.env.BUILDKITE_PULL_REQUEST_BASE_BRANCH}`,head:process.env.BUILDKITE_COMMIT??"HEAD"}:process.env.CIRCLE_BRANCH&&process.env.CIRCLE_SHA1?{base:"origin/main",head:process.env.CIRCLE_SHA1}:{base:"origin/main",head:"HEAD"},"detectCiRefs"),A=a(async({argument:r,logger:n,options:e,runtime:s,visConfig:f,workspaceRoot:t})=>{const p=r[0];if(!p)throw new Error("Missing targets. Usage: vis ci <target>[,<target>…]");const l=p.split(",").map(o=>o.trim()).filter(Boolean);if(l.length===0)throw new Error("Missing targets. Usage: vis ci <target>[,<target>…]");if(!t)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");const{base:_,head:d}=u(),c=e.base??_,E=e.head??d;e.skipToolchain||n.info("▸ Toolchain pre-flight"),await m(t,f?.toolchain,{error:a(o=>{n.error(o)},"error"),info:a(o=>{n.info(o)},"info"),warn:a(o=>{n.warn(o)},"warn")},!!e.skipToolchain),e.install===!1?n.info("▸ Skipping install (--no-install)"):(n.info("▸ Installing dependencies"),await s.runCommand("install",{argv:["--frozen-lockfile"]}));for(const o of l){n.info(`▸ Running affected ${o} (base=${c}, head=${E})`);const i=[o,`--base=${c}`,`--head=${E}`,`--upstream=${String(e.upstream??"none")}`,`--downstream=${String(e.downstream??"deep")}`];e.parallel!==void 0&&i.push(`--parallel=${String(e.parallel)}`),e.partition&&i.push(`--partition=${String(e.partition)}`),e.query&&i.push(`--query=${String(e.query)}`),await s.runCommand("affected",{argv:i})}n.info("▸ CI pipeline complete")},"execute");export{A as default};
@@ -1 +1 @@
1
- var a=Object.defineProperty;var d=(s,o)=>a(s,"name",{value:o,configurable:!0});import{createRequire as p}from"node:module";import{isAccessibleSync as k}from"@visulima/fs";import{join as m}from"@visulima/path";import{cleanWorkspace as b}from"#native";import{p as c}from"./bin.js";import{f as R}from"../packem_shared/utils-DrNg0XTR.js";const g=p(import.meta.url),f=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,h=d(s=>{if(typeof f<"u"&&f.versions&&f.versions.node){const[o,n]=f.versions.node.split(".").map(Number);if(o>22||o===22&&n>=3||o===20&&n>=16)return f.getBuiltinModule(s)}return g(s)},"__cjs_getBuiltinModule"),{readdirSync:v,lstatSync:y,unlinkSync:_}=h("node:fs");var $=Object.defineProperty,u=d((s,o)=>$(s,"name",{value:o,configurable:!0}),"f");const j=u(s=>{const o=[],n=[s];for(;n.length>0;){const t=n.pop();let i;try{i=v(t)}catch{continue}for(const r of i){const e=m(t,r);try{const l=y(e);if(l.isSymbolicLink()||!l.isDirectory())continue}catch{continue}r==="node_modules"?o.push(e):r!==".git"&&r!==".hg"&&n.push(e)}}return o},"findNodeModulesDirectories"),S=["pnpm-lock.yaml","package-lock.json","npm-shrinkwrap.json","yarn.lock","bun.lock","bun.lockb"],x=u((s,o,n)=>{let t=0,i=!1;for(const r of S){const e=m(s,r);if(k(e)){if(o){n.info(` ${e}`),t++;continue}try{_(e),c.success(`Removed ${e}`),t++}catch(l){c.error(`${e}: ${R(l)}`),i=!0}}}return{hadError:i,removed:t}},"removeLockfiles"),D=u(async({logger:s,options:o,workspaceRoot:n})=>{const t=n??process.cwd(),i=o.lockfile||!1;if(o.dryRun){const e=j(t);if(e.length>0){c.info("Would remove:");for(const l of e)s.info(` ${l}`)}else c.info("No node_modules directories found.");i&&x(t,!0,s);return}const r=b(t,i);for(const e of r.removed)c.success(`Removed ${e}`);for(const e of r.lockfilesRemoved)c.success(`Removed ${e}`);for(const e of r.errors)c.error(e);r.removed.length===0&&r.lockfilesRemoved.length===0?c.info("No node_modules directories found."):c.info(`Cleaned ${r.removed.length} node_modules director${r.removed.length===1?"y":"ies"}`),r.errors.length>0&&(process.exitCode=1)},"execute");export{D as default};
1
+ var m=Object.defineProperty;var d=(s,o)=>m(s,"name",{value:o,configurable:!0});import{createRequire as p}from"node:module";import{isAccessibleSync as k}from"@visulima/fs";import{M as a}from"../packem_shared/index-OlP7U_t5.js";import{cleanWorkspace as b}from"#native";import{p as c}from"./bin.js";import{f as R}from"../packem_shared/utils-DrNg0XTR.js";const g=p(import.meta.url),f=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,h=d(s=>{if(typeof f<"u"&&f.versions&&f.versions.node){const[o,n]=f.versions.node.split(".").map(Number);if(o>22||o===22&&n>=3||o===20&&n>=16)return f.getBuiltinModule(s)}return g(s)},"__cjs_getBuiltinModule"),{readdirSync:v,lstatSync:y,unlinkSync:_}=h("node:fs");var $=Object.defineProperty,u=d((s,o)=>$(s,"name",{value:o,configurable:!0}),"f");const j=u(s=>{const o=[],n=[s];for(;n.length>0;){const t=n.pop();let i;try{i=v(t)}catch{continue}for(const r of i){const e=a(t,r);try{const l=y(e);if(l.isSymbolicLink()||!l.isDirectory())continue}catch{continue}r==="node_modules"?o.push(e):r!==".git"&&r!==".hg"&&n.push(e)}}return o},"findNodeModulesDirectories"),M=["pnpm-lock.yaml","package-lock.json","npm-shrinkwrap.json","yarn.lock","bun.lock","bun.lockb"],S=u((s,o,n)=>{let t=0,i=!1;for(const r of M){const e=a(s,r);if(k(e)){if(o){n.info(` ${e}`),t++;continue}try{_(e),c.success(`Removed ${e}`),t++}catch(l){c.error(`${e}: ${R(l)}`),i=!0}}}return{hadError:i,removed:t}},"removeLockfiles"),D=u(async({logger:s,options:o,workspaceRoot:n})=>{const t=n??process.cwd(),i=o.lockfile||!1;if(o.dryRun){const e=j(t);if(e.length>0){c.info("Would remove:");for(const l of e)s.info(` ${l}`)}else c.info("No node_modules directories found.");i&&S(t,!0,s);return}const r=b(t,i);for(const e of r.removed)c.success(`Removed ${e}`);for(const e of r.lockfilesRemoved)c.success(`Removed ${e}`);for(const e of r.errors)c.error(e);r.removed.length===0&&r.lockfilesRemoved.length===0?c.info("No node_modules directories found."):c.info(`Cleaned ${r.removed.length} node_modules director${r.removed.length===1?"y":"ies"}`),r.errors.length>0&&(process.exitCode=1)},"execute");export{D as default};
@@ -1 +1 @@
1
- var i=Object.defineProperty;var n=(e,o)=>i(e,"name",{value:o,configurable:!0});import{m as l,d as p}from"./bin.js";var f=Object.defineProperty,d=n((e,o)=>f(e,"name",{value:o,configurable:!0}),"n");const m=d(async({logger:e,options:o,visConfig:a,workspaceRoot:r})=>{const c=r??process.cwd(),t=l(c,{configBackend:a?.install?.backend,configCorepack:a?.install?.corepack}),s=p(t,o.check||!1,c,e);s!==0&&(process.exitCode=s)},"execute");export{m as default};
1
+ var i=Object.defineProperty;var n=(e,o)=>i(e,"name",{value:o,configurable:!0});import{h as l,i as p}from"./bin.js";var f=Object.defineProperty,d=n((e,o)=>f(e,"name",{value:o,configurable:!0}),"n");const u=d(async({logger:e,options:o,visConfig:a,workspaceRoot:r})=>{const c=r??process.cwd(),t=l(c,{configBackend:a?.install?.backend,configCorepack:a?.install?.corepack}),s=p(t,o.check||!1,c,e);s!==0&&(process.exitCode=s)},"execute");export{u as default};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var i=(a,s)=>d(a,"name",{value:s,configurable:!0});import{m as f,e as m}from"./bin.js";var u=Object.defineProperty,v=i((a,s)=>u(a,"name",{value:s,configurable:!0}),"n");const x=v(async({argument:a,logger:s,options:e,visConfig:r,workspaceRoot:t})=>{const o=a;if(!o||o.length===0)throw new Error("No package specified. Usage: vis dlx <package[@version]> [args...]");const[g,...l]=o,c=t??process.cwd(),p=f(c,{configBackend:r?.install?.backend,configCorepack:r?.install?.corepack}),k=e.package?Array.isArray(e.package)?e.package:[e.package]:[],n=m(p,{additionalPackages:k,args:l,package:g,shellMode:e.shellMode||!1,silent:e.silent||!1},c,s);n!==0&&(process.exitCode=n)},"execute");export{x as default};
1
+ var d=Object.defineProperty;var i=(e,s)=>d(e,"name",{value:s,configurable:!0});import{h as f,k as u}from"./bin.js";var v=Object.defineProperty,h=i((e,s)=>v(e,"name",{value:s,configurable:!0}),"n");const x=h(async({argument:e,logger:s,options:a,visConfig:r,workspaceRoot:t})=>{const o=e;if(!o||o.length===0)throw new Error("No package specified. Usage: vis dlx <package[@version]> [args...]");const[g,...l]=o,c=t??process.cwd(),p=f(c,{configBackend:r?.install?.backend,configCorepack:r?.install?.corepack}),k=a.package?Array.isArray(a.package)?a.package:[a.package]:[],n=u(p,{additionalPackages:k,args:l,package:g,shellMode:a.shellMode||!1,silent:a.silent||!1},c,s);n!==0&&(process.exitCode=n)},"execute");export{x as default};
@@ -1,10 +1,10 @@
1
- var H=Object.defineProperty;var k=(e,t)=>H(e,"name",{value:t,configurable:!0});import{createRequire as U}from"node:module";import{resolve as O,relative as F}from"@visulima/path";import{d as D,P as K,R as S,I as j,p as V}from"./heal.js";import{A as q,G as Y,p as a}from"./bin.js";const P=U(import.meta.url),T=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,A=k(e=>{if(typeof T<"u"&&T.versions&&T.versions.node){const[t,o]=T.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return T.getBuiltinModule(e)}return P(e)},"__cjs_getBuiltinModule"),{readFile:B}=A("node:fs/promises"),{createInterface:M}=A("node:readline");var J=Object.defineProperty,I=k((e,t)=>J(e,"name",{value:t,configurable:!0}),"o");const W=I(()=>!!process.stdout.isTTY&&process.env.CI!=="true","isInteractive"),z=I(e=>new Promise(t=>{const o=M({input:process.stdin,output:process.stderr});o.question(`${e} (Y/n) `,i=>{o.close();const s=i.trim().toLowerCase();t(s===""||s==="y"||s==="yes")})}),"defaultPrompt"),X=I((e,t)=>{const o=q(t),i=Y(o,{exact:!1,filter:[],global:!1,optional:!1,packages:[e],peer:!1,saveDev:!1,workspace:!1,workspaceRoot:!1},t,console);return Promise.resolve({exitCode:i})},"defaultRunInstall"),y=I(e=>`pnpm add ${e}`,"installCommandFor"),Q=I(e=>e==="@gitbeaker/rest"?import("@gitbeaker/rest"):import("@octokit/rest"),"defaultImport"),L=I(async(e,t={})=>{const o=t.interactive??W(),i=t.prompt??z,s=t.runInstall??X,l=t.importImpl??Q,d=t.workspaceRoot??process.cwd();try{return await l(e)}catch(n){const{code:u}=n;if(u!=="ERR_MODULE_NOT_FOUND"&&u!=="MODULE_NOT_FOUND")throw n}if(!o)throw new Error(`${e} is not installed. \`vis ai heal accept\` needs it to talk to the host. Install it in your repo first:
1
+ var H=Object.defineProperty;var I=(e,t)=>H(e,"name",{value:t,configurable:!0});import{createRequire as U}from"node:module";import{C as O,z as F}from"../packem_shared/index-OlP7U_t5.js";import{d as D,P as K,R as S,w as j,p as V}from"./heal.js";import{A as q,a0 as Y,p as a}from"./bin.js";const P=U(import.meta.url),T=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,A=I(e=>{if(typeof T<"u"&&T.versions&&T.versions.node){const[t,o]=T.versions.node.split(".").map(Number);if(t>22||t===22&&o>=3||t===20&&o>=16)return T.getBuiltinModule(e)}return P(e)},"__cjs_getBuiltinModule"),{readFile:B}=A("node:fs/promises"),{createInterface:M}=A("node:readline");var J=Object.defineProperty,k=I((e,t)=>J(e,"name",{value:t,configurable:!0}),"o");const z=k(()=>!!process.stdout.isTTY&&process.env.CI!=="true","isInteractive"),W=k(e=>new Promise(t=>{const o=M({input:process.stdin,output:process.stderr});o.question(`${e} (Y/n) `,i=>{o.close();const s=i.trim().toLowerCase();t(s===""||s==="y"||s==="yes")})}),"defaultPrompt"),X=k((e,t)=>{const o=q(t),i=Y(o,{exact:!1,filter:[],global:!1,optional:!1,packages:[e],peer:!1,saveDev:!1,workspace:!1,workspaceRoot:!1},t,console);return Promise.resolve({exitCode:i})},"defaultRunInstall"),y=k(e=>`pnpm add ${e}`,"installCommandFor"),Q=k(e=>e==="@gitbeaker/rest"?import("@gitbeaker/rest"):import("@octokit/rest"),"defaultImport"),L=k(async(e,t={})=>{const o=t.interactive??z(),i=t.prompt??W,s=t.runInstall??X,l=t.importImpl??Q,d=t.workspaceRoot??process.cwd();try{return await l(e)}catch(n){const{code:u}=n;if(u!=="ERR_MODULE_NOT_FOUND"&&u!=="MODULE_NOT_FOUND")throw n}if(!o)throw new Error(`${e} is not installed. \`vis ai heal accept\` needs it to talk to the host. Install it in your repo first:
2
2
  ${y(e)}`);if(!await i(`${e} isn't installed. Install it now?`))throw new Error(`${e} install declined. Re-run \`vis ai heal accept\` after installing manually:
3
3
  ${y(e)}`);const r=await s(e,d);if(r.exitCode!==0)throw new Error(`Install of ${e} failed (exit ${String(r.exitCode)}). Install manually and retry:
4
- ${y(e)}`);return await l(e)},"loadOptionalSdk");var Z=Object.defineProperty,C=k((e,t)=>Z(e,"name",{value:t,configurable:!0}),"s");const ee=C(e=>{const t=e.indexOf("/");if(t<=0||t===e.length-1)throw new Error(`Expected GITHUB_REPOSITORY in "owner/repo" form, got: ${e}`);return{owner:e.slice(0,t),repo:e.slice(t+1)}},"splitGithubRepo"),te=C(async(e,t)=>{if(t.githubClient)return t.githubClient;const o=(await(t.loadSdk??L)("@octokit/rest")).Octokit;if(!o)throw new TypeError("Loaded `@octokit/rest` but no `Octokit` export was found. Reinstall the package or pin to a supported major.");return new o({auth:e})},"loadGithubClient"),oe=C(async(e,t,o)=>{if(o.gitlabClient)return o.gitlabClient;const i=(await(o.loadSdk??L)("@gitbeaker/rest")).Gitlab;if(!i)throw new TypeError("Loaded `@gitbeaker/rest` but no `Gitlab` export was found. Reinstall the package or pin to a supported major.");return new i({host:t,token:e})},"loadGitlabClient"),re=C(e=>e.replace(/\/api\/v\d+\/?$/,""),"apiBaseToHost"),ie=C(async e=>{const{branch:t,ciContext:o,files:i,message:s,workspaceRoot:l}=e,d=e.readFile??(w=>B(w,"utf8"));if(!o.repo)throw new Error("Cannot commit on GitHub: GITHUB_REPOSITORY (owner/repo) is not set.");if(!o.token)throw new Error("Cannot commit on GitHub: GITHUB_TOKEN is not set. Grant the workflow `contents: write` and pass the token through.");const{owner:r,repo:n}=ee(o.repo),u=await te(o.token,e),p=(await u.rest.git.getRef({owner:r,ref:`heads/${t}`,repo:n})).data.object.sha,h=(await u.rest.git.getCommit({commit_sha:p,owner:r,repo:n})).data.tree.sha,m=await Promise.all(i.map(async w=>{const E=O(l,w),v=await d(E),_=await u.rest.git.createBlob({content:Buffer.from(v,"utf8").toString("base64"),encoding:"base64",owner:r,repo:n});return{mode:"100644",path:w,sha:_.data.sha,type:"blob"}})),f=await u.rest.git.createTree({base_tree:h,owner:r,repo:n,tree:m}),b=await u.rest.git.createCommit({message:s,owner:r,parents:[p],repo:n,tree:f.data.sha});return await u.rest.git.updateRef({owner:r,ref:`heads/${t}`,repo:n,sha:b.data.sha}),{sha:b.data.sha,url:b.data.html_url}},"commitToGithub"),ae=C(async e=>{const{branch:t,ciContext:o,files:i,message:s,workspaceRoot:l}=e,d=e.readFile??(m=>B(m,"utf8"));if(!o.repo)throw new Error("Cannot commit on GitLab: CI_PROJECT_ID / CI_PROJECT_PATH is not set.");if(!o.token)throw new Error("Cannot commit on GitLab: no token. CI_JOB_TOKEN cannot push commits — set GITLAB_TOKEN to a PAT/project-token with `api` scope.");if(!o.apiBaseUrl)throw new Error("Cannot commit on GitLab: CI_API_V4_URL is not set.");const r=re(o.apiBaseUrl),n=await oe(o.token,r,e),u=await Promise.all(i.map(async m=>{const f=O(l,m);return{action:"update",content:await d(f),filePath:m}})),p=await n.Commits.create(o.repo,t,s,u),h=p.id??p.sha;if(!h)throw new Error("GitLab Commits.create returned no commit ID — cannot reference the new commit.");return{sha:h,url:p.web_url??p.webUrl}},"commitToGitlab"),ne=C(async e=>{if(e.files.length===0)throw new Error("Cannot commit: no files to include.");if(e.ciContext.provider==="github-actions")return await ie(e);if(e.ciContext.provider==="gitlab-ci")return await ae(e);throw new Error(`Cannot commit: unsupported CI provider \`${e.ciContext.provider}\`. Run \`vis ai heal accept\` from a recognised CI environment.`)},"commitFiles");var se=Object.defineProperty,g=k((e,t)=>se(e,"name",{value:t,configurable:!0}),"u");const G="/vis heal accept",ce=g(async e=>{if(!e)return;let t;try{t=await B(e,"utf8")}catch{return}const o=JSON.parse(t),i=o.comment?.body??"",s=o.comment?.user?.login??"",l=o.pull_request?.head?.repo?.full_name,d=o.pull_request?.base?.repo?.full_name??o.repository?.full_name,r=l!==void 0&&d!==void 0&&l!==d;return{actor:s,body:i,headRef:o.pull_request?.head?.ref,isFork:r}},"loadGithubTrigger"),le=g(e=>{const t=e.VIS_HEAL_TRIGGER_BODY,o=e.VIS_HEAL_TRIGGER_ACTOR;if(!(!t||!o))return{actor:o,body:t,headRef:e.VIS_HEAL_HEAD_REF,isFork:!1}},"loadGitlabTrigger"),de=g(e=>{const t=e.BUILDKITE_UNBLOCKER_EMAIL??e.BUILDKITE_UNBLOCKER;if(t)return{actor:t,body:G,headRef:e.BUILDKITE_BRANCH,isFork:!1}},"loadBuildkiteTrigger"),ue=g(async(e,t)=>{if(e.provider==="github-actions")return await ce(t.GITHUB_EVENT_PATH);if(e.provider==="gitlab-ci")return le(t);if(e.provider==="buildkite")return de(t)},"loadTrigger"),pe=g((e,t)=>{const o=t.BUILDKITE_REPO;if(!o)return;const i=/(?:^|@|\/\/)github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?\/?$/i.exec(o);if(i&&t.GITHUB_TOKEN)return{apiBaseUrl:void 0,buildId:void 0,buildNumber:void 0,prNumber:e.prNumber,provider:"github-actions",repo:`${i[1]}/${i[2]}`,sha:e.sha,token:t.GITHUB_TOKEN};const s=/\/\/([^/]*gitlab[^/]*)\/([^/]+)\/(.+?)(?:\.git)?\/?$/i.exec(o),l=s?null:/@([^/:]*gitlab[^/:]*):([^/]+)\/(.+?)(?:\.git)?\/?$/i.exec(o),d=s??l;if(d&&t.GITLAB_TOKEN){const r=d[1];return{apiBaseUrl:t.CI_API_V4_URL??`https://${r}/api/v4`,buildId:void 0,buildNumber:void 0,prNumber:e.prNumber,provider:"gitlab-ci",repo:`${d[2]}/${d[3]}`,sha:e.sha,token:t.GITLAB_TOKEN}}},"deriveBuildkiteCommitContext"),me=g(async e=>{const t=e.fetchImpl??globalThis.fetch,o=`${(e.apiBaseUrl??"https://api.github.com").replace(/\/+$/,"")}/repos/${e.repo}/pulls/${String(e.prNumber)}`;try{const i=await t(o,{headers:{Accept:"application/vnd.github+json",Authorization:`Bearer ${e.token}`,"X-GitHub-Api-Version":"2022-11-28"}});return i.ok?(await i.json()).head?.ref:void 0}catch{return}},"fetchGithubHeadRef"),fe=g((e,t,o,i)=>{const s=t.map(l=>`- \`${l}\``).join(`
4
+ ${y(e)}`);return await l(e)},"loadOptionalSdk");var Z=Object.defineProperty,_=I((e,t)=>Z(e,"name",{value:t,configurable:!0}),"s");const ee=_(e=>{const t=e.indexOf("/");if(t<=0||t===e.length-1)throw new Error(`Expected GITHUB_REPOSITORY in "owner/repo" form, got: ${e}`);return{owner:e.slice(0,t),repo:e.slice(t+1)}},"splitGithubRepo"),te=_(async(e,t)=>{if(t.githubClient)return t.githubClient;const o=(await(t.loadSdk??L)("@octokit/rest")).Octokit;if(!o)throw new TypeError("Loaded `@octokit/rest` but no `Octokit` export was found. Reinstall the package or pin to a supported major.");return new o({auth:e})},"loadGithubClient"),oe=_(async(e,t,o)=>{if(o.gitlabClient)return o.gitlabClient;const i=(await(o.loadSdk??L)("@gitbeaker/rest")).Gitlab;if(!i)throw new TypeError("Loaded `@gitbeaker/rest` but no `Gitlab` export was found. Reinstall the package or pin to a supported major.");return new i({host:t,token:e})},"loadGitlabClient"),re=_(e=>e.replace(/\/api\/v\d+\/?$/,""),"apiBaseToHost"),ie=_(async e=>{const{branch:t,ciContext:o,files:i,message:s,workspaceRoot:l}=e,d=e.readFile??(w=>B(w,"utf8"));if(!o.repo)throw new Error("Cannot commit on GitHub: GITHUB_REPOSITORY (owner/repo) is not set.");if(!o.token)throw new Error("Cannot commit on GitHub: GITHUB_TOKEN is not set. Grant the workflow `contents: write` and pass the token through.");const{owner:r,repo:n}=ee(o.repo),u=await te(o.token,e),p=(await u.rest.git.getRef({owner:r,ref:`heads/${t}`,repo:n})).data.object.sha,h=(await u.rest.git.getCommit({commit_sha:p,owner:r,repo:n})).data.tree.sha,m=await Promise.all(i.map(async w=>{const v=O(l,w),E=await d(v),C=await u.rest.git.createBlob({content:Buffer.from(E,"utf8").toString("base64"),encoding:"base64",owner:r,repo:n});return{mode:"100644",path:w,sha:C.data.sha,type:"blob"}})),f=await u.rest.git.createTree({base_tree:h,owner:r,repo:n,tree:m}),b=await u.rest.git.createCommit({message:s,owner:r,parents:[p],repo:n,tree:f.data.sha});return await u.rest.git.updateRef({owner:r,ref:`heads/${t}`,repo:n,sha:b.data.sha}),{sha:b.data.sha,url:b.data.html_url}},"commitToGithub"),ae=_(async e=>{const{branch:t,ciContext:o,files:i,message:s,workspaceRoot:l}=e,d=e.readFile??(m=>B(m,"utf8"));if(!o.repo)throw new Error("Cannot commit on GitLab: CI_PROJECT_ID / CI_PROJECT_PATH is not set.");if(!o.token)throw new Error("Cannot commit on GitLab: no token. CI_JOB_TOKEN cannot push commits — set GITLAB_TOKEN to a PAT/project-token with `api` scope.");if(!o.apiBaseUrl)throw new Error("Cannot commit on GitLab: CI_API_V4_URL is not set.");const r=re(o.apiBaseUrl),n=await oe(o.token,r,e),u=await Promise.all(i.map(async m=>{const f=O(l,m);return{action:"update",content:await d(f),filePath:m}})),p=await n.Commits.create(o.repo,t,s,u),h=p.id??p.sha;if(!h)throw new Error("GitLab Commits.create returned no commit ID — cannot reference the new commit.");return{sha:h,url:p.web_url??p.webUrl}},"commitToGitlab"),ne=_(async e=>{if(e.files.length===0)throw new Error("Cannot commit: no files to include.");if(e.ciContext.provider==="github-actions")return await ie(e);if(e.ciContext.provider==="gitlab-ci")return await ae(e);throw new Error(`Cannot commit: unsupported CI provider \`${e.ciContext.provider}\`. Run \`vis ai heal accept\` from a recognised CI environment.`)},"commitFiles");var se=Object.defineProperty,g=I((e,t)=>se(e,"name",{value:t,configurable:!0}),"u");const G="/vis heal accept",ce=g(async e=>{if(!e)return;let t;try{t=await B(e,"utf8")}catch{return}const o=JSON.parse(t),i=o.comment?.body??"",s=o.comment?.user?.login??"",l=o.pull_request?.head?.repo?.full_name,d=o.pull_request?.base?.repo?.full_name??o.repository?.full_name,r=l!==void 0&&d!==void 0&&l!==d;return{actor:s,body:i,headRef:o.pull_request?.head?.ref,isFork:r}},"loadGithubTrigger"),le=g(e=>{const t=e.VIS_HEAL_TRIGGER_BODY,o=e.VIS_HEAL_TRIGGER_ACTOR;if(!(!t||!o))return{actor:o,body:t,headRef:e.VIS_HEAL_HEAD_REF,isFork:!1}},"loadGitlabTrigger"),de=g(e=>{const t=e.BUILDKITE_UNBLOCKER_EMAIL??e.BUILDKITE_UNBLOCKER;if(t)return{actor:t,body:G,headRef:e.BUILDKITE_BRANCH,isFork:!1}},"loadBuildkiteTrigger"),ue=g(async(e,t)=>{if(e.provider==="github-actions")return await ce(t.GITHUB_EVENT_PATH);if(e.provider==="gitlab-ci")return le(t);if(e.provider==="buildkite")return de(t)},"loadTrigger"),pe=g((e,t)=>{const o=t.BUILDKITE_REPO;if(!o)return;const i=/(?:^|@|\/\/)github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?\/?$/i.exec(o);if(i&&t.GITHUB_TOKEN)return{apiBaseUrl:void 0,buildId:void 0,buildNumber:void 0,prNumber:e.prNumber,provider:"github-actions",repo:`${i[1]}/${i[2]}`,sha:e.sha,token:t.GITHUB_TOKEN};const s=/\/\/([^/]*gitlab[^/]*)\/([^/]+)\/(.+?)(?:\.git)?\/?$/i.exec(o),l=s?null:/@([^/:]*gitlab[^/:]*):([^/]+)\/(.+?)(?:\.git)?\/?$/i.exec(o),d=s??l;if(d&&t.GITLAB_TOKEN){const r=d[1];return{apiBaseUrl:t.CI_API_V4_URL??`https://${r}/api/v4`,buildId:void 0,buildNumber:void 0,prNumber:e.prNumber,provider:"gitlab-ci",repo:`${d[2]}/${d[3]}`,sha:e.sha,token:t.GITLAB_TOKEN}}},"deriveBuildkiteCommitContext"),me=g(async e=>{const t=e.fetchImpl??globalThis.fetch,o=`${(e.apiBaseUrl??"https://api.github.com").replace(/\/+$/,"")}/repos/${e.repo}/pulls/${String(e.prNumber)}`;try{const i=await t(o,{headers:{Accept:"application/vnd.github+json",Authorization:`Bearer ${e.token}`,"X-GitHub-Api-Version":"2022-11-28"}});return i.ok?(await i.json()).head?.ref:void 0}catch{return}},"fetchGithubHeadRef"),fe=g((e,t,o,i)=>{const s=t.map(l=>`- \`${l}\``).join(`
5
5
  `);return["## vis ai heal — committed","",`Accepted by @${i}.`,"",`Failing task: \`${o}\``,e.url?`Commit: [\`${e.sha.slice(0,7)}\`](${e.url})`:`Commit: \`${e.sha.slice(0,7)}\``,"","### Files changed",s,"","_Re-run the failing job to confirm the fix landed._"].join(`
6
6
  `)},"summariseDetail"),he=g(async(e,t={})=>{const{logger:o,visConfig:i,workspaceRoot:s}=e,l=s??process.cwd(),d=t.env??process.env,r=await(t.detectCi??(()=>D(d)))();if(r.provider==="unknown"){a.error("`vis ai heal accept` must run inside a recognised CI provider (GitHub Actions, GitLab CI, or Buildkite)."),process.exitCode=1;return}const n=await ue(r,d);if(!n){const c=r.provider==="github-actions"?"No issue_comment payload found. Trigger this command from a workflow listening for `issue_comment.created`.":r.provider==="gitlab-ci"?"No GitLab trigger payload found. Set VIS_HEAL_TRIGGER_BODY, VIS_HEAL_TRIGGER_ACTOR, and VIS_HEAL_HEAD_REF in the bridge that re-emits note hooks as pipeline runs.":"No Buildkite unblock signal found. Wire this command to run after a manually-unblocked block step so BUILDKITE_UNBLOCKER_EMAIL is set.";a.error(c),process.exitCode=1;return}if(r.provider!=="buildkite"&&!n.body.includes(G)){a.notice(`Trigger comment does not contain \`${G}\`; nothing to do.`);return}const u=i?.ai?.heal?.allowedActors??[];if(u.length===0){a.error("`ai.heal.allowedActors` is empty. Configure the allow-list in `vis.config.*` before enabling auto-commit."),process.exitCode=1;return}if(!n.actor||!u.includes(n.actor)){const c=r.provider==="buildkite"?"Buildkite entries are emails (BUILDKITE_UNBLOCKER_EMAIL) or Buildkite usernames (BUILDKITE_UNBLOCKER), not the upstream GitHub/GitLab username.":r.provider==="gitlab-ci"?"GitLab entries are platform usernames (without the leading `@`).":"GitHub entries are platform usernames (without the leading `@`).";a.error(`Actor \`${n.actor||"(unknown)"}\` is not in \`ai.heal.allowedActors\`. Refusing to commit. ${c}`),process.exitCode=1;return}if(n.isFork){a.error("Refusing to accept: the change is from a forked repository. The CI token does not have write access to the fork."),process.exitCode=1;return}let p=n.headRef;if(!p&&r.provider==="github-actions"&&r.prNumber!==void 0&&r.repo&&r.token&&(p=await me({fetchImpl:t.fetchImpl,prNumber:r.prNumber,repo:r.repo,token:r.token})),!p){a.error("Could not resolve the PR / MR head branch. Ensure the trigger payload includes head.ref or set VIS_HEAL_HEAD_REF."),process.exitCode=1;return}a.info(`Accepting fix on \`${p}\` for actor \`${n.actor}\`.`);const h=await K(l,e.options.run);if(h.outcome==="no-failed-task"){a.error("No failed tasks found in the run summary. The accept command should run on the same workspace as the original failure."),process.exitCode=1;return}if(h.outcome==="missing-metadata"){a.error(`Failed task ${h.failedTask.taskId} is missing project/target metadata; cannot validate the fix.`),process.exitCode=1;return}if(h.outcome==="no-failure-context"){a.error(`No failure log or run summary found for ${h.failedTask.taskId}.`),process.exitCode=1;return}const m=h,f=await S(e,m);if(f.outcome==="no-proposal"){a.error("AI fix proposal failed; cannot commit."),process.exitCode=1;return}if(f.outcome==="cannot-fix"){a.warn(`AI declined to fix: ${f.detail??"(no reason)"}. Nothing to commit.`),process.exitCode=1;return}if(f.outcome==="empty-patches"){a.warn("AI returned an empty patch set. Nothing to commit."),process.exitCode=1;return}if(f.outcome==="no-patches-applied"){a.error("Patches could not be applied to the workspace. Refusing to commit."),process.exitCode=1;return}a.info(`Re-running ${m.failedTask.taskId} to validate the fix before committing...`);const b=await j(e,m,{validate:t.validate});if(b.exitCode!==0){a.error(`Validation failed (exit ${String(b.exitCode)}). Refusing to commit.`),b.stderr.trim().length>0&&(o.info("--- validation stderr (tail) ---"),o.info(b.stderr.split(`
7
7
  `).slice(-20).join(`
8
- `))),process.exitCode=1;return}a.success("Validation passed. Committing.");const w=(f.applyResults??[]).filter(c=>c.status==="applied").map(c=>{const $=c.absolutePath??c.patch.file,x=F(l,$);return x===""||x.startsWith("..")?c.patch.file:x});if(w.length===0){a.error("No applied files to commit. Aborting."),process.exitCode=1;return}const E=[`fix: vis ai heal accepted by @${n.actor}`,"",`Failing task: ${m.failedTask.taskId}`,f.proposal?.explanation?`
8
+ `))),process.exitCode=1;return}a.success("Validation passed. Committing.");const w=(f.applyResults??[]).filter(c=>c.status==="applied").map(c=>{const $=c.absolutePath??c.patch.file,x=F(l,$);return x===""||x.startsWith("..")?c.patch.file:x});if(w.length===0){a.error("No applied files to commit. Aborting."),process.exitCode=1;return}const v=[`fix: vis ai heal accepted by @${n.actor}`,"",`Failing task: ${m.failedTask.taskId}`,f.proposal?.explanation?`
9
9
  ${f.proposal.explanation}`:"","","Auto-committed by `vis ai heal accept`."].join(`
10
- `);let v=r;if(r.provider==="buildkite"){const c=pe(r,d);if(!c){a.error("Cannot determine the upstream VCS to commit to. Buildkite jobs need GITHUB_TOKEN or GITLAB_TOKEN set (matching the host parsed from BUILDKITE_REPO) for `vis ai heal accept` to land the commit."),process.exitCode=1;return}v=c}let _;try{_=await ne({branch:p,ciContext:v,files:w,message:E,workspaceRoot:l,...t.commitOverrides})}catch(c){a.error(`Commit failed: ${c instanceof Error?c.message:String(c)}`),process.exitCode=1;return}a.success(`Committed as ${_.sha.slice(0,7)}${_.url?` — ${_.url}`:""}.`);const N=fe(_,w,m.failedTask.taskId,n.actor),R=await(t.postComment??(async(c,$)=>V({body:c,context:$})))(N,r);!R.posted&&R.method!=="skipped"&&a.warn(`Commit landed but the confirmation comment failed: ${R.error??"unknown"}`)},"acceptHeal"),Ie=g(async e=>{await he(e)},"aiHealAccept");export{G as TRIGGER_PHRASE,Ie as aiHealAccept,pe as deriveBuildkiteCommitContextForTesting,me as fetchGithubHeadRefForTesting,de as loadBuildkiteTriggerForTesting,ce as loadGithubTriggerForTesting,le as loadGitlabTriggerForTesting,he as runHealAcceptForTesting,fe as summariseDetailForTesting};
10
+ `);let E=r;if(r.provider==="buildkite"){const c=pe(r,d);if(!c){a.error("Cannot determine the upstream VCS to commit to. Buildkite jobs need GITHUB_TOKEN or GITLAB_TOKEN set (matching the host parsed from BUILDKITE_REPO) for `vis ai heal accept` to land the commit."),process.exitCode=1;return}E=c}let C;try{C=await ne({branch:p,ciContext:E,files:w,message:v,workspaceRoot:l,...t.commitOverrides})}catch(c){a.error(`Commit failed: ${c instanceof Error?c.message:String(c)}`),process.exitCode=1;return}a.success(`Committed as ${C.sha.slice(0,7)}${C.url?` — ${C.url}`:""}.`);const N=fe(C,w,m.failedTask.taskId,n.actor),R=await(t.postComment??(async(c,$)=>V({body:c,context:$})))(N,r);!R.posted&&R.method!=="skipped"&&a.warn(`Commit landed but the confirmation comment failed: ${R.error??"unknown"}`)},"acceptHeal"),ke=g(async e=>{await he(e)},"aiHealAccept");export{G as TRIGGER_PHRASE,ke as aiHealAccept,pe as deriveBuildkiteCommitContextForTesting,me as fetchGithubHeadRefForTesting,de as loadBuildkiteTriggerForTesting,ce as loadGithubTriggerForTesting,le as loadGitlabTriggerForTesting,he as runHealAcceptForTesting,fe as summariseDetailForTesting};
@@ -1,4 +1,4 @@
1
- var U=Object.defineProperty;var I=(t,e)=>U(t,"name",{value:e,configurable:!0});import{createRequire as A}from"node:module";import{bold as O,dim as v,red as G,green as j,yellow as F}from"@visulima/colorize";import{relative as D}from"@visulima/path";import{readLastRunSummary as K}from"@visulima/task-runner";import{r as H,a as M,b as V,c as J}from"../packem_shared/ai-fix-nn4zOE95.js";import{p as u}from"./bin.js";import{r as z}from"../packem_shared/run-summary-utils-BfBvjzhY.js";const L=A(import.meta.url),b=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,T=I(t=>{if(typeof b<"u"&&b.versions&&b.versions.node){const[e,o]=b.versions.node.split(".").map(Number);if(e>22||e===22&&o>=3||e===20&&o>=16)return b.getBuiltinModule(t)}return L(t)},"__cjs_getBuiltinModule"),{spawn:k}=T("node:child_process"),{readFile:q}=T("node:fs/promises");var Q=Object.defineProperty,g=I((t,e)=>Q(t,"name",{value:e,configurable:!0}),"i");const W=g(t=>{if(!t)return;const e=/^refs\/pull\/(\d+)\//.exec(t);return e?Number.parseInt(e[1],10):void 0},"parsePrNumberFromGithubRef"),Y=g(async t=>{if(!t)return{prNumber:void 0,sha:void 0};try{const e=await q(t,"utf8"),o=JSON.parse(e),r=o.pull_request?.number??o.issue?.number??o.number,i=o.pull_request?.head?.sha;return{prNumber:r,sha:i}}catch{return{prNumber:void 0,sha:void 0}}},"readPrNumberFromGithubEvent"),Z=g(async t=>{const e=W(t.GITHUB_REF),{prNumber:o,sha:r}=e===void 0?await Y(t.GITHUB_EVENT_PATH):{prNumber:e,sha:void 0};return{apiBaseUrl:void 0,buildId:void 0,buildNumber:void 0,prNumber:e??o,provider:"github-actions",repo:t.GITHUB_REPOSITORY,sha:r??t.GITHUB_SHA,token:t.GITHUB_TOKEN}},"detectGithubActions"),X=g(t=>{const e=t.CI_MERGE_REQUEST_IID,o=e!==void 0&&e!==""?Number.parseInt(e,10):void 0,r=t.CI_API_V4_URL,i=t.GITLAB_TOKEN??t.CI_TOKEN;return{apiBaseUrl:r,buildId:void 0,buildNumber:void 0,prNumber:Number.isFinite(o)?o:void 0,provider:"gitlab-ci",repo:t.CI_PROJECT_ID??t.CI_PROJECT_PATH,sha:t.CI_COMMIT_SHA,token:i}},"detectGitlabCi"),ee=g(t=>{const e=t.BUILDKITE_PULL_REQUEST,o=e!==void 0&&e!==""&&e!=="false"?Number.parseInt(e,10):void 0,r=t.BUILDKITE_BUILD_NUMBER,i=r!==void 0&&r!==""?Number.parseInt(r,10):void 0,n=t.BUILDKITE_ORGANIZATION_SLUG,a=t.BUILDKITE_PIPELINE_SLUG,s=n!==void 0&&n!==""&&a!==void 0&&a!==""?`${n}/${a}`:void 0;return{apiBaseUrl:(t.BUILDKITE_API_BASE_URL??"https://api.buildkite.com").replace(/\/+$/,""),buildId:t.BUILDKITE_BUILD_ID,buildNumber:Number.isFinite(i)?i:void 0,prNumber:Number.isFinite(o)?o:void 0,provider:"buildkite",repo:s,sha:t.BUILDKITE_COMMIT,token:t.BUILDKITE_API_TOKEN}},"detectBuildkite"),te=g(async(t=process.env)=>t.GITHUB_ACTIONS==="true"?await Z(t):t.GITLAB_CI==="true"?X(t):t.BUILDKITE==="true"?ee(t):{apiBaseUrl:void 0,buildId:void 0,buildNumber:void 0,prNumber:void 0,provider:"unknown",repo:void 0,sha:void 0,token:void 0},"detectCiContext");var oe=Object.defineProperty,h=I((t,e)=>oe(t,"name",{value:e,configurable:!0}),"p");const re=h((t,e,o,r)=>new Promise(i=>{const n=["pr","comment",String(e),"--body-file","-"];r&&n.push("--repo",r);const a=k(t,n,{stdio:["pipe","ignore","pipe"]});let s="";a.stderr?.setEncoding("utf8"),a.stderr?.on("data",d=>{s+=d}),a.once("error",()=>{i({exitCode:127,stderr:s})}),a.once("close",d=>{i({exitCode:d??-1,stderr:s})}),a.stdin?.on("error",()=>{}),a.stdin?.end(o)}),"runGhComment"),ie=h(async(t,e,o,r,i)=>{const n=`https://api.github.com/repos/${e}/issues/${String(o)}/comments`;try{const a=await t(n,{body:JSON.stringify({body:r}),headers:{Accept:"application/vnd.github+json",Authorization:`Bearer ${i}`,"Content-Type":"application/json","X-GitHub-Api-Version":"2022-11-28"},method:"POST"});if(!a.ok){const s=await a.text().catch(()=>"");return{error:`GitHub REST returned ${String(a.status)}: ${s.slice(0,500)}`,ok:!1}}return{ok:!0}}catch(a){return{error:a instanceof Error?a.message:String(a),ok:!1}}},"postViaGithubRest"),ne=h(async(t,e,o,r,i,n)=>{const a=encodeURIComponent(o),s=`${e.replace(/\/+$/,"")}/projects/${a}/merge_requests/${String(r)}/notes`;try{const d=await t(s,{body:JSON.stringify({body:i}),headers:{"Content-Type":"application/json","PRIVATE-TOKEN":n},method:"POST"});if(!d.ok){const p=await d.text().catch(()=>"");return{error:`GitLab REST returned ${String(d.status)}: ${p.slice(0,500)}`,ok:!1}}return{ok:!0}}catch(d){return{error:d instanceof Error?d.message:String(d),ok:!1}}},"postViaGitlabRest"),ae=h((t,e,o,r)=>new Promise(i=>{const n=k(t,["annotate","--style",o,"--context",r],{stdio:["pipe","ignore","pipe"]});let a="";n.stderr?.setEncoding("utf8"),n.stderr?.on("data",s=>{a+=s}),n.once("error",()=>{i({exitCode:127,stderr:a})}),n.once("close",s=>{i({exitCode:s??-1,stderr:a})}),n.stdin?.on("error",()=>{}),n.stdin?.end(e)}),"runBuildkiteAnnotate"),se=h(async(t,e,o,r,i,n,a,s)=>{const[d,p]=o.split("/",2);if(!d||!p)return{error:`Buildkite repo identifier \`${o}\` is not in {org}/{pipeline} form.`,ok:!1};const m=`${e}/v2/organizations/${encodeURIComponent(d)}/pipelines/${encodeURIComponent(p)}/builds/${String(r)}/annotations`;try{const c=await t(m,{body:JSON.stringify({body:i,context:a,style:n}),headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},method:"POST"});if(!c.ok){const l=await c.text().catch(()=>"");return{error:`Buildkite REST returned ${String(c.status)}: ${l.slice(0,500)}`,ok:!1}}return{ok:!0}}catch(c){return{error:c instanceof Error?c.message:String(c),ok:!1}}},"postViaBuildkiteRest"),de=h(async(t,e,o,r)=>{const i=e.buildId?`vis-ai-heal-${e.buildId}`:"vis-ai-heal",n="info",a=await ae(o,t,n,i);if(a.exitCode===0)return{method:"buildkite-cli",posted:!0};if(!e.apiBaseUrl||!e.repo||e.buildNumber===void 0||!e.token){const d=[];return e.repo||d.push("BUILDKITE_ORGANIZATION_SLUG / BUILDKITE_PIPELINE_SLUG"),e.buildNumber===void 0&&d.push("BUILDKITE_BUILD_NUMBER"),e.token||d.push("BUILDKITE_API_TOKEN (with `write_build_annotations` scope)"),{error:`buildkite-agent annotate exited ${String(a.exitCode)} (${a.stderr.trim().slice(0,200)}); cannot fall back to REST without ${d.join(", ")}`,method:"buildkite-cli",posted:!1}}const s=await se(r,e.apiBaseUrl,e.repo,e.buildNumber,t,n,i,e.token);return s.ok?{method:"rest",posted:!0}:{error:`buildkite-agent annotate exited ${String(a.exitCode)}; REST fallback also failed: ${s.error??"unknown"}`,method:"rest",posted:!1}},"postBuildkiteAnnotation"),pe=h(async(t,e,o,r)=>{if(e.prNumber===void 0)return{method:"skipped",posted:!1};const i=await re(o,e.prNumber,t,e.repo);if(i.exitCode===0)return{method:"gh-cli",posted:!0};if(!e.repo||!e.token)return{error:`gh exited ${String(i.exitCode)} (${i.stderr.trim().slice(0,200)}); cannot fall back to REST without GITHUB_REPOSITORY + GITHUB_TOKEN`,method:"gh-cli",posted:!1};const n=await ie(r,e.repo,e.prNumber,t,e.token);return n.ok?{method:"rest",posted:!0}:{error:`gh exited ${String(i.exitCode)}; REST fallback also failed: ${n.error??"unknown"}`,method:"rest",posted:!1}},"postGithubComment"),ce=h(async(t,e,o)=>{if(e.prNumber===void 0)return{method:"skipped",posted:!1};if(!e.apiBaseUrl||!e.repo)return{error:"GitLab CI context is missing CI_API_V4_URL or CI_PROJECT_ID; cannot post note.",method:"rest",posted:!1};if(!e.token)return{error:"GitLab CI context has no token. CI_JOB_TOKEN cannot post MR notes — set GITLAB_TOKEN to a personal/project access token with `api` scope.",method:"rest",posted:!1};const r=await ne(o,e.apiBaseUrl,e.repo,e.prNumber,t,e.token);return r.ok?{method:"rest",posted:!0}:{error:r.error,method:"rest",posted:!1}},"postGitlabComment"),ue=h(async t=>{const{body:e,buildkiteAgentBin:o="buildkite-agent",context:r,fetchImpl:i=globalThis.fetch,ghBin:n="gh"}=t;return r.provider==="github-actions"?await pe(e,r,n,i):r.provider==="gitlab-ci"?await ce(e,r,i):r.provider==="buildkite"?await de(e,r,o,i):{method:"skipped",posted:!1}},"postPrComment");var le=Object.defineProperty,f=I((t,e)=>le(t,"name",{value:e,configurable:!0}),"l");const C=f(t=>{let e=0,o=0;for(const r of t)r.status==="applied"?e+=1:o+=1;return{applied:e,failed:o}},"summarizeApply"),_=f((t,e,o)=>{const r=H(t,e,o),i=D(t,r);return i===""||i.startsWith("..")?r:i},"formatDisplayPath"),fe=f((t,e,o,r)=>new Promise(i=>{const n=process.argv[1];if(!n){i({exitCode:-1,stderr:"Cannot locate vis bin (process.argv[1] missing).",stdout:""});return}const a=[n,"run",o,"--projects",e,"--no-cache","--summarize","--fail-fast"],s=k(process.execPath,a,{cwd:t,env:{...process.env,NO_COLOR:"1"},stdio:["ignore","pipe","pipe"]});let d="",p="";const m=setTimeout(()=>{s.kill("SIGTERM"),setTimeout(()=>s.kill("SIGKILL"),2e3).unref()},r);s.stdout?.setEncoding("utf8"),s.stdout?.on("data",c=>{d+=c}),s.stderr?.setEncoding("utf8"),s.stderr?.on("data",c=>{p+=c}),s.once("error",c=>{clearTimeout(m),i({exitCode:-1,stderr:c.message,stdout:d})}),s.once("close",c=>{clearTimeout(m),i({exitCode:c??-1,stderr:p,stdout:d})})}),"validateFixByRerun"),me=6e4,y=f(t=>{let e=0;const o=t.match(/`{3,}/g);if(o)for(const r of o)e=Math.max(e,r.length);return"`".repeat(Math.max(3,e+1))},"pickFence"),$=f((t,e,o)=>{if(t.patches.length===0)return"_No patches proposed._";const r=[];for(const[i,n]of t.patches.entries()){const a=_(e,o,n.file),s=[`**[${String(i+1)}] \`${a}\`**`];n.reason&&s.push(`_${n.reason}_`);const d=y(`${n.oldString}
1
+ var U=Object.defineProperty;var I=(t,e)=>U(t,"name",{value:e,configurable:!0});import{createRequire as A}from"node:module";import{j as O,E as v,d as G,c as j,p as u,e as F}from"./bin.js";import{z as D}from"../packem_shared/index-OlP7U_t5.js";import{readLastRunSummary as K}from"@visulima/task-runner";import{r as H,a as M,b as V,c as z}from"../packem_shared/ai-fix-BmLM72GS.js";import{r as q}from"../packem_shared/run-summary-utils-D39XBHWW.js";const L=A(import.meta.url),b=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,T=I(t=>{if(typeof b<"u"&&b.versions&&b.versions.node){const[e,o]=b.versions.node.split(".").map(Number);if(e>22||e===22&&o>=3||e===20&&o>=16)return b.getBuiltinModule(t)}return L(t)},"__cjs_getBuiltinModule"),{spawn:k}=T("node:child_process"),{readFile:J}=T("node:fs/promises");var Q=Object.defineProperty,g=I((t,e)=>Q(t,"name",{value:e,configurable:!0}),"i");const W=g(t=>{if(!t)return;const e=/^refs\/pull\/(\d+)\//.exec(t);return e?Number.parseInt(e[1],10):void 0},"parsePrNumberFromGithubRef"),Y=g(async t=>{if(!t)return{prNumber:void 0,sha:void 0};try{const e=await J(t,"utf8"),o=JSON.parse(e),r=o.pull_request?.number??o.issue?.number??o.number,i=o.pull_request?.head?.sha;return{prNumber:r,sha:i}}catch{return{prNumber:void 0,sha:void 0}}},"readPrNumberFromGithubEvent"),Z=g(async t=>{const e=W(t.GITHUB_REF),{prNumber:o,sha:r}=e===void 0?await Y(t.GITHUB_EVENT_PATH):{prNumber:e,sha:void 0};return{apiBaseUrl:void 0,buildId:void 0,buildNumber:void 0,prNumber:e??o,provider:"github-actions",repo:t.GITHUB_REPOSITORY,sha:r??t.GITHUB_SHA,token:t.GITHUB_TOKEN}},"detectGithubActions"),X=g(t=>{const e=t.CI_MERGE_REQUEST_IID,o=e!==void 0&&e!==""?Number.parseInt(e,10):void 0,r=t.CI_API_V4_URL,i=t.GITLAB_TOKEN??t.CI_TOKEN;return{apiBaseUrl:r,buildId:void 0,buildNumber:void 0,prNumber:Number.isFinite(o)?o:void 0,provider:"gitlab-ci",repo:t.CI_PROJECT_ID??t.CI_PROJECT_PATH,sha:t.CI_COMMIT_SHA,token:i}},"detectGitlabCi"),ee=g(t=>{const e=t.BUILDKITE_PULL_REQUEST,o=e!==void 0&&e!==""&&e!=="false"?Number.parseInt(e,10):void 0,r=t.BUILDKITE_BUILD_NUMBER,i=r!==void 0&&r!==""?Number.parseInt(r,10):void 0,n=t.BUILDKITE_ORGANIZATION_SLUG,a=t.BUILDKITE_PIPELINE_SLUG,s=n!==void 0&&n!==""&&a!==void 0&&a!==""?`${n}/${a}`:void 0;return{apiBaseUrl:(t.BUILDKITE_API_BASE_URL??"https://api.buildkite.com").replace(/\/+$/,""),buildId:t.BUILDKITE_BUILD_ID,buildNumber:Number.isFinite(i)?i:void 0,prNumber:Number.isFinite(o)?o:void 0,provider:"buildkite",repo:s,sha:t.BUILDKITE_COMMIT,token:t.BUILDKITE_API_TOKEN}},"detectBuildkite"),te=g(async(t=process.env)=>t.GITHUB_ACTIONS==="true"?await Z(t):t.GITLAB_CI==="true"?X(t):t.BUILDKITE==="true"?ee(t):{apiBaseUrl:void 0,buildId:void 0,buildNumber:void 0,prNumber:void 0,provider:"unknown",repo:void 0,sha:void 0,token:void 0},"detectCiContext");var oe=Object.defineProperty,h=I((t,e)=>oe(t,"name",{value:e,configurable:!0}),"p");const re=h((t,e,o,r)=>new Promise(i=>{const n=["pr","comment",String(e),"--body-file","-"];r&&n.push("--repo",r);const a=k(t,n,{stdio:["pipe","ignore","pipe"]});let s="";a.stderr?.setEncoding("utf8"),a.stderr?.on("data",d=>{s+=d}),a.once("error",()=>{i({exitCode:127,stderr:s})}),a.once("close",d=>{i({exitCode:d??-1,stderr:s})}),a.stdin?.on("error",()=>{}),a.stdin?.end(o)}),"runGhComment"),ie=h(async(t,e,o,r,i)=>{const n=`https://api.github.com/repos/${e}/issues/${String(o)}/comments`;try{const a=await t(n,{body:JSON.stringify({body:r}),headers:{Accept:"application/vnd.github+json",Authorization:`Bearer ${i}`,"Content-Type":"application/json","X-GitHub-Api-Version":"2022-11-28"},method:"POST"});if(!a.ok){const s=await a.text().catch(()=>"");return{error:`GitHub REST returned ${String(a.status)}: ${s.slice(0,500)}`,ok:!1}}return{ok:!0}}catch(a){return{error:a instanceof Error?a.message:String(a),ok:!1}}},"postViaGithubRest"),ne=h(async(t,e,o,r,i,n)=>{const a=encodeURIComponent(o),s=`${e.replace(/\/+$/,"")}/projects/${a}/merge_requests/${String(r)}/notes`;try{const d=await t(s,{body:JSON.stringify({body:i}),headers:{"Content-Type":"application/json","PRIVATE-TOKEN":n},method:"POST"});if(!d.ok){const p=await d.text().catch(()=>"");return{error:`GitLab REST returned ${String(d.status)}: ${p.slice(0,500)}`,ok:!1}}return{ok:!0}}catch(d){return{error:d instanceof Error?d.message:String(d),ok:!1}}},"postViaGitlabRest"),ae=h((t,e,o,r)=>new Promise(i=>{const n=k(t,["annotate","--style",o,"--context",r],{stdio:["pipe","ignore","pipe"]});let a="";n.stderr?.setEncoding("utf8"),n.stderr?.on("data",s=>{a+=s}),n.once("error",()=>{i({exitCode:127,stderr:a})}),n.once("close",s=>{i({exitCode:s??-1,stderr:a})}),n.stdin?.on("error",()=>{}),n.stdin?.end(e)}),"runBuildkiteAnnotate"),se=h(async(t,e,o,r,i,n,a,s)=>{const[d,p]=o.split("/",2);if(!d||!p)return{error:`Buildkite repo identifier \`${o}\` is not in {org}/{pipeline} form.`,ok:!1};const m=`${e}/v2/organizations/${encodeURIComponent(d)}/pipelines/${encodeURIComponent(p)}/builds/${String(r)}/annotations`;try{const c=await t(m,{body:JSON.stringify({body:i,context:a,style:n}),headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"},method:"POST"});if(!c.ok){const l=await c.text().catch(()=>"");return{error:`Buildkite REST returned ${String(c.status)}: ${l.slice(0,500)}`,ok:!1}}return{ok:!0}}catch(c){return{error:c instanceof Error?c.message:String(c),ok:!1}}},"postViaBuildkiteRest"),de=h(async(t,e,o,r)=>{const i=e.buildId?`vis-ai-heal-${e.buildId}`:"vis-ai-heal",n="info",a=await ae(o,t,n,i);if(a.exitCode===0)return{method:"buildkite-cli",posted:!0};if(!e.apiBaseUrl||!e.repo||e.buildNumber===void 0||!e.token){const d=[];return e.repo||d.push("BUILDKITE_ORGANIZATION_SLUG / BUILDKITE_PIPELINE_SLUG"),e.buildNumber===void 0&&d.push("BUILDKITE_BUILD_NUMBER"),e.token||d.push("BUILDKITE_API_TOKEN (with `write_build_annotations` scope)"),{error:`buildkite-agent annotate exited ${String(a.exitCode)} (${a.stderr.trim().slice(0,200)}); cannot fall back to REST without ${d.join(", ")}`,method:"buildkite-cli",posted:!1}}const s=await se(r,e.apiBaseUrl,e.repo,e.buildNumber,t,n,i,e.token);return s.ok?{method:"rest",posted:!0}:{error:`buildkite-agent annotate exited ${String(a.exitCode)}; REST fallback also failed: ${s.error??"unknown"}`,method:"rest",posted:!1}},"postBuildkiteAnnotation"),pe=h(async(t,e,o,r)=>{if(e.prNumber===void 0)return{method:"skipped",posted:!1};const i=await re(o,e.prNumber,t,e.repo);if(i.exitCode===0)return{method:"gh-cli",posted:!0};if(!e.repo||!e.token)return{error:`gh exited ${String(i.exitCode)} (${i.stderr.trim().slice(0,200)}); cannot fall back to REST without GITHUB_REPOSITORY + GITHUB_TOKEN`,method:"gh-cli",posted:!1};const n=await ie(r,e.repo,e.prNumber,t,e.token);return n.ok?{method:"rest",posted:!0}:{error:`gh exited ${String(i.exitCode)}; REST fallback also failed: ${n.error??"unknown"}`,method:"rest",posted:!1}},"postGithubComment"),ce=h(async(t,e,o)=>{if(e.prNumber===void 0)return{method:"skipped",posted:!1};if(!e.apiBaseUrl||!e.repo)return{error:"GitLab CI context is missing CI_API_V4_URL or CI_PROJECT_ID; cannot post note.",method:"rest",posted:!1};if(!e.token)return{error:"GitLab CI context has no token. CI_JOB_TOKEN cannot post MR notes — set GITLAB_TOKEN to a personal/project access token with `api` scope.",method:"rest",posted:!1};const r=await ne(o,e.apiBaseUrl,e.repo,e.prNumber,t,e.token);return r.ok?{method:"rest",posted:!0}:{error:r.error,method:"rest",posted:!1}},"postGitlabComment"),ue=h(async t=>{const{body:e,buildkiteAgentBin:o="buildkite-agent",context:r,fetchImpl:i=globalThis.fetch,ghBin:n="gh"}=t;return r.provider==="github-actions"?await pe(e,r,n,i):r.provider==="gitlab-ci"?await ce(e,r,i):r.provider==="buildkite"?await de(e,r,o,i):{method:"skipped",posted:!1}},"postPrComment");var le=Object.defineProperty,f=I((t,e)=>le(t,"name",{value:e,configurable:!0}),"l");const C=f(t=>{let e=0,o=0;for(const r of t)r.status==="applied"?e+=1:o+=1;return{applied:e,failed:o}},"summarizeApply"),_=f((t,e,o)=>{const r=H(t,e,o),i=D(t,r);return i===""||i.startsWith("..")?r:i},"formatDisplayPath"),fe=f((t,e,o,r)=>new Promise(i=>{const n=process.argv[1];if(!n){i({exitCode:-1,stderr:"Cannot locate vis bin (process.argv[1] missing).",stdout:""});return}const a=[n,"run",o,"--projects",e,"--no-cache","--summarize","--fail-fast"],s=k(process.execPath,a,{cwd:t,env:{...process.env,NO_COLOR:"1"},stdio:["ignore","pipe","pipe"]});let d="",p="";const m=setTimeout(()=>{s.kill("SIGTERM"),setTimeout(()=>s.kill("SIGKILL"),2e3).unref()},r);s.stdout?.setEncoding("utf8"),s.stdout?.on("data",c=>{d+=c}),s.stderr?.setEncoding("utf8"),s.stderr?.on("data",c=>{p+=c}),s.once("error",c=>{clearTimeout(m),i({exitCode:-1,stderr:c.message,stdout:d})}),s.once("close",c=>{clearTimeout(m),i({exitCode:c??-1,stderr:p,stdout:d})})}),"validateFixByRerun"),me=6e4,y=f(t=>{let e=0;const o=t.match(/`{3,}/g);if(o)for(const r of o)e=Math.max(e,r.length);return"`".repeat(Math.max(3,e+1))},"pickFence"),$=f((t,e,o)=>{if(t.patches.length===0)return"_No patches proposed._";const r=[];for(const[i,n]of t.patches.entries()){const a=_(e,o,n.file),s=[`**[${String(i+1)}] \`${a}\`**`];n.reason&&s.push(`_${n.reason}_`);const d=y(`${n.oldString}
2
2
  ${n.newString}`);s.push(`${d}diff`);for(const p of n.oldString.split(`
3
3
  `))s.push(`- ${p}`);for(const p of n.newString.split(`
4
4
  `))s.push(`+ ${p}`);s.push(d),r.push(s.join(`
@@ -9,6 +9,6 @@ ${n.newString}`);s.push(`${d}diff`);for(const p of n.oldString.split(`
9
9
  `)},"renderCommentBody"),he=f((t,e,o)=>{const r=[O(`Proposal (${t.provider}, confidence: ${t.confidence})`),t.explanation||v("<no explanation>")];for(const[i,n]of t.patches.entries()){r.push(""),r.push(`[${String(i+1)}] ${_(e,o,n.file)}`),n.reason&&r.push(v(` reason: ${n.reason}`));for(const a of n.oldString.split(`
10
10
  `))r.push(G(` - ${a}`));for(const a of n.newString.split(`
11
11
  `))r.push(j(` + ${a}`))}return r.join(`
12
- `)},"renderProposalForLog"),ge=f(async(t,e)=>{const o=e===void 0?await K(t):await z(t,e);if(o){for(const r of o.tasks)if(r.exitCode!==void 0&&r.exitCode!==0)return{project:r.target?.project,runId:o.id,target:r.target?.target,taskId:r.taskId}}},"findFirstFailedTask"),Ie=1800*1e3,w=f(async(t,e)=>{const o=await ge(t,e);if(!o)return{outcome:"no-failed-task"};if(!o.project||!o.target)return{failedTask:o,outcome:"missing-metadata"};const r=await M(t,o.taskId,{runId:o.runId});return r?{failedTask:{project:o.project,runId:o.runId,target:o.target,taskId:o.taskId},failureContext:r,outcome:"ready"}:{failedTask:{project:o.project,runId:o.runId,target:o.target,taskId:o.taskId},outcome:"no-failure-context"}},"findHealCandidate"),N=f(async(t,e)=>{const{logger:o,options:r,visConfig:i,workspaceRoot:n}=t,a=n??process.cwd(),s=r.dryRun===!0,d=i?.ai,p=await V(e.failureContext,o,{cache:r.noCache!==!0,config:d});if(!p)return{outcome:"no-proposal"};if(p.cannotFix)return{detail:p.cannotFix,outcome:"cannot-fix",proposal:p};if(p.patches.length===0)return{outcome:"empty-patches",proposal:p};if(s)return{outcome:"dry-run",proposal:p};const m=await J(a,e.failureContext.cwd,p);return C(m).applied===0?{applyResults:m,outcome:"no-patches-applied",proposal:p}:{applyResults:m,outcome:"applied",proposal:p}},"proposeAndApply"),E=f(async(t,e,o={})=>{const r=t.workspaceRoot??process.cwd(),i=t.options.validationTimeout===void 0?Ie:t.options.validationTimeout*1e3;return await(o.validate??((n,a)=>fe(r,n,a,i)))(e.failedTask.project,e.failedTask.target)},"validateAppliedFix"),S=f(async(t,e,o,r={})=>{const i=await(r.detectCi??te)(),n=i.provider==="gitlab-ci"?"MR":i.provider==="buildkite"?"annotation":"PR";if(i.provider==="unknown")return{ciContext:i,outcome:"no-ci",surface:n};const a=x(e,o,t,i.sha),s=await(r.postComment??(async(d,p)=>ue({body:d,context:p})))(a,i);return s.posted?{ciContext:i,method:s.method,outcome:"posted",surface:n}:s.method==="skipped"?{ciContext:i,outcome:"no-pr",surface:n}:{ciContext:i,error:s.error,method:s.method,outcome:"post-failed",surface:n}},"postHealComment"),R=f(async(t,e={})=>{const{logger:o,workspaceRoot:r}=t,i=r??process.cwd(),n=await w(i,t.options.run);if(n.outcome==="no-failed-task"){u.info("No failed tasks found in the latest run summary. Nothing to heal.");return}if(n.outcome==="missing-metadata"){u.error(`Failed task ${n.failedTask.taskId} is missing project/target metadata in the run summary; cannot validate a fix.`),process.exitCode=1;return}if(n.outcome==="no-failure-context"){u.error(`No failure log or run summary found for ${n.failedTask.taskId}.`),process.exitCode=1;return}const a={failedTask:n.failedTask,failureContext:n.failureContext};u.info(`Healing ${a.failedTask.taskId} (run ${a.failedTask.runId??"unknown"})`),a.failureContext.terminalOutputCaptured||u.warn(`No captured terminal output for ${a.failedTask.taskId}; the AI proposal will be weaker without it.`);const s=await N(t,a);if(s.outcome==="no-proposal"){u.error("AI fix proposal failed or no provider available."),process.exitCode=1;return}if(s.outcome==="cannot-fix"){u.warn(`AI declined to fix: ${s.detail??"(no reason)"}`);return}if(s.outcome==="empty-patches"){u.warn("AI returned an empty patch set.");return}const d=s.proposal;if(o.info(he(d,i,a.failureContext.cwd)),s.outcome==="dry-run"){u.info("Dry run: skipping apply, validation, and PR comment.");return}const p=s.applyResults??[],m=C(p);if(u.info(`Applied ${String(m.applied)}/${String(p.length)} patches.`),s.outcome==="no-patches-applied"){u.error("No patches could be applied (all failed validation)."),process.exitCode=1;return}u.info(`Re-running ${a.failedTask.taskId} to validate the fix...`);const c=await E(t,a,{validate:e.validate});if(c.exitCode!==0){u.error(`Validation failed (exit ${String(c.exitCode)}). Patch is not posted.`),c.stderr.trim().length>0&&(o.info(F("--- validation stderr (tail) ---")),o.info(c.stderr.split(`
12
+ `)},"renderProposalForLog"),ge=f(async(t,e)=>{const o=e===void 0?await K(t):await q(t,e);if(o){for(const r of o.tasks)if(r.exitCode!==void 0&&r.exitCode!==0)return{project:r.target?.project,runId:o.id,target:r.target?.target,taskId:r.taskId}}},"findFirstFailedTask"),Ie=1800*1e3,w=f(async(t,e)=>{const o=await ge(t,e);if(!o)return{outcome:"no-failed-task"};if(!o.project||!o.target)return{failedTask:o,outcome:"missing-metadata"};const r=await M(t,o.taskId,{runId:o.runId});return r?{failedTask:{project:o.project,runId:o.runId,target:o.target,taskId:o.taskId},failureContext:r,outcome:"ready"}:{failedTask:{project:o.project,runId:o.runId,target:o.target,taskId:o.taskId},outcome:"no-failure-context"}},"findHealCandidate"),N=f(async(t,e)=>{const{logger:o,options:r,visConfig:i,workspaceRoot:n}=t,a=n??process.cwd(),s=r.dryRun===!0,d=i?.ai,p=await V(e.failureContext,o,{cache:r.cache!==!1,config:d});if(!p)return{outcome:"no-proposal"};if(p.cannotFix)return{detail:p.cannotFix,outcome:"cannot-fix",proposal:p};if(p.patches.length===0)return{outcome:"empty-patches",proposal:p};if(s)return{outcome:"dry-run",proposal:p};const m=await z(a,e.failureContext.cwd,p);return C(m).applied===0?{applyResults:m,outcome:"no-patches-applied",proposal:p}:{applyResults:m,outcome:"applied",proposal:p}},"proposeAndApply"),E=f(async(t,e,o={})=>{const r=t.workspaceRoot??process.cwd(),i=t.options.validationTimeout===void 0?Ie:t.options.validationTimeout*1e3;return await(o.validate??((n,a)=>fe(r,n,a,i)))(e.failedTask.project,e.failedTask.target)},"validateAppliedFix"),S=f(async(t,e,o,r={})=>{const i=await(r.detectCi??te)(),n=i.provider==="gitlab-ci"?"MR":i.provider==="buildkite"?"annotation":"PR";if(i.provider==="unknown")return{ciContext:i,outcome:"no-ci",surface:n};const a=x(e,o,t,i.sha),s=await(r.postComment??(async(d,p)=>ue({body:d,context:p})))(a,i);return s.posted?{ciContext:i,method:s.method,outcome:"posted",surface:n}:s.method==="skipped"?{ciContext:i,outcome:"no-pr",surface:n}:{ciContext:i,error:s.error,method:s.method,outcome:"post-failed",surface:n}},"postHealComment"),R=f(async(t,e={})=>{const{logger:o,workspaceRoot:r}=t,i=r??process.cwd(),n=await w(i,t.options.run);if(n.outcome==="no-failed-task"){u.info("No failed tasks found in the latest run summary. Nothing to heal.");return}if(n.outcome==="missing-metadata"){u.error(`Failed task ${n.failedTask.taskId} is missing project/target metadata in the run summary; cannot validate a fix.`),process.exitCode=1;return}if(n.outcome==="no-failure-context"){u.error(`No failure log or run summary found for ${n.failedTask.taskId}.`),process.exitCode=1;return}const a={failedTask:n.failedTask,failureContext:n.failureContext};u.info(`Healing ${a.failedTask.taskId} (run ${a.failedTask.runId??"unknown"})`),a.failureContext.terminalOutputCaptured||u.warn(`No captured terminal output for ${a.failedTask.taskId}; the AI proposal will be weaker without it.`);const s=await N(t,a);if(s.outcome==="no-proposal"){u.error("AI fix proposal failed or no provider available."),process.exitCode=1;return}if(s.outcome==="cannot-fix"){u.warn(`AI declined to fix: ${s.detail??"(no reason)"}`);return}if(s.outcome==="empty-patches"){u.warn("AI returned an empty patch set.");return}const d=s.proposal;if(o.info(he(d,i,a.failureContext.cwd)),s.outcome==="dry-run"){u.info("Dry run: skipping apply, validation, and PR comment.");return}const p=s.applyResults??[],m=C(p);if(u.info(`Applied ${String(m.applied)}/${String(p.length)} patches.`),s.outcome==="no-patches-applied"){u.error("No patches could be applied (all failed validation)."),process.exitCode=1;return}u.info(`Re-running ${a.failedTask.taskId} to validate the fix...`);const c=await E(t,a,{validate:e.validate});if(c.exitCode!==0){u.error(`Validation failed (exit ${String(c.exitCode)}). Patch is not posted.`),c.stderr.trim().length>0&&(o.info(F("--- validation stderr (tail) ---")),o.info(c.stderr.split(`
13
13
  `).slice(-20).join(`
14
- `))),process.exitCode=1;return}u.success("Validation passed.");const l=await S(i,d,a.failureContext,{detectCi:e.detectCi,postComment:e.postComment});if(l.outcome==="no-ci"){u.notice("Not running in a recognised CI provider; skipping PR comment. Patch was applied + validated locally.");return}if(l.outcome==="posted"){const P=l.surface==="annotation"?`build #${String(l.ciContext.buildNumber??"?")}`:`${l.surface} #${String(l.ciContext.prNumber)}`;u.success(`Posted fix proposal to ${P} via ${l.method??"unknown"}.`);return}if(l.outcome==="no-pr"){u.notice(`No ${l.surface} number detected (push-event run); skipping comment.`);return}const B=l.surface==="annotation"?"annotation":`${l.surface} comment`;u.error(`Failed to post ${B}: ${l.error??"unknown error"}`)},"heal"),be=f(async t=>{await R(t)},"aiHeal"),we=Object.defineProperty({__proto__:null,aiHeal:be,findHealCandidate:w,pickFenceForTesting:y,postHealComment:S,proposeAndApply:N,renderCommentBodyForTesting:x,renderProposalDiffForTesting:$,runHealForTesting:R,validateAppliedFix:E},Symbol.toStringTag,{value:"Module"});export{E as I,w as P,N as R,te as d,we as h,ue as p};
14
+ `))),process.exitCode=1;return}u.success("Validation passed.");const l=await S(i,d,a.failureContext,{detectCi:e.detectCi,postComment:e.postComment});if(l.outcome==="no-ci"){u.notice("Not running in a recognised CI provider; skipping PR comment. Patch was applied + validated locally.");return}if(l.outcome==="posted"){const P=l.surface==="annotation"?`build #${String(l.ciContext.buildNumber??"?")}`:`${l.surface} #${String(l.ciContext.prNumber)}`;u.success(`Posted fix proposal to ${P} via ${l.method??"unknown"}.`);return}if(l.outcome==="no-pr"){u.notice(`No ${l.surface} number detected (push-event run); skipping comment.`);return}const B=l.surface==="annotation"?"annotation":`${l.surface} comment`;u.error(`Failed to post ${B}: ${l.error??"unknown error"}`)},"heal"),be=f(async t=>{await R(t)},"aiHeal"),xe=Object.defineProperty({__proto__:null,aiHeal:be,findHealCandidate:w,pickFenceForTesting:y,postHealComment:S,proposeAndApply:N,renderCommentBodyForTesting:x,renderProposalDiffForTesting:$,runHealForTesting:R,validateAppliedFix:E},Symbol.toStringTag,{value:"Module"});export{w as P,N as R,te as d,xe as h,ue as p,E as w};
@@ -0,0 +1,18 @@
1
+ var Nr=Object.defineProperty;var A=(e,t)=>Nr(e,"name",{value:t,configurable:!0});import{createRequire as Pr}from"node:module";import{aU as Fr,j as Lr,aV as _r,c as G,aW as P,q as ce,e as Fe}from"./bin.js";const Mr=Pr(import.meta.url),ge=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Tr=A(e=>{if(typeof ge<"u"&&ge.versions&&ge.versions.node){const[t,r]=ge.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return ge.getBuiltinModule(e)}return Mr(e)},"__cjs_getBuiltinModule"),{createRequire:tr}=Tr("node:module");var Hr=Object.defineProperty,J=A((e,t)=>Hr(e,"name",{value:t,configurable:!0}),"j$3"),Gr=Object.defineProperty,S=J((e,t)=>Gr(e,"name",{value:t,configurable:!0}),"$");const Jr=tr(import.meta.url),le=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,gt=S(e=>{if(typeof le<"u"&&le.versions&&le.versions.node){const[t,r]=le.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return le.getBuiltinModule(e)}return Jr(e)},"__cjs_getBuiltinModule"),X=le,{execFileSync:Vr}=gt("node:child_process"),ve=gt("node:fs"),qr=gt("node:tty");var zr=Object.defineProperty,bt=S((e,t)=>zr(e,"name",{value:t,configurable:!0}),"s$2"),Dr=Object.defineProperty,Je=bt((e,t)=>Dr(e,"name",{value:t,configurable:!0}),"l");const wt=[161,161,164,164,167,168,170,170,173,174,176,180,182,186,188,191,198,198,208,208,215,216,222,225,230,230,232,234,236,237,240,240,242,243,247,250,252,252,254,254,257,257,273,273,275,275,283,283,294,295,299,299,305,307,312,312,319,322,324,324,328,331,333,333,338,339,358,359,363,363,462,462,464,464,466,466,468,468,470,470,472,472,474,474,476,476,593,593,609,609,708,708,711,711,713,715,717,717,720,720,728,731,733,733,735,735,768,879,913,929,931,937,945,961,963,969,1025,1025,1040,1103,1105,1105,8208,8208,8211,8214,8216,8217,8220,8221,8224,8226,8228,8231,8240,8240,8242,8243,8245,8245,8251,8251,8254,8254,8308,8308,8319,8319,8321,8324,8364,8364,8451,8451,8453,8453,8457,8457,8467,8467,8470,8470,8481,8482,8486,8486,8491,8491,8531,8532,8539,8542,8544,8555,8560,8569,8585,8585,8592,8601,8632,8633,8658,8658,8660,8660,8679,8679,8704,8704,8706,8707,8711,8712,8715,8715,8719,8719,8721,8721,8725,8725,8730,8730,8733,8736,8739,8739,8741,8741,8743,8748,8750,8750,8756,8759,8764,8765,8776,8776,8780,8780,8786,8786,8800,8801,8804,8807,8810,8811,8814,8815,8834,8835,8838,8839,8853,8853,8857,8857,8869,8869,8895,8895,8978,8978,9312,9449,9451,9547,9552,9587,9600,9615,9618,9621,9632,9633,9635,9641,9650,9651,9654,9655,9660,9661,9664,9665,9670,9672,9675,9675,9678,9681,9698,9701,9711,9711,9733,9734,9737,9737,9742,9743,9756,9756,9758,9758,9792,9792,9794,9794,9824,9825,9827,9829,9831,9834,9836,9837,9839,9839,9886,9887,9919,9919,9926,9933,9935,9939,9941,9953,9955,9955,9960,9961,9963,9969,9972,9972,9974,9977,9979,9980,9982,9983,10045,10045,10102,10111,11094,11097,12872,12879,57344,63743,65024,65039,65533,65533,127232,127242,127248,127277,127280,127337,127344,127373,127375,127376,127387,127404,917760,917999,983040,1048573,1048576,1114109],yt=[12288,12288,65281,65376,65504,65510],vt=[8361,8361,65377,65470,65474,65479,65482,65487,65490,65495,65498,65500,65512,65518],xt=[32,126,162,163,165,166,172,172,175,175,10214,10221,10629,10630],Ve=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141];var Ur=Object.defineProperty,Yr=Je((e,t)=>Ur(e,"name",{value:t,configurable:!0}),"r$1");const $e=Yr((e,t)=>{let r=0,i=Math.floor(e.length/2)-1;for(;r<=i;){const n=Math.floor((r+i)/2),s=n*2;if(t<e[s])i=n-1;else if(t>e[s+1])r=n+1;else return!0}return!1},"isInRange");var Kr=Object.defineProperty,te=Je((e,t)=>Kr(e,"name",{value:t,configurable:!0}),"r");const Zr=wt[0],Xr=wt.at(-1),Qr=yt[0],ei=yt.at(-1),ti=vt[0],ri=vt.at(-1),ii=xt[0],ni=xt.at(-1),oi=Ve[0],si=Ve.at(-1),jt=19968,[ai,li]=de(Ve);function de(e){let t=e[0],r=e[1];for(let i=0;i<e.length;i+=2){const n=e[i],s=e[i+1];if(jt>=n&&jt<=s)return[n,s];s-n>r-t&&(t=n,r=s)}return[t,r]}A(de,"rt");J(de,"be");S(de,"b$5");bt(de,"b");Je(de,"N");te(de,"findWideFastPathRange");const rr=te(e=>e<Zr||e>Xr?!1:$e(wt,e),"isAmbiguous"),ir=te(e=>e<Qr||e>ei?!1:$e(yt,e),"isFullWidth"),ci=te(e=>e<ti||e>ri?!1:$e(vt,e),"isHalfWidth"),hi=te(e=>e<ii||e>ni?!1:$e(xt,e),"isNarrow"),nr=te(e=>e>=ai&&e<=li?!0:e<oi||e>si?!1:$e(Ve,e),"isWide");function ue(e){return rr(e)?"ambiguous":ir(e)?"fullwidth":ci(e)?"halfwidth":hi(e)?"narrow":nr(e)?"wide":"neutral"}A(ue,"nt");J(ue,"we");S(ue,"v$2");bt(ue,"q");Je(ue,"getCategory");te(ue,"getCategory");var di=Object.defineProperty,qe=S((e,t)=>di(e,"name",{value:t,configurable:!0}),"i$4"),ui=Object.defineProperty,ze=qe((e,t)=>ui(e,"name",{value:t,configurable:!0}),"a"),fi=Object.defineProperty,$t=ze((e,t)=>fi(e,"name",{value:t,configurable:!0}),"e");function re(e){if(!Number.isSafeInteger(e))throw new TypeError(`Expected a code point, got \`${typeof e}\`.`)}A(re,"U$2");J(re,"ee");S(re,"s$1");qe(re,"s");ze(re,"r");$t(re,"validate");function ie(e){return re(e),ue(e)}A(ie,"Z$1");J(ie,"te");S(ie,"r$3");qe(ie,"p");ze(ie,"eastAsianWidthType");$t(ie,"eastAsianWidthType");function Be(e,{ambiguousAsWide:t=!1}={}){return re(e),ir(e)||nr(e)||t&&rr(e)?2:1}A(Be,"Wt");J(Be,"Fe");S(Be,"o$2");qe(Be,"W");ze(Be,"eastAsianWidth");$t(Be,"eastAsianWidth");var pi=Object.defineProperty,mi=S((e,t)=>pi(e,"name",{value:t,configurable:!0}),"p$3"),gi=Object.defineProperty,or=mi((e,t)=>gi(e,"name",{value:t,configurable:!0}),"e"),bi=Object.defineProperty,wi=or((e,t)=>bi(e,"name",{value:t,configurable:!0}),"E");const sr=String.raw,Ct=sr`\p{Emoji}(?:\p{EMod}|[\u{E0020}-\u{E007E}]+\u{E007F}|\uFE0F?\u20E3?)`,yi=wi(()=>new RegExp(sr`\p{RI}{2}|(?![#*\d](?!\uFE0F?\u20E3))${Ct}(?:\u200D${Ct})*`,"gu"),"default");var vi=Object.defineProperty,xi=or((e,t)=>vi(e,"name",{value:t,configurable:!0}),"p");const fe=new Set(["\x1B","›"]),De="\x07",ar="[",Bt="m",Le="]8;;",$i=39,Bi=/[\u200B\uFEFF\u2060-\u2064]/g,Wi=new RegExp(`(?:\\${ar}(?<code>\\d+)m|\\${Le}(?<uri>.*)${De})`),Si=Object.freeze(new Map([[0,0],[1,22],[2,22],[3,23],[4,24],[7,27],[8,28],[9,29],[30,39],[31,39],[32,39],[33,39],[34,39],[35,39],[36,39],[37,39],[40,49],[41,49],[42,49],[43,49],[44,49],[45,49],[46,49],[47,49],[90,39]])),Z=/[\u001B\u009B](?:[[()#;?]{0,10}(?:\d{1,4}(?:;\d{0,4})*)?[0-9A-ORZcf-nqry=><]|\]8;;[^\u0007\u001B]{0,100}(?:\u0007|\u001B\\))/g,Et=/\u001B\[(\d+(?:;\d+)*)?m[^\u001B]*(?:\u001B\[(?:\d+(?:;\d+)*)?m|$)/g,Rt=/\u001B\]8;[^\u0007\u001B]*(?:\u0007|\u001B\\)(.*?)\u001B\]8;;(?:\u0007|\u001B\\)/g,We=/[\u0000-\u0008\n-\u001F\u007F-\u009F]{1,1000}/y,Ie=yi();xi(e=>e.replace(Ie,""),"stripEmoji");var Oi=Object.defineProperty,Ai=S((e,t)=>Oi(e,"name",{value:t,configurable:!0}),"E$1"),ji=Object.defineProperty,Ci=Ai((e,t)=>ji(e,"name",{value:t,configurable:!0}),"A"),Ei=Object.defineProperty,Ue=Ci((e,t)=>Ei(e,"name",{value:t,configurable:!0}),"d");const It=new Map,Se=/(?:[\u0020-\u007E\u00A0-\u00FF](?!\uFE0F)){1,1000}/y,ke=Ue(e=>e>=32&&e<=126?"latin":e===8203||e===8204||e===8205||e===8288?"zero":e<=31||e>=127&&e<=159?"control":e>=160&&e<=255||e>=9472&&e<=9599?"latin":e>=4352&&e<=4607||e>=11904&&e<=40959||e>=44032&&e<=55215||e>=63744&&e<=64255||e>=65280&&e<=65519&&!(e>=65377&&e<=65439)||e>=12352&&e<=12543?"wide":e===8230?"latin":"other","getCharType"),Ri=Ue((e,t)=>{const r=Math.floor(e/65536),i=e%65536;let n=It.get(r);if(n||(n=new Map,It.set(r,n)),n.has(i))return n.get(i);let s;if(ke(e)==="latin")s=t.width.regular;else if(ke(e)==="control")s=t.width.control;else if(ke(e)==="wide")s=t.width.wide;else switch(ie(e)){case"ambiguous":{s=t.width.ambiguousIsNarrow?t.width.regular:t.width.wide;break}case"fullwidth":{s=t.width.fullWidth;break}case"wide":{s=t.width.wide;break}default:s=t.width.regular}return n.set(i,s),s},"getCachedCharWidth"),Ii=Ue(e=>e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071||e>=917760&&e<=917999||e>=65024&&e<=65039||e>=3633&&e<=3642||e>=3655&&e<=3662||e>=3761&&e<=3769||e>=3771&&e<=3772||e>=3784&&e<=3789||e>=2304&&e<=2307||e>=2362&&e<=2383||e>=2385&&e<=2391||e>=2402&&e<=2403||e>=2433&&e<=2435||e>=2492&&e<=2500||e>=2509&&e<=2509||e>=2561&&e<=2563||e>=2620&&e<=2637||e>=1611&&e<=1631||e>=1648&&e<=1648||e>=1750&&e<=1773||e>=2276&&e<=2302||e>=1425&&e<=1469||e>=1471&&e<=1471||e>=1473&&e<=1474||e>=1476&&e<=1477||e>=1479&&e<=1479||e>=3893&&e<=3893||e>=3895&&e<=3895||e>=3897&&e<=3897||e>=3953&&e<=3966||e>=3968&&e<=3972||e>=3974&&e<=3975?!0:e>=768&&e<=777||e>=803&&e<=803,"isCombiningCharacter"),he=Ue((e,t={})=>{if(!e||e.length===0)return{ellipsed:!1,index:0,truncated:!1,width:0};const r={truncation:{countAnsiEscapeCodes:t.countAnsiEscapeCodes??!1,ellipsis:t.ellipsis??"",ellipsisWidth:t.ellipsisWidth??(t.ellipsis?he(t.ellipsis,{...t,ellipsis:"",ellipsisWidth:0,limit:Number.POSITIVE_INFINITY}).width:0),limit:t.limit??Number.POSITIVE_INFINITY},width:{ambiguousIsNarrow:t.ambiguousIsNarrow??!1,ansi:t.ansiWidth??0,control:t.controlWidth??0,emoji:t.emojiWidth??2,fullWidth:t.fullWidth??2,halfWidth:t.halfWidth??1,regular:t.regularWidth??1,tab:t.tabWidth??8,wide:t.wideWidth??2}},i=Math.max(0,r.truncation.limit-r.truncation.ellipsisWidth),{length:n}=e,s=n>1e4;let o=0,a=0,l=n,c=!1;const h=e.includes("\x1B")||e.includes("›");for(;o<n;){if(h&&(e[o]==="\x1B"||e[o]==="›")){if(e.startsWith("\x1B]8;;",o)){const m="\x1B]8;;\x07",u=m.length,x=e.indexOf("\x07",o+5);if(x!==-1){const w=e.indexOf(m,x+1);if(w!==-1){const v=w+u,$=e.slice(x+1,w).replace(Z,""),B=he($,{ambiguousIsNarrow:r.width.ambiguousIsNarrow,ansiWidth:r.width.ansi,controlWidth:r.width.control,countAnsiEscapeCodes:!1,ellipsis:r.truncation.ellipsis,ellipsisWidth:r.truncation.ellipsisWidth,emojiWidth:r.width.emoji,fullWidth:r.width.fullWidth,halfWidth:r.width.halfWidth,limit:Math.max(0,i-a),regularWidth:r.width.regular,tabWidth:r.width.tab,wideWidth:r.width.wide}),O=B.width;if(B.truncated)c=!0,l=Math.min(l,o);else if(a+O>i&&(l=Math.min(l,o),c=!0,a+O>r.truncation.limit))break;if(a+=O,o=v,c&&a>=r.truncation.limit)break;continue}}}if(Z.lastIndex=o,Z.test(e)){const m=Z.lastIndex-o,u=r.truncation.countAnsiEscapeCodes?m:r.width.ansi;if(a+u>i&&(l=Math.min(l,o),a+u>r.truncation.limit)){c=!0;break}a+=u,o=Z.lastIndex;continue}}const b=e.codePointAt(o);if(b===8203||b===65279||b>=8288&&b<=8292){o+=1;continue}if(b===9){if(a+r.width.tab>i&&(l=Math.min(l,o),a+r.width.tab>r.truncation.limit)){c=!0;break}a+=r.width.tab,o+=1;continue}if(Se.lastIndex=o,Se.test(e)){const m=(Se.lastIndex-o)*r.width.regular;if(a+m>i){const u=Math.floor((i-a)/r.width.regular);if(l=Math.min(l,o+u),a+m>r.truncation.limit){c=!0;break}}a+=m,o=Se.lastIndex;continue}if((b<=31||b>=127&&b<=159)&&(We.lastIndex=o,We.test(e))){const m=(We.lastIndex-o)*r.width.control;if(a+m>i&&(l=Math.min(l,o+Math.floor((i-a)/r.width.control)),a+m>r.truncation.limit)){c=!0;break}a+=m,o=We.lastIndex;continue}if(Ie.lastIndex=o,Ie.test(e)){if(a+r.width.emoji>i&&(l=Math.min(l,o),a+r.width.emoji>r.truncation.limit)){c=!0;break}a+=r.width.emoji,o=Ie.lastIndex;continue}const f=e.codePointAt(o)??0;if(Ii(f)){o+=f>65535?2:1;continue}let g;if(s)g=Ri(f,r);else switch(ke(f)){case"control":{g=r.width.control;break}case"latin":{g=r.width.regular;break}case"wide":{g=r.width.wide;break}case"zero":{g=0;break}default:switch(ie(f)){case"ambiguous":{g=r.width.ambiguousIsNarrow?r.width.regular:r.width.wide;break}case"fullwidth":{g=r.width.fullWidth;break}case"wide":{g=r.width.wide;break}default:g=r.width.regular}}if(a+g>i&&(l=Math.min(l,o),a+g>r.truncation.limit)){c=!0;break}a+=g,o+=f>65535?2:1}let d=a,p=!1;return c&&r.truncation.limit>=r.truncation.ellipsisWidth&&(d=r.truncation.limit,p=!0),{ellipsed:p,index:c?l:n,truncated:c,width:d}},"getStringTruncatedWidth");var ki=Object.defineProperty,Ni=S((e,t)=>ki(e,"name",{value:t,configurable:!0}),"i$2"),Pi=Object.defineProperty,Mi=Ni((e,t)=>Pi(e,"name",{value:t,configurable:!0}),"e"),Ti=Object.defineProperty,Fi=Mi((e,t)=>Ti(e,"name",{value:t,configurable:!0}),"r");const I=Fi((e,t={})=>he(e,{...t,ellipsis:"",ellipsisWidth:0,limit:Number.POSITIVE_INFINITY}).width,"getStringWidth");var Li=Object.defineProperty,lr=S((e,t)=>Li(e,"name",{value:t,configurable:!0}),"i$1"),_i=Object.defineProperty,cr=lr((e,t)=>_i(e,"name",{value:t,configurable:!0}),"r"),Hi=Object.defineProperty,Gi=cr((e,t)=>Hi(e,"name",{value:t,configurable:!0}),"c");let Ji=class{static{A(this,"Oi")}static{J(this,"Ii")}static{S(this,"l")}static{lr(this,"y")}static{cr(this,"s")}static{Gi(this,"LRUCache")}capacity;cache;keyOrder;constructor(e){this.capacity=e,this.cache=new Map,this.keyOrder=[]}get(e){if(this.cache.has(e))return this.keyOrder=this.keyOrder.filter(t=>t!==e),this.keyOrder.push(e),this.cache.get(e)}has(e){return this.cache.has(e)}set(e,t){if(this.cache.has(e))this.keyOrder=this.keyOrder.filter(r=>r!==e);else if(this.cache.size>=this.capacity){const r=this.keyOrder.shift();r!==void 0&&this.cache.delete(r)}this.cache.set(e,t),this.keyOrder.push(e)}delete(e){this.cache.delete(e),this.keyOrder=this.keyOrder.filter(t=>t!==e)}clear(){this.cache.clear(),this.keyOrder=[]}size(){return this.cache.size}};var Vi=Object.defineProperty,qi=S((e,t)=>Vi(e,"name",{value:t,configurable:!0}),"S$1"),zi=Object.defineProperty,Di=qi((e,t)=>zi(e,"name",{value:t,configurable:!0}),"w"),Ui=Object.defineProperty,pe=Di((e,t)=>Ui(e,"name",{value:t,configurable:!0}),"y");const kt=new Ji(100),Yi=new Intl.Segmenter("en",{granularity:"grapheme"}),Ki=/^[\u0000-\u007F]*$/,Zi=new Set(["0","22","23","24","27","28","29","39","49"]),Xi=new Set(["1","3","4","7","8","9"]),Nt=new Map([["22","1"],["23","3"],["24","4"],["27","7"],["28","8"],["29","9"]]),Oe=pe(e=>e>="30"&&e<="37"||e>="90"&&e<="97"||e.startsWith("38;"),"isForegroundColor"),Ae=pe(e=>e>="40"&&e<="47"||e>="100"&&e<="107"||e.startsWith("48;"),"isBackgroundColor"),Qi=[{close:"\x1B[22m",open:"\x1B[1m"},{close:"\x1B[23m",open:"\x1B[3m"},{close:"\x1B[24m",open:"\x1B[4m"},{close:"\x1B[27m",open:"\x1B[7m"},{close:"\x1B[28m",open:"\x1B[8m"},{close:"\x1B[29m",open:"\x1B[9m"}],Pt=pe((e,t)=>{let r=-1;for(const i of t){const n=e.indexOf(i);n!==-1&&(r===-1||n<r)&&(r=n)}return r},"findFirstPositionOfAny"),en=pe((e,t)=>{if(!e.includes("\x1B"))return[{after:"",before:"",content:e,visibleLength:I(e,t.width)}];const r=kt.get(e);if(r)return r;const i=[],n=[];let s=0,o;for(Z.lastIndex=0;(o=Z.exec(e))!==null;){const h=o[0];i.push(e.slice(s,o.index)),n.push(h),s=o.index+h.length}s<e.length&&i.push(e.slice(s));const a=[];for(const h of n){if(h==="\x1B[0m"||h==="\x1B]8;;\x07"){a.push(h);continue}if(h.startsWith("\x1B[")&&h.endsWith("m")){const d=h.slice(2,-1);if(Zi.has(d)){a.push(h);continue}}}const l=new Set,c=[];for(const[h,d]of i.entries()){if(h>0&&n[h-1]){const f=n[h-1];if(f==="\x1B[0m")l.clear();else if(f==="\x1B]8;;\x07"){for(const g of l)if(g.startsWith("\x1B]8;;")&&!g.endsWith("\x1B]8;;\x07")){l.delete(g);break}}else if(f.startsWith("\x1B[")&&f.endsWith("m")){const g=f.slice(2,-1);if(g==="39"){for(const m of l)if(m.startsWith("\x1B[")&&m.endsWith("m")){const u=m.slice(2,-1);if(Oe(u)){l.delete(m);break}}}else if(g==="49"){for(const m of l)if(m.startsWith("\x1B[")&&m.endsWith("m")){const u=m.slice(2,-1);if(Ae(u)){l.delete(m);break}}}else if(Nt.has(g)){const m=Nt.get(g);for(const u of l)if(u===`\x1B[${m}m`){l.delete(u);break}}else{if(Oe(g)){for(const m of l)if(m.startsWith("\x1B[")&&m.endsWith("m")){const u=m.slice(2,-1);if(Oe(u)){l.delete(m);break}}}else if(Ae(g)){for(const m of l)if(m.startsWith("\x1B[")&&m.endsWith("m")){const u=m.slice(2,-1);if(Ae(u)){l.delete(m);break}}}else if(Xi.has(g)){const m=`\x1B[${g}m`;l.has(m)&&l.delete(m)}l.add(f)}}else if(f.startsWith("\x1B]8;;")&&!f.endsWith("\x1B]8;;\x07")){for(const g of l)if(g.startsWith("\x1B]8;;")&&!g.endsWith("\x1B]8;;\x07")){l.delete(g);break}l.add(f)}}if(d==="")continue;let p="";if(l.size>0)if(a.includes("\x1B[0m"))p="\x1B[0m";else{const f=[];let g=!1;for(const w of l)if(w.startsWith("\x1B]8;;")&&!w.endsWith("\x1B]8;;\x07")){g=!0;break}g&&a.includes("\x1B]8;;\x07")&&f.push("\x1B]8;;\x07");let m=!1,u=!1;for(const w of l)if(w.startsWith("\x1B[")&&w.endsWith("m")){const v=w.slice(2,-1);Oe(v)?m=!0:Ae(v)&&(u=!0)}if(m&&u){const w=Pt(e,["\x1B[3","\x1B[9","\x1B[38;"]),v=Pt(e,["\x1B[4","\x1B[10","\x1B[48;"]);w>=0&&v>=0?w>v?f.push("\x1B[39m","\x1B[49m"):f.push("\x1B[49m","\x1B[39m"):f.push("\x1B[39m","\x1B[49m")}else m&&f.push("\x1B[39m"),u&&f.push("\x1B[49m");m&&u&&e.includes("\x1B[39m")&&e.includes("\x1B[49m")&&(e.indexOf("\x1B[39m")<e.indexOf("\x1B[49m")?(f.length-=2,f.push("\x1B[39m","\x1B[49m")):e.indexOf("\x1B[49m")<e.indexOf("\x1B[39m")&&(f.length-=2,f.push("\x1B[49m","\x1B[39m")));const x=Qi.filter(w=>l.has(w.open)).map(w=>({position:e.indexOf(w.open),style:w})).filter(w=>w.position>=0).toSorted((w,v)=>v.position-w.position);for(const w of x){const v=w;a.includes(v.style.close)&&f.push(v.style.close)}p=f.join("")}const b=[...l].join("");c.push({after:p,before:b,content:d,visibleLength:I(d,{fullWidth:1,wideWidth:1})})}return kt.set(e,c),c},"processIntoStyledSegments"),tn=pe((e,t,r,i)=>{const n=[...i.segmenter.segment(e)],s=[];let o=0,a=!1;for(const l of n){const c=I(l.segment,i.width),h=o,d=o+c;if(!a)if(h<t){o=d;continue}else a=!0;if(h>=r||d>r)break;s.push(l.segment),o=d}return s.join("")},"fastSlice"),z=pe((e,t=0,r=Number.MAX_SAFE_INTEGER,i={})=>{const n={segmenter:Yi,...i};if(t>=r||e==="")return"";const s=I(e,n.width);if(t===0&&r>=s)return e;if(t<0||r<0)throw new RangeError("Negative indices aren't supported");if(!e.includes("\x1B"))return Ki.test(e)?e.slice(t,r):tn(e,t,r,n);if(Et.lastIndex=0,Rt.lastIndex=0,!Et.test(e)&&!Rt.test(e))return e;const o=en(e,n);if(o.length===0)return"";let a=0;const l=[];for(const[d,p]of o.entries()){const b=a,f=a+p.visibleLength;if(f>t&&b<r){const g=Math.max(0,t-b),m=Math.min(p.visibleLength,r-b);l.push({end:m,index:d,segment:p,start:g})}a=f}if(l.length===0)return"";const c=[],h=l[0].segment;c.push(h.before);for(let d=0;d<l.length;d++){const{end:p,segment:b,start:f}=l[d];if(f===0&&p===b.visibleLength)c.push(b.content);else{const g=[...n.segmenter.segment(b.content)];c.push(g.slice(f,p).map(m=>m.segment).join(""))}if(d<l.length-1){const g=l[d+1].segment,m=b.after,u=g.before;m!==u&&(m||u)&&c.push(m,u)}}return c.push(l.at(-1).segment.after),c.join("")},"slice");var rn=Object.defineProperty,nn=S((e,t)=>rn(e,"name",{value:t,configurable:!0}),"x"),on=Object.defineProperty,sn=nn((e,t)=>on(e,"name",{value:t,configurable:!0}),"T"),an=Object.defineProperty,Ye=sn((e,t)=>an(e,"name",{value:t,configurable:!0}),"f");const Mt="…",ln=3,je=Ye((e,t,r=!1)=>{if(e.charAt(t)===" ")return t;const i=r?1:-1,n=Math.min(ln,r?e.length-t:t);for(let s=1;s<=n;s++){const o=t+s*i;if(e.charAt(o)===" ")return o}return t},"findNearestSpace"),Ce=Ye((e,t,r)=>he(e,{...r,ellipsis:"",ellipsisWidth:0,limit:t}).index,"widthToIndex"),Ee=Ye((e,t,r)=>I(e.slice(0,t),r),"indexToWidth"),Tt=Ye((e,t,r={})=>{if(typeof e!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof e}`);if(typeof t!="number")throw new TypeError(`Expected \`limit\` to be a number, got ${typeof t}`);if(e===""||t<=0)return"";const i=e.normalize("NFC"),{ellipsis:n=Mt,position:s="end",preferTruncationOnSpace:o=!1}=r;let a=r.ellipsisWidth??n===Mt?1:void 0;a??=he(n,{...r.width,ellipsis:"",ellipsisWidth:0,limit:Number.POSITIVE_INFINITY}).width;const{width:l}=he(i,{...r.width,ellipsis:n,ellipsisWidth:a});if(l<=t)return i;switch(s){case"end":{if(o){const c=t-a,h=Ce(i,c,r.width),d=je(i,h),p=Ee(i,d,r.width);return z(i,0,p,{width:r.width})+n}return z(i,0,t-a,{width:r.width})+n}case"middle":{const c=Math.floor(t/2),h=Math.max(0,t-a),d=Math.min(c,h),p=Math.max(0,h-d);if(o){const b=Ce(i,d,r.width),f=je(i,b),g=Ee(i,f,r.width),m=l-p,u=Ce(i,m,r.width),x=je(i,u,!0),w=Ee(i,x,r.width);return z(i,0,g,{width:r.width})+n+z(i,w,l,{width:r.width}).trim()}return z(i,0,d,{width:r.width})+n+z(i,l-p,l,{width:r.width})}case"start":{if(o){const c=l-t+a,h=Ce(i,c,r.width),d=je(i,h,!0),p=Ee(i,d,r.width);return n+z(i,p,l,{width:r.width}).trim()}return n+z(i,l-t+a,l,{width:r.width})}default:throw new Error(`Invalid position: expected 'start', 'middle' or 'end', got '${s}'`)}},"truncate");var cn=Object.defineProperty,hr=S((e,t)=>cn(e,"name",{value:t,configurable:!0}),"b$2"),hn=Object.defineProperty,ne=hr((e,t)=>hn(e,"name",{value:t,configurable:!0}),"d"),dn=Object.defineProperty,un=ne((e,t)=>dn(e,"name",{value:t,configurable:!0}),"a");const fn=/\x1B\[(\d+)m/;class dr{static{A(this,"me")}static{J(this,"dt")}static{S(this,"T")}static{hr(this,"T")}static{ne(this,"d")}static{un(this,"AnsiStateTracker")}activeForeground=void 0;activeBackground=void 0;activeFormatting=[];processEscape(t){const r=fn.exec(t);if(!r)return;const i=Number.parseInt(r[1],10);switch(i){case 0:{this.activeForeground=void 0,this.activeBackground=void 0,this.activeFormatting=[];break}case 39:{this.activeForeground=void 0;break}case 49:{this.activeBackground=void 0;break}default:if(i>=30&&i<=37||i>=90&&i<=97)this.activeForeground=t;else if(i>=40&&i<=47||i>=100&&i<=107)this.activeBackground=t;else if([1,2,3,4,7,8,9].includes(i))this.activeFormatting.push(t);else if([22,23,24,27,28,29].includes(i)){const n={22:"[1m",23:"[3m",24:"[4m",27:"[7m",28:"[8m",29:"[9m"}[i];n&&(this.activeFormatting=this.activeFormatting.filter(s=>!s.includes(n)))}}}getStartEscapesForAllActiveAttributes(){return[this.activeBackground,this.activeForeground,...this.activeFormatting].filter(Boolean).join("")}getEndEscapesForAllActiveAttributes(){const t=[];if(this.activeFormatting.length>0){const r={"\x1B[1m":"\x1B[22m","\x1B[2m":"\x1B[22m","\x1B[3m":"\x1B[23m","\x1B[4m":"\x1B[24m","\x1B[7m":"\x1B[27m","\x1B[8m":"\x1B[28m","\x1B[9m":"\x1B[29m"};[...this.activeFormatting].toReversed().forEach(i=>{const n=r[i];n&&t.push(n)})}return this.activeForeground&&t.push("\x1B[39m"),this.activeBackground&&t.push("\x1B[49m"),t.join("")}}var pn=Object.defineProperty,ur=ne((e,t)=>pn(e,"name",{value:t,configurable:!0}),"o");const fr=ur((e,t)=>{if(!fe.has(e[t]))return{isInsideEscape:!1,isInsideLinkEscape:!1};const r=!0,i=e.slice(t+1,t+1+Le.length).join("")===Le;return{isInsideEscape:r,isInsideLinkEscape:i}},"checkEscapeSequence"),mn=ur((e,t={})=>{const r=new dr;let i="",n=!1,s="",o="",a=!1;const l=[...e];for(let c=0;c<l.length;c++){const h=l[c];if(h&&fe.has(h)){if(i){const g=t.getWidth?.(i)??0,m={isEscapeSequence:!1,isGrapheme:!0,text:i,width:g};if(a&&(m.isHyperlink=!0,m.hyperlinkUrl=o),t.onSegment?.(m,r)===!1)return;i=""}n=!0,s=h;const b=fr(l,c),{isInsideLinkEscape:f}=b;if(f){let g=c+1;for(o="";g<l.length;){const u=l[g];if(u===De)break;o+=u,g+=1}o=o.slice(4);const m={hyperlinkUrl:o,isEscapeSequence:!0,isGrapheme:!1,isHyperlink:!0,isHyperlinkStart:!0,width:0};if(t.onSegment?.(m,r)===!1)return;c=g,a=!0,n=!1,s="";continue}if(c+1<l.length&&l[c+1]==="\\"&&a){const g={isEscapeSequence:!0,isGrapheme:!1,isHyperlink:!0,isHyperlinkEnd:!0,width:0};if(t.onSegment?.(g,r)===!1)return;a=!1,o="",c+=1,n=!1,s="";continue}}if(n){if(s!==h&&(s+=h),h===Bt){n=!1,r.processEscape(s);const b={isEscapeSequence:!0,isGrapheme:!1,text:s,width:0};if(t.onSegment?.(b,r)===!1)return;s=""}continue}i+=h;const d=t.getWidth?.(i)??0,p={isEscapeSequence:!1,isGrapheme:!0,text:i,width:d};if(a&&(p.isHyperlink=!0,p.hyperlinkUrl=o),t.onSegment?.(p,r)===!1)return;i=""}if(i){const c=t.getWidth?.(i)??0,h={isEscapeSequence:!1,isGrapheme:!0,text:i,width:c};a&&(h.isHyperlink=!0,h.hyperlinkUrl=o),t.onSegment?.(h,r)}if(s){const c={isEscapeSequence:!0,isGrapheme:!1,text:s,width:0};t.onSegment?.(c,r)}},"processAnsiString");var gn=Object.defineProperty,bn=ne((e,t)=>gn(e,"name",{value:t,configurable:!0}),"t$1");const Ft=bn(e=>`${fe.values().next().value}${ar}${String(e)}${Bt}`,"wrapAnsiCode");var wn=Object.defineProperty,yn=ne((e,t)=>wn(e,"name",{value:t,configurable:!0}),"s");const Lt=yn(e=>`${fe.values().next().value}${Le}${e}${De}`,"wrapAnsiHyperlink");var vn=Object.defineProperty,xn=ne((e,t)=>vn(e,"name",{value:t,configurable:!0}),"l");const $n=xn(e=>{if(e.length===0)return"";if(e.length===1)return e[0];let t="",r,i;const n=e.join(`
2
+ `),s=[...n];let o=0;for(const[a,l]of s.entries()){if(t+=l,fe.has(l)){const h=Wi.exec(n.slice(o))?.groups??{};if(h.code!==void 0){const d=Number.parseFloat(h.code);r=d===$i?void 0:d}else h.uri!==void 0&&(i=h.uri.length===0?void 0:h.uri)}const c=Si.get(Number(r));s[a+1]===`
3
+ `?(i&&(t+=Lt("")),r&&c&&(t+=Ft(c))):l===`
4
+ `&&(r&&c&&(t+=Ft(r)),i&&(t+=Lt(i))),o+=l.length}return t},"preserveAnsi");var Bn=Object.defineProperty,Y=ne((e,t)=>Bn(e,"name",{value:t,configurable:!0}),"f");const pr=/(?=\s)|(?<=\s)/,mr=/^\s+$/,nt=Y(e=>{if(!e.includes("\x1B"))return e;let t=e;return e.includes("\x1B[30m")&&(t+="\x1B[39m"),e.includes("\x1B[42m")&&(t+="\x1B[49m"),t},"resetAnsiAtLineBreak"),Q=Y(e=>{const t=e.split(" ");let r=t.length;for(;r>0&&I(t[r-1])===0;)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},"stringVisibleTrimSpacesRight"),gr=Y((e,t,r)=>{if(e.length===0)return[""];if(t<=0)return[e];const i=[],n=new dr;let s="",o=0,a=!1,l=!1,c="",h=0;for(;h<e.length;){const d=e[h];if(fe.has(d)){a=!0,c=d,s+=d,l=fr([...e],h).isInsideLinkEscape,h+=1;continue}if(a){c+=d,s+=d,l?d===De&&(a=l=!1):d===Bt&&(a=!1,n.processEscape(c)),h+=1;continue}const p=I(d),b=d===" ";if(p===0){s+=d,h+=1;continue}if(o+p>t&&(s&&i.push(s+n.getEndEscapesForAllActiveAttributes()),s=n.getStartEscapesForAllActiveAttributes(),o=I(s),b&&r)){for(;h<e.length&&e[h]===" ";)h+=1;continue}if(s+=d,o+=p,o===t&&h<e.length-1&&(i.push(s+n.getEndEscapesForAllActiveAttributes()),s=n.getStartEscapesForAllActiveAttributes(),o=I(s),h+1<e.length&&e[h+1]===" "&&r)){for(h+=1;h<e.length&&e[h]===" ";)h+=1;continue}h+=1}return s&&i.push(s+n.getEndEscapesForAllActiveAttributes()),r?i.map(d=>Q(d)):i},"wrapWithBreakAtWidth"),Wn=Y((e,t,r)=>{if(e.length===0)return[];const i=r?e.trim():e;if(i.length===0)return[];const n=[];let s="",o=0;return mn(i,{getWidth:I,onSegment:Y((a,l)=>{const c=a.text??"";if(a.isEscapeSequence)s+=c;else{const h=c===" ";if(a.width===0)return s+=c,!0;if(o+a.width>t&&(s&&n.push(s),s=l.getStartEscapesForAllActiveAttributes(),o=0,h))return r||n.push(l.getStartEscapesForAllActiveAttributes()+c),!0;s+=c,o+=a.width}return!0},"onSegment")}),s&&n.push(s),r?n.map(a=>Q(a)):n},"wrapCharByChar"),Sn=Y((e,t,r)=>{if(e.length===0)return[];const i=r?e.trim():e;if(i.length===0)return[];const n=i.split(pr),s=[];let o="",a=0,l=0;for(;l<n.length;){const c=n[l],h=mr.test(c),d=I(c);if(c.length===0){l+=1;continue}if(r&&h&&a===0){l+=1;continue}if(a+d>t&&a>0){r?s.push(Q(o)):s.push(o),o="",a=0;continue}o+=c,a+=d,l+=1}return o&&(r?s.push(Q(o)):s.push(o)),s},"wrapWithWordBoundaries"),On=Y((e,t,r)=>{if(e.length===0)return[];const i=r?e.trim():e;if(i.length===0)return[];const n=i.split(pr),s=[];let o="",a=0,l=0;for(;l<n.length;){const c=n[l],h=mr.test(c),d=I(c);if(c.length===0){l+=1;continue}if(r&&h&&a===0){l+=1;continue}if(d>t){o&&s.push(nt(r?Q(o):o));const p=gr(c,t,r);if(p.length>0){for(let b=0;b<p.length-1;b+=1)s.push(p[b]);o=p.at(-1),a=I(o)}else o="",a=0;l+=1;continue}if(a+d>t&&a>0&&(s.push(nt(r?Q(o):o)),o="",a=0,r&&h)){l+=1;continue}o+=c,a+=d,l+=1}return o&&s.push(nt(r?Q(o):o)),s},"wrapAndBreakWords"),Re={BREAK_AT_CHARACTERS:"BREAK_AT_CHARACTERS",BREAK_WORDS:"BREAK_WORDS",PRESERVE_WORDS:"PRESERVE_WORDS",STRICT_WIDTH:"STRICT_WIDTH"},An=Y((e,t={})=>{const{removeZeroWidthCharacters:r=!0,trim:i=!0,width:n=80,wrapMode:s=Re.PRESERVE_WORDS}=t;if(i&&e.trim()==="")return"";let o=e.normalize("NFC").replaceAll(`\r
5
+ `,`
6
+ `);return r&&(o=o.replaceAll(Bi,"")),o.split(`
7
+ `).map(a=>{if(i&&a.trim()==="")return"";let l;switch(s){case Re.BREAK_AT_CHARACTERS:{l=Wn(a,n,i);break}case Re.BREAK_WORDS:{l=On(a,n,i);break}case Re.STRICT_WIDTH:{l=gr(a,n,i);break}default:l=Sn(a,n,i)}return $n(l)}).join(`
8
+ `)},"wordWrap");var jn=Object.defineProperty,K=S((e,t)=>jn(e,"name",{value:t,configurable:!0}),"n$3");const br=80,wr=24,st=K((e,t,{shell:r,env:i}={})=>Vr(e,t,{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:500,shell:r,env:i}).trim(),"exec"),Ne=K((e,t)=>({columns:Number.parseInt(e,10),rows:Number.parseInt(t,10)}),"create"),yr=K((e,t)=>{const{columns:r,rows:i}=Ne(e,t);if(!(Number.isNaN(r)||Number.isNaN(i))&&!(r===br&&i===wr))return{columns:r,rows:i}},"createIfNotDefault"),Cn=K(()=>{if(X.platform!=="linux")return!0;try{const e=ve.readFileSync("/proc/self/stat","utf8"),t=e.lastIndexOf(") ");if(t===-1)return!1;const r=e.slice(t+2).trim().split(/\s+/),i=Number.parseInt(r[2],10),n=Number.parseInt(r[5],10);return Number.isNaN(i)||Number.isNaN(n)||n<=0?!1:i===n}catch{return!1}},"isForegroundProcess");function Ke(){const{env:e,stdout:t,stderr:r}=X;if(t?.columns&&t?.rows)return Ne(t.columns,t.rows);if(r?.columns&&r?.rows)return Ne(r.columns,r.rows);if(e.COLUMNS&&e.LINES)return Ne(e.COLUMNS,e.LINES);const i={columns:br,rows:wr};return X.platform==="win32"?ot()??i:X.platform==="darwin"?_t()??ot()??i:_t()??ot()??En()??i}A(Ke,"Gt");J(Ke,"yt");S(Ke,"O");K(Ke,"terminalSize");const _t=K(()=>{try{const e=X.platform==="darwin"?ve.constants.O_EVTONLY|ve.constants.O_NONBLOCK:ve.constants.O_NONBLOCK,{columns:t,rows:r}=qr.WriteStream(ve.openSync("/dev/tty",e));return{columns:t,rows:r}}catch{}},"devTty"),ot=K(()=>{try{const e=st("tput",["cols"],{env:{TERM:"dumb",...X.env}}),t=st("tput",["lines"],{env:{TERM:"dumb",...X.env}});if(e&&t)return yr(e,t)}catch{}},"tput"),En=K(()=>{try{if(!Cn())return;const e=st("resize",["-u"]).match(/\d+/g);if(e.length===2)return yr(e[0],e[1])}catch{}},"resize");var Rn=Object.defineProperty,vr=S((e,t)=>Rn(e,"name",{value:t,configurable:!0}),"e");const se=vr((e,t)=>{switch(t){case"bottom":return{body:e.bottomBody,join:e.bottomJoin,left:e.bottomLeft,right:e.bottomRight};case"middle":return{body:e.joinBody,join:e.joinJoin,left:e.joinLeft,right:e.joinRight};case"top":return{body:e.topBody,join:e.topJoin,left:e.topLeft,right:e.topRight};default:throw new Error(`Invalid borderType: ${String(t)}`)}},"getHorizontalBorderChars"),In=vr(e=>({join:e.bodyJoin,left:e.bodyLeft,right:e.bodyRight}),"getVerticalBorderChars");var kn=Object.defineProperty,Nn=S((e,t)=>kn(e,"name",{value:t,configurable:!0}),"n$1");const _e=Nn((e,t,r)=>{let i=0;for(let n=0;n<r;n+=1)i+=e[t+n]??0;return r>1&&(i+=r-1),i},"calculateCellTotalWidth");var Pn=Object.defineProperty,Mn=S((e,t)=>Pn(e,"name",{value:t,configurable:!0}),"a");const at=Mn((e,t,r,i)=>{let n=t;for(;n>0&&e[n-1]?.[r]===i;)n-=1;let s=t;for(;s<e.length-1&&e[s+1]?.[r]===i;)s+=1;let o;const a=s-n+1;if(a===1)o=!0;else switch(i.vAlign){case"bottom":{o=t===s;break}case"middle":{const l=n+Math.floor(a/2);o=t===l;break}case"top":{o=t===n;break}default:o=t===n}return{firstRow:n,lastRow:s,showContent:o}},"determineCellVerticalPosition");var Tn=Object.defineProperty,Fn=S((e,t)=>Tn(e,"name",{value:t,configurable:!0}),"F");const Ln=Fn((e,t,r,i,n)=>{if(e.length===0)return[];let s=e.length-1;for(let l=0;l<e.length;l+=1){const c=e[l];if(c){for(const[h,d]of c.entries())if(d&&n(e,l,h,d)===l){const p=at(e,l,h,d);s=Math.max(s,p.lastRow)}}}const o=Array.from({length:s+1}).fill(1);for(let l=0;l<e.length;l+=1){const c=e[l];if(c)for(let h=0;h<r.columns;h+=1){const d=c[h];if(d&&n(e,l,h,d)===l&&(d.rowSpan??1)===1){const p=d.colSpan??1,b=_e(t,h,p),f=i(d,b).length;o[l]=Math.max(o[l]??1,f)}}}const a=Array.from({length:o.length}).fill(!1);if(r.fixedRowHeights)for(let l=0;l<o.length;l+=1){let c;r.fixedRowHeights[l]!==void 0?c=r.fixedRowHeights[l]:r.fixedRowHeights.length===1&&r.fixedRowHeights[0]!==void 0&&(c=r.fixedRowHeights[0]),c!==void 0&&(o[l]=Math.max(1,c),a[l]=!0)}for(let l=0;l<e.length;l+=1){const c=e[l];if(c)for(let h=0;h<r.columns;h+=1){const d=c[h];if(d&&n(e,l,h,d)===l&&(d.rowSpan??1)>1){const p=d.colSpan??1,b=_e(t,h,p),f=i(d,b).length-1,g=at(e,l,h,d),{firstRow:m,lastRow:u}=g;let x=0,w=0;for(let $=m;$<=u&&$<o.length;$+=1)x+=o[$]??1,a[$]||(w+=1);const v=f-x;if(v>0)if(w>0){const $=Math.ceil(v/w);let B=0;for(let O=m;O<=u&&O<o.length;O+=1)if(!a[O]){const j=Math.min($,v-B);if(o[O]=(o[O]??1)+j,B+=j,B>=v)break}}else console.warn(`[calculateRowHeights] Content of spanning cell exceeds fixed height allocated. Cell: ${JSON.stringify(d.content)}, Required: ${String(f)}, Allocated: ${String(x)} (fixed).`)}}}return o},"calculateRowHeights");var _n=Object.defineProperty,Hn=S((e,t)=>_n(e,"name",{value:t,configurable:!0}),"i");const ae=Hn((e,t,r,i)=>{let n=t;for(;n>0&&e[n-1]?.[r]===i;)n-=1;return n},"findFirstOccurrenceRow");var Gn=Object.defineProperty,Jn=S((e,t)=>Gn(e,"name",{value:t,configurable:!0}),"n");const lt="__EMPTY__",Ht=Jn(e=>{if(typeof e=="string")return{content:e};if(typeof e=="number"||typeof e=="bigint"||typeof e=="boolean")return{content:String(e)};if(e==null)return{content:lt};if(typeof e=="object"&&"content"in e){let{content:t}=e;if(typeof t=="number"||typeof t=="bigint"||typeof t=="boolean")t=String(t);else if(t==null)t=lt;else if(typeof t!="string")throw new TypeError(`Invalid item type in grid cell: expected string, number, null, undefined, or GridItem object, but received ${JSON.stringify(e)} (type: ${typeof e})`);return{...e,content:t}}throw new TypeError(`Invalid item type in grid cell: expected string, number, null, undefined, or GridItem object, but received ${JSON.stringify(e)} (type: ${typeof e})`)},"normalizeGridCell");var Vn=Object.defineProperty,qn=S((e,t)=>Vn(e,"name",{value:t,configurable:!0}),"p");const zn=qn((e,t,r,i,n)=>{const s=I(e),o=" ".repeat(Math.max(0,i)),a=" ".repeat(Math.max(0,n));if(s===0)return o+" ".repeat(Math.max(0,t))+a;const l=Math.max(0,t-s);switch(r){case"center":{const c=Math.floor(l/2),h=l-c;return o+" ".repeat(c)+e+" ".repeat(h)+a}case"right":return o+" ".repeat(l)+e+a;default:return o+e+" ".repeat(l)+a}},"padAndAlignContent");var Dn=Object.defineProperty,Wt=S((e,t)=>Dn(e,"name",{value:t,configurable:!0}),"H");const be=/\r?\n/,Gt=/\s+/,W=Wt((e,t)=>!e||!t?e:typeof t=="function"?t(e):t.open+e+t.close,"applyColor");class Ze{static{A(this,"Ct")}static{J(this,"He")}static{S(this,"Grid")}static{Wt(this,"Grid")}#e;#n=[];#t;#o=new WeakMap;#r=new WeakMap;static createGridLayout(){return[]}constructor(t){const r={autoColumns:1,autoFlow:"row",autoRows:1,balancedWidths:!1,gap:0,paddingLeft:1,paddingRight:1,rows:0,showBorders:t.border!==void 0,truncate:!1,truncateOverflow:!0,wordWrap:!1};let i;Array.isArray(t.fixedRowHeights)?i=t.fixedRowHeights:typeof t.fixedRowHeights=="number"&&(i=[t.fixedRowHeights]),this.#e={...r,...t,columns:t.columns,fixedRowHeights:i,showBorders:t.border!==void 0||(t.showBorders??!1)};let{terminalWidth:n}=this.#e;if(n===void 0){const{columns:s}=Ke();n=s}this.#t=n,this.#e.maxWidth&&(this.#e.maxWidth=Math.min(this.#e.maxWidth,this.#t))}addItem(t){return this.#n.push(Ht(t)),this}addItems(t){return this.#n.push(...t.map(r=>Ht(r))),this}setColumns(t){return this.#e.columns=t,this}setRows(t){return this.#e.rows=t,this}setBorder(t){return this.#e.border=t,this}setShowBorders(t){return this.#e.showBorders=t,this}setMaxWidth(t){return this.#e.maxWidth=t,this}toString(){const t=Ze.createGridLayout();if(this.placeItems(t),t.length===0||t[0]?.length===0)return"";let r=this.calculateColumnWidths(t);const i=this.calculateTotalGridWidth(r),n=typeof this.#e.maxWidth=="number"&&this.#e.maxWidth>0?Math.min(this.#e.maxWidth,this.#t):this.#t;return i>n&&(r=this.adjustColumnWidthsForTerminal(r,i)),this.renderGrid(t,r)}placeItems(t){let r=0,i=0;const n=this.#e.rows>0?this.#e.rows:Number.POSITIVE_INFINITY;for(let s=0;s<this.#n.length;s+=1){const o=this.#n[s];if(o.content===lt&&!(o.rowSpan&&o.rowSpan>1)&&!(o.colSpan&&o.colSpan>1)){if(this.#e.autoFlow==="row")i+=1,i>=this.#e.columns&&(i=0,r+=1);else{r+=1;const f=t.length>0?t.length:n;r>=f&&f!==Number.POSITIVE_INFINITY?(r=0,i+=1):t.length===0&&f===Number.POSITIVE_INFINITY&&(i+=1)}continue}const a=o.colSpan??1,l=o.rowSpan??1;let c=!1,h=r,d=i,p=0;const b=(t.length+l+5)*this.#e.columns;for(;!c&&h<n&&p<b;){for(p+=1;h+l>t.length;)t.push(Array.from({length:this.#e.columns}).fill(void 0));if(this.canPlaceItem(t,h,d,a,l))if(this.placeItem(t,h,d,o),c=!0,this.#e.autoFlow==="row")i=d+a,r=h,i>=this.#e.columns&&(i=0,r+=1);else{r=h+l,i=d;const f=t.length>0?t.length:n;r>=f&&(r=0,i+=1)}else if(this.#e.autoFlow==="row")d+=1,d>=this.#e.columns&&(d=0,h+=1);else{for(h+=1;h+l>t.length;)t.push(Array.from({length:this.#e.columns}).fill(void 0));const f=t.length>0?t.length:n;if(h>=f&&(h=0,d+=1,d>=this.#e.columns))break}}if(!c)if(console.warn(`@visulima/tabular: Could not find position for item: ${JSON.stringify(o)} after ${String(p)} attempts. Grid might be too small or layout impossible.`),this.#e.autoFlow==="row")i+=1,i>=this.#e.columns&&(i=0,r+=1);else{r+=1;const f=t.length>0?t.length:n;r>=f&&(r=0,i+=1)}if(p>=b)break}if(this.#e.rows===0)for(;t.length>0&&t.at(-1)?.every(s=>s===void 0);)t.pop()}canPlaceItem(t,r,i,n,s,o=!1){if(i+n>this.#e.columns)return!1;for(let a=r;a<r+s;a+=1)if(a<t.length){if(!t[a])return console.warn(`Grid layout unexpectedly missing row ${String(a)} during canPlaceItem check.`),!1;for(let l=i;l<i+n;l+=1)if(t[a]?.[l]!==void 0)return!1}else if(!o)return!1;return!0}computeWrappedContentWidth(t,r,i,n){let s=t;if(n){if(s>20){let o=0;for(const a of r){const l=a.split(Gt);for(const c of l)o=Math.max(o,Math.min(I(c),i))}s=Math.min(s,Math.max(o+4,12))}}else{let o=0;for(const a of r){const l=a.split(Gt);for(const c of l)o=Math.max(o,Math.min(I(c),i))}s=Math.min(s,Math.max(o+12,20))}return s}placeItem(t,r,i,n){const s=n.rowSpan??1,o=n.colSpan??1;for(let a=r;a<r+s;a+=1){for(;a>=t.length;)t.push(Array.from({length:this.#e.columns}).fill(void 0));for(let l=i;l<i+o;l+=1)l<this.#e.columns&&(t[a]||(console.error(`Logic error: Row ${String(a)} not found in placeItem despite check.`),t[a]=Array.from({length:this.#e.columns}).fill(void 0)),t[a][l]=n)}}calculateTotalGridWidth(t){let r=0;const i=this.#e.showBorders?this.#e.border:void 0;i&&(r+=i.bodyLeft.width,r+=i.bodyRight.width);const n=t.length,s=this.#e.showBorders?i?.bodyJoin.width??0:0,o=this.#e.gap;for(let a=0;a<n;a+=1)r+=t[a]??0,a<n-1&&(r+=o,r+=s);return r}adjustColumnWidthsForTerminal(t,r){const i=typeof this.#e.maxWidth=="number"&&this.#e.maxWidth>0?Math.min(this.#e.maxWidth??0,this.#t):this.#t;if(r<=i)return t;let n=0;const s=t.length,o=this.#e.showBorders?this.#e.border:void 0;if(o&&(n+=o.bodyLeft.width,n+=o.bodyRight.width),s>1){n+=(s-1)*this.#e.gap;const d=o?.bodyJoin.width??0;n+=(s-1)*d}if(n>=i)return Array.from({length:s}).fill(1);const a=i-n,l=t.reduce((d,p)=>d+p,0);if(l===0){const d=Math.floor(a/s);return Array.from({length:s}).fill(d)}const c=t.map(d=>{const p=d/l;return Math.max(1,Math.floor(a*p))});let h=a-c.reduce((d,p)=>d+p,0);if(h>0){const d=c.map((p,b)=>{const f=l>0?(t[b]??0)/l:1/s;return{index:b,remainder:a*f%1}}).toSorted((p,b)=>b.remainder-p.remainder);for(const p of d){if(h<=0)break;const{index:b}=p;c[b]!==void 0&&(c[b]+=1,h-=1)}}return c}calculateBalancedColumnWidths(t){const r=this.calculateMinimumColumnWidthsWithGrowableInfo(t),i=r.widths,{growableColumns:n}=r,s=typeof this.#e.maxWidth=="number"&&this.#e.maxWidth>0?Math.min(this.#e.maxWidth,this.#t):this.#t,o=this.#e.showBorders?this.#e.border:void 0;let a=0;if(o&&(a+=o.bodyLeft.width,a+=o.bodyRight.width),this.#e.columns>1){a+=(this.#e.columns-1)*this.#e.gap;const h=o?.bodyJoin.width??0;a+=(this.#e.columns-1)*h}const l=Math.max(0,s-a);if(i.reduce((h,d)=>h+d,0)>0){const h=Math.floor(l/this.#e.columns),d=Array.from({length:this.#e.columns}).fill(h),p=h*this.#e.columns;let b=l-p;for(let u=0;u<d.length&&b>0;u+=1)d[u]=(d[u]??0)+1,b-=1;const f=[];let g=0;for(let u=0;u<this.#e.columns;u+=1){const x=d[u]??0,w=i[u]??0,v=Math.max(x,w);f.push(v),g+=v}if(g>l){const u=l/g,x=f.map($=>Math.max(3,Math.floor($*u))),w=x.reduce(($,B)=>$+B,0);let v=l-w;for(let $=0;$<x.length&&v>0;$+=1)x[$]=(x[$]??0)+1,v-=1;return x}let m=l-g;if(m>0){const u=n.length>0?n:f.map((x,w)=>w);for(;m>0&&u.length>0;)for(const x of u){if(m<=0)break;f[x]=(f[x]??0)+1,m-=1}}return f}const c=Math.floor(l/this.#e.columns);return Array.from({length:this.#e.columns}).fill(c)}calculateMinimumColumnWidthsWithGrowableInfo(t){const r=Array.from({length:this.#e.columns}).fill(0),i=[],n=this.#e.paddingLeft+this.#e.paddingRight,s=this.#e.gap+(this.#e.showBorders?this.#e.border?.bodyJoin.width??0:0);for(let o=0;o<this.#e.columns;o+=1)for(let a=0;a<t.length;a+=1){const l=t[a]?.[o];if(!l||ae(t,a,o,l)!==a||o>0&&t[a]?.[o-1]===l)continue;const c=l.colSpan??1,h=l.maxWidth??Number.POSITIVE_INFINITY,d=String(l.content??"").split(be),p=this.#e.wordWrap&&l.wordWrap!==!1;let b=0;for(const f of d)b=Math.max(b,Math.min(I(f),h));b=this.computeWrappedContentWidth(b,d,h,p),c===1&&(r[o]=Math.max(r[o]??0,b+n),p&&!i.includes(o)&&i.push(o))}for(let o=0;o<t.length;o+=1)for(let a=0;a<this.#e.columns;a+=1){const l=t[o]?.[a];if(!l||ae(t,o,a,l)!==o||a>0&&t[o]?.[a-1]===l)continue;const c=l.colSpan??1;if(c>1){const h=l.maxWidth??Number.POSITIVE_INFINITY,d=String(l.content??"").split(be),p=this.#e.wordWrap&&l.wordWrap!==!1;let b=0;for(const u of d)b=Math.max(b,Math.min(I(u),h));b=this.computeWrappedContentWidth(b,d,h,p);const f=(c-1)*s,g=b+n+f;let m=0;for(let u=a;u<a+c;u+=1)m+=r[u]??0;if(g>m){const u=g-m,x=Math.ceil(u/c);for(let w=0;w<c&&a+w<this.#e.columns;w+=1)r[a+w]=Math.max(r[a+w]??0,x)}}}return{growableColumns:i,widths:r}}calculateColumnWidths(t){if(this.#e.fixedColumnWidths&&this.#e.fixedColumnWidths.length===this.#e.columns){const s=this.#e.fixedColumnWidths;if(!s.some(o=>o===void 0||!Number.isFinite(o)))return[...s];if(this.#e.balancedWidths){const o=Array.from({length:s.length}).fill(0),a=typeof this.#e.maxWidth=="number"&&this.#e.maxWidth>0?Math.min(this.#e.maxWidth,this.#t):this.#t,l=this.calculateTotalGridWidth(Array.from({length:o.length}).fill(0)),c=Math.max(0,a-l);let h=0;const d=[];for(const[f,g]of s.entries())typeof g=="number"&&Number.isFinite(g)?(o[f]=g,h+=g):d.push(f);let p=Math.max(0,c-h);const b=d.length>0?Math.floor(p/d.length):0;for(const f of d)o[f]=b;p-=b*d.length;for(const f of d){if(p<=0)break;o[f]+=1,p-=1}return o}}if(this.#e.balancedWidths)return this.calculateBalancedColumnWidths(t);const r=Array.from({length:this.#e.columns}).fill(0),i=this.#e.paddingLeft+this.#e.paddingRight,n=this.#e.gap+(this.#e.showBorders?this.#e.border?.bodyJoin.width??0:0);for(let s=0;s<this.#e.columns;s+=1)for(let o=0;o<t.length;o+=1){const a=t[o]?.[s];if(!a||ae(t,o,s,a)!==o||s>0&&t[o]?.[s-1]===a)continue;const l=a.colSpan??1,c=a.maxWidth??Number.POSITIVE_INFINITY,h=String(a.content??"").split(be);let d=0;for(const p of h)d=Math.max(d,Math.min(I(p),c));l===1&&(r[s]=Math.max(r[s]??0,d+i))}for(let s=0;s<t.length;s+=1)for(let o=0;o<this.#e.columns;o+=1){const a=t[s]?.[o];if(!a||ae(t,s,o,a)!==s||o>0&&t[s]?.[o-1]===a)continue;const l=a.colSpan??1;if(l>1){const c=a.maxWidth??Number.POSITIVE_INFINITY,h=String(a.content??"").split(be),d=this.#e.wordWrap&&a.wordWrap!==!1;let p=0;for(const u of h)p=Math.max(p,Math.min(I(u),c));p=this.computeWrappedContentWidth(p,h,c,d);let b=0;for(let u=o;u<o+l;u+=1)b+=r[u]??0;const f=l>1?(l-1)*n:0,g=p+i+f,m=b+f;if(g>m){const u=g-m,x=Math.floor(u/l);let w=0;for(let v=0;v<l&&o+v<this.#e.columns;v+=1){const $=Math.min(x,u-w);if(r[o+v]=(r[o+v]??0)+$,w+=$,w>=u)break}}}}if(this.#e.maxWidth){const s=this.calculateTotalGridWidth(r);if(s>this.#e.maxWidth)return this.adjustColumnWidthsForTerminal(r,s)}return r}renderVisualRowContent(t,r,i,n,s){const o=t[r];if(!o)return"";const a=this.#e.borderColor??this.#e.foregroundColor??void 0,l=[],c=this.#e.showBorders&&this.#e.border?In(this.#e.border):void 0,h=c&&c.left.width>0?c.left.char:"",d=c&&c.right.width>0?c.right.char:"",p=c&&c.join.width>0?c.join.char:"",b=" ".repeat(this.#e.gap);h&&l.push(W(W(h,a),this.#e.backgroundColor));let f=0;for(;f<this.#e.columns;){const g=o[f]??void 0;let m=1,u;if(g){const x=g.colSpan??1;m=x;const w=ae(t,r,f,g),v=_e(n,f,x),$=this.alignCellContent(g,v),B=$.length,O=this.getCachedCellVerticalPosition(t,r,f,g);O.firstRow!==w&&console.warn(`Mismatch between findFirstOccurrenceRow (${String(w)}) and determineCellVerticalPosition (${String(O.firstRow)})`);const j=s.slice(w,O.lastRow+1).reduce((C,L)=>C+L,0),k=O.lastRow-O.firstRow+1;let T=i,F=0;for(let C=w;C<r;C+=1)C<s.length&&(T+=s[C]??1),C<O.lastRow&&(F+=1);T+=F;const q=g.vAlign??"top";let H;switch(q){case"bottom":{let C=i;for(let _=w;_<r;_+=1)C+=s[_]??1;const L=j-B;H=C>=L?C-L:-1;break}case"middle":{const C=Math.round((j-B)/2);let L=i;for(let _=w;_<r;_+=1)L+=s[_]??1;H=L>=C&&L<C+B?L-C:-1;break}case"top":{H=T;break}default:H=T}const rt=H>=0&&H<B;if(u=" ".repeat(Math.max(0,v)),rt){let C=!1;q==="middle"&&k%2===0&&H===0&&(C=!0),C||(u=$[H]??u)}g.colSpan&&g.colSpan>1&&(u+=b.repeat(g.colSpan)),g.foregroundColor?u=W(u,g.foregroundColor):this.#e.foregroundColor&&(u=W(u,this.#e.foregroundColor)),g.backgroundColor?u=W(u,g.backgroundColor):this.#e.backgroundColor&&(u=W(u,this.#e.backgroundColor))}else{const x=this.#e.paddingLeft+this.#e.paddingRight,w=Math.max(0,(n[f]??0)-x),v=" ".repeat(this.#e.paddingLeft+w+this.#e.paddingRight);u=W(W(i===0?v:" ".repeat(v.length),this.#e.foregroundColor),this.#e.backgroundColor)}l.push(u),f+m<this.#e.columns&&(l.push(b),this.#e.showBorders&&p&&l.push(W(W(p,a),this.#e.backgroundColor)),this.#e.gap>0&&l.push(b)),f+=m}return d&&l.push(W(W(d,a),this.#e.backgroundColor)),l.join("")}alignCellContent(t,r){const i=this.#o.get(t);if(i?.has(r))return i.get(r);const{paddingLeft:n,paddingRight:s}=this.#e,o=n+s,a=r-o;if(a<=0){const d=[" ".repeat(o+this.#e.gap)];return i?i.set(r,d):this.#o.set(t,new Map([[r,d]])),d}let l;const c=String(t.content??"");if(l=c.includes(`
9
+ `)||c.includes("\r")?c.split(be):[c],this.#e.wordWrap&&t.wordWrap!==!1){const d=typeof this.#e.wordWrap=="object"?this.#e.wordWrap:{},p=typeof t.wordWrap=="object"?t.wordWrap:d;l=An(c,{...p,width:a}).split(`
10
+ `)}if(this.#e.truncate&&t.truncate!==!1){const d=typeof this.#e.truncate=="object"?this.#e.truncate:{},p=typeof t.truncate=="object"?t.truncate:d;l=l.map(b=>Tt(b,a,p))}else this.#e.truncateOverflow&&(l=l.map(d=>I(d)>a?Tt(d,a,{}):d));const h=l.map(d=>zn(d,a,t.hAlign??"left",n,s));return i?i.set(r,h):this.#o.set(t,new Map([[r,h]])),h}renderHorizontalBorder(t,r,i,n,s,o=-1){if(!this.#e.showBorders||!this.#e.border)return"";const a=this.#e.border,l=se(a,s),c=l.body.char,h=l.body.width,d=a.bodyJoin.char;if(s!=="middle"&&h===0)return"";let p=l.left.char,b=l.right.char;if(s==="middle"&&o!==-1){const u=t[i]?.[0]??void 0,x=t[o]?.[0]??void 0;u&&x&&u===x&&(p=d);const w=this.#e.columns-1,v=t[i]?.[w]??void 0,$=t[o]?.[w]??void 0;v&&$&&v===$&&(b=d)}const f=[],g=" ".repeat(this.#e.gap);p&&f.push(W(W(p,this.#e.borderColor),this.#e.backgroundColor));let m;for(let u=0;u<this.#e.columns;u+=1){const x=t[i]?.[u]??void 0,w=s==="middle"&&o!==-1?t[o]?.[u]??void 0:void 0;let v,$=!1;if(x&&(u===0||t[i]?.[u-1]!==x)&&(v=x,$=!0),x&&!$)continue;if(!x){const j=n[u]??0;if(m=h>0?c.repeat(j):" ".repeat(j),f.push(W(W(m,this.#e.borderColor),this.#e.backgroundColor)),u<this.#e.columns-1){const k=this.determineJoinChar(s,t,i,o,u,u+1);f.push(g),k.width>0&&f.push(W(W(k.char,this.#e.borderColor),this.#e.backgroundColor))}continue}const B=v?.colSpan??1;if(s==="middle"&&s==="middle"&&w&&x===w&&v){const j=v.vAlign==="middle",{firstRow:k,lastRow:T}=this.getCachedCellVerticalPosition(t,i,u,v),F=T-k+1,q=F%2===0,H=k+Math.ceil(F/2)-1,rt=_e(n,u,B),C=this.alignCellContent(v,rt),L=C.length;if(j&&q&&i===H)m=W(C[0]??"",this.#e.borderColor);else{let _=0;for(let oe=k;oe<=i;oe+=1)_+=r[oe]??1,oe<i&&(_+=1);const it=_;if(it>=0&&it<L)m=W(C[it]??"",this.#e.foregroundColor);else{const oe=n.slice(u,u+B).reduce((Ir,kr)=>Ir+kr,0)+(B-1)*(this.#e.gap+this.#e.border.bodyJoin.width);m=W(" ".repeat(oe),this.#e.borderColor)}}f.push(W(m,this.#e.backgroundColor))}else{const j=[];for(let k=u;k<u+B;k+=1){const T=n[k]??0,F=h>0?c:" ";if(j.push(F.repeat(T+this.#e.gap)),k<u+B-1){const q=this.determineJoinChar(s,t,i,o,k,k+1);q.width>0&&j.push(q.char)}}m=j.join(""),f.push(W(W(m,this.#e.borderColor),this.#e.backgroundColor))}const O=u+B-1;if(O<this.#e.columns-1){const j=this.determineJoinChar(s,t,i,o,O,O+1);j.width>0&&f.push(W(W(j.char,this.#e.borderColor),this.#e.backgroundColor))}u+=B-1}return b&&f.push(W(W(b,this.#e.borderColor),this.#e.backgroundColor)),f.join("")}determineJoinChar(t,r,i,n,s,o=-1){if(!this.#e.showBorders||!this.#e.border)return{char:" ",width:this.#e.gap};const a=this.#e.border;if(t!=="middle"){const $=se(a,t),B=r[i]?.[s]??void 0,O=o===-1?s+1:o,j=r[i]?.[O]??void 0,k=B!==void 0&&j!==void 0&&B===j?$.body:$.join,{char:T,width:F}=k;return{char:T,width:F>0?F:this.#e.gap}}if(n===-1||o===-1)return{char:" ",width:this.#e.gap};const l=a.bodyJoin,c=r[i]?.[s]??void 0,h=r[n]?.[s]??void 0,d=r[i]?.[o]??void 0,p=r[n]?.[o]??void 0,b=c!==void 0&&h!==void 0&&c===h,f=d!==void 0&&p!==void 0&&d===p,g=c!==void 0&&d!==void 0&&c===d,m=h!==void 0&&p!==void 0&&h===p;let u;const x=se(a,"middle");b&&f?u=g?{char:" ",width:l.width}:l:b?u=a.joinLeft:f?u=a.joinRight:g&&m?u=x.body:g?u=a.topJoin:m?u=a.bottomJoin:u=a.joinJoin;const{char:w,width:v}=u;return{char:w,width:v>0?v:this.#e.gap}}renderGrid(t,r){if(t.length===0)return"";const i=[],n=Ln(t,r,this.#e,this.alignCellContent.bind(this),ae),s=this.#e.showBorders&&this.#e.border?se(this.#e.border,"top"):void 0;s&&s.body.width>0&&i.push(this.renderHorizontalBorder(t,n,0,r,"top"));for(let a=0;a<t.length;a+=1){const l=n[a]??1;for(let h=0;h<l;h+=1)i.push(this.renderVisualRowContent(t,a,h,r,n));const c=this.#e.showBorders&&this.#e.border?se(this.#e.border,"middle"):void 0;if(a<t.length-1&&c&&c.body.width>0){const h=t[a],d=t[a+1];let p=!1;if(h&&d)for(let b=0;b<this.#e.columns;b+=1){const f=h[b],g=d[b];if(f!==g){p=!0;break}}p&&i.push(this.renderHorizontalBorder(t,n,a,r,"middle",a+1))}}const o=this.#e.showBorders&&this.#e.border?se(this.#e.border,"bottom"):void 0;return o&&o.body.width>0&&i.push(this.renderHorizontalBorder(t,n,t.length-1,r,"bottom")),i.join(`
11
+ `)}getCachedCellVerticalPosition(t,r,i,n){const s=this.#r.get(n);if(s)return s;const o=at(t,r,i,n);return this.#r.set(n,o),o}}Wt(e=>new Ze(e),"createGrid");const Un={bodyJoin:{char:"│",width:1},bodyLeft:{char:"│",width:1},bodyRight:{char:"│",width:1},bottomBody:{char:"─",width:1},bottomJoin:{char:"┴",width:1},bottomLeft:{char:"└",width:1},bottomRight:{char:"┘",width:1},joinBody:{char:"─",width:1},joinJoin:{char:"┼",width:1},joinLeft:{char:"├",width:1},joinRight:{char:"┤",width:1},topBody:{char:"─",width:1},topJoin:{char:"┬",width:1},topLeft:{char:"┌",width:1},topRight:{char:"┐",width:1}},Pe={bodyJoin:{char:"",width:0},bodyLeft:{char:"",width:0},bodyRight:{char:"",width:0},bottomBody:{char:"",width:0},bottomJoin:{char:"",width:0},bottomLeft:{char:"",width:0},bottomRight:{char:"",width:0},joinBody:{char:"",width:0},joinJoin:{char:"",width:0},joinLeft:{char:"",width:0},joinRight:{char:"",width:0},topBody:{char:"",width:0},topJoin:{char:"",width:0},topLeft:{char:"",width:0},topRight:{char:"",width:0}};var Yn=Object.defineProperty,xr=A((e,t)=>Yn(e,"name",{value:t,configurable:!0}),"p$2"),Kn=Object.defineProperty,St=xr((e,t)=>Kn(e,"name",{value:t,configurable:!0}),"g"),Zn=Object.defineProperty,Xn=St((e,t)=>Zn(e,"name",{value:t,configurable:!0}),"u");const Qn=Xn(e=>e.reduce((t,r)=>r===null?t+1:typeof r=="object"&&!Array.isArray(r)?(r.colSpan??=1,r.colSpan<=0?t+1:t+r.colSpan):t+1,0),"computeRowLogicalWidth");var eo=Object.defineProperty,$r=St((e,t)=>eo(e,"name",{value:t,configurable:!0}),"b");let to=class{static{A(this,"H")}static{xr(this,"$")}static{St(this,"Table")}static{$r(this,"Table")}#e;#n=[];#t=[];#o=[];#r=!0;#i=void 0;constructor(t={}){this.#e={...t,showFooter:t.showFooter??!0,showHeader:t.showHeader??!0,style:{border:Un,paddingLeft:1,paddingRight:1,...t.style}}}setHeaders(t){return t.length>0&&!Array.isArray(t[0])?this.#t=[t]:this.#t=t.map(r=>Array.isArray(r)?r:[r]),this.#r=!0,this.#i=void 0,this}setFooter(t){return t.length>0&&!Array.isArray(t[0])?this.#o=[t]:this.#o=t.map(r=>Array.isArray(r)?r:[r]),this.#r=!0,this.#i=void 0,this}addRow(t){if(!Array.isArray(t))throw new TypeError("Row must be an array");return this.#n.push(t),this.#r=!0,this.#i=void 0,this}addRows(...t){for(const r of t)this.addRow(r);return this.#r=!0,this.#i=void 0,this}toString(){if(!this.#r&&this.#i!==void 0)return this.#i;const t=this.#e.showHeader?this.#t:[],r=this.#e.showFooter?this.#o:[],i=[...t,...this.#n,...r];if(i.length===0)return this.#i="",this.#r=!1,"";let n=0;for(const d of i){const p=d;Array.isArray(p)?n=Math.max(n,Qn(p)):console.error("Unexpected non-array element found while calculating columns:",p)}if(n===0)return this.#i="",this.#r=!1,"";let s;Array.isArray(this.#e.columnWidths)?s=this.#e.columnWidths.length>=n?this.#e.columnWidths.slice(0,n):[...this.#e.columnWidths,...Array.from({length:n-this.#e.columnWidths.length}).fill(void 0)]:typeof this.#e.columnWidths=="number"&&(s=Array.from({length:n}).fill(this.#e.columnWidths));let o;const a=i.length;if(Array.isArray(this.#e.rowHeights)?o=this.#e.rowHeights:typeof this.#e.rowHeights=="number"&&(o=Array.from({length:a}).fill(this.#e.rowHeights)),s&&Array.isArray(s)){const d=[...s];for(const p of i){const b=p;for(const[f,g]of b.entries()){let m={};if(typeof g=="object"&&g!==null&&!Array.isArray(g)){const{content:u,href:x,...w}=g;m=w}m.width!==void 0?d[f]=m.width:m.maxWidth!==void 0&&d[f]!==void 0&&(d[f]=Math.min(d[f],m.maxWidth))}}s=d}const l={autoFlow:"row",backgroundColor:this.#e.style?.backgroundColor,balancedWidths:this.#e.balancedWidths??!1,border:this.#e.style?.border,borderColor:this.#e.style?.borderColor,columns:n,fixedColumnWidths:s,fixedRowHeights:o,foregroundColor:this.#e.style?.foregroundColor,gap:this.#e.gap??0,maxWidth:this.#e.maxWidth,paddingLeft:this.#e.style?.paddingLeft,paddingRight:this.#e.style?.paddingRight,terminalWidth:this.#e.terminalWidth,truncate:this.#e.truncate??(s?.every(d=>typeof d=="number")||this.#e.maxWidth!==void 0&&!this.#e.balancedWidths),truncateOverflow:this.#e.truncateOverflow??!0,wordWrap:this.#e.wordWrap??!1},c=new Ze(l),h=[];for(const[d,p]of i.entries()){const b=p;if(!Array.isArray(b)){console.error("Skipping non-array row while creating GridItems:",b);continue}const f=this.#e.showHeader?this.#t.length:0,g=this.#n.length,m=this.#e.showHeader&&d<f,u=this.#e.showFooter&&d>=f+g,x=m&&b.length===1&&n>1,w=u&&b.length===1&&n>1;for(const v of b){let $=v,B={};if(typeof $=="object"&&$!==null&&!Array.isArray($)){const{content:T,href:F,...q}=$;$=F?`\x1B]8;;${F}\x1B\\${String(T)}\x1B]8;;\x1B\\`:T,B=q}x&&(B.colSpan=n),w&&(B.colSpan=n);const O=this.#e.transformTabToSpace&&typeof $=="string"?$.replaceAll(" "," ".repeat(this.#e.transformTabToSpace)):$,{maxWidth:j,width:k}=B;h.push({backgroundColor:B.backgroundColor,colSpan:B.colSpan,content:O,foregroundColor:B.foregroundColor,hAlign:B.hAlign,maxWidth:j,rowSpan:B.rowSpan,truncate:B.truncate??(j===void 0?void 0:!0),vAlign:B.vAlign,width:k,wordWrap:B.wordWrap})}}return c.addItems(h),this.#i=c.toString(),this.#r=!1,this.#i}};const Me=$r(e=>new to(e),"createTable");var ro=Object.defineProperty,io=A((e,t)=>ro(e,"name",{value:t,configurable:!0}),"b$3"),no=Object.defineProperty,oo=io((e,t)=>no(e,"name",{value:t,configurable:!0}),"s"),so=Object.defineProperty,ao=oo((e,t)=>so(e,"name",{value:t,configurable:!0}),"a");const lo=/([a-f\d]{3,6})/i,ct=ao(e=>{let[,t]=lo.exec(e)??[];const r=t?t.length:0;if(r===3){const n=t.charAt(0),s=t.charAt(1),o=t.charAt(2);t=n+n+s+s+o+o}else if(r!==6)return[0,0,0];const i=Number.parseInt(t,16);return[i>>16&255,i>>8&255,i&255]},"convertHexToRgb");var co=Object.defineProperty,ho=A((e,t)=>co(e,"name",{value:t,configurable:!0}),"o$1"),uo=Object.defineProperty,fo=ho((e,t)=>uo(e,"name",{value:t,configurable:!0}),"s"),po=Object.defineProperty,Ot=fo((e,t)=>po(e,"name",{value:t,configurable:!0}),"e");const Br=Ot((e,t,r)=>e===t&&t===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/51)+6*Math.round(t/51)+Math.round(r/51),"rgbToAnsi256"),ht=Ot(e=>{let t,r,i;if(e<8)return 30+e;if(e<16)return 90+(e-8);if(e>=232)t=r=i=((e-232)*10+8)/255;else{e-=16;const o=e%36;t=Math.floor(e/36)/5,r=Math.floor(o/6)/5,i=o%6/5}const n=Math.max(t,r,i)*2;if(n===0)return 30;const s=30+(Math.round(i)<<2|Math.round(r)<<1|Math.round(t));return n===2?s+60:s},"ansi256To16"),Jt=Ot((e,t,r)=>ht(Br(e,t,r)),"rgbToAnsi16");var mo=Object.defineProperty,Wr=A((e,t)=>mo(e,"name",{value:t,configurable:!0}),"m$1"),go=Object.defineProperty,me=Wr((e,t)=>go(e,"name",{value:t,configurable:!0}),"u"),bo=Object.defineProperty,wo=me((e,t)=>bo(e,"name",{value:t,configurable:!0}),"e");function Xe({onlyFirst:e=!1}={}){const t="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(t,e?void 0:"g")}A(Xe,"$$2");Wr(Xe,"j");me(Xe,"t$1");wo(Xe,"ansiRegex");var yo=Object.defineProperty,vo=me((e,t)=>yo(e,"name",{value:t,configurable:!0}),"n$1");const D=vo((e,t,r)=>t>e?t:Math.min(e,r),"clamp");var xo=Object.defineProperty,M=me((e,t)=>xo(e,"name",{value:t,configurable:!0}),"b");const E=39,R=49,Vt=10,dt=Fr(),Sr={close:"",open:""},y=dt>0?(e,t)=>({close:`\x1B[${String(t)}m`,open:`\x1B[${String(e)}m`}):()=>Sr,qt=M(e=>(t,r,i)=>e(Br(Number(t),Number(r),Number(i))),"createRgbFunction"),zt=M(e=>t=>{const[r,i,n]=ct(t);return e(r,i,n)},"createHexFunction");let ut=M(e=>y(`38;5;${String(e)}`,E),"createAnsi256"),ft=M(e=>y(`48;5;${String(e)}`,R),"createBgAnsi256"),He=M((e,t,r)=>y(`38;2;${String(e)};${String(t)};${String(r)}`,E),"createRgb"),Ge=M((e,t,r)=>y(`48;2;${String(e)};${String(t)};${String(r)}`,R),"createBgRgb");dt===1?(ut=M(e=>y(ht(Number(e)),E),"createAnsi256"),ft=M(e=>y(ht(Number(e))+Vt,R),"createBgAnsi256"),He=M((e,t,r)=>y(Jt(Number(e),Number(t),Number(r)),E),"createRgb"),Ge=M((e,t,r)=>y(Jt(Number(e),Number(t),Number(r))+Vt,R),"createBgRgb")):dt===2&&(He=qt(ut),Ge=qt(ft));const Dt={bold:y(1,22),dim:y(2,22),hidden:y(8,28),inverse:y(7,27),italic:y(3,23),overline:y(53,55),reset:y(0,0),strike:y(9,29),strikethrough:y(9,29),underline:y(4,24),visible:Sr},Ut={bgBlack:y(40,R),bgBlackBright:y(100,R),bgBlue:y(44,R),bgBlueBright:y(104,R),bgCyan:y(46,R),bgCyanBright:y(106,R),bgGray:y(100,R),bgGreen:y(42,R),bgGreenBright:y(102,R),bgGrey:y(100,R),bgMagenta:y(45,R),bgMagentaBright:y(105,R),bgRed:y(41,R),bgRedBright:y(101,R),bgWhite:y(47,R),bgWhiteBright:y(107,R),bgYellow:y(43,R),bgYellowBright:y(103,R),black:y(30,E),blackBright:y(90,E),blue:y(34,E),blueBright:y(94,E),cyan:y(36,E),cyanBright:y(96,E),gray:y(90,E),green:y(32,E),greenBright:y(92,E),grey:y(90,E),magenta:y(35,E),magentaBright:y(95,E),red:y(31,E),redBright:y(91,E),white:y(37,E),whiteBright:y(97,E),yellow:y(33,E),yellowBright:y(93,E)},Yt={bg:M(e=>ft(D(e,0,255)),"bg"),bgHex:zt(Ge),bgRgb:M((e,t,r)=>Ge(D(e,0,255),D(t,0,255),D(r,0,255)),"bgRgb"),fg:M(e=>ut(D(e,0,255)),"fg"),hex:zt(He),rgb:M((e,t,r)=>He(D(e,0,255),D(t,0,255),D(r,0,255)),"rgb")};var $o=Object.defineProperty,Bo=me((e,t)=>$o(e,"name",{value:t,configurable:!0}),"s");const Wo=Bo((e,t,r)=>{if(t==="")return e;let i=e.indexOf(t);if(i<0)return e;const n=t.length;let s=0,o="";for(;~i;)o+=e.slice(s,i)+r,s=i+n,i=e.indexOf(t,s);return o+e.slice(s)},"stringReplaceAll");var So=Object.defineProperty,xe=me((e,t)=>So(e,"name",{value:t,configurable:!0}),"a");const U={};let pt=null;const Oo=xe((e,t,r)=>{if(!e)return"";let i=e.raw===void 0?String(e):String.raw(e,...t);if(i.includes("\x1B"))for(let n=r;n;n=n.props)i=Wo(i,n.close,n.open);return i.includes(`
12
+ `)&&(i=i.replace(/(\r*\n)/g,`${r.closeStack}$1${r.openStack}`)),r.openStack+i+r.closeStack},"wrapText"),mt=xe(({props:e},{close:t,open:r})=>{const i=(e?.openStack??"")+r,n=t+(e?.closeStack??""),s=xe((o,...a)=>Oo(o,a,s.props),"style");return Object.setPrototypeOf(s,pt),s.props={close:t,closeStack:n,open:r,openStack:i,props:e},s.open=i,s.close=n,s},"createStyle"),Ao=xe(function(){const e=xe(t=>String(t),"self");e.strip=t=>t.replaceAll(Xe(),"");for(const t in Ut)U[t]={get(){const r=mt(this,Ut[t]);return Object.defineProperty(this,t,{value:r}),r}};for(const t in Dt)U[t]={get(){const r=mt(this,Dt[t]);return Object.defineProperty(this,t,{value:r}),r}};return pt=Object.defineProperties({},U),Object.setPrototypeOf(e,pt),e},"Colorize");for(const e in Yt)U[e]={get(){return(...t)=>mt(this,Yt[e](...t))}};U.ansi256=U.fg;U.bgAnsi256=U.bg;var jo=Object.defineProperty,Co=A((e,t)=>jo(e,"name",{value:t,configurable:!0}),"g$1"),Eo=Object.defineProperty,Qe=Co((e,t)=>Eo(e,"name",{value:t,configurable:!0}),"i"),Ro=Object.defineProperty,Io=Qe((e,t)=>Ro(e,"name",{value:t,configurable:!0}),"n");const Or=Io(e=>(t,...r)=>{if(!Array.isArray(t)||!Array.isArray(t.raw))throw new TypeError("A tagged template literal must be provided");const i=[t.raw[0]];for(let n=1;n<t.raw.length;n+=1)i.push(String(r[n-1]).replaceAll(/[{}\\]/g,String.raw`\$&`),String(t.raw[n]));return e(i.join(""))},"makeColorizeTemplate");var ko=Object.defineProperty,No=Qe((e,t)=>ko(e,"name",{value:t,configurable:!0}),"e$1");const Po=new Map([["0","\0"],["\\","\\"],["a","\x07"],["b","\b"],["e","\x1B"],["f","\f"],["n",`
13
+ `],["r","\r"],["t"," "],["v","\v"]]),Ar=No(e=>{const t=e.startsWith("u"),r=e[1]==="{";return t&&!r&&e.length===5||e.startsWith("x")&&e.length===3?String.fromCodePoint(Number.parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(Number.parseInt(e.slice(2,-1),16)):Po.get(e)??e},"unescape");var Mo=Object.defineProperty,et=Qe((e,t)=>Mo(e,"name",{value:t,configurable:!0}),"u");const To=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|\{(~)?(#?[\w:]+(?:\([^)]*\))?(?:\.#?[\w:]+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n))|(\})|((?:.|[\r\n\f])+?)/gi,Kt=/(?:^|\.)(?:(\w+)(?:\(([^)]*)\))?|#(?=[:a-f\d]{2,})([a-f\d]{6})?(?::([a-f\d]{6}))?)/gi,Fo=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Lo=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,_o=/\s*,\s*/,Ho=et((e,t)=>{const r=[],i=t.trim().split(_o);let n;for(const s of i){const o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=Fo.exec(s))r.push(n[2].replaceAll(Lo,(a,l,c)=>l?Ar(l):c));else throw new Error(`Invalid template style argument: ${s} (in style '${e}')`)}return r},"parseArguments"),Go=et(e=>{Kt.lastIndex=0;const t=[];let r;for(;(r=Kt.exec(e))!==null;){const i=r[1];r[2]?t.push([i,...Ho(i,r[2])]):r[3]||r[4]?(r[3]&&t.push(["rgb",...ct(r[3])]),r[4]&&t.push(["bgRgb",...ct(r[4])])):t.push([i])}return t},"parseStyle"),Zt=et((e,t)=>{const r={};for(const n of t)for(const s of n.styles)r[s[0]]=n.inverse?void 0:s.slice(1);let i=e;for(const[n,s]of Object.entries(r))if(Array.isArray(s)){if(!(n in i))throw new Error(`Unknown style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i},"buildStyle"),jr=et(e=>t=>{const r=[],i=[];let n=[];if(t.replaceAll(To,(s,o,a,l,c,h)=>{if(o)n.push(Ar(o));else if(l){const d=n.join("");n=[],i.push(r.length===0?d:Zt(e,r)(d)),r.push({inverse:a,styles:Go(l)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in template literal");i.push(Zt(e,r)(n.join(""))),n=[],r.pop()}else n.push(h)}),i.push(n.join("")),r.length>0)throw new Error(`template literal is missing ${String(r.length)} closing bracket${r.length===1?"":"s"} (\`}\`)`);return i.join("")},"makeTemplate");var Jo=Object.defineProperty,Vo=Qe((e,t)=>Jo(e,"name",{value:t,configurable:!0}),"e");const qo=new Ao;Vo(e=>Or(jr(e)),"makeTaggedTemplate");const zo=jr(qo),Do=Or(zo);var Uo=Object.defineProperty,tt=A((e,t)=>Uo(e,"name",{value:t,configurable:!0}),"c"),Yo=Object.defineProperty,V=tt((e,t)=>Yo(e,"name",{value:t,configurable:!0}),"s");const Ko=tr(import.meta.url),we=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Zo=V(e=>{if(typeof we<"u"&&we.versions&&we.versions.node){const[t,r]=we.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return we.getBuiltinModule(e)}return Ko(e)},"__cjs_getBuiltinModule"),Xo=Zo("node:os");var Qo=Object.defineProperty,es=V((e,t)=>Qo(e,"name",{value:t,configurable:!0}),"s");const ye=new Map,ts=500,N=es(e=>{if(!e||e==="")return"";const t=ye.get(e);if(t!==void 0)return t;const r=Do(Object.assign([],{raw:[e]}));if(ye.size>=ts){const i=ye.keys().next().value;i!==void 0&&ye.delete(i)}return ye.set(e,r),r},"templateFormat");var rs=Object.defineProperty,is=V((e,t)=>rs(e,"name",{value:t,configurable:!0}),"t$1");const Te=is(()=>{const e=_r().CEREBRO_TERMINAL_WIDTH;if(e===void 0)return;const t=Number.parseInt(e,10);if(!(Number.isNaN(t)||t<=0))return t},"getTerminalWidth");var ns=Object.defineProperty,os=V((e,t)=>ns(e,"name",{value:t,configurable:!0}),"t");class Cr{static{A(this,"m")}static{tt(this,"y")}static{V(this,"n")}static{os(this,"BaseSection")}lines;constructor(){this.lines=[]}add(t){this.lines.push(t)}toString(){return this.lines.join(Xo.EOL)}header(t){this.add(Lr(t)),this.lines.push("")}}var ss=Object.defineProperty,as=V((e,t)=>ss(e,"name",{value:t,configurable:!0}),"f");class ls extends Cr{static{A(this,"I")}static{tt(this,"C")}static{V(this,"l")}static{as(this,"ContentSection")}constructor(t){if(super(),t.header&&this.header(N(t.header)),t.content){if(t.raw)if(Array.isArray(t.content)&&t.content.every(r=>typeof r=="string"))t.content.forEach(r=>{Array.isArray(r)?r.forEach(i=>{this.add(N(i))}):this.add(N(r))});else if(typeof t.content=="string")this.add(N(t.content));else throw new TypeError("Invalid raw content, must be a string or array of strings.");else this.add(this.getContentLines(t.content));this.add("")}}getContentLines(t){if(typeof t=="string"){const r=Me({showHeader:!1,style:{border:Pe,paddingLeft:4,paddingRight:1},terminalWidth:Te(),truncateOverflow:!1,wordWrap:!0});return r.addRow([N(t)]),r.toString()}if(Array.isArray(t)&&t.every(r=>typeof r=="string"||Array.isArray(r)&&r.every(i=>typeof i=="string"))){const r=Me({showHeader:!1,style:{border:Pe,paddingLeft:4,paddingRight:1},terminalWidth:Te(),truncateOverflow:!1,wordWrap:!0});return t.forEach(i=>{Array.isArray(i)?r.addRow(i.map(n=>N(n))):r.addRow([N(i)])}),r.toString()}if(typeof t=="object"){const r=t;if(!r.options||!r.data)throw new Error(`Must have an "options" or "data" property
14
+ ${JSON.stringify(t)}`);const i=Me({showHeader:!1,style:{border:Pe,paddingLeft:4,paddingRight:1},terminalWidth:Te(),truncateOverflow:!1,wordWrap:!0});return r.data.forEach(n=>{Array.isArray(n)?i.addRow(n.map(s=>N(s))):i.addRow([N(n)])}),i.toString()}throw new Error(`invalid input - 'content' must be a string, array of strings or a object:
15
+
16
+ ${JSON.stringify(t)}`)}}var cs=Object.defineProperty,hs=V((e,t)=>cs(e,"name",{value:t,configurable:!0}),"m");class ds extends Cr{static{A(this,"z")}static{tt(this,"q")}static{V(this,"O")}static{hs(this,"OptionListSection")}constructor(t){super();let r=t.optionList??[];const i=Array.isArray(t.hide)?t.hide:[t.hide].filter(o=>typeof o=="string"),n=Array.isArray(t.group)?t.group:[t.group].filter(o=>typeof o=="string");i.length>0&&(r=r.filter(o=>!i.includes(o.name))),t.header&&this.header(N(t.header)),n.length>0&&(r=r.filter(o=>{const a=o,l=n.includes("_none")&&!a.group,c=a.group,h=this.intersect(Array.isArray(c)?c:[c],n);return l||h?o:void 0}));const s=Me({showHeader:!1,style:{border:Pe,paddingLeft:2,paddingRight:1,...t.tableOptions?.style},terminalWidth:Te()??t.tableOptions?.terminalWidth,truncateOverflow:!1,wordWrap:t.tableOptions?.wordWrap??!0,...t.tableOptions});r.forEach(o=>{const a=o;s.addRow([this.getOptionNames(a,t.reverseNameOrder??!1,t.isArgument??!1),N(a.description)])}),this.add(s.toString()),this.lines.push("")}getOptionNames(t,r,i){if(!t.name)throw new TypeError("Invalid option definition, name is required.");let n=t.type?t.type.name.toLowerCase():"string";const s=t.multiple||t.lazyMultiple?"[]":"";n=N(t.typeLabel??`{underline ${n}${s}}`);let o;if(t.alias)if(t.name){const a=i?t.name:`{yellow --${t.name}}`;o=N(r?`{bold ${a}}, {bold -${t.alias}} ${n}`:`{bold -${t.alias}}, {bold ${a}} ${n}`)}else r?o=N(`{bold -${t.alias}} ${n}`):o=N(`{bold -${t.alias}} ${n}`);else o=N(`{bold ${i?t.name:`{yellow --${t.name}}`}} ${n}`);return o}intersect(t,r){return t.some(i=>r.includes(i))}}var us=Object.defineProperty,fs=V((e,t)=>us(e,"name",{value:t,configurable:!0}),"o");const At=fs(e=>(Array.isArray(e)?e:[e]).length===0?"":`
17
+ ${e.map(t=>t.optionList?new ds(t).toString():new ls(t).toString()).join(`
18
+ `)}`,"commandLineUsage");var ps=Object.defineProperty,Er=A((e,t)=>ps(e,"name",{value:t,configurable:!0}),"f"),ms=Object.defineProperty,Rr=Er((e,t)=>ms(e,"name",{value:t,configurable:!0}),"f");const gs=[{defaultValue:"32",description:"Controls the verbosity level of output. Valid values: '16' (quiet), '32' (normal), '64' (verbose), '128' (debug)",name:"CEREBRO_OUTPUT_LEVEL",type:String},{description:"Sets the minimum required Node.js version. Overrides the default minimum version check",name:"CEREBRO_MIN_NODE_VERSION",type:Number},{defaultValue:!1,description:"When set, disables the update notifier check",name:"NO_UPDATE_NOTIFIER",type:Boolean},{description:"Standard Node.js environment variable. When set to 'test', disables update notifier",name:"NODE_ENV",type:String},{defaultValue:!1,description:"When set, enables debug output (same as --debug flag)",name:"DEBUG",type:Boolean},{description:"Sets the terminal width for table rendering. Useful for testing and consistent output",name:"CEREBRO_TERMINAL_WIDTH",type:Number}];var bs=Object.defineProperty,ee=Rr((e,t)=>bs(e,"name",{value:t,configurable:!0}),"h");const Xt="__Other",Qt=ee(e=>e.charAt(0).toUpperCase()+e.slice(1),"upperFirstChar"),ws=ee((e,t,r,i)=>{e.debug("no command given, printing general help...");let n=[...new Set(r.values())].filter(a=>!a.hidden);i&&(n=n.filter(a=>a.group===i));const s=n.reduce((a,l)=>{const c=l.group??Xt;return a[c]??=[],a[c].push(l),a},{}),o=ee(a=>a.map(l=>{let c="";typeof l.alias=="string"?c=l.alias:Array.isArray(l.alias)&&(c=l.alias.join(", ")),c!==""&&(c=` [${c}]`);let h=l.name;return l.commandPath&&l.commandPath.length>0&&(h=`${l.commandPath.join(" ")} ${l.name}`),[`${G(h)}${c}`,l.description??""]}),"buildCommandList");(e.raw??e.log)(At([{content:`${ce(t.getCliName())} ${G("<command>")} [positional arguments] ${Fe("[options]")}`,header:P.cyan(" Usage ")},...Object.keys(s).map(a=>{const l=i?` ${Qt(i)}`:"";return{content:o(s[a]),header:a===Xt||i?P.green(` Available${l} Commands `):` ${P.green(` ${Qt(a)} `)}`}}),r.has("help")?{header:P.yellow(" Command Options "),optionList:r.get("help").options?.filter(a=>!a.hidden)}:void 0,{header:P.yellow(" Global Options "),optionList:t.getGlobalOptions()},{content:gs.filter(a=>!a.hidden).map(a=>[a.name,a.description??""]),header:P.magenta(" Environment Variables ")},{content:`Run "${ce(t.getCliName())} ${G("help <command>")}" or "${ce(t.getCliName())} ${G("<command>")} ${Fe("--help")}" for help with a specific command.`,raw:!0}].filter(Boolean)))},"printGeneralHelp"),er=ee((e,t)=>{const r=[];for(const i of e.values()){if(i.hidden)continue;const n=i.commandPath??[];if(n.length!==t.length)continue;let s=!0;for(const[o,a]of t.entries())if(n[o]!==a){s=!1;break}s&&r.push(i)}return r},"findChildren"),ys=ee((e,t,r,i)=>{const n=r.join(" "),s=[{content:`${ce(t.getCliName())} ${G(n)} ${G("<subcommand>")} [positional arguments] ${Fe("[options]")}`,header:P.cyan(" Usage ")},{content:i.map(o=>{const a=[...o.commandPath??[],o.name].join(" ");return[G(a),o.description??""]}),header:P.green(" Subcommands ")},{header:P.yellow(" Global Options "),optionList:t.getGlobalOptions()},{content:`Run "${ce(t.getCliName())} ${G(`${n} <subcommand>`)} ${Fe("--help")}" for help with a specific subcommand.`,raw:!0}];(e.raw??e.log)(At(s))},"printParentHelp"),vs=ee((e,t,r,i)=>{let n=r.get(i);if(!n)for(const c of r.values()){const h=c.commandPath?[...c.commandPath,c.name]:[c.name];if(h.at(-1)===i||h.join(" ")===i){n=c;break}}if(!n){const c=i.split(" ").filter(Boolean),h=c.length>0?er(r,c):[];if(h.length>0){ys(e,t,c,h);return}e.error(`Command "${i}" not found`);return}const s=[],o=(n.commandPath?[...n.commandPath,n.name]:[n.name]).join(" ");if(s.push({content:`${ce(t.getCliName())} ${G(o)}${n.argument?" [positional arguments]":""}${n.options?" [options]":""}`,header:P.cyan(" Usage ")}),n.description&&s.push({content:n.description,header:P.green(" Description ")}),n.argument&&s.push({header:"Command Positional Arguments",isArgument:!0,optionList:[n.argument]}),Array.isArray(n.options)&&n.options.length>0&&s.push({header:P.yellow(" Command Options "),optionList:n.options.filter(c=>!c.hidden)}),s.push({header:P.yellow(" Global Options "),optionList:t.getGlobalOptions()}),Array.isArray(n.env)&&n.env.length>0){const c=n.env.filter(h=>!h.hidden);c.length>0&&s.push({content:c.map(h=>[h.name,h.description??""]),header:P.magenta(" Environment Variables ")})}if(n.alias!==void 0&&n.alias.length>0){let c=n.alias;typeof n.alias=="string"&&(c=[n.alias]),s.splice(1,0,{content:c,header:"Alias(es)"})}Array.isArray(n.examples)&&n.examples.length>0&&s.push({content:n.examples,header:"Examples"});const a=[...n.commandPath??[],n.name],l=er(r,a);l.length>0&&s.push({content:l.map(c=>{const h=[...c.commandPath??[],c.name].join(" ");return[G(h),c.description??""]}),header:P.green(" Subcommands ")}),(e.raw??e.log)(At(s))},"printCommandHelp");class Ss{static{A(this,"_")}static{Er(this,"S")}static{Rr(this,"x")}static{ee(this,"HelpCommand")}name="help";options=[{description:"Display only the specified group",name:"group",type:String}];commands;constructor(t){this.commands=t}execute(t){const{commandName:r,logger:i,options:n,runtime:s}=t,{footer:o,header:a}=s.getCommandSection();a&&(i.raw??i.log)(N(a)),r==="help"?ws(i,s,this.commands,typeof n?.group=="string"?n.group:void 0):vs(i,s,this.commands,r),o&&(i.raw??i.log)(N(o))}}export{Ss as default};