typebulb 0.12.0 → 0.13.0

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 (191) hide show
  1. package/dist/agents/claude/client.js +341 -205
  2. package/dist/agents/claude/styles.css +3 -21
  3. package/dist/ai/aiProvider.d.ts +59 -0
  4. package/dist/ai/aiProvider.d.ts.map +1 -0
  5. package/dist/ai/aiProvider.js +109 -0
  6. package/dist/ai/aiProvider.js.map +1 -0
  7. package/dist/ai/aiProviders.d.ts +28 -0
  8. package/dist/ai/aiProviders.d.ts.map +1 -0
  9. package/dist/ai/aiProviders.js +47 -0
  10. package/dist/ai/aiProviders.js.map +1 -0
  11. package/dist/ai/chat.d.ts +32 -0
  12. package/dist/ai/chat.d.ts.map +1 -0
  13. package/dist/ai/chat.js +5 -0
  14. package/dist/ai/chat.js.map +1 -0
  15. package/dist/ai/index.d.ts +9 -0
  16. package/dist/ai/index.d.ts.map +1 -0
  17. package/dist/ai/index.js +11 -0
  18. package/dist/ai/index.js.map +1 -0
  19. package/dist/ai/protocol.d.ts +18 -0
  20. package/dist/ai/protocol.d.ts.map +1 -0
  21. package/dist/ai/protocol.js +3 -0
  22. package/dist/ai/protocol.js.map +1 -0
  23. package/dist/ai/providers/anthropic.d.ts +123 -0
  24. package/dist/ai/providers/anthropic.d.ts.map +1 -0
  25. package/dist/ai/providers/anthropic.js +130 -0
  26. package/dist/ai/providers/anthropic.js.map +1 -0
  27. package/dist/ai/providers/gemini.d.ts +62 -0
  28. package/dist/ai/providers/gemini.d.ts.map +1 -0
  29. package/dist/ai/providers/gemini.js +136 -0
  30. package/dist/ai/providers/gemini.js.map +1 -0
  31. package/dist/ai/providers/openAI.d.ts +146 -0
  32. package/dist/ai/providers/openAI.d.ts.map +1 -0
  33. package/dist/ai/providers/openAI.js +127 -0
  34. package/dist/ai/providers/openAI.js.map +1 -0
  35. package/dist/ai/providers/openRouter.d.ts +65 -0
  36. package/dist/ai/providers/openRouter.d.ts.map +1 -0
  37. package/dist/ai/providers/openRouter.js +82 -0
  38. package/dist/ai/providers/openRouter.js.map +1 -0
  39. package/dist/ai/sseParser.d.ts +32 -0
  40. package/dist/ai/sseParser.d.ts.map +1 -0
  41. package/dist/ai/sseParser.js +121 -0
  42. package/dist/ai/sseParser.js.map +1 -0
  43. package/dist/ai/stream.d.ts +20 -0
  44. package/dist/ai/stream.d.ts.map +1 -0
  45. package/dist/ai/stream.js +6 -0
  46. package/dist/ai/stream.js.map +1 -0
  47. package/dist/dts/cache.d.ts +30 -0
  48. package/dist/dts/cache.d.ts.map +1 -0
  49. package/dist/dts/cache.js +2 -0
  50. package/dist/dts/cache.js.map +1 -0
  51. package/dist/dts/definitelyTypedProvider.d.ts +20 -0
  52. package/dist/dts/definitelyTypedProvider.d.ts.map +1 -0
  53. package/dist/dts/definitelyTypedProvider.js +93 -0
  54. package/dist/dts/definitelyTypedProvider.js.map +1 -0
  55. package/dist/dts/dtsConfig.d.ts +12 -0
  56. package/dist/dts/dtsConfig.d.ts.map +1 -0
  57. package/dist/dts/dtsConfig.js +24 -0
  58. package/dist/dts/dtsConfig.js.map +1 -0
  59. package/dist/dts/dtsResolver.d.ts +63 -0
  60. package/dist/dts/dtsResolver.d.ts.map +1 -0
  61. package/dist/dts/dtsResolver.js +272 -0
  62. package/dist/dts/dtsResolver.js.map +1 -0
  63. package/dist/dts/fetchDts.d.ts +13 -0
  64. package/dist/dts/fetchDts.d.ts.map +1 -0
  65. package/dist/dts/fetchDts.js +46 -0
  66. package/dist/dts/fetchDts.js.map +1 -0
  67. package/dist/dts/httpFetch.d.ts +17 -0
  68. package/dist/dts/httpFetch.d.ts.map +1 -0
  69. package/dist/dts/httpFetch.js +35 -0
  70. package/dist/dts/httpFetch.js.map +1 -0
  71. package/dist/dts/index.d.ts +14 -0
  72. package/dist/dts/index.d.ts.map +1 -0
  73. package/dist/dts/index.js +14 -0
  74. package/dist/dts/index.js.map +1 -0
  75. package/dist/dts/libManifest.d.ts +41 -0
  76. package/dist/dts/libManifest.d.ts.map +1 -0
  77. package/dist/dts/libManifest.js +109 -0
  78. package/dist/dts/libManifest.js.map +1 -0
  79. package/dist/dts/negativeCacheHelper.d.ts +29 -0
  80. package/dist/dts/negativeCacheHelper.d.ts.map +1 -0
  81. package/dist/dts/negativeCacheHelper.js +44 -0
  82. package/dist/dts/negativeCacheHelper.js.map +1 -0
  83. package/dist/dts/tarballFetcher.d.ts +13 -0
  84. package/dist/dts/tarballFetcher.d.ts.map +1 -0
  85. package/dist/dts/tarballFetcher.js +58 -0
  86. package/dist/dts/tarballFetcher.js.map +1 -0
  87. package/dist/dts/tbTypings.d.ts +15 -0
  88. package/dist/dts/tbTypings.d.ts.map +1 -0
  89. package/dist/dts/tbTypings.js +210 -0
  90. package/dist/dts/tbTypings.js.map +1 -0
  91. package/dist/dts/typeProvider.d.ts +37 -0
  92. package/dist/dts/typeProvider.d.ts.map +1 -0
  93. package/dist/dts/typeProvider.js +30 -0
  94. package/dist/dts/typeProvider.js.map +1 -0
  95. package/dist/dts/typeRefScanner.d.ts +8 -0
  96. package/dist/dts/typeRefScanner.d.ts.map +1 -0
  97. package/dist/dts/typeRefScanner.js +33 -0
  98. package/dist/dts/typeRefScanner.js.map +1 -0
  99. package/dist/dts/typescriptProvider.d.ts +21 -0
  100. package/dist/dts/typescriptProvider.d.ts.map +1 -0
  101. package/dist/dts/typescriptProvider.js +140 -0
  102. package/dist/dts/typescriptProvider.js.map +1 -0
  103. package/dist/dts/virtualFs.d.ts +20 -0
  104. package/dist/dts/virtualFs.d.ts.map +1 -0
  105. package/dist/dts/virtualFs.js +48 -0
  106. package/dist/dts/virtualFs.js.map +1 -0
  107. package/dist/format/chunks.d.ts +20 -0
  108. package/dist/format/chunks.d.ts.map +1 -0
  109. package/dist/format/chunks.js +51 -0
  110. package/dist/format/chunks.js.map +1 -0
  111. package/dist/format/config.d.ts +17 -0
  112. package/dist/format/config.d.ts.map +1 -0
  113. package/dist/format/config.js +13 -0
  114. package/dist/format/config.js.map +1 -0
  115. package/dist/format/detection.d.ts +11 -0
  116. package/dist/format/detection.d.ts.map +1 -0
  117. package/dist/format/detection.js +43 -0
  118. package/dist/format/detection.js.map +1 -0
  119. package/dist/format/index.d.ts +8 -0
  120. package/dist/format/index.d.ts.map +1 -0
  121. package/dist/format/index.js +8 -0
  122. package/dist/format/index.js.map +1 -0
  123. package/dist/format/parse.d.ts +20 -0
  124. package/dist/format/parse.d.ts.map +1 -0
  125. package/dist/format/parse.js +88 -0
  126. package/dist/format/parse.js.map +1 -0
  127. package/dist/format/registry.d.ts +24 -0
  128. package/dist/format/registry.d.ts.map +1 -0
  129. package/dist/format/registry.js +31 -0
  130. package/dist/format/registry.js.map +1 -0
  131. package/dist/format/serialize.d.ts +8 -0
  132. package/dist/format/serialize.d.ts.map +1 -0
  133. package/dist/format/serialize.js +30 -0
  134. package/dist/format/serialize.js.map +1 -0
  135. package/dist/format/yaml.d.ts +4 -0
  136. package/dist/format/yaml.d.ts.map +1 -0
  137. package/dist/format/yaml.js +17 -0
  138. package/dist/format/yaml.js.map +1 -0
  139. package/dist/index.js +385 -84
  140. package/dist/lint/index.d.ts +29 -0
  141. package/dist/lint/index.d.ts.map +1 -0
  142. package/dist/lint/index.js +257 -0
  143. package/dist/lint/index.js.map +1 -0
  144. package/dist/render.js +174 -38
  145. package/dist/resolver/attempt.d.ts +2 -0
  146. package/dist/resolver/attempt.d.ts.map +1 -0
  147. package/dist/resolver/attempt.js +9 -0
  148. package/dist/resolver/attempt.js.map +1 -0
  149. package/dist/resolver/cdnClient.d.ts +46 -0
  150. package/dist/resolver/cdnClient.d.ts.map +1 -0
  151. package/dist/resolver/cdnClient.js +107 -0
  152. package/dist/resolver/cdnClient.js.map +1 -0
  153. package/dist/resolver/cdnConstants.d.ts +10 -0
  154. package/dist/resolver/cdnConstants.d.ts.map +1 -0
  155. package/dist/resolver/cdnConstants.js +10 -0
  156. package/dist/resolver/cdnConstants.js.map +1 -0
  157. package/dist/resolver/index.d.ts +20 -0
  158. package/dist/resolver/index.d.ts.map +1 -0
  159. package/dist/resolver/index.js +20 -0
  160. package/dist/resolver/index.js.map +1 -0
  161. package/dist/resolver/packageRef.d.ts +21 -0
  162. package/dist/resolver/packageRef.d.ts.map +1 -0
  163. package/dist/resolver/packageRef.js +89 -0
  164. package/dist/resolver/packageRef.js.map +1 -0
  165. package/dist/resolver/packageService.d.ts +40 -0
  166. package/dist/resolver/packageService.d.ts.map +1 -0
  167. package/dist/resolver/packageService.js +156 -0
  168. package/dist/resolver/packageService.js.map +1 -0
  169. package/dist/resolver/peerResolver.d.ts +33 -0
  170. package/dist/resolver/peerResolver.d.ts.map +1 -0
  171. package/dist/resolver/peerResolver.js +66 -0
  172. package/dist/resolver/peerResolver.js.map +1 -0
  173. package/dist/resolver/semver.d.ts +17 -0
  174. package/dist/resolver/semver.d.ts.map +1 -0
  175. package/dist/resolver/semver.js +56 -0
  176. package/dist/resolver/semver.js.map +1 -0
  177. package/dist/resolver/types.d.ts +33 -0
  178. package/dist/resolver/types.d.ts.map +1 -0
  179. package/dist/resolver/types.js +2 -0
  180. package/dist/resolver/types.js.map +1 -0
  181. package/dist/resolver/versionResolver.d.ts +29 -0
  182. package/dist/resolver/versionResolver.d.ts.map +1 -0
  183. package/dist/resolver/versionResolver.js +79 -0
  184. package/dist/resolver/versionResolver.js.map +1 -0
  185. package/dist/servers.js +142 -3
  186. package/dist/transpile/index.d.ts +19 -0
  187. package/dist/transpile/index.d.ts.map +1 -0
  188. package/dist/transpile/index.js +23 -0
  189. package/dist/transpile/index.js.map +1 -0
  190. package/dist/tsconfig.tsbuildinfo +1 -0
  191. package/package.json +99 -68
package/dist/index.js CHANGED
@@ -1,13 +1,158 @@
1
1
  #!/usr/bin/env node
2
- var so=Object.defineProperty;var B=(r,e)=>()=>(r&&(e=r(r=0)),e);var oo=(r,e)=>{for(var t in e)so(r,t,{get:e[t],enumerable:!0})};function lt(r){try{let e=r.split(`
3
- `),t=0;if(e[t]?.trim()!=="---")return null;t++;let n=[];for(;t<e.length&&e[t]?.trim()!=="---";)n.push(e[t]),t++;if(e[t]?.trim()!=="---")return null;t++;let s=ho(n);if(!s)return null;let o=new Map;for(;t<e.length;){let a=e[t]?.trim()?.match(/^\*\*(.+)\*\*$/);if(a){let c=a[1].trim();for(t++;t<e.length&&e[t]?.trim()==="";)t++;let l=e[t]?.match(/^(`{3,})(\w*)\s*$/);if(!l){t++;continue}let d=l[1];t++;let u=[];for(;t<e.length&&!e[t]?.match(new RegExp(`^${d}\\s*$`));)u.push(e[t]),t++;t++,o.set(c,u.join(`
4
- `))}else t++}return{frontmatter:s,files:o}}catch{return null}}function ho(r){let e={};for(let t of r){let n=t.indexOf(":");if(n===-1)continue;let s=t.slice(0,n).trim(),o=t.slice(n+1).trim();switch(s){case"format":e.format=o;break;case"name":e.name=go(o);break}}return!e.format?.startsWith("typebulb")||!e.name?null:e}function go(r){return r.startsWith('"')&&r.endsWith('"')?r.slice(1,-1).replace(/\\"/g,'"'):r.startsWith("'")&&r.endsWith("'")?r.slice(1,-1):r}function dt(r){let e=t=>r.files.get(mo[t].path)||"";return{name:r.frontmatter.name,code:e("code"),css:e("css"),html:e("html"),config:e("config"),notes:e("notes"),data:e("data"),infer:e("infer"),insight:e("insight"),server:e("server")}}function bo(r){try{return JSON.parse(r),!0}catch{}return!!(/^\s*<[\s\S]*>/.test(r)||/^---\s*$/m.test(r)||/^\w[\w\s]*:[ \t]/m.test(r))}function tn(r){let e=r.trim();return e?bo(e)?[e]:r.split(/\n\n\n+/).map(t=>t.trim()).filter(Boolean):[]}function rn(r){if(!r.trim())return{};try{return JSON.parse(r)}catch{return{}}}var mo,Qt=B(()=>{mo={code:{path:"code.tsx",language:"typescript"},css:{path:"styles.css",language:"css"},html:{path:"index.html",language:"html"},config:{path:"config.json",language:"json"},notes:{path:"notes.md",language:"markdown"},data:{path:"data.txt",language:"text"},infer:{path:"infer.md",language:"markdown"},insight:{path:"insight.json",language:"json"},server:{path:"server.ts",language:"typescript"}}});import{join as hr,resolve as ei}from"path";import{homedir as ti}from"os";function At(){let r=process.env.TYPEBULB_SERVERS_DIR;return r?hr(r,".."):hr(ti(),".typebulb")}function ce(){return process.env.TYPEBULB_SERVERS_DIR||hr(At(),"servers")}function _(r){let e=ei(r);return(process.platform==="win32"?e.toLowerCase():e).replace(/\\/g,"/")}function On(r,e){let t=_(r),n=_(e);return t.startsWith(n.endsWith("/")?n:n+"/")?!t.includes("/node_modules/"):!1}var Ke=B(()=>{});import{readFileSync as ri,writeFileSync as ni,mkdirSync as si}from"fs";import{join as oi}from"path";function Dn(){return oi(At(),"trust.json")}function gr(){try{let r=JSON.parse(ri(Dn(),"utf8"));return new Set(Array.isArray(r)?r:[])}catch{return new Set}}function ii(r){si(At(),{recursive:!0}),ni(Dn(),JSON.stringify([...r]))}function le(r){return gr().has(_(r))}function Se(r,e){let t=gr(),n=_(r);(e?t.has(n):!t.has(n))||(e?t.add(n):t.delete(n),ii(t))}function br(){return[...gr()]}var Ye=B(()=>{Ke()});function Re(r){if(r.server.trim())return"server-side code (server.ts)";let e=r.code;if(/\btb\s*\.\s*fs\b/.test(e)||e.includes("/__fs"))return"the filesystem";if(/\btb\s*\.\s*ai\b/.test(e)||e.includes("/__ai"))return"AI (your API keys)";if(/\btb\s*\.\s*server\s*\.\s*(?!log\b)\w/.test(e)||e.includes("/__api"))return"server-side code (server.ts)"}var Ot=B(()=>{});import{spawn as zn}from"child_process";import{readdir as Ei,readFile as Kn,writeFile as Yn,unlink as Qe,mkdir as Ri}from"fs/promises";import{mkdirSync as ki,writeFileSync as qn,appendFileSync as Ti,readFileSync as Xn}from"fs";import*as W from"path";import{fileURLToPath as _i}from"url";function vr(r){return W.join(ce(),`${r}.json`)}function Ze(r){return W.join(ce(),`${r}.log`)}function Dt(r){let e=Ze(r);try{ki(ce(),{recursive:!0}),qn(e,"")}catch{return()=>{}}let t=process.stdout.write.bind(process.stdout),n=process.stderr.write.bind(process.stderr),s=0,o=!1,i=a=>{if(!o)try{let c=typeof a=="string"?Buffer.from(a,"utf8"):Buffer.from(a);if(Ti(e,c),s+=c.length,s>2*Gn){let l=Xn(e),d=l.subarray(Math.max(0,l.length-Gn));qn(e,d),s=d.length}}catch{o=!0}};return process.stdout.write=((a,...c)=>(i(a),t(a,...c))),process.stderr.write=((a,...c)=>(i(a),n(a,...c))),()=>{process.stdout.write=t,process.stderr.write=n}}function ke(r,e=0){try{let t=Xn(Ze(r)),n=e>=0&&e<=t.length?e:0;return{text:t.subarray(n).toString("utf8"),offset:t.length}}catch{return{text:"",offset:0}}}function Ai(r){try{return process.kill(r,0),!0}catch(e){return e.code==="EPERM"}}async function Mt(r){await Ri(ce(),{recursive:!0}),await Yn(vr(r.pid),JSON.stringify(r))}async function Qn(r,e){let t=vr(r);try{let n=JSON.parse(await Kn(t,"utf8"));if(n.denied===e)return;n.denied=e,await Yn(t,JSON.stringify(n))}catch{}}async function et(r){await Qe(vr(r)).catch(()=>{}),await Qe(Ze(r)).catch(()=>{})}async function C(r){let e;try{e=await Ei(ce())}catch{return[]}let t=[];return await Promise.all(e.map(async s=>{if(!s.endsWith(".json"))return;let o=W.join(ce(),s),i;try{i=JSON.parse(await Kn(o,"utf8"))}catch{await Qe(o).catch(()=>{});return}i&&typeof i.pid=="number"&&Ai(i.pid)?t.push(i):(await Qe(o).catch(()=>{}),i?.pid&&await Qe(Ze(i.pid)).catch(()=>{}))})),(r?t.filter(s=>s.agent==null&&On(s.file,r)):t).sort((s,o)=>s.startedAt-o.startedAt)}async function Te(r){try{process.kill(r,"SIGTERM")}catch{}await et(r)}function $i(){return W.join(W.dirname(_i(import.meta.url)),"index.js")}function Ii(r,e={}){return{command:process.execPath,args:[$i(),...e.trust?["--trust"]:[],r,...e.open===!1?["--no-open"]:[]]}}async function Bt(r,e={}){let t=e.cwd??process.cwd(),n=W.resolve(t,r),s=(await C()).find(l=>l.file===n);if(s)return s;let{command:o,args:i}=Ii(r,e);(process.platform==="win32"?zn("cmd",["/c","start","","/b",o,...i],{cwd:t,stdio:"ignore",windowsHide:!0}):zn(o,i,{cwd:t,detached:!0,stdio:"ignore"})).unref();let c=Date.now()+2e4;for(;Date.now()<c;){await Ci(150);let l=(await C()).find(d=>d.file===n);if(l)return l}throw new Error(`Launched ${W.basename(r)} but it did not register within 20s.`)}var Gn,Ci,de=B(()=>{Ke();Gn=1e6;Ci=r=>new Promise(e=>setTimeout(e,r))});function Ht(r){let e=/^---[^\n]*\n([\s\S]*?)\n---/.exec(r),t=e?/^\s*name:\s*(.+?)\s*$/m.exec(e[1]):null;return t?t[1].replace(/^["']|["']$/g,""):void 0}function Ir(r){return(Ht(r)??"bulb").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"bulb"}var Or=B(()=>{});import{readdirSync as ea,readFileSync as ta,statSync as ra}from"fs";import{join as Rs,basename as na}from"path";function ks(r,e,t){if(e>8)return t;let n;try{n=ea(r,{withFileTypes:!0})}catch{return t}for(let s of n)if(s.isDirectory()){if(s.name.startsWith(".")||s.name==="node_modules")continue;ks(Rs(r,s.name),e+1,t)}else s.isFile()&&s.name.endsWith(".bulb.md")&&t.push(Rs(r,s.name));return t}function Dr(r){return ks(r,0,[]).map(e=>{let t=0;try{t=ra(e).mtimeMs}catch{}let n;try{n=Ht(ta(e,"utf8").slice(0,1024))}catch{}return{path:e,name:n??na(e).replace(/\.bulb\.md$/,""),mtime:t}})}var Ts=B(()=>{Or()});import{readFile as sa}from"fs/promises";async function Mr(r){try{let e=lt(await sa(r,"utf-8"));return e?Re(dt(e)):void 0}catch{return}}var _s=B(()=>{Qt();Ot()});import{spawn as oa}from"child_process";import{basename as ia}from"path";function aa(){return process.env.TYPEBULB_EDITOR||"code"}function la(r,e,t){return t==null?[e]:ca.test(ia(r))?["-g",`${e}:${t}`]:[`+${t}`,e]}function da(r,e){let t=aa();return{command:t,args:la(t,r,e)}}function Br(r,e){let{command:t,args:n}=da(r,e),s=oa(t,n,{shell:!0,detached:!0,stdio:"ignore"});s.on("error",o=>console.error("[typebulb] editor launch failed:",o?.message??o)),s.unref()}var ca,As=B(()=>{ca=/^(code|code-insiders|codium|vscodium|cursor|windsurf)(\.cmd|\.exe)?$/i});var Cs=B(()=>{de();Ts();_s();Or();As();Ye()});var Vt,$s=B(()=>{Vt=class{#e=new Map;accept(e,t){return this.#e.get(e)===t?!1:(this.#e.set(e,t),!0)}}});var Ys={};oo(Ys,{attach:()=>ja,blockToMarkdown:()=>Wr,breakout:()=>La,capText:()=>at,info:()=>Ca,isHiddenTurn:()=>Jr,launchBulb:()=>Ja,listBreakouts:()=>Na,listBulbFiles:()=>Wa,listSessions:()=>Ba,logEmbedError:()=>Oa,openFile:()=>Fa,poll:()=>$a,predictTrustOf:()=>Ha,readBulbLog:()=>za,setBulbTrust:()=>Va,stopBreakout:()=>Ua});import{existsSync as Oe,openSync as Ms,readSync as Bs,closeSync as js,statSync as fe,readdirSync as Lr,watchFile as ua,unwatchFile as Is,mkdirSync as Fs,writeFileSync as Ls,readFileSync as Nr,unlinkSync as pa,rmSync as fa}from"fs";import{join as k}from"path";import{homedir as ma}from"os";function Ns(r){return r?.message??String(r)}function ha(r){return r.replace(/[^a-zA-Z0-9]/g,"-")}function Us(r){let e=Ur(r);if(!Oe(e))return[];let t;try{t=Lr(e)}catch{return[]}let n=[];for(let s of t){if(!s.endsWith(".jsonl"))continue;let o=k(e,s);try{let i=fe(o);i.isFile()&&n.push({sessionId:s.slice(0,-6),file:o,mtime:i.mtimeMs})}catch{}}return n}function qt(r){return k(r,ya)}function Js(r,e){return k(qt(r),`${e}.lock`)}function va(r,e){try{let t=Js(r,e);if(Date.now()-fe(t).mtimeMs>=Ws)return!1;try{if(parseInt(Nr(t,"utf8").trim(),10)===process.pid)return!1}catch{}return!0}catch{return!1}}function Hs(r,e){if(e)try{Fs(qt(r),{recursive:!0}),Ls(Js(r,e),String(process.pid))}catch(t){console.error("[lock] claim failed:",Ns(t))}}function xa(r){try{fa(k(r,".claude-bulb"),{recursive:!0,force:!0})}catch{}}function Sa(r){let e=qt(r);if(!Oe(e))return;let t;try{t=Lr(e)}catch{return}let n=Date.now();for(let s of t){if(!s.endsWith(".lock"))continue;let o=k(e,s);try{let i=fe(o);n-i.mtimeMs>wa&&pa(o)}catch{}}}function Wr(r){let e=r?.type==="image"?r.source:void 0;return e?.type==="base64"&&e.data?`![pasted image](data:${e.media_type||"image/png"};base64,${e.data})`:""}function at(r){return r.length>jr?r.slice(0,jr)+`
5
- \u2026[${r.length-jr} more characters truncated]`:r}function Fr(r){return typeof r=="string"?at(r):Array.isArray(r)?r.map(e=>{if(typeof e=="string")return at(e);let t=e;return typeof t?.text=="string"?at(t.text):t?.content!=null?Fr(t.content):Wr(t)}).join(`
6
- `):r==null?"":at(JSON.stringify(r))}function Vs(r){try{return fe(r),!1}catch(e){return e.code==="ENOENT"}}function zs(){let r=I;if(r.file&&!Vs(r.file)){Hs(r.cwd,r.sessionId);return}let e=Pa(r);e&&qs(e)}function Pa(r){if(!r.everAttached)return Ea(r.cwd)??Ra(r.cwd,()=>!0)}function Ea(r){let e=qt(r);if(!Oe(e))return;let t;try{t=Lr(e)}catch{return}let n;for(let o of t)if(o.endsWith(".lock"))try{let i=fe(k(e,o));if(Date.now()-i.mtimeMs>=Ws||parseInt(Nr(k(e,o),"utf8").trim(),10)!==process.pid)continue;(!n||i.mtimeMs>n.mtime)&&(n={sessionId:o.slice(0,-5),mtime:i.mtimeMs})}catch{}if(!n)return;let s=k(Ur(r),`${n.sessionId}.jsonl`);if(!Vs(s))return{sessionId:n.sessionId,file:s,mtime:n.mtime}}function Ra(r,e){return Us(r).sort((t,n)=>n.mtime-t.mtime).find(t=>!va(r,t.sessionId)&&e(t))}function qs(r){let e=I;if(e.file)try{Is(e.file)}catch{}e.file=r.file,e.sessionId=r.sessionId,e.everAttached=!0,e.partial="",e.offset=0,e.totals={in:0,out:0,cached:0,cacheCreate:0},e.entries=new Map,e.chainLastUuid=void 0,e.buffer.push({type:"cleared"}),e.buffer.push({type:"session",sessionId:r.sessionId}),Hs(e.cwd,r.sessionId),Os();try{Is(r.file)}catch{}ua(r.file,{interval:200},()=>Os())}function Os(){let r=I;if(!r.file)return;let e;try{e=fe(r.file).size}catch{return}if(e<=r.offset)return;let t;try{t=Ms(r.file,"r")}catch{return}try{let c=e-r.offset,l=Buffer.alloc(c),d=0;for(;d<c;){let u=Bs(t,l,d,c-d,r.offset+d);if(!u)break;d+=u}r.offset+=d,r.partial+=l.subarray(0,d).toString("utf8")}finally{js(t)}let n,s;for(;(s=r.partial.indexOf(`
7
- `))>=0;){let c=r.partial.slice(0,s);if(r.partial=r.partial.slice(s+1),!c.trim())continue;let l;try{l=JSON.parse(c)}catch{continue}l&&l.uuid&&(r.entries.set(l.uuid,l),l.isSidechain||(n=l.uuid))}if(!n)return;let o=[],i=r.entries.get(n),a=!1;for(;i;){if(o.push(i),i.uuid===r.chainLastUuid){a=!0;break}i=i.parentUuid?r.entries.get(i.parentUuid):void 0}if(a)for(let c=o.length-2;c>=0;c--)Ds(o[c]);else{r.chainLastUuid!==void 0&&(r.buffer.push({type:"cleared"}),r.buffer.push({type:"session",sessionId:r.sessionId}),r.totals={in:0,out:0,cached:0,cacheCreate:0});for(let c=o.length-1;c>=0;c--)Ds(o[c])}r.chainLastUuid=n}function Gs(r){let e=r.trim();return!!e&&ka.some(t=>t.test(e))}function _a(r){return r.replace(Ta,"")}function zt(r){let e=_a(r).trim();return e&&!Gs(e)?e:""}function Ks(r){return r?.type==="text"&&typeof r.text=="string"?zt(r.text):""}function Jr(r){return!!r.isSidechain||!!r.isMeta}function Ds(r){try{Aa(r)}catch(e){console.error("[claude-bulb] skipped malformed entry:",Ns(e))}}function Aa(r){if(Jr(r))return;let e=I;if(r.type==="user"){let t=r.message?.content;if(typeof t=="string"){let n=zt(t);n&&e.buffer.push({type:"user",text:n})}else if(Array.isArray(t))for(let n of t)if(n?.type==="tool_result")e.buffer.push({type:"tool_result",id:n.tool_use_id??"",content:Fr(n.content),isError:!!n.is_error});else{let s=Ks(n)||Wr(n);s&&e.buffer.push({type:"user",text:s})}}else if(r.type==="attachment"&&r.attachment?.type==="queued_command"){let t=zt(Fr(r.attachment.prompt));t&&e.buffer.push({type:"user",text:t})}else if(r.type==="assistant"){let t=r.message?.content,n=Array.isArray(t)?t:[],s=n.filter(c=>c.type==="text").map(c=>c.text??"").filter(c=>!Gs(c)).join(""),o=n.filter(c=>c.type==="thinking").map(c=>c.thinking??"").join(`
8
- `),i=n.filter(c=>c.type==="tool_use").map(c=>({id:c.id??"",name:c.name??"",input:c.input??{}}));if(s||o||i.length){let c=Date.parse(r.timestamp??""),l=!isNaN(c)&&c>=e.sessionStartMs;e.buffer.push({type:"assistant",text:s,thinking:o,tools:i,live:l})}let a=r.message?.usage??r.usage;a&&(e.totals.in+=a.input_tokens??0,e.totals.out+=a.output_tokens??0,e.totals.cached+=a.cache_read_input_tokens??0,e.totals.cacheCreate+=a.cache_creation_input_tokens??0,e.buffer.push({type:"usage",...e.totals}))}}async function Ca(){return{cwd:I.cwd,pid:process.pid}}async function $a(r){let e=I;return zs(),{events:e.buffer.slice(r),cursor:e.buffer.length,working:Da(e)}}async function Oa(r,e){Ia.accept(r,e)&&console.log(e)}function Da(r){let e;for(let o of r.entries.values())(o.type==="user"||o.type==="assistant")&&(e=o);if(!e)return!1;if(e.type==="user")return!0;let n=(Array.isArray(e.message?.content)?e.message.content:[]).filter(o=>o.type==="tool_use").map(o=>o.id);if(n.length===0)return!1;let s=new Set;for(let o of r.entries.values()){let i=o.message?.content;if(Array.isArray(i))for(let a of i)a.type==="tool_result"&&a.tool_use_id&&s.add(a.tool_use_id)}return n.some(o=>o&&!s.has(o))}function Ma(r){let e;try{e=Ms(r,"r")}catch{return""}try{let n=65536;try{n=fe(r).size}catch{}let s=(l,d)=>{if(d<=0)return"";let u=Buffer.alloc(d),f=Bs(e,u,0,d,l);return u.subarray(0,f).toString("utf8")},o=(l,d,u)=>{let f="";for(let m of l.split(`
9
- `)){if(!m.includes(`"${d}"`))continue;let h;try{h=JSON.parse(m)}catch{continue}let w=h?.[u];h?.type===d&&typeof w=="string"&&w&&(f=w)}return f},i=s(0,Math.min(65536,n)),a=n>65536?s(n-65536,65536):"",c=o(a,"custom-title","customTitle")||o(i,"custom-title","customTitle")||o(a,"ai-title","aiTitle")||o(i,"ai-title","aiTitle");if(c)return c.replace(/\s+/g," ").trim().slice(0,200);for(let l of i.split(`
10
- `)){if(!l.trim())continue;let d;try{d=JSON.parse(l)}catch{continue}if(!d||Jr(d)||d.type!=="user")continue;let u=d.message?.content,f="";typeof u=="string"?f=zt(u):Array.isArray(u)&&(f=u.map(Ks).filter(Boolean).join(" "));let m=f.replace(/\s+/g," ").trim();if(m)return(m.replace(/^Continuing from a prior session\. Here is the summary of our work so far:\s*/i,"").trim()||m).slice(0,200)}return""}finally{js(e)}}async function Ba(){return Us(I.cwd).sort((r,e)=>e.mtime-r.mtime).map(({sessionId:r,file:e,mtime:t})=>({sessionId:r,mtime:t,preview:Ma(e)}))}async function ja(r){let e=I,t=k(Ur(e.cwd),`${r}.jsonl`);return Oe(t)?t===e.file?{ok:!0}:(qs({sessionId:r,file:t}),{ok:!0}):{ok:!1,error:"session not found"}}async function Fa(r,e){return Br(r,e),{ok:!0}}async function La(r){let e=I.cwd,t=k(e,"typebulbs");Fs(t,{recursive:!0});let n=Ir(r),s=`${n}.bulb.md`;for(let c=2;Oe(k(t,s))&&Nr(k(t,s),"utf8")!==r;c++)s=`${n}-${c}.bulb.md`;let o=k(t,s);Oe(o)||Ls(o,r);let i=k("typebulbs",s),a=await Bt(i,{cwd:e,open:!0});return{ok:!0,file:i,pid:a.pid,url:a.url}}async function Na(){return C(I.cwd)}async function Ua(r){return await Te(r),{ok:!0}}async function Wa(){return Dr(I.cwd).map(r=>({...r,trusted:le(r.path)}))}async function Ja(r,e){let t=I.cwd;e!=null&&Se(r,e);let n=await Bt(r,{cwd:t,open:!0,trust:e});return{ok:!0,file:n.file,pid:n.pid,url:n.url,trust:!!n.trust}}async function Ha(r){return{cap:await Mr(r)}}async function Va(r,e){return Se(r,e),{ok:!0}}async function za(r,e){return ke(r,e)}var ga,ba,Ur,ya,Ws,wa,jr,I,ka,Ta,Ia,Xs=B(()=>{Cs();$s();ga=".typebulb",ba=k(ma(),".claude","projects"),Ur=r=>k(ba,ha(r));ya=`${ga}/locks`,Ws=5e3,wa=6e4;jr=5e4;I={cwd:process.cwd(),sessionId:"",sessionStartMs:Date.now(),buffer:[],partial:"",offset:0,totals:{in:0,out:0,cached:0,cacheCreate:0},everAttached:!1,entries:new Map};ka=[/\[Request interrupted by user\b/i,/\[Tool use was interrupted\]/i,/Claude Code returned an error/i,/\[ede_diagnostic\]/i,/^No response requested\.?$/i,/^<task-notification\b/i,/^<system-reminder\b/i];Ta=/<ide_[a-z_]+>[\s\S]*?<\/ide_[a-z_]+>/gi;Ia=new Vt;xa(I.cwd);Sa(I.cwd);zs()});import*as no from"fs/promises";import*as X from"path";import*as zr from"fs/promises";import{existsSync as he,readFileSync as io}from"fs";import*as P from"path";import{pathToFileURL as ao}from"url";import{resolve as Yt}from"resolve.exports";import{init as qr,parse as Gr}from"es-module-lexer";function Kr(r,e){let t=P.join(r,"package.json");try{return JSON.parse(io(t,"utf8"))}catch{throw new Error(`--replace package '${e}' has no readable package.json at ${t}`)}}var Kt=["browser","import","default"],Vr=["node","import","default"];function Yr(r){let e=r.indexOf("=");if(e===-1)throw new Error(`--replace must be <name>=<path> (got '${r}')`);let t=r.slice(0,e).trim(),n=r.slice(e+1).trim();if(!t)throw new Error(`--replace missing package name (got '${r}')`);if(!n)throw new Error(`--replace missing path for '${t}'`);if(t.startsWith("@"))throw new Error(`--replace does not support scoped names yet; '${t}' is scoped`);return{name:t,dir:P.resolve(n)}}async function Xr(r){let{name:e,dir:t}=r;if(!he(t))throw new Error(`--replace path for '${e}' does not exist: ${t}`);let n=Kr(t,e),s=co(n,e),o=P.resolve(t,s);if(!he(o))throw new Error(`--replace package '${e}' entry not found on disk: ${o} \u2014 did you build it (e.g. \`pnpm run build\`)?`);let i=P.dirname(o),a=`/local/${e}/${P.basename(o)}`,c=lo(n,t);return await uo(e,o,i),{name:e,dir:t,entryAbs:o,serveDir:i,entryUrl:a,typesAbs:c}}function co(r,e){if(r.exports!==void 0){let n;try{n=Yt(r,".",{browser:!0,conditions:Kt})}catch(o){throw new Error(`--replace package '${e}' "exports" does not resolve a browser entry (conditions: ${Kt.join(", ")}): ${o instanceof Error?o.message:o}`)}let s=Xt(n);if(!s)throw new Error(`--replace package '${e}' "exports" did not resolve "." to a single file (conditions: ${Kt.join(", ")}); too complex to override.`);return s}let t=r.module??r.main;if(!t)throw new Error(`--replace package '${e}' has no "exports", "module", or "main" entry to resolve.`);return t}function lo(r,e){if(r.exports!==void 0)try{let n=Yt(r,".",{conditions:["types"]}),s=Xt(n);if(s){let o=P.resolve(e,s);if(he(o))return o}}catch{}let t=r.types??r.typings;if(t){let n=P.resolve(e,t);if(he(n))return n}}function Xt(r){if(typeof r=="string")return r;if(Array.isArray(r))return r.find(e=>typeof e=="string")}async function uo(r,e,t){await qr;let n=P.normalize(t),s=new Set,o=[e];for(;o.length;){let i=o.shift();if(s.has(i))continue;s.add(i);let a;try{a=await zr.readFile(i,"utf8")}catch{continue}let c,l;try{[c,,,l]=Gr(a,i)}catch{continue}if(i===e&&!l)throw new Error(`override package '${r}' entry is not an ES module (no import/export syntax); CommonJS or non-module entries aren't supported (esm.sh would have to transform it).`);for(let d of c){if(d.d===-2)continue;let u=d.n;if(u&&!u.startsWith("node:")){if(u.startsWith("./")||u.startsWith("../")||u.startsWith("/")){let f=po(i,u,n);f&&!s.has(f)&&o.push(f);continue}throw new Error(`override package must ship self-contained (bundle its dependencies); ${r} externalizes '${u}'`)}}}}function po(r,e,t){let n=e.replace(/[?#].*$/,""),s=P.resolve(P.dirname(r),n),o=[s,s+".js",s+".mjs",P.join(s,"index.js"),P.join(s,"index.mjs")];for(let i of o)if(P.normalize(i).startsWith(t)&&he(i))return i}function fo(r,e,t){let n=Kr(r,e),s;if(n.exports!==void 0)try{s=Xt(Yt(n,t,{conditions:Vr}))}catch(i){throw new Error(`--replace package '${e}' "exports" does not resolve a node entry for '${t}' (conditions: ${Vr.join(", ")}): ${i instanceof Error?i.message:i}`)}else t==="."&&(s=n.main??n.module);if(!s)throw new Error(`--replace package '${e}' has no node export for '${t}'.`);let o=P.resolve(r,s);if(!he(o))throw new Error(`--replace package '${e}' built file not found: ${o} \u2014 did you build it (e.g. \`pnpm run build\`)?`);return ao(o).href}async function Qr(r,e){await qr;let t;try{[t]=Gr(r)}catch{return r}let n="",s=0;for(let o of t){if(o.d!==-1)continue;let i=o.n;if(!i||i!==e.name&&!i.startsWith(e.name+"/"))continue;let a=i===e.name?".":"."+i.slice(e.name.length),c=fo(e.dir,e.name,a);n+=r.slice(s,o.s)+c,s=o.e}return n+r.slice(s)}function Zr(r){let e={subcommand:"run",file:"",port:3e3,watch:!0,open:!0,server:!1,trust:!1,noTrust:!1,follow:!1,help:!1,version:!1},t=["check","predict","logs","stop","trust","untrust","skill","models"],n=r[0];if(n==="agent"||n?.startsWith("agent:")){e.subcommand="agent";let s=n.indexOf(":");if(s!==-1){let o=n.slice(s+1);o&&(e.agentTarget=o)}r=r.slice(1)}else n&&t.includes(n)&&(e.subcommand=n,r=r.slice(1));for(let s=0;s<r.length;s++){let o=r[s];if(o==="--help"||o==="-h")e.help=!0;else if(o==="--version"||o==="-V")e.version=!0;else if(o==="--no-watch")e.watch=!1;else if(o==="--no-open")e.open=!1;else if(o==="--server")e.server=!0;else if(o==="--trust")e.trust=!0;else if(o==="--no-trust")e.noTrust=!0;else if(o==="--mode"){let i=r[++s];(!i||i.startsWith("-"))&&(console.error("Missing value for --mode (e.g. --mode staging)"),process.exit(1)),e.mode=i}else if(o==="--follow"||o==="-f")e.follow=!0;else if(o==="--bulbs")e.stopScope="bulbs";else if(o==="--agent")e.stopScope="agent";else if(o==="--global")e.stopScope="global";else if(o==="--lines"||o==="-n"){let i=parseInt(r[++s],10);(isNaN(i)||i<0)&&(console.error(`Invalid --lines value: ${r[s]}`),process.exit(1)),e.lines=i}else if(o==="--port"||o==="-p"){let i=r[++s],a=parseInt(i,10);isNaN(a)&&(console.error(`Invalid port: ${i}`),process.exit(1)),e.port=a}else if(o==="--replace"||o.startsWith("--replace=")){let i=o.startsWith("--replace=")?o.slice(10):r[++s]??"";try{let a=Yr(i);if(e.local)throw new Error(`--replace can only be used once (got '${e.local.name}' and '${a.name}')`);e.local=a}catch(a){console.error(a instanceof Error?a.message:String(a)),process.exit(1)}}else o.startsWith("-")||(e.file=o)}return e}function en(){console.log(`
2
+ import { createRequire as __cr } from 'module'; const require = __cr(import.meta.url);
3
+ var Ed=Object.create;var vn=Object.defineProperty;var Td=Object.getOwnPropertyDescriptor;var Ad=Object.getOwnPropertyNames;var Pd=Object.getPrototypeOf,Od=Object.prototype.hasOwnProperty;var Nr=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var N=(r,e)=>()=>(r&&(e=r(r=0)),e);var S=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Nd=(r,e)=>{for(var t in e)vn(r,t,{get:e[t],enumerable:!0})},Cd=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ad(e))!Od.call(r,n)&&n!==t&&vn(r,n,{get:()=>e[n],enumerable:!(s=Td(e,n))||s.enumerable});return r};var Id=(r,e,t)=>(t=r!=null?Ed(Pd(r)):{},Cd(e||!r||!r.__esModule?vn(t,"default",{value:r,enumerable:!0}):t,r));function ba(r){return!!r?.startsWith("typebulb")}var En,Tn,Cr=N(()=>{En={code:{path:"code.tsx",language:"typescript"},css:{path:"styles.css",language:"css"},html:{path:"index.html",language:"html"},config:{path:"config.json",language:"json"},notes:{path:"notes.md",language:"markdown"},data:{path:"data.txt",language:"text"},infer:{path:"infer.md",language:"markdown"},insight:{path:"insight.json",language:"json"}},Tn=["code","css","html","data","infer","insight","config","notes"]});function An(r){return r.startsWith('"')&&r.endsWith('"')?r.slice(1,-1).replace(/\\"/g,'"'):r.startsWith("'")&&r.endsWith("'")?r.slice(1,-1):r}var Ir=N(()=>{});function Rr(r){try{let e=r.split(`
4
+ `),t=0;if(e[t]?.trim()!=="---")return null;t++;let s=[];for(;t<e.length&&e[t]?.trim()!=="---";)s.push(e[t]),t++;if(e[t]?.trim()!=="---")return null;t++;let n=Bd(s);if(!n)return null;let i=new Map;for(;t<e.length;){let a=e[t]?.trim()?.match(/^\*\*(.+)\*\*$/);if(a){let c=a[1].trim();for(t++;t<e.length&&e[t]?.trim()==="";)t++;let l=e[t]?.match(/^(`{3,})(\w*)\s*$/);if(!l){t++;continue}let f=l[1];t++;let u=[];for(;t<e.length&&!e[t]?.match(new RegExp(`^${f}\\s*$`));)u.push(e[t]),t++;t++,i.set(c,u.join(`
5
+ `))}else t++}return{frontmatter:n,files:i}}catch{return null}}function Bd(r){let e={};for(let t of r){let s=t.indexOf(":");if(s===-1)continue;let n=t.slice(0,s).trim(),i=t.slice(s+1).trim();switch(n){case"format":e.format=i;break;case"name":e.name=An(i);break}}return!ba(e.format)||!e.name?null:e}function wa(r){let e=Object.fromEntries(Tn.map(t=>[t,r.files.get(En[t].path)||""]));return{name:r.frontmatter.name,...e}}var va=N(()=>{Cr();Ir()});var Sa=N(()=>{Cr();Ir()});function ka(r){if(!r.trim())return{};try{return JSON.parse(r)}catch{return{}}}var xa=N(()=>{});var Ea=N(()=>{});function Pn(r,e,t){let n=new RegExp(e).exec(r.slice(t));return n?t+n.index:-1}var Ta=N(()=>{});function Tt(r,e,t){let n=new RegExp(e).exec(r.slice(t));return n?t+n.index+n[0].length-1:-1}var Aa=N(()=>{});function _r(r,e){let t=new RegExp(e,"g"),s=r.match(t);return s?s.length:0}var Pa=N(()=>{});function At(r,e,t){let s=t&&t.debug||!1,n=!(t&&typeof t.nested===!1),i=t&&t.startIndex||0;s&&console.log("[xml-utils] starting findTagByName with",e," and ",t);let o=Pn(r,`<${e}[
6
+ >/]`,i);if(s&&console.log("[xml-utils] start:",o),o===-1)return;let a=r.slice(o+e.length),c=Tt(a,"^[^<]*[ /]>",0),l=c!==-1&&a[c-1]==="/";if(s&&console.log("[xml-utils] selfClosing:",l),l===!1)if(n){let h=0,g=1,p=0;for(;(c=Tt(a,"[ /]"+e+">",h))!==-1;){let y=a.substring(h,c+1);if(g+=_r(y,"<"+e+`[
7
+ >]`),p+=_r(y,"</"+e+">"),p>=g)break;h=c}}else c=Tt(a,"[ /]"+e+">",0);let f=o+e.length+c+1;if(s&&console.log("[xml-utils] end:",f),f===-1)return;let u=r.slice(o,f),d;return l?d=null:d=u.slice(u.indexOf(">")+1,u.lastIndexOf("<")),{inner:d,outer:u,start:o,end:f}}var On=N(()=>{Ta();Aa();Pa()});var Nn=N(()=>{On()});var Cn=N(()=>{Nn()});var Oa=N(()=>{Cn()});var Na=N(()=>{});var Ca=N(()=>{Ea();On();Nn();Oa();Cn();Na()});var P=S(M=>{"use strict";var In=Symbol.for("yaml.alias"),Ia=Symbol.for("yaml.document"),Lr=Symbol.for("yaml.map"),Ra=Symbol.for("yaml.pair"),Rn=Symbol.for("yaml.scalar"),$r=Symbol.for("yaml.seq"),ue=Symbol.for("yaml.node.type"),Kd=r=>!!r&&typeof r=="object"&&r[ue]===In,Jd=r=>!!r&&typeof r=="object"&&r[ue]===Ia,Vd=r=>!!r&&typeof r=="object"&&r[ue]===Lr,Wd=r=>!!r&&typeof r=="object"&&r[ue]===Ra,_a=r=>!!r&&typeof r=="object"&&r[ue]===Rn,Yd=r=>!!r&&typeof r=="object"&&r[ue]===$r;function La(r){if(r&&typeof r=="object")switch(r[ue]){case Lr:case $r:return!0}return!1}function Hd(r){if(r&&typeof r=="object")switch(r[ue]){case In:case Lr:case Rn:case $r:return!0}return!1}var Gd=r=>(_a(r)||La(r))&&!!r.anchor;M.ALIAS=In;M.DOC=Ia;M.MAP=Lr;M.NODE_TYPE=ue;M.PAIR=Ra;M.SCALAR=Rn;M.SEQ=$r;M.hasAnchor=Gd;M.isAlias=Kd;M.isCollection=La;M.isDocument=Jd;M.isMap=Vd;M.isNode=Hd;M.isPair=Wd;M.isScalar=_a;M.isSeq=Yd});var Pt=S(_n=>{"use strict";var $=P(),J=Symbol("break visit"),$a=Symbol("skip children"),oe=Symbol("remove node");function Mr(r,e){let t=Ma(e);$.isDocument(r)?Qe(null,r.contents,t,Object.freeze([r]))===oe&&(r.contents=null):Qe(null,r,t,Object.freeze([]))}Mr.BREAK=J;Mr.SKIP=$a;Mr.REMOVE=oe;function Qe(r,e,t,s){let n=Da(r,e,t,s);if($.isNode(n)||$.isPair(n))return qa(r,s,n),Qe(r,n,t,s);if(typeof n!="symbol"){if($.isCollection(e)){s=Object.freeze(s.concat(e));for(let i=0;i<e.items.length;++i){let o=Qe(i,e.items[i],t,s);if(typeof o=="number")i=o-1;else{if(o===J)return J;o===oe&&(e.items.splice(i,1),i-=1)}}}else if($.isPair(e)){s=Object.freeze(s.concat(e));let i=Qe("key",e.key,t,s);if(i===J)return J;i===oe&&(e.key=null);let o=Qe("value",e.value,t,s);if(o===J)return J;o===oe&&(e.value=null)}}return n}async function Dr(r,e){let t=Ma(e);$.isDocument(r)?await Xe(null,r.contents,t,Object.freeze([r]))===oe&&(r.contents=null):await Xe(null,r,t,Object.freeze([]))}Dr.BREAK=J;Dr.SKIP=$a;Dr.REMOVE=oe;async function Xe(r,e,t,s){let n=await Da(r,e,t,s);if($.isNode(n)||$.isPair(n))return qa(r,s,n),Xe(r,n,t,s);if(typeof n!="symbol"){if($.isCollection(e)){s=Object.freeze(s.concat(e));for(let i=0;i<e.items.length;++i){let o=await Xe(i,e.items[i],t,s);if(typeof o=="number")i=o-1;else{if(o===J)return J;o===oe&&(e.items.splice(i,1),i-=1)}}}else if($.isPair(e)){s=Object.freeze(s.concat(e));let i=await Xe("key",e.key,t,s);if(i===J)return J;i===oe&&(e.key=null);let o=await Xe("value",e.value,t,s);if(o===J)return J;o===oe&&(e.value=null)}}return n}function Ma(r){return typeof r=="object"&&(r.Collection||r.Node||r.Value)?Object.assign({Alias:r.Node,Map:r.Node,Scalar:r.Node,Seq:r.Node},r.Value&&{Map:r.Value,Scalar:r.Value,Seq:r.Value},r.Collection&&{Map:r.Collection,Seq:r.Collection},r):r}function Da(r,e,t,s){if(typeof t=="function")return t(r,e,s);if($.isMap(e))return t.Map?.(r,e,s);if($.isSeq(e))return t.Seq?.(r,e,s);if($.isPair(e))return t.Pair?.(r,e,s);if($.isScalar(e))return t.Scalar?.(r,e,s);if($.isAlias(e))return t.Alias?.(r,e,s)}function qa(r,e,t){let s=e[e.length-1];if($.isCollection(s))s.items[r]=t;else if($.isPair(s))r==="key"?s.key=t:s.value=t;else if($.isDocument(s))s.contents=t;else{let n=$.isAlias(s)?"alias":"scalar";throw new Error(`Cannot replace node with ${n} parent`)}}_n.visit=Mr;_n.visitAsync=Dr});var Ln=S(ja=>{"use strict";var Ba=P(),zd=Pt(),Qd={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},Xd=r=>r.replace(/[!,[\]{}]/g,e=>Qd[e]),Ot=class r{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},r.defaultYaml,e),this.tags=Object.assign({},r.defaultTags,t)}clone(){let e=new r(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new r(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:r.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},r.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:r.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},r.defaultTags),this.atNextDocument=!1);let s=e.trim().split(/[ \t]+/),n=s.shift();switch(n){case"%TAG":{if(s.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),s.length<2))return!1;let[i,o]=s;return this.tags[i]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,s.length!==1)return t(0,"%YAML directive should contain exactly one part"),!1;let[i]=s;if(i==="1.1"||i==="1.2")return this.yaml.version=i,!0;{let o=/^\d+\.\d+$/.test(i);return t(6,`Unsupported YAML version ${i}`,o),!1}}default:return t(0,`Unknown directive ${n}`,!0),!1}}tagName(e,t){if(e==="!")return"!";if(e[0]!=="!")return t(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let o=e.slice(2,-1);return o==="!"||o==="!!"?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&t("Verbatim tags must end with a >"),o)}let[,s,n]=e.match(/^(.*!)([^!]*)$/s);n||t(`The ${e} tag has no suffix`);let i=this.tags[s];if(i)try{return i+decodeURIComponent(n)}catch(o){return t(String(o)),null}return s==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,s]of Object.entries(this.tags))if(e.startsWith(s))return t+Xd(e.substring(s.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],s=Object.entries(this.tags),n;if(e&&s.length>0&&Ba.isNode(e.contents)){let i={};zd.visit(e.contents,(o,a)=>{Ba.isNode(a)&&a.tag&&(i[a.tag]=!0)}),n=Object.keys(i)}else n=[];for(let[i,o]of s)i==="!!"&&o==="tag:yaml.org,2002:"||(!e||n.some(a=>a.startsWith(o)))&&t.push(`%TAG ${i} ${o}`);return t.join(`
8
+ `)}};Ot.defaultYaml={explicit:!1,version:"1.2"};Ot.defaultTags={"!!":"tag:yaml.org,2002:"};ja.Directives=Ot});var qr=S(Nt=>{"use strict";var Fa=P(),Zd=Pt();function ep(r){if(/[\x00-\x19\s,[\]{}]/.test(r)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(r)}`;throw new Error(t)}return!0}function Ua(r){let e=new Set;return Zd.visit(r,{Value(t,s){s.anchor&&e.add(s.anchor)}}),e}function Ka(r,e){for(let t=1;;++t){let s=`${r}${t}`;if(!e.has(s))return s}}function tp(r,e){let t=[],s=new Map,n=null;return{onAnchor:i=>{t.push(i),n??(n=Ua(r));let o=Ka(e,n);return n.add(o),o},setAnchors:()=>{for(let i of t){let o=s.get(i);if(typeof o=="object"&&o.anchor&&(Fa.isScalar(o.node)||Fa.isCollection(o.node)))o.node.anchor=o.anchor;else{let a=new Error("Failed to resolve repeated object (this should not happen)");throw a.source=i,a}}},sourceObjects:s}}Nt.anchorIsValid=ep;Nt.anchorNames=Ua;Nt.createNodeAnchors=tp;Nt.findNewAnchor=Ka});var $n=S(Ja=>{"use strict";function Ct(r,e,t,s){if(s&&typeof s=="object")if(Array.isArray(s))for(let n=0,i=s.length;n<i;++n){let o=s[n],a=Ct(r,s,String(n),o);a===void 0?delete s[n]:a!==o&&(s[n]=a)}else if(s instanceof Map)for(let n of Array.from(s.keys())){let i=s.get(n),o=Ct(r,s,n,i);o===void 0?s.delete(n):o!==i&&s.set(n,o)}else if(s instanceof Set)for(let n of Array.from(s)){let i=Ct(r,s,n,n);i===void 0?s.delete(n):i!==n&&(s.delete(n),s.add(i))}else for(let[n,i]of Object.entries(s)){let o=Ct(r,s,n,i);o===void 0?delete s[n]:o!==i&&(s[n]=o)}return r.call(e,t,s)}Ja.applyReviver=Ct});var ye=S(Wa=>{"use strict";var rp=P();function Va(r,e,t){if(Array.isArray(r))return r.map((s,n)=>Va(s,String(n),t));if(r&&typeof r.toJSON=="function"){if(!t||!rp.hasAnchor(r))return r.toJSON(e,t);let s={aliasCount:0,count:1,res:void 0};t.anchors.set(r,s),t.onCreate=i=>{s.res=i,delete t.onCreate};let n=r.toJSON(e,t);return t.onCreate&&t.onCreate(n),n}return typeof r=="bigint"&&!t?.keep?Number(r):r}Wa.toJS=Va});var Br=S(Ha=>{"use strict";var sp=$n(),Ya=P(),np=ye(),Mn=class{constructor(e){Object.defineProperty(this,Ya.NODE_TYPE,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:s,onAnchor:n,reviver:i}={}){if(!Ya.isDocument(e))throw new TypeError("A document argument is required");let o={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof s=="number"?s:100},a=np.toJS(this,"",o);if(typeof n=="function")for(let{count:c,res:l}of o.anchors.values())n(l,c);return typeof i=="function"?sp.applyReviver(i,{"":a},"",a):a}};Ha.NodeBase=Mn});var It=S(Ga=>{"use strict";var ip=qr(),op=Pt(),Ze=P(),ap=Br(),cp=ye(),Dn=class extends ap.NodeBase{constructor(e){super(Ze.ALIAS),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,t){let s;t?.aliasResolveCache?s=t.aliasResolveCache:(s=[],op.visit(e,{Node:(i,o)=>{(Ze.isAlias(o)||Ze.hasAnchor(o))&&s.push(o)}}),t&&(t.aliasResolveCache=s));let n;for(let i of s){if(i===this)break;i.anchor===this.source&&(n=i)}return n}toJSON(e,t){if(!t)return{source:this.source};let{anchors:s,doc:n,maxAliasCount:i}=t,o=this.resolve(n,t);if(!o){let c=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(c)}let a=s.get(o);if(a||(cp.toJS(o,null,t),a=s.get(o)),a?.res===void 0){let c="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(c)}if(i>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=jr(n,o,s)),a.count*a.aliasCount>i)){let c="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(c)}return a.res}toString(e,t,s){let n=`*${this.source}`;if(e){if(ip.anchorIsValid(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let i=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(i)}if(e.implicitKey)return`${n} `}return n}};function jr(r,e,t){if(Ze.isAlias(e)){let s=e.resolve(r),n=t&&s&&t.get(s);return n?n.count*n.aliasCount:0}else if(Ze.isCollection(e)){let s=0;for(let n of e.items){let i=jr(r,n,t);i>s&&(s=i)}return s}else if(Ze.isPair(e)){let s=jr(r,e.key,t),n=jr(r,e.value,t);return Math.max(s,n)}return 1}Ga.Alias=Dn});var _=S(qn=>{"use strict";var lp=P(),up=Br(),fp=ye(),dp=r=>!r||typeof r!="function"&&typeof r!="object",be=class extends up.NodeBase{constructor(e){super(lp.SCALAR),this.value=e}toJSON(e,t){return t?.keep?this.value:fp.toJS(this.value,e,t)}toString(){return String(this.value)}};be.BLOCK_FOLDED="BLOCK_FOLDED";be.BLOCK_LITERAL="BLOCK_LITERAL";be.PLAIN="PLAIN";be.QUOTE_DOUBLE="QUOTE_DOUBLE";be.QUOTE_SINGLE="QUOTE_SINGLE";qn.Scalar=be;qn.isScalarValue=dp});var Rt=S(Qa=>{"use strict";var pp=It(),Re=P(),za=_(),hp="tag:yaml.org,2002:";function mp(r,e,t){if(e){let s=t.filter(i=>i.tag===e),n=s.find(i=>!i.format)??s[0];if(!n)throw new Error(`Tag ${e} not found`);return n}return t.find(s=>s.identify?.(r)&&!s.format)}function gp(r,e,t){if(Re.isDocument(r)&&(r=r.contents),Re.isNode(r))return r;if(Re.isPair(r)){let u=t.schema[Re.MAP].createNode?.(t.schema,null,t);return u.items.push(r),u}(r instanceof String||r instanceof Number||r instanceof Boolean||typeof BigInt<"u"&&r instanceof BigInt)&&(r=r.valueOf());let{aliasDuplicateObjects:s,onAnchor:n,onTagObj:i,schema:o,sourceObjects:a}=t,c;if(s&&r&&typeof r=="object"){if(c=a.get(r),c)return c.anchor??(c.anchor=n(r)),new pp.Alias(c.anchor);c={anchor:null,node:null},a.set(r,c)}e?.startsWith("!!")&&(e=hp+e.slice(2));let l=mp(r,e,o.tags);if(!l){if(r&&typeof r.toJSON=="function"&&(r=r.toJSON()),!r||typeof r!="object"){let u=new za.Scalar(r);return c&&(c.node=u),u}l=r instanceof Map?o[Re.MAP]:Symbol.iterator in Object(r)?o[Re.SEQ]:o[Re.MAP]}i&&(i(l),delete t.onTagObj);let f=l?.createNode?l.createNode(t.schema,r,t):typeof l?.nodeClass?.from=="function"?l.nodeClass.from(t.schema,r,t):new za.Scalar(r);return e?f.tag=e:l.default||(f.tag=l.tag),c&&(c.node=f),f}Qa.createNode=gp});var Ur=S(Fr=>{"use strict";var yp=Rt(),ae=P(),bp=Br();function Bn(r,e,t){let s=t;for(let n=e.length-1;n>=0;--n){let i=e[n];if(typeof i=="number"&&Number.isInteger(i)&&i>=0){let o=[];o[i]=s,s=o}else s=new Map([[i,s]])}return yp.createNode(s,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:r,sourceObjects:new Map})}var Xa=r=>r==null||typeof r=="object"&&!!r[Symbol.iterator]().next().done,jn=class extends bp.NodeBase{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(s=>ae.isNode(s)||ae.isPair(s)?s.clone(e):s),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Xa(e))this.add(t);else{let[s,...n]=e,i=this.get(s,!0);if(ae.isCollection(i))i.addIn(n,t);else if(i===void 0&&this.schema)this.set(s,Bn(this.schema,n,t));else throw new Error(`Expected YAML collection at ${s}. Remaining path: ${n}`)}}deleteIn(e){let[t,...s]=e;if(s.length===0)return this.delete(t);let n=this.get(t,!0);if(ae.isCollection(n))return n.deleteIn(s);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${s}`)}getIn(e,t){let[s,...n]=e,i=this.get(s,!0);return n.length===0?!t&&ae.isScalar(i)?i.value:i:ae.isCollection(i)?i.getIn(n,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!ae.isPair(t))return!1;let s=t.value;return s==null||e&&ae.isScalar(s)&&s.value==null&&!s.commentBefore&&!s.comment&&!s.tag})}hasIn(e){let[t,...s]=e;if(s.length===0)return this.has(t);let n=this.get(t,!0);return ae.isCollection(n)?n.hasIn(s):!1}setIn(e,t){let[s,...n]=e;if(n.length===0)this.set(s,t);else{let i=this.get(s,!0);if(ae.isCollection(i))i.setIn(n,t);else if(i===void 0&&this.schema)this.set(s,Bn(this.schema,n,t));else throw new Error(`Expected YAML collection at ${s}. Remaining path: ${n}`)}}};Fr.Collection=jn;Fr.collectionFromPath=Bn;Fr.isEmptyPath=Xa});var _t=S(Kr=>{"use strict";var wp=r=>r.replace(/^(?!$)(?: $)?/gm,"#");function Fn(r,e){return/^\n+$/.test(r)?r.substring(1):e?r.replace(/^(?! *$)/gm,e):r}var vp=(r,e,t)=>r.endsWith(`
9
+ `)?Fn(t,e):t.includes(`
10
+ `)?`
11
+ `+Fn(t,e):(r.endsWith(" ")?"":" ")+t;Kr.indentComment=Fn;Kr.lineComment=vp;Kr.stringifyComment=wp});var ec=S(Lt=>{"use strict";var Sp="flow",Un="block",Jr="quoted";function kp(r,e,t="flow",{indentAtStart:s,lineWidth:n=80,minContentWidth:i=20,onFold:o,onOverflow:a}={}){if(!n||n<0)return r;n<i&&(i=0);let c=Math.max(1+i,1+n-e.length);if(r.length<=c)return r;let l=[],f={},u=n-e.length;typeof s=="number"&&(s>n-Math.max(2,i)?l.push(0):u=n-s);let d,h,g=!1,p=-1,y=-1,x=-1;t===Un&&(p=Za(r,p,e.length),p!==-1&&(u=p+c));for(let E;E=r[p+=1];){if(t===Jr&&E==="\\"){switch(y=p,r[p+1]){case"x":p+=3;break;case"u":p+=5;break;case"U":p+=9;break;default:p+=1}x=p}if(E===`
12
+ `)t===Un&&(p=Za(r,p,e.length)),u=p+e.length+c,d=void 0;else{if(E===" "&&h&&h!==" "&&h!==`
13
+ `&&h!==" "){let m=r[p+1];m&&m!==" "&&m!==`
14
+ `&&m!==" "&&(d=p)}if(p>=u)if(d)l.push(d),u=d+c,d=void 0;else if(t===Jr){for(;h===" "||h===" ";)h=E,E=r[p+=1],g=!0;let m=p>x+1?p-2:y-1;if(f[m])return r;l.push(m),f[m]=!0,u=m+c,d=void 0}else g=!0}h=E}if(g&&a&&a(),l.length===0)return r;o&&o();let k=r.slice(0,l[0]);for(let E=0;E<l.length;++E){let m=l[E],b=l[E+1]||r.length;m===0?k=`
15
+ ${e}${r.slice(0,b)}`:(t===Jr&&f[m]&&(k+=`${r[m]}\\`),k+=`
16
+ ${e}${r.slice(m+1,b)}`)}return k}function Za(r,e,t){let s=e,n=e+1,i=r[n];for(;i===" "||i===" ";)if(e<n+t)i=r[++e];else{do i=r[++e];while(i&&i!==`
17
+ `);s=e,n=e+1,i=r[n]}return s}Lt.FOLD_BLOCK=Un;Lt.FOLD_FLOW=Sp;Lt.FOLD_QUOTED=Jr;Lt.foldFlowLines=kp});var Mt=S(tc=>{"use strict";var Z=_(),we=ec(),Wr=(r,e)=>({indentAtStart:e?r.indent.length:r.indentAtStart,lineWidth:r.options.lineWidth,minContentWidth:r.options.minContentWidth}),Yr=r=>/^(%|---|\.\.\.)/m.test(r);function xp(r,e,t){if(!e||e<0)return!1;let s=e-t,n=r.length;if(n<=s)return!1;for(let i=0,o=0;i<n;++i)if(r[i]===`
18
+ `){if(i-o>s)return!0;if(o=i+1,n-o<=s)return!1}return!0}function $t(r,e){let t=JSON.stringify(r);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:s}=e,n=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(Yr(r)?" ":""),o="",a=0;for(let c=0,l=t[c];l;l=t[++c])if(l===" "&&t[c+1]==="\\"&&t[c+2]==="n"&&(o+=t.slice(a,c)+"\\ ",c+=1,a=c,l="\\"),l==="\\")switch(t[c+1]){case"u":{o+=t.slice(a,c);let f=t.substr(c+2,4);switch(f){case"0000":o+="\\0";break;case"0007":o+="\\a";break;case"000b":o+="\\v";break;case"001b":o+="\\e";break;case"0085":o+="\\N";break;case"00a0":o+="\\_";break;case"2028":o+="\\L";break;case"2029":o+="\\P";break;default:f.substr(0,2)==="00"?o+="\\x"+f.substr(2):o+=t.substr(c,6)}c+=5,a=c+1}break;case"n":if(s||t[c+2]==='"'||t.length<n)c+=1;else{for(o+=t.slice(a,c)+`
19
+
20
+ `;t[c+2]==="\\"&&t[c+3]==="n"&&t[c+4]!=='"';)o+=`
21
+ `,c+=2;o+=i,t[c+2]===" "&&(o+="\\"),c+=1,a=c+1}break;default:c+=1}return o=a?o+t.slice(a):t,s?o:we.foldFlowLines(o,i,we.FOLD_QUOTED,Wr(e,!1))}function Kn(r,e){if(e.options.singleQuote===!1||e.implicitKey&&r.includes(`
22
+ `)||/[ \t]\n|\n[ \t]/.test(r))return $t(r,e);let t=e.indent||(Yr(r)?" ":""),s="'"+r.replace(/'/g,"''").replace(/\n+/g,`$&
23
+ ${t}`)+"'";return e.implicitKey?s:we.foldFlowLines(s,t,we.FOLD_FLOW,Wr(e,!1))}function et(r,e){let{singleQuote:t}=e.options,s;if(t===!1)s=$t;else{let n=r.includes('"'),i=r.includes("'");n&&!i?s=Kn:i&&!n?s=$t:s=t?Kn:$t}return s(r,e)}var Jn;try{Jn=new RegExp(`(^|(?<!
24
+ ))
25
+ +(?!
26
+ |$)`,"g")}catch{Jn=/\n+(?!\n|$)/g}function Vr({comment:r,type:e,value:t},s,n,i){let{blockQuote:o,commentString:a,lineWidth:c}=s.options;if(!o||/\n[\t ]+$/.test(t))return et(t,s);let l=s.indent||(s.forceBlockIndent||Yr(t)?" ":""),f=o==="literal"?!0:o==="folded"||e===Z.Scalar.BLOCK_FOLDED?!1:e===Z.Scalar.BLOCK_LITERAL?!0:!xp(t,c,l.length);if(!t)return f?`|
27
+ `:`>
28
+ `;let u,d;for(d=t.length;d>0;--d){let b=t[d-1];if(b!==`
29
+ `&&b!==" "&&b!==" ")break}let h=t.substring(d),g=h.indexOf(`
30
+ `);g===-1?u="-":t===h||g!==h.length-1?(u="+",i&&i()):u="",h&&(t=t.slice(0,-h.length),h[h.length-1]===`
31
+ `&&(h=h.slice(0,-1)),h=h.replace(Jn,`$&${l}`));let p=!1,y,x=-1;for(y=0;y<t.length;++y){let b=t[y];if(b===" ")p=!0;else if(b===`
32
+ `)x=y;else break}let k=t.substring(0,x<y?x+1:y);k&&(t=t.substring(k.length),k=k.replace(/\n+/g,`$&${l}`));let m=(p?l?"2":"1":"")+u;if(r&&(m+=" "+a(r.replace(/ ?[\r\n]+/g," ")),n&&n()),!f){let b=t.replace(/\n+/g,`
33
+ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${l}`),v=!1,T=Wr(s,!0);o!=="folded"&&e!==Z.Scalar.BLOCK_FOLDED&&(T.onOverflow=()=>{v=!0});let w=we.foldFlowLines(`${k}${b}${h}`,l,we.FOLD_BLOCK,T);if(!v)return`>${m}
34
+ ${l}${w}`}return t=t.replace(/\n+/g,`$&${l}`),`|${m}
35
+ ${l}${k}${t}${h}`}function Ep(r,e,t,s){let{type:n,value:i}=r,{actualString:o,implicitKey:a,indent:c,indentStep:l,inFlow:f}=e;if(a&&i.includes(`
36
+ `)||f&&/[[\]{},]/.test(i))return et(i,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(i))return a||f||!i.includes(`
37
+ `)?et(i,e):Vr(r,e,t,s);if(!a&&!f&&n!==Z.Scalar.PLAIN&&i.includes(`
38
+ `))return Vr(r,e,t,s);if(Yr(i)){if(c==="")return e.forceBlockIndent=!0,Vr(r,e,t,s);if(a&&c===l)return et(i,e)}let u=i.replace(/\n+/g,`$&
39
+ ${c}`);if(o){let d=p=>p.default&&p.tag!=="tag:yaml.org,2002:str"&&p.test?.test(u),{compat:h,tags:g}=e.doc.schema;if(g.some(d)||h?.some(d))return et(i,e)}return a?u:we.foldFlowLines(u,c,we.FOLD_FLOW,Wr(e,!1))}function Tp(r,e,t,s){let{implicitKey:n,inFlow:i}=e,o=typeof r.value=="string"?r:Object.assign({},r,{value:String(r.value)}),{type:a}=r;a!==Z.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(a=Z.Scalar.QUOTE_DOUBLE);let c=f=>{switch(f){case Z.Scalar.BLOCK_FOLDED:case Z.Scalar.BLOCK_LITERAL:return n||i?et(o.value,e):Vr(o,e,t,s);case Z.Scalar.QUOTE_DOUBLE:return $t(o.value,e);case Z.Scalar.QUOTE_SINGLE:return Kn(o.value,e);case Z.Scalar.PLAIN:return Ep(o,e,t,s);default:return null}},l=c(a);if(l===null){let{defaultKeyType:f,defaultStringType:u}=e.options,d=n&&f||u;if(l=c(d),l===null)throw new Error(`Unsupported default string type ${d}`)}return l}tc.stringifyString=Tp});var Dt=S(Vn=>{"use strict";var Ap=qr(),ve=P(),Pp=_t(),Op=Mt();function Np(r,e){let t=Object.assign({blockQuote:!0,commentString:Pp.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},r.schema.toStringOptions,e),s;switch(t.collectionStyle){case"block":s=!1;break;case"flow":s=!0;break;default:s=null}return{anchors:new Set,doc:r,flowCollectionPadding:t.flowCollectionPadding?" ":"",indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:s,options:t}}function Cp(r,e){if(e.tag){let n=r.filter(i=>i.tag===e.tag);if(n.length>0)return n.find(i=>i.format===e.format)??n[0]}let t,s;if(ve.isScalar(e)){s=e.value;let n=r.filter(i=>i.identify?.(s));if(n.length>1){let i=n.filter(o=>o.test);i.length>0&&(n=i)}t=n.find(i=>i.format===e.format)??n.find(i=>!i.format)}else s=e,t=r.find(n=>n.nodeClass&&s instanceof n.nodeClass);if(!t){let n=s?.constructor?.name??(s===null?"null":typeof s);throw new Error(`Tag not resolved for ${n} value`)}return t}function Ip(r,e,{anchors:t,doc:s}){if(!s.directives)return"";let n=[],i=(ve.isScalar(r)||ve.isCollection(r))&&r.anchor;i&&Ap.anchorIsValid(i)&&(t.add(i),n.push(`&${i}`));let o=r.tag??(e.default?null:e.tag);return o&&n.push(s.directives.tagString(o)),n.join(" ")}function Rp(r,e,t,s){if(ve.isPair(r))return r.toString(e,t,s);if(ve.isAlias(r)){if(e.doc.directives)return r.toString(e);if(e.resolvedAliases?.has(r))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(r):e.resolvedAliases=new Set([r]),r=r.resolve(e.doc)}let n,i=ve.isNode(r)?r:e.doc.createNode(r,{onTagObj:c=>n=c});n??(n=Cp(e.doc.schema.tags,i));let o=Ip(i,n,e);o.length>0&&(e.indentAtStart=(e.indentAtStart??0)+o.length+1);let a=typeof n.stringify=="function"?n.stringify(i,e,t,s):ve.isScalar(i)?Op.stringifyString(i,e,t,s):i.toString(e,t,s);return o?ve.isScalar(i)||a[0]==="{"||a[0]==="["?`${o} ${a}`:`${o}
40
+ ${e.indent}${a}`:a}Vn.createStringifyContext=Np;Vn.stringify=Rp});var ic=S(nc=>{"use strict";var fe=P(),rc=_(),sc=Dt(),qt=_t();function _p({key:r,value:e},t,s,n){let{allNullValues:i,doc:o,indent:a,indentStep:c,options:{commentString:l,indentSeq:f,simpleKeys:u}}=t,d=fe.isNode(r)&&r.comment||null;if(u){if(d)throw new Error("With simple keys, key nodes cannot have comments");if(fe.isCollection(r)||!fe.isNode(r)&&typeof r=="object"){let T="With simple keys, collection cannot be used as a key value";throw new Error(T)}}let h=!u&&(!r||d&&e==null&&!t.inFlow||fe.isCollection(r)||(fe.isScalar(r)?r.type===rc.Scalar.BLOCK_FOLDED||r.type===rc.Scalar.BLOCK_LITERAL:typeof r=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!h&&(u||!i),indent:a+c});let g=!1,p=!1,y=sc.stringify(r,t,()=>g=!0,()=>p=!0);if(!h&&!t.inFlow&&y.length>1024){if(u)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");h=!0}if(t.inFlow){if(i||e==null)return g&&s&&s(),y===""?"?":h?`? ${y}`:y}else if(i&&!u||e==null&&h)return y=`? ${y}`,d&&!g?y+=qt.lineComment(y,t.indent,l(d)):p&&n&&n(),y;g&&(d=null),h?(d&&(y+=qt.lineComment(y,t.indent,l(d))),y=`? ${y}
41
+ ${a}:`):(y=`${y}:`,d&&(y+=qt.lineComment(y,t.indent,l(d))));let x,k,E;fe.isNode(e)?(x=!!e.spaceBefore,k=e.commentBefore,E=e.comment):(x=!1,k=null,E=null,e&&typeof e=="object"&&(e=o.createNode(e))),t.implicitKey=!1,!h&&!d&&fe.isScalar(e)&&(t.indentAtStart=y.length+1),p=!1,!f&&c.length>=2&&!t.inFlow&&!h&&fe.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let m=!1,b=sc.stringify(e,t,()=>m=!0,()=>p=!0),v=" ";if(d||x||k){if(v=x?`
42
+ `:"",k){let T=l(k);v+=`
43
+ ${qt.indentComment(T,t.indent)}`}b===""&&!t.inFlow?v===`
44
+ `&&E&&(v=`
45
+
46
+ `):v+=`
47
+ ${t.indent}`}else if(!h&&fe.isCollection(e)){let T=b[0],w=b.indexOf(`
48
+ `),O=w!==-1,D=t.inFlow??e.flow??e.items.length===0;if(O||!D){let j=!1;if(O&&(T==="&"||T==="!")){let I=b.indexOf(" ");T==="&"&&I!==-1&&I<w&&b[I+1]==="!"&&(I=b.indexOf(" ",I+1)),(I===-1||w<I)&&(j=!0)}j||(v=`
49
+ ${t.indent}`)}}else(b===""||b[0]===`
50
+ `)&&(v="");return y+=v+b,t.inFlow?m&&s&&s():E&&!m?y+=qt.lineComment(y,t.indent,l(E)):p&&n&&n(),y}nc.stringifyPair=_p});var Yn=S(Wn=>{"use strict";var oc=Nr("process");function Lp(r,...e){r==="debug"&&console.log(...e)}function $p(r,e){(r==="debug"||r==="warn")&&(typeof oc.emitWarning=="function"?oc.emitWarning(e):console.warn(e))}Wn.debug=Lp;Wn.warn=$p});var Qr=S(zr=>{"use strict";var Bt=P(),ac=_(),Hr="<<",Gr={identify:r=>r===Hr||typeof r=="symbol"&&r.description===Hr,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new ac.Scalar(Symbol(Hr)),{addToJSMap:cc}),stringify:()=>Hr},Mp=(r,e)=>(Gr.identify(e)||Bt.isScalar(e)&&(!e.type||e.type===ac.Scalar.PLAIN)&&Gr.identify(e.value))&&r?.doc.schema.tags.some(t=>t.tag===Gr.tag&&t.default);function cc(r,e,t){if(t=r&&Bt.isAlias(t)?t.resolve(r.doc):t,Bt.isSeq(t))for(let s of t.items)Hn(r,e,s);else if(Array.isArray(t))for(let s of t)Hn(r,e,s);else Hn(r,e,t)}function Hn(r,e,t){let s=r&&Bt.isAlias(t)?t.resolve(r.doc):t;if(!Bt.isMap(s))throw new Error("Merge sources must be maps or map aliases");let n=s.toJSON(null,r,Map);for(let[i,o]of n)e instanceof Map?e.has(i)||e.set(i,o):e instanceof Set?e.add(i):Object.prototype.hasOwnProperty.call(e,i)||Object.defineProperty(e,i,{value:o,writable:!0,enumerable:!0,configurable:!0});return e}zr.addMergeToJSMap=cc;zr.isMergeKey=Mp;zr.merge=Gr});var zn=S(fc=>{"use strict";var Dp=Yn(),lc=Qr(),qp=Dt(),uc=P(),Gn=ye();function Bp(r,e,{key:t,value:s}){if(uc.isNode(t)&&t.addToJSMap)t.addToJSMap(r,e,s);else if(lc.isMergeKey(r,t))lc.addMergeToJSMap(r,e,s);else{let n=Gn.toJS(t,"",r);if(e instanceof Map)e.set(n,Gn.toJS(s,n,r));else if(e instanceof Set)e.add(n);else{let i=jp(t,n,r),o=Gn.toJS(s,i,r);i in e?Object.defineProperty(e,i,{value:o,writable:!0,enumerable:!0,configurable:!0}):e[i]=o}}return e}function jp(r,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(uc.isNode(r)&&t?.doc){let s=qp.createStringifyContext(t.doc,{});s.anchors=new Set;for(let i of t.anchors.keys())s.anchors.add(i.anchor);s.inFlow=!0,s.inStringifyKey=!0;let n=r.toString(s);if(!t.mapKeyWarned){let i=JSON.stringify(n);i.length>40&&(i=i.substring(0,36)+'..."'),Dp.warn(t.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${i}. Set mapAsMap: true to use object keys.`),t.mapKeyWarned=!0}return n}return JSON.stringify(e)}fc.addPairToJSMap=Bp});var Se=S(Qn=>{"use strict";var dc=Rt(),Fp=ic(),Up=zn(),Xr=P();function Kp(r,e,t){let s=dc.createNode(r,void 0,t),n=dc.createNode(e,void 0,t);return new Zr(s,n)}var Zr=class r{constructor(e,t=null){Object.defineProperty(this,Xr.NODE_TYPE,{value:Xr.PAIR}),this.key=e,this.value=t}clone(e){let{key:t,value:s}=this;return Xr.isNode(t)&&(t=t.clone(e)),Xr.isNode(s)&&(s=s.clone(e)),new r(t,s)}toJSON(e,t){let s=t?.mapAsMap?new Map:{};return Up.addPairToJSMap(t,s,this)}toString(e,t,s){return e?.doc?Fp.stringifyPair(this,e,t,s):JSON.stringify(this)}};Qn.Pair=Zr;Qn.createPair=Kp});var Xn=S(hc=>{"use strict";var _e=P(),pc=Dt(),es=_t();function Jp(r,e,t){return(e.inFlow??r.flow?Wp:Vp)(r,e,t)}function Vp({comment:r,items:e},t,{blockItemPrefix:s,flowChars:n,itemIndent:i,onChompKeep:o,onComment:a}){let{indent:c,options:{commentString:l}}=t,f=Object.assign({},t,{indent:i,type:null}),u=!1,d=[];for(let g=0;g<e.length;++g){let p=e[g],y=null;if(_e.isNode(p))!u&&p.spaceBefore&&d.push(""),ts(t,d,p.commentBefore,u),p.comment&&(y=p.comment);else if(_e.isPair(p)){let k=_e.isNode(p.key)?p.key:null;k&&(!u&&k.spaceBefore&&d.push(""),ts(t,d,k.commentBefore,u))}u=!1;let x=pc.stringify(p,f,()=>y=null,()=>u=!0);y&&(x+=es.lineComment(x,i,l(y))),u&&y&&(u=!1),d.push(s+x)}let h;if(d.length===0)h=n.start+n.end;else{h=d[0];for(let g=1;g<d.length;++g){let p=d[g];h+=p?`
51
+ ${c}${p}`:`
52
+ `}}return r?(h+=`
53
+ `+es.indentComment(l(r),c),a&&a()):u&&o&&o(),h}function Wp({items:r},e,{flowChars:t,itemIndent:s}){let{indent:n,indentStep:i,flowCollectionPadding:o,options:{commentString:a}}=e;s+=i;let c=Object.assign({},e,{indent:s,inFlow:!0,type:null}),l=!1,f=0,u=[];for(let g=0;g<r.length;++g){let p=r[g],y=null;if(_e.isNode(p))p.spaceBefore&&u.push(""),ts(e,u,p.commentBefore,!1),p.comment&&(y=p.comment);else if(_e.isPair(p)){let k=_e.isNode(p.key)?p.key:null;k&&(k.spaceBefore&&u.push(""),ts(e,u,k.commentBefore,!1),k.comment&&(l=!0));let E=_e.isNode(p.value)?p.value:null;E?(E.comment&&(y=E.comment),E.commentBefore&&(l=!0)):p.value==null&&k?.comment&&(y=k.comment)}y&&(l=!0);let x=pc.stringify(p,c,()=>y=null);g<r.length-1&&(x+=","),y&&(x+=es.lineComment(x,s,a(y))),!l&&(u.length>f||x.includes(`
54
+ `))&&(l=!0),u.push(x),f=u.length}let{start:d,end:h}=t;if(u.length===0)return d+h;if(!l){let g=u.reduce((p,y)=>p+y.length+2,2);l=e.options.lineWidth>0&&g>e.options.lineWidth}if(l){let g=d;for(let p of u)g+=p?`
55
+ ${i}${n}${p}`:`
56
+ `;return`${g}
57
+ ${n}${h}`}else return`${d}${o}${u.join(" ")}${o}${h}`}function ts({indent:r,options:{commentString:e}},t,s,n){if(s&&n&&(s=s.replace(/^\n+/,"")),s){let i=es.indentComment(e(s),r);t.push(i.trimStart())}}hc.stringifyCollection=Jp});var xe=S(ei=>{"use strict";var Yp=Xn(),Hp=zn(),Gp=Ur(),ke=P(),rs=Se(),zp=_();function jt(r,e){let t=ke.isScalar(e)?e.value:e;for(let s of r)if(ke.isPair(s)&&(s.key===e||s.key===t||ke.isScalar(s.key)&&s.key.value===t))return s}var Zn=class extends Gp.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(ke.MAP,e),this.items=[]}static from(e,t,s){let{keepUndefined:n,replacer:i}=s,o=new this(e),a=(c,l)=>{if(typeof i=="function")l=i.call(t,c,l);else if(Array.isArray(i)&&!i.includes(c))return;(l!==void 0||n)&&o.items.push(rs.createPair(c,l,s))};if(t instanceof Map)for(let[c,l]of t)a(c,l);else if(t&&typeof t=="object")for(let c of Object.keys(t))a(c,t[c]);return typeof e.sortMapEntries=="function"&&o.items.sort(e.sortMapEntries),o}add(e,t){let s;ke.isPair(e)?s=e:!e||typeof e!="object"||!("key"in e)?s=new rs.Pair(e,e?.value):s=new rs.Pair(e.key,e.value);let n=jt(this.items,s.key),i=this.schema?.sortMapEntries;if(n){if(!t)throw new Error(`Key ${s.key} already set`);ke.isScalar(n.value)&&zp.isScalarValue(s.value)?n.value.value=s.value:n.value=s.value}else if(i){let o=this.items.findIndex(a=>i(s,a)<0);o===-1?this.items.push(s):this.items.splice(o,0,s)}else this.items.push(s)}delete(e){let t=jt(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=jt(this.items,e)?.value;return(!t&&ke.isScalar(n)?n.value:n)??void 0}has(e){return!!jt(this.items,e)}set(e,t){this.add(new rs.Pair(e,t),!0)}toJSON(e,t,s){let n=s?new s:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(n);for(let i of this.items)Hp.addPairToJSMap(t,n,i);return n}toString(e,t,s){if(!e)return JSON.stringify(this);for(let n of this.items)if(!ke.isPair(n))throw new Error(`Map items must all be pairs; found ${JSON.stringify(n)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),Yp.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:s,onComment:t})}};ei.YAMLMap=Zn;ei.findPair=jt});var tt=S(gc=>{"use strict";var Qp=P(),mc=xe(),Xp={collection:"map",default:!0,nodeClass:mc.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(r,e){return Qp.isMap(r)||e("Expected a mapping for this tag"),r},createNode:(r,e,t)=>mc.YAMLMap.from(r,e,t)};gc.map=Xp});var Ee=S(yc=>{"use strict";var Zp=Rt(),eh=Xn(),th=Ur(),ns=P(),rh=_(),sh=ye(),ti=class extends th.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(ns.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=ss(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let s=ss(e);if(typeof s!="number")return;let n=this.items[s];return!t&&ns.isScalar(n)?n.value:n}has(e){let t=ss(e);return typeof t=="number"&&t<this.items.length}set(e,t){let s=ss(e);if(typeof s!="number")throw new Error(`Expected a valid index, not ${e}.`);let n=this.items[s];ns.isScalar(n)&&rh.isScalarValue(t)?n.value=t:this.items[s]=t}toJSON(e,t){let s=[];t?.onCreate&&t.onCreate(s);let n=0;for(let i of this.items)s.push(sh.toJS(i,String(n++),t));return s}toString(e,t,s){return e?eh.stringifyCollection(this,e,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(e.indent||"")+" ",onChompKeep:s,onComment:t}):JSON.stringify(this)}static from(e,t,s){let{replacer:n}=s,i=new this(e);if(t&&Symbol.iterator in Object(t)){let o=0;for(let a of t){if(typeof n=="function"){let c=t instanceof Set?a:String(o++);a=n.call(t,c,a)}i.items.push(Zp.createNode(a,void 0,s))}}return i}};function ss(r){let e=ns.isScalar(r)?r.value:r;return e&&typeof e=="string"&&(e=Number(e)),typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}yc.YAMLSeq=ti});var rt=S(wc=>{"use strict";var nh=P(),bc=Ee(),ih={collection:"seq",default:!0,nodeClass:bc.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(r,e){return nh.isSeq(r)||e("Expected a sequence for this tag"),r},createNode:(r,e,t)=>bc.YAMLSeq.from(r,e,t)};wc.seq=ih});var Ft=S(vc=>{"use strict";var oh=Mt(),ah={identify:r=>typeof r=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:r=>r,stringify(r,e,t,s){return e=Object.assign({actualString:!0},e),oh.stringifyString(r,e,t,s)}};vc.string=ah});var is=S(xc=>{"use strict";var Sc=_(),kc={identify:r=>r==null,createNode:()=>new Sc.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new Sc.Scalar(null),stringify:({source:r},e)=>typeof r=="string"&&kc.test.test(r)?r:e.options.nullStr};xc.nullTag=kc});var ri=S(Tc=>{"use strict";var ch=_(),Ec={identify:r=>typeof r=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:r=>new ch.Scalar(r[0]==="t"||r[0]==="T"),stringify({source:r,value:e},t){if(r&&Ec.test.test(r)){let s=r[0]==="t"||r[0]==="T";if(e===s)return r}return e?t.options.trueStr:t.options.falseStr}};Tc.boolTag=Ec});var st=S(Ac=>{"use strict";function lh({format:r,minFractionDigits:e,tag:t,value:s}){if(typeof s=="bigint")return String(s);let n=typeof s=="number"?s:Number(s);if(!isFinite(n))return isNaN(n)?".nan":n<0?"-.inf":".inf";let i=Object.is(s,-0)?"-0":JSON.stringify(s);if(!r&&e&&(!t||t==="tag:yaml.org,2002:float")&&/^\d/.test(i)){let o=i.indexOf(".");o<0&&(o=i.length,i+=".");let a=e-(i.length-o-1);for(;a-- >0;)i+="0"}return i}Ac.stringifyNumber=lh});var ni=S(os=>{"use strict";var uh=_(),si=st(),fh={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:r=>r.slice(-3).toLowerCase()==="nan"?NaN:r[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:si.stringifyNumber},dh={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:r=>parseFloat(r),stringify(r){let e=Number(r.value);return isFinite(e)?e.toExponential():si.stringifyNumber(r)}},ph={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(r){let e=new uh.Scalar(parseFloat(r)),t=r.indexOf(".");return t!==-1&&r[r.length-1]==="0"&&(e.minFractionDigits=r.length-t-1),e},stringify:si.stringifyNumber};os.float=ph;os.floatExp=dh;os.floatNaN=fh});var oi=S(cs=>{"use strict";var Pc=st(),as=r=>typeof r=="bigint"||Number.isInteger(r),ii=(r,e,t,{intAsBigInt:s})=>s?BigInt(r):parseInt(r.substring(e),t);function Oc(r,e,t){let{value:s}=r;return as(s)&&s>=0?t+s.toString(e):Pc.stringifyNumber(r)}var hh={identify:r=>as(r)&&r>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(r,e,t)=>ii(r,2,8,t),stringify:r=>Oc(r,8,"0o")},mh={identify:as,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(r,e,t)=>ii(r,0,10,t),stringify:Pc.stringifyNumber},gh={identify:r=>as(r)&&r>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(r,e,t)=>ii(r,2,16,t),stringify:r=>Oc(r,16,"0x")};cs.int=mh;cs.intHex=gh;cs.intOct=hh});var Cc=S(Nc=>{"use strict";var yh=tt(),bh=is(),wh=rt(),vh=Ft(),Sh=ri(),ai=ni(),ci=oi(),kh=[yh.map,wh.seq,vh.string,bh.nullTag,Sh.boolTag,ci.intOct,ci.int,ci.intHex,ai.floatNaN,ai.floatExp,ai.float];Nc.schema=kh});var _c=S(Rc=>{"use strict";var xh=_(),Eh=tt(),Th=rt();function Ic(r){return typeof r=="bigint"||Number.isInteger(r)}var ls=({value:r})=>JSON.stringify(r),Ah=[{identify:r=>typeof r=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:r=>r,stringify:ls},{identify:r=>r==null,createNode:()=>new xh.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:ls},{identify:r=>typeof r=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:r=>r==="true",stringify:ls},{identify:Ic,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(r,e,{intAsBigInt:t})=>t?BigInt(r):parseInt(r,10),stringify:({value:r})=>Ic(r)?r.toString():JSON.stringify(r)},{identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:r=>parseFloat(r),stringify:ls}],Ph={default:!0,tag:"",test:/^/,resolve(r,e){return e(`Unresolved plain scalar ${JSON.stringify(r)}`),r}},Oh=[Eh.map,Th.seq].concat(Ah,Ph);Rc.schema=Oh});var ui=S(Lc=>{"use strict";var Ut=Nr("buffer"),li=_(),Nh=Mt(),Ch={identify:r=>r instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(r,e){if(typeof Ut.Buffer=="function")return Ut.Buffer.from(r,"base64");if(typeof atob=="function"){let t=atob(r.replace(/[\n\r]/g,"")),s=new Uint8Array(t.length);for(let n=0;n<t.length;++n)s[n]=t.charCodeAt(n);return s}else return e("This environment does not support reading binary tags; either Buffer or atob is required"),r},stringify({comment:r,type:e,value:t},s,n,i){if(!t)return"";let o=t,a;if(typeof Ut.Buffer=="function")a=o instanceof Ut.Buffer?o.toString("base64"):Ut.Buffer.from(o.buffer).toString("base64");else if(typeof btoa=="function"){let c="";for(let l=0;l<o.length;++l)c+=String.fromCharCode(o[l]);a=btoa(c)}else throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(e??(e=li.Scalar.BLOCK_LITERAL),e!==li.Scalar.QUOTE_DOUBLE){let c=Math.max(s.options.lineWidth-s.indent.length,s.options.minContentWidth),l=Math.ceil(a.length/c),f=new Array(l);for(let u=0,d=0;u<l;++u,d+=c)f[u]=a.substr(d,c);a=f.join(e===li.Scalar.BLOCK_LITERAL?`
58
+ `:" ")}return Nh.stringifyString({comment:r,type:e,value:a},s,n,i)}};Lc.binary=Ch});var ds=S(fs=>{"use strict";var us=P(),fi=Se(),Ih=_(),Rh=Ee();function $c(r,e){if(us.isSeq(r))for(let t=0;t<r.items.length;++t){let s=r.items[t];if(!us.isPair(s)){if(us.isMap(s)){s.items.length>1&&e("Each pair must have its own sequence indicator");let n=s.items[0]||new fi.Pair(new Ih.Scalar(null));if(s.commentBefore&&(n.key.commentBefore=n.key.commentBefore?`${s.commentBefore}
59
+ ${n.key.commentBefore}`:s.commentBefore),s.comment){let i=n.value??n.key;i.comment=i.comment?`${s.comment}
60
+ ${i.comment}`:s.comment}s=n}r.items[t]=us.isPair(s)?s:new fi.Pair(s)}}else e("Expected a sequence for this tag");return r}function Mc(r,e,t){let{replacer:s}=t,n=new Rh.YAMLSeq(r);n.tag="tag:yaml.org,2002:pairs";let i=0;if(e&&Symbol.iterator in Object(e))for(let o of e){typeof s=="function"&&(o=s.call(e,String(i++),o));let a,c;if(Array.isArray(o))if(o.length===2)a=o[0],c=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let l=Object.keys(o);if(l.length===1)a=l[0],c=o[a];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else a=o;n.items.push(fi.createPair(a,c,t))}return n}var _h={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:$c,createNode:Mc};fs.createPairs=Mc;fs.pairs=_h;fs.resolvePairs=$c});var hi=S(pi=>{"use strict";var Dc=P(),di=ye(),Kt=xe(),Lh=Ee(),qc=ds(),Le=class r extends Lh.YAMLSeq{constructor(){super(),this.add=Kt.YAMLMap.prototype.add.bind(this),this.delete=Kt.YAMLMap.prototype.delete.bind(this),this.get=Kt.YAMLMap.prototype.get.bind(this),this.has=Kt.YAMLMap.prototype.has.bind(this),this.set=Kt.YAMLMap.prototype.set.bind(this),this.tag=r.tag}toJSON(e,t){if(!t)return super.toJSON(e);let s=new Map;t?.onCreate&&t.onCreate(s);for(let n of this.items){let i,o;if(Dc.isPair(n)?(i=di.toJS(n.key,"",t),o=di.toJS(n.value,i,t)):i=di.toJS(n,"",t),s.has(i))throw new Error("Ordered maps must not include duplicate keys");s.set(i,o)}return s}static from(e,t,s){let n=qc.createPairs(e,t,s),i=new this;return i.items=n.items,i}};Le.tag="tag:yaml.org,2002:omap";var $h={collection:"seq",identify:r=>r instanceof Map,nodeClass:Le,default:!1,tag:"tag:yaml.org,2002:omap",resolve(r,e){let t=qc.resolvePairs(r,e),s=[];for(let{key:n}of t.items)Dc.isScalar(n)&&(s.includes(n.value)?e(`Ordered maps must not include duplicate keys: ${n.value}`):s.push(n.value));return Object.assign(new Le,t)},createNode:(r,e,t)=>Le.from(r,e,t)};pi.YAMLOMap=Le;pi.omap=$h});var Kc=S(mi=>{"use strict";var Bc=_();function jc({value:r,source:e},t){return e&&(r?Fc:Uc).test.test(e)?e:r?t.options.trueStr:t.options.falseStr}var Fc={identify:r=>r===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new Bc.Scalar(!0),stringify:jc},Uc={identify:r=>r===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new Bc.Scalar(!1),stringify:jc};mi.falseTag=Uc;mi.trueTag=Fc});var Jc=S(ps=>{"use strict";var Mh=_(),gi=st(),Dh={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:r=>r.slice(-3).toLowerCase()==="nan"?NaN:r[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:gi.stringifyNumber},qh={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:r=>parseFloat(r.replace(/_/g,"")),stringify(r){let e=Number(r.value);return isFinite(e)?e.toExponential():gi.stringifyNumber(r)}},Bh={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(r){let e=new Mh.Scalar(parseFloat(r.replace(/_/g,""))),t=r.indexOf(".");if(t!==-1){let s=r.substring(t+1).replace(/_/g,"");s[s.length-1]==="0"&&(e.minFractionDigits=s.length)}return e},stringify:gi.stringifyNumber};ps.float=Bh;ps.floatExp=qh;ps.floatNaN=Dh});var Wc=S(Vt=>{"use strict";var Vc=st(),Jt=r=>typeof r=="bigint"||Number.isInteger(r);function hs(r,e,t,{intAsBigInt:s}){let n=r[0];if((n==="-"||n==="+")&&(e+=1),r=r.substring(e).replace(/_/g,""),s){switch(t){case 2:r=`0b${r}`;break;case 8:r=`0o${r}`;break;case 16:r=`0x${r}`;break}let o=BigInt(r);return n==="-"?BigInt(-1)*o:o}let i=parseInt(r,t);return n==="-"?-1*i:i}function yi(r,e,t){let{value:s}=r;if(Jt(s)){let n=s.toString(e);return s<0?"-"+t+n.substr(1):t+n}return Vc.stringifyNumber(r)}var jh={identify:Jt,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(r,e,t)=>hs(r,2,2,t),stringify:r=>yi(r,2,"0b")},Fh={identify:Jt,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(r,e,t)=>hs(r,1,8,t),stringify:r=>yi(r,8,"0")},Uh={identify:Jt,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(r,e,t)=>hs(r,0,10,t),stringify:Vc.stringifyNumber},Kh={identify:Jt,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(r,e,t)=>hs(r,2,16,t),stringify:r=>yi(r,16,"0x")};Vt.int=Uh;Vt.intBin=jh;Vt.intHex=Kh;Vt.intOct=Fh});var wi=S(bi=>{"use strict";var ys=P(),ms=Se(),gs=xe(),$e=class r extends gs.YAMLMap{constructor(e){super(e),this.tag=r.tag}add(e){let t;ys.isPair(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new ms.Pair(e.key,null):t=new ms.Pair(e,null),gs.findPair(this.items,t.key)||this.items.push(t)}get(e,t){let s=gs.findPair(this.items,e);return!t&&ys.isPair(s)?ys.isScalar(s.key)?s.key.value:s.key:s}set(e,t){if(typeof t!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let s=gs.findPair(this.items,e);s&&!t?this.items.splice(this.items.indexOf(s),1):!s&&t&&this.items.push(new ms.Pair(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,s){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,s);throw new Error("Set items must all have null values")}static from(e,t,s){let{replacer:n}=s,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let o of t)typeof n=="function"&&(o=n.call(t,o,o)),i.items.push(ms.createPair(o,null,s));return i}};$e.tag="tag:yaml.org,2002:set";var Jh={collection:"map",identify:r=>r instanceof Set,nodeClass:$e,default:!1,tag:"tag:yaml.org,2002:set",createNode:(r,e,t)=>$e.from(r,e,t),resolve(r,e){if(ys.isMap(r)){if(r.hasAllNullValues(!0))return Object.assign(new $e,r);e("Set items must all have null values")}else e("Expected a mapping for this tag");return r}};bi.YAMLSet=$e;bi.set=Jh});var Si=S(bs=>{"use strict";var Vh=st();function vi(r,e){let t=r[0],s=t==="-"||t==="+"?r.substring(1):r,n=o=>e?BigInt(o):Number(o),i=s.replace(/_/g,"").split(":").reduce((o,a)=>o*n(60)+n(a),n(0));return t==="-"?n(-1)*i:i}function Yc(r){let{value:e}=r,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return Vh.stringifyNumber(r);let s="";e<0&&(s="-",e*=t(-1));let n=t(60),i=[e%n];return e<60?i.unshift(0):(e=(e-i[0])/n,i.unshift(e%n),e>=60&&(e=(e-i[0])/n,i.unshift(e))),s+i.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var Wh={identify:r=>typeof r=="bigint"||Number.isInteger(r),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(r,e,{intAsBigInt:t})=>vi(r,t),stringify:Yc},Yh={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:r=>vi(r,!1),stringify:Yc},Hc={identify:r=>r instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(r){let e=r.match(Hc.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,t,s,n,i,o,a]=e.map(Number),c=e[7]?Number((e[7]+"00").substr(1,3)):0,l=Date.UTC(t,s-1,n,i||0,o||0,a||0,c),f=e[8];if(f&&f!=="Z"){let u=vi(f,!1);Math.abs(u)<30&&(u*=60),l-=6e4*u}return new Date(l)},stringify:({value:r})=>r?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};bs.floatTime=Yh;bs.intTime=Wh;bs.timestamp=Hc});var Qc=S(zc=>{"use strict";var Hh=tt(),Gh=is(),zh=rt(),Qh=Ft(),Xh=ui(),Gc=Kc(),ki=Jc(),ws=Wc(),Zh=Qr(),em=hi(),tm=ds(),rm=wi(),xi=Si(),sm=[Hh.map,zh.seq,Qh.string,Gh.nullTag,Gc.trueTag,Gc.falseTag,ws.intBin,ws.intOct,ws.int,ws.intHex,ki.floatNaN,ki.floatExp,ki.float,Xh.binary,Zh.merge,em.omap,tm.pairs,rm.set,xi.intTime,xi.floatTime,xi.timestamp];zc.schema=sm});var al=S(Ai=>{"use strict";var tl=tt(),nm=is(),rl=rt(),im=Ft(),om=ri(),Ei=ni(),Ti=oi(),am=Cc(),cm=_c(),sl=ui(),Wt=Qr(),nl=hi(),il=ds(),Xc=Qc(),ol=wi(),vs=Si(),Zc=new Map([["core",am.schema],["failsafe",[tl.map,rl.seq,im.string]],["json",cm.schema],["yaml11",Xc.schema],["yaml-1.1",Xc.schema]]),el={binary:sl.binary,bool:om.boolTag,float:Ei.float,floatExp:Ei.floatExp,floatNaN:Ei.floatNaN,floatTime:vs.floatTime,int:Ti.int,intHex:Ti.intHex,intOct:Ti.intOct,intTime:vs.intTime,map:tl.map,merge:Wt.merge,null:nm.nullTag,omap:nl.omap,pairs:il.pairs,seq:rl.seq,set:ol.set,timestamp:vs.timestamp},lm={"tag:yaml.org,2002:binary":sl.binary,"tag:yaml.org,2002:merge":Wt.merge,"tag:yaml.org,2002:omap":nl.omap,"tag:yaml.org,2002:pairs":il.pairs,"tag:yaml.org,2002:set":ol.set,"tag:yaml.org,2002:timestamp":vs.timestamp};function um(r,e,t){let s=Zc.get(e);if(s&&!r)return t&&!s.includes(Wt.merge)?s.concat(Wt.merge):s.slice();let n=s;if(!n)if(Array.isArray(r))n=[];else{let i=Array.from(Zc.keys()).filter(o=>o!=="yaml11").map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${i} or define customTags array`)}if(Array.isArray(r))for(let i of r)n=n.concat(i);else typeof r=="function"&&(n=r(n.slice()));return t&&(n=n.concat(Wt.merge)),n.reduce((i,o)=>{let a=typeof o=="string"?el[o]:o;if(!a){let c=JSON.stringify(o),l=Object.keys(el).map(f=>JSON.stringify(f)).join(", ");throw new Error(`Unknown custom tag ${c}; use one of ${l}`)}return i.includes(a)||i.push(a),i},[])}Ai.coreKnownTags=lm;Ai.getTags=um});var Ni=S(cl=>{"use strict";var Pi=P(),fm=tt(),dm=rt(),pm=Ft(),Ss=al(),hm=(r,e)=>r.key<e.key?-1:r.key>e.key?1:0,Oi=class r{constructor({compat:e,customTags:t,merge:s,resolveKnownTags:n,schema:i,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?Ss.getTags(e,"compat"):e?Ss.getTags(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=n?Ss.coreKnownTags:{},this.tags=Ss.getTags(t,this.name,s),this.toStringOptions=a??null,Object.defineProperty(this,Pi.MAP,{value:fm.map}),Object.defineProperty(this,Pi.SCALAR,{value:pm.string}),Object.defineProperty(this,Pi.SEQ,{value:dm.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?hm:null}clone(){let e=Object.create(r.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};cl.Schema=Oi});var ul=S(ll=>{"use strict";var mm=P(),Ci=Dt(),Yt=_t();function gm(r,e){let t=[],s=e.directives===!0;if(e.directives!==!1&&r.directives){let c=r.directives.toString(r);c?(t.push(c),s=!0):r.directives.docStart&&(s=!0)}s&&t.push("---");let n=Ci.createStringifyContext(r,e),{commentString:i}=n.options;if(r.commentBefore){t.length!==1&&t.unshift("");let c=i(r.commentBefore);t.unshift(Yt.indentComment(c,""))}let o=!1,a=null;if(r.contents){if(mm.isNode(r.contents)){if(r.contents.spaceBefore&&s&&t.push(""),r.contents.commentBefore){let f=i(r.contents.commentBefore);t.push(Yt.indentComment(f,""))}n.forceBlockIndent=!!r.comment,a=r.contents.comment}let c=a?void 0:()=>o=!0,l=Ci.stringify(r.contents,n,()=>a=null,c);a&&(l+=Yt.lineComment(l,"",i(a))),(l[0]==="|"||l[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${l}`:t.push(l)}else t.push(Ci.stringify(r.contents,n));if(r.directives?.docEnd)if(r.comment){let c=i(r.comment);c.includes(`
61
+ `)?(t.push("..."),t.push(Yt.indentComment(c,""))):t.push(`... ${c}`)}else t.push("...");else{let c=r.comment;c&&o&&(c=c.replace(/^\n+/,"")),c&&((!o||a)&&t[t.length-1]!==""&&t.push(""),t.push(Yt.indentComment(i(c),"")))}return t.join(`
62
+ `)+`
63
+ `}ll.stringifyDocument=gm});var Ht=S(fl=>{"use strict";var ym=It(),nt=Ur(),G=P(),bm=Se(),wm=ye(),vm=Ni(),Sm=ul(),Ii=qr(),km=$n(),xm=Rt(),Ri=Ln(),_i=class r{constructor(e,t,s){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,G.NODE_TYPE,{value:G.DOC});let n=null;typeof t=="function"||Array.isArray(t)?n=t:s===void 0&&t&&(s=t,t=void 0);let i=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},s);this.options=i;let{version:o}=i;s?._directives?(this.directives=s._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new Ri.Directives({version:o}),this.setSchema(o,s),this.contents=e===void 0?null:this.createNode(e,n,s)}clone(){let e=Object.create(r.prototype,{[G.NODE_TYPE]:{value:G.DOC}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=G.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){it(this.contents)&&this.contents.add(e)}addIn(e,t){it(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let s=Ii.anchorNames(this);e.anchor=!t||s.has(t)?Ii.findNewAnchor(t||"a",s):t}return new ym.Alias(e.anchor)}createNode(e,t,s){let n;if(typeof t=="function")e=t.call({"":e},"",e),n=t;else if(Array.isArray(t)){let y=k=>typeof k=="number"||k instanceof String||k instanceof Number,x=t.filter(y).map(String);x.length>0&&(t=t.concat(x)),n=t}else s===void 0&&t&&(s=t,t=void 0);let{aliasDuplicateObjects:i,anchorPrefix:o,flow:a,keepUndefined:c,onTagObj:l,tag:f}=s??{},{onAnchor:u,setAnchors:d,sourceObjects:h}=Ii.createNodeAnchors(this,o||"a"),g={aliasDuplicateObjects:i??!0,keepUndefined:c??!1,onAnchor:u,onTagObj:l,replacer:n,schema:this.schema,sourceObjects:h},p=xm.createNode(e,f,g);return a&&G.isCollection(p)&&(p.flow=!0),d(),p}createPair(e,t,s={}){let n=this.createNode(e,null,s),i=this.createNode(t,null,s);return new bm.Pair(n,i)}delete(e){return it(this.contents)?this.contents.delete(e):!1}deleteIn(e){return nt.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):it(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return G.isCollection(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return nt.isEmptyPath(e)?!t&&G.isScalar(this.contents)?this.contents.value:this.contents:G.isCollection(this.contents)?this.contents.getIn(e,t):void 0}has(e){return G.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return nt.isEmptyPath(e)?this.contents!==void 0:G.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=nt.collectionFromPath(this.schema,[e],t):it(this.contents)&&this.contents.set(e,t)}setIn(e,t){nt.isEmptyPath(e)?this.contents=t:this.contents==null?this.contents=nt.collectionFromPath(this.schema,Array.from(e),t):it(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let s;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new Ri.Directives({version:"1.1"}),s={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new Ri.Directives({version:e}),s={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,s=null;break;default:{let n=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${n}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(s)this.schema=new vm.Schema(Object.assign(s,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:s,maxAliasCount:n,onAnchor:i,reviver:o}={}){let a={anchors:new Map,doc:this,keep:!e,mapAsMap:s===!0,mapKeyWarned:!1,maxAliasCount:typeof n=="number"?n:100},c=wm.toJS(this.contents,t??"",a);if(typeof i=="function")for(let{count:l,res:f}of a.anchors.values())i(f,l);return typeof o=="function"?km.applyReviver(o,{"":c},"",c):c}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let t=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${t}`)}return Sm.stringifyDocument(this,e)}};function it(r){if(G.isCollection(r))return!0;throw new Error("Expected a YAML collection as document contents")}fl.Document=_i});var Qt=S(zt=>{"use strict";var Gt=class extends Error{constructor(e,t,s,n){super(),this.name=e,this.code=s,this.message=n,this.pos=t}},Li=class extends Gt{constructor(e,t,s){super("YAMLParseError",e,t,s)}},$i=class extends Gt{constructor(e,t,s){super("YAMLWarning",e,t,s)}},Em=(r,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(a=>e.linePos(a));let{line:s,col:n}=t.linePos[0];t.message+=` at line ${s}, column ${n}`;let i=n-1,o=r.substring(e.lineStarts[s-1],e.lineStarts[s]).replace(/[\n\r]+$/,"");if(i>=60&&o.length>80){let a=Math.min(i-39,o.length-79);o="\u2026"+o.substring(a),i-=a-1}if(o.length>80&&(o=o.substring(0,79)+"\u2026"),s>1&&/^ *$/.test(o.substring(0,i))){let a=r.substring(e.lineStarts[s-2],e.lineStarts[s-1]);a.length>80&&(a=a.substring(0,79)+`\u2026
64
+ `),o=a+o}if(/[^ ]/.test(o)){let a=1,c=t.linePos[1];c?.line===s&&c.col>n&&(a=Math.max(1,Math.min(c.col-n,80-i)));let l=" ".repeat(i)+"^".repeat(a);t.message+=`:
65
+
66
+ ${o}
67
+ ${l}
68
+ `}};zt.YAMLError=Gt;zt.YAMLParseError=Li;zt.YAMLWarning=$i;zt.prettifyError=Em});var Xt=S(dl=>{"use strict";function Tm(r,{flow:e,indicator:t,next:s,offset:n,onError:i,parentIndent:o,startOnNewline:a}){let c=!1,l=a,f=a,u="",d="",h=!1,g=!1,p=null,y=null,x=null,k=null,E=null,m=null,b=null;for(let w of r)switch(g&&(w.type!=="space"&&w.type!=="newline"&&w.type!=="comma"&&i(w.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),g=!1),p&&(l&&w.type!=="comment"&&w.type!=="newline"&&i(p,"TAB_AS_INDENT","Tabs are not allowed as indentation"),p=null),w.type){case"space":!e&&(t!=="doc-start"||s?.type!=="flow-collection")&&w.source.includes(" ")&&(p=w),f=!0;break;case"comment":{f||i(w,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let O=w.source.substring(1)||" ";u?u+=d+O:u=O,d="",l=!1;break}case"newline":l?u?u+=w.source:(!m||t!=="seq-item-ind")&&(c=!0):d+=w.source,l=!0,h=!0,(y||x)&&(k=w),f=!0;break;case"anchor":y&&i(w,"MULTIPLE_ANCHORS","A node can have at most one anchor"),w.source.endsWith(":")&&i(w.offset+w.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),y=w,b??(b=w.offset),l=!1,f=!1,g=!0;break;case"tag":{x&&i(w,"MULTIPLE_TAGS","A node can have at most one tag"),x=w,b??(b=w.offset),l=!1,f=!1,g=!0;break}case t:(y||x)&&i(w,"BAD_PROP_ORDER",`Anchors and tags must be after the ${w.source} indicator`),m&&i(w,"UNEXPECTED_TOKEN",`Unexpected ${w.source} in ${e??"collection"}`),m=w,l=t==="seq-item-ind"||t==="explicit-key-ind",f=!1;break;case"comma":if(e){E&&i(w,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),E=w,l=!1,f=!1;break}default:i(w,"UNEXPECTED_TOKEN",`Unexpected ${w.type} token`),l=!1,f=!1}let v=r[r.length-1],T=v?v.offset+v.source.length:n;return g&&s&&s.type!=="space"&&s.type!=="newline"&&s.type!=="comma"&&(s.type!=="scalar"||s.source!=="")&&i(s.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),p&&(l&&p.indent<=o||s?.type==="block-map"||s?.type==="block-seq")&&i(p,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:E,found:m,spaceBefore:c,comment:u,hasNewline:h,anchor:y,tag:x,newlineAfterProp:k,end:T,start:b??T}}dl.resolveProps=Tm});var ks=S(pl=>{"use strict";function Mi(r){if(!r)return null;switch(r.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(r.source.includes(`
69
+ `))return!0;if(r.end){for(let e of r.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of r.items){for(let t of e.start)if(t.type==="newline")return!0;if(e.sep){for(let t of e.sep)if(t.type==="newline")return!0}if(Mi(e.key)||Mi(e.value))return!0}return!1;default:return!0}}pl.containsNewline=Mi});var Di=S(hl=>{"use strict";var Am=ks();function Pm(r,e,t){if(e?.type==="flow-collection"){let s=e.end[0];s.indent===r&&(s.source==="]"||s.source==="}")&&Am.containsNewline(e)&&t(s,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}hl.flowIndentCheck=Pm});var qi=S(gl=>{"use strict";var ml=P();function Om(r,e,t){let{uniqueKeys:s}=r.options;if(s===!1)return!1;let n=typeof s=="function"?s:(i,o)=>i===o||ml.isScalar(i)&&ml.isScalar(o)&&i.value===o.value;return e.some(i=>n(i.key,t))}gl.mapIncludes=Om});var kl=S(Sl=>{"use strict";var yl=Se(),Nm=xe(),bl=Xt(),Cm=ks(),wl=Di(),Im=qi(),vl="All mapping items must start at the same column";function Rm({composeNode:r,composeEmptyNode:e},t,s,n,i){let o=i?.nodeClass??Nm.YAMLMap,a=new o(t.schema);t.atRoot&&(t.atRoot=!1);let c=s.offset,l=null;for(let f of s.items){let{start:u,key:d,sep:h,value:g}=f,p=bl.resolveProps(u,{indicator:"explicit-key-ind",next:d??h?.[0],offset:c,onError:n,parentIndent:s.indent,startOnNewline:!0}),y=!p.found;if(y){if(d&&(d.type==="block-seq"?n(c,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in d&&d.indent!==s.indent&&n(c,"BAD_INDENT",vl)),!p.anchor&&!p.tag&&!h){l=p.end,p.comment&&(a.comment?a.comment+=`
70
+ `+p.comment:a.comment=p.comment);continue}(p.newlineAfterProp||Cm.containsNewline(d))&&n(d??u[u.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else p.found?.indent!==s.indent&&n(c,"BAD_INDENT",vl);t.atKey=!0;let x=p.end,k=d?r(t,d,p,n):e(t,x,u,null,p,n);t.schema.compat&&wl.flowIndentCheck(s.indent,d,n),t.atKey=!1,Im.mapIncludes(t,a.items,k)&&n(x,"DUPLICATE_KEY","Map keys must be unique");let E=bl.resolveProps(h??[],{indicator:"map-value-ind",next:g,offset:k.range[2],onError:n,parentIndent:s.indent,startOnNewline:!d||d.type==="block-scalar"});if(c=E.end,E.found){y&&(g?.type==="block-map"&&!E.hasNewline&&n(c,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&p.start<E.found.offset-1024&&n(k.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));let m=g?r(t,g,E,n):e(t,c,h,null,E,n);t.schema.compat&&wl.flowIndentCheck(s.indent,g,n),c=m.range[2];let b=new yl.Pair(k,m);t.options.keepSourceTokens&&(b.srcToken=f),a.items.push(b)}else{y&&n(k.range,"MISSING_CHAR","Implicit map keys need to be followed by map values"),E.comment&&(k.comment?k.comment+=`
71
+ `+E.comment:k.comment=E.comment);let m=new yl.Pair(k);t.options.keepSourceTokens&&(m.srcToken=f),a.items.push(m)}}return l&&l<c&&n(l,"IMPOSSIBLE","Map comment with trailing content"),a.range=[s.offset,c,l??c],a}Sl.resolveBlockMap=Rm});var El=S(xl=>{"use strict";var _m=Ee(),Lm=Xt(),$m=Di();function Mm({composeNode:r,composeEmptyNode:e},t,s,n,i){let o=i?.nodeClass??_m.YAMLSeq,a=new o(t.schema);t.atRoot&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let c=s.offset,l=null;for(let{start:f,value:u}of s.items){let d=Lm.resolveProps(f,{indicator:"seq-item-ind",next:u,offset:c,onError:n,parentIndent:s.indent,startOnNewline:!0});if(!d.found)if(d.anchor||d.tag||u)u?.type==="block-seq"?n(d.end,"BAD_INDENT","All sequence items must start at the same column"):n(c,"MISSING_CHAR","Sequence item without - indicator");else{l=d.end,d.comment&&(a.comment=d.comment);continue}let h=u?r(t,u,d,n):e(t,d.end,f,null,d,n);t.schema.compat&&$m.flowIndentCheck(s.indent,u,n),c=h.range[2],a.items.push(h)}return a.range=[s.offset,c,l??c],a}xl.resolveBlockSeq=Mm});var ot=S(Tl=>{"use strict";function Dm(r,e,t,s){let n="";if(r){let i=!1,o="";for(let a of r){let{source:c,type:l}=a;switch(l){case"space":i=!0;break;case"comment":{t&&!i&&s(a,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let f=c.substring(1)||" ";n?n+=o+f:n=f,o="";break}case"newline":n&&(o+=c),i=!0;break;default:s(a,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}e+=c.length}}return{comment:n,offset:e}}Tl.resolveEnd=Dm});var Nl=S(Ol=>{"use strict";var qm=P(),Bm=Se(),Al=xe(),jm=Ee(),Fm=ot(),Pl=Xt(),Um=ks(),Km=qi(),Bi="Block collections are not allowed within flow collections",ji=r=>r&&(r.type==="block-map"||r.type==="block-seq");function Jm({composeNode:r,composeEmptyNode:e},t,s,n,i){let o=s.start.source==="{",a=o?"flow map":"flow sequence",c=i?.nodeClass??(o?Al.YAMLMap:jm.YAMLSeq),l=new c(t.schema);l.flow=!0;let f=t.atRoot;f&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let u=s.offset+s.start.source.length;for(let y=0;y<s.items.length;++y){let x=s.items[y],{start:k,key:E,sep:m,value:b}=x,v=Pl.resolveProps(k,{flow:a,indicator:"explicit-key-ind",next:E??m?.[0],offset:u,onError:n,parentIndent:s.indent,startOnNewline:!1});if(!v.found){if(!v.anchor&&!v.tag&&!m&&!b){y===0&&v.comma?n(v.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${a}`):y<s.items.length-1&&n(v.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${a}`),v.comment&&(l.comment?l.comment+=`
72
+ `+v.comment:l.comment=v.comment),u=v.end;continue}!o&&t.options.strict&&Um.containsNewline(E)&&n(E,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(y===0)v.comma&&n(v.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${a}`);else if(v.comma||n(v.start,"MISSING_CHAR",`Missing , between ${a} items`),v.comment){let T="";e:for(let w of k)switch(w.type){case"comma":case"space":break;case"comment":T=w.source.substring(1);break e;default:break e}if(T){let w=l.items[l.items.length-1];qm.isPair(w)&&(w=w.value??w.key),w.comment?w.comment+=`
73
+ `+T:w.comment=T,v.comment=v.comment.substring(T.length+1)}}if(!o&&!m&&!v.found){let T=b?r(t,b,v,n):e(t,v.end,m,null,v,n);l.items.push(T),u=T.range[2],ji(b)&&n(T.range,"BLOCK_IN_FLOW",Bi)}else{t.atKey=!0;let T=v.end,w=E?r(t,E,v,n):e(t,T,k,null,v,n);ji(E)&&n(w.range,"BLOCK_IN_FLOW",Bi),t.atKey=!1;let O=Pl.resolveProps(m??[],{flow:a,indicator:"map-value-ind",next:b,offset:w.range[2],onError:n,parentIndent:s.indent,startOnNewline:!1});if(O.found){if(!o&&!v.found&&t.options.strict){if(m)for(let I of m){if(I===O.found)break;if(I.type==="newline"){n(I,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}v.start<O.found.offset-1024&&n(O.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else b&&("source"in b&&b.source?.[0]===":"?n(b,"MISSING_CHAR",`Missing space after : in ${a}`):n(O.start,"MISSING_CHAR",`Missing , or : between ${a} items`));let D=b?r(t,b,O,n):O.found?e(t,O.end,m,null,O,n):null;D?ji(b)&&n(D.range,"BLOCK_IN_FLOW",Bi):O.comment&&(w.comment?w.comment+=`
74
+ `+O.comment:w.comment=O.comment);let j=new Bm.Pair(w,D);if(t.options.keepSourceTokens&&(j.srcToken=x),o){let I=l;Km.mapIncludes(t,I.items,w)&&n(T,"DUPLICATE_KEY","Map keys must be unique"),I.items.push(j)}else{let I=new Al.YAMLMap(t.schema);I.flow=!0,I.items.push(j);let le=(D??w).range;I.range=[w.range[0],le[1],le[2]],l.items.push(I)}u=D?D.range[2]:O.end}}let d=o?"}":"]",[h,...g]=s.end,p=u;if(h?.source===d)p=h.offset+h.source.length;else{let y=a[0].toUpperCase()+a.substring(1),x=f?`${y} must end with a ${d}`:`${y} in block collection must be sufficiently indented and end with a ${d}`;n(u,f?"MISSING_CHAR":"BAD_INDENT",x),h&&h.source.length!==1&&g.unshift(h)}if(g.length>0){let y=Fm.resolveEnd(g,p,t.options.strict,n);y.comment&&(l.comment?l.comment+=`
75
+ `+y.comment:l.comment=y.comment),l.range=[s.offset,p,y.offset]}else l.range=[s.offset,p,p];return l}Ol.resolveFlowCollection=Jm});var Il=S(Cl=>{"use strict";var Vm=P(),Wm=_(),Ym=xe(),Hm=Ee(),Gm=kl(),zm=El(),Qm=Nl();function Fi(r,e,t,s,n,i){let o=t.type==="block-map"?Gm.resolveBlockMap(r,e,t,s,i):t.type==="block-seq"?zm.resolveBlockSeq(r,e,t,s,i):Qm.resolveFlowCollection(r,e,t,s,i),a=o.constructor;return n==="!"||n===a.tagName?(o.tag=a.tagName,o):(n&&(o.tag=n),o)}function Xm(r,e,t,s,n){let i=s.tag,o=i?e.directives.tagName(i.source,d=>n(i,"TAG_RESOLVE_FAILED",d)):null;if(t.type==="block-seq"){let{anchor:d,newlineAfterProp:h}=s,g=d&&i?d.offset>i.offset?d:i:d??i;g&&(!h||h.offset<g.offset)&&n(g,"MISSING_CHAR","Missing newline after block sequence props")}let a=t.type==="block-map"?"map":t.type==="block-seq"?"seq":t.start.source==="{"?"map":"seq";if(!i||!o||o==="!"||o===Ym.YAMLMap.tagName&&a==="map"||o===Hm.YAMLSeq.tagName&&a==="seq")return Fi(r,e,t,n,o);let c=e.schema.tags.find(d=>d.tag===o&&d.collection===a);if(!c){let d=e.schema.knownTags[o];if(d?.collection===a)e.schema.tags.push(Object.assign({},d,{default:!1})),c=d;else return d?n(i,"BAD_COLLECTION_TYPE",`${d.tag} used for ${a} collection, but expects ${d.collection??"scalar"}`,!0):n(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),Fi(r,e,t,n,o)}let l=Fi(r,e,t,n,o,c),f=c.resolve?.(l,d=>n(i,"TAG_RESOLVE_FAILED",d),e.options)??l,u=Vm.isNode(f)?f:new Wm.Scalar(f);return u.range=l.range,u.tag=o,c?.format&&(u.format=c.format),u}Cl.composeCollection=Xm});var Ki=S(Rl=>{"use strict";var Ui=_();function Zm(r,e,t){let s=e.offset,n=eg(e,r.options.strict,t);if(!n)return{value:"",type:null,comment:"",range:[s,s,s]};let i=n.mode===">"?Ui.Scalar.BLOCK_FOLDED:Ui.Scalar.BLOCK_LITERAL,o=e.source?tg(e.source):[],a=o.length;for(let p=o.length-1;p>=0;--p){let y=o[p][1];if(y===""||y==="\r")a=p;else break}if(a===0){let p=n.chomp==="+"&&o.length>0?`
76
+ `.repeat(Math.max(1,o.length-1)):"",y=s+n.length;return e.source&&(y+=e.source.length),{value:p,type:i,comment:n.comment,range:[s,y,y]}}let c=e.indent+n.indent,l=e.offset+n.length,f=0;for(let p=0;p<a;++p){let[y,x]=o[p];if(x===""||x==="\r")n.indent===0&&y.length>c&&(c=y.length);else{y.length<c&&t(l+y.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator"),n.indent===0&&(c=y.length),f=p,c===0&&!r.atRoot&&t(l,"BAD_INDENT","Block scalar values in collections must be indented");break}l+=y.length+x.length+1}for(let p=o.length-1;p>=a;--p)o[p][0].length>c&&(a=p+1);let u="",d="",h=!1;for(let p=0;p<f;++p)u+=o[p][0].slice(c)+`
77
+ `;for(let p=f;p<a;++p){let[y,x]=o[p];l+=y.length+x.length+1;let k=x[x.length-1]==="\r";if(k&&(x=x.slice(0,-1)),x&&y.length<c){let m=`Block scalar lines must not be less indented than their ${n.indent?"explicit indentation indicator":"first line"}`;t(l-x.length-(k?2:1),"BAD_INDENT",m),y=""}i===Ui.Scalar.BLOCK_LITERAL?(u+=d+y.slice(c)+x,d=`
78
+ `):y.length>c||x[0]===" "?(d===" "?d=`
79
+ `:!h&&d===`
80
+ `&&(d=`
81
+
82
+ `),u+=d+y.slice(c)+x,d=`
83
+ `,h=!0):x===""?d===`
84
+ `?u+=`
85
+ `:d=`
86
+ `:(u+=d+x,d=" ",h=!1)}switch(n.chomp){case"-":break;case"+":for(let p=a;p<o.length;++p)u+=`
87
+ `+o[p][0].slice(c);u[u.length-1]!==`
88
+ `&&(u+=`
89
+ `);break;default:u+=`
90
+ `}let g=s+n.length+e.source.length;return{value:u,type:i,comment:n.comment,range:[s,g,g]}}function eg({offset:r,props:e},t,s){if(e[0].type!=="block-scalar-header")return s(e[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:n}=e[0],i=n[0],o=0,a="",c=-1;for(let d=1;d<n.length;++d){let h=n[d];if(!a&&(h==="-"||h==="+"))a=h;else{let g=Number(h);!o&&g?o=g:c===-1&&(c=r+d)}}c!==-1&&s(c,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${n}`);let l=!1,f="",u=n.length;for(let d=1;d<e.length;++d){let h=e[d];switch(h.type){case"space":l=!0;case"newline":u+=h.source.length;break;case"comment":t&&!l&&s(h,"MISSING_CHAR","Comments must be separated from other tokens by white space characters"),u+=h.source.length,f=h.source.substring(1);break;case"error":s(h,"UNEXPECTED_TOKEN",h.message),u+=h.source.length;break;default:{let g=`Unexpected token in block scalar header: ${h.type}`;s(h,"UNEXPECTED_TOKEN",g);let p=h.source;p&&typeof p=="string"&&(u+=p.length)}}}return{mode:i,indent:o,chomp:a,comment:f,length:u}}function tg(r){let e=r.split(/\n( *)/),t=e[0],s=t.match(/^( *)/),i=[s?.[1]?[s[1],t.slice(s[1].length)]:["",t]];for(let o=1;o<e.length;o+=2)i.push([e[o],e[o+1]]);return i}Rl.resolveBlockScalar=Zm});var Vi=S(Ll=>{"use strict";var Ji=_(),rg=ot();function sg(r,e,t){let{offset:s,type:n,source:i,end:o}=r,a,c,l=(d,h,g)=>t(s+d,h,g);switch(n){case"scalar":a=Ji.Scalar.PLAIN,c=ng(i,l);break;case"single-quoted-scalar":a=Ji.Scalar.QUOTE_SINGLE,c=ig(i,l);break;case"double-quoted-scalar":a=Ji.Scalar.QUOTE_DOUBLE,c=og(i,l);break;default:return t(r,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${n}`),{value:"",type:null,comment:"",range:[s,s+i.length,s+i.length]}}let f=s+i.length,u=rg.resolveEnd(o,f,e,t);return{value:c,type:a,comment:u.comment,range:[s,f,u.offset]}}function ng(r,e){let t="";switch(r[0]){case" ":t="a tab character";break;case",":t="flow indicator character ,";break;case"%":t="directive indicator character %";break;case"|":case">":{t=`block scalar indicator ${r[0]}`;break}case"@":case"`":{t=`reserved character ${r[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),_l(r)}function ig(r,e){return(r[r.length-1]!=="'"||r.length===1)&&e(r.length,"MISSING_CHAR","Missing closing 'quote"),_l(r.slice(1,-1)).replace(/''/g,"'")}function _l(r){let e,t;try{e=new RegExp(`(.*?)(?<![ ])[ ]*\r?
91
+ `,"sy"),t=new RegExp(`[ ]*(.*?)(?:(?<![ ])[ ]*)?\r?
92
+ `,"sy")}catch{e=/(.*?)[ \t]*\r?\n/sy,t=/[ \t]*(.*?)[ \t]*\r?\n/sy}let s=e.exec(r);if(!s)return r;let n=s[1],i=" ",o=e.lastIndex;for(t.lastIndex=o;s=t.exec(r);)s[1]===""?i===`
93
+ `?n+=i:i=`
94
+ `:(n+=i+s[1],i=" "),o=t.lastIndex;let a=/[ \t]*(.*)/sy;return a.lastIndex=o,s=a.exec(r),n+i+(s?.[1]??"")}function og(r,e){let t="";for(let s=1;s<r.length-1;++s){let n=r[s];if(!(n==="\r"&&r[s+1]===`
95
+ `))if(n===`
96
+ `){let{fold:i,offset:o}=ag(r,s);t+=i,s=o}else if(n==="\\"){let i=r[++s],o=cg[i];if(o)t+=o;else if(i===`
97
+ `)for(i=r[s+1];i===" "||i===" ";)i=r[++s+1];else if(i==="\r"&&r[s+1]===`
98
+ `)for(i=r[++s+1];i===" "||i===" ";)i=r[++s+1];else if(i==="x"||i==="u"||i==="U"){let a={x:2,u:4,U:8}[i];t+=lg(r,s+1,a,e),s+=a}else{let a=r.substr(s-1,2);e(s-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),t+=a}}else if(n===" "||n===" "){let i=s,o=r[s+1];for(;o===" "||o===" ";)o=r[++s+1];o!==`
99
+ `&&!(o==="\r"&&r[s+2]===`
100
+ `)&&(t+=s>i?r.slice(i,s+1):n)}else t+=n}return(r[r.length-1]!=='"'||r.length===1)&&e(r.length,"MISSING_CHAR",'Missing closing "quote'),t}function ag(r,e){let t="",s=r[e+1];for(;(s===" "||s===" "||s===`
101
+ `||s==="\r")&&!(s==="\r"&&r[e+2]!==`
102
+ `);)s===`
103
+ `&&(t+=`
104
+ `),e+=1,s=r[e+1];return t||(t=" "),{fold:t,offset:e}}var cg={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
105
+ `,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function lg(r,e,t,s){let n=r.substr(e,t),o=n.length===t&&/^[0-9a-fA-F]+$/.test(n)?parseInt(n,16):NaN;if(isNaN(o)){let a=r.substr(e-2,t+2);return s(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),a}return String.fromCodePoint(o)}Ll.resolveFlowScalar=sg});var Dl=S(Ml=>{"use strict";var Me=P(),$l=_(),ug=Ki(),fg=Vi();function dg(r,e,t,s){let{value:n,type:i,comment:o,range:a}=e.type==="block-scalar"?ug.resolveBlockScalar(r,e,s):fg.resolveFlowScalar(e,r.options.strict,s),c=t?r.directives.tagName(t.source,u=>s(t,"TAG_RESOLVE_FAILED",u)):null,l;r.options.stringKeys&&r.atKey?l=r.schema[Me.SCALAR]:c?l=pg(r.schema,n,c,t,s):e.type==="scalar"?l=hg(r,n,e,s):l=r.schema[Me.SCALAR];let f;try{let u=l.resolve(n,d=>s(t??e,"TAG_RESOLVE_FAILED",d),r.options);f=Me.isScalar(u)?u:new $l.Scalar(u)}catch(u){let d=u instanceof Error?u.message:String(u);s(t??e,"TAG_RESOLVE_FAILED",d),f=new $l.Scalar(n)}return f.range=a,f.source=n,i&&(f.type=i),c&&(f.tag=c),l.format&&(f.format=l.format),o&&(f.comment=o),f}function pg(r,e,t,s,n){if(t==="!")return r[Me.SCALAR];let i=[];for(let a of r.tags)if(!a.collection&&a.tag===t)if(a.default&&a.test)i.push(a);else return a;for(let a of i)if(a.test?.test(e))return a;let o=r.knownTags[t];return o&&!o.collection?(r.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(n(s,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),r[Me.SCALAR])}function hg({atKey:r,directives:e,schema:t},s,n,i){let o=t.tags.find(a=>(a.default===!0||r&&a.default==="key")&&a.test?.test(s))||t[Me.SCALAR];if(t.compat){let a=t.compat.find(c=>c.default&&c.test?.test(s))??t[Me.SCALAR];if(o.tag!==a.tag){let c=e.tagString(o.tag),l=e.tagString(a.tag),f=`Value may be parsed as either ${c} or ${l}`;i(n,"TAG_RESOLVE_FAILED",f,!0)}}return o}Ml.composeScalar=dg});var Bl=S(ql=>{"use strict";function mg(r,e,t){if(e){t??(t=e.length);for(let s=t-1;s>=0;--s){let n=e[s];switch(n.type){case"space":case"comment":case"newline":r-=n.source.length;continue}for(n=e[++s];n?.type==="space";)r+=n.source.length,n=e[++s];break}}return r}ql.emptyScalarPosition=mg});var Ul=S(Yi=>{"use strict";var gg=It(),yg=P(),bg=Il(),jl=Dl(),wg=ot(),vg=Bl(),Sg={composeNode:Fl,composeEmptyNode:Wi};function Fl(r,e,t,s){let n=r.atKey,{spaceBefore:i,comment:o,anchor:a,tag:c}=t,l,f=!0;switch(e.type){case"alias":l=kg(r,e,s),(a||c)&&s(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":l=jl.composeScalar(r,e,c,s),a&&(l.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":l=bg.composeCollection(Sg,r,e,t,s),a&&(l.anchor=a.source.substring(1));break;default:{let u=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;s(e,"UNEXPECTED_TOKEN",u),l=Wi(r,e.offset,void 0,null,t,s),f=!1}}return a&&l.anchor===""&&s(a,"BAD_ALIAS","Anchor cannot be an empty string"),n&&r.options.stringKeys&&(!yg.isScalar(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&s(c??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),i&&(l.spaceBefore=!0),o&&(e.type==="scalar"&&e.source===""?l.comment=o:l.commentBefore=o),r.options.keepSourceTokens&&f&&(l.srcToken=e),l}function Wi(r,e,t,s,{spaceBefore:n,comment:i,anchor:o,tag:a,end:c},l){let f={type:"scalar",offset:vg.emptyScalarPosition(e,t,s),indent:-1,source:""},u=jl.composeScalar(r,f,a,l);return o&&(u.anchor=o.source.substring(1),u.anchor===""&&l(o,"BAD_ALIAS","Anchor cannot be an empty string")),n&&(u.spaceBefore=!0),i&&(u.comment=i,u.range[2]=c),u}function kg({options:r},{offset:e,source:t,end:s},n){let i=new gg.Alias(t.substring(1));i.source===""&&n(e,"BAD_ALIAS","Alias cannot be an empty string"),i.source.endsWith(":")&&n(e+t.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let o=e+t.length,a=wg.resolveEnd(s,o,r.strict,n);return i.range=[e,o,a.offset],a.comment&&(i.comment=a.comment),i}Yi.composeEmptyNode=Wi;Yi.composeNode=Fl});var Vl=S(Jl=>{"use strict";var xg=Ht(),Kl=Ul(),Eg=ot(),Tg=Xt();function Ag(r,e,{offset:t,start:s,value:n,end:i},o){let a=Object.assign({_directives:e},r),c=new xg.Document(void 0,a),l={atKey:!1,atRoot:!0,directives:c.directives,options:c.options,schema:c.schema},f=Tg.resolveProps(s,{indicator:"doc-start",next:n??i?.[0],offset:t,onError:o,parentIndent:0,startOnNewline:!0});f.found&&(c.directives.docStart=!0,n&&(n.type==="block-map"||n.type==="block-seq")&&!f.hasNewline&&o(f.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),c.contents=n?Kl.composeNode(l,n,f,o):Kl.composeEmptyNode(l,f.end,s,null,f,o);let u=c.contents.range[2],d=Eg.resolveEnd(i,u,!1,o);return d.comment&&(c.comment=d.comment),c.range=[t,u,d.offset],c}Jl.composeDoc=Ag});var Gi=S(Hl=>{"use strict";var Pg=Nr("process"),Og=Ln(),Ng=Ht(),Zt=Qt(),Wl=P(),Cg=Vl(),Ig=ot();function er(r){if(typeof r=="number")return[r,r+1];if(Array.isArray(r))return r.length===2?r:[r[0],r[1]];let{offset:e,source:t}=r;return[e,e+(typeof t=="string"?t.length:1)]}function Yl(r){let e="",t=!1,s=!1;for(let n=0;n<r.length;++n){let i=r[n];switch(i[0]){case"#":e+=(e===""?"":s?`
106
+
107
+ `:`
108
+ `)+(i.substring(1)||" "),t=!0,s=!1;break;case"%":r[n+1]?.[0]!=="#"&&(n+=1),t=!1;break;default:t||(s=!0),t=!1}}return{comment:e,afterEmptyLine:s}}var Hi=class{constructor(e={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(t,s,n,i)=>{let o=er(t);i?this.warnings.push(new Zt.YAMLWarning(o,s,n)):this.errors.push(new Zt.YAMLParseError(o,s,n))},this.directives=new Og.Directives({version:e.version||"1.2"}),this.options=e}decorate(e,t){let{comment:s,afterEmptyLine:n}=Yl(this.prelude);if(s){let i=e.contents;if(t)e.comment=e.comment?`${e.comment}
109
+ ${s}`:s;else if(n||e.directives.docStart||!i)e.commentBefore=s;else if(Wl.isCollection(i)&&!i.flow&&i.items.length>0){let o=i.items[0];Wl.isPair(o)&&(o=o.key);let a=o.commentBefore;o.commentBefore=a?`${s}
110
+ ${a}`:s}else{let o=i.commentBefore;i.commentBefore=o?`${s}
111
+ ${o}`:s}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:Yl(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,s=-1){for(let n of e)yield*this.next(n);yield*this.end(t,s)}*next(e){switch(Pg.env.LOG_STREAM&&console.dir(e,{depth:null}),e.type){case"directive":this.directives.add(e.source,(t,s,n)=>{let i=er(e);i[0]+=t,this.onError(i,"BAD_DIRECTIVE",s,n)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let t=Cg.composeDoc(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,s=new Zt.YAMLParseError(er(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(s):this.doc.errors.push(s);break}case"doc-end":{if(!this.doc){let s="Unexpected doc-end without preceding document";this.errors.push(new Zt.YAMLParseError(er(e),"UNEXPECTED_TOKEN",s));break}this.doc.directives.docEnd=!0;let t=Ig.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let s=this.doc.comment;this.doc.comment=s?`${s}
112
+ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new Zt.YAMLParseError(er(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let s=Object.assign({_directives:this.directives},this.options),n=new Ng.Document(void 0,s);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),n.range=[0,t,t],this.decorate(n,!1),yield n}}};Hl.Composer=Hi});var Ql=S(xs=>{"use strict";var Rg=Ki(),_g=Vi(),Lg=Qt(),Gl=Mt();function $g(r,e=!0,t){if(r){let s=(n,i,o)=>{let a=typeof n=="number"?n:Array.isArray(n)?n[0]:n.offset;if(t)t(a,i,o);else throw new Lg.YAMLParseError([a,a+1],i,o)};switch(r.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return _g.resolveFlowScalar(r,e,s);case"block-scalar":return Rg.resolveBlockScalar({options:{strict:e}},r,s)}}return null}function Mg(r,e){let{implicitKey:t=!1,indent:s,inFlow:n=!1,offset:i=-1,type:o="PLAIN"}=e,a=Gl.stringifyString({type:o,value:r},{implicitKey:t,indent:s>0?" ".repeat(s):"",inFlow:n,options:{blockQuote:!0,lineWidth:-1}}),c=e.end??[{type:"newline",offset:-1,indent:s,source:`
113
+ `}];switch(a[0]){case"|":case">":{let l=a.indexOf(`
114
+ `),f=a.substring(0,l),u=a.substring(l+1)+`
115
+ `,d=[{type:"block-scalar-header",offset:i,indent:s,source:f}];return zl(d,c)||d.push({type:"newline",offset:-1,indent:s,source:`
116
+ `}),{type:"block-scalar",offset:i,indent:s,props:d,source:u}}case'"':return{type:"double-quoted-scalar",offset:i,indent:s,source:a,end:c};case"'":return{type:"single-quoted-scalar",offset:i,indent:s,source:a,end:c};default:return{type:"scalar",offset:i,indent:s,source:a,end:c}}}function Dg(r,e,t={}){let{afterKey:s=!1,implicitKey:n=!1,inFlow:i=!1,type:o}=t,a="indent"in r?r.indent:null;if(s&&typeof a=="number"&&(a+=2),!o)switch(r.type){case"single-quoted-scalar":o="QUOTE_SINGLE";break;case"double-quoted-scalar":o="QUOTE_DOUBLE";break;case"block-scalar":{let l=r.props[0];if(l.type!=="block-scalar-header")throw new Error("Invalid block scalar header");o=l.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:o="PLAIN"}let c=Gl.stringifyString({type:o,value:e},{implicitKey:n||a===null,indent:a!==null&&a>0?" ".repeat(a):"",inFlow:i,options:{blockQuote:!0,lineWidth:-1}});switch(c[0]){case"|":case">":qg(r,c);break;case'"':zi(r,c,"double-quoted-scalar");break;case"'":zi(r,c,"single-quoted-scalar");break;default:zi(r,c,"scalar")}}function qg(r,e){let t=e.indexOf(`
117
+ `),s=e.substring(0,t),n=e.substring(t+1)+`
118
+ `;if(r.type==="block-scalar"){let i=r.props[0];if(i.type!=="block-scalar-header")throw new Error("Invalid block scalar header");i.source=s,r.source=n}else{let{offset:i}=r,o="indent"in r?r.indent:-1,a=[{type:"block-scalar-header",offset:i,indent:o,source:s}];zl(a,"end"in r?r.end:void 0)||a.push({type:"newline",offset:-1,indent:o,source:`
119
+ `});for(let c of Object.keys(r))c!=="type"&&c!=="offset"&&delete r[c];Object.assign(r,{type:"block-scalar",indent:o,props:a,source:n})}}function zl(r,e){if(e)for(let t of e)switch(t.type){case"space":case"comment":r.push(t);break;case"newline":return r.push(t),!0}return!1}function zi(r,e,t){switch(r.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":r.type=t,r.source=e;break;case"block-scalar":{let s=r.props.slice(1),n=e.length;r.props[0].type==="block-scalar-header"&&(n-=r.props[0].source.length);for(let i of s)i.offset+=n;delete r.props,Object.assign(r,{type:t,source:e,end:s});break}case"block-map":case"block-seq":{let n={type:"newline",offset:r.offset+e.length,indent:r.indent,source:`
120
+ `};delete r.items,Object.assign(r,{type:t,source:e,end:[n]});break}default:{let s="indent"in r?r.indent:-1,n="end"in r&&Array.isArray(r.end)?r.end.filter(i=>i.type==="space"||i.type==="comment"||i.type==="newline"):[];for(let i of Object.keys(r))i!=="type"&&i!=="offset"&&delete r[i];Object.assign(r,{type:t,indent:s,source:e,end:n})}}}xs.createScalarToken=Mg;xs.resolveAsScalar=$g;xs.setScalarValue=Dg});var Zl=S(Xl=>{"use strict";var Bg=r=>"type"in r?Ts(r):Es(r);function Ts(r){switch(r.type){case"block-scalar":{let e="";for(let t of r.props)e+=Ts(t);return e+r.source}case"block-map":case"block-seq":{let e="";for(let t of r.items)e+=Es(t);return e}case"flow-collection":{let e=r.start.source;for(let t of r.items)e+=Es(t);for(let t of r.end)e+=t.source;return e}case"document":{let e=Es(r);if(r.end)for(let t of r.end)e+=t.source;return e}default:{let e=r.source;if("end"in r&&r.end)for(let t of r.end)e+=t.source;return e}}}function Es({start:r,key:e,sep:t,value:s}){let n="";for(let i of r)n+=i.source;if(e&&(n+=Ts(e)),t)for(let i of t)n+=i.source;return s&&(n+=Ts(s)),n}Xl.stringify=Bg});var su=S(ru=>{"use strict";var Qi=Symbol("break visit"),jg=Symbol("skip children"),eu=Symbol("remove item");function De(r,e){"type"in r&&r.type==="document"&&(r={start:r.start,value:r.value}),tu(Object.freeze([]),r,e)}De.BREAK=Qi;De.SKIP=jg;De.REMOVE=eu;De.itemAtPath=(r,e)=>{let t=r;for(let[s,n]of e){let i=t?.[s];if(i&&"items"in i)t=i.items[n];else return}return t};De.parentCollection=(r,e)=>{let t=De.itemAtPath(r,e.slice(0,-1)),s=e[e.length-1][0],n=t?.[s];if(n&&"items"in n)return n;throw new Error("Parent collection not found")};function tu(r,e,t){let s=t(e,r);if(typeof s=="symbol")return s;for(let n of["key","value"]){let i=e[n];if(i&&"items"in i){for(let o=0;o<i.items.length;++o){let a=tu(Object.freeze(r.concat([[n,o]])),i.items[o],t);if(typeof a=="number")o=a-1;else{if(a===Qi)return Qi;a===eu&&(i.items.splice(o,1),o-=1)}}typeof s=="function"&&n==="key"&&(s=s(e,r))}}return typeof s=="function"?s(e,r):s}ru.visit=De});var As=S(V=>{"use strict";var Xi=Ql(),Fg=Zl(),Ug=su(),Zi="\uFEFF",eo="",to="",ro="",Kg=r=>!!r&&"items"in r,Jg=r=>!!r&&(r.type==="scalar"||r.type==="single-quoted-scalar"||r.type==="double-quoted-scalar"||r.type==="block-scalar");function Vg(r){switch(r){case Zi:return"<BOM>";case eo:return"<DOC>";case to:return"<FLOW_END>";case ro:return"<SCALAR>";default:return JSON.stringify(r)}}function Wg(r){switch(r){case Zi:return"byte-order-mark";case eo:return"doc-mode";case to:return"flow-error-end";case ro:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
121
+ `:case`\r
122
+ `:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(r[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}V.createScalarToken=Xi.createScalarToken;V.resolveAsScalar=Xi.resolveAsScalar;V.setScalarValue=Xi.setScalarValue;V.stringify=Fg.stringify;V.visit=Ug.visit;V.BOM=Zi;V.DOCUMENT=eo;V.FLOW_END=to;V.SCALAR=ro;V.isCollection=Kg;V.isScalar=Jg;V.prettyToken=Vg;V.tokenType=Wg});var io=S(iu=>{"use strict";var tr=As();function ee(r){switch(r){case void 0:case" ":case`
123
+ `:case"\r":case" ":return!0;default:return!1}}var nu=new Set("0123456789ABCDEFabcdef"),Yg=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),Ps=new Set(",[]{}"),Hg=new Set(` ,[]{}
124
+ \r `),so=r=>!r||Hg.has(r),no=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!t;let s=this.next??"stream";for(;s&&(t||this.hasChars(1));)s=yield*this.parseNext(s)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===`
125
+ `?!0:t==="\r"?this.buffer[e+1]===`
126
+ `:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let s=0;for(;t===" ";)t=this.buffer[++s+e];if(t==="\r"){let n=this.buffer[s+e+1];if(n===`
127
+ `||!n&&!this.atEnd)return e+s+1}return t===`
128
+ `||s>=this.indentNext||!t&&!this.atEnd?e+s:-1}if(t==="-"||t==="."){let s=this.buffer.substr(e,3);if((s==="---"||s==="...")&&ee(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&e<this.pos)&&(e=this.buffer.indexOf(`
129
+ `,this.pos),this.lineEndPos=e),e===-1?this.atEnd?this.buffer.substring(this.pos):null:(this.buffer[e-1]==="\r"&&(e-=1),this.buffer.substring(this.pos,e))}hasChars(e){return this.pos+e<=this.buffer.length}setNext(e){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=e,null}peek(e){return this.buffer.substr(this.pos,e)}*parseNext(e){switch(e){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let e=this.getLine();if(e===null)return this.setNext("stream");if(e[0]===tr.BOM&&(yield*this.pushCount(1),e=e.substring(1)),e[0]==="%"){let t=e.length,s=e.indexOf("#");for(;s!==-1;){let i=e[s-1];if(i===" "||i===" "){t=s-1;break}else s=e.indexOf("#",s+1)}for(;;){let i=e[t-1];if(i===" "||i===" ")t-=1;else break}let n=(yield*this.pushCount(t))+(yield*this.pushSpaces(!0));return yield*this.pushCount(e.length-n),this.pushNewline(),"stream"}if(this.atLineEnd()){let t=yield*this.pushSpaces(!0);return yield*this.pushCount(e.length-t),yield*this.pushNewline(),"stream"}return yield tr.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let e=this.charAt(0);if(!e&&!this.atEnd)return this.setNext("line-start");if(e==="-"||e==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let t=this.peek(3);if((t==="---"||t==="...")&&ee(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,t==="---"?"doc":"stream"}return this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!ee(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&ee(t)){let s=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=s,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*this.pushIndicators();switch(e[t]){case"#":yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(so),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return t+=yield*this.parseBlockScalarHeader(),t+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-t),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,t,s=-1;do e=yield*this.pushNewline(),e>0?(t=yield*this.pushSpaces(!1),this.indentValue=s=t):t=0,t+=yield*this.pushSpaces(!0);while(e+t>0);let n=this.getLine();if(n===null)return this.setNext("flow");if((s!==-1&&s<this.indentNext&&n[0]!=="#"||s===0&&(n.startsWith("---")||n.startsWith("..."))&&ee(n[3]))&&!(s===this.indentNext-1&&this.flowLevel===1&&(n[0]==="]"||n[0]==="}")))return this.flowLevel=0,yield tr.FLOW_END,yield*this.parseLineStart();let i=0;for(;n[i]===",";)i+=yield*this.pushCount(1),i+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(i+=yield*this.pushIndicators(),n[i]){case void 0:return"flow";case"#":return yield*this.pushCount(n.length-i),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(so),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let o=this.charAt(1);if(this.flowKey||ee(o)||o===",")return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){let e=this.charAt(0),t=this.buffer.indexOf(e,this.pos+1);if(e==="'")for(;t!==-1&&this.buffer[t+1]==="'";)t=this.buffer.indexOf("'",t+2);else for(;t!==-1;){let i=0;for(;this.buffer[t-1-i]==="\\";)i+=1;if(i%2===0)break;t=this.buffer.indexOf('"',t+1)}let s=this.buffer.substring(0,t),n=s.indexOf(`
130
+ `,this.pos);if(n!==-1){for(;n!==-1;){let i=this.continueScalar(n+1);if(i===-1)break;n=s.indexOf(`
131
+ `,i)}n!==-1&&(t=n-(s[n-1]==="\r"?2:1))}if(t===-1){if(!this.atEnd)return this.setNext("quoted-scalar");t=this.buffer.length}return yield*this.pushToIndex(t+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let e=this.pos;for(;;){let t=this.buffer[++e];if(t==="+")this.blockScalarKeep=!0;else if(t>"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if(t!=="-")break}return yield*this.pushUntil(t=>ee(t)||t==="#")}*parseBlockScalar(){let e=this.pos-1,t=0,s;e:for(let i=this.pos;s=this.buffer[i];++i)switch(s){case" ":t+=1;break;case`
132
+ `:e=i,t=0;break;case"\r":{let o=this.buffer[i+1];if(!o&&!this.atEnd)return this.setNext("block-scalar");if(o===`
133
+ `)break}default:break e}if(!s&&!this.atEnd)return this.setNext("block-scalar");if(t>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=t:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let i=this.continueScalar(e+1);if(i===-1)break;e=this.buffer.indexOf(`
134
+ `,i)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let n=e+1;for(s=this.buffer[n];s===" ";)s=this.buffer[++n];if(s===" "){for(;s===" "||s===" "||s==="\r"||s===`
135
+ `;)s=this.buffer[++n];e=n-1}else if(!this.blockScalarKeep)do{let i=e-1,o=this.buffer[i];o==="\r"&&(o=this.buffer[--i]);let a=i;for(;o===" ";)o=this.buffer[--i];if(o===`
136
+ `&&i>=this.pos&&i+1+t>a)e=i;else break}while(!0);return yield tr.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,t=this.pos-1,s=this.pos-1,n;for(;n=this.buffer[++s];)if(n===":"){let i=this.buffer[s+1];if(ee(i)||e&&Ps.has(i))break;t=s}else if(ee(n)){let i=this.buffer[s+1];if(n==="\r"&&(i===`
137
+ `?(s+=1,n=`
138
+ `,i=this.buffer[s+1]):t=s),i==="#"||e&&Ps.has(i))break;if(n===`
139
+ `){let o=this.continueScalar(s+1);if(o===-1)break;s=Math.max(s,o-2)}}else{if(e&&Ps.has(n))break;t=s}return!n&&!this.atEnd?this.setNext("plain-scalar"):(yield tr.SCALAR,yield*this.pushToIndex(t+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let s=this.buffer.slice(this.pos,e);return s?(yield s,this.pos+=s.length,s.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(so))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let e=this.flowLevel>0,t=this.charAt(1);if(ee(t)||e&&Ps.has(t))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,t=this.buffer[e];for(;!ee(t)&&t!==">";)t=this.buffer[++e];return yield*this.pushToIndex(t===">"?e+1:e,!1)}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(Yg.has(t))t=this.buffer[++e];else if(t==="%"&&nu.has(this.buffer[e+1])&&nu.has(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===`
140
+ `?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===`
141
+ `?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,s;do s=this.buffer[++t];while(s===" "||e&&s===" ");let n=t-this.pos;return n>0&&(yield this.buffer.substr(this.pos,n),this.pos=t),n}*pushUntil(e){let t=this.pos,s=this.buffer[t];for(;!e(s);)s=this.buffer[++t];return yield*this.pushToIndex(t,!1)}};iu.Lexer=no});var ao=S(ou=>{"use strict";var oo=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,s=this.lineStarts.length;for(;t<s;){let i=t+s>>1;this.lineStarts[i]<e?t=i+1:s=i}if(this.lineStarts[t]===e)return{line:t+1,col:1};if(t===0)return{line:0,col:e};let n=this.lineStarts[t-1];return{line:t,col:e-n+1}}}};ou.LineCounter=oo});var lo=S(fu=>{"use strict";var Gg=Nr("process"),au=As(),zg=io();function Te(r,e){for(let t=0;t<r.length;++t)if(r[t].type===e)return!0;return!1}function cu(r){for(let e=0;e<r.length;++e)switch(r[e].type){case"space":case"comment":case"newline":break;default:return e}return-1}function uu(r){switch(r?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function Os(r){switch(r.type){case"document":return r.start;case"block-map":{let e=r.items[r.items.length-1];return e.sep??e.start}case"block-seq":return r.items[r.items.length-1].start;default:return[]}}function at(r){if(r.length===0)return[];let e=r.length;e:for(;--e>=0;)switch(r[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;r[++e]?.type==="space";);return r.splice(e,r.length)}function lu(r){if(r.start.type==="flow-seq-start")for(let e of r.items)e.sep&&!e.value&&!Te(e.start,"explicit-key-ind")&&!Te(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,uu(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}var co=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new zg.Lexer,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let s of this.lexer.lex(e,t))yield*this.next(s);t||(yield*this.end())}*next(e){if(this.source=e,Gg.env.LOG_TOKENS&&console.log("|",au.prettyToken(e)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let t=au.tokenType(e);if(t)if(t==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=t,yield*this.step(),t){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let s=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:s,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&e?.type!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e??this.stack.pop();if(!t)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield t;else{let s=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in s?s.indent:0:t.type==="flow-collection"&&s.type==="document"&&(t.indent=0),t.type==="flow-collection"&&lu(t),s.type){case"document":s.value=t;break;case"block-scalar":s.props.push(t);break;case"block-map":{let n=s.items[s.items.length-1];if(n.value){s.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(n.sep)n.value=t;else{Object.assign(n,{key:t,sep:[]}),this.onKeyLine=!n.explicitKey;return}break}case"block-seq":{let n=s.items[s.items.length-1];n.value?s.items.push({start:[],value:t}):n.value=t;break}case"flow-collection":{let n=s.items[s.items.length-1];!n||n.value?s.items.push({start:[],key:t,sep:[]}):n.sep?n.value=t:Object.assign(n,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if((s.type==="document"||s.type==="block-map"||s.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){let n=t.items[t.items.length-1];n&&!n.sep&&!n.value&&n.start.length>0&&cu(n.start)===-1&&(t.indent===0||n.start.every(i=>i.type!=="comment"||i.indent<t.indent))&&(s.type==="document"?s.end=n.start:s.items.push({start:n.start}),t.items.splice(-1,1))}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let e={type:"document",offset:this.offset,start:[]};this.type==="doc-start"&&e.start.push(this.sourceToken),this.stack.push(e);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document(e){if(e.value)return yield*this.lineEnd(e);switch(this.type){case"doc-start":{cu(e.start)!==-1?(yield*this.pop(),yield*this.step()):e.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":e.start.push(this.sourceToken);return}let t=this.startBlockValue(e);t?this.stack.push(t):yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar(e){if(this.type==="map-value-ind"){let t=Os(this.peek(2)),s=at(t),n;e.end?(n=e.end,n.push(this.sourceToken),delete e.end):n=[this.sourceToken];let i={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:s,key:e,sep:n}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=i}else yield*this.lineEnd(e)}*blockScalar(e){switch(this.type){case"space":case"comment":case"newline":e.props.push(this.sourceToken);return;case"scalar":if(e.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let t=this.source.indexOf(`
142
+ `)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`
143
+ `,t)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let t=e.items[e.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,t.value){let s="end"in t.value?t.value.end:void 0;(Array.isArray(s)?s[s.length-1]:void 0)?.type==="comment"?s?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else if(t.sep)t.sep.push(this.sourceToken);else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){Array.prototype.push.apply(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let s=!this.onKeyLine&&this.indent===e.indent,n=s&&(t.sep||t.explicitKey)&&this.type!=="seq-item-ind",i=[];if(n&&t.sep&&!t.value){let o=[];for(let a=0;a<t.sep.length;++a){let c=t.sep[a];switch(c.type){case"newline":o.push(a);break;case"space":break;case"comment":c.indent>e.indent&&(o.length=0);break;default:o.length=0}}o.length>=2&&(i=t.sep.splice(o[1]))}switch(this.type){case"anchor":case"tag":n||t.value?(i.push(this.sourceToken),e.items.push({start:i}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):n||t.value?(i.push(this.sourceToken),e.items.push({start:i,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(t.explicitKey)if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(Te(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]});else if(uu(t.key)&&!Te(t.sep,"newline")){let o=at(t.start),a=t.key,c=t.sep;c.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:a,sep:c}]})}else i.length>0?t.sep=t.sep.concat(i,this.sourceToken):t.sep.push(this.sourceToken);else if(Te(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let o=at(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||n?e.items.push({start:i,key:null,sep:[this.sourceToken]}):Te(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let o=this.flowScalar(this.type);n||t.value?(e.items.push({start:i,key:o,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(o):(Object.assign(t,{key:o,sep:[]}),this.onKeyLine=!0);return}default:{let o=this.startBlockValue(e);if(o){if(o.type==="block-seq"){if(!t.explicitKey&&t.sep&&!Te(t.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else s&&e.items.push({start:i});this.stack.push(o);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){let s="end"in t.value?t.value.end:void 0;(Array.isArray(s)?s[s.length-1]:void 0)?.type==="comment"?s?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){Array.prototype.push.apply(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||Te(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let s=this.startBlockValue(e);if(s){this.stack.push(s);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let s;do yield*this.pop(),s=this.peek(1);while(s?.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let n=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:n,sep:[]}):t.sep?this.stack.push(n):Object.assign(t,{key:n,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let s=this.startBlockValue(e);s?this.stack.push(s):(yield*this.pop(),yield*this.step())}else{let s=this.peek(2);if(s.type==="block-map"&&(this.type==="map-value-ind"&&s.indent===e.indent||this.type==="newline"&&!s.items[s.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&s.type!=="flow-collection"){let n=Os(s),i=at(n);lu(e);let o=e.end.splice(1,e.end.length);o.push(this.sourceToken);let a={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:i,key:e,sep:o}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(`
144
+ `)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`
145
+ `,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let t=Os(e),s=at(t);return s.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let t=Os(e),s=at(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(s=>s.type==="newline"||s.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};fu.Parser=co});var gu=S(sr=>{"use strict";var du=Gi(),Qg=Ht(),rr=Qt(),Xg=Yn(),Zg=P(),ey=ao(),pu=lo();function hu(r){let e=r.prettyErrors!==!1;return{lineCounter:r.lineCounter||e&&new ey.LineCounter||null,prettyErrors:e}}function ty(r,e={}){let{lineCounter:t,prettyErrors:s}=hu(e),n=new pu.Parser(t?.addNewLine),i=new du.Composer(e),o=Array.from(i.compose(n.parse(r)));if(s&&t)for(let a of o)a.errors.forEach(rr.prettifyError(r,t)),a.warnings.forEach(rr.prettifyError(r,t));return o.length>0?o:Object.assign([],{empty:!0},i.streamInfo())}function mu(r,e={}){let{lineCounter:t,prettyErrors:s}=hu(e),n=new pu.Parser(t?.addNewLine),i=new du.Composer(e),o=null;for(let a of i.compose(n.parse(r),!0,r.length))if(!o)o=a;else if(o.options.logLevel!=="silent"){o.errors.push(new rr.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return s&&t&&(o.errors.forEach(rr.prettifyError(r,t)),o.warnings.forEach(rr.prettifyError(r,t))),o}function ry(r,e,t){let s;typeof e=="function"?s=e:t===void 0&&e&&typeof e=="object"&&(t=e);let n=mu(r,t);if(!n)return null;if(n.warnings.forEach(i=>Xg.warn(n.options.logLevel,i)),n.errors.length>0){if(n.options.logLevel!=="silent")throw n.errors[0];n.errors=[]}return n.toJS(Object.assign({reviver:s},t))}function sy(r,e,t){let s=null;if(typeof e=="function"||Array.isArray(e)?s=e:t===void 0&&e&&(t=e),typeof t=="string"&&(t=t.length),typeof t=="number"){let n=Math.round(t);t=n<1?void 0:n>8?{indent:8}:{indent:n}}if(r===void 0){let{keepUndefined:n}=t??e??{};if(!n)return}return Zg.isDocument(r)&&!s?r.toString(t):new Qg.Document(r,s,t).toString(t)}sr.parse=ry;sr.parseAllDocuments=ty;sr.parseDocument=mu;sr.stringify=sy});var bu=S(C=>{"use strict";var ny=Gi(),iy=Ht(),oy=Ni(),uo=Qt(),ay=It(),Ae=P(),cy=Se(),ly=_(),uy=xe(),fy=Ee(),dy=As(),py=io(),hy=ao(),my=lo(),Ns=gu(),yu=Pt();C.Composer=ny.Composer;C.Document=iy.Document;C.Schema=oy.Schema;C.YAMLError=uo.YAMLError;C.YAMLParseError=uo.YAMLParseError;C.YAMLWarning=uo.YAMLWarning;C.Alias=ay.Alias;C.isAlias=Ae.isAlias;C.isCollection=Ae.isCollection;C.isDocument=Ae.isDocument;C.isMap=Ae.isMap;C.isNode=Ae.isNode;C.isPair=Ae.isPair;C.isScalar=Ae.isScalar;C.isSeq=Ae.isSeq;C.Pair=cy.Pair;C.Scalar=ly.Scalar;C.YAMLMap=uy.YAMLMap;C.YAMLSeq=fy.YAMLSeq;C.CST=dy;C.Lexer=py.Lexer;C.LineCounter=hy.LineCounter;C.Parser=my.Parser;C.parse=Ns.parse;C.parseAllDocuments=Ns.parseAllDocuments;C.parseDocument=Ns.parseDocument;C.stringify=Ns.stringify;C.visit=yu.visit;C.visitAsync=yu.visitAsync});function yy(r){try{return JSON.parse(r.trim()),!0}catch{return!1}}function by(r){let e=r.trim();if(!e.startsWith("<"))return!1;let t=e.match(gy);return t?At(e,t[1])!==null:!1}function wy(r){let e=r.trim();if(!e.match(/^(---|#|\w+:|-)/)||"[{<".includes(e[0]))return!1;try{let t=wu.parse(e);return t!==null&&typeof t=="object"}catch{return!1}}function vu(r){return yy(r)||by(r)||wy(r)}var wu,gy,fo=N(()=>{Ca();wu=Id(bu(),1),gy=/<([a-zA-Z_][\w.-]*)/});function vy(r){if(!r?.trim())return[];let e=r.replace(/\r\n/g,`
146
+ `),t=e.trim();if(vu(t))return[{text:t,startLine:1,endLine:e.split(`
147
+ `).length}];let s=e.split(`
148
+ `),n=[],i=0,o=-1,a=0,c=()=>{if(o>=i){let l=s.slice(i,o+1).join(`
149
+ `).trim();l&&n.push({text:l,startLine:i+1,endLine:o+1})}};for(let l=0;l<s.length;l++)s[l].trim()?(a>=2&&o>=i&&(c(),i=l),a=0,o=l):a++;return c(),n}function po(r){return vy(r).map(e=>e.text)}var Su=N(()=>{fo()});var Cs=N(()=>{Cr();va();Sa();xa();fo();Su();Ir()});function Is(r){return{...wa(r),server:r.files.get("server.ts")??""}}var ho=N(()=>{Cs();Cs();Cs()});import{join as Io,resolve as sb}from"path";import{homedir as nb}from"os";function zs(){let r=process.env.TYPEBULB_SERVERS_DIR;return r?Io(r,".."):Io(nb(),".typebulb")}function Fe(){return process.env.TYPEBULB_SERVERS_DIR||Io(zs(),"servers")}function F(r){let e=sb(r);return(process.platform==="win32"?e.toLowerCase():e).replace(/\\/g,"/")}function Qu(r,e){let t=F(r),s=F(e);return t.startsWith(s.endsWith("/")?s:s+"/")?!t.includes("/node_modules/"):!1}var wr=N(()=>{});import{readFileSync as ib,writeFileSync as ob,mkdirSync as ab}from"fs";import{join as cb}from"path";function Xu(){return cb(zs(),"trust.json")}function Ro(){try{let r=JSON.parse(ib(Xu(),"utf8"));return new Set(Array.isArray(r)?r:[])}catch{return new Set}}function lb(r){ab(zs(),{recursive:!0}),ob(Xu(),JSON.stringify([...r]))}function Ue(r){return Ro().has(F(r))}function ht(r,e){let t=Ro(),s=F(r);(e?t.has(s):!t.has(s))||(e?t.add(s):t.delete(s),lb(t))}function _o(){return[...Ro()]}var vr=N(()=>{wr()});function yt(r){if(r.server.trim())return"server-side code (server.ts)";let e=r.code;if(/\btb\s*\.\s*fs\b/.test(e)||e.includes("/__fs"))return"the filesystem";if(/\btb\s*\.\s*ai\b/.test(e)||e.includes("/__ai"))return"AI (your API keys)";if(/\btb\s*\.\s*server\s*\.\s*(?!log\b)\w/.test(e)||e.includes("/__api"))return"server-side code (server.ts)"}var en=N(()=>{});import{spawn as df}from"child_process";import{readdir as Nb,readFile as mf,writeFile as gf,unlink as kr,mkdir as Cb}from"fs/promises";import{mkdirSync as Ib,writeFileSync as pf,appendFileSync as Rb,readFileSync as yf}from"fs";import*as se from"path";import{fileURLToPath as _b}from"url";function Do(r){return se.join(Fe(),`${r}.json`)}function xr(r){return se.join(Fe(),`${r}.log`)}function tn(r){let e=xr(r);try{Ib(Fe(),{recursive:!0}),pf(e,"")}catch{return()=>{}}let t=process.stdout.write.bind(process.stdout),s=process.stderr.write.bind(process.stderr),n=0,i=!1,o=a=>{if(!i)try{let c=typeof a=="string"?Buffer.from(a,"utf8"):Buffer.from(a);if(Rb(e,c),n+=c.length,n>2*hf){let l=yf(e),f=l.subarray(Math.max(0,l.length-hf));pf(e,f),n=f.length}}catch{i=!0}};return process.stdout.write=((a,...c)=>(o(a),t(a,...c))),process.stderr.write=((a,...c)=>(o(a),s(a,...c))),()=>{process.stdout.write=t,process.stderr.write=s}}function bt(r,e=0){try{let t=yf(xr(r)),s=e>=0&&e<=t.length?e:0;return{text:t.subarray(s).toString("utf8"),offset:t.length}}catch{return{text:"",offset:0}}}function Lb(r){try{return process.kill(r,0),!0}catch(e){return e.code==="EPERM"}}async function rn(r){await Cb(Fe(),{recursive:!0}),await gf(Do(r.pid),JSON.stringify(r))}async function bf(r,e){let t=Do(r);try{let s=JSON.parse(await mf(t,"utf8"));if(s.denied===e)return;s.denied=e,await gf(t,JSON.stringify(s))}catch{}}async function Er(r){await kr(Do(r)).catch(()=>{}),await kr(xr(r)).catch(()=>{})}async function K(r){let e;try{e=await Nb(Fe())}catch{return[]}let t=[];return await Promise.all(e.map(async n=>{if(!n.endsWith(".json"))return;let i=se.join(Fe(),n),o;try{o=JSON.parse(await mf(i,"utf8"))}catch{await kr(i).catch(()=>{});return}o&&typeof o.pid=="number"&&Lb(o.pid)?t.push(o):(await kr(i).catch(()=>{}),o?.pid&&await kr(xr(o.pid)).catch(()=>{}))})),(r?t.filter(n=>n.agent==null&&Qu(n.file,r)):t).sort((n,i)=>n.startedAt-i.startedAt)}async function wt(r){try{process.kill(r,"SIGTERM")}catch{}await Er(r)}function Mb(){return se.join(se.dirname(_b(import.meta.url)),"index.js")}function Db(r,e={}){return{command:process.execPath,args:[Mb(),...e.trust?["--trust"]:[],r,...e.open===!1?["--no-open"]:[]]}}async function sn(r,e={}){let t=e.cwd??process.cwd(),s=se.resolve(t,r),n=(await K()).find(l=>l.file===s);if(n)return n;let{command:i,args:o}=Db(r,e);(process.platform==="win32"?df("cmd",["/c","start","","/b",i,...o],{cwd:t,stdio:"ignore",windowsHide:!0}):df(i,o,{cwd:t,detached:!0,stdio:"ignore"})).unref();let c=Date.now()+2e4;for(;Date.now()<c;){await $b(150);let l=(await K()).find(f=>f.file===s);if(l)return l}throw new Error(`Launched ${se.basename(r)} but it did not register within 20s.`)}var hf,$b,Ve=N(()=>{wr();hf=1e6;$b=r=>new Promise(e=>setTimeout(e,r))});function gn(r){let e=/^---[^\n]*\n([\s\S]*?)\n---/.exec(r),t=e?/^\s*name:\s*(.+?)\s*$/m.exec(e[1]):null;return t?t[1].replace(/^["']|["']$/g,""):void 0}function Go(r){return(gn(r)??"bulb").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"bulb"}var zo=N(()=>{});import{readdirSync as ow,readFileSync as aw,statSync as cw}from"fs";import{join as Vf,basename as lw}from"path";function Wf(r,e,t){if(e>8)return t;let s;try{s=ow(r,{withFileTypes:!0})}catch{return t}for(let n of s)if(n.isDirectory()){if(n.name.startsWith(".")||n.name==="node_modules")continue;Wf(Vf(r,n.name),e+1,t)}else n.isFile()&&n.name.endsWith(".bulb.md")&&t.push(Vf(r,n.name));return t}function Qo(r){return Wf(r,0,[]).map(e=>{let t=0;try{t=cw(e).mtimeMs}catch{}let s;try{s=gn(aw(e,"utf8").slice(0,1024))}catch{}return{path:e,name:s??lw(e).replace(/\.bulb\.md$/,""),mtime:t}})}var Yf=N(()=>{zo()});import{readFile as uw}from"fs/promises";async function Xo(r){try{let e=Rr(await uw(r,"utf-8"));return e?yt(Is(e)):void 0}catch{return}}var Hf=N(()=>{ho();en()});import{spawn as fw}from"child_process";import{basename as dw}from"path";function pw(){return process.env.TYPEBULB_EDITOR||"code"}function mw(r,e,t){return t==null?[e]:hw.test(dw(r))?["-g",`${e}:${t}`]:[`+${t}`,e]}function gw(r,e){let t=pw();return{command:t,args:mw(t,r,e)}}function Zo(r,e){let{command:t,args:s}=gw(r,e),n=fw(t,s,{shell:!0,detached:!0,stdio:"ignore"});n.on("error",i=>console.error("[typebulb] editor launch failed:",i?.message??i)),n.unref()}var hw,Gf=N(()=>{hw=/^(code|code-insiders|codium|vscodium|cursor|windsurf)(\.cmd|\.exe)?$/i});var zf=N(()=>{Ve();Yf();Hf();zo();Gf();vr()});var yn,Qf=N(()=>{yn=class{#e=new Map;accept(e,t){return this.#e.get(e)===t?!1:(this.#e.set(e,t),!0)}}});var gd={};Nd(gd,{attach:()=>Kw,blockToMarkdown:()=>ia,breakout:()=>Vw,capText:()=>Pr,info:()=>Mw,isHiddenTurn:()=>oa,launchBulb:()=>Gw,listBreakouts:()=>Ww,listBulbFiles:()=>Hw,listSessions:()=>Uw,logEmbedError:()=>Bw,openFile:()=>Jw,poll:()=>Dw,predictTrustOf:()=>zw,readBulbLog:()=>Xw,setBulbTrust:()=>Qw,stopBreakout:()=>Yw});import{existsSync as Et,openSync as td,readSync as rd,closeSync as sd,statSync as Ge,readdirSync as ra,watchFile as yw,unwatchFile as Xf,mkdirSync as nd,writeFileSync as id,readFileSync as sa,unlinkSync as bw,rmSync as ww}from"fs";import{join as B}from"path";import{homedir as vw}from"os";function od(r){return r?.message??String(r)}function Sw(r){return r.replace(/[^a-zA-Z0-9]/g,"-")}function ad(r){let e=na(r);if(!Et(e))return[];let t;try{t=ra(e)}catch{return[]}let s=[];for(let n of t){if(!n.endsWith(".jsonl"))continue;let i=B(e,n);try{let o=Ge(i);o.isFile()&&s.push({sessionId:n.slice(0,-6),file:i,mtime:o.mtimeMs})}catch{}}return s}function wn(r){return B(r,Ew)}function ld(r,e){return B(wn(r),`${e}.lock`)}function Aw(r,e){try{let t=ld(r,e);if(Date.now()-Ge(t).mtimeMs>=cd)return!1;try{if(parseInt(sa(t,"utf8").trim(),10)===process.pid)return!1}catch{}return!0}catch{return!1}}function ud(r,e){if(e)try{nd(wn(r),{recursive:!0}),id(ld(r,e),String(process.pid))}catch(t){console.error("[lock] claim failed:",od(t))}}function Pw(r){try{ww(B(r,".claude-bulb"),{recursive:!0,force:!0})}catch{}}function Ow(r){let e=wn(r);if(!Et(e))return;let t;try{t=ra(e)}catch{return}let s=Date.now();for(let n of t){if(!n.endsWith(".lock"))continue;let i=B(e,n);try{let o=Ge(i);s-o.mtimeMs>Tw&&bw(i)}catch{}}}function ia(r){let e=r?.type==="image"?r.source:void 0;return e?.type==="base64"&&e.data?`![pasted image](data:${e.media_type||"image/png"};base64,${e.data})`:""}function Pr(r){return r.length>ea?r.slice(0,ea)+`
150
+ \u2026[${r.length-ea} more characters truncated]`:r}function ta(r){return typeof r=="string"?Pr(r):Array.isArray(r)?r.map(e=>{if(typeof e=="string")return Pr(e);let t=e;return typeof t?.text=="string"?Pr(t.text):t?.content!=null?ta(t.content):ia(t)}).join(`
151
+ `):r==null?"":Pr(JSON.stringify(r))}function fd(r){try{return Ge(r),!1}catch(e){return e.code==="ENOENT"}}function dd(){let r=Y;if(r.file&&!fd(r.file)){ud(r.cwd,r.sessionId);return}let e=Nw(r);e&&pd(e)}function Nw(r){if(!r.everAttached)return Cw(r.cwd)??Iw(r.cwd,()=>!0)}function Cw(r){let e=wn(r);if(!Et(e))return;let t;try{t=ra(e)}catch{return}let s;for(let i of t)if(i.endsWith(".lock"))try{let o=Ge(B(e,i));if(Date.now()-o.mtimeMs>=cd||parseInt(sa(B(e,i),"utf8").trim(),10)!==process.pid)continue;(!s||o.mtimeMs>s.mtime)&&(s={sessionId:i.slice(0,-5),mtime:o.mtimeMs})}catch{}if(!s)return;let n=B(na(r),`${s.sessionId}.jsonl`);if(!fd(n))return{sessionId:s.sessionId,file:n,mtime:s.mtime}}function Iw(r,e){return ad(r).sort((t,s)=>s.mtime-t.mtime).find(t=>!Aw(r,t.sessionId)&&e(t))}function pd(r){let e=Y;if(e.file)try{Xf(e.file)}catch{}e.file=r.file,e.sessionId=r.sessionId,e.everAttached=!0,e.partial="",e.offset=0,e.latest={in:0,out:0,cached:0,cacheCreate:0},e.entries=new Map,e.chainLastUuid=void 0,e.buffer.push({type:"cleared"}),e.buffer.push({type:"session",sessionId:r.sessionId}),ud(e.cwd,r.sessionId),Zf();try{Xf(r.file)}catch{}yw(r.file,{interval:200},()=>Zf())}function Zf(){let r=Y;if(!r.file)return;let e;try{e=Ge(r.file).size}catch{return}if(e<=r.offset)return;let t;try{t=td(r.file,"r")}catch{return}try{let c=e-r.offset,l=Buffer.alloc(c),f=0;for(;f<c;){let u=rd(t,l,f,c-f,r.offset+f);if(!u)break;f+=u}r.offset+=f,r.partial+=l.subarray(0,f).toString("utf8")}finally{sd(t)}let s,n;for(;(n=r.partial.indexOf(`
152
+ `))>=0;){let c=r.partial.slice(0,n);if(r.partial=r.partial.slice(n+1),!c.trim())continue;let l;try{l=JSON.parse(c)}catch{continue}l&&l.uuid&&(r.entries.set(l.uuid,l),l.isSidechain||(s=l.uuid))}if(!s)return;let i=[],o=r.entries.get(s),a=!1;for(;o;){if(i.push(o),o.uuid===r.chainLastUuid){a=!0;break}o=o.parentUuid?r.entries.get(o.parentUuid):void 0}if(a)for(let c=i.length-2;c>=0;c--)ed(i[c]);else{r.chainLastUuid!==void 0&&(r.buffer.push({type:"cleared"}),r.buffer.push({type:"session",sessionId:r.sessionId}),r.latest={in:0,out:0,cached:0,cacheCreate:0});for(let c=i.length-1;c>=0;c--)ed(i[c])}r.chainLastUuid=s}function hd(r){let e=r.trim();return!!e&&Rw.some(t=>t.test(e))}function Lw(r){return r.replace(_w,"")}function bn(r){let e=Lw(r).trim();return e&&!hd(e)?e:""}function md(r){return r?.type==="text"&&typeof r.text=="string"?bn(r.text):""}function oa(r){return!!r.isSidechain||!!r.isMeta}function ed(r){try{$w(r)}catch(e){console.error("[claude-bulb] skipped malformed entry:",od(e))}}function $w(r){if(oa(r))return;let e=Y;if(r.type==="user"){let t=r.message?.content;if(typeof t=="string"){let s=bn(t);s&&e.buffer.push({type:"user",text:s})}else if(Array.isArray(t))for(let s of t)if(s?.type==="tool_result")e.buffer.push({type:"tool_result",id:s.tool_use_id??"",content:ta(s.content),isError:!!s.is_error});else{let n=md(s)||ia(s);n&&e.buffer.push({type:"user",text:n})}}else if(r.type==="attachment"&&r.attachment?.type==="queued_command"){let t=bn(ta(r.attachment.prompt));t&&e.buffer.push({type:"user",text:t})}else if(r.type==="assistant"){let t=r.message?.content,s=Array.isArray(t)?t:[],n=s.filter(c=>c.type==="text").map(c=>c.text??"").filter(c=>!hd(c)).join(""),i=s.filter(c=>c.type==="thinking").map(c=>c.thinking??"").join(`
153
+ `),o=s.filter(c=>c.type==="tool_use").map(c=>({id:c.id??"",name:c.name??"",input:c.input??{}}));if(n||i||o.length){let c=Date.parse(r.timestamp??""),l=!isNaN(c)&&c>=e.sessionStartMs;e.buffer.push({type:"assistant",text:n,thinking:i,tools:o,live:l})}let a=r.message?.usage??r.usage;a&&(e.latest={in:a.input_tokens??0,out:a.output_tokens??0,cached:a.cache_read_input_tokens??0,cacheCreate:a.cache_creation_input_tokens??0},e.buffer.push({type:"usage",...e.latest}))}}async function Mw(){return{cwd:Y.cwd,pid:process.pid}}async function Dw(r){let e=Y;return dd(),{events:e.buffer.slice(r),cursor:e.buffer.length,working:jw(e)}}async function Bw(r,e){qw.accept(r,e)&&console.log(e)}function jw(r){let e;for(let i of r.entries.values())(i.type==="user"||i.type==="assistant")&&(e=i);if(!e)return!1;if(e.type==="user")return!0;let s=(Array.isArray(e.message?.content)?e.message.content:[]).filter(i=>i.type==="tool_use").map(i=>i.id);if(s.length===0)return!1;let n=new Set;for(let i of r.entries.values()){let o=i.message?.content;if(Array.isArray(o))for(let a of o)a.type==="tool_result"&&a.tool_use_id&&n.add(a.tool_use_id)}return s.some(i=>i&&!n.has(i))}function Fw(r){let e;try{e=td(r,"r")}catch{return""}try{let s=65536;try{s=Ge(r).size}catch{}let n=(l,f)=>{if(f<=0)return"";let u=Buffer.alloc(f),d=rd(e,u,0,f,l);return u.subarray(0,d).toString("utf8")},i=(l,f,u)=>{let d="";for(let h of l.split(`
154
+ `)){if(!h.includes(`"${f}"`))continue;let g;try{g=JSON.parse(h)}catch{continue}let p=g?.[u];g?.type===f&&typeof p=="string"&&p&&(d=p)}return d},o=n(0,Math.min(65536,s)),a=s>65536?n(s-65536,65536):"",c=i(a,"custom-title","customTitle")||i(o,"custom-title","customTitle")||i(a,"ai-title","aiTitle")||i(o,"ai-title","aiTitle");if(c)return c.replace(/\s+/g," ").trim().slice(0,200);for(let l of o.split(`
155
+ `)){if(!l.trim())continue;let f;try{f=JSON.parse(l)}catch{continue}if(!f||oa(f)||f.type!=="user")continue;let u=f.message?.content,d="";typeof u=="string"?d=bn(u):Array.isArray(u)&&(d=u.map(md).filter(Boolean).join(" "));let h=d.replace(/\s+/g," ").trim();if(h)return(h.replace(/^Continuing from a prior session\. Here is the summary of our work so far:\s*/i,"").trim()||h).slice(0,200)}return""}finally{sd(e)}}async function Uw(){return ad(Y.cwd).sort((r,e)=>e.mtime-r.mtime).map(({sessionId:r,file:e,mtime:t})=>({sessionId:r,mtime:t,preview:Fw(e)}))}async function Kw(r){let e=Y,t=B(na(e.cwd),`${r}.jsonl`);return Et(t)?t===e.file?{ok:!0}:(pd({sessionId:r,file:t}),{ok:!0}):{ok:!1,error:"session not found"}}async function Jw(r,e){return Zo(r,e),{ok:!0}}async function Vw(r){let e=Y.cwd,t=B(e,"typebulbs");nd(t,{recursive:!0});let s=Go(r),n=`${s}.bulb.md`;for(let c=2;Et(B(t,n))&&sa(B(t,n),"utf8")!==r;c++)n=`${s}-${c}.bulb.md`;let i=B(t,n);Et(i)||id(i,r);let o=B("typebulbs",n),a=await sn(o,{cwd:e,open:!0});return{ok:!0,file:o,pid:a.pid,url:a.url}}async function Ww(){return K(Y.cwd)}async function Yw(r){return await wt(r),{ok:!0}}async function Hw(){return Qo(Y.cwd).map(r=>({...r,trusted:Ue(r.path)}))}async function Gw(r,e){let t=Y.cwd;e!=null&&ht(r,e);let s=await sn(r,{cwd:t,open:!0,trust:e});return{ok:!0,file:s.file,pid:s.pid,url:s.url,trust:!!s.trust}}async function zw(r){return{cap:await Xo(r)}}async function Qw(r,e){return ht(r,e),{ok:!0}}async function Xw(r,e){return bt(r,e)}var kw,xw,na,Ew,cd,Tw,ea,Y,Rw,_w,qw,yd=N(()=>{zf();Qf();kw=".typebulb",xw=B(vw(),".claude","projects"),na=r=>B(xw,Sw(r));Ew=`${kw}/locks`,cd=5e3,Tw=6e4;ea=5e4;Y={cwd:process.cwd(),sessionId:"",sessionStartMs:Date.now(),buffer:[],partial:"",offset:0,latest:{in:0,out:0,cached:0,cacheCreate:0},everAttached:!1,entries:new Map};Rw=[/\[Request interrupted by user\b/i,/\[Tool use was interrupted\]/i,/Claude Code returned an error/i,/\[ede_diagnostic\]/i,/^No response requested\.?$/i,/^<task-notification\b/i,/^<system-reminder\b/i];_w=/<ide_[a-z_]+>[\s\S]*?<\/ide_[a-z_]+>/gi;qw=new yn;Pw(Y.cwd);Ow(Y.cwd);dd()});import*as xd from"fs/promises";import*as ge from"path";import*as la from"fs/promises";import{existsSync as ze,readFileSync as Rd}from"fs";import*as L from"path";import{pathToFileURL as _d}from"url";import{resolve as kn}from"resolve.exports";import{init as ua,parse as fa}from"es-module-lexer";function da(r,e){let t=L.join(r,"package.json");try{return JSON.parse(Rd(t,"utf8"))}catch{throw new Error(`--replace package '${e}' has no readable package.json at ${t}`)}}var Sn=["browser","import","default"],ca=["node","import","default"];function pa(r){let e=r.indexOf("=");if(e===-1)throw new Error(`--replace must be <name>=<path> (got '${r}')`);let t=r.slice(0,e).trim(),s=r.slice(e+1).trim();if(!t)throw new Error(`--replace missing package name (got '${r}')`);if(!s)throw new Error(`--replace missing path for '${t}'`);if(t.startsWith("@"))throw new Error(`--replace does not support scoped names yet; '${t}' is scoped`);return{name:t,dir:L.resolve(s)}}async function ha(r){let{name:e,dir:t}=r;if(!ze(t))throw new Error(`--replace path for '${e}' does not exist: ${t}`);let s=da(t,e),n=Ld(s,e),i=L.resolve(t,n);if(!ze(i))throw new Error(`--replace package '${e}' entry not found on disk: ${i} \u2014 did you build it (e.g. \`pnpm run build\`)?`);let o=L.dirname(i),a=`/local/${e}/${L.basename(i)}`,c=$d(s,t);return await Md(e,i,o),{name:e,dir:t,entryAbs:i,serveDir:o,entryUrl:a,typesAbs:c}}function Ld(r,e){if(r.exports!==void 0){let s;try{s=kn(r,".",{browser:!0,conditions:Sn})}catch(i){throw new Error(`--replace package '${e}' "exports" does not resolve a browser entry (conditions: ${Sn.join(", ")}): ${i instanceof Error?i.message:i}`)}let n=xn(s);if(!n)throw new Error(`--replace package '${e}' "exports" did not resolve "." to a single file (conditions: ${Sn.join(", ")}); too complex to override.`);return n}let t=r.module??r.main;if(!t)throw new Error(`--replace package '${e}' has no "exports", "module", or "main" entry to resolve.`);return t}function $d(r,e){if(r.exports!==void 0)try{let s=kn(r,".",{conditions:["types"]}),n=xn(s);if(n){let i=L.resolve(e,n);if(ze(i))return i}}catch{}let t=r.types??r.typings;if(t){let s=L.resolve(e,t);if(ze(s))return s}}function xn(r){if(typeof r=="string")return r;if(Array.isArray(r))return r.find(e=>typeof e=="string")}async function Md(r,e,t){await ua;let s=L.normalize(t),n=new Set,i=[e];for(;i.length;){let o=i.shift();if(n.has(o))continue;n.add(o);let a;try{a=await la.readFile(o,"utf8")}catch{continue}let c,l;try{[c,,,l]=fa(a,o)}catch{continue}if(o===e&&!l)throw new Error(`override package '${r}' entry is not an ES module (no import/export syntax); CommonJS or non-module entries aren't supported (esm.sh would have to transform it).`);for(let f of c){if(f.d===-2)continue;let u=f.n;if(u&&!u.startsWith("node:")){if(u.startsWith("./")||u.startsWith("../")||u.startsWith("/")){let d=Dd(o,u,s);d&&!n.has(d)&&i.push(d);continue}throw new Error(`override package must ship self-contained (bundle its dependencies); ${r} externalizes '${u}'`)}}}}function Dd(r,e,t){let s=e.replace(/[?#].*$/,""),n=L.resolve(L.dirname(r),s),i=[n,n+".js",n+".mjs",L.join(n,"index.js"),L.join(n,"index.mjs")];for(let o of i)if(L.normalize(o).startsWith(t)&&ze(o))return o}function qd(r,e,t){let s=da(r,e),n;if(s.exports!==void 0)try{n=xn(kn(s,t,{conditions:ca}))}catch(o){throw new Error(`--replace package '${e}' "exports" does not resolve a node entry for '${t}' (conditions: ${ca.join(", ")}): ${o instanceof Error?o.message:o}`)}else t==="."&&(n=s.main??s.module);if(!n)throw new Error(`--replace package '${e}' has no node export for '${t}'.`);let i=L.resolve(r,n);if(!ze(i))throw new Error(`--replace package '${e}' built file not found: ${i} \u2014 did you build it (e.g. \`pnpm run build\`)?`);return _d(i).href}async function ma(r,e){await ua;let t;try{[t]=fa(r)}catch{return r}let s="",n=0;for(let i of t){if(i.d!==-1)continue;let o=i.n;if(!o||o!==e.name&&!o.startsWith(e.name+"/"))continue;let a=o===e.name?".":"."+o.slice(e.name.length),c=qd(e.dir,e.name,a);s+=r.slice(n,i.s)+c,n=i.e}return s+r.slice(n)}function ga(r){let e={subcommand:"run",file:"",port:3e3,watch:!0,open:!0,server:!1,trust:!1,noTrust:!1,follow:!1,help:!1,version:!1},t=["check","predict","logs","stop","trust","untrust","skill","models"],s=r[0];if(s==="agent"||s?.startsWith("agent:")){e.subcommand="agent";let n=s.indexOf(":");if(n!==-1){let i=s.slice(n+1);i&&(e.agentTarget=i)}r=r.slice(1)}else s&&t.includes(s)&&(e.subcommand=s,r=r.slice(1));for(let n=0;n<r.length;n++){let i=r[n];if(i==="--help"||i==="-h")e.help=!0;else if(i==="--version"||i==="-V")e.version=!0;else if(i==="--no-watch")e.watch=!1;else if(i==="--no-open")e.open=!1;else if(i==="--server")e.server=!0;else if(i==="--trust")e.trust=!0;else if(i==="--no-trust")e.noTrust=!0;else if(i==="--mode"){let o=r[++n];(!o||o.startsWith("-"))&&(console.error("Missing value for --mode (e.g. --mode staging)"),process.exit(1)),e.mode=o}else if(i==="--follow"||i==="-f")e.follow=!0;else if(i==="--bulbs")e.stopScope="bulbs";else if(i==="--agent")e.stopScope="agent";else if(i==="--global")e.stopScope="global";else if(i==="--lines"||i==="-n"){let o=parseInt(r[++n],10);(isNaN(o)||o<0)&&(console.error(`Invalid --lines value: ${r[n]}`),process.exit(1)),e.lines=o}else if(i==="--port"||i==="-p"){let o=r[++n],a=parseInt(o,10);isNaN(a)&&(console.error(`Invalid port: ${o}`),process.exit(1)),e.port=a}else if(i==="--replace"||i.startsWith("--replace=")){let o=i.startsWith("--replace=")?i.slice(10):r[++n]??"";try{let a=pa(o);if(e.local)throw new Error(`--replace can only be used once (got '${e.local.name}' and '${a.name}')`);e.local=a}catch(a){console.error(a instanceof Error?a.message:String(a)),process.exit(1)}}else i.startsWith("-")||(e.file=i)}return e}function ya(){console.log(`
11
156
  typebulb - Local bulb runner for Typebulb
12
157
 
13
158
  Usage:
@@ -98,7 +243,7 @@ Examples:
98
243
  typebulb my-editor.bulb.md
99
244
  typebulb --no-watch --port 8080 my-editor.bulb.md
100
245
  typebulb .
101
- `)}Qt();import*as re from"fs/promises";import*as _t from"path";import{pathToFileURL as Zo}from"url";import{transform as yo}from"sucrase";function Zt(r,e={}){let t=e.serverOnly?["typescript"]:["typescript","jsx"];try{let{code:n}=yo(r,{transforms:t,jsxRuntime:"automatic",jsxImportSource:e.jsxImportSource||"react",production:!0});return{code:n}}catch(n){return{code:"",error:String(n)}}}var De="https://esm.sh",Me="https://cdn.jsdelivr.net/npm/",er="https://data.jsdelivr.com/v1/package/npm/";function nn(r){let e=(r||"").replace(/^\/+/,"").replace(/\/+$/,"");return e?e.split("/"):[]}var b=class r{constructor(e,t,n){let s=typeof e=="string"?r.parse(e):e;this.name=s.name,this.version=ge(t??s.version),this.subpath=ge(n??s.subpath)}static parse(e){let t=nn(e||"");if(!t.length)return new r({name:""});if(t[0].startsWith("@")){let s=t[0],[o,i]=sn(t[1]??""),a=ge(t.slice(2).join("/"));return new r({name:`${s}/${o}`,version:i,subpath:a})}else{let[s,o]=sn(t[0]),i=ge(t.slice(1).join("/"));return new r({name:s,version:o,subpath:i})}}static fromUrl(e){try{let t=new URL(e),n=new URL(De).host,s=new URL(Me).host;if(t.host===n){let o=nn(t.pathname.replace(/^\/v\d+\//,"/"));if(!o.length)return;let i=o[0].startsWith("@")?`${o[0]}/${o[1]??""}`:o[0];return r.parse(i)}if(t.host===s){let o=t.pathname.split("/npm/")[1];if(!o)return;let i=o.split("/")[0]||"";return r.parse(i)}return}catch{return}}static versionFromUrl(e){return r.fromUrl(e)?.version}format(){let e=this.version?`${this.name}@${this.version}`:this.name;return this.subpath?`${e}/${this.subpath}`:e}root(){return this.name}static rootOf(e){return r.parse(e).name}withVersion(e){return new r({name:this.name,version:ge(e),subpath:this.subpath})}withPreferredVersion(e,t){let n=e||t;return n?this.withVersion(n):this}static isBare(e){if(!e||e.startsWith(".")||e.startsWith("/"))return!1;let t=e.toLowerCase();return!t.startsWith("http://")&&!t.startsWith("https://")}},ge=r=>r&&r.length?r:void 0,sn=r=>{let e=r.indexOf("@");return e<0?[r,void 0]:[r.slice(0,e),ge(r.slice(e+1))]};async function $(r){try{return await r()}catch{return}}var Be=class{constructor(e,t){this.cache=e,this.http=t,this.esmHost=De,this.jsDelivrBase=Me,this.jsDelivrMeta=er,this.pinMs=1e4,this.versionsIndexMs=1440*60*1e3,this.metaTtlMs=10080*60*1e3,this.pinCache=new Map}normalizeRelative(e){let t=e||"";return t.startsWith("./")?t.slice(2):t.replace(/^\/+/,"")}ensureLeadingDotSlash(e){return e.startsWith("./")?e:`./${e}`}baseDir(e){let t=typeof e=="string"?new b(e):e;return`${this.jsDelivrBase}${t.name}${t.version?`@${t.version}`:""}/`}file(e,t){return new URL(this.normalizeRelative(t),this.baseDir(e)).toString()}packageJson(e){return this.file(e,"package.json")}buildEsmUrl(e,t={}){let{target:n="es2022",bundle:s=!1,external:o}=t,i=new URLSearchParams({target:n});return s&&i.append("bundle",""),o?.length&&i.append("external",o.join(",")),`${this.esmHost}/${e}?${i.toString()}`}async pinEsmUrl(e,t="es2022"){let n=this.buildEsmUrl(e,{target:t}),s=await $(()=>this.http.head(n));return s?.ok?s.url||n:void 0}async resolveExactVersion(e){let t=Date.now(),n=this.pinCache.get(e);if(n&&t-n.ts<this.pinMs)return n.value;let s=await this.tryResolveFromUrls([this.buildEsmUrl(e),`${this.esmHost}/${e}`]);return this.pinCache.set(e,{value:s,ts:t}),s}async tryResolveFromUrls(e){for(let t of e){let n=await $(()=>this.http.head(t)),s=this.parseVersionFromUrl(n?.url||t);if(s)return s}}async fetchVersionsIndex(e){if(await this.cache.isNegative(e))return;let t=await this.cache.getIndex(e);if(t&&Date.now()-t.updatedAt<this.versionsIndexMs)return{versions:t.versions,distTags:t.distTags};let n=await $(()=>this.http.getJson(`${this.jsDelivrMeta}${encodeURIComponent(e)}`));if(!n?.versions?.length){await this.cache.recordNegative(e);return}await this.cache.clearNegative(e);let s=n.distTags&&Object.keys(n.distTags).length?n.distTags:void 0;return await this.cache.setIndex(e,n.versions,s),n}parseVersionFromUrl(e){let t=b.fromUrl(e)?.version;return t&&/\d+\.\d+\.\d+/.test(t)?t:void 0}async fetchPackageMeta(e,t){let n=await this.cache.getMeta(e,t);if(n&&Date.now()-n.updatedAt<this.metaTtlMs){let{dependencies:d,peerDependencies:u,peerDependenciesMeta:f}=n;return{name:e,version:t,dependencies:d,peerDependencies:u,peerDependenciesMeta:f}}let s=this.packageJson(new b(`${e}@${t}`)),o=await $(()=>this.http.getJson(s));if(!o)return;let i=d=>d&&Object.keys(d).length?d:void 0,a=i(o.dependencies),c=i(o.peerDependencies),l=i(o.peerDependenciesMeta);return await this.cache.setMeta(e,t,a,c,l),{name:e,version:t,dependencies:a,peerDependencies:c,peerDependenciesMeta:l}}};var on=r=>r.startsWith("@types/"),je=r=>Object.keys(r?.peerDependencies||{}).filter(e=>!on(e)),tr=r=>Object.keys(r?.dependencies||{}).filter(e=>!on(e)),wo=r=>je(r).filter(e=>!r?.peerDependenciesMeta?.[e]?.optional),Fe=class{constructor(e){this.cdn=e}async resolve(e,t){let n=await this.fetchMeta(e),{allRoots:s,autoAddedPeers:o}=await this.expandWithPeers(n,t),i=this.computeFlags(s);return{allRoots:s,flags:i,autoAddedPeers:o}}async fetchMeta(e){return Promise.all(e.map(async({name:t,version:n})=>({name:t,version:n,meta:await this.cdn.fetchPackageMeta(t,n)})))}async expandWithPeers(e,t){let n=new Map(e.map(o=>[o.name,o])),s=[];for(let o of e)for(let i of wo(o.meta))!n.has(i)&&!s.some(a=>a.name===i)&&s.push({name:i,requiredBy:o.name});for(let{name:o,requiredBy:i}of s)try{let a=await t(o),c=await this.cdn.fetchPackageMeta(o,a);n.set(o,{name:o,version:a,meta:c})}catch(a){console.warn(`[typebulb] Failed to resolve peer "${o}" for "${i}":`,a)}return{allRoots:[...n.values()],autoAddedPeers:s.filter(o=>n.has(o.name))}}computeFlags(e){let t=new Set(e.flatMap(o=>je(o.meta))),n=new Map;for(let o of e)for(let i of tr(o.meta))n.set(i,(n.get(i)||0)+1);let s=new Set([...n.entries()].filter(([,o])=>o>=2).map(([o])=>o));return new Map(e.map(o=>[o.name,{isPeerRoot:t.has(o.name),hasPeers:je(o.meta).length>0,isSharedDep:s.has(o.name)}]))}};var Le=class{constructor(e,t,n){this.cache=e,this.cdn=t,this.semver=n}selectVersionFromIndex(e,t,n){return this.semver.selectBestVersion(e,{range:t,distTags:n})}async learnExactVersion(e){let t=await $(()=>this.cdn.fetchVersionsIndex(e));if(t?.versions?.length){let n=this.semver.selectBestVersion(t.versions,{distTags:t.distTags});if(n)return n}return this.cdn.resolveExactVersion(e)}async resolveExactForRoot(e,t){if(!t)return this.learnExactVersion(e);let n=await this.cache.getPinnedExact(e,t);if(n){if(this.semver.isExactVersion(n))return n;console.debug("[typebulb] cached version for",e,"is not exact (",n,"); re-resolving from registry")}let s=await $(()=>this.cdn.fetchVersionsIndex(e));if(s?.versions?.length){let i=this.selectVersionFromIndex(s.versions,t,s.distTags);if(i){if(this.semver.isExactVersion(i))return await this.cache.setPinnedExact(e,t,i),i}else{console.debug("[typebulb] refreshing version cache for",e,"(",t,"not in cached set \u2014 likely a new release)"),await this.cache.invalidateVersionsCache(e);let a=await $(()=>this.cdn.fetchVersionsIndex(e));if(a?.versions?.length){let c=this.selectVersionFromIndex(a.versions,t,a.distTags);if(c&&this.semver.isExactVersion(c))return await this.cache.setPinnedExact(e,t,c),c}}}let o=await this.cdn.resolveExactVersion(`${e}@${t}`);if(o&&this.semver.isExactVersion(o))return await this.cache.setPinnedExact(e,t,o),o}async effectivePackage(e,t){let n=new b(e),s=n.root(),o=t[s],i=o?await $(()=>this.cache.getPinnedExact(s,o))??await $(()=>this.resolveExactForRoot(s,o)):void 0;return{effectivePackage:i?n.withVersion(i).format():e,root:s,range:o,pinned:i}}};import{init as vo,parse as xo}from"es-module-lexer";var be=class r{constructor(e,t,n,s){this.version=e,this.cdn=t,this.peer=n,this.cache=s}extractImportsSync(e){let t=new Set;for(let n of r.importPatterns){n.lastIndex=0;for(let s of e.matchAll(n))b.isBare(s[1])&&t.add(s[1])}return Array.from(t)}async extractImports(e){let t=new Set,n=s=>{b.isBare(s)&&t.add(s)};try{await vo;let[s]=xo(e);s.forEach(o=>n(e.slice(o.s,o.e).trim()))}catch{return this.extractImportsSync(e)}return Array.from(t)}async buildImportMap(e,t,n){let s=(await this.extractImports(e)).filter(u=>!n?.has(b.rootOf(u))),o=[...new Set(s.map(b.rootOf))],i=await Promise.all(o.map(async u=>({name:u,version:await this.resolveVersion(u,t)}))),{allRoots:a,flags:c,autoAddedPeers:l}=await this.peer.resolve(i,u=>this.resolveVersion(u,t)),d=this.buildEntries([...s,...l.map(u=>u.name)],a,c,t);return{importMap:{imports:Object.fromEntries(d)},prefetchUrls:d.map(([,u])=>u)}}async resolveVersion(e,t){let n=t[e],s=n?`${e}@${n}`:e,o=await this.version.resolveExactForRoot(e,n);if(!o){let i=await $(()=>this.cdn.pinEsmUrl(s));if(!i)throw new Error(`Cannot resolve ${s}: no matching version is published (the package or version may not exist, or the registry was unreachable).`);o=b.versionFromUrl(i),o&&n&&await $(()=>this.cache.setPinnedExact(e,n,o))}if(!o)throw new Error(`Cannot resolve ${s}: no concrete version found.`);return o}buildEntries(e,t,n,s){let o=new Map(t.map(h=>[h.name,h])),i=h=>{let w=o.get(b.rootOf(h));return new b(h).withPreferredVersion(w.version,s[w.name]).format()},a=new Set([...n.entries()].filter(([,h])=>h.isPeerRoot||h.isSharedDep).map(([h])=>h)),c=new Set(e.filter(h=>h!==b.rootOf(h)).map(b.rootOf)),l=[],d=new Set,u=new Set(e.filter(h=>h===b.rootOf(h))),f=new Set;for(let h of e){let w=b.rootOf(h),D=o.get(w),{isPeerRoot:M,hasPeers:E,isSharedDep:T}=n.get(w),p=c.has(w),g=h!==w,x=!(M||T)&&(p||!E),v=this.singletonDepsOf(D,a),V=g&&u.has(w);V&&f.add(w);let se=V?[...v,w]:v.length?v:void 0;l.push([h,this.cdn.buildEsmUrl(i(h),{bundle:x,external:se})]),d.add(h)}let m=new Set([...a,...f]);for(let h of m)o.has(h)&&(d.has(h)||l.push([h,this.cdn.buildEsmUrl(i(h),{})]),l.push([`${h}/`,`${this.cdn.esmHost}/${i(h)}/`]));return l}singletonDepsOf(e,t){return[...new Set([...je(e.meta),...tr(e.meta)])].filter(n=>t.has(n))}};be.importPatterns=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g];import{gt as an,satisfies as So,maxSatisfying as rr,major as Po,prerelease as Eo,rsort as Ro,valid as ko}from"semver";var ut=class{cmp(e,t){return e===t?0:an(e,t)?1:an(t,e)?-1:0}satisfies(e,t){return!e||!e.trim()?!0:!!So(t,e,{includePrerelease:!0})}pickMaxSatisfying(e,t){if(!e?.length)return;let n=rr(e,t,{includePrerelease:!0});return n===null?void 0:n}pickLatest(e){return e?.length?Ro(e)[0]:void 0}selectBestVersion(e,t){if(!e?.length)return;let n=t?.range?.trim()||"*",s=t?.preferStable??!0,o=t?.distTags?.latest;if(o&&e.includes(o)&&this.satisfies(n,o))return o;if(s){let a=rr(e,n,{includePrerelease:!1});if(a)return a}return rr(e,n,{includePrerelease:!0})??void 0}majorOf(e){return Po(e)}isPrerelease(e){return Eo(e)!==null}isExactVersion(e){return ko(e)!==null}},oe=new ut;function cn(r,e){let t=new Be(r,e),n=new Fe(t),s=new Le(r,t,oe);return{packageService:new be(s,t,n,r),versionResolver:s,cdnClient:t,peerResolver:n}}import*as Pn from"fs/promises";import*as U from"path";var nr=[{name:"es5"},{name:"es2015.core"},{name:"es2015.collection"},{name:"es2015.promise"},{name:"es2015.iterable"},{name:"es2015.symbol"},{name:"es2015.symbol.wellknown"},{name:"es2015.generator"},{name:"es2015.proxy"},{name:"es2015.reflect"},{name:"es2016.array.include"},{name:"es2016.intl"},{name:"es2017.object"},{name:"es2017.string"},{name:"es2017.sharedmemory"},{name:"es2017.typedarrays"},{name:"es2017.date"},{name:"es2017.intl"},{name:"es2018.asynciterable"},{name:"es2018.asyncgenerator"},{name:"es2018.promise"},{name:"es2018.regexp"},{name:"es2018.intl"},{name:"es2019.array"},{name:"es2019.object"},{name:"es2019.string"},{name:"es2019.symbol"},{name:"es2019.intl"},{name:"es2020.bigint"},{name:"es2020.promise"},{name:"es2020.string"},{name:"es2020.sharedmemory"},{name:"es2020.date"},{name:"es2020.number"},{name:"es2020.symbol.wellknown"},{name:"es2020.intl"},{name:"es2021.promise"},{name:"es2021.string"},{name:"es2021.weakref"},{name:"es2021.intl"},{name:"es2022.array"},{name:"es2022.object"},{name:"es2022.error"},{name:"es2022.string"},{name:"es2022.regexp"},{name:"es2022.intl"},{name:"es2023.array"},{name:"es2023.collection"},{name:"es2023.intl",since:"5.5"},{name:"es2024.arraybuffer",since:"5.5"},{name:"es2024.collection",since:"5.5"},{name:"es2024.object",since:"5.5"},{name:"es2024.promise",since:"5.5"},{name:"es2024.regexp",since:"5.5"},{name:"es2024.sharedmemory",since:"5.5"},{name:"es2024.string",since:"5.5"},{name:"esnext.array",since:"5.5"},{name:"esnext.collection"},{name:"esnext.decorators"},{name:"esnext.disposable"},{name:"esnext.error",since:"5.5"},{name:"esnext.float16",since:"5.5"},{name:"esnext.iterator",since:"5.5"},{name:"esnext.object"},{name:"esnext.promise"},{name:"esnext.sharedmemory",since:"5.5"},{name:"esnext.intl"}],sr=[{name:"dom"},{name:"dom.iterable"},{name:"dom.asynciterable"}];var ln=`
246
+ `)}ho();import*as Ce from"fs/promises";import*as Gs from"path";import{pathToFileURL as rb}from"url";import{transform as Sy}from"sucrase";function mo(r,e={}){let t=e.serverOnly?["typescript"]:["typescript","jsx"];try{let{code:s}=Sy(r,{transforms:t,jsxRuntime:"automatic",jsxImportSource:e.jsxImportSource||"react",production:!0});return{code:s}}catch(s){return{code:"",error:String(s)}}}var nr="https://esm.sh",ir="https://cdn.jsdelivr.net/npm/",go="https://data.jsdelivr.com/v1/package/npm/";function ku(r){let e=(r||"").replace(/^\/+/,"").replace(/\/+$/,"");return e?e.split("/"):[]}var A=class r{constructor(e,t,s){let n=typeof e=="string"?r.parse(e):e;this.name=n.name,this.version=ct(t??n.version),this.subpath=ct(s??n.subpath)}static parse(e){let t=ku(e||"");if(!t.length)return new r({name:""});if(t[0].startsWith("@")){let n=t[0],[i,o]=xu(t[1]??""),a=ct(t.slice(2).join("/"));return new r({name:`${n}/${i}`,version:o,subpath:a})}else{let[n,i]=xu(t[0]),o=ct(t.slice(1).join("/"));return new r({name:n,version:i,subpath:o})}}static fromUrl(e){try{let t=new URL(e),s=new URL(nr).host,n=new URL(ir).host;if(t.host===s){let i=ku(t.pathname.replace(/^\/v\d+\//,"/"));if(!i.length)return;let o=i[0].startsWith("@")?`${i[0]}/${i[1]??""}`:i[0];return r.parse(o)}if(t.host===n){let i=t.pathname.split("/npm/")[1];if(!i)return;let o=i.split("/")[0]||"";return r.parse(o)}return}catch{return}}static versionFromUrl(e){return r.fromUrl(e)?.version}format(){let e=this.version?`${this.name}@${this.version}`:this.name;return this.subpath?`${e}/${this.subpath}`:e}root(){return this.name}static rootOf(e){return r.parse(e).name}withVersion(e){return new r({name:this.name,version:ct(e),subpath:this.subpath})}withPreferredVersion(e,t){let s=e||t;return s?this.withVersion(s):this}static isBare(e){if(!e||e.startsWith(".")||e.startsWith("/"))return!1;let t=e.toLowerCase();return!t.startsWith("http://")&&!t.startsWith("https://")}},ct=r=>r&&r.length?r:void 0,xu=r=>{let e=r.indexOf("@");return e<0?[r,void 0]:[r.slice(0,e),ct(r.slice(e+1))]};async function W(r){try{return await r()}catch{return}}var or=class{constructor(e,t){this.cache=e,this.http=t,this.esmHost=nr,this.jsDelivrBase=ir,this.jsDelivrMeta=go,this.pinMs=1e4,this.versionsIndexMs=1440*60*1e3,this.metaTtlMs=10080*60*1e3,this.pinCache=new Map}normalizeRelative(e){let t=e||"";return t.startsWith("./")?t.slice(2):t.replace(/^\/+/,"")}ensureLeadingDotSlash(e){return e.startsWith("./")?e:`./${e}`}baseDir(e){let t=typeof e=="string"?new A(e):e;return`${this.jsDelivrBase}${t.name}${t.version?`@${t.version}`:""}/`}file(e,t){return new URL(this.normalizeRelative(t),this.baseDir(e)).toString()}packageJson(e){return this.file(e,"package.json")}buildEsmUrl(e,t={}){let{target:s="es2022",bundle:n=!1,external:i}=t,o=new URLSearchParams({target:s});return n&&o.append("bundle",""),i?.length&&o.append("external",i.join(",")),`${this.esmHost}/${e}?${o.toString()}`}async pinEsmUrl(e,t="es2022"){let s=this.buildEsmUrl(e,{target:t}),n=await W(()=>this.http.head(s));return n?.ok?n.url||s:void 0}async resolveExactVersion(e){let t=Date.now(),s=this.pinCache.get(e);if(s&&t-s.ts<this.pinMs)return s.value;let n=await this.tryResolveFromUrls([this.buildEsmUrl(e),`${this.esmHost}/${e}`]);return this.pinCache.set(e,{value:n,ts:t}),n}async tryResolveFromUrls(e){for(let t of e){let s=await W(()=>this.http.head(t)),n=this.parseVersionFromUrl(s?.url||t);if(n)return n}}async fetchVersionsIndex(e){if(await this.cache.isNegative(e))return;let t=await this.cache.getIndex(e);if(t&&Date.now()-t.updatedAt<this.versionsIndexMs)return{versions:t.versions,distTags:t.distTags};let s=await W(()=>this.http.getJson(`${this.jsDelivrMeta}${encodeURIComponent(e)}`));if(!s?.versions?.length){await this.cache.recordNegative(e);return}await this.cache.clearNegative(e);let n=s.distTags&&Object.keys(s.distTags).length?s.distTags:void 0;return await this.cache.setIndex(e,s.versions,n),s}parseVersionFromUrl(e){let t=A.fromUrl(e)?.version;return t&&/\d+\.\d+\.\d+/.test(t)?t:void 0}async fetchPackageMeta(e,t){let s=await this.cache.getMeta(e,t);if(s&&Date.now()-s.updatedAt<this.metaTtlMs){let{dependencies:f,peerDependencies:u,peerDependenciesMeta:d}=s;return{name:e,version:t,dependencies:f,peerDependencies:u,peerDependenciesMeta:d}}let n=this.packageJson(new A(`${e}@${t}`)),i=await W(()=>this.http.getJson(n));if(!i)return;let o=f=>f&&Object.keys(f).length?f:void 0,a=o(i.dependencies),c=o(i.peerDependencies),l=o(i.peerDependenciesMeta);return await this.cache.setMeta(e,t,a,c,l),{name:e,version:t,dependencies:a,peerDependencies:c,peerDependenciesMeta:l}}};var Eu=r=>r.startsWith("@types/"),ar=r=>Object.keys(r?.peerDependencies||{}).filter(e=>!Eu(e)),yo=r=>Object.keys(r?.dependencies||{}).filter(e=>!Eu(e)),ky=r=>ar(r).filter(e=>!r?.peerDependenciesMeta?.[e]?.optional),cr=class{constructor(e){this.cdn=e}async resolve(e,t){let s=await this.fetchMeta(e),{allRoots:n,autoAddedPeers:i}=await this.expandWithPeers(s,t),o=this.computeFlags(n);return{allRoots:n,flags:o,autoAddedPeers:i}}async fetchMeta(e){return Promise.all(e.map(async({name:t,version:s})=>({name:t,version:s,meta:await this.cdn.fetchPackageMeta(t,s)})))}async expandWithPeers(e,t){let s=new Map(e.map(i=>[i.name,i])),n=[];for(let i of e)for(let o of ky(i.meta))!s.has(o)&&!n.some(a=>a.name===o)&&n.push({name:o,requiredBy:i.name});for(let{name:i,requiredBy:o}of n)try{let a=await t(i),c=await this.cdn.fetchPackageMeta(i,a);s.set(i,{name:i,version:a,meta:c})}catch(a){console.warn(`[typebulb] Failed to resolve peer "${i}" for "${o}":`,a)}return{allRoots:[...s.values()],autoAddedPeers:n.filter(i=>s.has(i.name))}}computeFlags(e){let t=new Set(e.flatMap(i=>ar(i.meta))),s=new Map;for(let i of e)for(let o of yo(i.meta))s.set(o,(s.get(o)||0)+1);let n=new Set([...s.entries()].filter(([,i])=>i>=2).map(([i])=>i));return new Map(e.map(i=>[i.name,{isPeerRoot:t.has(i.name),hasPeers:ar(i.meta).length>0,isSharedDep:n.has(i.name)}]))}};var lr=class{constructor(e,t,s){this.cache=e,this.cdn=t,this.semver=s}selectVersionFromIndex(e,t,s){return this.semver.selectBestVersion(e,{range:t,distTags:s})}async learnExactVersion(e){let t=await W(()=>this.cdn.fetchVersionsIndex(e));if(t?.versions?.length){let s=this.semver.selectBestVersion(t.versions,{distTags:t.distTags});if(s)return s}return this.cdn.resolveExactVersion(e)}async resolveExactForRoot(e,t){if(!t)return this.learnExactVersion(e);let s=await this.cache.getPinnedExact(e,t);if(s){if(this.semver.isExactVersion(s))return s;console.debug("[typebulb] cached version for",e,"is not exact (",s,"); re-resolving from registry")}let n=await W(()=>this.cdn.fetchVersionsIndex(e));if(n?.versions?.length){let o=this.selectVersionFromIndex(n.versions,t,n.distTags);if(o){if(this.semver.isExactVersion(o))return await this.cache.setPinnedExact(e,t,o),o}else{console.debug("[typebulb] refreshing version cache for",e,"(",t,"not in cached set \u2014 likely a new release)"),await this.cache.invalidateVersionsCache(e);let a=await W(()=>this.cdn.fetchVersionsIndex(e));if(a?.versions?.length){let c=this.selectVersionFromIndex(a.versions,t,a.distTags);if(c&&this.semver.isExactVersion(c))return await this.cache.setPinnedExact(e,t,c),c}}}let i=await this.cdn.resolveExactVersion(`${e}@${t}`);if(i&&this.semver.isExactVersion(i))return await this.cache.setPinnedExact(e,t,i),i}async effectivePackage(e,t){let s=new A(e),n=s.root(),i=t[n],o=i?await W(()=>this.cache.getPinnedExact(n,i))??await W(()=>this.resolveExactForRoot(n,i)):void 0;return{effectivePackage:o?s.withVersion(o).format():e,root:n,range:i,pinned:o}}};import{init as xy,parse as Ey}from"es-module-lexer";var lt=class r{constructor(e,t,s,n){this.version=e,this.cdn=t,this.peer=s,this.cache=n}extractImportsSync(e){let t=new Set;for(let s of r.importPatterns){s.lastIndex=0;for(let n of e.matchAll(s))A.isBare(n[1])&&t.add(n[1])}return Array.from(t)}async extractImports(e){let t=new Set,s=n=>{A.isBare(n)&&t.add(n)};try{await xy;let[n]=Ey(e);n.forEach(i=>s(e.slice(i.s,i.e).trim()))}catch{return this.extractImportsSync(e)}return Array.from(t)}async buildImportMap(e,t,s){let n=(await this.extractImports(e)).filter(u=>!s?.has(A.rootOf(u))),i=[...new Set(n.map(A.rootOf))],o=await Promise.all(i.map(async u=>({name:u,version:await this.resolveVersion(u,t)}))),{allRoots:a,flags:c,autoAddedPeers:l}=await this.peer.resolve(o,u=>this.resolveVersion(u,t)),f=this.buildEntries([...n,...l.map(u=>u.name)],a,c,t);return{importMap:{imports:Object.fromEntries(f)},prefetchUrls:f.map(([,u])=>u)}}async resolveVersion(e,t){let s=t[e],n=s?`${e}@${s}`:e,i=await this.version.resolveExactForRoot(e,s);if(!i){let o=await W(()=>this.cdn.pinEsmUrl(n));if(!o)throw new Error(`Cannot resolve ${n}: no matching version is published (the package or version may not exist, or the registry was unreachable).`);i=A.versionFromUrl(o),i&&s&&await W(()=>this.cache.setPinnedExact(e,s,i))}if(!i)throw new Error(`Cannot resolve ${n}: no concrete version found.`);return i}buildEntries(e,t,s,n){let i=new Map(t.map(g=>[g.name,g])),o=g=>{let p=i.get(A.rootOf(g));return new A(g).withPreferredVersion(p.version,n[p.name]).format()},a=new Set([...s.entries()].filter(([,g])=>g.isPeerRoot||g.isSharedDep).map(([g])=>g)),c=new Set(e.filter(g=>g!==A.rootOf(g)).map(A.rootOf)),l=[],f=new Set,u=new Set(e.filter(g=>g===A.rootOf(g))),d=new Set;for(let g of e){let p=A.rootOf(g),y=i.get(p),{isPeerRoot:x,hasPeers:k,isSharedDep:E}=s.get(p),m=c.has(p),b=g!==p,T=!(x||E)&&(m||!k),w=this.singletonDepsOf(y,a),O=b&&u.has(p);O&&d.add(p);let D=O?[...w,p]:w.length?w:void 0;l.push([g,this.cdn.buildEsmUrl(o(g),{bundle:T,external:D})]),f.add(g)}let h=new Set([...a,...d]);for(let g of h)i.has(g)&&(f.has(g)||l.push([g,this.cdn.buildEsmUrl(o(g),{})]),l.push([`${g}/`,`${this.cdn.esmHost}/${o(g)}/`]));return l}singletonDepsOf(e,t){return[...new Set([...ar(e.meta),...yo(e.meta)])].filter(s=>t.has(s))}};lt.importPatterns=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g];import{gt as Tu,satisfies as Ty,maxSatisfying as bo,major as Ay,prerelease as Py,rsort as Oy,valid as Ny}from"semver";var Rs=class{cmp(e,t){return e===t?0:Tu(e,t)?1:Tu(t,e)?-1:0}satisfies(e,t){return!e||!e.trim()?!0:!!Ty(t,e,{includePrerelease:!0})}pickMaxSatisfying(e,t){if(!e?.length)return;let s=bo(e,t,{includePrerelease:!0});return s===null?void 0:s}pickLatest(e){return e?.length?Oy(e)[0]:void 0}selectBestVersion(e,t){if(!e?.length)return;let s=t?.range?.trim()||"*",n=t?.preferStable??!0,i=t?.distTags?.latest;if(i&&e.includes(i)&&this.satisfies(s,i))return i;if(n){let a=bo(e,s,{includePrerelease:!1});if(a)return a}return bo(e,s,{includePrerelease:!0})??void 0}majorOf(e){return Ay(e)}isPrerelease(e){return Py(e)!==null}isExactVersion(e){return Ny(e)!==null}},qe=new Rs;function Au(r,e){let t=new or(r,e),s=new cr(t),n=new lr(r,t,qe);return{packageService:new lt(n,t,s,r),versionResolver:n,cdnClient:t,peerResolver:s}}import*as Fu from"fs/promises";import*as re from"path";var wo=[{name:"es5"},{name:"es2015.core"},{name:"es2015.collection"},{name:"es2015.promise"},{name:"es2015.iterable"},{name:"es2015.symbol"},{name:"es2015.symbol.wellknown"},{name:"es2015.generator"},{name:"es2015.proxy"},{name:"es2015.reflect"},{name:"es2016.array.include"},{name:"es2016.intl"},{name:"es2017.object"},{name:"es2017.string"},{name:"es2017.sharedmemory"},{name:"es2017.typedarrays"},{name:"es2017.date"},{name:"es2017.intl"},{name:"es2018.asynciterable"},{name:"es2018.asyncgenerator"},{name:"es2018.promise"},{name:"es2018.regexp"},{name:"es2018.intl"},{name:"es2019.array"},{name:"es2019.object"},{name:"es2019.string"},{name:"es2019.symbol"},{name:"es2019.intl"},{name:"es2020.bigint"},{name:"es2020.promise"},{name:"es2020.string"},{name:"es2020.sharedmemory"},{name:"es2020.date"},{name:"es2020.number"},{name:"es2020.symbol.wellknown"},{name:"es2020.intl"},{name:"es2021.promise"},{name:"es2021.string"},{name:"es2021.weakref"},{name:"es2021.intl"},{name:"es2022.array"},{name:"es2022.object"},{name:"es2022.error"},{name:"es2022.string"},{name:"es2022.regexp"},{name:"es2022.intl"},{name:"es2023.array"},{name:"es2023.collection"},{name:"es2023.intl",since:"5.5"},{name:"es2024.arraybuffer",since:"5.5"},{name:"es2024.collection",since:"5.5"},{name:"es2024.object",since:"5.5"},{name:"es2024.promise",since:"5.5"},{name:"es2024.regexp",since:"5.5"},{name:"es2024.sharedmemory",since:"5.5"},{name:"es2024.string",since:"5.5"},{name:"esnext.array",since:"5.5"},{name:"esnext.collection"},{name:"esnext.decorators"},{name:"esnext.disposable"},{name:"esnext.error",since:"5.5"},{name:"esnext.float16",since:"5.5"},{name:"esnext.iterator",since:"5.5"},{name:"esnext.object"},{name:"esnext.promise"},{name:"esnext.sharedmemory",since:"5.5"},{name:"esnext.intl"}],vo=[{name:"dom"},{name:"dom.iterable"},{name:"dom.asynciterable"}];var Pu=`
102
247
  /**
103
248
  * Get raw data chunk from the Data tab.
104
249
  * @param index - Chunk index (0-based). Separate chunks with 2 blank lines.
@@ -109,7 +254,7 @@ Examples:
109
254
  * @param index - Chunk index (0-based)
110
255
  * @throws If chunk is not valid JSON/JSON-ish
111
256
  */
112
- json<T = unknown>(index: number): T;`,dn=`
257
+ json<T = unknown>(index: number): T;`,Ou=`
113
258
  /**
114
259
  * Get the insight data produced by the inference layer.
115
260
  *
@@ -118,7 +263,7 @@ Examples:
118
263
  *
119
264
  * @returns The parsed insight JSON, or undefined if no insight is available
120
265
  */
121
- insight<T = unknown>(): T | undefined;`,un=`
266
+ insight<T = unknown>(): T | undefined;`,Nu=`
122
267
  /**
123
268
  * General-purpose AI call.
124
269
  *
@@ -135,7 +280,7 @@ Examples:
135
280
  model?: string;
136
281
  /** Enable/disable web search. Default: on for BYOK, always off for free model. */
137
282
  webSearch?: boolean;
138
- }): Promise<{ text: string }>;`,pn=`
283
+ }): Promise<{ text: string }>;`,Cu=`
139
284
  /**
140
285
  * Returns AI models available to the current user.
141
286
  * Models are filtered by the user's configured API keys.
@@ -150,7 +295,7 @@ Examples:
150
295
  friendlyName: string;
151
296
  /** Provider display name, e.g. "Anthropic" */
152
297
  providerName: string;
153
- }>>;`,To="\n /**\n * The bulb's theme override (`<html data-theme>`).\n *\n * - Get: the current override \u2014 `'dark'` | `'light'`, or `undefined` when\n * following the OS preference.\n * - Set `'dark'`/`'light'` to force and persist it (per-bulb); set\n * `undefined` to clear the override and follow the OS again.\n *\n * Drives `<html data-theme>`, so render off `html[data-theme=\"\u2026\"]` selectors\n * (or observe the attribute) rather than reading `tb.theme`.\n */\n theme: 'light' | 'dark' | undefined;",fn=`
298
+ }>>;`,Cy="\n /**\n * The bulb's theme override (`<html data-theme>`).\n *\n * - Get: the current override \u2014 `'dark'` | `'light'`, or `undefined` when\n * following the OS preference.\n * - Set `'dark'`/`'light'` to force and persist it (per-bulb); set\n * `undefined` to clear the override and follow the OS again.\n *\n * Drives `<html data-theme>`, so render off `html[data-theme=\"\u2026\"]` selectors\n * (or observe the attribute) rather than reading `tb.theme`.\n */\n theme: 'light' | 'dark' | undefined;",Iu=`
154
299
  /**
155
300
  * The mode this bulb is running in.
156
301
  *
@@ -160,7 +305,7 @@ Examples:
160
305
  * - \`'embedded'\` \u2014 Running as a bulb embedded inside another bulb (sandboxed,
161
306
  * client-only: AI, filesystem, and server RPC are unavailable)
162
307
  */
163
- mode: 'local' | 'editor' | 'published' | 'embedded';`,mn=`
308
+ mode: 'local' | 'editor' | 'published' | 'embedded';`,Ru=`
164
309
  /**
165
310
  * Local filesystem access (CLI only).
166
311
  *
@@ -174,7 +319,7 @@ Examples:
174
319
  readBytes(path: string): Promise<Uint8Array>;
175
320
  /** Write text or raw bytes to a file. Creates parent directories if needed. */
176
321
  write(path: string, content: string | Uint8Array): Promise<boolean>;
177
- };`,_o=`
322
+ };`,Iy=`
178
323
  /**
179
324
  * Server-side function proxy. The built-in \`log\` prints to CLI stdout
180
325
  * (falls back to console.log on web). On the server side, this object only
@@ -182,7 +327,7 @@ Examples:
182
327
  */
183
328
  server: {
184
329
  log(...args: any[]): Promise<void>;
185
- };`,Ao=`
330
+ };`,Ry=`
186
331
  /**
187
332
  * Async value inspector for tensor-like objects.
188
333
  *
@@ -249,7 +394,7 @@ Examples:
249
394
  *
250
395
  * @returns The full canonical URL
251
396
  */
252
- url(): Promise<string>;`,Co=`
397
+ url(): Promise<string>;`,_y=`
253
398
  /**
254
399
  * Server-side function proxy.
255
400
  *
@@ -257,23 +402,23 @@ Examples:
257
402
  * \`tb.server.log(...)\` is a built-in that prints to CLI stdout (falls back to console.log on web).
258
403
  * User exports override built-ins of the same name.
259
404
  */
260
- server: Record<string, (...args: any[]) => Promise<any>>;`,or=`
405
+ server: Record<string, (...args: any[]) => Promise<any>>;`,So=`
261
406
  /**
262
407
  * Typebulb utilities namespace.
263
408
  * Type \`tb.\` to discover available helpers.
264
409
  */
265
- declare const tb: {${ln}${Ao}${dn}${Co}${un}${mn}${pn}${To}${fn}
410
+ declare const tb: {${Pu}${Ry}${Ou}${_y}${Nu}${Ru}${Cu}${Cy}${Iu}
266
411
  };
267
- `,ir=`
412
+ `,ko=`
268
413
  /**
269
414
  * Typebulb utilities namespace (server-side).
270
415
  * Type \`tb.\` to discover available helpers.
271
416
  */
272
- declare const tb: {${ln}${dn}${un}${mn}${_o}${pn}${fn}
417
+ declare const tb: {${Pu}${Ou}${Nu}${Ru}${Iy}${Cu}${Iu}
273
418
  };
274
- `;var ie=class{constructor(e){this.store=e}async isNegative(e){let t=await pt(()=>this.store.get(e));return!!t&&t.until>Date.now()}async recordNegative(e){let n=((await pt(()=>this.store.get(e)))?.attempts||0)+1;await pt(()=>this.store.set(e,{until:Date.now()+$o(n),attempts:n}))}async clearNegative(e){await pt(()=>this.store.delete(e))}};function $o(r){return Math.min(9e5*Math.pow(2,Math.max(0,r-1)),864e5)}async function pt(r){try{return await r()}catch{return}}import jo from"p-limit";import{resolve as hn}from"resolve.exports";var ye=class{constructor(e){this.fetchDts=e}fetchDtsText(e){return this.tryUrls([e])}async tryUrls(e){for(let t of e){let n=await this.fetchDts(t);if(n&&(this.looksLikeDts(n.dts)||/\.(d\.ts|d\.mts)(?:[?#].*)?$/i.test(n.url)||/[?&]dts(?:[&#]|$)/i.test(n.url)))return n}}looksLikeDts(e){return/^\s*export\s*\{\s*\}\s*;?\s*$/m.test(e)?!0:/declare\s+(module|namespace|class|interface|function|const|var|let)/.test(e)||/interface\s+\w+/.test(e)||/type\s+\w+\s*=/.test(e)}};var Z={maxRelativeTypeRefs:500,maxBareDeps:8,maxBareDepth:3,prefetchConcurrency:4,negativeTtlMs:1e4},Ne=["index.d.ts","index.d.mts"],Ue=/\.d\.(ts|mts)$/i;function ar(r){if(Ue.test(r))return!0;try{return new URL(r,"file://").search.includes("dts")}catch{return r.includes("?")&&r.includes("dts")}}function ft(r){return[`${r}.d.ts`,`${r}.d.mts`]}async function We(r,{retries:e=2,timeoutMs:t=15e3,init:n}={}){for(let s=0;s<=e;s++){let o=new AbortController,i=setTimeout(()=>o.abort(),t);try{let a=await fetch(r,{...n,signal:o.signal});if(Io(a.status)&&s<e)continue;return a}catch{if(s<e)continue;return}finally{clearTimeout(i)}}}function Io(r){return r===408||r===429||r>=500&&r<600}var Je=class extends ye{constructor(e,t){super(e),this.cdnClient=t}async loadPackageAtVersionedRoot(e,t){let n=this.cdnClient.packageJson(new b({name:e,version:t})),s=await We(n);if(!s?.ok)return;let o;try{o=await s.json()}catch{return}if(o)return{pkg:o,baseDir:this.cdnClient.baseDir(new b({name:e,version:t??o.version})),version:t}}extractPathFromResult(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.find(t=>typeof t=="string")}async tryUntilSuccess(e,t){for(let n of e){let s=await t(n);if(s)return s}}async resolveFromSelected(e,t){if(e.kind==="types"){let s=this.cdnClient.normalizeRelative(e.path);if(!s||s==="/"||s===".")return this.tryUntilSuccess([...Ne],t);if(!Ue.test(s)){let o=await this.tryUntilSuccess(this.declarationCandidatesFor(s),t);if(o)return o}return t(s)}let n=this.declarationCandidatesFor(e.path);return this.tryUntilSuccess([...Ne,...n],t)}toResolutionResult(e){return{kind:Ue.test(e)?"types":"probe",path:e}}resolveExportsPath(e,t){let n=t||".",s=e;try{let o=this.extractPathFromResult(hn(s,n,{conditions:["types"]}));if(o)return o}catch{}try{return this.extractPathFromResult(hn(s,n,{browser:!0,conditions:["import","default","module","browser","node"]}))}catch{return}}async resolve(e){try{let t=b.parse(e),{pkg:n,baseDir:s}=await this.loadPackageAtVersionedRoot(t.name,t.version)||{};if(!n||!s)return;let o={name:t.name,version:t.version},i=new b(o).format(),a=new b({...o,subpath:t.subpath}).format(),c=u=>this.fetchCandidateFrom(s,t.name,u);if(t.subpath){let u=this.cdnClient.ensureLeadingDotSlash(t.subpath),f=this.resolveExportsPath(n,u);if(f){let h=await this.resolveFromSelected(this.toResolutionResult(f),c);if(h)return{...h,resolvedPkg:a}}let m=await this.tryUntilSuccess(this.declarationCandidatesFor(u),c);if(m)return{...m,resolvedPkg:a}}let l=n.types??n.typings;if(l){let u=await this.resolveFromSelected({kind:"types",path:l},c);if(u)return{...u,resolvedPkg:i}}let d=this.resolveExportsPath(n,".");if(d){let u=await this.resolveFromSelected(this.toResolutionResult(d),c);if(u)return{...u,resolvedPkg:i}}return}catch{return}}async fetchCandidateFrom(e,t,n){let s=this.cdnClient.normalizeRelative(n),o=new URL(s,e).toString(),i=await this.fetchDtsText(o);return i?{dts:i.dts,url:i.url,resolvedPkg:t}:void 0}declarationCandidatesFor(e){if(!e||e==="./"||e==="/")return[...Ne];let t=e.replace(/\.(mjs|cjs|js|mts|cts|ts)$/i,""),n=ft(t),s=t.endsWith("/")?t:`${t}/`;return n.push(...ft(`${s}index`)),n}};import{gunzipSync as Oo}from"fflate";var we=class{async fetchAndExtract(e,t){let n=this.getTarballUrl(e,t),s=await We(n,{timeoutMs:3e4});if(!s?.ok)return new Map;let o=new Uint8Array(await s.arrayBuffer());return this.extractDtsFiles(o)}getTarballUrl(e,t){return`https://registry.npmjs.org/${e.replace("/","%2F")}/-/${e.split("/").pop()}-${t}.tgz`}normalizeTarPath(e){let t=e.replace(/^package\//,""),n=t.indexOf("/");return n>0?t.substring(n+1):t}extractDtsFiles(e){let t=new Map;try{let n=Oo(e),s=new TextDecoder("utf-8"),o=0;for(;o<n.length-512;){let i=n.slice(o,o+512);if(i[0]===0)break;let a=i.slice(0,100),c=a.indexOf(0),l=s.decode(a.slice(0,c>0?c:100)).trim(),d=i.slice(124,136),u=s.decode(d).trim().replace(/\0/g,""),f=parseInt(u,8)||0,m=String.fromCharCode(i[156]);if(o+=512,(m==="0"||m==="\0")&&(l.endsWith(".d.ts")||l.endsWith(".d.mts"))){let h=n.slice(o,o+f);t.set(this.normalizeTarPath(l),s.decode(h))}o+=Math.ceil(f/512)*512}}catch{}return t}},Do=new we;var He=class extends ye{constructor(e,t,n,s=new we){super(e),this.cdnClient=t,this.cache=n,this.tarballFetcher=s}typesNameCandidates(e){let t=e.startsWith("@")?e.slice(1).replace("/","__"):e;return t.includes(".")?[t,t.split(".").join("-"),t.split(".").join("")]:[t]}selectTypesVersion(e,t,n){try{if(n){let o=oe.majorOf(n),i=e.filter(a=>oe.majorOf(a)===o);if(i.length)return i.sort((a,c)=>oe.cmp(c,a))[0]}let s=t?.latest;return s&&e.includes(s)?s:e[0]}catch{return e[0]}}async fetchFromVersionedRoot(e,t){let n=new b(e),s=n.version;if(!s)return;let o;try{o=await this.tarballFetcher.fetchAndExtract(n.name,s)}catch{return}if(!o||o.size===0)return;for(let[a,c]of o.entries()){let l=this.cdnClient.file(e,a);try{await this.cache.setCachedFile(l,c)}catch{}}let i=t.subpath?[t.subpath+".d.ts",t.subpath+"/index.d.ts"]:["index.d.ts"];for(let a of i){let c=o.get(a);if(c)return{dts:c,url:this.cdnClient.file(e,a),resolvedPkg:t.subpath?new b(t).format():t.name}}}async resolve(e){let t=b.parse(e);if(t.name)for(let n of this.typesNameCandidates(t.name)){let s=`@types/${n}`,o;try{o=await this.cdnClient.fetchVersionsIndex(s)}catch{continue}if(!o?.versions?.length)continue;let i=this.selectTypesVersion(o.versions,o.distTags,t.version),a=await this.fetchFromVersionedRoot(`${s}@${i}`,t);if(a)return a}}};var Ve=class{collectRelativeTypeRefs(e){return this.collectRefs(e).filter(t=>t.startsWith("./")||t.startsWith("../"))}collectBareModuleRefs(e){return this.collectRefs(e).filter(t=>this.isBare(t))}collectRefs(e){let t=new Set,n=(s,o)=>(t.add(s[o]),null);return this.matchAll(e,/(import|export)\s+[^'"\n]*from\s*['"]([^'"\n]+)['"]/,s=>n(s,2)),this.matchAll(e,/export\s*\*\s*from\s*['"]([^'"\n]+)['"]/,s=>n(s,1)),Array.from(t)}matchAll(e,t,n){let s=[];try{let o=new RegExp(t.source,"g"),i;for(;i=o.exec(e);){let a=n(i);a!==null&&s.push(a)}}catch{}return s}isBare(e){return!(e.startsWith("./")||e.startsWith("../")||e.startsWith("file:")||e.startsWith("http://")||e.startsWith("https://"))}};var gn="file:///node_modules",ze=class{constructor(){this.epoch=0,this.listeners=new Set}getEpoch(){return this.epoch}bumpEpoch(){this.epoch+=1;for(let e of this.listeners)try{e(this.epoch)}catch{}return this.epoch}onEpochChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}epochDir(){return`__tsepoch_${this.epoch}`}pathForMain(e){return`${gn}/${this.epochDir()}/${e}/index.d.ts`}pathFor(e,t){let n=Mo(t);return`${gn}/${this.epochDir()}/${e}/${n}`}};function Mo(r){let e=r||"";return e.startsWith("./")?e.slice(2):e.replace(/^\/+/,"")}import{LRUCache as Bo}from"lru-cache";function cr(r){let e=new Bo({ttl:1e4,max:500}),t=new Map;return async function(s){try{if(await r.isNegative(s))return;let o=e.get(s);if(o&&Date.now()-o<1e4)return;let i=await r.getCachedFile(s);if(i)return{dts:i,url:s};let a=t.get(s);if(a)return a;let c=(async()=>{let l=await fetch(s,{cache:"no-store"});if(!l.ok){l.status===404&&(e.set(s,Date.now()),await r.recordNegative(s));return}let d=await l.text(),u=l.url||s;return await r.clearNegative(s),await r.setCachedFile(u,d),{dts:d,url:u}})();return t.set(s,c),await c.finally(()=>t.delete(s))}catch{return}}}var mt=class{constructor(e){this.inFlight=new Map,this.scanner=new Ve,this.cache=e.cache,this.cdnClient=e.cdnClient,this.versionResolver=e.versionResolver,this.packageService=e.packageService,this.fetchDts=cr(e.cache),this.typescriptProvider=new Je(this.fetchDts,e.cdnClient),this.definitelyTypedProvider=new He(this.fetchDts,e.cdnClient,e.cache),this.virtualFs=new ze}withInFlight(e,t){let n=this.inFlight.get(e);if(n)return n;let s=t().finally(()=>this.inFlight.delete(e));return this.inFlight.set(e,s),s}invalidate(){this.virtualFs.bumpEpoch(),this.inFlight.clear()}capArray(e,t){return e.length<=t?e:e.slice(0,t)}pushFileIfNew(e,t,n){e.some(s=>s.path===t)||e.push({path:t,content:n})}createStubDef(e){let t=this.virtualFs.pathForMain(e);return{pkg:e,mainPath:t,files:[{path:t,content:"export const _shim: any; export default _shim;"}],shims:[{module:e,path:t}]}}async trySubpathWithRootFallback(e,t){let n=new b(e);return n.subpath?this.fetchRootDts(n.name,t):void 0}async fetchViaProviders(e){for(let t of[this.typescriptProvider,this.definitelyTypedProvider])try{let n=await t.resolve(e);if(n?.dts)return n}catch{}}subpathsMatch(e,t){return new b(e).subpath===new b(t).subpath}async fetchRootDts(e,t){let{effectivePackage:n,root:s,pinned:o}=await this.versionResolver.effectivePackage(e,t),i=await this.cache.getCachedDts(n);if(i?.content){let c=i.url??this.cdnClient.file(o?`${s}@${o}`:s,"index.d.ts");return{dts:i.content,url:c,resolvedPkg:n}}let a;try{a=await this.fetchViaProviders(n)}catch{return}if(!(!a?.dts||!a.url)){try{await this.cache.setCachedFile(a.url,a.dts)}catch{}if(this.subpathsMatch(n,a.resolvedPkg||n)){try{await this.cache.setCachedDts(n,a.dts,a.url)}catch{}return a}}}extractPackageRootUrl(e){let t=e.pathname.match(/^(.+@[^/]+\/)/);return t?new URL(t[1],e.origin):new URL("./",e)}toVirtualPath(e,t,n){let s=t.pathname.startsWith(e.pathname)?t.pathname.slice(e.pathname.length):`__deps__/${encodeURIComponent(t.toString()).replace(/%/g,"_")}.d.ts`;return this.virtualFs.pathFor(n,s)}computeEntryPath(e,t){if(!e)return{mainPath:this.virtualFs.pathForMain(t),packageRootUrl:void 0};let n=new URL(e),s=this.extractPackageRootUrl(n);return{mainPath:this.toVirtualPath(s,n,t),packageRootUrl:s}}async expandRelativeRefs(e,t,n,s,o=new Set,i){if(!o.has(t)&&(o.add(t),!(o.size>Z.maxRelativeTypeRefs)))try{let a=new URL(t),c=new URL("./",a);i??(i=this.extractPackageRootUrl(a));let l=this.capArray(this.scanner.collectRelativeTypeRefs(e),Z.maxRelativeTypeRefs);for(let d of l)await this.tryRelativeRef(d,c,i,n,s,o)}catch{}}async tryRelativeRef(e,t,n,s,o,i){try{let a=new URL(e,t),c=a.pathname+a.search,l=ar(c)?[c]:this.typescriptProvider.declarationCandidatesFor(c);for(let d of l){let f=new URL(d,a).toString();if(i.has(f))return;let m=await this.fetchDts(f);if(m?.dts){let h=this.toVirtualPath(n,new URL(m.url),s);this.pushFileIfNew(o,h,m.dts),await this.expandRelativeRefs(m.dts,m.url,s,o,i,n);return}}}catch{}}isDifferentPackage(e,t){return e===t?!1:new b(e).name!==new b(t).name}ambientlyDeclares(e,t){for(let n of e.matchAll(/declare\s+module\s+['"]([^'"]+)['"]/g)){let s=n[1];if(s===t||s.endsWith("/*")&&t.startsWith(s.slice(0,-1)))return!0}return!1}markFileAmbient(e,t){let n=e.find(s=>s.path===t);n&&(n.ambient=!0)}async prefetchBareDeps(e,t,n,s,o){try{let i=this.capArray(this.scanner.collectBareModuleRefs(e),Z.maxBareDeps).filter(l=>this.isDifferentPackage(l,t));if(!i.length)return;let a=new Set([t]),c=jo(Z.prefetchConcurrency);await Promise.all(i.map(l=>c(()=>this.prefetchBareDepsRecursive(l,n,s,Z.maxBareDepth,a,o).catch(()=>{}))))}catch{}}async prefetchBareDepsRecursive(e,t,n,s,o,i){if(s<=0||o.has(e))return;o.add(e);let a=await this.fetchRootDts(e,i);if(!a?.dts)return;let c=a.resolvedPkg||e,l=this.virtualFs.pathForMain(c);this.pushFileIfNew(t,l,a.dts),this.ambientlyDeclares(a.dts,e)?this.markFileAmbient(t,l):n.push({module:e,path:l}),a.url&&await this.expandRelativeRefs(a.dts,a.url,c,t);let d=this.capArray(this.scanner.collectBareModuleRefs(a.dts),Z.maxBareDeps).filter(u=>!o.has(u));for(let u of d)await this.prefetchBareDepsRecursive(u,t,n,s-1,o,i)}async resolve(e,t,n){let s=await this.packageService.extractImports(e),o=n?[...s,...n]:s;return(await Promise.all(o.map(a=>this.resolveOne(a,t)))).filter(a=>!!a)}async resolveOne(e,t){let{effectivePackage:n}=await this.versionResolver.effectivePackage(e,t);return this.withInFlight(n,async()=>{let s=await this.fetchRootDts(e,t)??await this.trySubpathWithRootFallback(e,t);return s?this.buildDefFromContent(e,s,s.resolvedPkg||e,t):this.createStubDef(e)})}async buildDefFromContent(e,t,n,s){let{dts:o,url:i,resolvedPkg:a}=t,c=new b(a||n),l=c.version?`${c.name}@${c.version}`:c.name,{mainPath:d,packageRootUrl:u}=this.computeEntryPath(i,l),f=[{path:d,content:o}],m=[];i&&await this.expandRelativeRefs(o,i,l,f,void 0,u);let h=f.map(E=>E.content).join(`
275
- `);await this.prefetchBareDeps(h,l,f,m,s);let w=c.format(),D=e===w?[e]:[e,w],M=D.some(E=>this.ambientlyDeclares(o,E));return M?this.markFileAmbient(f,d):m.push(...D.map(E=>({module:E,path:d}))),{pkg:e,mainPath:d,files:f,shims:m,ambient:M}}};function lr(r){return new mt(r)}import*as z from"fs/promises";import*as q from"path";import*as wn from"os";import*as dr from"fs/promises";import*as bn from"crypto";function N(r){return bn.createHash("sha1").update(r).digest("hex")}async function ae(r){try{return JSON.parse(await dr.readFile(r,"utf8"))}catch{return}}async function ht(r){try{return await dr.readFile(r,"utf8")}catch{return}}var yn=1,ee=q.join(wn.homedir(),".typebulb","cache"),qe=q.join(ee,"packages"),Ge=q.join(ee,"proxy"),gt=q.join(ee,"dts"),Fo=q.join(ee,"emit"),ur;function S(){return ur||(ur=Lo()),ur}function bt(r,e){return q.join(Fo,N(r),e)}async function Lo(){await z.mkdir(ee,{recursive:!0});let r=q.join(ee,"version.json");if((await No(r))?.version===yn)return;let t=await z.readdir(ee).catch(()=>[]);await Promise.all(t.map(n=>z.rm(q.join(ee,n),{recursive:!0,force:!0}))),await z.writeFile(r,JSON.stringify({version:yn})+`
276
- `,"utf8")}async function No(r){try{let e=await z.readFile(r,"utf8");return JSON.parse(e)}catch{return}}import*as te from"fs/promises";import*as vn from"path";async function j(r,e){await te.mkdir(vn.dirname(r),{recursive:!0});let t=`${r}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;await te.writeFile(t,e,"utf8"),await te.rename(t,r).catch(async n=>{throw await te.rm(t,{force:!0}).catch(()=>{}),n})}var ve=class{constructor(e){this.filePath=e}mem;loadPromise;load(){return this.mem?Promise.resolve(this.mem):(this.loadPromise||(this.loadPromise=ae(this.filePath).then(e=>(this.mem=new Map(Object.entries(e??{})),this.mem))),this.loadPromise)}async get(e){return(await this.load()).get(e)}async set(e,t){let n=await this.load();n.set(e,t),await this.persist(n)}async delete(e){let t=await this.load();t.delete(e)&&await this.persist(t)}async persist(e){await j(this.filePath,JSON.stringify(Object.fromEntries(e)))}};var pr=U.join(qe,"indexes"),xn=U.join(qe,"pinned"),Uo=U.join(qe,"meta"),Wo=U.join(qe,"negative.json"),xe=Symbol("missing"),wt=class{pinnedMem=new Map;indexMem=new Map;metaMem=new Map;negativeCache=new ie(new ve(Wo));async getPinnedExact(e,t){let n=`${e}@${t}`,s=this.pinnedMem.get(n);if(s!==void 0)return s===xe?void 0:s;await S();let o=await ht(U.join(xn,N(n)+".txt"));return this.pinnedMem.set(n,o??xe),o}async setPinnedExact(e,t,n){let s=`${e}@${t}`;this.pinnedMem.set(s,n),await S(),await j(U.join(xn,N(s)+".txt"),n)}async getIndex(e){let t=this.indexMem.get(e);if(t!==void 0)return t===xe?void 0:t;await S();let n=await ae(U.join(pr,yt(e)+".json"));return this.indexMem.set(e,n??xe),n}async setIndex(e,t,n){let s={versions:t,distTags:n,updatedAt:Date.now()};this.indexMem.set(e,s),await S(),await j(U.join(pr,yt(e)+".json"),JSON.stringify(s))}async invalidateVersionsCache(e){this.indexMem.delete(e),await Pn.rm(U.join(pr,yt(e)+".json"),{force:!0})}async isNegative(e){return await S(),this.negativeCache.isNegative(e)}async recordNegative(e){await S(),await this.negativeCache.recordNegative(e)}async clearNegative(e){await this.negativeCache.clearNegative(e)}async getMeta(e,t){let n=`${e}@${t}`,s=this.metaMem.get(n);if(s!==void 0)return s===xe?void 0:s;await S();let o=await ae(Sn(e,t));return this.metaMem.set(n,o??xe),o}async setMeta(e,t,n,s,o){let i={dependencies:n,peerDependencies:s,peerDependenciesMeta:o,updatedAt:Date.now()};this.metaMem.set(`${e}@${t}`,i),await S(),await j(Sn(e,t),JSON.stringify(i))}};function Sn(r,e){return U.join(Uo,yt(r),encodeURIComponent(e)+".json")}function yt(r){return r.replace(/\//g,"__")}var En={async getJson(r){try{let e=await fetch(r,{redirect:"follow"});return e.ok?await e.json():void 0}catch{return}},async head(r){try{let e=await fetch(r,{method:"HEAD",redirect:"follow"});return{ok:e.ok,url:e.url}}catch{return}}};var Jo=new wt,{packageService:vt,versionResolver:Rn,cdnClient:kn,peerResolver:Ql}=cn(Jo,En);var Tn=`
419
+ `;var Be=class{constructor(e){this.store=e}async isNegative(e){let t=await _s(()=>this.store.get(e));return!!t&&t.until>Date.now()}async recordNegative(e){let s=((await _s(()=>this.store.get(e)))?.attempts||0)+1;await _s(()=>this.store.set(e,{until:Date.now()+Ly(s),attempts:s}))}async clearNegative(e){await _s(()=>this.store.delete(e))}};function Ly(r){return Math.min(9e5*Math.pow(2,Math.max(0,r-1)),864e5)}async function _s(r){try{return await r()}catch{return}}import jy from"p-limit";import{resolve as _u}from"resolve.exports";var ut=class{constructor(e){this.fetchDts=e}fetchDtsText(e){return this.tryUrls([e])}async tryUrls(e){for(let t of e){let s=await this.fetchDts(t);if(s&&(this.looksLikeDts(s.dts)||/\.(d\.ts|d\.mts)(?:[?#].*)?$/i.test(s.url)||/[?&]dts(?:[&#]|$)/i.test(s.url)))return s}}looksLikeDts(e){return/^\s*export\s*\{\s*\}\s*;?\s*$/m.test(e)?!0:/declare\s+(module|namespace|class|interface|function|const|var|let)/.test(e)||/interface\s+\w+/.test(e)||/type\s+\w+\s*=/.test(e)}};var Pe={maxRelativeTypeRefs:500,maxBareDeps:8,maxBareDepth:3,prefetchConcurrency:4,negativeTtlMs:1e4},ur=["index.d.ts","index.d.mts"],fr=/\.d\.(ts|mts)$/i;function xo(r){if(fr.test(r))return!0;try{return new URL(r,"file://").search.includes("dts")}catch{return r.includes("?")&&r.includes("dts")}}function Ls(r){return[`${r}.d.ts`,`${r}.d.mts`]}async function dr(r,{retries:e=2,timeoutMs:t=15e3,init:s}={}){for(let n=0;n<=e;n++){let i=new AbortController,o=setTimeout(()=>i.abort(),t);try{let a=await fetch(r,{...s,signal:i.signal});if($y(a.status)&&n<e)continue;return a}catch{if(n<e)continue;return}finally{clearTimeout(o)}}}function $y(r){return r===408||r===429||r>=500&&r<600}var pr=class extends ut{constructor(e,t){super(e),this.cdnClient=t}async loadPackageAtVersionedRoot(e,t){let s=this.cdnClient.packageJson(new A({name:e,version:t})),n=await dr(s);if(!n?.ok)return;let i;try{i=await n.json()}catch{return}if(i)return{pkg:i,baseDir:this.cdnClient.baseDir(new A({name:e,version:t??i.version})),version:t}}extractPathFromResult(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.find(t=>typeof t=="string")}async tryUntilSuccess(e,t){for(let s of e){let n=await t(s);if(n)return n}}async resolveFromSelected(e,t){if(e.kind==="types"){let n=this.cdnClient.normalizeRelative(e.path);if(!n||n==="/"||n===".")return this.tryUntilSuccess([...ur],t);if(!fr.test(n)){let i=await this.tryUntilSuccess(this.declarationCandidatesFor(n),t);if(i)return i}return t(n)}let s=this.declarationCandidatesFor(e.path);return this.tryUntilSuccess([...ur,...s],t)}toResolutionResult(e){return{kind:fr.test(e)?"types":"probe",path:e}}resolveExportsPath(e,t){let s=t||".",n=e;try{let i=this.extractPathFromResult(_u(n,s,{conditions:["types"]}));if(i)return i}catch{}try{return this.extractPathFromResult(_u(n,s,{browser:!0,conditions:["import","default","module","browser","node"]}))}catch{return}}async resolve(e){try{let t=A.parse(e),{pkg:s,baseDir:n}=await this.loadPackageAtVersionedRoot(t.name,t.version)||{};if(!s||!n)return;let i={name:t.name,version:t.version},o=new A(i).format(),a=new A({...i,subpath:t.subpath}).format(),c=u=>this.fetchCandidateFrom(n,t.name,u);if(t.subpath){let u=this.cdnClient.ensureLeadingDotSlash(t.subpath),d=this.resolveExportsPath(s,u);if(d){let g=await this.resolveFromSelected(this.toResolutionResult(d),c);if(g)return{...g,resolvedPkg:a}}let h=await this.tryUntilSuccess(this.declarationCandidatesFor(u),c);if(h)return{...h,resolvedPkg:a}}let l=s.types??s.typings;if(l){let u=await this.resolveFromSelected({kind:"types",path:l},c);if(u)return{...u,resolvedPkg:o}}let f=this.resolveExportsPath(s,".");if(f){let u=await this.resolveFromSelected(this.toResolutionResult(f),c);if(u)return{...u,resolvedPkg:o}}return}catch{return}}async fetchCandidateFrom(e,t,s){let n=this.cdnClient.normalizeRelative(s),i=new URL(n,e).toString(),o=await this.fetchDtsText(i);return o?{dts:o.dts,url:o.url,resolvedPkg:t}:void 0}declarationCandidatesFor(e){if(!e||e==="./"||e==="/")return[...ur];let t=e.replace(/\.(mjs|cjs|js|mts|cts|ts)$/i,""),s=Ls(t),n=t.endsWith("/")?t:`${t}/`;return s.push(...Ls(`${n}index`)),s}};import{gunzipSync as My}from"fflate";var ft=class{async fetchAndExtract(e,t){let s=this.getTarballUrl(e,t),n=await dr(s,{timeoutMs:3e4});if(!n?.ok)return new Map;let i=new Uint8Array(await n.arrayBuffer());return this.extractDtsFiles(i)}getTarballUrl(e,t){return`https://registry.npmjs.org/${e.replace("/","%2F")}/-/${e.split("/").pop()}-${t}.tgz`}normalizeTarPath(e){let t=e.replace(/^package\//,""),s=t.indexOf("/");return s>0?t.substring(s+1):t}extractDtsFiles(e){let t=new Map;try{let s=My(e),n=new TextDecoder("utf-8"),i=0;for(;i<s.length-512;){let o=s.slice(i,i+512);if(o[0]===0)break;let a=o.slice(0,100),c=a.indexOf(0),l=n.decode(a.slice(0,c>0?c:100)).trim(),f=o.slice(124,136),u=n.decode(f).trim().replace(/\0/g,""),d=parseInt(u,8)||0,h=String.fromCharCode(o[156]);if(i+=512,(h==="0"||h==="\0")&&(l.endsWith(".d.ts")||l.endsWith(".d.mts"))){let g=s.slice(i,i+d);t.set(this.normalizeTarPath(l),n.decode(g))}i+=Math.ceil(d/512)*512}}catch{}return t}},Dy=new ft;var hr=class extends ut{constructor(e,t,s,n=new ft){super(e),this.cdnClient=t,this.cache=s,this.tarballFetcher=n}typesNameCandidates(e){let t=e.startsWith("@")?e.slice(1).replace("/","__"):e;return t.includes(".")?[t,t.split(".").join("-"),t.split(".").join("")]:[t]}selectTypesVersion(e,t,s){try{if(s){let i=qe.majorOf(s),o=e.filter(a=>qe.majorOf(a)===i);if(o.length)return o.sort((a,c)=>qe.cmp(c,a))[0]}let n=t?.latest;return n&&e.includes(n)?n:e[0]}catch{return e[0]}}async fetchFromVersionedRoot(e,t){let s=new A(e),n=s.version;if(!n)return;let i;try{i=await this.tarballFetcher.fetchAndExtract(s.name,n)}catch{return}if(!i||i.size===0)return;for(let[a,c]of i.entries()){let l=this.cdnClient.file(e,a);try{await this.cache.setCachedFile(l,c)}catch{}}let o=t.subpath?[t.subpath+".d.ts",t.subpath+"/index.d.ts"]:["index.d.ts"];for(let a of o){let c=i.get(a);if(c)return{dts:c,url:this.cdnClient.file(e,a),resolvedPkg:t.subpath?new A(t).format():t.name}}}async resolve(e){let t=A.parse(e);if(t.name)for(let s of this.typesNameCandidates(t.name)){let n=`@types/${s}`,i;try{i=await this.cdnClient.fetchVersionsIndex(n)}catch{continue}if(!i?.versions?.length)continue;let o=this.selectTypesVersion(i.versions,i.distTags,t.version),a=await this.fetchFromVersionedRoot(`${n}@${o}`,t);if(a)return a}}};var mr=class{collectRelativeTypeRefs(e){return this.collectRefs(e).filter(t=>t.startsWith("./")||t.startsWith("../"))}collectBareModuleRefs(e){return this.collectRefs(e).filter(t=>this.isBare(t))}collectRefs(e){let t=new Set,s=(n,i)=>(t.add(n[i]),null);return this.matchAll(e,/(import|export)\s+[^'"\n]*from\s*['"]([^'"\n]+)['"]/,n=>s(n,2)),this.matchAll(e,/export\s*\*\s*from\s*['"]([^'"\n]+)['"]/,n=>s(n,1)),Array.from(t)}matchAll(e,t,s){let n=[];try{let i=new RegExp(t.source,"g"),o;for(;o=i.exec(e);){let a=s(o);a!==null&&n.push(a)}}catch{}return n}isBare(e){return!(e.startsWith("./")||e.startsWith("../")||e.startsWith("file:")||e.startsWith("http://")||e.startsWith("https://"))}};var Lu="file:///node_modules",gr=class{constructor(){this.epoch=0,this.listeners=new Set}getEpoch(){return this.epoch}bumpEpoch(){this.epoch+=1;for(let e of this.listeners)try{e(this.epoch)}catch{}return this.epoch}onEpochChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}epochDir(){return`__tsepoch_${this.epoch}`}pathForMain(e){return`${Lu}/${this.epochDir()}/${e}/index.d.ts`}pathFor(e,t){let s=qy(t);return`${Lu}/${this.epochDir()}/${e}/${s}`}};function qy(r){let e=r||"";return e.startsWith("./")?e.slice(2):e.replace(/^\/+/,"")}import{LRUCache as By}from"lru-cache";function Eo(r){let e=new By({ttl:1e4,max:500}),t=new Map;return async function(n){try{if(await r.isNegative(n))return;let i=e.get(n);if(i&&Date.now()-i<1e4)return;let o=await r.getCachedFile(n);if(o)return{dts:o,url:n};let a=t.get(n);if(a)return a;let c=(async()=>{let l=await fetch(n,{cache:"no-store"});if(!l.ok){l.status===404&&(e.set(n,Date.now()),await r.recordNegative(n));return}let f=await l.text(),u=l.url||n;return await r.clearNegative(n),await r.setCachedFile(u,f),{dts:f,url:u}})();return t.set(n,c),await c.finally(()=>t.delete(n))}catch{return}}}var $s=class{constructor(e){this.inFlight=new Map,this.scanner=new mr,this.cache=e.cache,this.cdnClient=e.cdnClient,this.versionResolver=e.versionResolver,this.packageService=e.packageService,this.fetchDts=Eo(e.cache),this.typescriptProvider=new pr(this.fetchDts,e.cdnClient),this.definitelyTypedProvider=new hr(this.fetchDts,e.cdnClient,e.cache),this.virtualFs=new gr}withInFlight(e,t){let s=this.inFlight.get(e);if(s)return s;let n=t().finally(()=>this.inFlight.delete(e));return this.inFlight.set(e,n),n}invalidate(){this.virtualFs.bumpEpoch(),this.inFlight.clear()}capArray(e,t){return e.length<=t?e:e.slice(0,t)}pushFileIfNew(e,t,s){e.some(n=>n.path===t)||e.push({path:t,content:s})}createStubDef(e){let t=this.virtualFs.pathForMain(e);return{pkg:e,mainPath:t,files:[{path:t,content:"export const _shim: any; export default _shim;"}],shims:[{module:e,path:t}]}}async trySubpathWithRootFallback(e,t){let s=new A(e);return s.subpath?this.fetchRootDts(s.name,t):void 0}async fetchViaProviders(e){for(let t of[this.typescriptProvider,this.definitelyTypedProvider])try{let s=await t.resolve(e);if(s?.dts)return s}catch{}}subpathsMatch(e,t){return new A(e).subpath===new A(t).subpath}async fetchRootDts(e,t){let{effectivePackage:s,root:n,pinned:i}=await this.versionResolver.effectivePackage(e,t),o=await this.cache.getCachedDts(s);if(o?.content){let c=o.url??this.cdnClient.file(i?`${n}@${i}`:n,"index.d.ts");return{dts:o.content,url:c,resolvedPkg:s}}let a;try{a=await this.fetchViaProviders(s)}catch{return}if(!(!a?.dts||!a.url)){try{await this.cache.setCachedFile(a.url,a.dts)}catch{}if(this.subpathsMatch(s,a.resolvedPkg||s)){try{await this.cache.setCachedDts(s,a.dts,a.url)}catch{}return a}}}extractPackageRootUrl(e){let t=e.pathname.match(/^(.+@[^/]+\/)/);return t?new URL(t[1],e.origin):new URL("./",e)}toVirtualPath(e,t,s){let n=t.pathname.startsWith(e.pathname)?t.pathname.slice(e.pathname.length):`__deps__/${encodeURIComponent(t.toString()).replace(/%/g,"_")}.d.ts`;return this.virtualFs.pathFor(s,n)}computeEntryPath(e,t){if(!e)return{mainPath:this.virtualFs.pathForMain(t),packageRootUrl:void 0};let s=new URL(e),n=this.extractPackageRootUrl(s);return{mainPath:this.toVirtualPath(n,s,t),packageRootUrl:n}}async expandRelativeRefs(e,t,s,n,i=new Set,o){if(!i.has(t)&&(i.add(t),!(i.size>Pe.maxRelativeTypeRefs)))try{let a=new URL(t),c=new URL("./",a);o??(o=this.extractPackageRootUrl(a));let l=this.capArray(this.scanner.collectRelativeTypeRefs(e),Pe.maxRelativeTypeRefs);for(let f of l)await this.tryRelativeRef(f,c,o,s,n,i)}catch{}}async tryRelativeRef(e,t,s,n,i,o){try{let a=new URL(e,t),c=a.pathname+a.search,l=xo(c)?[c]:this.typescriptProvider.declarationCandidatesFor(c);for(let f of l){let d=new URL(f,a).toString();if(o.has(d))return;let h=await this.fetchDts(d);if(h?.dts){let g=this.toVirtualPath(s,new URL(h.url),n);this.pushFileIfNew(i,g,h.dts),await this.expandRelativeRefs(h.dts,h.url,n,i,o,s);return}}}catch{}}isDifferentPackage(e,t){return e===t?!1:new A(e).name!==new A(t).name}ambientlyDeclares(e,t){for(let s of e.matchAll(/declare\s+module\s+['"]([^'"]+)['"]/g)){let n=s[1];if(n===t||n.endsWith("/*")&&t.startsWith(n.slice(0,-1)))return!0}return!1}markFileAmbient(e,t){let s=e.find(n=>n.path===t);s&&(s.ambient=!0)}async prefetchBareDeps(e,t,s,n,i){try{let o=this.capArray(this.scanner.collectBareModuleRefs(e),Pe.maxBareDeps).filter(l=>this.isDifferentPackage(l,t));if(!o.length)return;let a=new Set([t]),c=jy(Pe.prefetchConcurrency);await Promise.all(o.map(l=>c(()=>this.prefetchBareDepsRecursive(l,s,n,Pe.maxBareDepth,a,i).catch(()=>{}))))}catch{}}async prefetchBareDepsRecursive(e,t,s,n,i,o){if(n<=0||i.has(e))return;i.add(e);let a=await this.fetchRootDts(e,o);if(!a?.dts)return;let c=a.resolvedPkg||e,l=this.virtualFs.pathForMain(c);this.pushFileIfNew(t,l,a.dts),this.ambientlyDeclares(a.dts,e)?this.markFileAmbient(t,l):s.push({module:e,path:l}),a.url&&await this.expandRelativeRefs(a.dts,a.url,c,t);let f=this.capArray(this.scanner.collectBareModuleRefs(a.dts),Pe.maxBareDeps).filter(u=>!i.has(u));for(let u of f)await this.prefetchBareDepsRecursive(u,t,s,n-1,i,o)}async resolve(e,t,s){let n=await this.packageService.extractImports(e),i=s?[...n,...s]:n;return(await Promise.all(i.map(a=>this.resolveOne(a,t)))).filter(a=>!!a)}async resolveOne(e,t){let{effectivePackage:s}=await this.versionResolver.effectivePackage(e,t);return this.withInFlight(s,async()=>{let n=await this.fetchRootDts(e,t)??await this.trySubpathWithRootFallback(e,t);return n?this.buildDefFromContent(e,n,n.resolvedPkg||e,t):this.createStubDef(e)})}async buildDefFromContent(e,t,s,n){let{dts:i,url:o,resolvedPkg:a}=t,c=new A(a||s),l=c.version?`${c.name}@${c.version}`:c.name,{mainPath:f,packageRootUrl:u}=this.computeEntryPath(o,l),d=[{path:f,content:i}],h=[];o&&await this.expandRelativeRefs(i,o,l,d,void 0,u);let g=d.map(k=>k.content).join(`
420
+ `);await this.prefetchBareDeps(g,l,d,h,n);let p=c.format(),y=e===p?[e]:[e,p],x=y.some(k=>this.ambientlyDeclares(i,k));return x?this.markFileAmbient(d,f):h.push(...y.map(k=>({module:k,path:f}))),{pkg:e,mainPath:f,files:d,shims:h,ambient:x}}};function To(r){return new $s(r)}import*as ce from"fs/promises";import*as de from"path";import*as Du from"os";import*as Ao from"fs/promises";import*as $u from"crypto";function te(r){return $u.createHash("sha1").update(r).digest("hex")}async function je(r){try{return JSON.parse(await Ao.readFile(r,"utf8"))}catch{return}}async function Ms(r){try{return await Ao.readFile(r,"utf8")}catch{return}}var Mu=1,Oe=de.join(Du.homedir(),".typebulb","cache"),yr=de.join(Oe,"packages"),br=de.join(Oe,"proxy"),Ds=de.join(Oe,"dts"),Fy=de.join(Oe,"emit"),Po;function R(){return Po||(Po=Uy()),Po}function qs(r,e){return de.join(Fy,te(r),e)}async function Uy(){await ce.mkdir(Oe,{recursive:!0});let r=de.join(Oe,"version.json");if((await Ky(r))?.version===Mu)return;let t=await ce.readdir(Oe).catch(()=>[]);await Promise.all(t.map(s=>ce.rm(de.join(Oe,s),{recursive:!0,force:!0}))),await ce.writeFile(r,JSON.stringify({version:Mu})+`
421
+ `,"utf8")}async function Ky(r){try{let e=await ce.readFile(r,"utf8");return JSON.parse(e)}catch{return}}import*as Ne from"fs/promises";import*as qu from"path";async function z(r,e){await Ne.mkdir(qu.dirname(r),{recursive:!0});let t=`${r}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;await Ne.writeFile(t,e,"utf8"),await Ne.rename(t,r).catch(async s=>{throw await Ne.rm(t,{force:!0}).catch(()=>{}),s})}var dt=class{constructor(e){this.filePath=e}mem;loadPromise;load(){return this.mem?Promise.resolve(this.mem):(this.loadPromise||(this.loadPromise=je(this.filePath).then(e=>(this.mem=new Map(Object.entries(e??{})),this.mem))),this.loadPromise)}async get(e){return(await this.load()).get(e)}async set(e,t){let s=await this.load();s.set(e,t),await this.persist(s)}async delete(e){let t=await this.load();t.delete(e)&&await this.persist(t)}async persist(e){await z(this.filePath,JSON.stringify(Object.fromEntries(e)))}};var Oo=re.join(yr,"indexes"),Bu=re.join(yr,"pinned"),Jy=re.join(yr,"meta"),Vy=re.join(yr,"negative.json"),pt=Symbol("missing"),js=class{pinnedMem=new Map;indexMem=new Map;metaMem=new Map;negativeCache=new Be(new dt(Vy));async getPinnedExact(e,t){let s=`${e}@${t}`,n=this.pinnedMem.get(s);if(n!==void 0)return n===pt?void 0:n;await R();let i=await Ms(re.join(Bu,te(s)+".txt"));return this.pinnedMem.set(s,i??pt),i}async setPinnedExact(e,t,s){let n=`${e}@${t}`;this.pinnedMem.set(n,s),await R(),await z(re.join(Bu,te(n)+".txt"),s)}async getIndex(e){let t=this.indexMem.get(e);if(t!==void 0)return t===pt?void 0:t;await R();let s=await je(re.join(Oo,Bs(e)+".json"));return this.indexMem.set(e,s??pt),s}async setIndex(e,t,s){let n={versions:t,distTags:s,updatedAt:Date.now()};this.indexMem.set(e,n),await R(),await z(re.join(Oo,Bs(e)+".json"),JSON.stringify(n))}async invalidateVersionsCache(e){this.indexMem.delete(e),await Fu.rm(re.join(Oo,Bs(e)+".json"),{force:!0})}async isNegative(e){return await R(),this.negativeCache.isNegative(e)}async recordNegative(e){await R(),await this.negativeCache.recordNegative(e)}async clearNegative(e){await this.negativeCache.clearNegative(e)}async getMeta(e,t){let s=`${e}@${t}`,n=this.metaMem.get(s);if(n!==void 0)return n===pt?void 0:n;await R();let i=await je(ju(e,t));return this.metaMem.set(s,i??pt),i}async setMeta(e,t,s,n,i){let o={dependencies:s,peerDependencies:n,peerDependenciesMeta:i,updatedAt:Date.now()};this.metaMem.set(`${e}@${t}`,o),await R(),await z(ju(e,t),JSON.stringify(o))}};function ju(r,e){return re.join(Jy,Bs(r),encodeURIComponent(e)+".json")}function Bs(r){return r.replace(/\//g,"__")}var Uu={async getJson(r){try{let e=await fetch(r,{redirect:"follow"});return e.ok?await e.json():void 0}catch{return}},async head(r){try{let e=await fetch(r,{method:"HEAD",redirect:"follow"});return{ok:e.ok,url:e.url}}catch{return}}};var Wy=new js,{packageService:Fs,versionResolver:Ku,cdnClient:Ju,peerResolver:bx}=Au(Wy,Uu);var Vu=`
277
422
  (() => {
278
423
  // Embedded (bulb-in-a-bulb): runs inside a sandboxed iframe with no parent
279
424
  // bridge, so privileged tb.* (AI, fs, server RPC) can't reach a host and would
@@ -483,10 +628,10 @@ declare const tb: {${ln}${dn}${un}${mn}${_o}${pn}${fn}
483
628
  };
484
629
  }
485
630
  })();
486
- `;function xt(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}var St=` *, *::before, *::after { box-sizing: border-box; }
631
+ `;function Us(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}var Ks=` *, *::before, *::after { box-sizing: border-box; }
487
632
  body { margin: 0; display: flow-root; font-family: system-ui, -apple-system, sans-serif; }
488
633
  html[data-theme="dark"] { color-scheme: dark; }
489
- html[data-theme="light"] { color-scheme: light; }`;function Pt(r,e){let t=n=>n.replace(/<\/script/gi,"<\\/script");return` <script>
634
+ html[data-theme="light"] { color-scheme: light; }`;function Js(r,e){let t=s=>s.replace(/<\/script/gi,"<\\/script");return` <script>
490
635
  (function() {
491
636
  try {
492
637
  var KEY = ${t(JSON.stringify("tb-theme:"+r))};
@@ -521,42 +666,42 @@ declare const tb: {${ln}${dn}${un}${mn}${_o}${pn}${fn}
521
666
  });
522
667
  } catch (e) {}
523
668
  })();
524
- </script>`}function _n(r){let{name:e,code:t,css:n,html:s,data:o,insight:i,importMap:a,watch:c,theme:l,embedded:d}=r,u=s.trim()||'<div id="app"></div>',f=d?"":`
525
- html, body { height: 100%; }`,m=w=>w.replace(/<\/script/gi,"<\\/script"),h={imports:Vo(a.imports)};return`<!DOCTYPE html>
669
+ </script>`}function Wu(r){let{name:e,code:t,css:s,html:n,data:i,insight:o,importMap:a,watch:c,theme:l,embedded:f}=r,u=n.trim()||'<div id="app"></div>',d=f?"":`
670
+ html, body { height: 100%; }`,h=p=>p.replace(/<\/script/gi,"<\\/script"),g={imports:Hy(a.imports)};return`<!DOCTYPE html>
526
671
  <html>
527
672
  <head>
528
673
  <meta charset="utf-8">
529
674
  <meta name="viewport" content="width=device-width, initial-scale=1">
530
- <title>${xt(e)} - typebulb</title>
531
- ${Pt(e,l)}
675
+ <title>${Us(e)} - typebulb</title>
676
+ ${Js(e,l)}
532
677
  <script type="importmap">
533
- ${JSON.stringify(h,null,2)}
678
+ ${JSON.stringify(g,null,2)}
534
679
  </script>
535
680
  <style>
536
- ${St}${f}
681
+ ${Ks}${d}
537
682
  </style>
538
683
  <style>
539
- ${n}
684
+ ${s}
540
685
  </style>
541
686
  </head>
542
687
  <body>
543
688
  ${u}
544
689
 
545
- ${o.length>0?`<script>window.__TB_DATA__ = ${m(JSON.stringify(o))};</script>`:""}
546
- ${i?`<script>window.__TB_INSIGHT__ = ${m(JSON.stringify(i))};</script>`:""}
690
+ ${i.length>0?`<script>window.__TB_DATA__ = ${h(JSON.stringify(i))};</script>`:""}
691
+ ${o?`<script>window.__TB_INSIGHT__ = ${h(JSON.stringify(o))};</script>`:""}
547
692
  ${c?"<script>window.__TYPEBULB_WATCH__ = true;</script>":""}
548
693
 
549
694
  <script>
550
- ${Tn}
695
+ ${Vu}
551
696
  </script>
552
697
 
553
- ${Ho}
698
+ ${Yy}
554
699
 
555
700
  <script type="module">
556
- ${m(t)}
701
+ ${h(t)}
557
702
  </script>
558
703
  </body>
559
- </html>`}var Ho=`<script>
704
+ </html>`}var Yy=`<script>
560
705
  (function () {
561
706
  if (window.parent === window) return;
562
707
  var de = document.documentElement;
@@ -627,50 +772,206 @@ ${m(t)}
627
772
  }
628
773
  });
629
774
  })();
630
- </script>`;function Vo(r){let e={};for(let[t,n]of Object.entries(r))e[t]=n.startsWith("https://")?"/proxy/"+n:n;return e}import*as Rt from"fs/promises";import*as Et from"path";import{existsSync as An,readFileSync as zo}from"fs";import{execFile as qo}from"child_process";import{promisify as Go}from"util";import{satisfies as Ko}from"semver";var Yo=Go(qo);async function kt(r,e,t){let s=r.map(i=>Xo(i,t)).filter(i=>!Qo(i,e));if(s.length===0)return;await Rt.mkdir(e,{recursive:!0});let o=Et.join(e,"package.json");An(o)||await Rt.writeFile(o,JSON.stringify({name:"typebulb-server",private:!0})),console.log(` Installing: ${s.join(", ")}`),await Yo("npm",["install","--no-audit","--no-fund",...s],{cwd:e,shell:!0})}function Xo(r,e){if(!e||$n(r))return r;let t=e[r];return t?`${r}@${t}`:r}function Qo(r,e){let t=Et.join(e,"node_modules",Cn(r));if(!An(t))return!1;let n=$n(r);if(!n)return!0;try{let s=JSON.parse(zo(Et.join(t,"package.json"),"utf-8")).version;return Ko(s,n)}catch{return!1}}function Tt(r){let e=new Set,t=/\bimport\s+(?:[\s\S]*?\s+from\s+)?['"]([^./][^'"]*)['"]/g,n;for(;n=t.exec(r);){let s=n[1];if(s.includes(":"))continue;let o=s.startsWith("@")?s.split("/").slice(0,2).join("/"):s.split("/")[0];e.add(o)}return[...e]}function Cn(r){if(r.startsWith("@")){let t=r.indexOf("/");if(t<0)return r;let n=r.indexOf("@",t+1);return n<0?r:r.slice(0,n)}let e=r.indexOf("@");return e<0?r:r.slice(0,e)}function $n(r){let e=Cn(r);return r.length>e.length?r.slice(e.length+1):""}async function In(r){let t=(await re.readdir(r)).find(n=>n.endsWith(".bulb.md"));return t?_t.join(r,t):null}async function G(r){let e=await re.readFile(r,"utf-8"),t=lt(e);if(!t)throw new Error("Invalid .bulb.md file format");let n=dt(t);return{bulb:n,config:rn(n.config)}}async function fr(r,e,t,n){let s=Zt(r,{serverOnly:!0});if(s.error)throw new Error(`Server compilation error: ${s.error}`);let o=s.code;t&&(o=await Qr(o,t));let i=_t.join(e,".typebulb");await re.mkdir(i,{recursive:!0});let a=Tt(o);a.length>0&&await kt(a,i,n);let c=_t.join(i,"server.mjs");return await re.writeFile(c,o,"utf-8"),await import(`${Zo(c).href}?t=${Date.now()}`)}async function mr(r,e,t,n,s){let{bulb:o,config:i}=await G(r),a=tn(o.data),c=Zt(o.code,{jsxImportSource:i.jsxImportSource});c.error&&console.error("Compilation error:",c.error);let{importMap:l}=await vt.buildImportMap(c.code,i.dependencies??{},n?new Set([n.name]):void 0);n&&(l.imports[n.name]=n.entryUrl);let d=_n({name:o.name,code:c.code,css:o.css,html:o.html,data:a,insight:o.insight,importMap:l,watch:e}),u=null;return o.server&&t&&(u=await fr(o.server,s,n,i.dependencies)),{html:d,bulb:o,serverExports:u}}Ye();import ai from"open";async function Pe(r){await ai(r)}var Mn=new Set(["claude"]);function Bn(r){return Mn.has(r)}function yr(){return[...Mn]}import*as Wn from"path";import{spawn as Si}from"child_process";import*as A from"fs/promises";import*as R from"path";import*as Ee from"path";var ci=Ee.join(gt,"pkg"),li=Ee.join(gt,"files"),di=Ee.join(gt,"negative.json"),$t=class{pkgMem=new Map;fileMem=new Map;negativeCache=new ie(new ve(di));async getCachedDts(e){if(this.pkgMem.has(e))return this.pkgMem.get(e);await S();let t=await ae(jn(e));return this.pkgMem.set(e,t),t}async setCachedDts(e,t,n){let s={content:t,url:n};this.pkgMem.set(e,s),await Ct(async()=>{await S(),await j(jn(e),JSON.stringify(s))})}async getCachedFile(e){if(this.fileMem.has(e))return this.fileMem.get(e);await S();let t=await ht(Fn(e));return this.fileMem.set(e,t),t}async setCachedFile(e,t){this.fileMem.set(e,t),await Ct(async()=>{await S(),await j(Fn(e),t)})}isNegative(e){return this.negativeCache.isNegative(e)}async recordNegative(e){await Ct(async()=>{await S(),await this.negativeCache.recordNegative(e)})}clearNegative(e){return Ct(()=>this.negativeCache.clearNegative(e))}};async function Ct(r){try{await r()}catch{}}function jn(r){return Ee.join(ci,N(r)+".json")}function Fn(r){return Ee.join(li,N(r)+".txt")}var wr;function ui(){return wr||(wr=lr({cache:new $t,cdnClient:kn,packageService:vt,versionResolver:Rn})),wr}var Ln="file:///node_modules/";async function Nn(r){let e=bt(r.emitKey,"typecheck");await S(),await A.rm(e,{recursive:!0,force:!0}),await A.mkdir(e,{recursive:!0});let t=hi(r.jsxImportSource,r.dependencies),n=await ui().resolve(r.code,r.dependencies,t),s=r.local?.name,o=s?n.filter(d=>d.pkg!==s):n,i=new Set;for(let d of o)for(let u of d.files){let f=It(u.path);if(!f||i.has(f))continue;i.add(f);let m=R.join(e,"node_modules",f);await A.mkdir(R.dirname(m),{recursive:!0}),await A.writeFile(m,u.content,"utf8")}let a={};for(let d of o)for(let u of d.shims){let f=It(u.path);f&&(a[u.module]=[`./node_modules/${f}`])}for(let d of o){if(d.ambient)continue;let u=It(d.mainPath);u&&(a[d.pkg]=[`./node_modules/${u}`])}let c=new Set;for(let d of o)for(let u of d.files){if(!u.ambient)continue;let f=It(u.path);f&&c.add(`node_modules/${f}`)}if(r.local){delete a[r.local.name];let d=await gi(r.local,e);d?a[r.local.name]=[`./node_modules/${r.local.name}/${d}`]:console.warn(` local: '${r.local.name}' ships no type defs; check cannot type against it.`)}let l=pi(r.jsxImportSource,a,[...c]);return await A.writeFile(R.join(e,"tsconfig.json"),JSON.stringify(l,null,2)+`
631
- `,"utf8"),await A.writeFile(R.join(e,"code.tsx"),r.code,"utf8"),await A.writeFile(R.join(e,"tb.d.ts"),or,"utf8"),{dir:e}}function pi(r,e,t=[]){return{compilerOptions:{target:"es2023",module:"esnext",moduleResolution:"bundler",lib:fi([...nr,...sr]),jsx:"react-jsx",jsxImportSource:r??"react",strict:!0,noEmit:!0,skipLibCheck:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0,baseUrl:".",paths:e},include:["code.tsx","tb.d.ts",...t]}}function fi(r){return r.filter(e=>!e.since).map(e=>mi(e.name))}function mi(r){return r.split(".").map(e=>/^es\d+$/i.test(e)?e.toUpperCase():e==="dom"?"DOM":e==="esnext"?"ESNext":e.charAt(0).toUpperCase()+e.slice(1)).join(".")}function hi(r,e){let t=r??("react"in e?"react":void 0);return t?[`${t}/jsx-runtime`,`${t}/jsx-dev-runtime`]:[]}function It(r){if(!r.startsWith(Ln))return;let e=r.slice(Ln.length),t=e.indexOf("/");if(!(t<0))return e.slice(t+1)}async function gi(r,e){if(!r.typesAbs)return;let t=R.dirname(r.typesAbs),n=R.join(e,"node_modules",r.name);for(let s of await bi(t)){let o=R.join(n,R.relative(t,s));await A.mkdir(R.dirname(o),{recursive:!0}),await A.copyFile(s,o)}return R.basename(r.typesAbs)}async function bi(r){let e=[];async function t(n){let s=await A.readdir(n,{withFileTypes:!0});for(let o of s){let i=R.join(n,o.name);o.isDirectory()?await t(i):/\.d\.ts(\.map)?$/.test(o.name)&&e.push(i)}}return await t(r),e}import*as F from"fs/promises";import*as K from"path";import{existsSync as yi}from"fs";var wi="^22";async function Un(r){let e=bt(r.emitKey,"typecheck-server");await S(),await F.rm(e,{recursive:!0,force:!0}),await F.mkdir(e,{recursive:!0});let t=K.join(r.bulbDir,".typebulb"),n=Tt(r.server).filter(i=>i!==r.local?.name);await kt([`@types/node@${wi}`,...n],t,r.dependencies);let s=K.join(t,"node_modules"),o=K.join(e,"node_modules");return await xi(s,o),await F.writeFile(K.join(e,"server.ts"),r.server,"utf8"),await F.writeFile(K.join(e,"tb.d.ts"),ir,"utf8"),await F.writeFile(K.join(e,"tsconfig.json"),JSON.stringify(vi(r.local),null,2)+`
632
- `,"utf8"),{dir:e}}function vi(r){let e={target:"es2023",module:"esnext",moduleResolution:"bundler",lib:["ES2023"],types:["node"],strict:!0,noEmit:!0,skipLibCheck:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0};if(r?.typesAbs){let t=o=>o.replace(/\\/g,"/"),n=t(K.dirname(r.typesAbs)),s=t(r.typesAbs).replace(/\.d\.ts$/,"");e.baseUrl=".",e.paths={[r.name]:[s],[`${r.name}/*`]:[`${n}/*`]}}return{compilerOptions:e,include:["server.ts","tb.d.ts"]}}async function xi(r,e){if(!yi(r)){await F.mkdir(e,{recursive:!0});return}await F.rm(e,{recursive:!0,force:!0});let t=process.platform==="win32"?"junction":"dir";await F.symlink(r,e,t)}async function Jn(r,e){let{bulb:t,config:n}=await G(r);!t.code&&!t.server&&(console.error("Bulb has neither **code.tsx** nor **server.ts**; nothing to check."),process.exit(1));let s=[];if(t.code){let{dir:i}=await Nn({code:t.code,dependencies:n.dependencies??{},jsxImportSource:n.jsxImportSource,emitKey:r,local:e});s.push({role:"client",dir:i})}if(t.server){let{dir:i}=await Un({server:t.server,bulbDir:Wn.dirname(r),emitKey:r,local:e?{name:e.name,typesAbs:e.typesAbs}:void 0,dependencies:n.dependencies});s.push({role:"server",dir:i})}let o=!1;for(let{role:i,dir:a}of s){let{stdout:c,exitCode:l}=await Pi(a);for(let d of c.split(/\r?\n/))d.trim()&&console.log(`${i} ${d}`);l!==0&&(o=!0)}o&&process.exit(1)}function Pi(r){return new Promise(e=>{let t=Si("npx",["tsc","--noEmit"],{cwd:r,shell:!0}),n="";t.stdout?.on("data",s=>{n+=s.toString()}),t.stderr?.on("data",s=>{n+=s.toString()}),t.on("close",s=>e({stdout:n,exitCode:s??1}))})}Ot();Ye();async function Hn(r,e){let{bulb:t}=await G(r),n=Re(t);if(le(r)){console.log("remembered-trusted \u2014 runs with filesystem / AI / server.ts automatically (`typebulb untrust` to revoke)."),n&&console.log(` (it uses ${n})`);return}n?(console.log(`This bulb appears to use ${n}; it runs Restricted unless you grant trust:`),console.log(` ${e}`)):console.log("No privileged capability detected \u2014 runs Restricted by default. (A clean scan is a hint, not a guarantee.)")}Ye();import*as Xe from"path";async function Vn(r,e){if(!r){e||(console.error("Usage: typebulb untrust <file.bulb.md>"),process.exit(1));let n=br();if(!n.length){console.log("No bulbs are remembered as trusted.");return}console.log("Trusted bulbs (run with fs/AI/server.ts without --trust):");for(let s of n)console.log(` ${s}`);return}let t=Xe.resolve(r);t.endsWith(".bulb.md")||(console.error("File must have .bulb.md extension"),process.exit(1)),Se(t,e),console.log(e?`Trusted ${Xe.basename(t)} \u2014 runs with fs / AI / server.ts (no --trust needed).`:`Untrusted ${Xe.basename(t)} \u2014 runs Restricted.`),console.log(` ${t}`)}Ke();de();import{readFileSync as Oi}from"fs";import*as _e from"path";import{fileURLToPath as Di}from"url";function Zn(){return _e.join(_e.dirname(Di(import.meta.url)),"..")}function jt(){return _e.join(Zn(),"README.md")}function xr(){return _e.join(Zn(),"description.md")}function Mi(r){return`---
775
+ </script>`;function Hy(r){let e={};for(let[t,s]of Object.entries(r))e[t]=s.startsWith("https://")?"/proxy/"+s:s;return e}import*as Ws from"fs/promises";import*as Vs from"path";import{existsSync as Yu,readFileSync as Gy}from"fs";import{execFile as zy}from"child_process";import{promisify as Qy}from"util";import{satisfies as Xy}from"semver";var Zy=Qy(zy);async function Ys(r,e,t){let n=r.map(o=>eb(o,t)).filter(o=>!tb(o,e));if(n.length===0)return;await Ws.mkdir(e,{recursive:!0});let i=Vs.join(e,"package.json");Yu(i)||await Ws.writeFile(i,JSON.stringify({name:"typebulb-server",private:!0})),console.log(` Installing: ${n.join(", ")}`),await Zy("npm",["install","--no-audit","--no-fund",...n],{cwd:e,shell:!0})}function eb(r,e){if(!e||Gu(r))return r;let t=e[r];return t?`${r}@${t}`:r}function tb(r,e){let t=Vs.join(e,"node_modules",Hu(r));if(!Yu(t))return!1;let s=Gu(r);if(!s)return!0;try{let n=JSON.parse(Gy(Vs.join(t,"package.json"),"utf-8")).version;return Xy(n,s)}catch{return!1}}function Hs(r){let e=new Set,t=/\bimport\s+(?:[\s\S]*?\s+from\s+)?['"]([^./][^'"]*)['"]/g,s;for(;s=t.exec(r);){let n=s[1];if(n.includes(":"))continue;let i=n.startsWith("@")?n.split("/").slice(0,2).join("/"):n.split("/")[0];e.add(i)}return[...e]}function Hu(r){if(r.startsWith("@")){let t=r.indexOf("/");if(t<0)return r;let s=r.indexOf("@",t+1);return s<0?r:r.slice(0,s)}let e=r.indexOf("@");return e<0?r:r.slice(0,e)}function Gu(r){let e=Hu(r);return r.length>e.length?r.slice(e.length+1):""}async function zu(r){let t=(await Ce.readdir(r)).find(s=>s.endsWith(".bulb.md"));return t?Gs.join(r,t):null}async function pe(r){let e=await Ce.readFile(r,"utf-8"),t=Rr(e);if(!t)throw new Error("Invalid .bulb.md file format");let s=Is(t);return{bulb:s,config:ka(s.config)}}async function No(r,e,t,s){let n=mo(r,{serverOnly:!0});if(n.error)throw new Error(`Server compilation error: ${n.error}`);let i=n.code;t&&(i=await ma(i,t));let o=Gs.join(e,".typebulb");await Ce.mkdir(o,{recursive:!0});let a=Hs(i);a.length>0&&await Ys(a,o,s);let c=Gs.join(o,"server.mjs");return await Ce.writeFile(c,i,"utf-8"),await import(`${rb(c).href}?t=${Date.now()}`)}async function Co(r,e,t,s,n){let{bulb:i,config:o}=await pe(r),a=po(i.data),c=mo(i.code,{jsxImportSource:o.ts?.jsxImportSource});c.error&&console.error("Compilation error:",c.error);let{importMap:l}=await Fs.buildImportMap(c.code,o.dependencies??{},s?new Set([s.name]):void 0);s&&(l.imports[s.name]=s.entryUrl);let f=Wu({name:i.name,code:c.code,css:i.css,html:i.html,data:a,insight:i.insight,importMap:l,watch:e}),u=null;return i.server&&t&&(u=await No(i.server,n,s,o.dependencies)),{html:f,bulb:i,serverExports:u}}vr();import ub from"open";async function mt(r){await ub(r)}var Zu=new Set(["claude"]);function ef(r){return Zu.has(r)}function Lo(){return[...Zu]}import*as cf from"path";import{spawn as Pb}from"child_process";import*as U from"fs/promises";import*as q from"path";import*as gt from"path";var fb=gt.join(Ds,"pkg"),db=gt.join(Ds,"files"),pb=gt.join(Ds,"negative.json"),Xs=class{pkgMem=new Map;fileMem=new Map;negativeCache=new Be(new dt(pb));async getCachedDts(e){if(this.pkgMem.has(e))return this.pkgMem.get(e);await R();let t=await je(tf(e));return this.pkgMem.set(e,t),t}async setCachedDts(e,t,s){let n={content:t,url:s};this.pkgMem.set(e,n),await Qs(async()=>{await R(),await z(tf(e),JSON.stringify(n))})}async getCachedFile(e){if(this.fileMem.has(e))return this.fileMem.get(e);await R();let t=await Ms(rf(e));return this.fileMem.set(e,t),t}async setCachedFile(e,t){this.fileMem.set(e,t),await Qs(async()=>{await R(),await z(rf(e),t)})}isNegative(e){return this.negativeCache.isNegative(e)}async recordNegative(e){await Qs(async()=>{await R(),await this.negativeCache.recordNegative(e)})}clearNegative(e){return Qs(()=>this.negativeCache.clearNegative(e))}};async function Qs(r){try{await r()}catch{}}function tf(r){return gt.join(fb,te(r)+".json")}function rf(r){return gt.join(db,te(r)+".txt")}var $o;function hb(){return $o||($o=To({cache:new Xs,cdnClient:Ju,packageService:Fs,versionResolver:Ku})),$o}var sf="file:///node_modules/";async function nf(r){let e=qs(r.emitKey,"typecheck");await R(),await U.rm(e,{recursive:!0,force:!0}),await U.mkdir(e,{recursive:!0});let t=bb(r.jsxImportSource,r.dependencies),s=await hb().resolve(r.code,r.dependencies,t),n=r.local?.name,i=n?s.filter(f=>f.pkg!==n):s,o=new Set;for(let f of i)for(let u of f.files){let d=Zs(u.path);if(!d||o.has(d))continue;o.add(d);let h=q.join(e,"node_modules",d);await U.mkdir(q.dirname(h),{recursive:!0}),await U.writeFile(h,u.content,"utf8")}let a={};for(let f of i)for(let u of f.shims){let d=Zs(u.path);d&&(a[u.module]=[`./node_modules/${d}`])}for(let f of i){if(f.ambient)continue;let u=Zs(f.mainPath);u&&(a[f.pkg]=[`./node_modules/${u}`])}let c=new Set;for(let f of i)for(let u of f.files){if(!u.ambient)continue;let d=Zs(u.path);d&&c.add(`node_modules/${d}`)}if(r.local){delete a[r.local.name];let f=await wb(r.local,e);f?a[r.local.name]=[`./node_modules/${r.local.name}/${f}`]:console.warn(` local: '${r.local.name}' ships no type defs; check cannot type against it.`)}let l=mb(r.jsxImportSource,a,[...c]);return await U.writeFile(q.join(e,"tsconfig.json"),JSON.stringify(l,null,2)+`
776
+ `,"utf8"),await U.writeFile(q.join(e,"code.tsx"),r.code,"utf8"),await U.writeFile(q.join(e,"tb.d.ts"),So,"utf8"),{dir:e}}function mb(r,e,t=[]){return{compilerOptions:{target:"es2023",module:"esnext",moduleResolution:"bundler",lib:gb([...wo,...vo]),jsx:"react-jsx",jsxImportSource:r??"react",strict:!0,noEmit:!0,skipLibCheck:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0,baseUrl:".",paths:e},include:["code.tsx","tb.d.ts",...t]}}function gb(r){return r.filter(e=>!e.since).map(e=>yb(e.name))}function yb(r){return r.split(".").map(e=>/^es\d+$/i.test(e)?e.toUpperCase():e==="dom"?"DOM":e==="esnext"?"ESNext":e.charAt(0).toUpperCase()+e.slice(1)).join(".")}function bb(r,e){let t=r??("react"in e?"react":void 0);return t?[`${t}/jsx-runtime`,`${t}/jsx-dev-runtime`]:[]}function Zs(r){if(!r.startsWith(sf))return;let e=r.slice(sf.length),t=e.indexOf("/");if(!(t<0))return e.slice(t+1)}async function wb(r,e){if(!r.typesAbs)return;let t=q.dirname(r.typesAbs),s=q.join(e,"node_modules",r.name);for(let n of await vb(t)){let i=q.join(s,q.relative(t,n));await U.mkdir(q.dirname(i),{recursive:!0}),await U.copyFile(n,i)}return q.basename(r.typesAbs)}async function vb(r){let e=[];async function t(s){let n=await U.readdir(s,{withFileTypes:!0});for(let i of n){let o=q.join(s,i.name);i.isDirectory()?await t(o):/\.d\.ts(\.map)?$/.test(i.name)&&e.push(o)}}return await t(r),e}import*as Q from"fs/promises";import*as he from"path";import{existsSync as Sb}from"fs";var kb="^22";async function of(r){let e=qs(r.emitKey,"typecheck-server");await R(),await Q.rm(e,{recursive:!0,force:!0}),await Q.mkdir(e,{recursive:!0});let t=he.join(r.bulbDir,".typebulb"),s=Hs(r.server).filter(o=>o!==r.local?.name);await Ys([`@types/node@${kb}`,...s],t,r.dependencies);let n=he.join(t,"node_modules"),i=he.join(e,"node_modules");return await Eb(n,i),await Q.writeFile(he.join(e,"server.ts"),r.server,"utf8"),await Q.writeFile(he.join(e,"tb.d.ts"),ko,"utf8"),await Q.writeFile(he.join(e,"tsconfig.json"),JSON.stringify(xb(r.local),null,2)+`
777
+ `,"utf8"),{dir:e}}function xb(r){let e={target:"es2023",module:"esnext",moduleResolution:"bundler",lib:["ES2023"],types:["node"],strict:!0,noEmit:!0,skipLibCheck:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0};if(r?.typesAbs){let t=i=>i.replace(/\\/g,"/"),s=t(he.dirname(r.typesAbs)),n=t(r.typesAbs).replace(/\.d\.ts$/,"");e.baseUrl=".",e.paths={[r.name]:[n],[`${r.name}/*`]:[`${s}/*`]}}return{compilerOptions:e,include:["server.ts","tb.d.ts"]}}async function Eb(r,e){if(!Sb(r)){await Q.mkdir(e,{recursive:!0});return}await Q.rm(e,{recursive:!0,force:!0});let t=process.platform==="win32"?"junction":"dir";await Q.symlink(r,e,t)}var Ke=["client"],Je=["client","server"],Tb=[{type:"DYNAMIC_IMPORT",pattern:/\bimport\s*\(\s*['"`]/,targets:Ke},{type:"COMMONJS_REQUIRE",pattern:/\brequire\s*\(\s*['"`]/,targets:Je},{type:"JS_EXTENSION_IMPORT",pattern:/from\s+['"][^'"]*\/[^'"]*\.js['"]/,targets:Ke},{type:"URL_IMPORT",pattern:/from\s+['"]https?:\/\//,targets:Ke},{type:"VERSION_SPECIFIER_IMPORT",pattern:/from\s+['"][^'"]*@[\d^~]/,targets:Ke},{type:"REDUNDANT_TB_DECLARATION",pattern:/declare\s+(const|var|let)\s+tb\b/,targets:Je},{type:"CONST_ENUM",pattern:/\bconst\s+enum\b/,targets:Je},{type:"NAMESPACE_DECLARATION",pattern:/\bnamespace\s+\w+/,targets:Je},{type:"COMMONJS_EXPORT_EQUALS",pattern:/\bexport\s*=/,targets:Je},{type:"COMMONJS_IMPORT_EQUALS",pattern:/\bimport\s+\w+\s*=/,targets:Je},{type:"MODULE_DECLARATION",pattern:/\bmodule\s+\w+\s*\{/,targets:Je},{type:"CSS_FILE_IMPORT",pattern:/(?:from|import)\s+['"][^'"]*\.css['"]/,targets:Ke},{type:"NAVIGATION",pattern:/window\.(location\.(reload|assign|replace)\s*\(|open\s*\()/,targets:Ke},{type:"NAVIGATION",pattern:/window\.location(\.href)?\s*=[^=]/,targets:Ke}];function Mo(r,e){if(!r)return[];let{target:t}=e,s=[],n=r.split(`
778
+ `);for(let i=0;i<n.length;i++){let o=n[i],a=i+1;for(let c of Tb)c.targets.includes(t)&&c.pattern.test(o)&&s.push({type:c.type,severity:"error",message:Ab(c.type,a),lineNumber:a,lineContent:o})}return s}function Ab(r,e){return r==="URL_IMPORT"?`Direct URL imports are not supported! Found on line ${e}.
779
+
780
+ **CRITICAL**: Import packages by name only. Do NOT use CDN URLs:
781
+
782
+ \u2705 CORRECT - Package name only:
783
+ \`\`\`typescript
784
+ import React from "react"
785
+ import _ from "lodash"
786
+ \`\`\`
787
+
788
+ \u274C WRONG - Direct URL imports:
789
+ \`\`\`typescript
790
+ import React from "https://esm.sh/react"
791
+ import _ from "https://cdn.skypack.dev/lodash"
792
+ import x from "https://unpkg.com/some-package"
793
+ \`\`\`
794
+
795
+ **Fix:** Use the package name only. Package resolution is handled automatically.`:r==="VERSION_SPECIFIER_IMPORT"?`Version specifiers in imports are not supported! Found on line ${e}.
796
+
797
+ **CRITICAL**: Import packages by name only. Do NOT include version numbers:
798
+
799
+ \u2705 CORRECT - Package name only:
800
+ \`\`\`typescript
801
+ import React from "react"
802
+ import _ from "lodash"
803
+ import { something } from "@scope/package"
804
+ \`\`\`
805
+
806
+ \u274C WRONG - Version in import path:
807
+ \`\`\`typescript
808
+ import React from "react@18.2.0"
809
+ import _ from "lodash@^4.17.0"
810
+ import { x } from "@scope/package@1.0.0"
811
+ \`\`\`
812
+
813
+ **Fix:** Remove the version specifier (everything from @ onwards). Versions are managed separately.`:r==="JS_EXTENSION_IMPORT"?`Deep import paths must NOT include \`.js\` extension! Found on line ${e}.
814
+
815
+ **CRITICAL**: Remove the \`.js\` extension from deep import paths (paths with \`/\`):
816
+
817
+ \u2705 CORRECT - No extension in deep import:
818
+ \`\`\`typescript
819
+ import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"
820
+ \`\`\`
821
+
822
+ \u274C WRONG - Has .js extension in deep import:
823
+ \`\`\`typescript
824
+ import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"
825
+ \`\`\`
826
+
827
+ **Note:** Package names that literally end with ".js" (like \`decimal.js\`) are fine - this rule only applies to file paths within packages.
828
+
829
+ **Fix:** Remove \`.js\` from the end of the import path.`:r==="DYNAMIC_IMPORT"?`Dynamic imports are not supported! You used \`import('...')\` on line ${e}.
830
+
831
+ **CRITICAL**: All imports MUST be at the TOP of the file using standard ES6 import syntax:
832
+
833
+ \u2705 CORRECT - Static import at top of file:
834
+ \`\`\`typescript
835
+ import { createRoot } from 'react-dom/client'
836
+
837
+ // Later in code...
838
+ const root = createRoot(rootElement)
839
+ root.render(<App />)
840
+ \`\`\`
841
+
842
+ \u274C WRONG - Dynamic import() in code:
843
+ \`\`\`typescript
844
+ // This is completely invalid!
845
+ import('react-dom/client').then(({ createRoot }) => {
846
+ const root = createRoot(rootElement)
847
+ root.render(<App />)
848
+ })
849
+ \`\`\`
850
+
851
+ **Fix:** Move ALL import statements to the top of the file using standard \`import\` syntax.`:r==="REDUNDANT_TB_DECLARATION"?`Redundant \`declare const tb\` found on line ${e}.
852
+ The \`tb\` global is already provided by the environment. Remove this declaration.`:r==="CONST_ENUM"?`\`const enum\` is not supported! Found on line ${e}.
853
+
854
+ **Fix:** Use a regular \`enum\` or an object with \`as const\`:
855
+
856
+ \`\`\`typescript
857
+ // Option 1: Regular enum
858
+ enum Direction { Up, Down, Left, Right }
859
+
860
+ // Option 2: Object literal (often better)
861
+ const Direction = { Up: 0, Down: 1, Left: 2, Right: 3 } as const
862
+ \`\`\`
863
+
864
+ \`const enum\` requires the full TypeScript compiler to inline values at compile time. Regular \`enum\` and object literals work identically at runtime.`:r==="NAMESPACE_DECLARATION"?`TypeScript \`namespace\` is not supported! Found on line ${e}.
865
+
866
+ **Fix:** Use ES modules instead:
867
+
868
+ \`\`\`typescript
869
+ // Instead of: namespace MyLib { export function foo() {} }
870
+ // Just use top-level exports:
871
+ export function foo() {}
872
+ \`\`\`
873
+
874
+ Namespaces are a legacy TypeScript pattern. Use standard ES module imports/exports instead.`:r==="COMMONJS_EXPORT_EQUALS"?`\`export =\` syntax is not supported! Found on line ${e}.
875
+
876
+ **Fix:** Use ES module \`export default\` instead:
877
+
878
+ \`\`\`typescript
879
+ // Instead of: export = myValue
880
+ export default myValue
881
+ \`\`\``:r==="COMMONJS_IMPORT_EQUALS"?`\`import x =\` syntax is not supported! Found on line ${e}.
882
+
883
+ **Fix:** Use ES module \`import\` instead:
884
+
885
+ \`\`\`typescript
886
+ // Instead of: import x = require('module')
887
+ import x from 'module'
888
+ \`\`\``:r==="MODULE_DECLARATION"?`TypeScript \`module\` declarations are not supported! Found on line ${e}.
889
+
890
+ **Fix:** Use ES modules instead. The \`module Foo {}\` syntax is a legacy TypeScript pattern \u2014 use standard imports/exports.`:r==="CSS_FILE_IMPORT"?`Importing CSS files is not supported! Found on line ${e}.
891
+
892
+ **CRITICAL**: CSS imports don't work here. The styles.css block is already applied to the page automatically.
893
+
894
+ \u2705 CORRECT - Just remove the import. CSS from the styles.css block is already applied to the page.
895
+
896
+ \u274C WRONG - Importing CSS as a file:
897
+ \`\`\`typescript
898
+ import "./styles.css"
899
+ import styles from "./styles.css"
900
+ \`\`\`
901
+
902
+ **Fix:** Delete the CSS import line entirely. Write styles in the styles.css block \u2014 they are loaded automatically.`:r==="NAVIGATION"?`Navigation is forbidden in this sandboxed environment! Found on line ${e}.
903
+
904
+ **CRITICAL**: \`window.location\` changes, \`window.open()\`, and page reloads will break the app.
905
+
906
+ \u2705 CORRECT - Reset application state programmatically:
907
+ \`\`\`typescript
908
+ setState(initialState)
909
+ \`\`\`
910
+
911
+ \u274C WRONG - Browser navigation:
912
+ \`\`\`typescript
913
+ window.location.reload()
914
+ window.location.href = "..."
915
+ window.open("...")
916
+ \`\`\`
917
+
918
+ **Fix:** Remove the navigation call. To "restart", reset your state variables instead.`:`CommonJS \`require()\` is not supported! Found on line ${e}.
919
+
920
+ **CRITICAL**: Use ES6 \`import\` statements at the TOP of the file:
921
+
922
+ \u2705 CORRECT - ES6 import:
923
+ \`\`\`typescript
924
+ import { something } from 'module-name'
925
+ \`\`\`
926
+
927
+ \u274C WRONG - CommonJS require:
928
+ \`\`\`typescript
929
+ const something = require('module-name') // NOT SUPPORTED!
930
+ \`\`\`
931
+
932
+ **Fix:** Replace all \`require()\` calls with ES6 \`import\` statements at the top of the file.`}async function lf(r,e){let{bulb:t,config:s}=await pe(r);!t.code&&!t.server&&(console.error("Bulb has neither **code.tsx** nor **server.ts**; nothing to check."),process.exit(1));let n=!1;t.code&&(n=af(Mo(t.code,{target:"client"}),"client")||n),t.server&&(n=af(Mo(t.server,{target:"server"}),"server")||n);let i=[];if(t.code){let{dir:o}=await nf({code:t.code,dependencies:s.dependencies??{},jsxImportSource:s.ts?.jsxImportSource,emitKey:r,local:e});i.push({role:"client",dir:o})}if(t.server){let{dir:o}=await of({server:t.server,bulbDir:cf.dirname(r),emitKey:r,local:e?{name:e.name,typesAbs:e.typesAbs}:void 0,dependencies:s.dependencies});i.push({role:"server",dir:o})}for(let{role:o,dir:a}of i){let{stdout:c,exitCode:l}=await Ob(a);for(let f of c.split(/\r?\n/))f.trim()&&console.log(`${o} ${f}`);l!==0&&(n=!0)}n&&process.exit(1)}function af(r,e){for(let t of r)for(let s of t.message.split(`
933
+ `))console.log(`${e} ${s}`);return r.length>0}function Ob(r){return new Promise(e=>{let t=Pb("npx",["tsc","--noEmit"],{cwd:r,shell:!0}),s="";t.stdout?.on("data",n=>{s+=n.toString()}),t.stderr?.on("data",n=>{s+=n.toString()}),t.on("close",n=>e({stdout:s,exitCode:n??1}))})}en();vr();async function uf(r,e){let{bulb:t}=await pe(r),s=yt(t);if(Ue(r)){console.log("remembered-trusted \u2014 runs with filesystem / AI / server.ts automatically (`typebulb untrust` to revoke)."),s&&console.log(` (it uses ${s})`);return}s?(console.log(`This bulb appears to use ${s}; it runs Restricted unless you grant trust:`),console.log(` ${e}`)):console.log("No privileged capability detected \u2014 runs Restricted by default. (A clean scan is a hint, not a guarantee.)")}vr();import*as Sr from"path";async function ff(r,e){if(!r){e||(console.error("Usage: typebulb untrust <file.bulb.md>"),process.exit(1));let s=_o();if(!s.length){console.log("No bulbs are remembered as trusted.");return}console.log("Trusted bulbs (run with fs/AI/server.ts without --trust):");for(let n of s)console.log(` ${n}`);return}let t=Sr.resolve(r);t.endsWith(".bulb.md")||(console.error("File must have .bulb.md extension"),process.exit(1)),ht(t,e),console.log(e?`Trusted ${Sr.basename(t)} \u2014 runs with fs / AI / server.ts (no --trust needed).`:`Untrusted ${Sr.basename(t)} \u2014 runs Restricted.`),console.log(` ${t}`)}wr();Ve();import{readFileSync as qb,existsSync as Bb}from"fs";import*as We from"path";import{fileURLToPath as jb}from"url";function wf(){let r=We.dirname(jb(import.meta.url));for(;!Bb(We.join(r,"package.json"));){let e=We.dirname(r);if(e===r)break;r=e}return r}function nn(){return We.join(wf(),"README.md")}function qo(){return We.join(wf(),"description.md")}function Fb(r){return`---
633
934
  name: typebulb
634
- description: ${Oi(xr(),"utf8").trim().replace(/\s+/g," ")}
935
+ description: ${qb(qo(),"utf8").trim().replace(/\s+/g," ")}
635
936
  version: ${r}
636
- ---`}function Bi(r){return`> Generated from typebulb v${r}. If \`npx typebulb --version\` reports a newer version, re-run \`npx typebulb skill\` to refresh this file.`}function es(r,e){return`${Mi(e)}
937
+ ---`}function Ub(r){return`> Generated from typebulb v${r}. If \`npx typebulb --version\` reports a newer version, re-run \`npx typebulb skill\` to refresh this file.`}function vf(r,e){return`${Fb(e)}
637
938
 
638
- ${Bi(e)}
939
+ ${Ub(e)}
639
940
 
640
941
  ${r.trim()}
641
- `}async function Sr(r,e){let t=_(r);return(await C()).find(n=>n.cwd!=null&&_(n.cwd)===t&&(e?n.agent===e:n.agent!=null))}async function ts(){let r=await Sr(process.cwd()),e=r?.agent,n=[e?`Viewer '${e}' is up at ${r?.url} \u2014 the embedded bulbs render live there.`:"No viewer is running \u2014 to render embedded bulbs live inline, start one with `npx typebulb agent:claude --no-open`; it prints a localhost link that opens the viewer.","","Agents: Read the bulb-authoring skill before writing a bulb \u2014 get it assembled as one SKILL.md with `npx typebulb skill`, or read its parts directly:",` - description: ${xr()}`,` - skill body (the README is the skill): ${jt()}`];process.stdout.write(n.join(`
942
+ `}async function Bo(r,e){let t=F(r);return(await K()).find(s=>s.cwd!=null&&F(s.cwd)===t&&(e?s.agent===e:s.agent!=null))}async function Sf(){let r=await Bo(process.cwd()),e=r?.agent,s=[e?`Viewer '${e}' is up at ${r?.url} \u2014 the embedded bulbs render live there.`:"No viewer is running \u2014 to render embedded bulbs live inline, start one with `npx typebulb agent:claude --no-open`; it prints a localhost link that opens the viewer.","","Agents: Read the bulb-authoring skill before writing a bulb \u2014 get it assembled as one SKILL.md with `npx typebulb skill`, or read its parts directly:",` - description: ${qo()}`,` - skill body (the README is the skill): ${nn()}`];process.stdout.write(s.join(`
642
943
  `)+`
643
- `)}import{readFileSync as ji,existsSync as Fi}from"fs";import*as Y from"path";function Li(r){return[...r?[`.env.${r}.local`,`.env.${r}`]:[],".env.local",".env"]}function ne(r,e=process.cwd()){let t={},n=[];for(let s of Li(r)){let o;try{o=ji(Y.resolve(e,s),"utf-8")}catch{continue}n.push(s);for(let[i,a]of Ni(o))process.env[i]===void 0&&(process.env[i]=a,t[i]=s)}return{mode:r,sources:t,loaded:n}}function*Ni(r){for(let e of r.split(`
644
- `)){let t=e.trim();if(!t||t.startsWith("#"))continue;let n=t.indexOf("=");if(n===-1)continue;let s=t.slice(0,n).trim(),o=t.slice(n+1).trim();(o.startsWith('"')&&o.endsWith('"')||o.startsWith("'")&&o.endsWith("'"))&&(o=o.slice(1,-1)),yield[s,o]}}function Ui(r){let e=new Set,t=/process\.env\.([A-Za-z_$][\w$]*)|process\.env\[\s*['"]([^'"]+)['"]\s*\]/g;for(let n;n=t.exec(r);)e.add(n[1]??n[2]);return[...e]}function Ae(r,e,t){let{sources:n,mode:s,loaded:o}=r,i=process.cwd(),a=Y.dirname(e),c=`(mode: ${s??"none"})`,l=t?Ui(t):[],d=l.filter(m=>n[m]).map(m=>`${m} \u2190 ${n[m]}`);d.length?console.log(`env: ${d.join(", ")} ${c}`):o.length&&console.log(`env: loaded ${o.join(", ")} ${c}`),s&&!o.some(m=>m===`.env.${s}`||m===`.env.${s}.local`)&&console.log(`env: mode=${s} \u2014 no .env.${s} found; using .env`);let u=Y.resolve(a)!==Y.resolve(i);if(u)for(let m of[".env.local",".env"])Fi(Y.join(a,m))&&console.log(`env: ${Y.join(a,m)} present but not loaded (cwd is ${i})`);let f=l.filter(m=>process.env[m]===void 0);if(f.length){let m=u?` \u2014 try running from ${a}`:"";console.log(`env: server.ts reads ${f.join(", ")} but ${f.length>1?"they are":"it's"} unset${m}`)}}var $e={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"},Wi="https://api.typebulb.com/api/models",Ji=1440*60*1e3,Ce=null;async function Ft(){if(!Ce||Date.now()-Ce.fetchedAt>Ji){let r=await fetch(Wi);if(!r.ok)return Ce?rs(Ce.models):[];Ce={models:await r.json(),fetchedAt:Date.now()}}return rs(Ce.models)}function rs(r){let e=new Set(Object.entries($e).filter(([,t])=>!!process.env[t]).map(([t])=>t));return r.filter(t=>e.has(t.provider))}function ns(){return Object.values($e).some(r=>!!process.env[r])}function ss(r,e,t){let n=Math.max(...r.map(i=>i.name.length)),s=Math.max(...r.map(i=>i.friendlyName.length)),o=["Models available to tb.ai (filtered by your .env keys):",""];for(let i of r)o.push(` ${i.name.padEnd(n)} ${i.friendlyName.padEnd(s)} (${i.provider})`);return o.push("","Pass an id as the `model` in tb.ai({ provider, model })."),e&&t&&o.push(`Default (from .env): ${e} / ${t}`),o.join(`
645
- `)}async function os(r){if(ne(r),!ns()){console.log("No AI provider keys found in this directory's .env. Set one of these to use tb.ai:");for(let[t,n]of Object.entries($e))console.log(` ${n.padEnd(20)} (${t})`);console.log("Then re-run `typebulb models`.");return}let e=await Ft();if(e.length===0){console.log("Couldn't fetch the model catalog (offline?). tb.ai still works with any valid provider/model id for your keys.");return}console.log(ss(e,process.env.TB_AI_PROVIDER,process.env.TB_AI_MODEL))}import*as is from"fs/promises";async function as(r){let e=jt(),t;try{t=await is.readFile(e,"utf8")}catch{console.error(`Could not read the bundled README (expected at ${e}).`),process.exit(1)}process.stdout.write(es(t,r))}Ke();de();import*as Pr from"path";function Hi(r,e,t){if(/^\d+$/.test(e))return r.find(s=>s.pid===parseInt(e,10));let n=r.filter(s=>s.agent===e);return n.length?(t?n.find(o=>o.cwd&&_(o.cwd)===_(t)):void 0)??n[0]:r.find(s=>_(s.file)===_(e))}function cs(r,e){for(let t of r)e(` ${t.url} pid ${t.pid} ${t.trust?"trusted":"restricted"} ${t.file}`)}function ls(r,e){if(!r.length){console.log("No running bulb servers.");return}console.log("Running bulb servers:"),cs(r,t=>console.log(t)),console.log(`
646
- `+e)}function ds(r,e,t,n){let s=Hi(r,e,n);if(s)return s;console.error(`No running server for '${e}'.`),r.length?(console.error(`Running servers (try \`typebulb ${t} <file|pid>\`):`),cs(r,o=>console.error(o))):console.error("No bulb servers are running."),process.exit(1)}async function us(r,e){if(!r){ls(await C(process.cwd()),"Run `typebulb logs <file|pid>` to print one server's console.");return}let t=ds(await C(),r,"logs",process.cwd()),n=ke(t.pid),s=n.text;if(e.lines&&e.lines>0){let o=s.split(`
647
- `);o.length&&o[o.length-1]===""&&o.pop(),s=o.slice(-e.lines).join(`
648
- `)}if(process.stdout.write(s),s&&!s.endsWith(`
944
+ `)}import{readFileSync as Kb,existsSync as Jb}from"fs";import*as me from"path";function Vb(r){return[...r?[`.env.${r}.local`,`.env.${r}`]:[],".env.local",".env"]}function Ie(r,e=process.cwd()){let t={},s=[];for(let n of Vb(r)){let i;try{i=Kb(me.resolve(e,n),"utf-8")}catch{continue}s.push(n);for(let[o,a]of Wb(i))process.env[o]===void 0&&(process.env[o]=a,t[o]=n)}return{mode:r,sources:t,loaded:s}}function*Wb(r){for(let e of r.split(`
945
+ `)){let t=e.trim();if(!t||t.startsWith("#"))continue;let s=t.indexOf("=");if(s===-1)continue;let n=t.slice(0,s).trim(),i=t.slice(s+1).trim();(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),yield[n,i]}}function Yb(r){let e=new Set,t=/process\.env\.([A-Za-z_$][\w$]*)|process\.env\[\s*['"]([^'"]+)['"]\s*\]/g;for(let s;s=t.exec(r);)e.add(s[1]??s[2]);return[...e]}function vt(r,e,t){let{sources:s,mode:n,loaded:i}=r,o=process.cwd(),a=me.dirname(e),c=`(mode: ${n??"none"})`,l=t?Yb(t):[],f=l.filter(h=>s[h]).map(h=>`${h} \u2190 ${s[h]}`);f.length?console.log(`env: ${f.join(", ")} ${c}`):i.length&&console.log(`env: loaded ${i.join(", ")} ${c}`),n&&!i.some(h=>h===`.env.${n}`||h===`.env.${n}.local`)&&console.log(`env: mode=${n} \u2014 no .env.${n} found; using .env`);let u=me.resolve(a)!==me.resolve(o);if(u)for(let h of[".env.local",".env"])Jb(me.join(a,h))&&console.log(`env: ${me.join(a,h)} present but not loaded (cwd is ${o})`);let d=l.filter(h=>process.env[h]===void 0);if(d.length){let h=u?` \u2014 try running from ${a}`:"";console.log(`env: server.ts reads ${d.join(", ")} but ${d.length>1?"they are":"it's"} unset${h}`)}}var kt={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"},Hb="https://api.typebulb.com/api/models",Gb=1440*60*1e3,St=null;async function on(){if(!St||Date.now()-St.fetchedAt>Gb){let r=await fetch(Hb);if(!r.ok)return St?kf(St.models):[];St={models:await r.json(),fetchedAt:Date.now()}}return kf(St.models)}function kf(r){let e=new Set(Object.entries(kt).filter(([,t])=>!!process.env[t]).map(([t])=>t));return r.filter(t=>e.has(t.provider))}function xf(){return Object.values(kt).some(r=>!!process.env[r])}function Ef(r,e,t){let s=Math.max(...r.map(o=>o.name.length)),n=Math.max(...r.map(o=>o.friendlyName.length)),i=["Models available to tb.ai (filtered by your .env keys):",""];for(let o of r)i.push(` ${o.name.padEnd(s)} ${o.friendlyName.padEnd(n)} (${o.provider})`);return i.push("","Pass an id as the `model` in tb.ai({ provider, model })."),e&&t&&i.push(`Default (from .env): ${e} / ${t}`),i.join(`
946
+ `)}async function Tf(r){if(Ie(r),!xf()){console.log("No AI provider keys found in this directory's .env. Set one of these to use tb.ai:");for(let[t,s]of Object.entries(kt))console.log(` ${s.padEnd(20)} (${t})`);console.log("Then re-run `typebulb models`.");return}let e=await on();if(e.length===0){console.log("Couldn't fetch the model catalog (offline?). tb.ai still works with any valid provider/model id for your keys.");return}console.log(Ef(e,process.env.TB_AI_PROVIDER,process.env.TB_AI_MODEL))}import*as Af from"fs/promises";async function Pf(r){let e=nn(),t;try{t=await Af.readFile(e,"utf8")}catch{console.error(`Could not read the bundled README (expected at ${e}).`),process.exit(1)}process.stdout.write(vf(t,r))}wr();Ve();import*as jo from"path";function zb(r,e,t){if(/^\d+$/.test(e))return r.find(n=>n.pid===parseInt(e,10));let s=r.filter(n=>n.agent===e);return s.length?(t?s.find(i=>i.cwd&&F(i.cwd)===F(t)):void 0)??s[0]:r.find(n=>F(n.file)===F(e))}function Of(r,e){for(let t of r)e(` ${t.url} pid ${t.pid} ${t.trust?"trusted":"restricted"} ${t.file}`)}function Nf(r,e){if(!r.length){console.log("No running bulb servers.");return}console.log("Running bulb servers:"),Of(r,t=>console.log(t)),console.log(`
947
+ `+e)}function Cf(r,e,t,s){let n=zb(r,e,s);if(n)return n;console.error(`No running server for '${e}'.`),r.length?(console.error(`Running servers (try \`typebulb ${t} <file|pid>\`):`),Of(r,i=>console.error(i))):console.error("No bulb servers are running."),process.exit(1)}async function If(r,e){if(!r){Nf(await K(process.cwd()),"Run `typebulb logs <file|pid>` to print one server's console.");return}let t=Cf(await K(),r,"logs",process.cwd()),s=bt(t.pid),n=s.text;if(e.lines&&e.lines>0){let i=n.split(`
948
+ `);i.length&&i[i.length-1]===""&&i.pop(),n=i.slice(-e.lines).join(`
949
+ `)}if(process.stdout.write(n),n&&!n.endsWith(`
649
950
  `)&&process.stdout.write(`
650
- `),e.follow){let o=n.offset,i=setInterval(()=>{let c=ke(t.pid,o);o=c.offset,c.text&&process.stdout.write(c.text)},500),a=()=>{clearInterval(i),process.exit(0)};process.on("SIGINT",a),process.on("SIGTERM",a),await new Promise(()=>{})}}async function ps(r){if(!r){ls(await C(process.cwd()),"Run `typebulb stop <file|pid>` to stop one.");return}let e=ds(await C(),r,"stop",process.cwd());await Te(e.pid),console.log(`Stopped ${e.agent??Pr.basename(e.file)} (pid ${e.pid}, ${e.url}).`)}async function fs(r){let e=process.cwd(),t=r==="global"?await C():r==="bulbs"?await C(e):(await C()).filter(s=>s.agent!=null&&s.cwd!=null&&_(s.cwd)===_(e)),n=r==="global"?"server":r==="agent"?"viewer":"bulb";if(!t.length){console.log(r==="global"?"No running bulb servers.":`No running ${n}s for this project.`);return}await Promise.all(t.map(s=>Te(s.pid))),console.log(`Stopped ${t.length} ${n}${t.length===1?"":"s"}:`);for(let s of t)console.log(` ${s.url} pid ${s.pid} ${s.agent??Pr.basename(s.file)}`)}import*as Ss from"fs/promises";import*as Ie from"path";import{EventEmitter as xs}from"events";Ot();import{Hono as zi}from"hono";import{serve as qi}from"@hono/node-server";import{streamSSE as Gi}from"hono/streaming";import*as pe from"fs/promises";import*as H from"path";var L=class extends Error{constructor(e,t="unknown",n=!1){super(e),this.code=t,this.retryable=n}},J=class{getPath(e,t){return this.path}parseStreamChunk(e){return this.checkAndThrowError(e),this.parseProviderStreamChunk(e)}isReasoningEnabled(e){return e?.reasoning!==void 0&&e.reasoning>0}extractSystemMessages(e,t=`
951
+ `),e.follow){let i=s.offset,o=setInterval(()=>{let c=bt(t.pid,i);i=c.offset,c.text&&process.stdout.write(c.text)},500),a=()=>{clearInterval(o),process.exit(0)};process.on("SIGINT",a),process.on("SIGTERM",a),await new Promise(()=>{})}}async function Rf(r){if(!r){Nf(await K(process.cwd()),"Run `typebulb stop <file|pid>` to stop one.");return}let e=Cf(await K(),r,"stop",process.cwd());await wt(e.pid),console.log(`Stopped ${e.agent??jo.basename(e.file)} (pid ${e.pid}, ${e.url}).`)}async function _f(r){let e=process.cwd(),t=r==="global"?await K():r==="bulbs"?await K(e):(await K()).filter(n=>n.agent!=null&&n.cwd!=null&&F(n.cwd)===F(e)),s=r==="global"?"server":r==="agent"?"viewer":"bulb";if(!t.length){console.log(r==="global"?"No running bulb servers.":`No running ${s}s for this project.`);return}await Promise.all(t.map(n=>wt(n.pid))),console.log(`Stopped ${t.length} ${s}${t.length===1?"":"s"}:`);for(let n of t)console.log(` ${n.url} pid ${n.pid} ${n.agent??jo.basename(n.file)}`)}import*as Uf from"fs/promises";import*as xt from"path";import{EventEmitter as Ff}from"events";en();import{Hono as Xb}from"hono";import{serve as Zb}from"@hono/node-server";import{streamSSE as ew}from"hono/streaming";import*as He from"fs/promises";import*as ie from"path";var X=class extends Error{constructor(e,t="unknown",s=!1){super(e),this.code=t,this.retryable=s}},ne=class{getPath(e,t){return this.path}parseStreamChunk(e){return this.checkAndThrowError(e),this.parseProviderStreamChunk(e)}isReasoningEnabled(e){return e?.reasoning!==void 0&&e.reasoning>0}extractSystemMessages(e,t=`
651
952
 
652
- `){let n=e.filter(s=>s.role==="system").map(s=>s.content);return{system:n.length?n.join(t):void 0,conversationMessages:e.filter(s=>s.role!=="system")}}parseJsonError(e,t,n=!1){if(!e)return{message:`HTTP ${t}`};try{let s=JSON.parse(e);if(s.error&&typeof s.error=="object"){let o={message:s.error.message||`HTTP ${t}`,type:s.error.type};return n&&(o.code=s.error.code),o}return s.message?{message:s.message}:{message:e}}catch{return{message:e}}}checkAndThrowError(e){if("type"in e&&e.type==="error"&&"message"in e){let t=e.message,n=e.code||"unknown",s=!!e.retryable;throw new L(t,n,s)}if("error"in e&&e.error){let t=this.extractErrorMessage(e.error);throw new L(t)}}extractErrorMessage(e){if(typeof e=="string")try{let t=JSON.parse(e);return t.error?.message||t.message||e}catch{return e}return typeof e=="object"&&e!==null?e.message||JSON.stringify(e):`${this.providerName} returned an error`}};var tt=class extends J{constructor(){super(...arguments),this.providerName="Anthropic",this.defaultBaseUrl="https://api.anthropic.com",this.path="/v1/messages"}buildHeaders(e){return{"x-api-key":e,"anthropic-version":"2023-06-01","Content-Type":"application/json",Accept:"application/json"}}buildPayload(e,t,n,s){let{system:o,conversationMessages:i}=this.extractSystemMessages(e),a={model:t,max_tokens:this.getMaxTokens(t),messages:this.withLastMessageCached(i),stream:s};if(n?.webSearch!==!1&&(a.tools=[{type:"web_search_20250305",name:"web_search"}]),o&&(a.system=[{type:"text",text:o,cache_control:{type:"ephemeral"}}]),this.isReasoningEnabled(n)){let c=n.reasoning;if(this.isModernModel(t)){let l={0:"low",1:"low",2:"medium",3:"high"};a.thinking={type:"adaptive"},a.output_config={effort:l[c]}}else{let l={0:0,1:2048,2:4096,3:8192};a.thinking={type:"enabled",budget_tokens:l[c]}}}return a}parseError(e,t){return this.parseJsonError(e,t)}parseNonStreamingResponse(e){if(!this.isAnthropicResponse(e))return{text:""};let t=e.content.filter(s=>s.type==="text").map(s=>s.text).join(""),n=e.content.filter(s=>s.type==="thinking").map(s=>s.thinking).join(`
953
+ `){let s=e.filter(n=>n.role==="system").map(n=>n.content);return{system:s.length?s.join(t):void 0,conversationMessages:e.filter(n=>n.role!=="system")}}parseJsonError(e,t,s=!1){if(!e)return{message:`HTTP ${t}`};try{let n=JSON.parse(e);if(n.error&&typeof n.error=="object"){let i={message:n.error.message||`HTTP ${t}`,type:n.error.type};return s&&(i.code=n.error.code),i}return n.message?{message:n.message}:{message:e}}catch{return{message:e}}}checkAndThrowError(e){if(typeof e!="object"||e===null)return;let t=e;if(t.type==="error"&&"message"in t){let s=t.code||"unknown";throw new X(t.message,s,!!t.retryable)}if(t.error)throw new X(this.extractErrorMessage(t.error))}extractErrorMessage(e){if(typeof e=="string")try{let t=JSON.parse(e);return t.error?.message||t.message||e}catch{return e}return typeof e=="object"&&e!==null?e.message||JSON.stringify(e):`${this.providerName} returned an error`}};var an=class extends ne{constructor(){super(...arguments),this.providerName="OpenAI",this.defaultBaseUrl="https://api.openai.com",this.path="/v1/responses",this.effortMap={0:"minimal",1:"low",2:"medium",3:"high"}}buildHeaders(e){return{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"}}buildPayload(e,t,s,n){let i=this.convertMessagesToInput(e),o={model:t,input:i,stream:n};return s?.webSearch!==!1&&(o.tools=[{type:"web_search"}]),this.isReasoningEnabled(s)&&(o.reasoning={effort:this.effortMap[s.reasoning],summary:"auto"}),o}parseError(e,t){return this.parseJsonError(e,t,!0)}parseNonStreamingResponse(e){if(!this.isResponsesApiResponse(e))return{text:""};let t=e.output_text||"",s;if(e.output&&Array.isArray(e.output))for(let n of e.output)n.type==="reasoning"&&n.summary&&(s=n.summary.map(i=>i.text).join(`
954
+ `)),!t&&n.type==="message"&&n.content&&(t=n.content.filter(i=>i.type==="output_text").map(i=>i.text).join(""));return{text:t,reasoning:s}}parseProviderStreamChunk(e){if(!this.isResponsesApiEvent(e))return null;switch(e.type){case"error":return null;case"response.failed":{let n=e.response?.error,i=n?.message||"Response failed",o=n?.code==="insufficient_quota"||n?.code==="rate_limit_exceeded";throw new X(i,o?"rate_limit":"unknown",o)}case"response.output_text.delta":return{text:e.delta};case"response.reasoning_summary_text.delta":return{reasoning:e.delta};case"response.created":case"response.in_progress":case"response.output_item.added":case"response.output_item.done":case"response.content_part.added":case"response.content_part.done":case"response.output_text.done":case"response.output_text.annotation.added":case"response.reasoning_summary_text.done":case"response.completed":case"response.web_search_call.in_progress":case"response.web_search_call.searching":case"response.web_search_call.completed":return null;default:return null}}convertMessagesToInput(e){return e.map(t=>t.role==="system"?`System: ${t.content}`:t.role==="user"?`User: ${t.content}`:t.role==="assistant"?`Assistant: ${t.content}`:t.content).join(`
653
955
 
654
- `);return{text:t,reasoning:n||void 0}}parseProviderStreamChunk(e){if(!("type"in e))return null;switch(e.type){case"content_block_delta":return e.delta.type==="text_delta"?{text:e.delta.text||""}:e.delta.type==="thinking_delta"?{reasoning:e.delta.thinking||""}:null;case"message_start":case"content_block_start":case"content_block_stop":case"message_delta":case"message_stop":case"ping":return null;default:return null}}withLastMessageCached(e){let t=e.length-1;return e.map((n,s)=>s===t?{role:n.role,content:[{type:"text",text:n.content,cache_control:{type:"ephemeral"}}]}:n)}isAnthropicResponse(e){return"content"in e&&Array.isArray(e.content)&&"type"in e&&e.type==="message"}isModernModel(e){let t=e.match(/^claude-\w+-(\d+)-(\d+)/);return!!t&&(+t[1]>4||+t[1]==4&&+t[2]>=6)}getMaxTokens(e){return this.isModernModel(e)?64e3:32e3}};var rt=class extends J{constructor(){super(...arguments),this.providerName="OpenAI",this.defaultBaseUrl="https://api.openai.com",this.path="/v1/responses",this.effortMap={0:"minimal",1:"low",2:"medium",3:"high"}}buildHeaders(e){return{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"}}buildPayload(e,t,n,s){let o=this.convertMessagesToInput(e),i={model:t,input:o,stream:s};return n?.webSearch!==!1&&(i.tools=[{type:"web_search"}]),this.isReasoningEnabled(n)&&(i.reasoning={effort:this.effortMap[n.reasoning],summary:"auto"}),i}parseError(e,t){return this.parseJsonError(e,t,!0)}parseNonStreamingResponse(e){if(!this.isResponsesApiResponse(e))return{text:""};let t=e.output_text||"",n;if(e.output&&Array.isArray(e.output))for(let s of e.output)s.type==="reasoning"&&s.summary&&(n=s.summary.map(o=>o.text).join(`
655
- `)),!t&&s.type==="message"&&s.content&&(t=s.content.filter(o=>o.type==="output_text").map(o=>o.text).join(""));return{text:t,reasoning:n}}parseProviderStreamChunk(e){if(!this.isResponsesApiEvent(e))return null;switch(e.type){case"error":return null;case"response.failed":{let s=e.response?.error,o=s?.message||"Response failed",i=s?.code==="insufficient_quota"||s?.code==="rate_limit_exceeded";throw new L(o,i?"rate_limit":"unknown",i)}case"response.output_text.delta":return{text:e.delta};case"response.reasoning_summary_text.delta":return{reasoning:e.delta};case"response.created":case"response.in_progress":case"response.output_item.added":case"response.output_item.done":case"response.content_part.added":case"response.content_part.done":case"response.output_text.done":case"response.output_text.annotation.added":case"response.reasoning_summary_text.done":case"response.completed":case"response.web_search_call.in_progress":case"response.web_search_call.searching":case"response.web_search_call.completed":return null;default:return null}}convertMessagesToInput(e){return e.map(t=>t.role==="system"?`System: ${t.content}`:t.role==="user"?`User: ${t.content}`:t.role==="assistant"?`Assistant: ${t.content}`:t.content).join(`
956
+ `)}isResponsesApiEvent(e){return typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string"}isResponsesApiResponse(e){return typeof e=="object"&&e!==null&&e.object==="response"}};var cn=class extends ne{constructor(){super(...arguments),this.providerName="OpenRouter",this.defaultBaseUrl="https://openrouter.ai/api",this.path="/api/v1/chat/completions",this.effortMap={0:"low",1:"low",2:"medium",3:"high"}}buildHeaders(e,t){let s={Authorization:`Bearer ${e}`,"x-api-key":e,"Content-Type":"application/json",Accept:"application/json","X-Title":"Typebulb"};return t&&(s["HTTP-Referer"]=t,s.Referer=t,s.Origin=t),s}buildPayload(e,t,s,n){let i={model:t,messages:e,stream:n};return s?.webSearch===!0&&(i.plugins=[{id:"web"}]),this.isReasoningEnabled(s)&&(i.reasoning={effort:this.effortMap[s.reasoning]}),i}parseError(e,t){return this.parseJsonError(e,t,!0)}parseNonStreamingResponse(e){if(!this.hasChoices(e))return{text:""};let t=e,s=t.choices[0],n=s?.message?.content??s?.text??"",i=s?.message?.reasoning??t.reasoning;return{text:n,reasoning:i}}parseProviderStreamChunk(e){if(!this.hasChoices(e))return null;let t=e.choices[0];if(!t)return null;let s=t.delta||t.message;if(!s)return null;let n=s.content||void 0,i=s.reasoning||void 0;return!n&&!i?null:{text:n,reasoning:i}}hasChoices(e){return typeof e=="object"&&e!==null&&"choices"in e&&Array.isArray(e.choices)}};var ln=class extends ne{constructor(){super(...arguments),this.providerName="Anthropic",this.defaultBaseUrl="https://api.anthropic.com",this.path="/v1/messages"}buildHeaders(e){return{"x-api-key":e,"anthropic-version":"2023-06-01","Content-Type":"application/json",Accept:"application/json"}}buildPayload(e,t,s,n){let{system:i,conversationMessages:o}=this.extractSystemMessages(e),a={model:t,max_tokens:this.getMaxTokens(t),messages:this.withLastMessageCached(o),stream:n};if(s?.webSearch!==!1&&(a.tools=[{type:"web_search_20250305",name:"web_search"}]),i&&(a.system=[{type:"text",text:i,cache_control:{type:"ephemeral"}}]),this.isReasoningEnabled(s)){let c=s.reasoning;if(this.isModernModel(t)){let l={0:"low",1:"low",2:"medium",3:"high"};a.thinking={type:"adaptive"},a.output_config={effort:l[c]}}else{let l={0:0,1:2048,2:4096,3:8192};a.thinking={type:"enabled",budget_tokens:l[c]}}}return a}parseError(e,t){return this.parseJsonError(e,t)}parseNonStreamingResponse(e){if(!this.isAnthropicResponse(e))return{text:""};let t=e.content.filter(n=>n.type==="text").map(n=>n.text).join(""),s=e.content.filter(n=>n.type==="thinking").map(n=>n.thinking).join(`
656
957
 
657
- `)}isResponsesApiEvent(e){return"type"in e&&typeof e.type=="string"}isResponsesApiResponse(e){return"object"in e&&e.object==="response"}};var nt=class extends J{constructor(){super(...arguments),this.providerName="Gemini",this.defaultBaseUrl="https://generativelanguage.googleapis.com",this.path="/v1beta/models"}getPath(e,t){return`/v1beta/models/${e}:${t?"streamGenerateContent":"generateContent"}${t?"?alt=sse":""}`}buildHeaders(e){return{"Content-Type":"application/json","x-goog-api-key":e}}buildPayload(e,t,n,s){let{system:o,conversationMessages:i}=this.extractSystemMessages(e,`
658
- `),c={contents:i.map(l=>({role:l.role==="assistant"?"model":"user",parts:[{text:l.content}]}))};return n?.webSearch!==!1&&(c.tools=[{google_search:{}}]),o&&(c.systemInstruction={role:"system",parts:[{text:o}]}),this.isReasoningEnabled(n)&&(c.generationConfig={temperature:.7+n.reasoning*.1}),c}parseError(e,t){if(!e)return{message:`HTTP ${t}`};try{let n=JSON.parse(e),s=Array.isArray(n)?n[0]?.error:n?.error;return s&&typeof s=="object"?{message:(s.message||`HTTP ${t}`).split(`
659
- `)[0],type:s.status,code:s.code?.toString()}:n.message?{message:n.message}:{message:e}}catch{return{message:e}}}parseNonStreamingResponse(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return{text:"",status:"failed",error:"Invalid response format"};let t=this.extractText(e)||"",n=e.candidates?.[0]?.finishReason,s="complete";return n==="MAX_TOKENS"?s="interrupted":(n==="SAFETY"||n==="RECITATION")&&(s="failed"),{text:t,status:s}}parseProviderStreamChunk(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return null;let t=this.extractText(e);return t?{text:t}:null}isGeminiResponse(e){return typeof e=="object"&&e!==null&&"candidates"in e&&Array.isArray(e.candidates)}extractText(e){let t=e.candidates?.[0];if(t?.content?.parts)return t.content.parts.map(n=>n.text).filter(Boolean).join("")}checkGeminiError(e){if(typeof e=="object"&&e!==null&&"error"in e){let t=e.error,n;if(typeof t=="string")n=t;else if(typeof t=="object"&&t!==null){let s=t;n=s.message||s.status||"Gemini returned an error"}else n="Gemini returned an error";throw new L(n)}if(this.isGeminiResponse(e)&&e.promptFeedback?.blockReason){let t=e.promptFeedback.blockReason;throw new L(`Prompt blocked: ${t}`)}}};var st=class extends J{constructor(){super(...arguments),this.providerName="OpenRouter",this.defaultBaseUrl="https://openrouter.ai/api",this.path="/api/v1/chat/completions",this.effortMap={0:"low",1:"low",2:"medium",3:"high"}}buildHeaders(e,t){let n={Authorization:`Bearer ${e}`,"x-api-key":e,"Content-Type":"application/json",Accept:"application/json","X-Title":"Typebulb"};return t&&(n["HTTP-Referer"]=t,n.Referer=t,n.Origin=t),n}buildPayload(e,t,n,s){let o={model:t,messages:e,stream:s};return n?.webSearch===!0&&(o.plugins=[{id:"web"}]),this.isReasoningEnabled(n)&&(o.reasoning={effort:this.effortMap[n.reasoning]}),o}parseError(e,t){return this.parseJsonError(e,t,!0)}parseNonStreamingResponse(e){if(!this.hasChoices(e))return{text:""};let t=e.choices[0],n=t?.message?.content??t?.text??"",s=t?.message?.reasoning??e.reasoning;return{text:n,reasoning:s}}parseProviderStreamChunk(e){if(!this.hasChoices(e))return null;let t=e.choices[0];if(!t)return null;let n=t.delta||t.message;if(!n)return null;let s=n.content||void 0,o=n.reasoning||void 0;return!s&&!o?null:{text:s,reasoning:o}}hasChoices(e){return typeof e=="object"&&e!==null&&"choices"in e&&Array.isArray(e.choices)}};var Vi=new Map([["openai",new rt],["openrouter",new st],["anthropic",new tt],["gemini",new nt]]);function ue(r){let e=Vi.get(r);if(!e)throw new Error(`Unsupported protocol: ${r}`);return e}async function Er(r,e){let t=ue(r.protocol),n=t.getPath(e.model,e.stream),s=new URL(n,r.baseUrl).toString(),o=t.buildHeaders(r.apiKey,e.origin),i=t.buildPayload(e.messages,e.model,{reasoning:e.reasoning,webSearch:e.webSearch},e.stream);return e.modifyPayload?.(i),fetch(s,{method:"POST",headers:o,body:JSON.stringify(i),signal:e.signal})}async function Rr(r,e){let t=ue(e),n=await r.text().catch(()=>""),{message:s}=t.parseError(n,r.status),o=r.status,i="unknown";return o===429?i="rate_limit":o===413&&(i="context_exceeded"),{code:i,message:s,retryable:o===429}}function ms(r){let e=r.indexOf(`\r
958
+ `);return{text:t,reasoning:s||void 0}}parseProviderStreamChunk(e){if(!this.isAnthropicEvent(e))return null;switch(e.type){case"content_block_delta":return e.delta.type==="text_delta"?{text:e.delta.text||""}:e.delta.type==="thinking_delta"?{reasoning:e.delta.thinking||""}:null;case"message_start":case"content_block_start":case"content_block_stop":case"message_delta":case"message_stop":case"ping":return null;default:return null}}withLastMessageCached(e){let t=e.length-1;return e.map((s,n)=>n===t?{role:s.role,content:[{type:"text",text:s.content,cache_control:{type:"ephemeral"}}]}:s)}isAnthropicResponse(e){return typeof e=="object"&&e!==null&&e.type==="message"&&Array.isArray(e.content)}isAnthropicEvent(e){return typeof e=="object"&&e!==null&&"type"in e}isModernModel(e){let t=e.match(/^claude-\w+-(\d+)-(\d+)/);return!!t&&(+t[1]>4||+t[1]==4&&+t[2]>=6)}getMaxTokens(e){return this.isModernModel(e)?64e3:32e3}};var un=class extends ne{constructor(){super(...arguments),this.providerName="Gemini",this.defaultBaseUrl="https://generativelanguage.googleapis.com",this.path="/v1beta/models"}getPath(e,t){return`/v1beta/models/${e}:${t?"streamGenerateContent":"generateContent"}${t?"?alt=sse":""}`}buildHeaders(e){return{"Content-Type":"application/json","x-goog-api-key":e}}buildPayload(e,t,s,n){let{system:i,conversationMessages:o}=this.extractSystemMessages(e,`
959
+ `),c={contents:o.map(l=>({role:l.role==="assistant"?"model":"user",parts:[{text:l.content}]}))};return s?.webSearch!==!1&&(c.tools=[{google_search:{}}]),i&&(c.systemInstruction={role:"system",parts:[{text:i}]}),this.isReasoningEnabled(s)&&(c.generationConfig={temperature:.7+s.reasoning*.1}),c}parseError(e,t){if(!e)return{message:`HTTP ${t}`};try{let s=JSON.parse(e),n=Array.isArray(s)?s[0]?.error:s?.error;return n&&typeof n=="object"?{message:(n.message||`HTTP ${t}`).split(`
960
+ `)[0],type:n.status,code:n.code?.toString()}:s.message?{message:s.message}:{message:e}}catch{return{message:e}}}parseNonStreamingResponse(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return{text:"",status:"failed",error:"Invalid response format"};let t=this.extractText(e)||"",s=e.candidates?.[0]?.finishReason,n="complete";return s==="MAX_TOKENS"?n="interrupted":(s==="SAFETY"||s==="RECITATION")&&(n="failed"),{text:t,status:n}}parseProviderStreamChunk(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return null;let t=this.extractText(e);return t?{text:t}:null}isGeminiResponse(e){return typeof e=="object"&&e!==null&&"candidates"in e&&Array.isArray(e.candidates)}extractText(e){let t=e.candidates?.[0];if(t?.content?.parts)return t.content.parts.map(s=>s.text).filter(Boolean).join("")}checkGeminiError(e){if(typeof e=="object"&&e!==null&&"error"in e){let t=e.error,s;if(typeof t=="string")s=t;else if(typeof t=="object"&&t!==null){let n=t;s=n.message||n.status||"Gemini returned an error"}else s="Gemini returned an error";throw new X(s)}if(this.isGeminiResponse(e)&&e.promptFeedback?.blockReason){let t=e.promptFeedback.blockReason;throw new X(`Prompt blocked: ${t}`)}}};var Qb=new Map([["openai",new an],["openrouter",new cn],["anthropic",new ln],["gemini",new un]]);function Ye(r){let e=Qb.get(r);if(!e)throw new Error(`Unsupported protocol: ${r}`);return e}async function Fo(r,e){let t=Ye(r.protocol),s=t.getPath(e.model,e.stream),n=new URL(s,r.baseUrl).toString(),i=t.buildHeaders(r.apiKey,e.origin),o=t.buildPayload(e.messages,e.model,{reasoning:e.reasoning,webSearch:e.webSearch},e.stream);return e.modifyPayload?.(o),fetch(n,{method:"POST",headers:i,body:JSON.stringify(o),signal:e.signal})}async function Uo(r,e){let t=Ye(e),s=await r.text().catch(()=>""),{message:n}=t.parseError(s,r.status),i=r.status,o="unknown";return i===429?o="rate_limit":i===413&&(o="context_exceeded"),{code:o,message:n,retryable:i===429}}function Lf(r){let e=r.indexOf(`\r
660
961
  \r
661
962
  `),t=r.indexOf(`
662
963
 
663
- `);return e!==-1&&(t===-1||e<t)?{pos:e,len:4}:t!==-1?{pos:t,len:2}:{pos:-1,len:0}}function kr(r){let t=r.split(/\r?\n/).filter(s=>s.startsWith("data:"));if(!t.length)return null;let n=t.map(s=>s.replace(/^data:\s?/,"")).join(`
664
- `).trim();if(!n)return null;if(n==="[DONE]")return"done";try{return JSON.parse(n)}catch{return null}}async function hs(r,e,t){let n=new TextDecoder,s="",o=!1,i=t?new Promise((a,c)=>{t.aborted&&c(new Error("Aborted")),t.addEventListener("abort",()=>c(new Error("Aborted")),{once:!0})}):null;for(;;){let a=i?await Promise.race([r.read(),i]):await r.read(),{done:c,value:l}=a;if(c){if(s.trim()){let f=kr(s);f!==null&&f!=="done"&&e(f)}break}o=!0,s+=n.decode(l,{stream:!0});let{pos:d,len:u}=ms(s);for(;d!==-1;){let f=s.slice(0,d);s=s.slice(d+u);let m=kr(f);if(m==="done"){s="";break}m!==null&&e(m),{pos:d,len:u}=ms(s)}}return{receivedAnyData:o}}async function Tr(r,e){let t=e??(r.headers.get("X-Provider-Protocol")||"openai"),n=ue(t);if(!r.body)throw new Error("Response body is missing");let s=r.body.getReader(),o="";return await hs(s,i=>{let a=n.parseStreamChunk(i);a?.text&&(o+=a.text)}),o}import*as _r from"fs/promises";import*as ot from"path";var Lt=class{async get(e){let t=N(e),n=ot.join(Ge,t+".bin"),s=ot.join(Ge,t+".json");try{let[o,i]=await Promise.all([_r.readFile(n),_r.readFile(s,"utf8")]),a=JSON.parse(i);return{body:o,contentType:a.contentType,cacheControl:a.cacheControl}}catch{return}}async set(e,t){await S();let n=N(e),s=ot.join(Ge,n+".bin"),o=ot.join(Ge,n+".json"),i={url:e,contentType:t.contentType,cacheControl:t.cacheControl};await Promise.all([j(s,t.body),j(o,JSON.stringify(i))])}};de();var ys="127.0.0.1",Ki=new Set(["localhost","127.0.0.1","::1"]);function Yi(r){if(r)try{return new URL(r.includes("://")?r:`http://${r}`).hostname}catch{return}}function gs(r){let e=Yi(r);return!!e&&Ki.has(e)}function Nt(r){return r instanceof Error?r.message:"Unknown error"}async function Ut(r){let{getHtml:e,basePath:t,port:n,reloadEmitter:s,getServerExports:o,localOverride:i,trusted:a=!1,trustHint:c,staticAssets:l}=r,d=new zi;d.use("*",async(p,g)=>{if(!gs(p.req.header("host")))return p.text("Forbidden: untrusted Host",403);await g()}),d.use("*",async(p,g)=>{await g(),p.res.headers.set("Cross-Origin-Opener-Policy","same-origin"),p.res.headers.set("Cross-Origin-Embedder-Policy","credentialless")});let u=["/__fs/*","/__api/*","/__ai"],f=async(p,g)=>{if(!a){let y=new URL(p.req.url).pathname,x=y.startsWith("/__fs")?"the filesystem":y==="/__ai"?"AI (your API keys)":"server-side code (server.ts)";Qn(process.pid,x);let v=c?`
665
- ${c}`:"";return p.text(`Forbidden: this capability requires --trust.${v}`,403)}await g()},m=async(p,g)=>{let y=p.req.header("sec-fetch-site");if(y){if(y==="cross-site")return p.text("Forbidden: cross-site request",403)}else{let x=p.req.header("origin");if(x&&!gs(x))return p.text("Forbidden: cross-origin request",403)}await g()};for(let p of u)d.use(p,f),d.use(p,m);d.use("/__log",m),d.post("/__log",async p=>{try{let{args:g}=await p.req.json();console.log(...g||[])}catch{}return p.json({ok:!0})}),d.get("/",p=>p.html(e())),d.post("/__fs/read",async p=>{try{let{path:g}=await p.req.json(),y=Cr(g,t),x=await pe.readFile(y);return new Response(new Uint8Array(x),{headers:{"Content-Type":"application/octet-stream"}})}catch(g){let y=Nt(g);return p.json({error:y},400)}}),d.post("/__fs/write",async p=>{try{let g=p.req.query("path");if(!g)return p.json({error:"Missing path"},400);let y=Cr(g,t);return await pe.mkdir(H.dirname(y),{recursive:!0}),await pe.writeFile(y,Buffer.from(await p.req.arrayBuffer())),p.json({success:!0})}catch(g){let y=Nt(g);return p.json({error:y},400)}});let h={log:console.log};d.post("/__api/:name",async p=>{try{let g=o?.(),y=p.req.param("name"),x=g?.[y]??h[y];if(!x||typeof x!="function")return p.json({error:`API function '${y}' not found`},404);let{args:v}=await p.req.json(),V=await x(...v||[]);return p.json({result:V})}catch(g){let y=Nt(g);return p.json({error:y},500)}}),d.post("/__ai",async p=>{try{let{messages:g,system:y,reasoning:x,provider:v,model:V,webSearch:se}=await p.req.json();if(!g||!Array.isArray(g)||g.length===0)return p.json({message:"messages array is required",code:"unknown",retryable:!1},400);let Q=Xi(v,V);if(typeof Q=="string")return p.json({message:Q,code:"unknown",retryable:!1},400);let Gt=[...y?[{role:"system",content:y}]:[],...g.map(ct=>({role:ct.role,content:ct.content}))],me=await Er(Q,{model:Q.model,messages:Gt,stream:!0,reasoning:x??0,webSearch:se??!0});if(!me.ok){let ct=await Rr(me,Q.protocol);return p.json(ct,me.status)}let Hr=await Tr(me,Q.protocol);return Hr||console.warn("[tb.ai] Empty response from provider"),p.json({text:Hr})}catch(g){if(g instanceof L)return p.json({message:g.message,code:g.code,retryable:g.retryable},500);let y=Nt(g);return p.json({message:y,code:"unknown",retryable:!1},500)}}),d.get("/__models",async p=>{try{let g=await Ft();return p.json(g)}catch{return p.json([],200)}});let w=["esm.sh","unpkg.com","cdn.jsdelivr.net","cdnjs.cloudflare.com"],D=new Lt;d.get("/proxy/*",async p=>{let g=new URL(p.req.url),x=(g.pathname+g.search).slice(7),v=x.lastIndexOf("https://");return v===-1?p.text("Invalid proxy URL",400):M(p,x.slice(v))}),i&&bs(d,`/local/${i.name}/`,i.serveDir),l&&bs(d,l.mount,l.dir);async function M(p,g){let y;try{y=new URL(g)}catch{return p.text("Invalid URL",400)}if(y.protocol!=="https:")return p.text("HTTPS only",400);if(!w.includes(y.hostname))return p.text("Host not allowed",403);let x=await D.get(g);if(x)return new Response(x.body,{status:200,headers:Ar(x.contentType,x.cacheControl)});try{let v=await fetch(g,{headers:{Accept:p.req.header("Accept")||"*/*"},redirect:"follow"});if(!v.ok)return p.text(`Upstream ${v.status}`,v.status);let V=v.headers.get("Content-Type")||void 0,se=v.headers.get("Cache-Control")||void 0;if(v.body){let[Q,Gt]=v.body.tee();return(async()=>{try{let me=await new Response(Gt).arrayBuffer();await D.set(g,{body:Buffer.from(me),contentType:V,cacheControl:se})}catch{}})(),new Response(Q,{status:v.status,headers:Ar(V,se)})}return new Response(null,{status:v.status,headers:Ar(V,se)})}catch(v){return p.text(`Proxy fetch failed: ${v instanceof Error?v.message:v}`,502)}}s&&d.get("/__reload",p=>Gi(p,async g=>{let y=()=>{g.writeSSE({event:"reload",data:""})};for(s.on("reload",y),g.onAbort(()=>{s.removeListener("reload",y)});;)await g.sleep(3e4)}));let E=/^\/(v\d+\/|stable\/|node\/|gh\/|@[^/]+\/[^@/]+@|[^@/]+@)/;d.notFound(async p=>{if(p.req.method!=="GET")return p.text("Not Found",404);let g=new URL(p.req.url);return E.test(g.pathname)?M(p,"https://esm.sh"+g.pathname+g.search):p.text("Not Found",404)});let T=qi({fetch:d.fetch,port:n,hostname:ys});return{port:n,close:()=>T.close()}}function Xi(r,e){let t=r??process.env.TB_AI_PROVIDER,n=e??process.env.TB_AI_MODEL;if(!t)return"No provider specified. Set TB_AI_PROVIDER in your .env file or pass provider in the tb.ai() call.";if(!n)return"No model specified. Set TB_AI_MODEL in your .env file or pass model in the tb.ai() call.";let s;try{s=ue(t)}catch{return`Unknown provider '${t}'.`}let o=$e[t],i=process.env[o];return i?{apiKey:i,baseUrl:s.defaultBaseUrl,protocol:t,model:n,isFreeModel:!1}:`No API key for '${t}'. Set ${o} in your .env file.`}function Ar(r,e){let t=new Headers;return r&&t.set("Content-Type",r),e&&t.set("Cache-Control",e),t.set("Access-Control-Allow-Origin","*"),t.set("Cross-Origin-Resource-Policy","cross-origin"),t}function bs(r,e,t){r.get(`${e}*`,async n=>{let{pathname:s}=new URL(n.req.url);if(!s.startsWith(e))return n.text("Not Found",404);let o=decodeURIComponent(s.slice(e.length));try{let i=Cr(o,t),a=await pe.readFile(i);return new Response(a,{headers:{"Content-Type":Qi(i)}})}catch{return n.text("Not Found",404)}})}function Qi(r){switch(H.extname(r).toLowerCase()){case".js":case".mjs":return"text/javascript";case".wasm":return"application/wasm";case".json":case".map":return"application/json";default:return"application/octet-stream"}}function Cr(r,e){let t=H.resolve(e,r),n=H.normalize(e),s=H.normalize(t);if(s!==n&&!s.startsWith(n+H.sep))throw new Error("Path traversal detected - access denied");return t}async function it(r){let e=await import("net");return new Promise(t=>{let n=e.createServer();n.listen(r,ys,()=>{let s=n.address(),o=typeof s=="object"&&s?s.port:r;n.close(()=>t(o))}),n.on("error",()=>{t(it(r+1))})})}import ws from"chokidar";var vs={persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50}};function Wt(r){let{bulbPath:e,emitter:t}=r,n=ws.watch(e,vs);return n.on("change",()=>{t.emit("reload")}),()=>n.close()}function Jt(r){let{dir:e,onChange:t,debounceMs:n=150}=r,s,o=ws.watch(e,vs);return o.on("all",()=>{s&&clearTimeout(s),s=setTimeout(t,n)}),()=>{s&&clearTimeout(s),o.close()}}de();async function Ps(r,e,t,n,s){let o=process.cwd(),i=Dt(process.pid),a=e.watch?new xs:void 0,c=ne(e.mode);console.log(`Loading ${Ie.basename(r)}...`);let{html:l,bulb:d,serverExports:u}=await mr(r,e.watch,e.trust,n,s);Ae(c,r,d.server);let f=await it(e.port),m=await Ut({getHtml:()=>l,basePath:o,port:f,reloadEmitter:a,getServerExports:()=>u,localOverride:n?{name:n.name,serveDir:n.serveDir}:void 0,trusted:e.trust,trustHint:t}),h=`http://localhost:${f}`,w=e.trust?void 0:Re(d);await Mt({pid:process.pid,port:f,url:h,file:r,cwd:process.cwd(),startedAt:Date.now(),trust:e.trust,predicted:w}),console.log(`
666
- ${d.name}`),console.log(` ${h}`),f!==e.port&&console.log(` (port ${e.port} was busy)`),e.trust?console.log(" trust: granted (filesystem, AI, server.ts enabled)"):console.log(w?` trust: sandboxed \u2014 this bulb appears to use ${w}; re-run with --trust to enable it:
964
+ `);return e!==-1&&(t===-1||e<t)?{pos:e,len:4}:t!==-1?{pos:t,len:2}:{pos:-1,len:0}}function Ko(r){let t=r.split(/\r?\n/).filter(n=>n.startsWith("data:"));if(!t.length)return null;let s=t.map(n=>n.replace(/^data:\s?/,"")).join(`
965
+ `).trim();if(!s)return null;if(s==="[DONE]")return"done";try{return JSON.parse(s)}catch{return null}}async function $f(r,e,t){let s=new TextDecoder,n="",i=!1,o=t?new Promise((a,c)=>{t.aborted&&c(new Error("Aborted")),t.addEventListener("abort",()=>c(new Error("Aborted")),{once:!0})}):null;for(;;){let a=o?await Promise.race([r.read(),o]):await r.read(),{done:c,value:l}=a;if(c){if(n.trim()){let d=Ko(n);d!==null&&d!=="done"&&e(d)}break}i=!0,n+=s.decode(l,{stream:!0});let{pos:f,len:u}=Lf(n);for(;f!==-1;){let d=n.slice(0,f);n=n.slice(f+u);let h=Ko(d);if(h==="done"){n="";break}h!==null&&e(h),{pos:f,len:u}=Lf(n)}}return{receivedAnyData:i}}async function Jo(r,e){let t=e??(r.headers.get("X-Provider-Protocol")||"openai"),s=Ye(t);if(!r.body)throw new Error("Response body is missing");let n=r.body.getReader(),i="";return await $f(n,o=>{let a=s.parseStreamChunk(o);a?.text&&(i+=a.text)}),i}import*as Vo from"fs/promises";import*as Tr from"path";var fn=class{async get(e){let t=te(e),s=Tr.join(br,t+".bin"),n=Tr.join(br,t+".json");try{let[i,o]=await Promise.all([Vo.readFile(s),Vo.readFile(n,"utf8")]),a=JSON.parse(o);return{body:i,contentType:a.contentType,cacheControl:a.cacheControl}}catch{return}}async set(e,t){await R();let s=te(e),n=Tr.join(br,s+".bin"),i=Tr.join(br,s+".json"),o={url:e,contentType:t.contentType,cacheControl:t.cacheControl};await Promise.all([z(n,t.body),z(i,JSON.stringify(o))])}};Ve();var qf="127.0.0.1",tw=new Set(["localhost","127.0.0.1","::1"]);function rw(r){if(r)try{return new URL(r.includes("://")?r:`http://${r}`).hostname}catch{return}}function Mf(r){let e=rw(r);return!!e&&tw.has(e)}function dn(r){return r instanceof Error?r.message:"Unknown error"}async function pn(r){let{getHtml:e,basePath:t,port:s,reloadEmitter:n,getServerExports:i,localOverride:o,trusted:a=!1,trustHint:c,staticAssets:l}=r,f=new Xb;f.use("*",async(m,b)=>{if(!Mf(m.req.header("host")))return m.text("Forbidden: untrusted Host",403);await b()}),f.use("*",async(m,b)=>{await b(),m.res.headers.set("Cross-Origin-Opener-Policy","same-origin"),m.res.headers.set("Cross-Origin-Embedder-Policy","credentialless")});let u=["/__fs/*","/__api/*","/__ai"],d=async(m,b)=>{if(!a){let v=new URL(m.req.url).pathname,T=v.startsWith("/__fs")?"the filesystem":v==="/__ai"?"AI (your API keys)":"server-side code (server.ts)";bf(process.pid,T);let w=c?`
966
+ ${c}`:"";return m.text(`Forbidden: this capability requires --trust.${w}`,403)}await b()},h=async(m,b)=>{let v=m.req.header("sec-fetch-site");if(v){if(v==="cross-site")return m.text("Forbidden: cross-site request",403)}else{let T=m.req.header("origin");if(T&&!Mf(T))return m.text("Forbidden: cross-origin request",403)}await b()};for(let m of u)f.use(m,d),f.use(m,h);f.use("/__log",h),f.post("/__log",async m=>{try{let{args:b}=await m.req.json();console.log(...b||[])}catch{}return m.json({ok:!0})}),f.get("/",m=>m.html(e())),f.post("/__fs/read",async m=>{try{let{path:b}=await m.req.json(),v=Yo(b,t),T=await He.readFile(v);return new Response(new Uint8Array(T),{headers:{"Content-Type":"application/octet-stream"}})}catch(b){let v=dn(b);return m.json({error:v},400)}}),f.post("/__fs/write",async m=>{try{let b=m.req.query("path");if(!b)return m.json({error:"Missing path"},400);let v=Yo(b,t);return await He.mkdir(ie.dirname(v),{recursive:!0}),await He.writeFile(v,Buffer.from(await m.req.arrayBuffer())),m.json({success:!0})}catch(b){let v=dn(b);return m.json({error:v},400)}});let g={log:console.log};f.post("/__api/:name",async m=>{try{let b=i?.(),v=m.req.param("name"),T=b?.[v]??g[v];if(!T||typeof T!="function")return m.json({error:`API function '${v}' not found`},404);let{args:w}=await m.req.json(),O=await T(...w||[]);return m.json({result:O})}catch(b){let v=dn(b);return m.json({error:v},500)}}),f.post("/__ai",async m=>{try{let{messages:b,system:v,reasoning:T,provider:w,model:O,webSearch:D}=await m.req.json();if(!b||!Array.isArray(b)||b.length===0)return m.json({message:"messages array is required",code:"unknown",retryable:!1},400);let j=sw(w,O);if(typeof j=="string")return m.json({message:j,code:"unknown",retryable:!1},400);let I=[...v?[{role:"system",content:v}]:[],...b.map(Or=>({role:Or.role,content:Or.content}))],le=await Fo(j,{model:j.model,messages:I,stream:!0,reasoning:T??0,webSearch:D??!0});if(!le.ok){let Or=await Uo(le,j.protocol);return m.json(Or,le.status)}let aa=await Jo(le,j.protocol);return aa||console.warn("[tb.ai] Empty response from provider"),m.json({text:aa})}catch(b){if(b instanceof X)return m.json({message:b.message,code:b.code,retryable:b.retryable},500);let v=dn(b);return m.json({message:v,code:"unknown",retryable:!1},500)}}),f.get("/__models",async m=>{try{let b=await on();return m.json(b)}catch{return m.json([],200)}});let p=["esm.sh","unpkg.com","cdn.jsdelivr.net","cdnjs.cloudflare.com"],y=new fn;f.get("/proxy/*",async m=>{let b=new URL(m.req.url),T=(b.pathname+b.search).slice(7),w=T.lastIndexOf("https://");return w===-1?m.text("Invalid proxy URL",400):x(m,T.slice(w))}),o&&Df(f,`/local/${o.name}/`,o.serveDir),l&&Df(f,l.mount,l.dir);async function x(m,b){let v;try{v=new URL(b)}catch{return m.text("Invalid URL",400)}if(v.protocol!=="https:")return m.text("HTTPS only",400);if(!p.includes(v.hostname))return m.text("Host not allowed",403);let T=await y.get(b);if(T)return new Response(T.body,{status:200,headers:Wo(T.contentType,T.cacheControl)});try{let w=await fetch(b,{headers:{Accept:m.req.header("Accept")||"*/*"},redirect:"follow"});if(!w.ok)return m.text(`Upstream ${w.status}`,w.status);let O=w.headers.get("Content-Type")||void 0,D=w.headers.get("Cache-Control")||void 0;if(w.body){let[j,I]=w.body.tee();return(async()=>{try{let le=await new Response(I).arrayBuffer();await y.set(b,{body:Buffer.from(le),contentType:O,cacheControl:D})}catch{}})(),new Response(j,{status:w.status,headers:Wo(O,D)})}return new Response(null,{status:w.status,headers:Wo(O,D)})}catch(w){return m.text(`Proxy fetch failed: ${w instanceof Error?w.message:w}`,502)}}n&&f.get("/__reload",m=>ew(m,async b=>{let v=()=>{b.writeSSE({event:"reload",data:""})};for(n.on("reload",v),b.onAbort(()=>{n.removeListener("reload",v)});;)await b.sleep(3e4)}));let k=/^\/(v\d+\/|stable\/|node\/|gh\/|@[^/]+\/[^@/]+@|[^@/]+@)/;f.notFound(async m=>{if(m.req.method!=="GET")return m.text("Not Found",404);let b=new URL(m.req.url);return k.test(b.pathname)?x(m,"https://esm.sh"+b.pathname+b.search):m.text("Not Found",404)});let E=Zb({fetch:f.fetch,port:s,hostname:qf});return{port:s,close:()=>E.close()}}function sw(r,e){let t=r??process.env.TB_AI_PROVIDER,s=e??process.env.TB_AI_MODEL;if(!t)return"No provider specified. Set TB_AI_PROVIDER in your .env file or pass provider in the tb.ai() call.";if(!s)return"No model specified. Set TB_AI_MODEL in your .env file or pass model in the tb.ai() call.";let n;try{n=Ye(t)}catch{return`Unknown provider '${t}'.`}let i=kt[t],o=process.env[i];return o?{apiKey:o,baseUrl:n.defaultBaseUrl,protocol:t,model:s,isFreeModel:!1}:`No API key for '${t}'. Set ${i} in your .env file.`}function Wo(r,e){let t=new Headers;return r&&t.set("Content-Type",r),e&&t.set("Cache-Control",e),t.set("Access-Control-Allow-Origin","*"),t.set("Cross-Origin-Resource-Policy","cross-origin"),t}function Df(r,e,t){r.get(`${e}*`,async s=>{let{pathname:n}=new URL(s.req.url);if(!n.startsWith(e))return s.text("Not Found",404);let i=decodeURIComponent(n.slice(e.length));try{let o=Yo(i,t),a=await He.readFile(o);return new Response(a,{headers:{"Content-Type":nw(o)}})}catch{return s.text("Not Found",404)}})}function nw(r){switch(ie.extname(r).toLowerCase()){case".js":case".mjs":return"text/javascript";case".wasm":return"application/wasm";case".json":case".map":return"application/json";default:return"application/octet-stream"}}function Yo(r,e){let t=ie.resolve(e,r),s=ie.normalize(e),n=ie.normalize(t);if(n!==s&&!n.startsWith(s+ie.sep))throw new Error("Path traversal detected - access denied");return t}async function Ar(r){let e=await import("net");return new Promise(t=>{let s=e.createServer();s.listen(r,qf,()=>{let n=s.address(),i=typeof n=="object"&&n?n.port:r;s.close(()=>t(i))}),s.on("error",()=>{t(Ar(r+1))})})}import Bf from"chokidar";var jf={persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50}};function hn(r){let{bulbPath:e,emitter:t}=r,s=Bf.watch(e,jf);return s.on("change",()=>{t.emit("reload")}),()=>s.close()}function mn(r){let{dir:e,onChange:t,debounceMs:s=150}=r,n,i=Bf.watch(e,jf);return i.on("all",()=>{n&&clearTimeout(n),n=setTimeout(t,s)}),()=>{n&&clearTimeout(n),i.close()}}Ve();async function Kf(r,e,t,s,n){let i=process.cwd(),o=tn(process.pid),a=e.watch?new Ff:void 0,c=Ie(e.mode);console.log(`Loading ${xt.basename(r)}...`);let{html:l,bulb:f,serverExports:u}=await Co(r,e.watch,e.trust,s,n);vt(c,r,f.server);let d=await Ar(e.port),h=await pn({getHtml:()=>l,basePath:i,port:d,reloadEmitter:a,getServerExports:()=>u,localOverride:s?{name:s.name,serveDir:s.serveDir}:void 0,trusted:e.trust,trustHint:t}),g=`http://localhost:${d}`,p=e.trust?void 0:yt(f);await rn({pid:process.pid,port:d,url:g,file:r,cwd:process.cwd(),startedAt:Date.now(),trust:e.trust,predicted:p}),console.log(`
967
+ ${f.name}`),console.log(` ${g}`),d!==e.port&&console.log(` (port ${e.port} was busy)`),e.trust?console.log(" trust: granted (filesystem, AI, server.ts enabled)"):console.log(p?` trust: sandboxed \u2014 this bulb appears to use ${p}; re-run with --trust to enable it:
667
968
  ${t}
668
969
  `:` trust: sandboxed \u2014 re-run with --trust to enable filesystem / AI / server.ts
669
970
  `),e.watch&&console.log(` Watching for changes...
670
- `);let D,M;if(e.watch&&a){let T=new xs;if(T.on("reload",async()=>{try{console.log("Recompiling...");let p=await mr(r,!0,e.trust,n,s);l=p.html,u=p.serverExports,a.emit("reload"),console.log(`Done. Browser reloading...
671
- `)}catch(p){console.error("Compile error:",p)}}),D=Wt({bulbPath:r,emitter:T}),n){let{name:p,serveDir:g}=n;M=Jt({dir:g,onChange:()=>{console.log(`Local package '${p}' changed. Browser reloading...
672
- `),a.emit("reload")}})}}e.open&&await Pe(h);let E=async()=>{console.log(`
673
- Shutting down...`),m.close(),D?.(),M?.(),i(),await et(process.pid);let T=Ie.join(Ie.dirname(r),".typebulb","server.mjs");await Ss.rm(T,{force:!0}).catch(()=>{}),process.exit(0)};process.on("SIGINT",E),process.on("SIGTERM",E)}import{readFileSync as Qs,copyFileSync as qa,existsSync as Ga}from"fs";import*as O from"path";import{fileURLToPath as Ka}from"url";import{EventEmitter as Ya}from"events";de();var $r="/agents/claude/client.js",Zi=`
971
+ `);let y,x;if(e.watch&&a){let E=new Ff;if(E.on("reload",async()=>{try{console.log("Recompiling...");let m=await Co(r,!0,e.trust,s,n);l=m.html,u=m.serverExports,a.emit("reload"),console.log(`Done. Browser reloading...
972
+ `)}catch(m){console.error("Compile error:",m)}}),y=hn({bulbPath:r,emitter:E}),s){let{name:m,serveDir:b}=s;x=mn({dir:b,onChange:()=>{console.log(`Local package '${m}' changed. Browser reloading...
973
+ `),a.emit("reload")}})}}e.open&&await mt(g);let k=async()=>{console.log(`
974
+ Shutting down...`),h.close(),y?.(),x?.(),o(),await Er(process.pid);let E=xt.join(xt.dirname(r),".typebulb","server.mjs");await Uf.rm(E,{force:!0}).catch(()=>{}),process.exit(0)};process.on("SIGINT",k),process.on("SIGTERM",k)}import{readFileSync as bd,copyFileSync as Zw,existsSync as ev}from"fs";import*as H from"path";import{fileURLToPath as tv}from"url";import{EventEmitter as rv}from"events";Ve();var Ho="/agents/claude/client.js",iw=`
674
975
  (() => {
675
976
  const api = async (name, ...args) => {
676
977
  const resp = await fetch('/__api/' + name, {
@@ -705,36 +1006,36 @@ Shutting down...`),m.close(),D?.(),M?.(),i(),await et(process.pid);let T=Ie.join
705
1006
  es.onerror = () => { es.close(); };
706
1007
  }
707
1008
  })();
708
- `;function Es(r){let{name:e,styles:t,mountHtml:n,watch:s,theme:o}=r;return`<!DOCTYPE html>
1009
+ `;function Jf(r){let{name:e,styles:t,mountHtml:s,watch:n,theme:i}=r;return`<!DOCTYPE html>
709
1010
  <html>
710
1011
  <head>
711
1012
  <meta charset="utf-8">
712
1013
  <meta name="viewport" content="width=device-width, initial-scale=1">
713
- <title>${xt(e)} - typebulb</title>
714
- ${Pt(e,o)}
1014
+ <title>${Us(e)} - typebulb</title>
1015
+ ${Js(e,i)}
715
1016
  <style>
716
- ${St}
1017
+ ${Ks}
717
1018
  </style>
718
1019
  <style>
719
1020
  ${t}
720
1021
  </style>
721
1022
  </head>
722
1023
  <body>
723
- ${n}
1024
+ ${s}
724
1025
 
725
- ${s?"<script>window.__TYPEBULB_WATCH__ = true;</script>":""}
1026
+ ${n?"<script>window.__TYPEBULB_WATCH__ = true;</script>":""}
726
1027
 
727
1028
  <script>
728
- ${Zi}
1029
+ ${iw}
729
1030
  </script>
730
1031
 
731
- <script type="module" src="${$r}"></script>
1032
+ <script type="module" src="${Ho}"></script>
732
1033
  </body>
733
- </html>`}async function Zs(r){let e=process.cwd(),t=Dt(process.pid),n=r.watch?new Ya:void 0,s=ne(r.mode),o=await Promise.resolve().then(()=>(Xs(),Ys));Ae(s,O.join(e,"viewer"));let i=O.dirname(Ka(import.meta.url)),a=O.join(i,"agents","claude"),c=O.join(i,"..","agents","claude"),l=O.join(a,"styles.css"),d=O.join(a,"index.html"),u=()=>Es({name:"Claude Bulb",styles:Qs(l,"utf8"),mountHtml:Qs(d,"utf8"),watch:r.watch}),f=await it(r.port),m=await Ut({getHtml:u,basePath:e,port:f,reloadEmitter:n,getServerExports:()=>o,trusted:!0,staticAssets:{mount:`${O.posix.dirname($r)}/`,dir:a}}),h=`http://localhost:${f}`;await Mt({pid:process.pid,port:f,url:h,file:"agent:claude",cwd:e,startedAt:Date.now(),trust:!0,agent:"claude"}),console.log(`
734
- Claude Bulb`),console.log(` ${h}`),f!==r.port&&console.log(` (port ${r.port} was busy)`),r.watch&&console.log(` Watching for changes...
735
- `);async function w(){await(await import("esbuild")).build({entryPoints:[O.join(c,"client","index.ts")],bundle:!0,platform:"browser",format:"esm",outfile:O.join(a,"client.js")});for(let T of["styles.css","index.html"])qa(O.join(c,T),O.join(a,T))}let D;if(r.watch&&n){let E=Ga(c),T=!1;D=Jt({dir:E?c:a,onChange:async()=>{if(!T){T=!0;try{E&&await w(),console.log(`Viewer rebuilt. Browser reloading...
736
- `),n.emit("reload")}catch(p){console.error("Viewer rebuild failed:",p instanceof Error?p.message:p)}finally{T=!1}}}})}r.open&&await Pe(h);let M=async()=>{console.log(`
737
- Shutting down...`),m.close(),D?.(),t(),await et(process.pid),process.exit(0)};process.on("SIGINT",M),process.on("SIGTERM",M)}import*as eo from"path";import{EventEmitter as Xa}from"events";async function to(r,e,t,n,s){let o=ne(t),i=!1,a=async()=>{let{bulb:c,config:l}=await G(r);i||(Ae(o,r,c.server),i=!0),await fr(c.server,s,n,l.dependencies)};if(console.log(`Running ${eo.basename(r)}...`),await a(),e){console.log(`Watching for changes...
738
- `);let c=new Xa;c.on("reload",async()=>{try{console.log("Re-running..."),await a()}catch(l){console.error("Error:",l)}}),Wt({bulbPath:r,emitter:c})}}var ro="0.12.0";async function Qa(){let r=Zr(process.argv.slice(2));if(r.version&&(console.log(`typebulb ${ro}`),process.exit(0)),r.help&&(en(),process.exit(0)),r.subcommand==="logs"){await us(r.file||void 0,{follow:r.follow,lines:r.lines});return}if(r.subcommand==="stop"){r.stopScope?await fs(r.stopScope):await ps(r.file||void 0);return}if(r.subcommand==="skill"){await as(ro);return}if(r.subcommand==="models"){await os(r.mode);return}if(r.subcommand==="agent"){if(!r.agentTarget){await ts();return}Bn(r.agentTarget)||(console.error(`Unknown agent '${r.agentTarget}'. Known: ${yr().join(", ")}.`),process.exit(1));let l=await Sr(process.cwd(),r.agentTarget);if(l){console.log(`Viewer '${r.agentTarget}' is already running for this project:
739
- ${l.url}`),r.open&&await Pe(l.url);return}await Zs(r);return}if(r.subcommand==="trust"||r.subcommand==="untrust"){await Vn(r.file||void 0,r.subcommand==="trust");return}let e;if(!r.file||r.file==="."){let l=await In(process.cwd());l||(console.error("No .bulb.md file found in current directory"),process.exit(1)),e=l}else e=X.resolve(r.file);await no.access(e).then(()=>!0,()=>!1)||(yr().includes(r.file)&&(console.error(`To open the ${r.file} agent viewer, run: npx typebulb agent:${r.file}`),process.exit(1)),console.error(`File not found: ${e}`),process.exit(1)),e.endsWith(".bulb.md")||(console.error("File must have .bulb.md extension"),process.exit(1));let n=r.file&&r.file!=="."?r.file:X.relative(process.cwd(),e)||X.basename(e),s=`npx typebulb --trust ${n.includes(" ")?`"${n}"`:n}`;if(r.subcommand==="predict"){await Hn(e,s);return}let o=!r.noTrust&&le(e);o&&!r.trust&&console.log("trust: granted from memory (run `typebulb untrust` to revoke)"),r.trust=r.noTrust?!1:r.trust||o;let i;try{i=await G(e)}catch{}let a;if(r.local){i&&!(r.local.name in(i.config.dependencies??{}))&&(console.error(`--replace: '${r.local.name}' is not a dependency in this bulb's config.json; nothing to replace.`),process.exit(1)),i&&(!i.bulb.code||r.server)&&console.warn("warning: --replace has no effect in server mode (the override is client-only).");try{a=await Xr(r.local)}catch(l){console.error(l instanceof Error?l.message:String(l)),process.exit(1)}console.log(`replace: ${a.name} \u2192 ${X.relative(process.cwd(),a.dir)||"."}`)}if(r.subcommand==="check"){await Jn(e,a);return}let c=X.dirname(e);if(i&&i.bulb.server&&(!i.bulb.code||r.server)){r.trust||(console.error(`This bulb runs server-side Node code (server.ts), which --trust must authorize:
740
- ${s}`),process.exit(1)),await to(e,r.watch,r.mode,a,c);return}await Ps(e,r,s,a,c)}Qa().catch(r=>{console.error("Error:",r.message),process.exit(1)});
1034
+ </html>`}async function wd(r){let e=process.cwd(),t=tn(process.pid),s=r.watch?new rv:void 0,n=Ie(r.mode),i=await Promise.resolve().then(()=>(yd(),gd));vt(n,H.join(e,"viewer"));let o=H.dirname(tv(import.meta.url)),a=H.join(o,"agents","claude"),c=H.join(o,"..","agents","claude"),l=H.join(a,"styles.css"),f=H.join(a,"index.html"),u=()=>Jf({name:"Claude Bulb",styles:bd(l,"utf8"),mountHtml:bd(f,"utf8"),watch:r.watch}),d=await Ar(r.port),h=await pn({getHtml:u,basePath:e,port:d,reloadEmitter:s,getServerExports:()=>i,trusted:!0,staticAssets:{mount:`${H.posix.dirname(Ho)}/`,dir:a}}),g=`http://localhost:${d}`;await rn({pid:process.pid,port:d,url:g,file:"agent:claude",cwd:e,startedAt:Date.now(),trust:!0,agent:"claude"}),console.log(`
1035
+ Claude Bulb`),console.log(` ${g}`),d!==r.port&&console.log(` (port ${r.port} was busy)`),r.watch&&console.log(` Watching for changes...
1036
+ `);async function p(){await(await import("esbuild")).build({entryPoints:[H.join(c,"client","index.ts")],bundle:!0,platform:"browser",format:"esm",outfile:H.join(a,"client.js")});for(let E of["styles.css","index.html"])Zw(H.join(c,E),H.join(a,E))}let y;if(r.watch&&s){let k=ev(c),E=!1;y=mn({dir:k?c:a,onChange:async()=>{if(!E){E=!0;try{k&&await p(),console.log(`Viewer rebuilt. Browser reloading...
1037
+ `),s.emit("reload")}catch(m){console.error("Viewer rebuild failed:",m instanceof Error?m.message:m)}finally{E=!1}}}})}r.open&&await mt(g);let x=async()=>{console.log(`
1038
+ Shutting down...`),h.close(),y?.(),t(),await Er(process.pid),process.exit(0)};process.on("SIGINT",x),process.on("SIGTERM",x)}import*as vd from"path";import{EventEmitter as sv}from"events";async function Sd(r,e,t,s,n){let i=Ie(t),o=!1,a=async()=>{let{bulb:c,config:l}=await pe(r);o||(vt(i,r,c.server),o=!0),await No(c.server,n,s,l.dependencies)};if(console.log(`Running ${vd.basename(r)}...`),await a(),e){console.log(`Watching for changes...
1039
+ `);let c=new sv;c.on("reload",async()=>{try{console.log("Re-running..."),await a()}catch(l){console.error("Error:",l)}}),hn({bulbPath:r,emitter:c})}}var kd="0.13.0";async function nv(){let r=ga(process.argv.slice(2));if(r.version&&(console.log(`typebulb ${kd}`),process.exit(0)),r.help&&(ya(),process.exit(0)),r.subcommand==="logs"){await If(r.file||void 0,{follow:r.follow,lines:r.lines});return}if(r.subcommand==="stop"){r.stopScope?await _f(r.stopScope):await Rf(r.file||void 0);return}if(r.subcommand==="skill"){await Pf(kd);return}if(r.subcommand==="models"){await Tf(r.mode);return}if(r.subcommand==="agent"){if(!r.agentTarget){await Sf();return}ef(r.agentTarget)||(console.error(`Unknown agent '${r.agentTarget}'. Known: ${Lo().join(", ")}.`),process.exit(1));let l=await Bo(process.cwd(),r.agentTarget);if(l){console.log(`Viewer '${r.agentTarget}' is already running for this project:
1040
+ ${l.url}`),r.open&&await mt(l.url);return}await wd(r);return}if(r.subcommand==="trust"||r.subcommand==="untrust"){await ff(r.file||void 0,r.subcommand==="trust");return}let e;if(!r.file||r.file==="."){let l=await zu(process.cwd());l||(console.error("No .bulb.md file found in current directory"),process.exit(1)),e=l}else e=ge.resolve(r.file);await xd.access(e).then(()=>!0,()=>!1)||(Lo().includes(r.file)&&(console.error(`To open the ${r.file} agent viewer, run: npx typebulb agent:${r.file}`),process.exit(1)),console.error(`File not found: ${e}`),process.exit(1)),e.endsWith(".bulb.md")||(console.error("File must have .bulb.md extension"),process.exit(1));let s=r.file&&r.file!=="."?r.file:ge.relative(process.cwd(),e)||ge.basename(e),n=`npx typebulb --trust ${s.includes(" ")?`"${s}"`:s}`;if(r.subcommand==="predict"){await uf(e,n);return}let i=!r.noTrust&&Ue(e);i&&!r.trust&&console.log("trust: granted from memory (run `typebulb untrust` to revoke)"),r.trust=r.noTrust?!1:r.trust||i;let o;try{o=await pe(e)}catch{}let a;if(r.local){o&&!(r.local.name in(o.config.dependencies??{}))&&(console.error(`--replace: '${r.local.name}' is not a dependency in this bulb's config.json; nothing to replace.`),process.exit(1)),o&&(!o.bulb.code||r.server)&&console.warn("warning: --replace has no effect in server mode (the override is client-only).");try{a=await ha(r.local)}catch(l){console.error(l instanceof Error?l.message:String(l)),process.exit(1)}console.log(`replace: ${a.name} \u2192 ${ge.relative(process.cwd(),a.dir)||"."}`)}if(r.subcommand==="check"){await lf(e,a);return}let c=ge.dirname(e);if(o&&o.bulb.server&&(!o.bulb.code||r.server)){r.trust||(console.error(`This bulb runs server-side Node code (server.ts), which --trust must authorize:
1041
+ ${n}`),process.exit(1)),await Sd(e,r.watch,r.mode,a,c);return}await Kf(e,r,n,a,c)}nv().catch(r=>{console.error("Error:",r.message),process.exit(1)});