typebulb 0.52.3 → 0.54.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.
- package/SKILL.md +2 -2
- package/dist/agents/claude/client.js +142 -142
- package/dist/agents/claude/styles.css +3 -0
- package/dist/agents/codex/client.js +179 -179
- package/dist/agents/codex/styles.css +3 -0
- package/dist/agents/pi/client.js +149 -149
- package/dist/agents/pi/styles.css +3 -0
- package/dist/index.js +361 -239
- package/dist/servers.js +69 -69
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,99 +1,99 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __cr } from 'module'; const require = __cr(import.meta.url);
|
|
3
|
-
var
|
|
4
|
-
`),t=0;if(e[t]?.trim()!=="---")return null;t++;let r=[];for(;t<e.length&&e[t]?.trim()!=="---";)r.push(e[t]),t++;if(e[t]?.trim()!=="---")return null;t++;let s=
|
|
5
|
-
`)),o.set(u,m),l=t}else t++}return{frontmatter:s,files:i,warnings:a,bodyEndLine:l,starts:o}}catch{return null}}function
|
|
3
|
+
var dv=Object.create;var Ca=Object.defineProperty;var fv=Object.getOwnPropertyDescriptor;var pv=Object.getOwnPropertyNames;var hv=Object.getPrototypeOf,mv=Object.prototype.hasOwnProperty;var $s=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var v=(n,e)=>()=>(n&&(e=n(n=0)),e);var O=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),_a=(n,e)=>{for(var t in e)Ca(n,t,{get:e[t],enumerable:!0})},gv=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of pv(e))!mv.call(n,s)&&s!==t&&Ca(n,s,{get:()=>e[s],enumerable:!(r=fv(e,s))||r.enumerable});return n};var yv=(n,e,t)=>(t=n!=null?dv(hv(n)):{},gv(e||!n||!n.__esModule?Ca(t,"default",{value:n,enumerable:!0}):t,n));import*as Gd from"fs/promises";import{existsSync as hn,readFileSync as bv}from"fs";import*as re from"path";import{pathToFileURL as wv}from"url";import{resolve as Ia}from"resolve.exports";import{init as Xd,parse as Qd}from"es-module-lexer";function Zd(n,e){let t=re.join(n,"package.json");try{return JSON.parse(bv(t,"utf8"))}catch{throw new Error(`--replace package '${e}' has no readable package.json at ${t}`)}}function ef(n){let e=n.indexOf("=");if(e===-1)throw new Error(`--replace must be <name>=<path> (got '${n}')`);let t=n.slice(0,e).trim(),r=n.slice(e+1).trim();if(!t)throw new Error(`--replace missing package name (got '${n}')`);if(!r)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:re.resolve(r)}}async function tf(n){let{name:e,dir:t}=n;if(!hn(t))throw new Error(`--replace path for '${e}' does not exist: ${t}`);let r=Zd(t,e),s=vv(r,e),i=re.resolve(t,s);if(!hn(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=re.dirname(i),a=`/local/${e}/${re.basename(i)}`,l=Sv(r,t);return await kv(e,i,o),{name:e,dir:t,entryAbs:i,serveDir:o,entryUrl:a,typesAbs:l}}function vv(n,e){if(n.exports!==void 0){let r;try{r=Ia(n,".",{browser:!0,conditions:Ra})}catch(i){throw new Error(`--replace package '${e}' "exports" does not resolve a browser entry (conditions: ${Ra.join(", ")}): ${i instanceof Error?i.message:i}`)}let s=Na(r);if(!s)throw new Error(`--replace package '${e}' "exports" did not resolve "." to a single file (conditions: ${Ra.join(", ")}); too complex to override.`);return s}let t=n.module??n.main;if(!t)throw new Error(`--replace package '${e}' has no "exports", "module", or "main" entry to resolve.`);return t}function Sv(n,e){if(n.exports!==void 0)try{let r=Ia(n,".",{conditions:["types"]}),s=Na(r);if(s){let i=re.resolve(e,s);if(hn(i))return i}}catch{}let t=n.types??n.typings;if(t){let r=re.resolve(e,t);if(hn(r))return r}}function Na(n){if(typeof n=="string")return n;if(Array.isArray(n))return n.find(e=>typeof e=="string")}async function kv(n,e,t){await Xd;let r=re.normalize(t),s=new Set,i=[e];for(;i.length;){let o=i.shift();if(s.has(o))continue;s.add(o);let a;try{a=await Gd.readFile(o,"utf8")}catch{continue}let l,c;try{[l,,,c]=Qd(a,o)}catch{continue}if(o===e&&!c)throw new Error(`override package '${n}' 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 l){if(d.d===-2)continue;let u=d.n;if(u&&!u.startsWith("node:")){if(u.startsWith("./")||u.startsWith("../")||u.startsWith("/")){let f=xv(o,u,r);f&&!s.has(f)&&i.push(f);continue}throw new Error(`override package must ship self-contained (bundle its dependencies); ${n} externalizes '${u}'`)}}}}function xv(n,e,t){let r=e.replace(/[?#].*$/,""),s=re.resolve(re.dirname(n),r),i=[s,s+".js",s+".mjs",re.join(s,"index.js"),re.join(s,"index.mjs")];for(let o of i)if(re.normalize(o).startsWith(t)&&hn(o))return o}function Ev(n,e,t){let r=Zd(n,e),s;if(r.exports!==void 0)try{s=Na(Ia(r,t,{conditions:zd}))}catch(o){throw new Error(`--replace package '${e}' "exports" does not resolve a node entry for '${t}' (conditions: ${zd.join(", ")}): ${o instanceof Error?o.message:o}`)}else t==="."&&(s=r.main??r.module);if(!s)throw new Error(`--replace package '${e}' has no node export for '${t}'.`);let i=re.resolve(n,s);if(!hn(i))throw new Error(`--replace package '${e}' built file not found: ${i} \u2014 did you build it (e.g. \`pnpm run build\`)?`);return wv(i).href}async function nf(n,e){await Xd;let t;try{[t]=Qd(n)}catch{return n}let r="",s=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),l=Ev(e.dir,e.name,a);r+=n.slice(s,i.s)+l,s=i.e}return r+n.slice(s)}var Ra,zd,Ls=v(()=>{"use strict";Ra=["browser","import","default"],zd=["node","import","default"]});function rf(n){return Ie.find(e=>le[e].path===n)}function of(n){return!!n?.startsWith("typebulb")}var le,Ie,sf,Ms=v(()=>{le={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"}},Ie=["code","css","html","data","infer","insight","config","notes"];sf="typebulb/v1"});function $a(n){return/[:\n"']/.test(n)||n.startsWith(" ")||n.endsWith(" ")?`"${n.replace(/"/g,'\\"')}"`:n}function La(n){return n.startsWith('"')&&n.endsWith('"')?n.slice(1,-1).replace(/\\"/g,'"'):n.startsWith("'")&&n.endsWith("'")?n.slice(1,-1):n}var Bs=v(()=>{});function ue(n){try{let e=n.split(`
|
|
4
|
+
`),t=0;if(e[t]?.trim()!=="---")return null;t++;let r=[];for(;t<e.length&&e[t]?.trim()!=="---";)r.push(e[t]),t++;if(e[t]?.trim()!=="---")return null;t++;let s=Pv(r);if(!s)return null;let i=new Map,o=new Map,a=[],l=t;for(;t<e.length;){let d=e[t]?.trim()?.match(af);if(d){let u=d[1].trim();for(t++;t<e.length&&e[t]?.trim()==="";)t++;let f=e[t]?.match(Ds);if(!f){a.push(`**${u}** has no code fence \u2014 block skipped`);continue}let p=f[1];t++;let m=t+1,h=[],y=Ma(p);for(;t<e.length&&!e[t]?.match(y);)h.push(e[t]),t++;let A=t<e.length;t++,a.push(...Tv(u,h,A)),i.set(u,h.join(`
|
|
5
|
+
`)),o.set(u,m),l=t}else t++}return{frontmatter:s,files:i,warnings:a,bodyEndLine:l,starts:o}}catch{return null}}function Tv(n,e,t){let r=[];for(let s=0;s<e.length;s++){let i=e[s]?.trim().match(af);i&&Av.has(i[1].trim())&&Ov(e,s)&&r.push(i[1].trim())}return r.length?r.map(s=>`**${n}** block has an unterminated code fence \u2014 it swallowed the **${s}** block.`):t?[]:[`**${n}** block has an unterminated code fence (it runs to the end of the file).`]}function Ov(n,e){let t=e+1;for(;t<n.length&&n[t]?.trim()==="";)t++;return!!n[t]?.match(Ds)}function Pv(n){let e={};for(let t of n){let r=t.indexOf(":");if(r===-1)continue;let s=t.slice(0,r).trim(),i=t.slice(r+1).trim();switch(s){case"format":e.format=i;break;case"name":e.name=La(i);break}}return!of(e.format)||!e.name?null:e}function lf(n){return ue(n)?.warnings??[]}function cf(n){let e=Object.fromEntries(Ie.map(t=>[t,n.files.get(le[t].path)||""]));return{name:n.frontmatter.name,...e}}var af,Ds,Av,Ma,Ba=v(()=>{Ms();Bs();af=/^\*\*(.+)\*\*$/,Ds=/^(`{3,})(\w*)\s*$/,Av=new Set(Ie.map(n=>le[n].path)),Ma=n=>new RegExp(`^${n}\\s*$`)});function uf(n){let e=n.match(/^`{3,}/gm),t=e?Math.max(...e.map(r=>r.length)):0;return"`".repeat(Math.max(3,t+1))}function df(n,e){let{path:t}=le[n],r=t.split(".").pop(),s=uf(e);return`**${t}**
|
|
6
6
|
|
|
7
7
|
${s}${r}
|
|
8
8
|
${e}
|
|
9
|
-
${s}`}function
|
|
10
|
-
`)}function
|
|
11
|
-
`),s=
|
|
9
|
+
${s}`}function ff(n){let e=Ie.filter(t=>n[t]).map(t=>df(t,n[t]));return["---",`format: ${sf}`,`name: ${$a(n.name)}`,"---","",...e].join(`
|
|
10
|
+
`)}function pf(n,e){for(let t=0;t<n.length;t++){if(n[t]?.trim()!==`**${e}**`)continue;let r=t+1;for(;r<n.length&&n[r]?.trim()==="";)r++;let s=n[r]?.match(Ds);if(!s)continue;let i=Ma(s[1]),o=r+1;for(;o<n.length&&!n[o]?.match(i);)o++;return o>=n.length?"unterminated":{header:t,open:r,close:o,fence:s[1],lang:s[2]}}return null}function ar(n,e,t){let r=n.split(`
|
|
11
|
+
`),s=pf(r,le[e].path);if(s==="unterminated")return n;if(!s)return`${n.replace(/\s*$/,"")}
|
|
12
12
|
|
|
13
|
-
${
|
|
14
|
-
`;let i=
|
|
13
|
+
${df(e,t)}
|
|
14
|
+
`;let i=uf(t),o=i.length>s.fence.length?i:s.fence;return[...r.slice(0,s.open),o+s.lang,...t.split(`
|
|
15
15
|
`),o,...r.slice(s.close+1)].join(`
|
|
16
|
-
`)}function
|
|
17
|
-
`),r=
|
|
16
|
+
`)}function hf(n,e){let t=n.split(`
|
|
17
|
+
`),r=pf(t,le[e].path);if(!r||r==="unterminated")return n;let s=r.close+1;for(;s<t.length&&t[s]?.trim()==="";)s++;return[...t.slice(0,r.header),...t.slice(s)].join(`
|
|
18
18
|
`).replace(/\s*$/,"")+`
|
|
19
|
-
`}var
|
|
20
|
-
>/]`,i);if(r&&console.log("[xml-utils] start:",o),o===-1)return;let a=n.slice(o+e.length),l=cr(a,"^[^<]*[ /]>",0),c=l!==-1&&a[l-1]==="/";if(r&&console.log("[xml-utils] selfClosing:",c),c===!1)if(s){let p=0,m=1,h=0;for(;(l=cr(a,"[ /]"+e+">",p))!==-1;){let
|
|
21
|
-
>]`),h+=
|
|
22
|
-
`)}};fr.defaultYaml={explicit:!1,version:"1.2"};fr.defaultTags={"!!":"tag:yaml.org,2002:"};
|
|
23
|
-
`)?
|
|
19
|
+
`}var mf=v(()=>{Ms();Ba();Bs()});function lr(n){if(!n.trim())return{};try{return JSON.parse(n)}catch{return{}}}function yf(n){switch(gf(n)){case".js":case".mjs":return"text/javascript";case".wasm":return"application/wasm";case".json":case".map":return"application/json";case".svg":return"image/svg+xml";case".png":return"image/png";case".jpg":case".jpeg":return"image/jpeg";case".gif":return"image/gif";case".webp":return"image/webp";case".avif":return"image/avif";case".ico":return"image/x-icon";case".mp3":return"audio/mpeg";case".wav":return"audio/wav";case".ogg":return"audio/ogg";case".m4a":return"audio/mp4";case".mp4":return"video/mp4";case".webm":return"video/webm";case".woff2":return"font/woff2";case".ttf":return"font/ttf";case".css":return"text/css";case".txt":return"text/plain; charset=utf-8";default:return"application/octet-stream"}}function bf(n){let e=gf(n);return e!==void 0&&_v.has(e)?e:void 0}function Iv(n){return n.replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/\*([^*]+)\*/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/^#{1,6}\s+/gm,"")}function Da(n){let e=lr(n??"").description?.trim();if(!e)return Rv;let t=Iv(e);return(t.length>200?t.slice(0,197)+"...":t).replace(/\n/g," ")}var Cv,js,gf,_v,Rv,wf=v(()=>{Cv="https://assets.typebulb.com",js=(n,e)=>`${Cv}/u/${encodeURIComponent(n)}/${encodeURIComponent(e)}/`,gf=n=>/\.[^./\\]+$/.exec(n)?.[0]?.toLowerCase();_v=new Set([".html",".htm",".xhtml",".js",".mjs",".cjs",".ts",".tsx",".css"]);Rv="A Typebulb bulb."});var vf=v(()=>{});function ja(n,e,t){let s=new RegExp(e).exec(n.slice(t));return s?t+s.index:-1}var Sf=v(()=>{});function cr(n,e,t){let s=new RegExp(e).exec(n.slice(t));return s?t+s.index+s[0].length-1:-1}var kf=v(()=>{});function Fs(n,e){let t=new RegExp(e,"g"),r=n.match(t);return r?r.length:0}var xf=v(()=>{});function ur(n,e,t){let r=t&&t.debug||!1,s=!(t&&typeof t.nested===!1),i=t&&t.startIndex||0;r&&console.log("[xml-utils] starting findTagByName with",e," and ",t);let o=ja(n,`<${e}[
|
|
20
|
+
>/]`,i);if(r&&console.log("[xml-utils] start:",o),o===-1)return;let a=n.slice(o+e.length),l=cr(a,"^[^<]*[ /]>",0),c=l!==-1&&a[l-1]==="/";if(r&&console.log("[xml-utils] selfClosing:",c),c===!1)if(s){let p=0,m=1,h=0;for(;(l=cr(a,"[ /]"+e+">",p))!==-1;){let y=a.substring(p,l+1);if(m+=Fs(y,"<"+e+`[
|
|
21
|
+
>]`),h+=Fs(y,"</"+e+">"),h>=m)break;p=l}}else l=cr(a,"[ /]"+e+">",0);let d=o+e.length+l+1;if(r&&console.log("[xml-utils] end:",d),d===-1)return;let u=n.slice(o,d),f;return c?f=null:f=u.slice(u.indexOf(">")+1,u.lastIndexOf("<")),{inner:f,outer:u,start:o,end:d}}var Fa=v(()=>{Sf();kf();xf()});var Ua=v(()=>{Fa()});var qa=v(()=>{Ua()});var Ef=v(()=>{qa()});var Af=v(()=>{});var Tf=v(()=>{vf();Fa();Ua();Ef();qa();Af()});var U=O(ce=>{"use strict";var Ja=Symbol.for("yaml.alias"),Of=Symbol.for("yaml.document"),Us=Symbol.for("yaml.map"),Pf=Symbol.for("yaml.pair"),Ka=Symbol.for("yaml.scalar"),qs=Symbol.for("yaml.seq"),Qe=Symbol.for("yaml.node.type"),Lv=n=>!!n&&typeof n=="object"&&n[Qe]===Ja,Mv=n=>!!n&&typeof n=="object"&&n[Qe]===Of,Bv=n=>!!n&&typeof n=="object"&&n[Qe]===Us,Dv=n=>!!n&&typeof n=="object"&&n[Qe]===Pf,Cf=n=>!!n&&typeof n=="object"&&n[Qe]===Ka,jv=n=>!!n&&typeof n=="object"&&n[Qe]===qs;function _f(n){if(n&&typeof n=="object")switch(n[Qe]){case Us:case qs:return!0}return!1}function Fv(n){if(n&&typeof n=="object")switch(n[Qe]){case Ja:case Us:case Ka:case qs:return!0}return!1}var Uv=n=>(Cf(n)||_f(n))&&!!n.anchor;ce.ALIAS=Ja;ce.DOC=Of;ce.MAP=Us;ce.NODE_TYPE=Qe;ce.PAIR=Pf;ce.SCALAR=Ka;ce.SEQ=qs;ce.hasAnchor=Uv;ce.isAlias=Lv;ce.isCollection=_f;ce.isDocument=Mv;ce.isMap=Bv;ce.isNode=Fv;ce.isPair=Dv;ce.isScalar=Cf;ce.isSeq=jv});var dr=O(Wa=>{"use strict";var se=U(),me=Symbol("break visit"),Rf=Symbol("skip children"),Ke=Symbol("remove node");function Js(n,e){let t=If(e);se.isDocument(n)?mn(null,n.contents,t,Object.freeze([n]))===Ke&&(n.contents=null):mn(null,n,t,Object.freeze([]))}Js.BREAK=me;Js.SKIP=Rf;Js.REMOVE=Ke;function mn(n,e,t,r){let s=Nf(n,e,t,r);if(se.isNode(s)||se.isPair(s))return $f(n,r,s),mn(n,s,t,r);if(typeof s!="symbol"){if(se.isCollection(e)){r=Object.freeze(r.concat(e));for(let i=0;i<e.items.length;++i){let o=mn(i,e.items[i],t,r);if(typeof o=="number")i=o-1;else{if(o===me)return me;o===Ke&&(e.items.splice(i,1),i-=1)}}}else if(se.isPair(e)){r=Object.freeze(r.concat(e));let i=mn("key",e.key,t,r);if(i===me)return me;i===Ke&&(e.key=null);let o=mn("value",e.value,t,r);if(o===me)return me;o===Ke&&(e.value=null)}}return s}async function Ks(n,e){let t=If(e);se.isDocument(n)?await gn(null,n.contents,t,Object.freeze([n]))===Ke&&(n.contents=null):await gn(null,n,t,Object.freeze([]))}Ks.BREAK=me;Ks.SKIP=Rf;Ks.REMOVE=Ke;async function gn(n,e,t,r){let s=await Nf(n,e,t,r);if(se.isNode(s)||se.isPair(s))return $f(n,r,s),gn(n,s,t,r);if(typeof s!="symbol"){if(se.isCollection(e)){r=Object.freeze(r.concat(e));for(let i=0;i<e.items.length;++i){let o=await gn(i,e.items[i],t,r);if(typeof o=="number")i=o-1;else{if(o===me)return me;o===Ke&&(e.items.splice(i,1),i-=1)}}}else if(se.isPair(e)){r=Object.freeze(r.concat(e));let i=await gn("key",e.key,t,r);if(i===me)return me;i===Ke&&(e.key=null);let o=await gn("value",e.value,t,r);if(o===me)return me;o===Ke&&(e.value=null)}}return s}function If(n){return typeof n=="object"&&(n.Collection||n.Node||n.Value)?Object.assign({Alias:n.Node,Map:n.Node,Scalar:n.Node,Seq:n.Node},n.Value&&{Map:n.Value,Scalar:n.Value,Seq:n.Value},n.Collection&&{Map:n.Collection,Seq:n.Collection},n):n}function Nf(n,e,t,r){if(typeof t=="function")return t(n,e,r);if(se.isMap(e))return t.Map?.(n,e,r);if(se.isSeq(e))return t.Seq?.(n,e,r);if(se.isPair(e))return t.Pair?.(n,e,r);if(se.isScalar(e))return t.Scalar?.(n,e,r);if(se.isAlias(e))return t.Alias?.(n,e,r)}function $f(n,e,t){let r=e[e.length-1];if(se.isCollection(r))r.items[n]=t;else if(se.isPair(r))n==="key"?r.key=t:r.value=t;else if(se.isDocument(r))r.contents=t;else{let s=se.isAlias(r)?"alias":"scalar";throw new Error(`Cannot replace node with ${s} parent`)}}Wa.visit=Js;Wa.visitAsync=Ks});var Ha=O(Mf=>{"use strict";var Lf=U(),qv=dr(),Jv={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},Kv=n=>n.replace(/[!,[\]{}]/g,e=>Jv[e]),fr=class n{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},n.defaultYaml,e),this.tags=Object.assign({},n.defaultTags,t)}clone(){let e=new n(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new n(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:n.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},n.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:n.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},n.defaultTags),this.atNextDocument=!1);let r=e.trim().split(/[ \t]+/),s=r.shift();switch(s){case"%TAG":{if(r.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),r.length<2))return!1;let[i,o]=r;return this.tags[i]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,r.length!==1)return t(0,"%YAML directive should contain exactly one part"),!1;let[i]=r;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 ${s}`,!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[,r,s]=e.match(/^(.*!)([^!]*)$/s);s||t(`The ${e} tag has no suffix`);let i=this.tags[r];if(i)try{return i+decodeURIComponent(s)}catch(o){return t(String(o)),null}return r==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,r]of Object.entries(this.tags))if(e.startsWith(r))return t+Kv(e.substring(r.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],r=Object.entries(this.tags),s;if(e&&r.length>0&&Lf.isNode(e.contents)){let i={};qv.visit(e.contents,(o,a)=>{Lf.isNode(a)&&a.tag&&(i[a.tag]=!0)}),s=Object.keys(i)}else s=[];for(let[i,o]of r)i==="!!"&&o==="tag:yaml.org,2002:"||(!e||s.some(a=>a.startsWith(o)))&&t.push(`%TAG ${i} ${o}`);return t.join(`
|
|
22
|
+
`)}};fr.defaultYaml={explicit:!1,version:"1.2"};fr.defaultTags={"!!":"tag:yaml.org,2002:"};Mf.Directives=fr});var Ws=O(pr=>{"use strict";var Bf=U(),Wv=dr();function Hv(n){if(/[\x00-\x19\s,[\]{}]/.test(n)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(n)}`;throw new Error(t)}return!0}function Df(n){let e=new Set;return Wv.visit(n,{Value(t,r){r.anchor&&e.add(r.anchor)}}),e}function jf(n,e){for(let t=1;;++t){let r=`${n}${t}`;if(!e.has(r))return r}}function Yv(n,e){let t=[],r=new Map,s=null;return{onAnchor:i=>{t.push(i),s??(s=Df(n));let o=jf(e,s);return s.add(o),o},setAnchors:()=>{for(let i of t){let o=r.get(i);if(typeof o=="object"&&o.anchor&&(Bf.isScalar(o.node)||Bf.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:r}}pr.anchorIsValid=Hv;pr.anchorNames=Df;pr.createNodeAnchors=Yv;pr.findNewAnchor=jf});var Ya=O(Ff=>{"use strict";function hr(n,e,t,r){if(r&&typeof r=="object")if(Array.isArray(r))for(let s=0,i=r.length;s<i;++s){let o=r[s],a=hr(n,r,String(s),o);a===void 0?delete r[s]:a!==o&&(r[s]=a)}else if(r instanceof Map)for(let s of Array.from(r.keys())){let i=r.get(s),o=hr(n,r,s,i);o===void 0?r.delete(s):o!==i&&r.set(s,o)}else if(r instanceof Set)for(let s of Array.from(r)){let i=hr(n,r,s,s);i===void 0?r.delete(s):i!==s&&(r.delete(s),r.add(i))}else for(let[s,i]of Object.entries(r)){let o=hr(n,r,s,i);o===void 0?delete r[s]:o!==i&&(r[s]=o)}return n.call(e,t,r)}Ff.applyReviver=hr});var ft=O(qf=>{"use strict";var Vv=U();function Uf(n,e,t){if(Array.isArray(n))return n.map((r,s)=>Uf(r,String(s),t));if(n&&typeof n.toJSON=="function"){if(!t||!Vv.hasAnchor(n))return n.toJSON(e,t);let r={aliasCount:0,count:1,res:void 0};t.anchors.set(n,r),t.onCreate=i=>{r.res=i,delete t.onCreate};let s=n.toJSON(e,t);return t.onCreate&&t.onCreate(s),s}return typeof n=="bigint"&&!t?.keep?Number(n):n}qf.toJS=Uf});var Hs=O(Kf=>{"use strict";var zv=Ya(),Jf=U(),Gv=ft(),Va=class{constructor(e){Object.defineProperty(this,Jf.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:r,onAnchor:s,reviver:i}={}){if(!Jf.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 r=="number"?r:100},a=Gv.toJS(this,"",o);if(typeof s=="function")for(let{count:l,res:c}of o.anchors.values())s(c,l);return typeof i=="function"?zv.applyReviver(i,{"":a},"",a):a}};Kf.NodeBase=Va});var mr=O(Wf=>{"use strict";var Xv=Ws(),Qv=dr(),yn=U(),Zv=Hs(),eS=ft(),za=class extends Zv.NodeBase{constructor(e){super(yn.ALIAS),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,t){let r;t?.aliasResolveCache?r=t.aliasResolveCache:(r=[],Qv.visit(e,{Node:(i,o)=>{(yn.isAlias(o)||yn.hasAnchor(o))&&r.push(o)}}),t&&(t.aliasResolveCache=r));let s;for(let i of r){if(i===this)break;i.anchor===this.source&&(s=i)}return s}toJSON(e,t){if(!t)return{source:this.source};let{anchors:r,doc:s,maxAliasCount:i}=t,o=this.resolve(s,t);if(!o){let l=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(l)}let a=r.get(o);if(a||(eS.toJS(o,null,t),a=r.get(o)),a?.res===void 0){let l="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(l)}if(i>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=Ys(s,o,r)),a.count*a.aliasCount>i)){let l="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(l)}return a.res}toString(e,t,r){let s=`*${this.source}`;if(e){if(Xv.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`${s} `}return s}};function Ys(n,e,t){if(yn.isAlias(e)){let r=e.resolve(n),s=t&&r&&t.get(r);return s?s.count*s.aliasCount:0}else if(yn.isCollection(e)){let r=0;for(let s of e.items){let i=Ys(n,s,t);i>r&&(r=i)}return r}else if(yn.isPair(e)){let r=Ys(n,e.key,t),s=Ys(n,e.value,t);return Math.max(r,s)}return 1}Wf.Alias=za});var te=O(Ga=>{"use strict";var tS=U(),nS=Hs(),rS=ft(),sS=n=>!n||typeof n!="function"&&typeof n!="object",pt=class extends nS.NodeBase{constructor(e){super(tS.SCALAR),this.value=e}toJSON(e,t){return t?.keep?this.value:rS.toJS(this.value,e,t)}toString(){return String(this.value)}};pt.BLOCK_FOLDED="BLOCK_FOLDED";pt.BLOCK_LITERAL="BLOCK_LITERAL";pt.PLAIN="PLAIN";pt.QUOTE_DOUBLE="QUOTE_DOUBLE";pt.QUOTE_SINGLE="QUOTE_SINGLE";Ga.Scalar=pt;Ga.isScalarValue=sS});var gr=O(Yf=>{"use strict";var iS=mr(),Ut=U(),Hf=te(),oS="tag:yaml.org,2002:";function aS(n,e,t){if(e){let r=t.filter(i=>i.tag===e),s=r.find(i=>!i.format)??r[0];if(!s)throw new Error(`Tag ${e} not found`);return s}return t.find(r=>r.identify?.(n)&&!r.format)}function lS(n,e,t){if(Ut.isDocument(n)&&(n=n.contents),Ut.isNode(n))return n;if(Ut.isPair(n)){let u=t.schema[Ut.MAP].createNode?.(t.schema,null,t);return u.items.push(n),u}(n instanceof String||n instanceof Number||n instanceof Boolean||typeof BigInt<"u"&&n instanceof BigInt)&&(n=n.valueOf());let{aliasDuplicateObjects:r,onAnchor:s,onTagObj:i,schema:o,sourceObjects:a}=t,l;if(r&&n&&typeof n=="object"){if(l=a.get(n),l)return l.anchor??(l.anchor=s(n)),new iS.Alias(l.anchor);l={anchor:null,node:null},a.set(n,l)}e?.startsWith("!!")&&(e=oS+e.slice(2));let c=aS(n,e,o.tags);if(!c){if(n&&typeof n.toJSON=="function"&&(n=n.toJSON()),!n||typeof n!="object"){let u=new Hf.Scalar(n);return l&&(l.node=u),u}c=n instanceof Map?o[Ut.MAP]:Symbol.iterator in Object(n)?o[Ut.SEQ]:o[Ut.MAP]}i&&(i(c),delete t.onTagObj);let d=c?.createNode?c.createNode(t.schema,n,t):typeof c?.nodeClass?.from=="function"?c.nodeClass.from(t.schema,n,t):new Hf.Scalar(n);return e?d.tag=e:c.default||(d.tag=c.tag),l&&(l.node=d),d}Yf.createNode=lS});var zs=O(Vs=>{"use strict";var cS=gr(),We=U(),uS=Hs();function Xa(n,e,t){let r=t;for(let s=e.length-1;s>=0;--s){let i=e[s];if(typeof i=="number"&&Number.isInteger(i)&&i>=0){let o=[];o[i]=r,r=o}else r=new Map([[i,r]])}return cS.createNode(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:n,sourceObjects:new Map})}var Vf=n=>n==null||typeof n=="object"&&!!n[Symbol.iterator]().next().done,Qa=class extends uS.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(r=>We.isNode(r)||We.isPair(r)?r.clone(e):r),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Vf(e))this.add(t);else{let[r,...s]=e,i=this.get(r,!0);if(We.isCollection(i))i.addIn(s,t);else if(i===void 0&&this.schema)this.set(r,Xa(this.schema,s,t));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${s}`)}}deleteIn(e){let[t,...r]=e;if(r.length===0)return this.delete(t);let s=this.get(t,!0);if(We.isCollection(s))return s.deleteIn(r);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${r}`)}getIn(e,t){let[r,...s]=e,i=this.get(r,!0);return s.length===0?!t&&We.isScalar(i)?i.value:i:We.isCollection(i)?i.getIn(s,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!We.isPair(t))return!1;let r=t.value;return r==null||e&&We.isScalar(r)&&r.value==null&&!r.commentBefore&&!r.comment&&!r.tag})}hasIn(e){let[t,...r]=e;if(r.length===0)return this.has(t);let s=this.get(t,!0);return We.isCollection(s)?s.hasIn(r):!1}setIn(e,t){let[r,...s]=e;if(s.length===0)this.set(r,t);else{let i=this.get(r,!0);if(We.isCollection(i))i.setIn(s,t);else if(i===void 0&&this.schema)this.set(r,Xa(this.schema,s,t));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${s}`)}}};Vs.Collection=Qa;Vs.collectionFromPath=Xa;Vs.isEmptyPath=Vf});var yr=O(Gs=>{"use strict";var dS=n=>n.replace(/^(?!$)(?: $)?/gm,"#");function Za(n,e){return/^\n+$/.test(n)?n.substring(1):e?n.replace(/^(?! *$)/gm,e):n}var fS=(n,e,t)=>n.endsWith(`
|
|
23
|
+
`)?Za(t,e):t.includes(`
|
|
24
24
|
`)?`
|
|
25
|
-
`+
|
|
26
|
-
`)t===
|
|
27
|
-
`&&p!==" "){let
|
|
28
|
-
`&&
|
|
29
|
-
${e}${n.slice(0,
|
|
30
|
-
${e}${n.slice(
|
|
31
|
-
`);r=e,s=e+1,i=n[s]}return r}br.FOLD_BLOCK=
|
|
32
|
-
`){if(i-o>r)return!0;if(o=i+1,s-o<=r)return!1}return!0}function wr(n,e){let t=JSON.stringify(n);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:r}=e,s=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(
|
|
25
|
+
`+Za(t,e):(n.endsWith(" ")?"":" ")+t;Gs.indentComment=Za;Gs.lineComment=fS;Gs.stringifyComment=dS});var Gf=O(br=>{"use strict";var pS="flow",el="block",Xs="quoted";function hS(n,e,t="flow",{indentAtStart:r,lineWidth:s=80,minContentWidth:i=20,onFold:o,onOverflow:a}={}){if(!s||s<0)return n;s<i&&(i=0);let l=Math.max(1+i,1+s-e.length);if(n.length<=l)return n;let c=[],d={},u=s-e.length;typeof r=="number"&&(r>s-Math.max(2,i)?c.push(0):u=s-r);let f,p,m=!1,h=-1,y=-1,A=-1;t===el&&(h=zf(n,h,e.length),h!==-1&&(u=h+l));for(let P;P=n[h+=1];){if(t===Xs&&P==="\\"){switch(y=h,n[h+1]){case"x":h+=3;break;case"u":h+=5;break;case"U":h+=9;break;default:h+=1}A=h}if(P===`
|
|
26
|
+
`)t===el&&(h=zf(n,h,e.length)),u=h+e.length+l,f=void 0;else{if(P===" "&&p&&p!==" "&&p!==`
|
|
27
|
+
`&&p!==" "){let C=n[h+1];C&&C!==" "&&C!==`
|
|
28
|
+
`&&C!==" "&&(f=h)}if(h>=u)if(f)c.push(f),u=f+l,f=void 0;else if(t===Xs){for(;p===" "||p===" ";)p=P,P=n[h+=1],m=!0;let C=h>A+1?h-2:y-1;if(d[C])return n;c.push(C),d[C]=!0,u=C+l,f=void 0}else m=!0}p=P}if(m&&a&&a(),c.length===0)return n;o&&o();let S=n.slice(0,c[0]);for(let P=0;P<c.length;++P){let C=c[P],_=c[P+1]||n.length;C===0?S=`
|
|
29
|
+
${e}${n.slice(0,_)}`:(t===Xs&&d[C]&&(S+=`${n[C]}\\`),S+=`
|
|
30
|
+
${e}${n.slice(C+1,_)}`)}return S}function zf(n,e,t){let r=e,s=e+1,i=n[s];for(;i===" "||i===" ";)if(e<s+t)i=n[++e];else{do i=n[++e];while(i&&i!==`
|
|
31
|
+
`);r=e,s=e+1,i=n[s]}return r}br.FOLD_BLOCK=el;br.FOLD_FLOW=pS;br.FOLD_QUOTED=Xs;br.foldFlowLines=hS});var vr=O(Xf=>{"use strict";var Ne=te(),ht=Gf(),Zs=(n,e)=>({indentAtStart:e?n.indent.length:n.indentAtStart,lineWidth:n.options.lineWidth,minContentWidth:n.options.minContentWidth}),ei=n=>/^(%|---|\.\.\.)/m.test(n);function mS(n,e,t){if(!e||e<0)return!1;let r=e-t,s=n.length;if(s<=r)return!1;for(let i=0,o=0;i<s;++i)if(n[i]===`
|
|
32
|
+
`){if(i-o>r)return!0;if(o=i+1,s-o<=r)return!1}return!0}function wr(n,e){let t=JSON.stringify(n);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:r}=e,s=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(ei(n)?" ":""),o="",a=0;for(let l=0,c=t[l];c;c=t[++l])if(c===" "&&t[l+1]==="\\"&&t[l+2]==="n"&&(o+=t.slice(a,l)+"\\ ",l+=1,a=l,c="\\"),c==="\\")switch(t[l+1]){case"u":{o+=t.slice(a,l);let d=t.substr(l+2,4);switch(d){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:d.substr(0,2)==="00"?o+="\\x"+d.substr(2):o+=t.substr(l,6)}l+=5,a=l+1}break;case"n":if(r||t[l+2]==='"'||t.length<s)l+=1;else{for(o+=t.slice(a,l)+`
|
|
33
33
|
|
|
34
34
|
`;t[l+2]==="\\"&&t[l+3]==="n"&&t[l+4]!=='"';)o+=`
|
|
35
|
-
`,l+=2;o+=i,t[l+2]===" "&&(o+="\\"),l+=1,a=l+1}break;default:l+=1}return o=a?o+t.slice(a):t,r?o:ht.foldFlowLines(o,i,ht.FOLD_QUOTED,
|
|
36
|
-
`)||/[ \t]\n|\n[ \t]/.test(n))return wr(n,e);let t=e.indent||(
|
|
37
|
-
${t}`)+"'";return e.implicitKey?r:ht.foldFlowLines(r,t,ht.FOLD_FLOW,
|
|
35
|
+
`,l+=2;o+=i,t[l+2]===" "&&(o+="\\"),l+=1,a=l+1}break;default:l+=1}return o=a?o+t.slice(a):t,r?o:ht.foldFlowLines(o,i,ht.FOLD_QUOTED,Zs(e,!1))}function tl(n,e){if(e.options.singleQuote===!1||e.implicitKey&&n.includes(`
|
|
36
|
+
`)||/[ \t]\n|\n[ \t]/.test(n))return wr(n,e);let t=e.indent||(ei(n)?" ":""),r="'"+n.replace(/'/g,"''").replace(/\n+/g,`$&
|
|
37
|
+
${t}`)+"'";return e.implicitKey?r:ht.foldFlowLines(r,t,ht.FOLD_FLOW,Zs(e,!1))}function bn(n,e){let{singleQuote:t}=e.options,r;if(t===!1)r=wr;else{let s=n.includes('"'),i=n.includes("'");s&&!i?r=tl:i&&!s?r=wr:r=t?tl:wr}return r(n,e)}var nl;try{nl=new RegExp(`(^|(?<!
|
|
38
38
|
))
|
|
39
39
|
+(?!
|
|
40
|
-
|$)`,"g")}catch{
|
|
40
|
+
|$)`,"g")}catch{nl=/\n+(?!\n|$)/g}function Qs({comment:n,type:e,value:t},r,s,i){let{blockQuote:o,commentString:a,lineWidth:l}=r.options;if(!o||/\n[\t ]+$/.test(t))return bn(t,r);let c=r.indent||(r.forceBlockIndent||ei(t)?" ":""),d=o==="literal"?!0:o==="folded"||e===Ne.Scalar.BLOCK_FOLDED?!1:e===Ne.Scalar.BLOCK_LITERAL?!0:!mS(t,l,c.length);if(!t)return d?`|
|
|
41
41
|
`:`>
|
|
42
|
-
`;let u,f;for(f=t.length;f>0;--f){let
|
|
43
|
-
`&&
|
|
42
|
+
`;let u,f;for(f=t.length;f>0;--f){let _=t[f-1];if(_!==`
|
|
43
|
+
`&&_!==" "&&_!==" ")break}let p=t.substring(f),m=p.indexOf(`
|
|
44
44
|
`);m===-1?u="-":t===p||m!==p.length-1?(u="+",i&&i()):u="",p&&(t=t.slice(0,-p.length),p[p.length-1]===`
|
|
45
|
-
`&&(p=p.slice(0,-1)),p=p.replace(
|
|
46
|
-
`)A=
|
|
47
|
-
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${c}`),R=!1,$=
|
|
48
|
-
${c}${x}`}return t=t.replace(/\n+/g,`$&${c}`),`|${
|
|
49
|
-
${c}${S}${t}${p}`}function
|
|
45
|
+
`&&(p=p.slice(0,-1)),p=p.replace(nl,`$&${c}`));let h=!1,y,A=-1;for(y=0;y<t.length;++y){let _=t[y];if(_===" ")h=!0;else if(_===`
|
|
46
|
+
`)A=y;else break}let S=t.substring(0,A<y?A+1:y);S&&(t=t.substring(S.length),S=S.replace(/\n+/g,`$&${c}`));let C=(h?c?"2":"1":"")+u;if(n&&(C+=" "+a(n.replace(/ ?[\r\n]+/g," ")),s&&s()),!d){let _=t.replace(/\n+/g,`
|
|
47
|
+
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${c}`),R=!1,$=Zs(r,!0);o!=="folded"&&e!==Ne.Scalar.BLOCK_FOLDED&&($.onOverflow=()=>{R=!0});let x=ht.foldFlowLines(`${S}${_}${p}`,c,ht.FOLD_BLOCK,$);if(!R)return`>${C}
|
|
48
|
+
${c}${x}`}return t=t.replace(/\n+/g,`$&${c}`),`|${C}
|
|
49
|
+
${c}${S}${t}${p}`}function gS(n,e,t,r){let{type:s,value:i}=n,{actualString:o,implicitKey:a,indent:l,indentStep:c,inFlow:d}=e;if(a&&i.includes(`
|
|
50
50
|
`)||d&&/[[\]{},]/.test(i))return bn(i,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(i))return a||d||!i.includes(`
|
|
51
|
-
`)?bn(i,e):
|
|
52
|
-
`))return
|
|
53
|
-
${l}`);if(o){let f=h=>h.default&&h.tag!=="tag:yaml.org,2002:str"&&h.test?.test(u),{compat:p,tags:m}=e.doc.schema;if(m.some(f)||p?.some(f))return bn(i,e)}return a?u:ht.foldFlowLines(u,l,ht.FOLD_FLOW,
|
|
54
|
-
${e.indent}${a}`:a}
|
|
55
|
-
${a}:`):(
|
|
51
|
+
`)?bn(i,e):Qs(n,e,t,r);if(!a&&!d&&s!==Ne.Scalar.PLAIN&&i.includes(`
|
|
52
|
+
`))return Qs(n,e,t,r);if(ei(i)){if(l==="")return e.forceBlockIndent=!0,Qs(n,e,t,r);if(a&&l===c)return bn(i,e)}let u=i.replace(/\n+/g,`$&
|
|
53
|
+
${l}`);if(o){let f=h=>h.default&&h.tag!=="tag:yaml.org,2002:str"&&h.test?.test(u),{compat:p,tags:m}=e.doc.schema;if(m.some(f)||p?.some(f))return bn(i,e)}return a?u:ht.foldFlowLines(u,l,ht.FOLD_FLOW,Zs(e,!1))}function yS(n,e,t,r){let{implicitKey:s,inFlow:i}=e,o=typeof n.value=="string"?n:Object.assign({},n,{value:String(n.value)}),{type:a}=n;a!==Ne.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(a=Ne.Scalar.QUOTE_DOUBLE);let l=d=>{switch(d){case Ne.Scalar.BLOCK_FOLDED:case Ne.Scalar.BLOCK_LITERAL:return s||i?bn(o.value,e):Qs(o,e,t,r);case Ne.Scalar.QUOTE_DOUBLE:return wr(o.value,e);case Ne.Scalar.QUOTE_SINGLE:return tl(o.value,e);case Ne.Scalar.PLAIN:return gS(o,e,t,r);default:return null}},c=l(a);if(c===null){let{defaultKeyType:d,defaultStringType:u}=e.options,f=s&&d||u;if(c=l(f),c===null)throw new Error(`Unsupported default string type ${f}`)}return c}Xf.stringifyString=yS});var Sr=O(rl=>{"use strict";var bS=Ws(),mt=U(),wS=yr(),vS=vr();function SS(n,e){let t=Object.assign({blockQuote:!0,commentString:wS.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},n.schema.toStringOptions,e),r;switch(t.collectionStyle){case"block":r=!1;break;case"flow":r=!0;break;default:r=null}return{anchors:new Set,doc:n,flowCollectionPadding:t.flowCollectionPadding?" ":"",indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:r,options:t}}function kS(n,e){if(e.tag){let s=n.filter(i=>i.tag===e.tag);if(s.length>0)return s.find(i=>i.format===e.format)??s[0]}let t,r;if(mt.isScalar(e)){r=e.value;let s=n.filter(i=>i.identify?.(r));if(s.length>1){let i=s.filter(o=>o.test);i.length>0&&(s=i)}t=s.find(i=>i.format===e.format)??s.find(i=>!i.format)}else r=e,t=n.find(s=>s.nodeClass&&r instanceof s.nodeClass);if(!t){let s=r?.constructor?.name??(r===null?"null":typeof r);throw new Error(`Tag not resolved for ${s} value`)}return t}function xS(n,e,{anchors:t,doc:r}){if(!r.directives)return"";let s=[],i=(mt.isScalar(n)||mt.isCollection(n))&&n.anchor;i&&bS.anchorIsValid(i)&&(t.add(i),s.push(`&${i}`));let o=n.tag??(e.default?null:e.tag);return o&&s.push(r.directives.tagString(o)),s.join(" ")}function ES(n,e,t,r){if(mt.isPair(n))return n.toString(e,t,r);if(mt.isAlias(n)){if(e.doc.directives)return n.toString(e);if(e.resolvedAliases?.has(n))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(n):e.resolvedAliases=new Set([n]),n=n.resolve(e.doc)}let s,i=mt.isNode(n)?n:e.doc.createNode(n,{onTagObj:l=>s=l});s??(s=kS(e.doc.schema.tags,i));let o=xS(i,s,e);o.length>0&&(e.indentAtStart=(e.indentAtStart??0)+o.length+1);let a=typeof s.stringify=="function"?s.stringify(i,e,t,r):mt.isScalar(i)?vS.stringifyString(i,e,t,r):i.toString(e,t,r);return o?mt.isScalar(i)||a[0]==="{"||a[0]==="["?`${o} ${a}`:`${o}
|
|
54
|
+
${e.indent}${a}`:a}rl.createStringifyContext=SS;rl.stringify=ES});var tp=O(ep=>{"use strict";var Ze=U(),Qf=te(),Zf=Sr(),kr=yr();function AS({key:n,value:e},t,r,s){let{allNullValues:i,doc:o,indent:a,indentStep:l,options:{commentString:c,indentSeq:d,simpleKeys:u}}=t,f=Ze.isNode(n)&&n.comment||null;if(u){if(f)throw new Error("With simple keys, key nodes cannot have comments");if(Ze.isCollection(n)||!Ze.isNode(n)&&typeof n=="object"){let $="With simple keys, collection cannot be used as a key value";throw new Error($)}}let p=!u&&(!n||f&&e==null&&!t.inFlow||Ze.isCollection(n)||(Ze.isScalar(n)?n.type===Qf.Scalar.BLOCK_FOLDED||n.type===Qf.Scalar.BLOCK_LITERAL:typeof n=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!p&&(u||!i),indent:a+l});let m=!1,h=!1,y=Zf.stringify(n,t,()=>m=!0,()=>h=!0);if(!p&&!t.inFlow&&y.length>1024){if(u)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");p=!0}if(t.inFlow){if(i||e==null)return m&&r&&r(),y===""?"?":p?`? ${y}`:y}else if(i&&!u||e==null&&p)return y=`? ${y}`,f&&!m?y+=kr.lineComment(y,t.indent,c(f)):h&&s&&s(),y;m&&(f=null),p?(f&&(y+=kr.lineComment(y,t.indent,c(f))),y=`? ${y}
|
|
55
|
+
${a}:`):(y=`${y}:`,f&&(y+=kr.lineComment(y,t.indent,c(f))));let A,S,P;Ze.isNode(e)?(A=!!e.spaceBefore,S=e.commentBefore,P=e.comment):(A=!1,S=null,P=null,e&&typeof e=="object"&&(e=o.createNode(e))),t.implicitKey=!1,!p&&!f&&Ze.isScalar(e)&&(t.indentAtStart=y.length+1),h=!1,!d&&l.length>=2&&!t.inFlow&&!p&&Ze.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let C=!1,_=Zf.stringify(e,t,()=>C=!0,()=>h=!0),R=" ";if(f||A||S){if(R=A?`
|
|
56
56
|
`:"",S){let $=c(S);R+=`
|
|
57
|
-
${kr.indentComment($,t.indent)}`}
|
|
57
|
+
${kr.indentComment($,t.indent)}`}_===""&&!t.inFlow?R===`
|
|
58
58
|
`&&P&&(R=`
|
|
59
59
|
|
|
60
60
|
`):R+=`
|
|
61
|
-
${t.indent}`}else if(!p&&Ze.isCollection(e)){let $=
|
|
62
|
-
`),D=x!==-1,K=t.inFlow??e.flow??e.items.length===0;if(D||!K){let q=!1;if(D&&($==="&"||$==="!")){let
|
|
63
|
-
${t.indent}`)}}else(
|
|
64
|
-
`)&&(R="");return
|
|
61
|
+
${t.indent}`}else if(!p&&Ze.isCollection(e)){let $=_[0],x=_.indexOf(`
|
|
62
|
+
`),D=x!==-1,K=t.inFlow??e.flow??e.items.length===0;if(D||!K){let q=!1;if(D&&($==="&"||$==="!")){let b=_.indexOf(" ");$==="&"&&b!==-1&&b<x&&_[b+1]==="!"&&(b=_.indexOf(" ",b+1)),(b===-1||x<b)&&(q=!0)}q||(R=`
|
|
63
|
+
${t.indent}`)}}else(_===""||_[0]===`
|
|
64
|
+
`)&&(R="");return y+=R+_,t.inFlow?C&&r&&r():P&&!C?y+=kr.lineComment(y,t.indent,c(P)):h&&s&&s(),y}ep.stringifyPair=AS});var il=O(sl=>{"use strict";var np=$s("process");function TS(n,...e){n==="debug"&&console.log(...e)}function OS(n,e){(n==="debug"||n==="warn")&&(typeof np.emitWarning=="function"?np.emitWarning(e):console.warn(e))}sl.debug=TS;sl.warn=OS});var si=O(ri=>{"use strict";var xr=U(),rp=te(),ti="<<",ni={identify:n=>n===ti||typeof n=="symbol"&&n.description===ti,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new rp.Scalar(Symbol(ti)),{addToJSMap:sp}),stringify:()=>ti},PS=(n,e)=>(ni.identify(e)||xr.isScalar(e)&&(!e.type||e.type===rp.Scalar.PLAIN)&&ni.identify(e.value))&&n?.doc.schema.tags.some(t=>t.tag===ni.tag&&t.default);function sp(n,e,t){if(t=n&&xr.isAlias(t)?t.resolve(n.doc):t,xr.isSeq(t))for(let r of t.items)ol(n,e,r);else if(Array.isArray(t))for(let r of t)ol(n,e,r);else ol(n,e,t)}function ol(n,e,t){let r=n&&xr.isAlias(t)?t.resolve(n.doc):t;if(!xr.isMap(r))throw new Error("Merge sources must be maps or map aliases");let s=r.toJSON(null,n,Map);for(let[i,o]of s)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}ri.addMergeToJSMap=sp;ri.isMergeKey=PS;ri.merge=ni});var ll=O(ap=>{"use strict";var CS=il(),ip=si(),_S=Sr(),op=U(),al=ft();function RS(n,e,{key:t,value:r}){if(op.isNode(t)&&t.addToJSMap)t.addToJSMap(n,e,r);else if(ip.isMergeKey(n,t))ip.addMergeToJSMap(n,e,r);else{let s=al.toJS(t,"",n);if(e instanceof Map)e.set(s,al.toJS(r,s,n));else if(e instanceof Set)e.add(s);else{let i=IS(t,s,n),o=al.toJS(r,i,n);i in e?Object.defineProperty(e,i,{value:o,writable:!0,enumerable:!0,configurable:!0}):e[i]=o}}return e}function IS(n,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(op.isNode(n)&&t?.doc){let r=_S.createStringifyContext(t.doc,{});r.anchors=new Set;for(let i of t.anchors.keys())r.anchors.add(i.anchor);r.inFlow=!0,r.inStringifyKey=!0;let s=n.toString(r);if(!t.mapKeyWarned){let i=JSON.stringify(s);i.length>40&&(i=i.substring(0,36)+'..."'),CS.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 s}return JSON.stringify(e)}ap.addPairToJSMap=RS});var gt=O(cl=>{"use strict";var lp=gr(),NS=tp(),$S=ll(),ii=U();function LS(n,e,t){let r=lp.createNode(n,void 0,t),s=lp.createNode(e,void 0,t);return new oi(r,s)}var oi=class n{constructor(e,t=null){Object.defineProperty(this,ii.NODE_TYPE,{value:ii.PAIR}),this.key=e,this.value=t}clone(e){let{key:t,value:r}=this;return ii.isNode(t)&&(t=t.clone(e)),ii.isNode(r)&&(r=r.clone(e)),new n(t,r)}toJSON(e,t){let r=t?.mapAsMap?new Map:{};return $S.addPairToJSMap(t,r,this)}toString(e,t,r){return e?.doc?NS.stringifyPair(this,e,t,r):JSON.stringify(this)}};cl.Pair=oi;cl.createPair=LS});var ul=O(up=>{"use strict";var qt=U(),cp=Sr(),ai=yr();function MS(n,e,t){return(e.inFlow??n.flow?DS:BS)(n,e,t)}function BS({comment:n,items:e},t,{blockItemPrefix:r,flowChars:s,itemIndent:i,onChompKeep:o,onComment:a}){let{indent:l,options:{commentString:c}}=t,d=Object.assign({},t,{indent:i,type:null}),u=!1,f=[];for(let m=0;m<e.length;++m){let h=e[m],y=null;if(qt.isNode(h))!u&&h.spaceBefore&&f.push(""),li(t,f,h.commentBefore,u),h.comment&&(y=h.comment);else if(qt.isPair(h)){let S=qt.isNode(h.key)?h.key:null;S&&(!u&&S.spaceBefore&&f.push(""),li(t,f,S.commentBefore,u))}u=!1;let A=cp.stringify(h,d,()=>y=null,()=>u=!0);y&&(A+=ai.lineComment(A,i,c(y))),u&&y&&(u=!1),f.push(r+A)}let p;if(f.length===0)p=s.start+s.end;else{p=f[0];for(let m=1;m<f.length;++m){let h=f[m];p+=h?`
|
|
65
65
|
${l}${h}`:`
|
|
66
66
|
`}}return n?(p+=`
|
|
67
|
-
`+
|
|
68
|
-
`))&&(c=!0),u.push(A),d=u.length}let{start:f,end:p}=t;if(u.length===0)return f+p;if(!c){let m=u.reduce((h,
|
|
67
|
+
`+ai.indentComment(c(n),l),a&&a()):u&&o&&o(),p}function DS({items:n},e,{flowChars:t,itemIndent:r}){let{indent:s,indentStep:i,flowCollectionPadding:o,options:{commentString:a}}=e;r+=i;let l=Object.assign({},e,{indent:r,inFlow:!0,type:null}),c=!1,d=0,u=[];for(let m=0;m<n.length;++m){let h=n[m],y=null;if(qt.isNode(h))h.spaceBefore&&u.push(""),li(e,u,h.commentBefore,!1),h.comment&&(y=h.comment);else if(qt.isPair(h)){let S=qt.isNode(h.key)?h.key:null;S&&(S.spaceBefore&&u.push(""),li(e,u,S.commentBefore,!1),S.comment&&(c=!0));let P=qt.isNode(h.value)?h.value:null;P?(P.comment&&(y=P.comment),P.commentBefore&&(c=!0)):h.value==null&&S?.comment&&(y=S.comment)}y&&(c=!0);let A=cp.stringify(h,l,()=>y=null);m<n.length-1&&(A+=","),y&&(A+=ai.lineComment(A,r,a(y))),!c&&(u.length>d||A.includes(`
|
|
68
|
+
`))&&(c=!0),u.push(A),d=u.length}let{start:f,end:p}=t;if(u.length===0)return f+p;if(!c){let m=u.reduce((h,y)=>h+y.length+2,2);c=e.options.lineWidth>0&&m>e.options.lineWidth}if(c){let m=f;for(let h of u)m+=h?`
|
|
69
69
|
${i}${s}${h}`:`
|
|
70
70
|
`;return`${m}
|
|
71
|
-
${s}${p}`}else return`${f}${o}${u.join(" ")}${o}${p}`}function
|
|
72
|
-
`:" ")}return
|
|
71
|
+
${s}${p}`}else return`${f}${o}${u.join(" ")}${o}${p}`}function li({indent:n,options:{commentString:e}},t,r,s){if(r&&s&&(r=r.replace(/^\n+/,"")),r){let i=ai.indentComment(e(r),n);t.push(i.trimStart())}}up.stringifyCollection=MS});var bt=O(fl=>{"use strict";var jS=ul(),FS=ll(),US=zs(),yt=U(),ci=gt(),qS=te();function Er(n,e){let t=yt.isScalar(e)?e.value:e;for(let r of n)if(yt.isPair(r)&&(r.key===e||r.key===t||yt.isScalar(r.key)&&r.key.value===t))return r}var dl=class extends US.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(yt.MAP,e),this.items=[]}static from(e,t,r){let{keepUndefined:s,replacer:i}=r,o=new this(e),a=(l,c)=>{if(typeof i=="function")c=i.call(t,l,c);else if(Array.isArray(i)&&!i.includes(l))return;(c!==void 0||s)&&o.items.push(ci.createPair(l,c,r))};if(t instanceof Map)for(let[l,c]of t)a(l,c);else if(t&&typeof t=="object")for(let l of Object.keys(t))a(l,t[l]);return typeof e.sortMapEntries=="function"&&o.items.sort(e.sortMapEntries),o}add(e,t){let r;yt.isPair(e)?r=e:!e||typeof e!="object"||!("key"in e)?r=new ci.Pair(e,e?.value):r=new ci.Pair(e.key,e.value);let s=Er(this.items,r.key),i=this.schema?.sortMapEntries;if(s){if(!t)throw new Error(`Key ${r.key} already set`);yt.isScalar(s.value)&&qS.isScalarValue(r.value)?s.value.value=r.value:s.value=r.value}else if(i){let o=this.items.findIndex(a=>i(r,a)<0);o===-1?this.items.push(r):this.items.splice(o,0,r)}else this.items.push(r)}delete(e){let t=Er(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let s=Er(this.items,e)?.value;return(!t&&yt.isScalar(s)?s.value:s)??void 0}has(e){return!!Er(this.items,e)}set(e,t){this.add(new ci.Pair(e,t),!0)}toJSON(e,t,r){let s=r?new r:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(s);for(let i of this.items)FS.addPairToJSMap(t,s,i);return s}toString(e,t,r){if(!e)return JSON.stringify(this);for(let s of this.items)if(!yt.isPair(s))throw new Error(`Map items must all be pairs; found ${JSON.stringify(s)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),jS.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:r,onComment:t})}};fl.YAMLMap=dl;fl.findPair=Er});var wn=O(fp=>{"use strict";var JS=U(),dp=bt(),KS={collection:"map",default:!0,nodeClass:dp.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(n,e){return JS.isMap(n)||e("Expected a mapping for this tag"),n},createNode:(n,e,t)=>dp.YAMLMap.from(n,e,t)};fp.map=KS});var wt=O(pp=>{"use strict";var WS=gr(),HS=ul(),YS=zs(),di=U(),VS=te(),zS=ft(),pl=class extends YS.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(di.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=ui(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let r=ui(e);if(typeof r!="number")return;let s=this.items[r];return!t&&di.isScalar(s)?s.value:s}has(e){let t=ui(e);return typeof t=="number"&&t<this.items.length}set(e,t){let r=ui(e);if(typeof r!="number")throw new Error(`Expected a valid index, not ${e}.`);let s=this.items[r];di.isScalar(s)&&VS.isScalarValue(t)?s.value=t:this.items[r]=t}toJSON(e,t){let r=[];t?.onCreate&&t.onCreate(r);let s=0;for(let i of this.items)r.push(zS.toJS(i,String(s++),t));return r}toString(e,t,r){return e?HS.stringifyCollection(this,e,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(e.indent||"")+" ",onChompKeep:r,onComment:t}):JSON.stringify(this)}static from(e,t,r){let{replacer:s}=r,i=new this(e);if(t&&Symbol.iterator in Object(t)){let o=0;for(let a of t){if(typeof s=="function"){let l=t instanceof Set?a:String(o++);a=s.call(t,l,a)}i.items.push(WS.createNode(a,void 0,r))}}return i}};function ui(n){let e=di.isScalar(n)?n.value:n;return e&&typeof e=="string"&&(e=Number(e)),typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}pp.YAMLSeq=pl});var vn=O(mp=>{"use strict";var GS=U(),hp=wt(),XS={collection:"seq",default:!0,nodeClass:hp.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(n,e){return GS.isSeq(n)||e("Expected a sequence for this tag"),n},createNode:(n,e,t)=>hp.YAMLSeq.from(n,e,t)};mp.seq=XS});var Ar=O(gp=>{"use strict";var QS=vr(),ZS={identify:n=>typeof n=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:n=>n,stringify(n,e,t,r){return e=Object.assign({actualString:!0},e),QS.stringifyString(n,e,t,r)}};gp.string=ZS});var fi=O(wp=>{"use strict";var yp=te(),bp={identify:n=>n==null,createNode:()=>new yp.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new yp.Scalar(null),stringify:({source:n},e)=>typeof n=="string"&&bp.test.test(n)?n:e.options.nullStr};wp.nullTag=bp});var hl=O(Sp=>{"use strict";var ek=te(),vp={identify:n=>typeof n=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:n=>new ek.Scalar(n[0]==="t"||n[0]==="T"),stringify({source:n,value:e},t){if(n&&vp.test.test(n)){let r=n[0]==="t"||n[0]==="T";if(e===r)return n}return e?t.options.trueStr:t.options.falseStr}};Sp.boolTag=vp});var Sn=O(kp=>{"use strict";function tk({format:n,minFractionDigits:e,tag:t,value:r}){if(typeof r=="bigint")return String(r);let s=typeof r=="number"?r:Number(r);if(!isFinite(s))return isNaN(s)?".nan":s<0?"-.inf":".inf";let i=Object.is(r,-0)?"-0":JSON.stringify(r);if(!n&&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}kp.stringifyNumber=tk});var gl=O(pi=>{"use strict";var nk=te(),ml=Sn(),rk={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:n=>n.slice(-3).toLowerCase()==="nan"?NaN:n[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ml.stringifyNumber},sk={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:n=>parseFloat(n),stringify(n){let e=Number(n.value);return isFinite(e)?e.toExponential():ml.stringifyNumber(n)}},ik={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(n){let e=new nk.Scalar(parseFloat(n)),t=n.indexOf(".");return t!==-1&&n[n.length-1]==="0"&&(e.minFractionDigits=n.length-t-1),e},stringify:ml.stringifyNumber};pi.float=ik;pi.floatExp=sk;pi.floatNaN=rk});var bl=O(mi=>{"use strict";var xp=Sn(),hi=n=>typeof n=="bigint"||Number.isInteger(n),yl=(n,e,t,{intAsBigInt:r})=>r?BigInt(n):parseInt(n.substring(e),t);function Ep(n,e,t){let{value:r}=n;return hi(r)&&r>=0?t+r.toString(e):xp.stringifyNumber(n)}var ok={identify:n=>hi(n)&&n>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(n,e,t)=>yl(n,2,8,t),stringify:n=>Ep(n,8,"0o")},ak={identify:hi,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(n,e,t)=>yl(n,0,10,t),stringify:xp.stringifyNumber},lk={identify:n=>hi(n)&&n>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(n,e,t)=>yl(n,2,16,t),stringify:n=>Ep(n,16,"0x")};mi.int=ak;mi.intHex=lk;mi.intOct=ok});var Tp=O(Ap=>{"use strict";var ck=wn(),uk=fi(),dk=vn(),fk=Ar(),pk=hl(),wl=gl(),vl=bl(),hk=[ck.map,dk.seq,fk.string,uk.nullTag,pk.boolTag,vl.intOct,vl.int,vl.intHex,wl.floatNaN,wl.floatExp,wl.float];Ap.schema=hk});var Cp=O(Pp=>{"use strict";var mk=te(),gk=wn(),yk=vn();function Op(n){return typeof n=="bigint"||Number.isInteger(n)}var gi=({value:n})=>JSON.stringify(n),bk=[{identify:n=>typeof n=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:n=>n,stringify:gi},{identify:n=>n==null,createNode:()=>new mk.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:gi},{identify:n=>typeof n=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:n=>n==="true",stringify:gi},{identify:Op,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(n,e,{intAsBigInt:t})=>t?BigInt(n):parseInt(n,10),stringify:({value:n})=>Op(n)?n.toString():JSON.stringify(n)},{identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:n=>parseFloat(n),stringify:gi}],wk={default:!0,tag:"",test:/^/,resolve(n,e){return e(`Unresolved plain scalar ${JSON.stringify(n)}`),n}},vk=[gk.map,yk.seq].concat(bk,wk);Pp.schema=vk});var kl=O(_p=>{"use strict";var Tr=$s("buffer"),Sl=te(),Sk=vr(),kk={identify:n=>n instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(n,e){if(typeof Tr.Buffer=="function")return Tr.Buffer.from(n,"base64");if(typeof atob=="function"){let t=atob(n.replace(/[\n\r]/g,"")),r=new Uint8Array(t.length);for(let s=0;s<t.length;++s)r[s]=t.charCodeAt(s);return r}else return e("This environment does not support reading binary tags; either Buffer or atob is required"),n},stringify({comment:n,type:e,value:t},r,s,i){if(!t)return"";let o=t,a;if(typeof Tr.Buffer=="function")a=o instanceof Tr.Buffer?o.toString("base64"):Tr.Buffer.from(o.buffer).toString("base64");else if(typeof btoa=="function"){let l="";for(let c=0;c<o.length;++c)l+=String.fromCharCode(o[c]);a=btoa(l)}else throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(e??(e=Sl.Scalar.BLOCK_LITERAL),e!==Sl.Scalar.QUOTE_DOUBLE){let l=Math.max(r.options.lineWidth-r.indent.length,r.options.minContentWidth),c=Math.ceil(a.length/l),d=new Array(c);for(let u=0,f=0;u<c;++u,f+=l)d[u]=a.substr(f,l);a=d.join(e===Sl.Scalar.BLOCK_LITERAL?`
|
|
72
|
+
`:" ")}return Sk.stringifyString({comment:n,type:e,value:a},r,s,i)}};_p.binary=kk});var wi=O(bi=>{"use strict";var yi=U(),xl=gt(),xk=te(),Ek=wt();function Rp(n,e){if(yi.isSeq(n))for(let t=0;t<n.items.length;++t){let r=n.items[t];if(!yi.isPair(r)){if(yi.isMap(r)){r.items.length>1&&e("Each pair must have its own sequence indicator");let s=r.items[0]||new xl.Pair(new xk.Scalar(null));if(r.commentBefore&&(s.key.commentBefore=s.key.commentBefore?`${r.commentBefore}
|
|
73
73
|
${s.key.commentBefore}`:r.commentBefore),r.comment){let i=s.value??s.key;i.comment=i.comment?`${r.comment}
|
|
74
|
-
${i.comment}`:r.comment}r=s}n.items[t]=gi.isPair(r)?r:new Sl.Pair(r)}}else e("Expected a sequence for this tag");return n}function Cp(n,e,t){let{replacer:r}=t,s=new bk.YAMLSeq(n);s.tag="tag:yaml.org,2002:pairs";let i=0;if(e&&Symbol.iterator in Object(e))for(let o of e){typeof r=="function"&&(o=r.call(e,String(i++),o));let a,l;if(Array.isArray(o))if(o.length===2)a=o[0],l=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let c=Object.keys(o);if(c.length===1)a=c[0],l=o[a];else throw new TypeError(`Expected tuple with one key, not ${c.length} keys`)}else a=o;s.items.push(Sl.createPair(a,l,t))}return s}var wk={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Pp,createNode:Cp};yi.createPairs=Cp;yi.pairs=wk;yi.resolvePairs=Pp});var El=O(xl=>{"use strict";var Rp=U(),kl=ft(),Or=bt(),vk=wt(),_p=bi(),Jt=class n extends vk.YAMLSeq{constructor(){super(),this.add=Or.YAMLMap.prototype.add.bind(this),this.delete=Or.YAMLMap.prototype.delete.bind(this),this.get=Or.YAMLMap.prototype.get.bind(this),this.has=Or.YAMLMap.prototype.has.bind(this),this.set=Or.YAMLMap.prototype.set.bind(this),this.tag=n.tag}toJSON(e,t){if(!t)return super.toJSON(e);let r=new Map;t?.onCreate&&t.onCreate(r);for(let s of this.items){let i,o;if(Rp.isPair(s)?(i=kl.toJS(s.key,"",t),o=kl.toJS(s.value,i,t)):i=kl.toJS(s,"",t),r.has(i))throw new Error("Ordered maps must not include duplicate keys");r.set(i,o)}return r}static from(e,t,r){let s=_p.createPairs(e,t,r),i=new this;return i.items=s.items,i}};Jt.tag="tag:yaml.org,2002:omap";var Sk={collection:"seq",identify:n=>n instanceof Map,nodeClass:Jt,default:!1,tag:"tag:yaml.org,2002:omap",resolve(n,e){let t=_p.resolvePairs(n,e),r=[];for(let{key:s}of t.items)Rp.isScalar(s)&&(r.includes(s.value)?e(`Ordered maps must not include duplicate keys: ${s.value}`):r.push(s.value));return Object.assign(new Jt,t)},createNode:(n,e,t)=>Jt.from(n,e,t)};xl.YAMLOMap=Jt;xl.omap=Sk});var Mp=O(Al=>{"use strict";var Np=te();function Ip({value:n,source:e},t){return e&&(n?$p:Lp).test.test(e)?e:n?t.options.trueStr:t.options.falseStr}var $p={identify:n=>n===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new Np.Scalar(!0),stringify:Ip},Lp={identify:n=>n===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new Np.Scalar(!1),stringify:Ip};Al.falseTag=Lp;Al.trueTag=$p});var Bp=O(wi=>{"use strict";var kk=te(),Tl=Sn(),xk={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:n=>n.slice(-3).toLowerCase()==="nan"?NaN:n[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Tl.stringifyNumber},Ek={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:n=>parseFloat(n.replace(/_/g,"")),stringify(n){let e=Number(n.value);return isFinite(e)?e.toExponential():Tl.stringifyNumber(n)}},Ak={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(n){let e=new kk.Scalar(parseFloat(n.replace(/_/g,""))),t=n.indexOf(".");if(t!==-1){let r=n.substring(t+1).replace(/_/g,"");r[r.length-1]==="0"&&(e.minFractionDigits=r.length)}return e},stringify:Tl.stringifyNumber};wi.float=Ak;wi.floatExp=Ek;wi.floatNaN=xk});var jp=O(Cr=>{"use strict";var Dp=Sn(),Pr=n=>typeof n=="bigint"||Number.isInteger(n);function vi(n,e,t,{intAsBigInt:r}){let s=n[0];if((s==="-"||s==="+")&&(e+=1),n=n.substring(e).replace(/_/g,""),r){switch(t){case 2:n=`0b${n}`;break;case 8:n=`0o${n}`;break;case 16:n=`0x${n}`;break}let o=BigInt(n);return s==="-"?BigInt(-1)*o:o}let i=parseInt(n,t);return s==="-"?-1*i:i}function Ol(n,e,t){let{value:r}=n;if(Pr(r)){let s=r.toString(e);return r<0?"-"+t+s.substr(1):t+s}return Dp.stringifyNumber(n)}var Tk={identify:Pr,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(n,e,t)=>vi(n,2,2,t),stringify:n=>Ol(n,2,"0b")},Ok={identify:Pr,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(n,e,t)=>vi(n,1,8,t),stringify:n=>Ol(n,8,"0")},Pk={identify:Pr,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(n,e,t)=>vi(n,0,10,t),stringify:Dp.stringifyNumber},Ck={identify:Pr,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(n,e,t)=>vi(n,2,16,t),stringify:n=>Ol(n,16,"0x")};Cr.int=Pk;Cr.intBin=Tk;Cr.intHex=Ck;Cr.intOct=Ok});var Cl=O(Pl=>{"use strict";var xi=U(),Si=gt(),ki=bt(),Kt=class n extends ki.YAMLMap{constructor(e){super(e),this.tag=n.tag}add(e){let t;xi.isPair(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new Si.Pair(e.key,null):t=new Si.Pair(e,null),ki.findPair(this.items,t.key)||this.items.push(t)}get(e,t){let r=ki.findPair(this.items,e);return!t&&xi.isPair(r)?xi.isScalar(r.key)?r.key.value:r.key:r}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 r=ki.findPair(this.items,e);r&&!t?this.items.splice(this.items.indexOf(r),1):!r&&t&&this.items.push(new Si.Pair(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,r){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,r);throw new Error("Set items must all have null values")}static from(e,t,r){let{replacer:s}=r,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let o of t)typeof s=="function"&&(o=s.call(t,o,o)),i.items.push(Si.createPair(o,null,r));return i}};Kt.tag="tag:yaml.org,2002:set";var Rk={collection:"map",identify:n=>n instanceof Set,nodeClass:Kt,default:!1,tag:"tag:yaml.org,2002:set",createNode:(n,e,t)=>Kt.from(n,e,t),resolve(n,e){if(xi.isMap(n)){if(n.hasAllNullValues(!0))return Object.assign(new Kt,n);e("Set items must all have null values")}else e("Expected a mapping for this tag");return n}};Pl.YAMLSet=Kt;Pl.set=Rk});var _l=O(Ei=>{"use strict";var _k=Sn();function Rl(n,e){let t=n[0],r=t==="-"||t==="+"?n.substring(1):n,s=o=>e?BigInt(o):Number(o),i=r.replace(/_/g,"").split(":").reduce((o,a)=>o*s(60)+s(a),s(0));return t==="-"?s(-1)*i:i}function Fp(n){let{value:e}=n,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return _k.stringifyNumber(n);let r="";e<0&&(r="-",e*=t(-1));let s=t(60),i=[e%s];return e<60?i.unshift(0):(e=(e-i[0])/s,i.unshift(e%s),e>=60&&(e=(e-i[0])/s,i.unshift(e))),r+i.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var Nk={identify:n=>typeof n=="bigint"||Number.isInteger(n),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(n,e,{intAsBigInt:t})=>Rl(n,t),stringify:Fp},Ik={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:n=>Rl(n,!1),stringify:Fp},Up={identify:n=>n 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(n){let e=n.match(Up.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,t,r,s,i,o,a]=e.map(Number),l=e[7]?Number((e[7]+"00").substr(1,3)):0,c=Date.UTC(t,r-1,s,i||0,o||0,a||0,l),d=e[8];if(d&&d!=="Z"){let u=Rl(d,!1);Math.abs(u)<30&&(u*=60),c-=6e4*u}return new Date(c)},stringify:({value:n})=>n?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};Ei.floatTime=Ik;Ei.intTime=Nk;Ei.timestamp=Up});var Kp=O(Jp=>{"use strict";var $k=wn(),Lk=di(),Mk=vn(),Bk=Ar(),Dk=vl(),qp=Mp(),Nl=Bp(),Ai=jp(),jk=ri(),Fk=El(),Uk=bi(),qk=Cl(),Il=_l(),Jk=[$k.map,Mk.seq,Bk.string,Lk.nullTag,qp.trueTag,qp.falseTag,Ai.intBin,Ai.intOct,Ai.int,Ai.intHex,Nl.floatNaN,Nl.floatExp,Nl.float,Dk.binary,jk.merge,Fk.omap,Uk.pairs,qk.set,Il.intTime,Il.floatTime,Il.timestamp];Jp.schema=Jk});var eh=O(Ml=>{"use strict";var Vp=wn(),Kk=di(),zp=vn(),Hk=Ar(),Wk=fl(),$l=hl(),Ll=gl(),Yk=xp(),Vk=Tp(),Gp=vl(),Rr=ri(),Xp=El(),Qp=bi(),Hp=Kp(),Zp=Cl(),Ti=_l(),Wp=new Map([["core",Yk.schema],["failsafe",[Vp.map,zp.seq,Hk.string]],["json",Vk.schema],["yaml11",Hp.schema],["yaml-1.1",Hp.schema]]),Yp={binary:Gp.binary,bool:Wk.boolTag,float:$l.float,floatExp:$l.floatExp,floatNaN:$l.floatNaN,floatTime:Ti.floatTime,int:Ll.int,intHex:Ll.intHex,intOct:Ll.intOct,intTime:Ti.intTime,map:Vp.map,merge:Rr.merge,null:Kk.nullTag,omap:Xp.omap,pairs:Qp.pairs,seq:zp.seq,set:Zp.set,timestamp:Ti.timestamp},zk={"tag:yaml.org,2002:binary":Gp.binary,"tag:yaml.org,2002:merge":Rr.merge,"tag:yaml.org,2002:omap":Xp.omap,"tag:yaml.org,2002:pairs":Qp.pairs,"tag:yaml.org,2002:set":Zp.set,"tag:yaml.org,2002:timestamp":Ti.timestamp};function Gk(n,e,t){let r=Wp.get(e);if(r&&!n)return t&&!r.includes(Rr.merge)?r.concat(Rr.merge):r.slice();let s=r;if(!s)if(Array.isArray(n))s=[];else{let i=Array.from(Wp.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(n))for(let i of n)s=s.concat(i);else typeof n=="function"&&(s=n(s.slice()));return t&&(s=s.concat(Rr.merge)),s.reduce((i,o)=>{let a=typeof o=="string"?Yp[o]:o;if(!a){let l=JSON.stringify(o),c=Object.keys(Yp).map(d=>JSON.stringify(d)).join(", ");throw new Error(`Unknown custom tag ${l}; use one of ${c}`)}return i.includes(a)||i.push(a),i},[])}Ml.coreKnownTags=zk;Ml.getTags=Gk});var jl=O(th=>{"use strict";var Bl=U(),Xk=wn(),Qk=vn(),Zk=Ar(),Oi=eh(),ex=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0,Dl=class n{constructor({compat:e,customTags:t,merge:r,resolveKnownTags:s,schema:i,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?Oi.getTags(e,"compat"):e?Oi.getTags(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=s?Oi.coreKnownTags:{},this.tags=Oi.getTags(t,this.name,r),this.toStringOptions=a??null,Object.defineProperty(this,Bl.MAP,{value:Xk.map}),Object.defineProperty(this,Bl.SCALAR,{value:Zk.string}),Object.defineProperty(this,Bl.SEQ,{value:Qk.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?ex:null}clone(){let e=Object.create(n.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};th.Schema=Dl});var rh=O(nh=>{"use strict";var tx=U(),Fl=Sr(),_r=yr();function nx(n,e){let t=[],r=e.directives===!0;if(e.directives!==!1&&n.directives){let l=n.directives.toString(n);l?(t.push(l),r=!0):n.directives.docStart&&(r=!0)}r&&t.push("---");let s=Fl.createStringifyContext(n,e),{commentString:i}=s.options;if(n.commentBefore){t.length!==1&&t.unshift("");let l=i(n.commentBefore);t.unshift(_r.indentComment(l,""))}let o=!1,a=null;if(n.contents){if(tx.isNode(n.contents)){if(n.contents.spaceBefore&&r&&t.push(""),n.contents.commentBefore){let d=i(n.contents.commentBefore);t.push(_r.indentComment(d,""))}s.forceBlockIndent=!!n.comment,a=n.contents.comment}let l=a?void 0:()=>o=!0,c=Fl.stringify(n.contents,s,()=>a=null,l);a&&(c+=_r.lineComment(c,"",i(a))),(c[0]==="|"||c[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${c}`:t.push(c)}else t.push(Fl.stringify(n.contents,s));if(n.directives?.docEnd)if(n.comment){let l=i(n.comment);l.includes(`
|
|
75
|
-
`)?(t.push("..."),t.push(
|
|
74
|
+
${i.comment}`:r.comment}r=s}n.items[t]=yi.isPair(r)?r:new xl.Pair(r)}}else e("Expected a sequence for this tag");return n}function Ip(n,e,t){let{replacer:r}=t,s=new Ek.YAMLSeq(n);s.tag="tag:yaml.org,2002:pairs";let i=0;if(e&&Symbol.iterator in Object(e))for(let o of e){typeof r=="function"&&(o=r.call(e,String(i++),o));let a,l;if(Array.isArray(o))if(o.length===2)a=o[0],l=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let c=Object.keys(o);if(c.length===1)a=c[0],l=o[a];else throw new TypeError(`Expected tuple with one key, not ${c.length} keys`)}else a=o;s.items.push(xl.createPair(a,l,t))}return s}var Ak={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Rp,createNode:Ip};bi.createPairs=Ip;bi.pairs=Ak;bi.resolvePairs=Rp});var Tl=O(Al=>{"use strict";var Np=U(),El=ft(),Or=bt(),Tk=wt(),$p=wi(),Jt=class n extends Tk.YAMLSeq{constructor(){super(),this.add=Or.YAMLMap.prototype.add.bind(this),this.delete=Or.YAMLMap.prototype.delete.bind(this),this.get=Or.YAMLMap.prototype.get.bind(this),this.has=Or.YAMLMap.prototype.has.bind(this),this.set=Or.YAMLMap.prototype.set.bind(this),this.tag=n.tag}toJSON(e,t){if(!t)return super.toJSON(e);let r=new Map;t?.onCreate&&t.onCreate(r);for(let s of this.items){let i,o;if(Np.isPair(s)?(i=El.toJS(s.key,"",t),o=El.toJS(s.value,i,t)):i=El.toJS(s,"",t),r.has(i))throw new Error("Ordered maps must not include duplicate keys");r.set(i,o)}return r}static from(e,t,r){let s=$p.createPairs(e,t,r),i=new this;return i.items=s.items,i}};Jt.tag="tag:yaml.org,2002:omap";var Ok={collection:"seq",identify:n=>n instanceof Map,nodeClass:Jt,default:!1,tag:"tag:yaml.org,2002:omap",resolve(n,e){let t=$p.resolvePairs(n,e),r=[];for(let{key:s}of t.items)Np.isScalar(s)&&(r.includes(s.value)?e(`Ordered maps must not include duplicate keys: ${s.value}`):r.push(s.value));return Object.assign(new Jt,t)},createNode:(n,e,t)=>Jt.from(n,e,t)};Al.YAMLOMap=Jt;Al.omap=Ok});var jp=O(Ol=>{"use strict";var Lp=te();function Mp({value:n,source:e},t){return e&&(n?Bp:Dp).test.test(e)?e:n?t.options.trueStr:t.options.falseStr}var Bp={identify:n=>n===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new Lp.Scalar(!0),stringify:Mp},Dp={identify:n=>n===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new Lp.Scalar(!1),stringify:Mp};Ol.falseTag=Dp;Ol.trueTag=Bp});var Fp=O(vi=>{"use strict";var Pk=te(),Pl=Sn(),Ck={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:n=>n.slice(-3).toLowerCase()==="nan"?NaN:n[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Pl.stringifyNumber},_k={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:n=>parseFloat(n.replace(/_/g,"")),stringify(n){let e=Number(n.value);return isFinite(e)?e.toExponential():Pl.stringifyNumber(n)}},Rk={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(n){let e=new Pk.Scalar(parseFloat(n.replace(/_/g,""))),t=n.indexOf(".");if(t!==-1){let r=n.substring(t+1).replace(/_/g,"");r[r.length-1]==="0"&&(e.minFractionDigits=r.length)}return e},stringify:Pl.stringifyNumber};vi.float=Rk;vi.floatExp=_k;vi.floatNaN=Ck});var qp=O(Cr=>{"use strict";var Up=Sn(),Pr=n=>typeof n=="bigint"||Number.isInteger(n);function Si(n,e,t,{intAsBigInt:r}){let s=n[0];if((s==="-"||s==="+")&&(e+=1),n=n.substring(e).replace(/_/g,""),r){switch(t){case 2:n=`0b${n}`;break;case 8:n=`0o${n}`;break;case 16:n=`0x${n}`;break}let o=BigInt(n);return s==="-"?BigInt(-1)*o:o}let i=parseInt(n,t);return s==="-"?-1*i:i}function Cl(n,e,t){let{value:r}=n;if(Pr(r)){let s=r.toString(e);return r<0?"-"+t+s.substr(1):t+s}return Up.stringifyNumber(n)}var Ik={identify:Pr,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(n,e,t)=>Si(n,2,2,t),stringify:n=>Cl(n,2,"0b")},Nk={identify:Pr,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(n,e,t)=>Si(n,1,8,t),stringify:n=>Cl(n,8,"0")},$k={identify:Pr,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(n,e,t)=>Si(n,0,10,t),stringify:Up.stringifyNumber},Lk={identify:Pr,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(n,e,t)=>Si(n,2,16,t),stringify:n=>Cl(n,16,"0x")};Cr.int=$k;Cr.intBin=Ik;Cr.intHex=Lk;Cr.intOct=Nk});var Rl=O(_l=>{"use strict";var Ei=U(),ki=gt(),xi=bt(),Kt=class n extends xi.YAMLMap{constructor(e){super(e),this.tag=n.tag}add(e){let t;Ei.isPair(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new ki.Pair(e.key,null):t=new ki.Pair(e,null),xi.findPair(this.items,t.key)||this.items.push(t)}get(e,t){let r=xi.findPair(this.items,e);return!t&&Ei.isPair(r)?Ei.isScalar(r.key)?r.key.value:r.key:r}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 r=xi.findPair(this.items,e);r&&!t?this.items.splice(this.items.indexOf(r),1):!r&&t&&this.items.push(new ki.Pair(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,r){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,r);throw new Error("Set items must all have null values")}static from(e,t,r){let{replacer:s}=r,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let o of t)typeof s=="function"&&(o=s.call(t,o,o)),i.items.push(ki.createPair(o,null,r));return i}};Kt.tag="tag:yaml.org,2002:set";var Mk={collection:"map",identify:n=>n instanceof Set,nodeClass:Kt,default:!1,tag:"tag:yaml.org,2002:set",createNode:(n,e,t)=>Kt.from(n,e,t),resolve(n,e){if(Ei.isMap(n)){if(n.hasAllNullValues(!0))return Object.assign(new Kt,n);e("Set items must all have null values")}else e("Expected a mapping for this tag");return n}};_l.YAMLSet=Kt;_l.set=Mk});var Nl=O(Ai=>{"use strict";var Bk=Sn();function Il(n,e){let t=n[0],r=t==="-"||t==="+"?n.substring(1):n,s=o=>e?BigInt(o):Number(o),i=r.replace(/_/g,"").split(":").reduce((o,a)=>o*s(60)+s(a),s(0));return t==="-"?s(-1)*i:i}function Jp(n){let{value:e}=n,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return Bk.stringifyNumber(n);let r="";e<0&&(r="-",e*=t(-1));let s=t(60),i=[e%s];return e<60?i.unshift(0):(e=(e-i[0])/s,i.unshift(e%s),e>=60&&(e=(e-i[0])/s,i.unshift(e))),r+i.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var Dk={identify:n=>typeof n=="bigint"||Number.isInteger(n),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(n,e,{intAsBigInt:t})=>Il(n,t),stringify:Jp},jk={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:n=>Il(n,!1),stringify:Jp},Kp={identify:n=>n 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(n){let e=n.match(Kp.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,t,r,s,i,o,a]=e.map(Number),l=e[7]?Number((e[7]+"00").substr(1,3)):0,c=Date.UTC(t,r-1,s,i||0,o||0,a||0,l),d=e[8];if(d&&d!=="Z"){let u=Il(d,!1);Math.abs(u)<30&&(u*=60),c-=6e4*u}return new Date(c)},stringify:({value:n})=>n?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};Ai.floatTime=jk;Ai.intTime=Dk;Ai.timestamp=Kp});var Yp=O(Hp=>{"use strict";var Fk=wn(),Uk=fi(),qk=vn(),Jk=Ar(),Kk=kl(),Wp=jp(),$l=Fp(),Ti=qp(),Wk=si(),Hk=Tl(),Yk=wi(),Vk=Rl(),Ll=Nl(),zk=[Fk.map,qk.seq,Jk.string,Uk.nullTag,Wp.trueTag,Wp.falseTag,Ti.intBin,Ti.intOct,Ti.int,Ti.intHex,$l.floatNaN,$l.floatExp,$l.float,Kk.binary,Wk.merge,Hk.omap,Yk.pairs,Vk.set,Ll.intTime,Ll.floatTime,Ll.timestamp];Hp.schema=zk});var rh=O(Dl=>{"use strict";var Xp=wn(),Gk=fi(),Qp=vn(),Xk=Ar(),Qk=hl(),Ml=gl(),Bl=bl(),Zk=Tp(),ex=Cp(),Zp=kl(),_r=si(),eh=Tl(),th=wi(),Vp=Yp(),nh=Rl(),Oi=Nl(),zp=new Map([["core",Zk.schema],["failsafe",[Xp.map,Qp.seq,Xk.string]],["json",ex.schema],["yaml11",Vp.schema],["yaml-1.1",Vp.schema]]),Gp={binary:Zp.binary,bool:Qk.boolTag,float:Ml.float,floatExp:Ml.floatExp,floatNaN:Ml.floatNaN,floatTime:Oi.floatTime,int:Bl.int,intHex:Bl.intHex,intOct:Bl.intOct,intTime:Oi.intTime,map:Xp.map,merge:_r.merge,null:Gk.nullTag,omap:eh.omap,pairs:th.pairs,seq:Qp.seq,set:nh.set,timestamp:Oi.timestamp},tx={"tag:yaml.org,2002:binary":Zp.binary,"tag:yaml.org,2002:merge":_r.merge,"tag:yaml.org,2002:omap":eh.omap,"tag:yaml.org,2002:pairs":th.pairs,"tag:yaml.org,2002:set":nh.set,"tag:yaml.org,2002:timestamp":Oi.timestamp};function nx(n,e,t){let r=zp.get(e);if(r&&!n)return t&&!r.includes(_r.merge)?r.concat(_r.merge):r.slice();let s=r;if(!s)if(Array.isArray(n))s=[];else{let i=Array.from(zp.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(n))for(let i of n)s=s.concat(i);else typeof n=="function"&&(s=n(s.slice()));return t&&(s=s.concat(_r.merge)),s.reduce((i,o)=>{let a=typeof o=="string"?Gp[o]:o;if(!a){let l=JSON.stringify(o),c=Object.keys(Gp).map(d=>JSON.stringify(d)).join(", ");throw new Error(`Unknown custom tag ${l}; use one of ${c}`)}return i.includes(a)||i.push(a),i},[])}Dl.coreKnownTags=tx;Dl.getTags=nx});var Ul=O(sh=>{"use strict";var jl=U(),rx=wn(),sx=vn(),ix=Ar(),Pi=rh(),ox=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0,Fl=class n{constructor({compat:e,customTags:t,merge:r,resolveKnownTags:s,schema:i,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?Pi.getTags(e,"compat"):e?Pi.getTags(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=s?Pi.coreKnownTags:{},this.tags=Pi.getTags(t,this.name,r),this.toStringOptions=a??null,Object.defineProperty(this,jl.MAP,{value:rx.map}),Object.defineProperty(this,jl.SCALAR,{value:ix.string}),Object.defineProperty(this,jl.SEQ,{value:sx.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?ox:null}clone(){let e=Object.create(n.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};sh.Schema=Fl});var oh=O(ih=>{"use strict";var ax=U(),ql=Sr(),Rr=yr();function lx(n,e){let t=[],r=e.directives===!0;if(e.directives!==!1&&n.directives){let l=n.directives.toString(n);l?(t.push(l),r=!0):n.directives.docStart&&(r=!0)}r&&t.push("---");let s=ql.createStringifyContext(n,e),{commentString:i}=s.options;if(n.commentBefore){t.length!==1&&t.unshift("");let l=i(n.commentBefore);t.unshift(Rr.indentComment(l,""))}let o=!1,a=null;if(n.contents){if(ax.isNode(n.contents)){if(n.contents.spaceBefore&&r&&t.push(""),n.contents.commentBefore){let d=i(n.contents.commentBefore);t.push(Rr.indentComment(d,""))}s.forceBlockIndent=!!n.comment,a=n.contents.comment}let l=a?void 0:()=>o=!0,c=ql.stringify(n.contents,s,()=>a=null,l);a&&(c+=Rr.lineComment(c,"",i(a))),(c[0]==="|"||c[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${c}`:t.push(c)}else t.push(ql.stringify(n.contents,s));if(n.directives?.docEnd)if(n.comment){let l=i(n.comment);l.includes(`
|
|
75
|
+
`)?(t.push("..."),t.push(Rr.indentComment(l,""))):t.push(`... ${l}`)}else t.push("...");else{let l=n.comment;l&&o&&(l=l.replace(/^\n+/,"")),l&&((!o||a)&&t[t.length-1]!==""&&t.push(""),t.push(Rr.indentComment(i(l),"")))}return t.join(`
|
|
76
76
|
`)+`
|
|
77
|
-
`}
|
|
77
|
+
`}ih.stringifyDocument=lx});var Ir=O(ah=>{"use strict";var cx=mr(),kn=zs(),xe=U(),ux=gt(),dx=ft(),fx=Ul(),px=oh(),Jl=Ws(),hx=Ya(),mx=gr(),Kl=Ha(),Wl=class n{constructor(e,t,r){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,xe.NODE_TYPE,{value:xe.DOC});let s=null;typeof t=="function"||Array.isArray(t)?s=t:r===void 0&&t&&(r=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"},r);this.options=i;let{version:o}=i;r?._directives?(this.directives=r._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new Kl.Directives({version:o}),this.setSchema(o,r),this.contents=e===void 0?null:this.createNode(e,s,r)}clone(){let e=Object.create(n.prototype,{[xe.NODE_TYPE]:{value:xe.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=xe.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){xn(this.contents)&&this.contents.add(e)}addIn(e,t){xn(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let r=Jl.anchorNames(this);e.anchor=!t||r.has(t)?Jl.findNewAnchor(t||"a",r):t}return new cx.Alias(e.anchor)}createNode(e,t,r){let s;if(typeof t=="function")e=t.call({"":e},"",e),s=t;else if(Array.isArray(t)){let y=S=>typeof S=="number"||S instanceof String||S instanceof Number,A=t.filter(y).map(String);A.length>0&&(t=t.concat(A)),s=t}else r===void 0&&t&&(r=t,t=void 0);let{aliasDuplicateObjects:i,anchorPrefix:o,flow:a,keepUndefined:l,onTagObj:c,tag:d}=r??{},{onAnchor:u,setAnchors:f,sourceObjects:p}=Jl.createNodeAnchors(this,o||"a"),m={aliasDuplicateObjects:i??!0,keepUndefined:l??!1,onAnchor:u,onTagObj:c,replacer:s,schema:this.schema,sourceObjects:p},h=mx.createNode(e,d,m);return a&&xe.isCollection(h)&&(h.flow=!0),f(),h}createPair(e,t,r={}){let s=this.createNode(e,null,r),i=this.createNode(t,null,r);return new ux.Pair(s,i)}delete(e){return xn(this.contents)?this.contents.delete(e):!1}deleteIn(e){return kn.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):xn(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return xe.isCollection(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return kn.isEmptyPath(e)?!t&&xe.isScalar(this.contents)?this.contents.value:this.contents:xe.isCollection(this.contents)?this.contents.getIn(e,t):void 0}has(e){return xe.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return kn.isEmptyPath(e)?this.contents!==void 0:xe.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=kn.collectionFromPath(this.schema,[e],t):xn(this.contents)&&this.contents.set(e,t)}setIn(e,t){kn.isEmptyPath(e)?this.contents=t:this.contents==null?this.contents=kn.collectionFromPath(this.schema,Array.from(e),t):xn(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let r;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new Kl.Directives({version:"1.1"}),r={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new Kl.Directives({version:e}),r={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,r=null;break;default:{let s=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${s}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(r)this.schema=new fx.Schema(Object.assign(r,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:r,maxAliasCount:s,onAnchor:i,reviver:o}={}){let a={anchors:new Map,doc:this,keep:!e,mapAsMap:r===!0,mapKeyWarned:!1,maxAliasCount:typeof s=="number"?s:100},l=dx.toJS(this.contents,t??"",a);if(typeof i=="function")for(let{count:c,res:d}of a.anchors.values())i(d,c);return typeof o=="function"?hx.applyReviver(o,{"":l},"",l):l}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 px.stringifyDocument(this,e)}};function xn(n){if(xe.isCollection(n))return!0;throw new Error("Expected a YAML collection as document contents")}ah.Document=Wl});var Lr=O($r=>{"use strict";var Nr=class extends Error{constructor(e,t,r,s){super(),this.name=e,this.code=r,this.message=s,this.pos=t}},Hl=class extends Nr{constructor(e,t,r){super("YAMLParseError",e,t,r)}},Yl=class extends Nr{constructor(e,t,r){super("YAMLWarning",e,t,r)}},gx=(n,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(a=>e.linePos(a));let{line:r,col:s}=t.linePos[0];t.message+=` at line ${r}, column ${s}`;let i=s-1,o=n.substring(e.lineStarts[r-1],e.lineStarts[r]).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"),r>1&&/^ *$/.test(o.substring(0,i))){let a=n.substring(e.lineStarts[r-2],e.lineStarts[r-1]);a.length>80&&(a=a.substring(0,79)+`\u2026
|
|
78
78
|
`),o=a+o}if(/[^ ]/.test(o)){let a=1,l=t.linePos[1];l?.line===r&&l.col>s&&(a=Math.max(1,Math.min(l.col-s,80-i)));let c=" ".repeat(i)+"^".repeat(a);t.message+=`:
|
|
79
79
|
|
|
80
80
|
${o}
|
|
81
81
|
${c}
|
|
82
|
-
`}};$r.YAMLError=
|
|
83
|
-
`))return!0;if(n.end){for(let e of n.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of n.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(
|
|
84
|
-
`+h.comment:a.comment=h.comment);continue}(h.newlineAfterProp||
|
|
85
|
-
`+P.comment:S.comment=P.comment);let
|
|
86
|
-
`+R.comment:c.comment=R.comment),u=R.end;continue}!o&&t.options.strict
|
|
87
|
-
`+$:x.comment=$,R.comment=R.comment.substring($.length+1)}}if(!o&&!
|
|
88
|
-
`+D.comment:x.comment=D.comment);let q=new
|
|
89
|
-
`+
|
|
90
|
-
`.repeat(Math.max(1,o.length-1)):"",
|
|
91
|
-
`;for(let h=d;h<a;++h){let[
|
|
92
|
-
`):
|
|
82
|
+
`}};$r.YAMLError=Nr;$r.YAMLParseError=Hl;$r.YAMLWarning=Yl;$r.prettifyError=gx});var Mr=O(lh=>{"use strict";function yx(n,{flow:e,indicator:t,next:r,offset:s,onError:i,parentIndent:o,startOnNewline:a}){let l=!1,c=a,d=a,u="",f="",p=!1,m=!1,h=null,y=null,A=null,S=null,P=null,C=null,_=null;for(let x of n)switch(m&&(x.type!=="space"&&x.type!=="newline"&&x.type!=="comma"&&i(x.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),m=!1),h&&(c&&x.type!=="comment"&&x.type!=="newline"&&i(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),h=null),x.type){case"space":!e&&(t!=="doc-start"||r?.type!=="flow-collection")&&x.source.includes(" ")&&(h=x),d=!0;break;case"comment":{d||i(x,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let D=x.source.substring(1)||" ";u?u+=f+D:u=D,f="",c=!1;break}case"newline":c?u?u+=x.source:(!C||t!=="seq-item-ind")&&(l=!0):f+=x.source,c=!0,p=!0,(y||A)&&(S=x),d=!0;break;case"anchor":y&&i(x,"MULTIPLE_ANCHORS","A node can have at most one anchor"),x.source.endsWith(":")&&i(x.offset+x.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),y=x,_??(_=x.offset),c=!1,d=!1,m=!0;break;case"tag":{A&&i(x,"MULTIPLE_TAGS","A node can have at most one tag"),A=x,_??(_=x.offset),c=!1,d=!1,m=!0;break}case t:(y||A)&&i(x,"BAD_PROP_ORDER",`Anchors and tags must be after the ${x.source} indicator`),C&&i(x,"UNEXPECTED_TOKEN",`Unexpected ${x.source} in ${e??"collection"}`),C=x,c=t==="seq-item-ind"||t==="explicit-key-ind",d=!1;break;case"comma":if(e){P&&i(x,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),P=x,c=!1,d=!1;break}default:i(x,"UNEXPECTED_TOKEN",`Unexpected ${x.type} token`),c=!1,d=!1}let R=n[n.length-1],$=R?R.offset+R.source.length:s;return m&&r&&r.type!=="space"&&r.type!=="newline"&&r.type!=="comma"&&(r.type!=="scalar"||r.source!=="")&&i(r.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),h&&(c&&h.indent<=o||r?.type==="block-map"||r?.type==="block-seq")&&i(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:P,found:C,spaceBefore:l,comment:u,hasNewline:p,anchor:y,tag:A,newlineAfterProp:S,end:$,start:_??$}}lh.resolveProps=yx});var Ci=O(ch=>{"use strict";function Vl(n){if(!n)return null;switch(n.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(n.source.includes(`
|
|
83
|
+
`))return!0;if(n.end){for(let e of n.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of n.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(Vl(e.key)||Vl(e.value))return!0}return!1;default:return!0}}ch.containsNewline=Vl});var zl=O(uh=>{"use strict";var bx=Ci();function wx(n,e,t){if(e?.type==="flow-collection"){let r=e.end[0];r.indent===n&&(r.source==="]"||r.source==="}")&&bx.containsNewline(e)&&t(r,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}uh.flowIndentCheck=wx});var Gl=O(fh=>{"use strict";var dh=U();function vx(n,e,t){let{uniqueKeys:r}=n.options;if(r===!1)return!1;let s=typeof r=="function"?r:(i,o)=>i===o||dh.isScalar(i)&&dh.isScalar(o)&&i.value===o.value;return e.some(i=>s(i.key,t))}fh.mapIncludes=vx});var bh=O(yh=>{"use strict";var ph=gt(),Sx=bt(),hh=Mr(),kx=Ci(),mh=zl(),xx=Gl(),gh="All mapping items must start at the same column";function Ex({composeNode:n,composeEmptyNode:e},t,r,s,i){let o=i?.nodeClass??Sx.YAMLMap,a=new o(t.schema);t.atRoot&&(t.atRoot=!1);let l=r.offset,c=null;for(let d of r.items){let{start:u,key:f,sep:p,value:m}=d,h=hh.resolveProps(u,{indicator:"explicit-key-ind",next:f??p?.[0],offset:l,onError:s,parentIndent:r.indent,startOnNewline:!0}),y=!h.found;if(y){if(f&&(f.type==="block-seq"?s(l,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in f&&f.indent!==r.indent&&s(l,"BAD_INDENT",gh)),!h.anchor&&!h.tag&&!p){c=h.end,h.comment&&(a.comment?a.comment+=`
|
|
84
|
+
`+h.comment:a.comment=h.comment);continue}(h.newlineAfterProp||kx.containsNewline(f))&&s(f??u[u.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else h.found?.indent!==r.indent&&s(l,"BAD_INDENT",gh);t.atKey=!0;let A=h.end,S=f?n(t,f,h,s):e(t,A,u,null,h,s);t.schema.compat&&mh.flowIndentCheck(r.indent,f,s),t.atKey=!1,xx.mapIncludes(t,a.items,S)&&s(A,"DUPLICATE_KEY","Map keys must be unique");let P=hh.resolveProps(p??[],{indicator:"map-value-ind",next:m,offset:S.range[2],onError:s,parentIndent:r.indent,startOnNewline:!f||f.type==="block-scalar"});if(l=P.end,P.found){y&&(m?.type==="block-map"&&!P.hasNewline&&s(l,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&h.start<P.found.offset-1024&&s(S.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));let C=m?n(t,m,P,s):e(t,l,p,null,P,s);t.schema.compat&&mh.flowIndentCheck(r.indent,m,s),l=C.range[2];let _=new ph.Pair(S,C);t.options.keepSourceTokens&&(_.srcToken=d),a.items.push(_)}else{y&&s(S.range,"MISSING_CHAR","Implicit map keys need to be followed by map values"),P.comment&&(S.comment?S.comment+=`
|
|
85
|
+
`+P.comment:S.comment=P.comment);let C=new ph.Pair(S);t.options.keepSourceTokens&&(C.srcToken=d),a.items.push(C)}}return c&&c<l&&s(c,"IMPOSSIBLE","Map comment with trailing content"),a.range=[r.offset,l,c??l],a}yh.resolveBlockMap=Ex});var vh=O(wh=>{"use strict";var Ax=wt(),Tx=Mr(),Ox=zl();function Px({composeNode:n,composeEmptyNode:e},t,r,s,i){let o=i?.nodeClass??Ax.YAMLSeq,a=new o(t.schema);t.atRoot&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let l=r.offset,c=null;for(let{start:d,value:u}of r.items){let f=Tx.resolveProps(d,{indicator:"seq-item-ind",next:u,offset:l,onError:s,parentIndent:r.indent,startOnNewline:!0});if(!f.found)if(f.anchor||f.tag||u)u?.type==="block-seq"?s(f.end,"BAD_INDENT","All sequence items must start at the same column"):s(l,"MISSING_CHAR","Sequence item without - indicator");else{c=f.end,f.comment&&(a.comment=f.comment);continue}let p=u?n(t,u,f,s):e(t,f.end,d,null,f,s);t.schema.compat&&Ox.flowIndentCheck(r.indent,u,s),l=p.range[2],a.items.push(p)}return a.range=[r.offset,l,c??l],a}wh.resolveBlockSeq=Px});var En=O(Sh=>{"use strict";function Cx(n,e,t,r){let s="";if(n){let i=!1,o="";for(let a of n){let{source:l,type:c}=a;switch(c){case"space":i=!0;break;case"comment":{t&&!i&&r(a,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let d=l.substring(1)||" ";s?s+=o+d:s=d,o="";break}case"newline":s&&(o+=l),i=!0;break;default:r(a,"UNEXPECTED_TOKEN",`Unexpected ${c} at node end`)}e+=l.length}}return{comment:s,offset:e}}Sh.resolveEnd=Cx});var Ah=O(Eh=>{"use strict";var _x=U(),Rx=gt(),kh=bt(),Ix=wt(),Nx=En(),xh=Mr(),$x=Ci(),Lx=Gl(),Xl="Block collections are not allowed within flow collections",Ql=n=>n&&(n.type==="block-map"||n.type==="block-seq");function Mx({composeNode:n,composeEmptyNode:e},t,r,s,i){let o=r.start.source==="{",a=o?"flow map":"flow sequence",l=i?.nodeClass??(o?kh.YAMLMap:Ix.YAMLSeq),c=new l(t.schema);c.flow=!0;let d=t.atRoot;d&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let u=r.offset+r.start.source.length;for(let y=0;y<r.items.length;++y){let A=r.items[y],{start:S,key:P,sep:C,value:_}=A,R=xh.resolveProps(S,{flow:a,indicator:"explicit-key-ind",next:P??C?.[0],offset:u,onError:s,parentIndent:r.indent,startOnNewline:!1});if(!R.found){if(!R.anchor&&!R.tag&&!C&&!_){y===0&&R.comma?s(R.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${a}`):y<r.items.length-1&&s(R.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${a}`),R.comment&&(c.comment?c.comment+=`
|
|
86
|
+
`+R.comment:c.comment=R.comment),u=R.end;continue}!o&&t.options.strict&&$x.containsNewline(P)&&s(P,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(y===0)R.comma&&s(R.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${a}`);else if(R.comma||s(R.start,"MISSING_CHAR",`Missing , between ${a} items`),R.comment){let $="";e:for(let x of S)switch(x.type){case"comma":case"space":break;case"comment":$=x.source.substring(1);break e;default:break e}if($){let x=c.items[c.items.length-1];_x.isPair(x)&&(x=x.value??x.key),x.comment?x.comment+=`
|
|
87
|
+
`+$:x.comment=$,R.comment=R.comment.substring($.length+1)}}if(!o&&!C&&!R.found){let $=_?n(t,_,R,s):e(t,R.end,C,null,R,s);c.items.push($),u=$.range[2],Ql(_)&&s($.range,"BLOCK_IN_FLOW",Xl)}else{t.atKey=!0;let $=R.end,x=P?n(t,P,R,s):e(t,$,S,null,R,s);Ql(P)&&s(x.range,"BLOCK_IN_FLOW",Xl),t.atKey=!1;let D=xh.resolveProps(C??[],{flow:a,indicator:"map-value-ind",next:_,offset:x.range[2],onError:s,parentIndent:r.indent,startOnNewline:!1});if(D.found){if(!o&&!R.found&&t.options.strict){if(C)for(let b of C){if(b===D.found)break;if(b.type==="newline"){s(b,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}R.start<D.found.offset-1024&&s(D.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else _&&("source"in _&&_.source?.[0]===":"?s(_,"MISSING_CHAR",`Missing space after : in ${a}`):s(D.start,"MISSING_CHAR",`Missing , or : between ${a} items`));let K=_?n(t,_,D,s):D.found?e(t,D.end,C,null,D,s):null;K?Ql(_)&&s(K.range,"BLOCK_IN_FLOW",Xl):D.comment&&(x.comment?x.comment+=`
|
|
88
|
+
`+D.comment:x.comment=D.comment);let q=new Rx.Pair(x,K);if(t.options.keepSourceTokens&&(q.srcToken=A),o){let b=c;Lx.mapIncludes(t,b.items,x)&&s($,"DUPLICATE_KEY","Map keys must be unique"),b.items.push(q)}else{let b=new kh.YAMLMap(t.schema);b.flow=!0,b.items.push(q);let E=(K??x).range;b.range=[x.range[0],E[1],E[2]],c.items.push(b)}u=K?K.range[2]:D.end}}let f=o?"}":"]",[p,...m]=r.end,h=u;if(p?.source===f)h=p.offset+p.source.length;else{let y=a[0].toUpperCase()+a.substring(1),A=d?`${y} must end with a ${f}`:`${y} in block collection must be sufficiently indented and end with a ${f}`;s(u,d?"MISSING_CHAR":"BAD_INDENT",A),p&&p.source.length!==1&&m.unshift(p)}if(m.length>0){let y=Nx.resolveEnd(m,h,t.options.strict,s);y.comment&&(c.comment?c.comment+=`
|
|
89
|
+
`+y.comment:c.comment=y.comment),c.range=[r.offset,h,y.offset]}else c.range=[r.offset,h,h];return c}Eh.resolveFlowCollection=Mx});var Oh=O(Th=>{"use strict";var Bx=U(),Dx=te(),jx=bt(),Fx=wt(),Ux=bh(),qx=vh(),Jx=Ah();function Zl(n,e,t,r,s,i){let o=t.type==="block-map"?Ux.resolveBlockMap(n,e,t,r,i):t.type==="block-seq"?qx.resolveBlockSeq(n,e,t,r,i):Jx.resolveFlowCollection(n,e,t,r,i),a=o.constructor;return s==="!"||s===a.tagName?(o.tag=a.tagName,o):(s&&(o.tag=s),o)}function Kx(n,e,t,r,s){let i=r.tag,o=i?e.directives.tagName(i.source,f=>s(i,"TAG_RESOLVE_FAILED",f)):null;if(t.type==="block-seq"){let{anchor:f,newlineAfterProp:p}=r,m=f&&i?f.offset>i.offset?f:i:f??i;m&&(!p||p.offset<m.offset)&&s(m,"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===jx.YAMLMap.tagName&&a==="map"||o===Fx.YAMLSeq.tagName&&a==="seq")return Zl(n,e,t,s,o);let l=e.schema.tags.find(f=>f.tag===o&&f.collection===a);if(!l){let f=e.schema.knownTags[o];if(f?.collection===a)e.schema.tags.push(Object.assign({},f,{default:!1})),l=f;else return f?s(i,"BAD_COLLECTION_TYPE",`${f.tag} used for ${a} collection, but expects ${f.collection??"scalar"}`,!0):s(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),Zl(n,e,t,s,o)}let c=Zl(n,e,t,s,o,l),d=l.resolve?.(c,f=>s(i,"TAG_RESOLVE_FAILED",f),e.options)??c,u=Bx.isNode(d)?d:new Dx.Scalar(d);return u.range=c.range,u.tag=o,l?.format&&(u.format=l.format),u}Th.composeCollection=Kx});var tc=O(Ph=>{"use strict";var ec=te();function Wx(n,e,t){let r=e.offset,s=Hx(e,n.options.strict,t);if(!s)return{value:"",type:null,comment:"",range:[r,r,r]};let i=s.mode===">"?ec.Scalar.BLOCK_FOLDED:ec.Scalar.BLOCK_LITERAL,o=e.source?Yx(e.source):[],a=o.length;for(let h=o.length-1;h>=0;--h){let y=o[h][1];if(y===""||y==="\r")a=h;else break}if(a===0){let h=s.chomp==="+"&&o.length>0?`
|
|
90
|
+
`.repeat(Math.max(1,o.length-1)):"",y=r+s.length;return e.source&&(y+=e.source.length),{value:h,type:i,comment:s.comment,range:[r,y,y]}}let l=e.indent+s.indent,c=e.offset+s.length,d=0;for(let h=0;h<a;++h){let[y,A]=o[h];if(A===""||A==="\r")s.indent===0&&y.length>l&&(l=y.length);else{y.length<l&&t(c+y.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator"),s.indent===0&&(l=y.length),d=h,l===0&&!n.atRoot&&t(c,"BAD_INDENT","Block scalar values in collections must be indented");break}c+=y.length+A.length+1}for(let h=o.length-1;h>=a;--h)o[h][0].length>l&&(a=h+1);let u="",f="",p=!1;for(let h=0;h<d;++h)u+=o[h][0].slice(l)+`
|
|
91
|
+
`;for(let h=d;h<a;++h){let[y,A]=o[h];c+=y.length+A.length+1;let S=A[A.length-1]==="\r";if(S&&(A=A.slice(0,-1)),A&&y.length<l){let C=`Block scalar lines must not be less indented than their ${s.indent?"explicit indentation indicator":"first line"}`;t(c-A.length-(S?2:1),"BAD_INDENT",C),y=""}i===ec.Scalar.BLOCK_LITERAL?(u+=f+y.slice(l)+A,f=`
|
|
92
|
+
`):y.length>l||A[0]===" "?(f===" "?f=`
|
|
93
93
|
`:!p&&f===`
|
|
94
94
|
`&&(f=`
|
|
95
95
|
|
|
96
|
-
`),u+=f+
|
|
96
|
+
`),u+=f+y.slice(l)+A,f=`
|
|
97
97
|
`,p=!0):A===""?f===`
|
|
98
98
|
`?u+=`
|
|
99
99
|
`:f=`
|
|
@@ -101,93 +101,93 @@ ${c}
|
|
|
101
101
|
`+o[h][0].slice(l);u[u.length-1]!==`
|
|
102
102
|
`&&(u+=`
|
|
103
103
|
`);break;default:u+=`
|
|
104
|
-
`}let m=r+s.length+e.source.length;return{value:u,type:i,comment:s.comment,range:[r,m,m]}}function
|
|
104
|
+
`}let m=r+s.length+e.source.length;return{value:u,type:i,comment:s.comment,range:[r,m,m]}}function Hx({offset:n,props:e},t,r){if(e[0].type!=="block-scalar-header")return r(e[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:s}=e[0],i=s[0],o=0,a="",l=-1;for(let f=1;f<s.length;++f){let p=s[f];if(!a&&(p==="-"||p==="+"))a=p;else{let m=Number(p);!o&&m?o=m:l===-1&&(l=n+f)}}l!==-1&&r(l,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${s}`);let c=!1,d="",u=s.length;for(let f=1;f<e.length;++f){let p=e[f];switch(p.type){case"space":c=!0;case"newline":u+=p.source.length;break;case"comment":t&&!c&&r(p,"MISSING_CHAR","Comments must be separated from other tokens by white space characters"),u+=p.source.length,d=p.source.substring(1);break;case"error":r(p,"UNEXPECTED_TOKEN",p.message),u+=p.source.length;break;default:{let m=`Unexpected token in block scalar header: ${p.type}`;r(p,"UNEXPECTED_TOKEN",m);let h=p.source;h&&typeof h=="string"&&(u+=h.length)}}}return{mode:i,indent:o,chomp:a,comment:d,length:u}}function Yx(n){let e=n.split(/\n( *)/),t=e[0],r=t.match(/^( *)/),i=[r?.[1]?[r[1],t.slice(r[1].length)]:["",t]];for(let o=1;o<e.length;o+=2)i.push([e[o],e[o+1]]);return i}Ph.resolveBlockScalar=Wx});var rc=O(_h=>{"use strict";var nc=te(),Vx=En();function zx(n,e,t){let{offset:r,type:s,source:i,end:o}=n,a,l,c=(f,p,m)=>t(r+f,p,m);switch(s){case"scalar":a=nc.Scalar.PLAIN,l=Gx(i,c);break;case"single-quoted-scalar":a=nc.Scalar.QUOTE_SINGLE,l=Xx(i,c);break;case"double-quoted-scalar":a=nc.Scalar.QUOTE_DOUBLE,l=Qx(i,c);break;default:return t(n,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${s}`),{value:"",type:null,comment:"",range:[r,r+i.length,r+i.length]}}let d=r+i.length,u=Vx.resolveEnd(o,d,e,t);return{value:l,type:a,comment:u.comment,range:[r,d,u.offset]}}function Gx(n,e){let t="";switch(n[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 ${n[0]}`;break}case"@":case"`":{t=`reserved character ${n[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),Ch(n)}function Xx(n,e){return(n[n.length-1]!=="'"||n.length===1)&&e(n.length,"MISSING_CHAR","Missing closing 'quote"),Ch(n.slice(1,-1)).replace(/''/g,"'")}function Ch(n){let e,t;try{e=new RegExp(`(.*?)(?<![ ])[ ]*\r?
|
|
105
105
|
`,"sy"),t=new RegExp(`[ ]*(.*?)(?:(?<![ ])[ ]*)?\r?
|
|
106
106
|
`,"sy")}catch{e=/(.*?)[ \t]*\r?\n/sy,t=/[ \t]*(.*?)[ \t]*\r?\n/sy}let r=e.exec(n);if(!r)return n;let s=r[1],i=" ",o=e.lastIndex;for(t.lastIndex=o;r=t.exec(n);)r[1]===""?i===`
|
|
107
107
|
`?s+=i:i=`
|
|
108
|
-
`:(s+=i+r[1],i=" "),o=t.lastIndex;let a=/[ \t]*(.*)/sy;return a.lastIndex=o,r=a.exec(n),s+i+(r?.[1]??"")}function
|
|
108
|
+
`:(s+=i+r[1],i=" "),o=t.lastIndex;let a=/[ \t]*(.*)/sy;return a.lastIndex=o,r=a.exec(n),s+i+(r?.[1]??"")}function Qx(n,e){let t="";for(let r=1;r<n.length-1;++r){let s=n[r];if(!(s==="\r"&&n[r+1]===`
|
|
109
109
|
`))if(s===`
|
|
110
|
-
`){let{fold:i,offset:o}=
|
|
110
|
+
`){let{fold:i,offset:o}=Zx(n,r);t+=i,r=o}else if(s==="\\"){let i=n[++r],o=e0[i];if(o)t+=o;else if(i===`
|
|
111
111
|
`)for(i=n[r+1];i===" "||i===" ";)i=n[++r+1];else if(i==="\r"&&n[r+1]===`
|
|
112
|
-
`)for(i=n[++r+1];i===" "||i===" ";)i=n[++r+1];else if(i==="x"||i==="u"||i==="U"){let a={x:2,u:4,U:8}[i];t+=
|
|
112
|
+
`)for(i=n[++r+1];i===" "||i===" ";)i=n[++r+1];else if(i==="x"||i==="u"||i==="U"){let a={x:2,u:4,U:8}[i];t+=t0(n,r+1,a,e),r+=a}else{let a=n.substr(r-1,2);e(r-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),t+=a}}else if(s===" "||s===" "){let i=r,o=n[r+1];for(;o===" "||o===" ";)o=n[++r+1];o!==`
|
|
113
113
|
`&&!(o==="\r"&&n[r+2]===`
|
|
114
|
-
`)&&(t+=r>i?n.slice(i,r+1):s)}else t+=s}return(n[n.length-1]!=='"'||n.length===1)&&e(n.length,"MISSING_CHAR",'Missing closing "quote'),t}function
|
|
114
|
+
`)&&(t+=r>i?n.slice(i,r+1):s)}else t+=s}return(n[n.length-1]!=='"'||n.length===1)&&e(n.length,"MISSING_CHAR",'Missing closing "quote'),t}function Zx(n,e){let t="",r=n[e+1];for(;(r===" "||r===" "||r===`
|
|
115
115
|
`||r==="\r")&&!(r==="\r"&&n[e+2]!==`
|
|
116
116
|
`);)r===`
|
|
117
117
|
`&&(t+=`
|
|
118
|
-
`),e+=1,r=n[e+1];return t||(t=" "),{fold:t,offset:e}}var
|
|
119
|
-
`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function
|
|
118
|
+
`),e+=1,r=n[e+1];return t||(t=" "),{fold:t,offset:e}}var e0={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
|
|
119
|
+
`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function t0(n,e,t,r){let s=n.substr(e,t),o=s.length===t&&/^[0-9a-fA-F]+$/.test(s)?parseInt(s,16):NaN;if(isNaN(o)){let a=n.substr(e-2,t+2);return r(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),a}return String.fromCodePoint(o)}_h.resolveFlowScalar=zx});var Nh=O(Ih=>{"use strict";var Wt=U(),Rh=te(),n0=tc(),r0=rc();function s0(n,e,t,r){let{value:s,type:i,comment:o,range:a}=e.type==="block-scalar"?n0.resolveBlockScalar(n,e,r):r0.resolveFlowScalar(e,n.options.strict,r),l=t?n.directives.tagName(t.source,u=>r(t,"TAG_RESOLVE_FAILED",u)):null,c;n.options.stringKeys&&n.atKey?c=n.schema[Wt.SCALAR]:l?c=i0(n.schema,s,l,t,r):e.type==="scalar"?c=o0(n,s,e,r):c=n.schema[Wt.SCALAR];let d;try{let u=c.resolve(s,f=>r(t??e,"TAG_RESOLVE_FAILED",f),n.options);d=Wt.isScalar(u)?u:new Rh.Scalar(u)}catch(u){let f=u instanceof Error?u.message:String(u);r(t??e,"TAG_RESOLVE_FAILED",f),d=new Rh.Scalar(s)}return d.range=a,d.source=s,i&&(d.type=i),l&&(d.tag=l),c.format&&(d.format=c.format),o&&(d.comment=o),d}function i0(n,e,t,r,s){if(t==="!")return n[Wt.SCALAR];let i=[];for(let a of n.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=n.knownTags[t];return o&&!o.collection?(n.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(s(r,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),n[Wt.SCALAR])}function o0({atKey:n,directives:e,schema:t},r,s,i){let o=t.tags.find(a=>(a.default===!0||n&&a.default==="key")&&a.test?.test(r))||t[Wt.SCALAR];if(t.compat){let a=t.compat.find(l=>l.default&&l.test?.test(r))??t[Wt.SCALAR];if(o.tag!==a.tag){let l=e.tagString(o.tag),c=e.tagString(a.tag),d=`Value may be parsed as either ${l} or ${c}`;i(s,"TAG_RESOLVE_FAILED",d,!0)}}return o}Ih.composeScalar=s0});var Lh=O($h=>{"use strict";function a0(n,e,t){if(e){t??(t=e.length);for(let r=t-1;r>=0;--r){let s=e[r];switch(s.type){case"space":case"comment":case"newline":n-=s.source.length;continue}for(s=e[++r];s?.type==="space";)n+=s.source.length,s=e[++r];break}}return n}$h.emptyScalarPosition=a0});var Dh=O(ic=>{"use strict";var l0=mr(),c0=U(),u0=Oh(),Mh=Nh(),d0=En(),f0=Lh(),p0={composeNode:Bh,composeEmptyNode:sc};function Bh(n,e,t,r){let s=n.atKey,{spaceBefore:i,comment:o,anchor:a,tag:l}=t,c,d=!0;switch(e.type){case"alias":c=h0(n,e,r),(a||l)&&r(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":c=Mh.composeScalar(n,e,l,r),a&&(c.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":c=u0.composeCollection(p0,n,e,t,r),a&&(c.anchor=a.source.substring(1));break;default:{let u=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;r(e,"UNEXPECTED_TOKEN",u),c=sc(n,e.offset,void 0,null,t,r),d=!1}}return a&&c.anchor===""&&r(a,"BAD_ALIAS","Anchor cannot be an empty string"),s&&n.options.stringKeys&&(!c0.isScalar(c)||typeof c.value!="string"||c.tag&&c.tag!=="tag:yaml.org,2002:str")&&r(l??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),i&&(c.spaceBefore=!0),o&&(e.type==="scalar"&&e.source===""?c.comment=o:c.commentBefore=o),n.options.keepSourceTokens&&d&&(c.srcToken=e),c}function sc(n,e,t,r,{spaceBefore:s,comment:i,anchor:o,tag:a,end:l},c){let d={type:"scalar",offset:f0.emptyScalarPosition(e,t,r),indent:-1,source:""},u=Mh.composeScalar(n,d,a,c);return o&&(u.anchor=o.source.substring(1),u.anchor===""&&c(o,"BAD_ALIAS","Anchor cannot be an empty string")),s&&(u.spaceBefore=!0),i&&(u.comment=i,u.range[2]=l),u}function h0({options:n},{offset:e,source:t,end:r},s){let i=new l0.Alias(t.substring(1));i.source===""&&s(e,"BAD_ALIAS","Alias cannot be an empty string"),i.source.endsWith(":")&&s(e+t.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let o=e+t.length,a=d0.resolveEnd(r,o,n.strict,s);return i.range=[e,o,a.offset],a.comment&&(i.comment=a.comment),i}ic.composeEmptyNode=sc;ic.composeNode=Bh});var Uh=O(Fh=>{"use strict";var m0=Ir(),jh=Dh(),g0=En(),y0=Mr();function b0(n,e,{offset:t,start:r,value:s,end:i},o){let a=Object.assign({_directives:e},n),l=new m0.Document(void 0,a),c={atKey:!1,atRoot:!0,directives:l.directives,options:l.options,schema:l.schema},d=y0.resolveProps(r,{indicator:"doc-start",next:s??i?.[0],offset:t,onError:o,parentIndent:0,startOnNewline:!0});d.found&&(l.directives.docStart=!0,s&&(s.type==="block-map"||s.type==="block-seq")&&!d.hasNewline&&o(d.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),l.contents=s?jh.composeNode(c,s,d,o):jh.composeEmptyNode(c,d.end,r,null,d,o);let u=l.contents.range[2],f=g0.resolveEnd(i,u,!1,o);return f.comment&&(l.comment=f.comment),l.range=[t,u,f.offset],l}Fh.composeDoc=b0});var ac=O(Kh=>{"use strict";var w0=$s("process"),v0=Ha(),S0=Ir(),Br=Lr(),qh=U(),k0=Uh(),x0=En();function Dr(n){if(typeof n=="number")return[n,n+1];if(Array.isArray(n))return n.length===2?n:[n[0],n[1]];let{offset:e,source:t}=n;return[e,e+(typeof t=="string"?t.length:1)]}function Jh(n){let e="",t=!1,r=!1;for(let s=0;s<n.length;++s){let i=n[s];switch(i[0]){case"#":e+=(e===""?"":r?`
|
|
120
120
|
|
|
121
121
|
`:`
|
|
122
|
-
`)+(i.substring(1)||" "),t=!0,r=!1;break;case"%":n[s+1]?.[0]!=="#"&&(s+=1),t=!1;break;default:t||(r=!0),t=!1}}return{comment:e,afterEmptyLine:r}}var
|
|
123
|
-
${r}`:r;else if(s||e.directives.docStart||!i)e.commentBefore=r;else if(
|
|
122
|
+
`)+(i.substring(1)||" "),t=!0,r=!1;break;case"%":n[s+1]?.[0]!=="#"&&(s+=1),t=!1;break;default:t||(r=!0),t=!1}}return{comment:e,afterEmptyLine:r}}var oc=class{constructor(e={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(t,r,s,i)=>{let o=Dr(t);i?this.warnings.push(new Br.YAMLWarning(o,r,s)):this.errors.push(new Br.YAMLParseError(o,r,s))},this.directives=new v0.Directives({version:e.version||"1.2"}),this.options=e}decorate(e,t){let{comment:r,afterEmptyLine:s}=Jh(this.prelude);if(r){let i=e.contents;if(t)e.comment=e.comment?`${e.comment}
|
|
123
|
+
${r}`:r;else if(s||e.directives.docStart||!i)e.commentBefore=r;else if(qh.isCollection(i)&&!i.flow&&i.items.length>0){let o=i.items[0];qh.isPair(o)&&(o=o.key);let a=o.commentBefore;o.commentBefore=a?`${r}
|
|
124
124
|
${a}`:r}else{let o=i.commentBefore;i.commentBefore=o?`${r}
|
|
125
|
-
${o}`:r}}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:
|
|
126
|
-
${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new Br.YAMLParseError(Dr(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 r=Object.assign({_directives:this.directives},this.options),s=new
|
|
125
|
+
${o}`:r}}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:Jh(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,r=-1){for(let s of e)yield*this.next(s);yield*this.end(t,r)}*next(e){switch(w0.env.LOG_STREAM&&console.dir(e,{depth:null}),e.type){case"directive":this.directives.add(e.source,(t,r,s)=>{let i=Dr(e);i[0]+=t,this.onError(i,"BAD_DIRECTIVE",r,s)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let t=k0.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,r=new Br.YAMLParseError(Dr(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(r):this.doc.errors.push(r);break}case"doc-end":{if(!this.doc){let r="Unexpected doc-end without preceding document";this.errors.push(new Br.YAMLParseError(Dr(e),"UNEXPECTED_TOKEN",r));break}this.doc.directives.docEnd=!0;let t=x0.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let r=this.doc.comment;this.doc.comment=r?`${r}
|
|
126
|
+
${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new Br.YAMLParseError(Dr(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 r=Object.assign({_directives:this.directives},this.options),s=new S0.Document(void 0,r);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),s.range=[0,t,t],this.decorate(s,!1),yield s}}};Kh.Composer=oc});var Yh=O(_i=>{"use strict";var E0=tc(),A0=rc(),T0=Lr(),Wh=vr();function O0(n,e=!0,t){if(n){let r=(s,i,o)=>{let a=typeof s=="number"?s:Array.isArray(s)?s[0]:s.offset;if(t)t(a,i,o);else throw new T0.YAMLParseError([a,a+1],i,o)};switch(n.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return A0.resolveFlowScalar(n,e,r);case"block-scalar":return E0.resolveBlockScalar({options:{strict:e}},n,r)}}return null}function P0(n,e){let{implicitKey:t=!1,indent:r,inFlow:s=!1,offset:i=-1,type:o="PLAIN"}=e,a=Wh.stringifyString({type:o,value:n},{implicitKey:t,indent:r>0?" ".repeat(r):"",inFlow:s,options:{blockQuote:!0,lineWidth:-1}}),l=e.end??[{type:"newline",offset:-1,indent:r,source:`
|
|
127
127
|
`}];switch(a[0]){case"|":case">":{let c=a.indexOf(`
|
|
128
128
|
`),d=a.substring(0,c),u=a.substring(c+1)+`
|
|
129
|
-
`,f=[{type:"block-scalar-header",offset:i,indent:r,source:d}];return
|
|
130
|
-
`}),{type:"block-scalar",offset:i,indent:r,props:f,source:u}}case'"':return{type:"double-quoted-scalar",offset:i,indent:r,source:a,end:l};case"'":return{type:"single-quoted-scalar",offset:i,indent:r,source:a,end:l};default:return{type:"scalar",offset:i,indent:r,source:a,end:l}}}function
|
|
129
|
+
`,f=[{type:"block-scalar-header",offset:i,indent:r,source:d}];return Hh(f,l)||f.push({type:"newline",offset:-1,indent:r,source:`
|
|
130
|
+
`}),{type:"block-scalar",offset:i,indent:r,props:f,source:u}}case'"':return{type:"double-quoted-scalar",offset:i,indent:r,source:a,end:l};case"'":return{type:"single-quoted-scalar",offset:i,indent:r,source:a,end:l};default:return{type:"scalar",offset:i,indent:r,source:a,end:l}}}function C0(n,e,t={}){let{afterKey:r=!1,implicitKey:s=!1,inFlow:i=!1,type:o}=t,a="indent"in n?n.indent:null;if(r&&typeof a=="number"&&(a+=2),!o)switch(n.type){case"single-quoted-scalar":o="QUOTE_SINGLE";break;case"double-quoted-scalar":o="QUOTE_DOUBLE";break;case"block-scalar":{let c=n.props[0];if(c.type!=="block-scalar-header")throw new Error("Invalid block scalar header");o=c.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:o="PLAIN"}let l=Wh.stringifyString({type:o,value:e},{implicitKey:s||a===null,indent:a!==null&&a>0?" ".repeat(a):"",inFlow:i,options:{blockQuote:!0,lineWidth:-1}});switch(l[0]){case"|":case">":_0(n,l);break;case'"':lc(n,l,"double-quoted-scalar");break;case"'":lc(n,l,"single-quoted-scalar");break;default:lc(n,l,"scalar")}}function _0(n,e){let t=e.indexOf(`
|
|
131
131
|
`),r=e.substring(0,t),s=e.substring(t+1)+`
|
|
132
|
-
`;if(n.type==="block-scalar"){let i=n.props[0];if(i.type!=="block-scalar-header")throw new Error("Invalid block scalar header");i.source=r,n.source=s}else{let{offset:i}=n,o="indent"in n?n.indent:-1,a=[{type:"block-scalar-header",offset:i,indent:o,source:r}];
|
|
133
|
-
`});for(let l of Object.keys(n))l!=="type"&&l!=="offset"&&delete n[l];Object.assign(n,{type:"block-scalar",indent:o,props:a,source:s})}}function
|
|
134
|
-
`};delete n.items,Object.assign(n,{type:t,source:e,end:[s]});break}default:{let r="indent"in n?n.indent:-1,s="end"in n&&Array.isArray(n.end)?n.end.filter(i=>i.type==="space"||i.type==="comment"||i.type==="newline"):[];for(let i of Object.keys(n))i!=="type"&&i!=="offset"&&delete n[i];Object.assign(n,{type:t,indent:r,source:e,end:s})}}}
|
|
132
|
+
`;if(n.type==="block-scalar"){let i=n.props[0];if(i.type!=="block-scalar-header")throw new Error("Invalid block scalar header");i.source=r,n.source=s}else{let{offset:i}=n,o="indent"in n?n.indent:-1,a=[{type:"block-scalar-header",offset:i,indent:o,source:r}];Hh(a,"end"in n?n.end:void 0)||a.push({type:"newline",offset:-1,indent:o,source:`
|
|
133
|
+
`});for(let l of Object.keys(n))l!=="type"&&l!=="offset"&&delete n[l];Object.assign(n,{type:"block-scalar",indent:o,props:a,source:s})}}function Hh(n,e){if(e)for(let t of e)switch(t.type){case"space":case"comment":n.push(t);break;case"newline":return n.push(t),!0}return!1}function lc(n,e,t){switch(n.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":n.type=t,n.source=e;break;case"block-scalar":{let r=n.props.slice(1),s=e.length;n.props[0].type==="block-scalar-header"&&(s-=n.props[0].source.length);for(let i of r)i.offset+=s;delete n.props,Object.assign(n,{type:t,source:e,end:r});break}case"block-map":case"block-seq":{let s={type:"newline",offset:n.offset+e.length,indent:n.indent,source:`
|
|
134
|
+
`};delete n.items,Object.assign(n,{type:t,source:e,end:[s]});break}default:{let r="indent"in n?n.indent:-1,s="end"in n&&Array.isArray(n.end)?n.end.filter(i=>i.type==="space"||i.type==="comment"||i.type==="newline"):[];for(let i of Object.keys(n))i!=="type"&&i!=="offset"&&delete n[i];Object.assign(n,{type:t,indent:r,source:e,end:s})}}}_i.createScalarToken=P0;_i.resolveAsScalar=O0;_i.setScalarValue=C0});var zh=O(Vh=>{"use strict";var R0=n=>"type"in n?Ii(n):Ri(n);function Ii(n){switch(n.type){case"block-scalar":{let e="";for(let t of n.props)e+=Ii(t);return e+n.source}case"block-map":case"block-seq":{let e="";for(let t of n.items)e+=Ri(t);return e}case"flow-collection":{let e=n.start.source;for(let t of n.items)e+=Ri(t);for(let t of n.end)e+=t.source;return e}case"document":{let e=Ri(n);if(n.end)for(let t of n.end)e+=t.source;return e}default:{let e=n.source;if("end"in n&&n.end)for(let t of n.end)e+=t.source;return e}}}function Ri({start:n,key:e,sep:t,value:r}){let s="";for(let i of n)s+=i.source;if(e&&(s+=Ii(e)),t)for(let i of t)s+=i.source;return r&&(s+=Ii(r)),s}Vh.stringify=R0});var Zh=O(Qh=>{"use strict";var cc=Symbol("break visit"),I0=Symbol("skip children"),Gh=Symbol("remove item");function Ht(n,e){"type"in n&&n.type==="document"&&(n={start:n.start,value:n.value}),Xh(Object.freeze([]),n,e)}Ht.BREAK=cc;Ht.SKIP=I0;Ht.REMOVE=Gh;Ht.itemAtPath=(n,e)=>{let t=n;for(let[r,s]of e){let i=t?.[r];if(i&&"items"in i)t=i.items[s];else return}return t};Ht.parentCollection=(n,e)=>{let t=Ht.itemAtPath(n,e.slice(0,-1)),r=e[e.length-1][0],s=t?.[r];if(s&&"items"in s)return s;throw new Error("Parent collection not found")};function Xh(n,e,t){let r=t(e,n);if(typeof r=="symbol")return r;for(let s of["key","value"]){let i=e[s];if(i&&"items"in i){for(let o=0;o<i.items.length;++o){let a=Xh(Object.freeze(n.concat([[s,o]])),i.items[o],t);if(typeof a=="number")o=a-1;else{if(a===cc)return cc;a===Gh&&(i.items.splice(o,1),o-=1)}}typeof r=="function"&&s==="key"&&(r=r(e,n))}}return typeof r=="function"?r(e,n):r}Qh.visit=Ht});var Ni=O(ge=>{"use strict";var uc=Yh(),N0=zh(),$0=Zh(),dc="\uFEFF",fc="",pc="",hc="",L0=n=>!!n&&"items"in n,M0=n=>!!n&&(n.type==="scalar"||n.type==="single-quoted-scalar"||n.type==="double-quoted-scalar"||n.type==="block-scalar");function B0(n){switch(n){case dc:return"<BOM>";case fc:return"<DOC>";case pc:return"<FLOW_END>";case hc:return"<SCALAR>";default:return JSON.stringify(n)}}function D0(n){switch(n){case dc:return"byte-order-mark";case fc:return"doc-mode";case pc:return"flow-error-end";case hc:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
|
|
135
135
|
`:case`\r
|
|
136
|
-
`: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(n[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}ge.createScalarToken=
|
|
137
|
-
`:case"\r":case" ":return!0;default:return!1}}var
|
|
138
|
-
\r `),
|
|
136
|
+
`: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(n[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}ge.createScalarToken=uc.createScalarToken;ge.resolveAsScalar=uc.resolveAsScalar;ge.setScalarValue=uc.setScalarValue;ge.stringify=N0.stringify;ge.visit=$0.visit;ge.BOM=dc;ge.DOCUMENT=fc;ge.FLOW_END=pc;ge.SCALAR=hc;ge.isCollection=L0;ge.isScalar=M0;ge.prettyToken=B0;ge.tokenType=D0});var yc=O(tm=>{"use strict";var jr=Ni();function $e(n){switch(n){case void 0:case" ":case`
|
|
137
|
+
`:case"\r":case" ":return!0;default:return!1}}var em=new Set("0123456789ABCDEFabcdef"),j0=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),$i=new Set(",[]{}"),F0=new Set(` ,[]{}
|
|
138
|
+
\r `),mc=n=>!n||F0.has(n),gc=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 r=this.next??"stream";for(;r&&(t||this.hasChars(1));)r=yield*this.parseNext(r)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===`
|
|
139
139
|
`?!0:t==="\r"?this.buffer[e+1]===`
|
|
140
140
|
`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let r=0;for(;t===" ";)t=this.buffer[++r+e];if(t==="\r"){let s=this.buffer[r+e+1];if(s===`
|
|
141
141
|
`||!s&&!this.atEnd)return e+r+1}return t===`
|
|
142
|
-
`||r>=this.indentNext||!t&&!this.atEnd?e+r:-1}if(t==="-"||t==="."){let r=this.buffer.substr(e,3);if((r==="---"||r==="...")
|
|
143
|
-
`,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]===jr.BOM&&(yield*this.pushCount(1),e=e.substring(1)),e[0]==="%"){let t=e.length,r=e.indexOf("#");for(;r!==-1;){let i=e[r-1];if(i===" "||i===" "){t=r-1;break}else r=e.indexOf("#",r+1)}for(;;){let i=e[t-1];if(i===" "||i===" ")t-=1;else break}let s=(yield*this.pushCount(t))+(yield*this.pushSpaces(!0));return yield*this.pushCount(e.length-s),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 jr.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==="...")
|
|
142
|
+
`||r>=this.indentNext||!t&&!this.atEnd?e+r:-1}if(t==="-"||t==="."){let r=this.buffer.substr(e,3);if((r==="---"||r==="...")&&$e(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(`
|
|
143
|
+
`,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]===jr.BOM&&(yield*this.pushCount(1),e=e.substring(1)),e[0]==="%"){let t=e.length,r=e.indexOf("#");for(;r!==-1;){let i=e[r-1];if(i===" "||i===" "){t=r-1;break}else r=e.indexOf("#",r+1)}for(;;){let i=e[t-1];if(i===" "||i===" ")t-=1;else break}let s=(yield*this.pushCount(t))+(yield*this.pushSpaces(!0));return yield*this.pushCount(e.length-s),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 jr.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==="...")&&$e(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&&!$e(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===":")&&$e(t)){let r=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=r,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(mc),"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,r=-1;do e=yield*this.pushNewline(),e>0?(t=yield*this.pushSpaces(!1),this.indentValue=r=t):t=0,t+=yield*this.pushSpaces(!0);while(e+t>0);let s=this.getLine();if(s===null)return this.setNext("flow");if((r!==-1&&r<this.indentNext&&s[0]!=="#"||r===0&&(s.startsWith("---")||s.startsWith("..."))&&$e(s[3]))&&!(r===this.indentNext-1&&this.flowLevel===1&&(s[0]==="]"||s[0]==="}")))return this.flowLevel=0,yield jr.FLOW_END,yield*this.parseLineStart();let i=0;for(;s[i]===",";)i+=yield*this.pushCount(1),i+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(i+=yield*this.pushIndicators(),s[i]){case void 0:return"flow";case"#":return yield*this.pushCount(s.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(mc),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let o=this.charAt(1);if(this.flowKey||$e(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 r=this.buffer.substring(0,t),s=r.indexOf(`
|
|
144
144
|
`,this.pos);if(s!==-1){for(;s!==-1;){let i=this.continueScalar(s+1);if(i===-1)break;s=r.indexOf(`
|
|
145
|
-
`,i)}s!==-1&&(t=s-(r[s-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
|
|
145
|
+
`,i)}s!==-1&&(t=s-(r[s-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=>$e(t)||t==="#")}*parseBlockScalar(){let e=this.pos-1,t=0,r;e:for(let i=this.pos;r=this.buffer[i];++i)switch(r){case" ":t+=1;break;case`
|
|
146
146
|
`:e=i,t=0;break;case"\r":{let o=this.buffer[i+1];if(!o&&!this.atEnd)return this.setNext("block-scalar");if(o===`
|
|
147
147
|
`)break}default:break e}if(!r&&!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(`
|
|
148
148
|
`,i)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let s=e+1;for(r=this.buffer[s];r===" ";)r=this.buffer[++s];if(r===" "){for(;r===" "||r===" "||r==="\r"||r===`
|
|
149
149
|
`;)r=this.buffer[++s];e=s-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===`
|
|
150
|
-
`&&i>=this.pos&&i+1+t>a)e=i;else break}while(!0);return yield jr.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,t=this.pos-1,r=this.pos-1,s;for(;s=this.buffer[++r];)if(s===":"){let i=this.buffer[r+1];if(
|
|
150
|
+
`&&i>=this.pos&&i+1+t>a)e=i;else break}while(!0);return yield jr.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,t=this.pos-1,r=this.pos-1,s;for(;s=this.buffer[++r];)if(s===":"){let i=this.buffer[r+1];if($e(i)||e&&$i.has(i))break;t=r}else if($e(s)){let i=this.buffer[r+1];if(s==="\r"&&(i===`
|
|
151
151
|
`?(r+=1,s=`
|
|
152
|
-
`,i=this.buffer[r+1]):t=r),i==="#"||e
|
|
153
|
-
`){let o=this.continueScalar(r+1);if(o===-1)break;r=Math.max(r,o-2)}}else{if(e
|
|
152
|
+
`,i=this.buffer[r+1]):t=r),i==="#"||e&&$i.has(i))break;if(s===`
|
|
153
|
+
`){let o=this.continueScalar(r+1);if(o===-1)break;r=Math.max(r,o-2)}}else{if(e&&$i.has(s))break;t=r}return!s&&!this.atEnd?this.setNext("plain-scalar"):(yield jr.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 r=this.buffer.slice(this.pos,e);return r?(yield r,this.pos+=r.length,r.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(mc))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let e=this.flowLevel>0,t=this.charAt(1);if($e(t)||e&&$i.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(;!$e(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(j0.has(t))t=this.buffer[++e];else if(t==="%"&&em.has(this.buffer[e+1])&&em.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===`
|
|
154
154
|
`?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===`
|
|
155
|
-
`?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,r;do r=this.buffer[++t];while(r===" "||e&&r===" ");let s=t-this.pos;return s>0&&(yield this.buffer.substr(this.pos,s),this.pos=t),s}*pushUntil(e){let t=this.pos,r=this.buffer[t];for(;!e(r);)r=this.buffer[++t];return yield*this.pushToIndex(t,!1)}};
|
|
155
|
+
`?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,r;do r=this.buffer[++t];while(r===" "||e&&r===" ");let s=t-this.pos;return s>0&&(yield this.buffer.substr(this.pos,s),this.pos=t),s}*pushUntil(e){let t=this.pos,r=this.buffer[t];for(;!e(r);)r=this.buffer[++t];return yield*this.pushToIndex(t,!1)}};tm.Lexer=gc});var wc=O(nm=>{"use strict";var bc=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,r=this.lineStarts.length;for(;t<r;){let i=t+r>>1;this.lineStarts[i]<e?t=i+1:r=i}if(this.lineStarts[t]===e)return{line:t+1,col:1};if(t===0)return{line:0,col:e};let s=this.lineStarts[t-1];return{line:t,col:e-s+1}}}};nm.LineCounter=bc});var Sc=O(am=>{"use strict";var U0=$s("process"),rm=Ni(),q0=yc();function vt(n,e){for(let t=0;t<n.length;++t)if(n[t].type===e)return!0;return!1}function sm(n){for(let e=0;e<n.length;++e)switch(n[e].type){case"space":case"comment":case"newline":break;default:return e}return-1}function om(n){switch(n?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function Li(n){switch(n.type){case"document":return n.start;case"block-map":{let e=n.items[n.items.length-1];return e.sep??e.start}case"block-seq":return n.items[n.items.length-1].start;default:return[]}}function An(n){if(n.length===0)return[];let e=n.length;e:for(;--e>=0;)switch(n[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;n[++e]?.type==="space";);return n.splice(e,n.length)}function im(n){if(n.start.type==="flow-seq-start")for(let e of n.items)e.sep&&!e.value&&!vt(e.start,"explicit-key-ind")&&!vt(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,om(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 vc=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 q0.Lexer,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let r of this.lexer.lex(e,t))yield*this.next(r);t||(yield*this.end())}*next(e){if(this.source=e,U0.env.LOG_TOKENS&&console.log("|",rm.prettyToken(e)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let t=rm.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 r=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:r,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 r=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in r?r.indent:0:t.type==="flow-collection"&&r.type==="document"&&(t.indent=0),t.type==="flow-collection"&&im(t),r.type){case"document":r.value=t;break;case"block-scalar":r.props.push(t);break;case"block-map":{let s=r.items[r.items.length-1];if(s.value){r.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(s.sep)s.value=t;else{Object.assign(s,{key:t,sep:[]}),this.onKeyLine=!s.explicitKey;return}break}case"block-seq":{let s=r.items[r.items.length-1];s.value?r.items.push({start:[],value:t}):s.value=t;break}case"flow-collection":{let s=r.items[r.items.length-1];!s||s.value?r.items.push({start:[],key:t,sep:[]}):s.sep?s.value=t:Object.assign(s,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if((r.type==="document"||r.type==="block-map"||r.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){let s=t.items[t.items.length-1];s&&!s.sep&&!s.value&&s.start.length>0&&sm(s.start)===-1&&(t.indent===0||s.start.every(i=>i.type!=="comment"||i.indent<t.indent))&&(r.type==="document"?r.end=s.start:r.items.push({start:s.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":{sm(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=Li(this.peek(2)),r=An(t),s;e.end?(s=e.end,s.push(this.sourceToken),delete e.end):s=[this.sourceToken];let i={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:r,key:e,sep:s}]};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(`
|
|
156
156
|
`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`
|
|
157
|
-
`,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 r="end"in t.value?t.value.end:void 0;(Array.isArray(r)?r[r.length-1]:void 0)?.type==="comment"?r?.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 s=e.items[e.items.length-2]?.value?.end;if(Array.isArray(s)){Array.prototype.push.apply(s,t.start),s.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let r=!this.onKeyLine&&this.indent===e.indent,s=r&&(t.sep||t.explicitKey)&&this.type!=="seq-item-ind",i=[];if(s&&t.sep&&!t.value){let o=[];for(let a=0;a<t.sep.length;++a){let l=t.sep[a];switch(l.type){case"newline":o.push(a);break;case"space":break;case"comment":l.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":s||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):s||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(vt(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(
|
|
157
|
+
`,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 r="end"in t.value?t.value.end:void 0;(Array.isArray(r)?r[r.length-1]:void 0)?.type==="comment"?r?.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 s=e.items[e.items.length-2]?.value?.end;if(Array.isArray(s)){Array.prototype.push.apply(s,t.start),s.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let r=!this.onKeyLine&&this.indent===e.indent,s=r&&(t.sep||t.explicitKey)&&this.type!=="seq-item-ind",i=[];if(s&&t.sep&&!t.value){let o=[];for(let a=0;a<t.sep.length;++a){let l=t.sep[a];switch(l.type){case"newline":o.push(a);break;case"space":break;case"comment":l.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":s||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):s||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(vt(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(om(t.key)&&!vt(t.sep,"newline")){let o=An(t.start),a=t.key,l=t.sep;l.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:l}]})}else i.length>0?t.sep=t.sep.concat(i,this.sourceToken):t.sep.push(this.sourceToken);else if(vt(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let o=An(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||s?e.items.push({start:i,key:null,sep:[this.sourceToken]}):vt(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);s||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&&!vt(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 r&&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 r="end"in t.value?t.value.end:void 0;(Array.isArray(r)?r[r.length-1]:void 0)?.type==="comment"?r?.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 s=e.items[e.items.length-2]?.value?.end;if(Array.isArray(s)){Array.prototype.push.apply(s,t.start),s.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||vt(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let r=this.startBlockValue(e);if(r){this.stack.push(r);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let r;do yield*this.pop(),r=this.peek(1);while(r?.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 s=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:s,sep:[]}):t.sep?this.stack.push(s):Object.assign(t,{key:s,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let r=this.startBlockValue(e);r?this.stack.push(r):(yield*this.pop(),yield*this.step())}else{let r=this.peek(2);if(r.type==="block-map"&&(this.type==="map-value-ind"&&r.indent===e.indent||this.type==="newline"&&!r.items[r.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&r.type!=="flow-collection"){let s=Li(r),i=An(s);im(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(`
|
|
158
158
|
`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`
|
|
159
|
-
`,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
|
|
160
|
-
`),t=e.trim();if(
|
|
159
|
+
`,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=Li(e),r=An(t);return r.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let t=Li(e),r=An(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(r=>r.type==="newline"||r.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())}}};am.Parser=vc});var fm=O(Ur=>{"use strict";var lm=ac(),J0=Ir(),Fr=Lr(),K0=il(),W0=U(),H0=wc(),cm=Sc();function um(n){let e=n.prettyErrors!==!1;return{lineCounter:n.lineCounter||e&&new H0.LineCounter||null,prettyErrors:e}}function Y0(n,e={}){let{lineCounter:t,prettyErrors:r}=um(e),s=new cm.Parser(t?.addNewLine),i=new lm.Composer(e),o=Array.from(i.compose(s.parse(n)));if(r&&t)for(let a of o)a.errors.forEach(Fr.prettifyError(n,t)),a.warnings.forEach(Fr.prettifyError(n,t));return o.length>0?o:Object.assign([],{empty:!0},i.streamInfo())}function dm(n,e={}){let{lineCounter:t,prettyErrors:r}=um(e),s=new cm.Parser(t?.addNewLine),i=new lm.Composer(e),o=null;for(let a of i.compose(s.parse(n),!0,n.length))if(!o)o=a;else if(o.options.logLevel!=="silent"){o.errors.push(new Fr.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return r&&t&&(o.errors.forEach(Fr.prettifyError(n,t)),o.warnings.forEach(Fr.prettifyError(n,t))),o}function V0(n,e,t){let r;typeof e=="function"?r=e:t===void 0&&e&&typeof e=="object"&&(t=e);let s=dm(n,t);if(!s)return null;if(s.warnings.forEach(i=>K0.warn(s.options.logLevel,i)),s.errors.length>0){if(s.options.logLevel!=="silent")throw s.errors[0];s.errors=[]}return s.toJS(Object.assign({reviver:r},t))}function z0(n,e,t){let r=null;if(typeof e=="function"||Array.isArray(e)?r=e:t===void 0&&e&&(t=e),typeof t=="string"&&(t=t.length),typeof t=="number"){let s=Math.round(t);t=s<1?void 0:s>8?{indent:8}:{indent:s}}if(n===void 0){let{keepUndefined:s}=t??e??{};if(!s)return}return W0.isDocument(n)&&!r?n.toString(t):new J0.Document(n,r,t).toString(t)}Ur.parse=V0;Ur.parseAllDocuments=Y0;Ur.parseDocument=dm;Ur.stringify=z0});var hm=O(J=>{"use strict";var G0=ac(),X0=Ir(),Q0=Ul(),kc=Lr(),Z0=mr(),St=U(),eE=gt(),tE=te(),nE=bt(),rE=wt(),sE=Ni(),iE=yc(),oE=wc(),aE=Sc(),Mi=fm(),pm=dr();J.Composer=G0.Composer;J.Document=X0.Document;J.Schema=Q0.Schema;J.YAMLError=kc.YAMLError;J.YAMLParseError=kc.YAMLParseError;J.YAMLWarning=kc.YAMLWarning;J.Alias=Z0.Alias;J.isAlias=St.isAlias;J.isCollection=St.isCollection;J.isDocument=St.isDocument;J.isMap=St.isMap;J.isNode=St.isNode;J.isPair=St.isPair;J.isScalar=St.isScalar;J.isSeq=St.isSeq;J.Pair=eE.Pair;J.Scalar=tE.Scalar;J.YAMLMap=nE.YAMLMap;J.YAMLSeq=rE.YAMLSeq;J.CST=sE;J.Lexer=iE.Lexer;J.LineCounter=oE.LineCounter;J.Parser=aE.Parser;J.parse=Mi.parse;J.parseAllDocuments=Mi.parseAllDocuments;J.parseDocument=Mi.parseDocument;J.stringify=Mi.stringify;J.visit=pm.visit;J.visitAsync=pm.visitAsync});function cE(n){try{return JSON.parse(n.trim()),!0}catch{return!1}}function uE(n){let e=n.trim();if(!e.startsWith("<"))return!1;let t=e.match(lE);return t?ur(e,t[1])!==null:!1}function dE(n){let e=n.trim();if(!e.match(/^(---|#|\w+:|-)/)||"[{<".includes(e[0]))return!1;try{let t=mm.parse(e);return t!==null&&typeof t=="object"}catch{return!1}}function gm(n){return cE(n)||uE(n)||dE(n)}var mm,lE,xc=v(()=>{Tf();mm=yv(hm(),1),lE=/<([a-zA-Z_][\w.-]*)/});function fE(n){if(!n?.trim())return[];let e=n.replace(/\r\n/g,`
|
|
160
|
+
`),t=e.trim();if(gm(t))return[{text:t,startLine:1,endLine:e.split(`
|
|
161
161
|
`).length}];let r=e.split(`
|
|
162
162
|
`),s=[],i=0,o=-1,a=0,l=()=>{if(o>=i){let c=r.slice(i,o+1).join(`
|
|
163
|
-
`).trim();c&&s.push({text:c,startLine:i+1,endLine:o+1})}};for(let c=0;c<r.length;c++)r[c].trim()?(a>=2&&o>=i&&(l(),i=c),a=0,o=c):a++;return l(),s}function
|
|
163
|
+
`).trim();c&&s.push({text:c,startLine:i+1,endLine:o+1})}};for(let c=0;c<r.length;c++)r[c].trim()?(a>=2&&o>=i&&(l(),i=c),a=0,o=c):a++;return l(),s}function Bi(n){return fE(n).map(e=>e.text)}var ym,bm=v(()=>{xc();ym=`
|
|
164
164
|
|
|
165
165
|
|
|
166
|
-
`});function Bi(n){if(typeof n!="string")throw new TypeError("Expected a string");return n.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var gm=v(()=>{});var aE,lE,kc,ym=v(()=>{aE=[["\xDF","ss"],["\u1E9E","Ss"],["\xE4","ae"],["\xC4","Ae"],["\xF6","oe"],["\xD6","Oe"],["\xFC","ue"],["\xDC","Ue"],["\xC0","A"],["\xC1","A"],["\xC2","A"],["\xC3","A"],["\xC4","Ae"],["\xC5","A"],["\xC6","AE"],["\xC7","C"],["\xC8","E"],["\xC9","E"],["\xCA","E"],["\xCB","E"],["\u018F","A"],["\xCC","I"],["\xCD","I"],["\xCE","I"],["\xCF","I"],["\xD0","D"],["\xD1","N"],["\xD2","O"],["\xD3","O"],["\xD4","O"],["\xD5","O"],["\xD6","Oe"],["\u014C","O"],["\u0150","O"],["\xD8","O"],["\u0152","OE"],["\xD9","U"],["\xDA","U"],["\xDB","U"],["\xDC","Ue"],["\u0170","U"],["\xDD","Y"],["\xDE","TH"],["\xDF","ss"],["\xE0","a"],["\xE1","a"],["\xE2","a"],["\xE3","a"],["\xE4","ae"],["\xE5","a"],["\xE6","ae"],["\xE7","c"],["\xE8","e"],["\xE9","e"],["\xEA","e"],["\xEB","e"],["\u0259","a"],["\xEC","i"],["\xED","i"],["\xEE","i"],["\xEF","i"],["\xF0","d"],["\xF1","n"],["\xF2","o"],["\xF3","o"],["\xF4","o"],["\xF5","o"],["\xF6","oe"],["\u014D","o"],["\u0151","o"],["\xF8","o"],["\u0153","oe"],["\xF9","u"],["\xFA","u"],["\xFB","u"],["\xFC","ue"],["\u0171","u"],["\xFD","y"],["\xFE","th"],["\xFF","y"],["\xE0","a"],["\xC0","A"],["\xE1","a"],["\xC1","A"],["\xE2","a"],["\xC2","A"],["\xE3","a"],["\xC3","A"],["\xE8","e"],["\xC8","E"],["\xE9","e"],["\xC9","E"],["\xEA","e"],["\xCA","E"],["\xEC","i"],["\xCC","I"],["\xED","i"],["\xCD","I"],["\xF2","o"],["\xD2","O"],["\xF3","o"],["\xD3","O"],["\xF4","o"],["\xD4","O"],["\xF5","o"],["\xD5","O"],["\xF9","u"],["\xD9","U"],["\xFA","u"],["\xDA","U"],["\xFD","y"],["\xDD","Y"],["\u0103","a"],["\u0102","A"],["\u0110","D"],["\u0111","d"],["\u0129","i"],["\u0128","I"],["\u0169","u"],["\u0168","U"],["\u01A1","o"],["\u01A0","O"],["\u01B0","u"],["\u01AF","U"],["\u1EA1","a"],["\u1EA0","A"],["\u1EA3","a"],["\u1EA2","A"],["\u1EA5","a"],["\u1EA4","A"],["\u1EA7","a"],["\u1EA6","A"],["\u1EA9","a"],["\u1EA8","A"],["\u1EAB","a"],["\u1EAA","A"],["\u1EAD","a"],["\u1EAC","A"],["\u1EAF","a"],["\u1EAE","A"],["\u1EB1","a"],["\u1EB0","A"],["\u1EB3","a"],["\u1EB2","A"],["\u1EB5","a"],["\u1EB4","A"],["\u1EB7","a"],["\u1EB6","A"],["\u1EB9","e"],["\u1EB8","E"],["\u1EBB","e"],["\u1EBA","E"],["\u1EBD","e"],["\u1EBC","E"],["\u1EBF","e"],["\u1EBE","E"],["\u1EC1","e"],["\u1EC0","E"],["\u1EC3","e"],["\u1EC2","E"],["\u1EC5","e"],["\u1EC4","E"],["\u1EC7","e"],["\u1EC6","E"],["\u1EC9","i"],["\u1EC8","I"],["\u1ECB","i"],["\u1ECA","I"],["\u1ECD","o"],["\u1ECC","O"],["\u1ECF","o"],["\u1ECE","O"],["\u1ED1","o"],["\u1ED0","O"],["\u1ED3","o"],["\u1ED2","O"],["\u1ED5","o"],["\u1ED4","O"],["\u1ED7","o"],["\u1ED6","O"],["\u1ED9","o"],["\u1ED8","O"],["\u1EDB","o"],["\u1EDA","O"],["\u1EDD","o"],["\u1EDC","O"],["\u1EDF","o"],["\u1EDE","O"],["\u1EE1","o"],["\u1EE0","O"],["\u1EE3","o"],["\u1EE2","O"],["\u1EE5","u"],["\u1EE4","U"],["\u1EE7","u"],["\u1EE6","U"],["\u1EE9","u"],["\u1EE8","U"],["\u1EEB","u"],["\u1EEA","U"],["\u1EED","u"],["\u1EEC","U"],["\u1EEF","u"],["\u1EEE","U"],["\u1EF1","u"],["\u1EF0","U"],["\u1EF3","y"],["\u1EF2","Y"],["\u1EF5","y"],["\u1EF4","Y"],["\u1EF7","y"],["\u1EF6","Y"],["\u1EF9","y"],["\u1EF8","Y"],["\u0621","e"],["\u0622","a"],["\u0623","a"],["\u0624","w"],["\u0625","a"],["\u0626","y"],["\u0627","a"],["\u0628","b"],["\u0629","t"],["\u062A","t"],["\u062B","th"],["\u062C","j"],["\u062D","h"],["\u062E","kh"],["\u062F","d"],["\u0630","dh"],["\u0631","r"],["\u0632","z"],["\u0633","s"],["\u0634","sh"],["\u0635","s"],["\u0636","d"],["\u0637","t"],["\u0638","z"],["\u0639","e"],["\u063A","gh"],["\u0640","_"],["\u0641","f"],["\u0642","q"],["\u0643","k"],["\u0644","l"],["\u0645","m"],["\u0646","n"],["\u0647","h"],["\u0648","w"],["\u0649","a"],["\u064A","y"],["\u064E\u200E","a"],["\u064F","u"],["\u0650\u200E","i"],["\u0660","0"],["\u0661","1"],["\u0662","2"],["\u0663","3"],["\u0664","4"],["\u0665","5"],["\u0666","6"],["\u0667","7"],["\u0668","8"],["\u0669","9"],["\u0686","ch"],["\u06A9","k"],["\u06AF","g"],["\u067E","p"],["\u0698","zh"],["\u06CC","y"],["\u06F0","0"],["\u06F1","1"],["\u06F2","2"],["\u06F3","3"],["\u06F4","4"],["\u06F5","5"],["\u06F6","6"],["\u06F7","7"],["\u06F8","8"],["\u06F9","9"],["\u067C","p"],["\u0681","z"],["\u0685","c"],["\u0689","d"],["\uFEAB","d"],["\uFEAD","r"],["\u0693","r"],["\uFEAF","z"],["\u0696","g"],["\u069A","x"],["\u06AB","g"],["\u06BC","n"],["\u06C0","e"],["\u06D0","e"],["\u06CD","ai"],["\u0679","t"],["\u0688","d"],["\u0691","r"],["\u06BA","n"],["\u06C1","h"],["\u06BE","h"],["\u06D2","e"],["\u0410","A"],["\u0430","a"],["\u0411","B"],["\u0431","b"],["\u0412","V"],["\u0432","v"],["\u0413","G"],["\u0433","g"],["\u0414","D"],["\u0434","d"],["\u044A\u0435","ye"],["\u042A\u0435","Ye"],["\u044A\u0415","yE"],["\u042A\u0415","YE"],["\u0415","E"],["\u0435","e"],["\u0401","Yo"],["\u0451","yo"],["\u0416","Zh"],["\u0436","zh"],["\u0417","Z"],["\u0437","z"],["\u0418","I"],["\u0438","i"],["\u044B\u0439","iy"],["\u042B\u0439","Iy"],["\u042B\u0419","IY"],["\u044B\u0419","iY"],["\u0419","Y"],["\u0439","y"],["\u041A","K"],["\u043A","k"],["\u041B","L"],["\u043B","l"],["\u041C","M"],["\u043C","m"],["\u041D","N"],["\u043D","n"],["\u041E","O"],["\u043E","o"],["\u041F","P"],["\u043F","p"],["\u0420","R"],["\u0440","r"],["\u0421","S"],["\u0441","s"],["\u0422","T"],["\u0442","t"],["\u0423","U"],["\u0443","u"],["\u0424","F"],["\u0444","f"],["\u0425","Kh"],["\u0445","kh"],["\u0426","Ts"],["\u0446","ts"],["\u0427","Ch"],["\u0447","ch"],["\u0428","Sh"],["\u0448","sh"],["\u0429","Sch"],["\u0449","sch"],["\u042A",""],["\u044A",""],["\u042B","Y"],["\u044B","y"],["\u042C",""],["\u044C",""],["\u042D","E"],["\u044D","e"],["\u042E","Yu"],["\u044E","yu"],["\u042F","Ya"],["\u044F","ya"],["\u0103","a"],["\u0102","A"],["\u0219","s"],["\u0218","S"],["\u021B","t"],["\u021A","T"],["\u0163","t"],["\u0162","T"],["\u015F","s"],["\u015E","S"],["\xE7","c"],["\xC7","C"],["\u011F","g"],["\u011E","G"],["\u0131","i"],["\u0130","I"],["\u0561","a"],["\u0531","A"],["\u0562","b"],["\u0532","B"],["\u0563","g"],["\u0533","G"],["\u0564","d"],["\u0534","D"],["\u0565","ye"],["\u0535","Ye"],["\u0566","z"],["\u0536","Z"],["\u0567","e"],["\u0537","E"],["\u0568","y"],["\u0538","Y"],["\u0569","t"],["\u0539","T"],["\u056A","zh"],["\u053A","Zh"],["\u056B","i"],["\u053B","I"],["\u056C","l"],["\u053C","L"],["\u056D","kh"],["\u053D","Kh"],["\u056E","ts"],["\u053E","Ts"],["\u056F","k"],["\u053F","K"],["\u0570","h"],["\u0540","H"],["\u0571","dz"],["\u0541","Dz"],["\u0572","gh"],["\u0542","Gh"],["\u0573","tch"],["\u0543","Tch"],["\u0574","m"],["\u0544","M"],["\u0575","y"],["\u0545","Y"],["\u0576","n"],["\u0546","N"],["\u0577","sh"],["\u0547","Sh"],["\u0578\u0582","u"],["\u0548\u0552","U"],["\u0548\u0582","U"],["\u0578","vo"],["\u0548","Vo"],["\u0579","ch"],["\u0549","Ch"],["\u057A","p"],["\u054A","P"],["\u057B","j"],["\u054B","J"],["\u057C","r"],["\u054C","R"],["\u057D","s"],["\u054D","S"],["\u057E","v"],["\u054E","V"],["\u057F","t"],["\u054F","T"],["\u0580","r"],["\u0550","R"],["\u0581","c"],["\u0551","C"],["\u0583","p"],["\u0553","P"],["\u0584","q"],["\u0554","Q"],["\u0585","o"],["\u0555","O"],["\u0586","f"],["\u0556","F"],["\u0587","yev"],["\u10D0","a"],["\u10D1","b"],["\u10D2","g"],["\u10D3","d"],["\u10D4","e"],["\u10D5","v"],["\u10D6","z"],["\u10D7","t"],["\u10D8","i"],["\u10D9","k"],["\u10DA","l"],["\u10DB","m"],["\u10DC","n"],["\u10DD","o"],["\u10DE","p"],["\u10DF","zh"],["\u10E0","r"],["\u10E1","s"],["\u10E2","t"],["\u10E3","u"],["\u10E4","ph"],["\u10E5","q"],["\u10E6","gh"],["\u10E7","k"],["\u10E8","sh"],["\u10E9","ch"],["\u10EA","ts"],["\u10EB","dz"],["\u10EC","ts"],["\u10ED","tch"],["\u10EE","kh"],["\u10EF","j"],["\u10F0","h"],["\u010D","c"],["\u010F","d"],["\u011B","e"],["\u0148","n"],["\u0159","r"],["\u0161","s"],["\u0165","t"],["\u016F","u"],["\u017E","z"],["\u010C","C"],["\u010E","D"],["\u011A","E"],["\u0147","N"],["\u0158","R"],["\u0160","S"],["\u0164","T"],["\u016E","U"],["\u017D","Z"],["\u0780","h"],["\u0781","sh"],["\u0782","n"],["\u0783","r"],["\u0784","b"],["\u0785","lh"],["\u0786","k"],["\u0787","a"],["\u0788","v"],["\u0789","m"],["\u078A","f"],["\u078B","dh"],["\u078C","th"],["\u078D","l"],["\u078E","g"],["\u078F","gn"],["\u0790","s"],["\u0791","d"],["\u0792","z"],["\u0793","t"],["\u0794","y"],["\u0795","p"],["\u0796","j"],["\u0797","ch"],["\u0798","tt"],["\u0799","hh"],["\u079A","kh"],["\u079B","th"],["\u079C","z"],["\u079D","sh"],["\u079E","s"],["\u079F","d"],["\u07A0","t"],["\u07A1","z"],["\u07A2","a"],["\u07A3","gh"],["\u07A4","q"],["\u07A5","w"],["\u07A6","a"],["\u07A7","aa"],["\u07A8","i"],["\u07A9","ee"],["\u07AA","u"],["\u07AB","oo"],["\u07AC","e"],["\u07AD","ey"],["\u07AE","o"],["\u07AF","oa"],["\u07B0",""],["\u03B1","a"],["\u03B2","v"],["\u03B3","g"],["\u03B4","d"],["\u03B5","e"],["\u03B6","z"],["\u03B7","i"],["\u03B8","th"],["\u03B9","i"],["\u03BA","k"],["\u03BB","l"],["\u03BC","m"],["\u03BD","n"],["\u03BE","ks"],["\u03BF","o"],["\u03C0","p"],["\u03C1","r"],["\u03C3","s"],["\u03C4","t"],["\u03C5","y"],["\u03C6","f"],["\u03C7","x"],["\u03C8","ps"],["\u03C9","o"],["\u03AC","a"],["\u03AD","e"],["\u03AF","i"],["\u03CC","o"],["\u03CD","y"],["\u03AE","i"],["\u03CE","o"],["\u03C2","s"],["\u03CA","i"],["\u03B0","y"],["\u03CB","y"],["\u0390","i"],["\u0391","A"],["\u0392","B"],["\u0393","G"],["\u0394","D"],["\u0395","E"],["\u0396","Z"],["\u0397","I"],["\u0398","TH"],["\u0399","I"],["\u039A","K"],["\u039B","L"],["\u039C","M"],["\u039D","N"],["\u039E","KS"],["\u039F","O"],["\u03A0","P"],["\u03A1","R"],["\u03A3","S"],["\u03A4","T"],["\u03A5","Y"],["\u03A6","F"],["\u03A7","X"],["\u03A8","PS"],["\u03A9","O"],["\u0386","A"],["\u0388","E"],["\u038A","I"],["\u038C","O"],["\u038E","Y"],["\u0389","I"],["\u038F","O"],["\u03AA","I"],["\u03AB","Y"],["\u0101","a"],["\u0113","e"],["\u0123","g"],["\u012B","i"],["\u0137","k"],["\u013C","l"],["\u0146","n"],["\u016B","u"],["\u0100","A"],["\u0112","E"],["\u0122","G"],["\u012A","I"],["\u0136","K"],["\u013B","L"],["\u0145","N"],["\u016A","U"],["\u010D","c"],["\u0161","s"],["\u017E","z"],["\u010C","C"],["\u0160","S"],["\u017D","Z"],["\u0105","a"],["\u010D","c"],["\u0119","e"],["\u0117","e"],["\u012F","i"],["\u0161","s"],["\u0173","u"],["\u016B","u"],["\u017E","z"],["\u0104","A"],["\u010C","C"],["\u0118","E"],["\u0116","E"],["\u012E","I"],["\u0160","S"],["\u0172","U"],["\u016A","U"],["\u040C","Kj"],["\u045C","kj"],["\u0409","Lj"],["\u0459","lj"],["\u040A","Nj"],["\u045A","nj"],["\u0422\u0441","Ts"],["\u0442\u0441","ts"],["\u0105","a"],["\u0107","c"],["\u0119","e"],["\u0142","l"],["\u0144","n"],["\u015B","s"],["\u017A","z"],["\u017C","z"],["\u0104","A"],["\u0106","C"],["\u0118","E"],["\u0141","L"],["\u0143","N"],["\u015A","S"],["\u0179","Z"],["\u017B","Z"],["\u0404","Ye"],["\u0406","I"],["\u0407","Yi"],["\u0490","G"],["\u0454","ye"],["\u0456","i"],["\u0457","yi"],["\u0491","g"],["\u0132","IJ"],["\u0133","ij"],["\xA2","c"],["\xA5","Y"],["\u07FF","b"],["\u09F3","t"],["\u0AF1","Bo"],["\u0E3F","B"],["\u20A0","CE"],["\u20A1","C"],["\u20A2","Cr"],["\u20A3","F"],["\u20A5","m"],["\u20A6","N"],["\u20A7","Pt"],["\u20A8","Rs"],["\u20A9","W"],["\u20AB","s"],["\u20AC","E"],["\u20AD","K"],["\u20AE","T"],["\u20AF","Dp"],["\u20B0","S"],["\u20B1","P"],["\u20B2","G"],["\u20B3","A"],["\u20B4","S"],["\u20B5","C"],["\u20B6","tt"],["\u20B7","S"],["\u20B8","T"],["\u20B9","R"],["\u20BA","L"],["\u20BD","P"],["\u20BF","B"],["\uFE69","$"],["\uFFE0","c"],["\uFFE5","Y"],["\uFFE6","W"],["\u{1D400}","A"],["\u{1D401}","B"],["\u{1D402}","C"],["\u{1D403}","D"],["\u{1D404}","E"],["\u{1D405}","F"],["\u{1D406}","G"],["\u{1D407}","H"],["\u{1D408}","I"],["\u{1D409}","J"],["\u{1D40A}","K"],["\u{1D40B}","L"],["\u{1D40C}","M"],["\u{1D40D}","N"],["\u{1D40E}","O"],["\u{1D40F}","P"],["\u{1D410}","Q"],["\u{1D411}","R"],["\u{1D412}","S"],["\u{1D413}","T"],["\u{1D414}","U"],["\u{1D415}","V"],["\u{1D416}","W"],["\u{1D417}","X"],["\u{1D418}","Y"],["\u{1D419}","Z"],["\u{1D41A}","a"],["\u{1D41B}","b"],["\u{1D41C}","c"],["\u{1D41D}","d"],["\u{1D41E}","e"],["\u{1D41F}","f"],["\u{1D420}","g"],["\u{1D421}","h"],["\u{1D422}","i"],["\u{1D423}","j"],["\u{1D424}","k"],["\u{1D425}","l"],["\u{1D426}","m"],["\u{1D427}","n"],["\u{1D428}","o"],["\u{1D429}","p"],["\u{1D42A}","q"],["\u{1D42B}","r"],["\u{1D42C}","s"],["\u{1D42D}","t"],["\u{1D42E}","u"],["\u{1D42F}","v"],["\u{1D430}","w"],["\u{1D431}","x"],["\u{1D432}","y"],["\u{1D433}","z"],["\u{1D434}","A"],["\u{1D435}","B"],["\u{1D436}","C"],["\u{1D437}","D"],["\u{1D438}","E"],["\u{1D439}","F"],["\u{1D43A}","G"],["\u{1D43B}","H"],["\u{1D43C}","I"],["\u{1D43D}","J"],["\u{1D43E}","K"],["\u{1D43F}","L"],["\u{1D440}","M"],["\u{1D441}","N"],["\u{1D442}","O"],["\u{1D443}","P"],["\u{1D444}","Q"],["\u{1D445}","R"],["\u{1D446}","S"],["\u{1D447}","T"],["\u{1D448}","U"],["\u{1D449}","V"],["\u{1D44A}","W"],["\u{1D44B}","X"],["\u{1D44C}","Y"],["\u{1D44D}","Z"],["\u{1D44E}","a"],["\u{1D44F}","b"],["\u{1D450}","c"],["\u{1D451}","d"],["\u{1D452}","e"],["\u{1D453}","f"],["\u{1D454}","g"],["\u{1D456}","i"],["\u{1D457}","j"],["\u{1D458}","k"],["\u{1D459}","l"],["\u{1D45A}","m"],["\u{1D45B}","n"],["\u{1D45C}","o"],["\u{1D45D}","p"],["\u{1D45E}","q"],["\u{1D45F}","r"],["\u{1D460}","s"],["\u{1D461}","t"],["\u{1D462}","u"],["\u{1D463}","v"],["\u{1D464}","w"],["\u{1D465}","x"],["\u{1D466}","y"],["\u{1D467}","z"],["\u{1D468}","A"],["\u{1D469}","B"],["\u{1D46A}","C"],["\u{1D46B}","D"],["\u{1D46C}","E"],["\u{1D46D}","F"],["\u{1D46E}","G"],["\u{1D46F}","H"],["\u{1D470}","I"],["\u{1D471}","J"],["\u{1D472}","K"],["\u{1D473}","L"],["\u{1D474}","M"],["\u{1D475}","N"],["\u{1D476}","O"],["\u{1D477}","P"],["\u{1D478}","Q"],["\u{1D479}","R"],["\u{1D47A}","S"],["\u{1D47B}","T"],["\u{1D47C}","U"],["\u{1D47D}","V"],["\u{1D47E}","W"],["\u{1D47F}","X"],["\u{1D480}","Y"],["\u{1D481}","Z"],["\u{1D482}","a"],["\u{1D483}","b"],["\u{1D484}","c"],["\u{1D485}","d"],["\u{1D486}","e"],["\u{1D487}","f"],["\u{1D488}","g"],["\u{1D489}","h"],["\u{1D48A}","i"],["\u{1D48B}","j"],["\u{1D48C}","k"],["\u{1D48D}","l"],["\u{1D48E}","m"],["\u{1D48F}","n"],["\u{1D490}","o"],["\u{1D491}","p"],["\u{1D492}","q"],["\u{1D493}","r"],["\u{1D494}","s"],["\u{1D495}","t"],["\u{1D496}","u"],["\u{1D497}","v"],["\u{1D498}","w"],["\u{1D499}","x"],["\u{1D49A}","y"],["\u{1D49B}","z"],["\u{1D49C}","A"],["\u{1D49E}","C"],["\u{1D49F}","D"],["\u{1D4A2}","g"],["\u{1D4A5}","J"],["\u{1D4A6}","K"],["\u{1D4A9}","N"],["\u{1D4AA}","O"],["\u{1D4AB}","P"],["\u{1D4AC}","Q"],["\u{1D4AE}","S"],["\u{1D4AF}","T"],["\u{1D4B0}","U"],["\u{1D4B1}","V"],["\u{1D4B2}","W"],["\u{1D4B3}","X"],["\u{1D4B4}","Y"],["\u{1D4B5}","Z"],["\u{1D4B6}","a"],["\u{1D4B7}","b"],["\u{1D4B8}","c"],["\u{1D4B9}","d"],["\u{1D4BB}","f"],["\u{1D4BD}","h"],["\u{1D4BE}","i"],["\u{1D4BF}","j"],["\u{1D4C0}","k"],["\u{1D4C1}","l"],["\u{1D4C2}","m"],["\u{1D4C3}","n"],["\u{1D4C5}","p"],["\u{1D4C6}","q"],["\u{1D4C7}","r"],["\u{1D4C8}","s"],["\u{1D4C9}","t"],["\u{1D4CA}","u"],["\u{1D4CB}","v"],["\u{1D4CC}","w"],["\u{1D4CD}","x"],["\u{1D4CE}","y"],["\u{1D4CF}","z"],["\u{1D4D0}","A"],["\u{1D4D1}","B"],["\u{1D4D2}","C"],["\u{1D4D3}","D"],["\u{1D4D4}","E"],["\u{1D4D5}","F"],["\u{1D4D6}","G"],["\u{1D4D7}","H"],["\u{1D4D8}","I"],["\u{1D4D9}","J"],["\u{1D4DA}","K"],["\u{1D4DB}","L"],["\u{1D4DC}","M"],["\u{1D4DD}","N"],["\u{1D4DE}","O"],["\u{1D4DF}","P"],["\u{1D4E0}","Q"],["\u{1D4E1}","R"],["\u{1D4E2}","S"],["\u{1D4E3}","T"],["\u{1D4E4}","U"],["\u{1D4E5}","V"],["\u{1D4E6}","W"],["\u{1D4E7}","X"],["\u{1D4E8}","Y"],["\u{1D4E9}","Z"],["\u{1D4EA}","a"],["\u{1D4EB}","b"],["\u{1D4EC}","c"],["\u{1D4ED}","d"],["\u{1D4EE}","e"],["\u{1D4EF}","f"],["\u{1D4F0}","g"],["\u{1D4F1}","h"],["\u{1D4F2}","i"],["\u{1D4F3}","j"],["\u{1D4F4}","k"],["\u{1D4F5}","l"],["\u{1D4F6}","m"],["\u{1D4F7}","n"],["\u{1D4F8}","o"],["\u{1D4F9}","p"],["\u{1D4FA}","q"],["\u{1D4FB}","r"],["\u{1D4FC}","s"],["\u{1D4FD}","t"],["\u{1D4FE}","u"],["\u{1D4FF}","v"],["\u{1D500}","w"],["\u{1D501}","x"],["\u{1D502}","y"],["\u{1D503}","z"],["\u{1D504}","A"],["\u{1D505}","B"],["\u{1D507}","D"],["\u{1D508}","E"],["\u{1D509}","F"],["\u{1D50A}","G"],["\u{1D50D}","J"],["\u{1D50E}","K"],["\u{1D50F}","L"],["\u{1D510}","M"],["\u{1D511}","N"],["\u{1D512}","O"],["\u{1D513}","P"],["\u{1D514}","Q"],["\u{1D516}","S"],["\u{1D517}","T"],["\u{1D518}","U"],["\u{1D519}","V"],["\u{1D51A}","W"],["\u{1D51B}","X"],["\u{1D51C}","Y"],["\u{1D51E}","a"],["\u{1D51F}","b"],["\u{1D520}","c"],["\u{1D521}","d"],["\u{1D522}","e"],["\u{1D523}","f"],["\u{1D524}","g"],["\u{1D525}","h"],["\u{1D526}","i"],["\u{1D527}","j"],["\u{1D528}","k"],["\u{1D529}","l"],["\u{1D52A}","m"],["\u{1D52B}","n"],["\u{1D52C}","o"],["\u{1D52D}","p"],["\u{1D52E}","q"],["\u{1D52F}","r"],["\u{1D530}","s"],["\u{1D531}","t"],["\u{1D532}","u"],["\u{1D533}","v"],["\u{1D534}","w"],["\u{1D535}","x"],["\u{1D536}","y"],["\u{1D537}","z"],["\u{1D538}","A"],["\u{1D539}","B"],["\u{1D53B}","D"],["\u{1D53C}","E"],["\u{1D53D}","F"],["\u{1D53E}","G"],["\u{1D540}","I"],["\u{1D541}","J"],["\u{1D542}","K"],["\u{1D543}","L"],["\u{1D544}","M"],["\u{1D546}","O"],["\u{1D54A}","S"],["\u{1D54B}","T"],["\u{1D54C}","U"],["\u{1D54D}","V"],["\u{1D54E}","W"],["\u{1D54F}","X"],["\u{1D550}","Y"],["\u{1D552}","a"],["\u{1D553}","b"],["\u{1D554}","c"],["\u{1D555}","d"],["\u{1D556}","e"],["\u{1D557}","f"],["\u{1D558}","g"],["\u{1D559}","h"],["\u{1D55A}","i"],["\u{1D55B}","j"],["\u{1D55C}","k"],["\u{1D55D}","l"],["\u{1D55E}","m"],["\u{1D55F}","n"],["\u{1D560}","o"],["\u{1D561}","p"],["\u{1D562}","q"],["\u{1D563}","r"],["\u{1D564}","s"],["\u{1D565}","t"],["\u{1D566}","u"],["\u{1D567}","v"],["\u{1D568}","w"],["\u{1D569}","x"],["\u{1D56A}","y"],["\u{1D56B}","z"],["\u{1D56C}","A"],["\u{1D56D}","B"],["\u{1D56E}","C"],["\u{1D56F}","D"],["\u{1D570}","E"],["\u{1D571}","F"],["\u{1D572}","G"],["\u{1D573}","H"],["\u{1D574}","I"],["\u{1D575}","J"],["\u{1D576}","K"],["\u{1D577}","L"],["\u{1D578}","M"],["\u{1D579}","N"],["\u{1D57A}","O"],["\u{1D57B}","P"],["\u{1D57C}","Q"],["\u{1D57D}","R"],["\u{1D57E}","S"],["\u{1D57F}","T"],["\u{1D580}","U"],["\u{1D581}","V"],["\u{1D582}","W"],["\u{1D583}","X"],["\u{1D584}","Y"],["\u{1D585}","Z"],["\u{1D586}","a"],["\u{1D587}","b"],["\u{1D588}","c"],["\u{1D589}","d"],["\u{1D58A}","e"],["\u{1D58B}","f"],["\u{1D58C}","g"],["\u{1D58D}","h"],["\u{1D58E}","i"],["\u{1D58F}","j"],["\u{1D590}","k"],["\u{1D591}","l"],["\u{1D592}","m"],["\u{1D593}","n"],["\u{1D594}","o"],["\u{1D595}","p"],["\u{1D596}","q"],["\u{1D597}","r"],["\u{1D598}","s"],["\u{1D599}","t"],["\u{1D59A}","u"],["\u{1D59B}","v"],["\u{1D59C}","w"],["\u{1D59D}","x"],["\u{1D59E}","y"],["\u{1D59F}","z"],["\u{1D5A0}","A"],["\u{1D5A1}","B"],["\u{1D5A2}","C"],["\u{1D5A3}","D"],["\u{1D5A4}","E"],["\u{1D5A5}","F"],["\u{1D5A6}","G"],["\u{1D5A7}","H"],["\u{1D5A8}","I"],["\u{1D5A9}","J"],["\u{1D5AA}","K"],["\u{1D5AB}","L"],["\u{1D5AC}","M"],["\u{1D5AD}","N"],["\u{1D5AE}","O"],["\u{1D5AF}","P"],["\u{1D5B0}","Q"],["\u{1D5B1}","R"],["\u{1D5B2}","S"],["\u{1D5B3}","T"],["\u{1D5B4}","U"],["\u{1D5B5}","V"],["\u{1D5B6}","W"],["\u{1D5B7}","X"],["\u{1D5B8}","Y"],["\u{1D5B9}","Z"],["\u{1D5BA}","a"],["\u{1D5BB}","b"],["\u{1D5BC}","c"],["\u{1D5BD}","d"],["\u{1D5BE}","e"],["\u{1D5BF}","f"],["\u{1D5C0}","g"],["\u{1D5C1}","h"],["\u{1D5C2}","i"],["\u{1D5C3}","j"],["\u{1D5C4}","k"],["\u{1D5C5}","l"],["\u{1D5C6}","m"],["\u{1D5C7}","n"],["\u{1D5C8}","o"],["\u{1D5C9}","p"],["\u{1D5CA}","q"],["\u{1D5CB}","r"],["\u{1D5CC}","s"],["\u{1D5CD}","t"],["\u{1D5CE}","u"],["\u{1D5CF}","v"],["\u{1D5D0}","w"],["\u{1D5D1}","x"],["\u{1D5D2}","y"],["\u{1D5D3}","z"],["\u{1D5D4}","A"],["\u{1D5D5}","B"],["\u{1D5D6}","C"],["\u{1D5D7}","D"],["\u{1D5D8}","E"],["\u{1D5D9}","F"],["\u{1D5DA}","G"],["\u{1D5DB}","H"],["\u{1D5DC}","I"],["\u{1D5DD}","J"],["\u{1D5DE}","K"],["\u{1D5DF}","L"],["\u{1D5E0}","M"],["\u{1D5E1}","N"],["\u{1D5E2}","O"],["\u{1D5E3}","P"],["\u{1D5E4}","Q"],["\u{1D5E5}","R"],["\u{1D5E6}","S"],["\u{1D5E7}","T"],["\u{1D5E8}","U"],["\u{1D5E9}","V"],["\u{1D5EA}","W"],["\u{1D5EB}","X"],["\u{1D5EC}","Y"],["\u{1D5ED}","Z"],["\u{1D5EE}","a"],["\u{1D5EF}","b"],["\u{1D5F0}","c"],["\u{1D5F1}","d"],["\u{1D5F2}","e"],["\u{1D5F3}","f"],["\u{1D5F4}","g"],["\u{1D5F5}","h"],["\u{1D5F6}","i"],["\u{1D5F7}","j"],["\u{1D5F8}","k"],["\u{1D5F9}","l"],["\u{1D5FA}","m"],["\u{1D5FB}","n"],["\u{1D5FC}","o"],["\u{1D5FD}","p"],["\u{1D5FE}","q"],["\u{1D5FF}","r"],["\u{1D600}","s"],["\u{1D601}","t"],["\u{1D602}","u"],["\u{1D603}","v"],["\u{1D604}","w"],["\u{1D605}","x"],["\u{1D606}","y"],["\u{1D607}","z"],["\u{1D608}","A"],["\u{1D609}","B"],["\u{1D60A}","C"],["\u{1D60B}","D"],["\u{1D60C}","E"],["\u{1D60D}","F"],["\u{1D60E}","G"],["\u{1D60F}","H"],["\u{1D610}","I"],["\u{1D611}","J"],["\u{1D612}","K"],["\u{1D613}","L"],["\u{1D614}","M"],["\u{1D615}","N"],["\u{1D616}","O"],["\u{1D617}","P"],["\u{1D618}","Q"],["\u{1D619}","R"],["\u{1D61A}","S"],["\u{1D61B}","T"],["\u{1D61C}","U"],["\u{1D61D}","V"],["\u{1D61E}","W"],["\u{1D61F}","X"],["\u{1D620}","Y"],["\u{1D621}","Z"],["\u{1D622}","a"],["\u{1D623}","b"],["\u{1D624}","c"],["\u{1D625}","d"],["\u{1D626}","e"],["\u{1D627}","f"],["\u{1D628}","g"],["\u{1D629}","h"],["\u{1D62A}","i"],["\u{1D62B}","j"],["\u{1D62C}","k"],["\u{1D62D}","l"],["\u{1D62E}","m"],["\u{1D62F}","n"],["\u{1D630}","o"],["\u{1D631}","p"],["\u{1D632}","q"],["\u{1D633}","r"],["\u{1D634}","s"],["\u{1D635}","t"],["\u{1D636}","u"],["\u{1D637}","v"],["\u{1D638}","w"],["\u{1D639}","x"],["\u{1D63A}","y"],["\u{1D63B}","z"],["\u{1D63C}","A"],["\u{1D63D}","B"],["\u{1D63E}","C"],["\u{1D63F}","D"],["\u{1D640}","E"],["\u{1D641}","F"],["\u{1D642}","G"],["\u{1D643}","H"],["\u{1D644}","I"],["\u{1D645}","J"],["\u{1D646}","K"],["\u{1D647}","L"],["\u{1D648}","M"],["\u{1D649}","N"],["\u{1D64A}","O"],["\u{1D64B}","P"],["\u{1D64C}","Q"],["\u{1D64D}","R"],["\u{1D64E}","S"],["\u{1D64F}","T"],["\u{1D650}","U"],["\u{1D651}","V"],["\u{1D652}","W"],["\u{1D653}","X"],["\u{1D654}","Y"],["\u{1D655}","Z"],["\u{1D656}","a"],["\u{1D657}","b"],["\u{1D658}","c"],["\u{1D659}","d"],["\u{1D65A}","e"],["\u{1D65B}","f"],["\u{1D65C}","g"],["\u{1D65D}","h"],["\u{1D65E}","i"],["\u{1D65F}","j"],["\u{1D660}","k"],["\u{1D661}","l"],["\u{1D662}","m"],["\u{1D663}","n"],["\u{1D664}","o"],["\u{1D665}","p"],["\u{1D666}","q"],["\u{1D667}","r"],["\u{1D668}","s"],["\u{1D669}","t"],["\u{1D66A}","u"],["\u{1D66B}","v"],["\u{1D66C}","w"],["\u{1D66D}","x"],["\u{1D66E}","y"],["\u{1D66F}","z"],["\u{1D670}","A"],["\u{1D671}","B"],["\u{1D672}","C"],["\u{1D673}","D"],["\u{1D674}","E"],["\u{1D675}","F"],["\u{1D676}","G"],["\u{1D677}","H"],["\u{1D678}","I"],["\u{1D679}","J"],["\u{1D67A}","K"],["\u{1D67B}","L"],["\u{1D67C}","M"],["\u{1D67D}","N"],["\u{1D67E}","O"],["\u{1D67F}","P"],["\u{1D680}","Q"],["\u{1D681}","R"],["\u{1D682}","S"],["\u{1D683}","T"],["\u{1D684}","U"],["\u{1D685}","V"],["\u{1D686}","W"],["\u{1D687}","X"],["\u{1D688}","Y"],["\u{1D689}","Z"],["\u{1D68A}","a"],["\u{1D68B}","b"],["\u{1D68C}","c"],["\u{1D68D}","d"],["\u{1D68E}","e"],["\u{1D68F}","f"],["\u{1D690}","g"],["\u{1D691}","h"],["\u{1D692}","i"],["\u{1D693}","j"],["\u{1D694}","k"],["\u{1D695}","l"],["\u{1D696}","m"],["\u{1D697}","n"],["\u{1D698}","o"],["\u{1D699}","p"],["\u{1D69A}","q"],["\u{1D69B}","r"],["\u{1D69C}","s"],["\u{1D69D}","t"],["\u{1D69E}","u"],["\u{1D69F}","v"],["\u{1D6A0}","w"],["\u{1D6A1}","x"],["\u{1D6A2}","y"],["\u{1D6A3}","z"],["\u{1D6A4}","l"],["\u{1D6A5}","j"],["\u{1D6E2}","A"],["\u{1D6E3}","B"],["\u{1D6E4}","G"],["\u{1D6E5}","D"],["\u{1D6E6}","E"],["\u{1D6E7}","Z"],["\u{1D6E8}","I"],["\u{1D6E9}","TH"],["\u{1D6EA}","I"],["\u{1D6EB}","K"],["\u{1D6EC}","L"],["\u{1D6ED}","M"],["\u{1D6EE}","N"],["\u{1D6EF}","KS"],["\u{1D6F0}","O"],["\u{1D6F1}","P"],["\u{1D6F2}","R"],["\u{1D6F3}","TH"],["\u{1D6F4}","S"],["\u{1D6F5}","T"],["\u{1D6F6}","Y"],["\u{1D6F7}","F"],["\u{1D6F8}","x"],["\u{1D6F9}","PS"],["\u{1D6FA}","O"],["\u{1D6FB}","D"],["\u{1D6FC}","a"],["\u{1D6FD}","b"],["\u{1D6FE}","g"],["\u{1D6FF}","d"],["\u{1D700}","e"],["\u{1D701}","z"],["\u{1D702}","i"],["\u{1D703}","th"],["\u{1D704}","i"],["\u{1D705}","k"],["\u{1D706}","l"],["\u{1D707}","m"],["\u{1D708}","n"],["\u{1D709}","ks"],["\u{1D70A}","o"],["\u{1D70B}","p"],["\u{1D70C}","r"],["\u{1D70D}","s"],["\u{1D70E}","s"],["\u{1D70F}","t"],["\u{1D710}","y"],["\u{1D711}","f"],["\u{1D712}","x"],["\u{1D713}","ps"],["\u{1D714}","o"],["\u{1D715}","d"],["\u{1D716}","E"],["\u{1D717}","TH"],["\u{1D718}","K"],["\u{1D719}","f"],["\u{1D71A}","r"],["\u{1D71B}","p"],["\u{1D71C}","A"],["\u{1D71D}","V"],["\u{1D71E}","G"],["\u{1D71F}","D"],["\u{1D720}","E"],["\u{1D721}","Z"],["\u{1D722}","I"],["\u{1D723}","TH"],["\u{1D724}","I"],["\u{1D725}","K"],["\u{1D726}","L"],["\u{1D727}","M"],["\u{1D728}","N"],["\u{1D729}","KS"],["\u{1D72A}","O"],["\u{1D72B}","P"],["\u{1D72C}","S"],["\u{1D72D}","TH"],["\u{1D72E}","S"],["\u{1D72F}","T"],["\u{1D730}","Y"],["\u{1D731}","F"],["\u{1D732}","X"],["\u{1D733}","PS"],["\u{1D734}","O"],["\u{1D735}","D"],["\u{1D736}","a"],["\u{1D737}","v"],["\u{1D738}","g"],["\u{1D739}","d"],["\u{1D73A}","e"],["\u{1D73B}","z"],["\u{1D73C}","i"],["\u{1D73D}","th"],["\u{1D73E}","i"],["\u{1D73F}","k"],["\u{1D740}","l"],["\u{1D741}","m"],["\u{1D742}","n"],["\u{1D743}","ks"],["\u{1D744}","o"],["\u{1D745}","p"],["\u{1D746}","r"],["\u{1D747}","s"],["\u{1D748}","s"],["\u{1D749}","t"],["\u{1D74A}","y"],["\u{1D74B}","f"],["\u{1D74C}","x"],["\u{1D74D}","ps"],["\u{1D74E}","o"],["\u{1D74F}","a"],["\u{1D750}","e"],["\u{1D751}","i"],["\u{1D752}","k"],["\u{1D753}","f"],["\u{1D754}","r"],["\u{1D755}","p"],["\u{1D756}","A"],["\u{1D757}","B"],["\u{1D758}","G"],["\u{1D759}","D"],["\u{1D75A}","E"],["\u{1D75B}","Z"],["\u{1D75C}","I"],["\u{1D75D}","TH"],["\u{1D75E}","I"],["\u{1D75F}","K"],["\u{1D760}","L"],["\u{1D761}","M"],["\u{1D762}","N"],["\u{1D763}","KS"],["\u{1D764}","O"],["\u{1D765}","P"],["\u{1D766}","R"],["\u{1D767}","TH"],["\u{1D768}","S"],["\u{1D769}","T"],["\u{1D76A}","Y"],["\u{1D76B}","F"],["\u{1D76C}","X"],["\u{1D76D}","PS"],["\u{1D76E}","O"],["\u{1D76F}","D"],["\u{1D770}","a"],["\u{1D771}","v"],["\u{1D772}","g"],["\u{1D773}","d"],["\u{1D774}","e"],["\u{1D775}","z"],["\u{1D776}","i"],["\u{1D777}","th"],["\u{1D778}","i"],["\u{1D779}","k"],["\u{1D77A}","l"],["\u{1D77B}","m"],["\u{1D77C}","n"],["\u{1D77D}","ks"],["\u{1D77E}","o"],["\u{1D77F}","p"],["\u{1D780}","r"],["\u{1D781}","s"],["\u{1D782}","s"],["\u{1D783}","t"],["\u{1D784}","y"],["\u{1D785}","f"],["\u{1D786}","x"],["\u{1D787}","ps"],["\u{1D788}","o"],["\u{1D789}","a"],["\u{1D78A}","e"],["\u{1D78B}","i"],["\u{1D78C}","k"],["\u{1D78D}","f"],["\u{1D78E}","r"],["\u{1D78F}","p"],["\u{1D790}","A"],["\u{1D791}","V"],["\u{1D792}","G"],["\u{1D793}","D"],["\u{1D794}","E"],["\u{1D795}","Z"],["\u{1D796}","I"],["\u{1D797}","TH"],["\u{1D798}","I"],["\u{1D799}","K"],["\u{1D79A}","L"],["\u{1D79B}","M"],["\u{1D79C}","N"],["\u{1D79D}","KS"],["\u{1D79E}","O"],["\u{1D79F}","P"],["\u{1D7A0}","S"],["\u{1D7A1}","TH"],["\u{1D7A2}","S"],["\u{1D7A3}","T"],["\u{1D7A4}","Y"],["\u{1D7A5}","F"],["\u{1D7A6}","X"],["\u{1D7A7}","PS"],["\u{1D7A8}","O"],["\u{1D7A9}","D"],["\u{1D7AA}","av"],["\u{1D7AB}","g"],["\u{1D7AC}","d"],["\u{1D7AD}","e"],["\u{1D7AE}","z"],["\u{1D7AF}","i"],["\u{1D7B0}","i"],["\u{1D7B1}","th"],["\u{1D7B2}","i"],["\u{1D7B3}","k"],["\u{1D7B4}","l"],["\u{1D7B5}","m"],["\u{1D7B6}","n"],["\u{1D7B7}","ks"],["\u{1D7B8}","o"],["\u{1D7B9}","p"],["\u{1D7BA}","r"],["\u{1D7BB}","s"],["\u{1D7BC}","s"],["\u{1D7BD}","t"],["\u{1D7BE}","y"],["\u{1D7BF}","f"],["\u{1D7C0}","x"],["\u{1D7C1}","ps"],["\u{1D7C2}","o"],["\u{1D7C3}","a"],["\u{1D7C4}","e"],["\u{1D7C5}","i"],["\u{1D7C6}","k"],["\u{1D7C7}","f"],["\u{1D7C8}","r"],["\u{1D7C9}","p"],["\u{1D7CA}","F"],["\u{1D7CB}","f"],["\u249C","(a)"],["\u249D","(b)"],["\u249E","(c)"],["\u249F","(d)"],["\u24A0","(e)"],["\u24A1","(f)"],["\u24A2","(g)"],["\u24A3","(h)"],["\u24A4","(i)"],["\u24A5","(j)"],["\u24A6","(k)"],["\u24A7","(l)"],["\u24A8","(m)"],["\u24A9","(n)"],["\u24AA","(o)"],["\u24AB","(p)"],["\u24AC","(q)"],["\u24AD","(r)"],["\u24AE","(s)"],["\u24AF","(t)"],["\u24B0","(u)"],["\u24B1","(v)"],["\u24B2","(w)"],["\u24B3","(x)"],["\u24B4","(y)"],["\u24B5","(z)"],["\u24B6","(A)"],["\u24B7","(B)"],["\u24B8","(C)"],["\u24B9","(D)"],["\u24BA","(E)"],["\u24BB","(F)"],["\u24BC","(G)"],["\u24BD","(H)"],["\u24BE","(I)"],["\u24BF","(J)"],["\u24C0","(K)"],["\u24C1","(L)"],["\u24C3","(N)"],["\u24C4","(O)"],["\u24C5","(P)"],["\u24C6","(Q)"],["\u24C7","(R)"],["\u24C8","(S)"],["\u24C9","(T)"],["\u24CA","(U)"],["\u24CB","(V)"],["\u24CC","(W)"],["\u24CD","(X)"],["\u24CE","(Y)"],["\u24CF","(Z)"],["\u24D0","(a)"],["\u24D1","(b)"],["\u24D2","(c)"],["\u24D3","(d)"],["\u24D4","(e)"],["\u24D5","(f)"],["\u24D6","(g)"],["\u24D7","(h)"],["\u24D8","(i)"],["\u24D9","(j)"],["\u24DA","(k)"],["\u24DB","(l)"],["\u24DC","(m)"],["\u24DD","(n)"],["\u24DE","(o)"],["\u24DF","(p)"],["\u24E0","(q)"],["\u24E1","(r)"],["\u24E2","(s)"],["\u24E3","(t)"],["\u24E4","(u)"],["\u24E5","(v)"],["\u24E6","(w)"],["\u24E7","(x)"],["\u24E8","(y)"],["\u24E9","(z)"],["\u010A","C"],["\u010B","c"],["\u0120","G"],["\u0121","g"],["\u0126","H"],["\u0127","h"],["\u017B","Z"],["\u017C","z"],["\u{1D7CE}","0"],["\u{1D7CF}","1"],["\u{1D7D0}","2"],["\u{1D7D1}","3"],["\u{1D7D2}","4"],["\u{1D7D3}","5"],["\u{1D7D4}","6"],["\u{1D7D5}","7"],["\u{1D7D6}","8"],["\u{1D7D7}","9"],["\u{1D7D8}","0"],["\u{1D7D9}","1"],["\u{1D7DA}","2"],["\u{1D7DB}","3"],["\u{1D7DC}","4"],["\u{1D7DD}","5"],["\u{1D7DE}","6"],["\u{1D7DF}","7"],["\u{1D7E0}","8"],["\u{1D7E1}","9"],["\u{1D7E2}","0"],["\u{1D7E3}","1"],["\u{1D7E4}","2"],["\u{1D7E5}","3"],["\u{1D7E6}","4"],["\u{1D7E7}","5"],["\u{1D7E8}","6"],["\u{1D7E9}","7"],["\u{1D7EA}","8"],["\u{1D7EB}","9"],["\u{1D7EC}","0"],["\u{1D7ED}","1"],["\u{1D7EE}","2"],["\u{1D7EF}","3"],["\u{1D7F0}","4"],["\u{1D7F1}","5"],["\u{1D7F2}","6"],["\u{1D7F3}","7"],["\u{1D7F4}","8"],["\u{1D7F5}","9"],["\u{1D7F6}","0"],["\u{1D7F7}","1"],["\u{1D7F8}","2"],["\u{1D7F9}","3"],["\u{1D7FA}","4"],["\u{1D7FB}","5"],["\u{1D7FC}","6"],["\u{1D7FD}","7"],["\u{1D7FE}","8"],["\u{1D7FF}","9"],["\u2460","1"],["\u2461","2"],["\u2462","3"],["\u2463","4"],["\u2464","5"],["\u2465","6"],["\u2466","7"],["\u2467","8"],["\u2468","9"],["\u2469","10"],["\u246A","11"],["\u246B","12"],["\u246C","13"],["\u246D","14"],["\u246E","15"],["\u246F","16"],["\u2470","17"],["\u2471","18"],["\u2472","19"],["\u2473","20"],["\u2474","1"],["\u2475","2"],["\u2476","3"],["\u2477","4"],["\u2478","5"],["\u2479","6"],["\u247A","7"],["\u247B","8"],["\u247C","9"],["\u247D","10"],["\u247E","11"],["\u247F","12"],["\u2480","13"],["\u2481","14"],["\u2482","15"],["\u2483","16"],["\u2484","17"],["\u2485","18"],["\u2486","19"],["\u2487","20"],["\u2488","1."],["\u2489","2."],["\u248A","3."],["\u248B","4."],["\u248C","5."],["\u248D","6."],["\u248E","7."],["\u248F","8."],["\u2490","9."],["\u2491","10."],["\u2492","11."],["\u2493","12."],["\u2494","13."],["\u2495","14."],["\u2496","15."],["\u2497","16."],["\u2498","17."],["\u2499","18."],["\u249A","19."],["\u249B","20."],["\u24EA","0"],["\u24EB","11"],["\u24EC","12"],["\u24ED","13"],["\u24EE","14"],["\u24EF","15"],["\u24F0","16"],["\u24F1","17"],["\u24F2","18"],["\u24F3","19"],["\u24F4","20"],["\u24F5","1"],["\u24F6","2"],["\u24F7","3"],["\u24F8","4"],["\u24F9","5"],["\u24FA","6"],["\u24FB","7"],["\u24FC","8"],["\u24FD","9"],["\u24FE","10"],["\u24FF","0"],["\u{1F670}","&"],["\u{1F671}","&"],["\u{1F672}","&"],["\u{1F673}","&"],["\u{1F674}","&"],["\u{1F675}","&"],["\u{1F676}",'"'],["\u{1F677}",'"'],["\u{1F678}",'"'],["\u203D","?!"],["\u{1F679}","?!"],["\u{1F67A}","?!"],["\u{1F67B}","?!"],["\u{1F67C}","/"],["\u{1F67D}","\\"],["\u{1F707}","AR"],["\u{1F708}","V"],["\u{1F709}","V"],["\u{1F706}","VR"],["\u{1F705}","VF"],["\u{1F729}","2"],["\u{1F72A}","5"],["\u{1F761}","f"],["\u{1F762}","W"],["\u{1F763}","U"],["\u{1F767}","V"],["\u{1F768}","T"],["\u{1F76A}","V"],["\u{1F76B}","MB"],["\u{1F76C}","VB"],["\u{1F772}","3B"],["\u{1F773}","3B"],["\u{1F4AF}","100"],["\u{1F519}","BACK"],["\u{1F51A}","END"],["\u{1F51B}","ON!"],["\u{1F51C}","SOON"],["\u{1F51D}","TOP"],["\u{1F51E}","18"],["\u{1F524}","abc"],["\u{1F520}","ABCD"],["\u{1F521}","abcd"],["\u{1F522}","1234"],["\u{1F523}","T&@%"],["#\uFE0F\u20E3","#"],["*\uFE0F\u20E3","*"],["0\uFE0F\u20E3","0"],["1\uFE0F\u20E3","1"],["2\uFE0F\u20E3","2"],["3\uFE0F\u20E3","3"],["4\uFE0F\u20E3","4"],["5\uFE0F\u20E3","5"],["6\uFE0F\u20E3","6"],["7\uFE0F\u20E3","7"],["8\uFE0F\u20E3","8"],["9\uFE0F\u20E3","9"],["\u{1F51F}","10"],["\u{1F170}\uFE0F","A"],["\u{1F171}\uFE0F","B"],["\u{1F18E}","AB"],["\u{1F191}","CL"],["\u{1F17E}\uFE0F","O"],["\u{1F17F}","P"],["\u{1F198}","SOS"],["\u{1F172}","C"],["\u{1F173}","D"],["\u{1F174}","E"],["\u{1F175}","F"],["\u{1F176}","G"],["\u{1F177}","H"],["\u{1F178}","I"],["\u{1F179}","J"],["\u{1F17A}","K"],["\u{1F17B}","L"],["\u{1F17C}","M"],["\u{1F17D}","N"],["\u{1F180}","Q"],["\u{1F181}","R"],["\u{1F182}","S"],["\u{1F183}","T"],["\u{1F184}","U"],["\u{1F185}","V"],["\u{1F186}","W"],["\u{1F187}","X"],["\u{1F188}","Y"],["\u{1F189}","Z"],["\u2212","-"],["\u2053","-"]],lE=new Map(aE),kc=lE});var bm,Di,xc,wm=v(()=>{bm=[["\xE6","ae"],["\xC6","Ae"],["\xF8","oe"],["\xD8","Oe"],["\xE5","aa"],["\xC5","Aa"]],Di={sv:[["\xE4","a"],["\xC4","A"],["\xF6","o"],["\xD6","O"],["\xE5","a"],["\xC5","A"]],da:bm,nb:bm,de:[["\xE4","ae"],["\xC4","Ae"],["\xF6","oe"],["\xD6","Oe"],["\xFC","ue"],["\xDC","Ue"],["\xDF","ss"],["\u1E9E","Ss"]],tr:[["\xE2","a"],["\xC2","A"],["\xF6","o"],["\xD6","O"],["\xFC","u"],["\xDC","U"]],hu:[["\u0171","u"],["\u0170","U"],["\xF6","o"],["\xD6","O"],["\xFC","u"],["\xDC","U"],["\xE1","a"],["\xC1","A"],["\xE9","e"],["\xC9","E"],["\xED","i"],["\xCD","I"],["\xF3","o"],["\xD3","O"],["\xFA","u"],["\xDA","U"]],sr:[["\u0452","dj"],["\u0402","Dj"],["\u045F","dz"],["\u040F","Dz"],["\u0459","lj"],["\u0409","Lj"],["\u045A","nj"],["\u040A","Nj"],["\u045B","c"],["\u040B","C"],["\u0447","ch"],["\u0427","Ch"],["\u0448","sh"],["\u0428","Sh"],["\u0436","zh"],["\u0416","Zh"]]};for(let n of Object.keys(Di))Di[n]=new Map(Di[n]);xc=Di});function Ec(n,e){if(typeof n!="string")throw new TypeError(`Expected a string, got \`${typeof n}\``);e={customReplacements:[],...e};let t=uE(e.locale),r=kc,s=e.customReplacements.length>0||e.customReplacements.size>0;if(t||s){if(r=new Map(kc),t)for(let[i,o]of t)r.set(i,o);for(let[i,o]of e.customReplacements)r.set(i,o)}return n=n.normalize(),n=cE(n,r),n=n.normalize("NFD").replaceAll(/\p{Diacritic}/gu,"").normalize(),n=n.replaceAll(/\p{Dash_Punctuation}/gu,"-"),n}var cE,uE,vm=v(()=>{ym();wm();cE=(n,e)=>{for(let[t,r]of e)n=n.replaceAll(t,r);return n},uE=n=>{if(!n)return;let e=n.toLowerCase().replace(/^no(-|$)/,"nb$1");return xc[e]||xc[e.split("-")[0]]||void 0}});var dE,Sm,km=v(()=>{dE=[["&"," and "],["\u{1F984}"," unicorn "],["\u2665"," love "]],Sm=dE});function Ac(n,e){if(typeof n!="string")throw new TypeError(`Expected a string, got \`${typeof n}\``);e={separator:"-",lowercase:!0,decamelize:!0,customReplacements:[],preserveLeadingUnderscore:!1,preserveTrailingDash:!1,preserveCharacters:[],transliterate:!0,...e};let t=e.preserveLeadingUnderscore&&n.startsWith("_"),r=e.preserveTrailingDash&&n.endsWith("-");if(e.transliterate){let i=new Map([...Sm,...e.customReplacements]);n=Ec(n,{customReplacements:i,locale:e.locale})}else if(e.customReplacements.length>0)for(let[i,o]of e.customReplacements)n=n.replaceAll(i,o);e.decamelize&&(n=fE(n));let s=hE(e);return e.lowercase&&(n=e.locale?n.toLocaleLowerCase(e.locale):n.toLowerCase()),n=n.replaceAll(/([a-zA-Z\d]+)['\u2019]([ts])(\s|$)/g,"$1$2$3"),n=n.replace(s,e.separator),n=n.replaceAll("\\",""),e.separator&&(n=pE(n,e.separator)),t&&(n=`_${n}`),r&&(n=`${n}-`),n}var fE,pE,hE,xm=v(()=>{gm();vm();km();fE=n=>n.replaceAll(/([A-Z]{2,})(\d+)/g,"$1 $2").replaceAll(/([a-z\d]+)([A-Z]{2,})/g,"$1 $2").replaceAll(/([a-z\d])([A-Z])/g,"$1 $2").replaceAll(/([A-Z]+)([A-Z][a-rt-z\d]+)/g,"$1 $2"),pE=(n,e)=>{let t=Bi(e);return n.replaceAll(new RegExp(`(?:${t}){2,}`,"g"),e).replaceAll(new RegExp(`^(?:${t})|(?:${t})$`,"g"),"")},hE=n=>{let e=String.raw`a-z\d`;if(e+=n.lowercase?"":"A-Z",n.transliterate===!1&&(e+=String.raw`\p{L}\p{N}`),n.preserveCharacters.length>0)for(let r of n.preserveCharacters){if(r===n.separator)throw new Error(`The separator character \`${n.separator}\` cannot be included in preserved characters: ${n.preserveCharacters}`);e+=Bi(r)}let t=n.transliterate?"g":"gu";return new RegExp(`[^${e}]+`,t)}});function Tn(n){return Ac(n)}var Em=v(()=>{xm()});var On,Am,Tm=v(()=>{On={local:"local",ide:"ide",published:"published",inline:"inline"},Am=Object.values(On).map(n=>`'${n}'`).join(" | ")});var qr,Tc,Om=v(()=>{qr=` *, *::before, *::after { box-sizing: border-box; }
|
|
166
|
+
`});function Di(n){if(typeof n!="string")throw new TypeError("Expected a string");return n.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var wm=v(()=>{});var pE,hE,Ec,vm=v(()=>{pE=[["\xDF","ss"],["\u1E9E","Ss"],["\xE4","ae"],["\xC4","Ae"],["\xF6","oe"],["\xD6","Oe"],["\xFC","ue"],["\xDC","Ue"],["\xC0","A"],["\xC1","A"],["\xC2","A"],["\xC3","A"],["\xC4","Ae"],["\xC5","A"],["\xC6","AE"],["\xC7","C"],["\xC8","E"],["\xC9","E"],["\xCA","E"],["\xCB","E"],["\u018F","A"],["\xCC","I"],["\xCD","I"],["\xCE","I"],["\xCF","I"],["\xD0","D"],["\xD1","N"],["\xD2","O"],["\xD3","O"],["\xD4","O"],["\xD5","O"],["\xD6","Oe"],["\u014C","O"],["\u0150","O"],["\xD8","O"],["\u0152","OE"],["\xD9","U"],["\xDA","U"],["\xDB","U"],["\xDC","Ue"],["\u0170","U"],["\xDD","Y"],["\xDE","TH"],["\xDF","ss"],["\xE0","a"],["\xE1","a"],["\xE2","a"],["\xE3","a"],["\xE4","ae"],["\xE5","a"],["\xE6","ae"],["\xE7","c"],["\xE8","e"],["\xE9","e"],["\xEA","e"],["\xEB","e"],["\u0259","a"],["\xEC","i"],["\xED","i"],["\xEE","i"],["\xEF","i"],["\xF0","d"],["\xF1","n"],["\xF2","o"],["\xF3","o"],["\xF4","o"],["\xF5","o"],["\xF6","oe"],["\u014D","o"],["\u0151","o"],["\xF8","o"],["\u0153","oe"],["\xF9","u"],["\xFA","u"],["\xFB","u"],["\xFC","ue"],["\u0171","u"],["\xFD","y"],["\xFE","th"],["\xFF","y"],["\xE0","a"],["\xC0","A"],["\xE1","a"],["\xC1","A"],["\xE2","a"],["\xC2","A"],["\xE3","a"],["\xC3","A"],["\xE8","e"],["\xC8","E"],["\xE9","e"],["\xC9","E"],["\xEA","e"],["\xCA","E"],["\xEC","i"],["\xCC","I"],["\xED","i"],["\xCD","I"],["\xF2","o"],["\xD2","O"],["\xF3","o"],["\xD3","O"],["\xF4","o"],["\xD4","O"],["\xF5","o"],["\xD5","O"],["\xF9","u"],["\xD9","U"],["\xFA","u"],["\xDA","U"],["\xFD","y"],["\xDD","Y"],["\u0103","a"],["\u0102","A"],["\u0110","D"],["\u0111","d"],["\u0129","i"],["\u0128","I"],["\u0169","u"],["\u0168","U"],["\u01A1","o"],["\u01A0","O"],["\u01B0","u"],["\u01AF","U"],["\u1EA1","a"],["\u1EA0","A"],["\u1EA3","a"],["\u1EA2","A"],["\u1EA5","a"],["\u1EA4","A"],["\u1EA7","a"],["\u1EA6","A"],["\u1EA9","a"],["\u1EA8","A"],["\u1EAB","a"],["\u1EAA","A"],["\u1EAD","a"],["\u1EAC","A"],["\u1EAF","a"],["\u1EAE","A"],["\u1EB1","a"],["\u1EB0","A"],["\u1EB3","a"],["\u1EB2","A"],["\u1EB5","a"],["\u1EB4","A"],["\u1EB7","a"],["\u1EB6","A"],["\u1EB9","e"],["\u1EB8","E"],["\u1EBB","e"],["\u1EBA","E"],["\u1EBD","e"],["\u1EBC","E"],["\u1EBF","e"],["\u1EBE","E"],["\u1EC1","e"],["\u1EC0","E"],["\u1EC3","e"],["\u1EC2","E"],["\u1EC5","e"],["\u1EC4","E"],["\u1EC7","e"],["\u1EC6","E"],["\u1EC9","i"],["\u1EC8","I"],["\u1ECB","i"],["\u1ECA","I"],["\u1ECD","o"],["\u1ECC","O"],["\u1ECF","o"],["\u1ECE","O"],["\u1ED1","o"],["\u1ED0","O"],["\u1ED3","o"],["\u1ED2","O"],["\u1ED5","o"],["\u1ED4","O"],["\u1ED7","o"],["\u1ED6","O"],["\u1ED9","o"],["\u1ED8","O"],["\u1EDB","o"],["\u1EDA","O"],["\u1EDD","o"],["\u1EDC","O"],["\u1EDF","o"],["\u1EDE","O"],["\u1EE1","o"],["\u1EE0","O"],["\u1EE3","o"],["\u1EE2","O"],["\u1EE5","u"],["\u1EE4","U"],["\u1EE7","u"],["\u1EE6","U"],["\u1EE9","u"],["\u1EE8","U"],["\u1EEB","u"],["\u1EEA","U"],["\u1EED","u"],["\u1EEC","U"],["\u1EEF","u"],["\u1EEE","U"],["\u1EF1","u"],["\u1EF0","U"],["\u1EF3","y"],["\u1EF2","Y"],["\u1EF5","y"],["\u1EF4","Y"],["\u1EF7","y"],["\u1EF6","Y"],["\u1EF9","y"],["\u1EF8","Y"],["\u0621","e"],["\u0622","a"],["\u0623","a"],["\u0624","w"],["\u0625","a"],["\u0626","y"],["\u0627","a"],["\u0628","b"],["\u0629","t"],["\u062A","t"],["\u062B","th"],["\u062C","j"],["\u062D","h"],["\u062E","kh"],["\u062F","d"],["\u0630","dh"],["\u0631","r"],["\u0632","z"],["\u0633","s"],["\u0634","sh"],["\u0635","s"],["\u0636","d"],["\u0637","t"],["\u0638","z"],["\u0639","e"],["\u063A","gh"],["\u0640","_"],["\u0641","f"],["\u0642","q"],["\u0643","k"],["\u0644","l"],["\u0645","m"],["\u0646","n"],["\u0647","h"],["\u0648","w"],["\u0649","a"],["\u064A","y"],["\u064E\u200E","a"],["\u064F","u"],["\u0650\u200E","i"],["\u0660","0"],["\u0661","1"],["\u0662","2"],["\u0663","3"],["\u0664","4"],["\u0665","5"],["\u0666","6"],["\u0667","7"],["\u0668","8"],["\u0669","9"],["\u0686","ch"],["\u06A9","k"],["\u06AF","g"],["\u067E","p"],["\u0698","zh"],["\u06CC","y"],["\u06F0","0"],["\u06F1","1"],["\u06F2","2"],["\u06F3","3"],["\u06F4","4"],["\u06F5","5"],["\u06F6","6"],["\u06F7","7"],["\u06F8","8"],["\u06F9","9"],["\u067C","p"],["\u0681","z"],["\u0685","c"],["\u0689","d"],["\uFEAB","d"],["\uFEAD","r"],["\u0693","r"],["\uFEAF","z"],["\u0696","g"],["\u069A","x"],["\u06AB","g"],["\u06BC","n"],["\u06C0","e"],["\u06D0","e"],["\u06CD","ai"],["\u0679","t"],["\u0688","d"],["\u0691","r"],["\u06BA","n"],["\u06C1","h"],["\u06BE","h"],["\u06D2","e"],["\u0410","A"],["\u0430","a"],["\u0411","B"],["\u0431","b"],["\u0412","V"],["\u0432","v"],["\u0413","G"],["\u0433","g"],["\u0414","D"],["\u0434","d"],["\u044A\u0435","ye"],["\u042A\u0435","Ye"],["\u044A\u0415","yE"],["\u042A\u0415","YE"],["\u0415","E"],["\u0435","e"],["\u0401","Yo"],["\u0451","yo"],["\u0416","Zh"],["\u0436","zh"],["\u0417","Z"],["\u0437","z"],["\u0418","I"],["\u0438","i"],["\u044B\u0439","iy"],["\u042B\u0439","Iy"],["\u042B\u0419","IY"],["\u044B\u0419","iY"],["\u0419","Y"],["\u0439","y"],["\u041A","K"],["\u043A","k"],["\u041B","L"],["\u043B","l"],["\u041C","M"],["\u043C","m"],["\u041D","N"],["\u043D","n"],["\u041E","O"],["\u043E","o"],["\u041F","P"],["\u043F","p"],["\u0420","R"],["\u0440","r"],["\u0421","S"],["\u0441","s"],["\u0422","T"],["\u0442","t"],["\u0423","U"],["\u0443","u"],["\u0424","F"],["\u0444","f"],["\u0425","Kh"],["\u0445","kh"],["\u0426","Ts"],["\u0446","ts"],["\u0427","Ch"],["\u0447","ch"],["\u0428","Sh"],["\u0448","sh"],["\u0429","Sch"],["\u0449","sch"],["\u042A",""],["\u044A",""],["\u042B","Y"],["\u044B","y"],["\u042C",""],["\u044C",""],["\u042D","E"],["\u044D","e"],["\u042E","Yu"],["\u044E","yu"],["\u042F","Ya"],["\u044F","ya"],["\u0103","a"],["\u0102","A"],["\u0219","s"],["\u0218","S"],["\u021B","t"],["\u021A","T"],["\u0163","t"],["\u0162","T"],["\u015F","s"],["\u015E","S"],["\xE7","c"],["\xC7","C"],["\u011F","g"],["\u011E","G"],["\u0131","i"],["\u0130","I"],["\u0561","a"],["\u0531","A"],["\u0562","b"],["\u0532","B"],["\u0563","g"],["\u0533","G"],["\u0564","d"],["\u0534","D"],["\u0565","ye"],["\u0535","Ye"],["\u0566","z"],["\u0536","Z"],["\u0567","e"],["\u0537","E"],["\u0568","y"],["\u0538","Y"],["\u0569","t"],["\u0539","T"],["\u056A","zh"],["\u053A","Zh"],["\u056B","i"],["\u053B","I"],["\u056C","l"],["\u053C","L"],["\u056D","kh"],["\u053D","Kh"],["\u056E","ts"],["\u053E","Ts"],["\u056F","k"],["\u053F","K"],["\u0570","h"],["\u0540","H"],["\u0571","dz"],["\u0541","Dz"],["\u0572","gh"],["\u0542","Gh"],["\u0573","tch"],["\u0543","Tch"],["\u0574","m"],["\u0544","M"],["\u0575","y"],["\u0545","Y"],["\u0576","n"],["\u0546","N"],["\u0577","sh"],["\u0547","Sh"],["\u0578\u0582","u"],["\u0548\u0552","U"],["\u0548\u0582","U"],["\u0578","vo"],["\u0548","Vo"],["\u0579","ch"],["\u0549","Ch"],["\u057A","p"],["\u054A","P"],["\u057B","j"],["\u054B","J"],["\u057C","r"],["\u054C","R"],["\u057D","s"],["\u054D","S"],["\u057E","v"],["\u054E","V"],["\u057F","t"],["\u054F","T"],["\u0580","r"],["\u0550","R"],["\u0581","c"],["\u0551","C"],["\u0583","p"],["\u0553","P"],["\u0584","q"],["\u0554","Q"],["\u0585","o"],["\u0555","O"],["\u0586","f"],["\u0556","F"],["\u0587","yev"],["\u10D0","a"],["\u10D1","b"],["\u10D2","g"],["\u10D3","d"],["\u10D4","e"],["\u10D5","v"],["\u10D6","z"],["\u10D7","t"],["\u10D8","i"],["\u10D9","k"],["\u10DA","l"],["\u10DB","m"],["\u10DC","n"],["\u10DD","o"],["\u10DE","p"],["\u10DF","zh"],["\u10E0","r"],["\u10E1","s"],["\u10E2","t"],["\u10E3","u"],["\u10E4","ph"],["\u10E5","q"],["\u10E6","gh"],["\u10E7","k"],["\u10E8","sh"],["\u10E9","ch"],["\u10EA","ts"],["\u10EB","dz"],["\u10EC","ts"],["\u10ED","tch"],["\u10EE","kh"],["\u10EF","j"],["\u10F0","h"],["\u010D","c"],["\u010F","d"],["\u011B","e"],["\u0148","n"],["\u0159","r"],["\u0161","s"],["\u0165","t"],["\u016F","u"],["\u017E","z"],["\u010C","C"],["\u010E","D"],["\u011A","E"],["\u0147","N"],["\u0158","R"],["\u0160","S"],["\u0164","T"],["\u016E","U"],["\u017D","Z"],["\u0780","h"],["\u0781","sh"],["\u0782","n"],["\u0783","r"],["\u0784","b"],["\u0785","lh"],["\u0786","k"],["\u0787","a"],["\u0788","v"],["\u0789","m"],["\u078A","f"],["\u078B","dh"],["\u078C","th"],["\u078D","l"],["\u078E","g"],["\u078F","gn"],["\u0790","s"],["\u0791","d"],["\u0792","z"],["\u0793","t"],["\u0794","y"],["\u0795","p"],["\u0796","j"],["\u0797","ch"],["\u0798","tt"],["\u0799","hh"],["\u079A","kh"],["\u079B","th"],["\u079C","z"],["\u079D","sh"],["\u079E","s"],["\u079F","d"],["\u07A0","t"],["\u07A1","z"],["\u07A2","a"],["\u07A3","gh"],["\u07A4","q"],["\u07A5","w"],["\u07A6","a"],["\u07A7","aa"],["\u07A8","i"],["\u07A9","ee"],["\u07AA","u"],["\u07AB","oo"],["\u07AC","e"],["\u07AD","ey"],["\u07AE","o"],["\u07AF","oa"],["\u07B0",""],["\u03B1","a"],["\u03B2","v"],["\u03B3","g"],["\u03B4","d"],["\u03B5","e"],["\u03B6","z"],["\u03B7","i"],["\u03B8","th"],["\u03B9","i"],["\u03BA","k"],["\u03BB","l"],["\u03BC","m"],["\u03BD","n"],["\u03BE","ks"],["\u03BF","o"],["\u03C0","p"],["\u03C1","r"],["\u03C3","s"],["\u03C4","t"],["\u03C5","y"],["\u03C6","f"],["\u03C7","x"],["\u03C8","ps"],["\u03C9","o"],["\u03AC","a"],["\u03AD","e"],["\u03AF","i"],["\u03CC","o"],["\u03CD","y"],["\u03AE","i"],["\u03CE","o"],["\u03C2","s"],["\u03CA","i"],["\u03B0","y"],["\u03CB","y"],["\u0390","i"],["\u0391","A"],["\u0392","B"],["\u0393","G"],["\u0394","D"],["\u0395","E"],["\u0396","Z"],["\u0397","I"],["\u0398","TH"],["\u0399","I"],["\u039A","K"],["\u039B","L"],["\u039C","M"],["\u039D","N"],["\u039E","KS"],["\u039F","O"],["\u03A0","P"],["\u03A1","R"],["\u03A3","S"],["\u03A4","T"],["\u03A5","Y"],["\u03A6","F"],["\u03A7","X"],["\u03A8","PS"],["\u03A9","O"],["\u0386","A"],["\u0388","E"],["\u038A","I"],["\u038C","O"],["\u038E","Y"],["\u0389","I"],["\u038F","O"],["\u03AA","I"],["\u03AB","Y"],["\u0101","a"],["\u0113","e"],["\u0123","g"],["\u012B","i"],["\u0137","k"],["\u013C","l"],["\u0146","n"],["\u016B","u"],["\u0100","A"],["\u0112","E"],["\u0122","G"],["\u012A","I"],["\u0136","K"],["\u013B","L"],["\u0145","N"],["\u016A","U"],["\u010D","c"],["\u0161","s"],["\u017E","z"],["\u010C","C"],["\u0160","S"],["\u017D","Z"],["\u0105","a"],["\u010D","c"],["\u0119","e"],["\u0117","e"],["\u012F","i"],["\u0161","s"],["\u0173","u"],["\u016B","u"],["\u017E","z"],["\u0104","A"],["\u010C","C"],["\u0118","E"],["\u0116","E"],["\u012E","I"],["\u0160","S"],["\u0172","U"],["\u016A","U"],["\u040C","Kj"],["\u045C","kj"],["\u0409","Lj"],["\u0459","lj"],["\u040A","Nj"],["\u045A","nj"],["\u0422\u0441","Ts"],["\u0442\u0441","ts"],["\u0105","a"],["\u0107","c"],["\u0119","e"],["\u0142","l"],["\u0144","n"],["\u015B","s"],["\u017A","z"],["\u017C","z"],["\u0104","A"],["\u0106","C"],["\u0118","E"],["\u0141","L"],["\u0143","N"],["\u015A","S"],["\u0179","Z"],["\u017B","Z"],["\u0404","Ye"],["\u0406","I"],["\u0407","Yi"],["\u0490","G"],["\u0454","ye"],["\u0456","i"],["\u0457","yi"],["\u0491","g"],["\u0132","IJ"],["\u0133","ij"],["\xA2","c"],["\xA5","Y"],["\u07FF","b"],["\u09F3","t"],["\u0AF1","Bo"],["\u0E3F","B"],["\u20A0","CE"],["\u20A1","C"],["\u20A2","Cr"],["\u20A3","F"],["\u20A5","m"],["\u20A6","N"],["\u20A7","Pt"],["\u20A8","Rs"],["\u20A9","W"],["\u20AB","s"],["\u20AC","E"],["\u20AD","K"],["\u20AE","T"],["\u20AF","Dp"],["\u20B0","S"],["\u20B1","P"],["\u20B2","G"],["\u20B3","A"],["\u20B4","S"],["\u20B5","C"],["\u20B6","tt"],["\u20B7","S"],["\u20B8","T"],["\u20B9","R"],["\u20BA","L"],["\u20BD","P"],["\u20BF","B"],["\uFE69","$"],["\uFFE0","c"],["\uFFE5","Y"],["\uFFE6","W"],["\u{1D400}","A"],["\u{1D401}","B"],["\u{1D402}","C"],["\u{1D403}","D"],["\u{1D404}","E"],["\u{1D405}","F"],["\u{1D406}","G"],["\u{1D407}","H"],["\u{1D408}","I"],["\u{1D409}","J"],["\u{1D40A}","K"],["\u{1D40B}","L"],["\u{1D40C}","M"],["\u{1D40D}","N"],["\u{1D40E}","O"],["\u{1D40F}","P"],["\u{1D410}","Q"],["\u{1D411}","R"],["\u{1D412}","S"],["\u{1D413}","T"],["\u{1D414}","U"],["\u{1D415}","V"],["\u{1D416}","W"],["\u{1D417}","X"],["\u{1D418}","Y"],["\u{1D419}","Z"],["\u{1D41A}","a"],["\u{1D41B}","b"],["\u{1D41C}","c"],["\u{1D41D}","d"],["\u{1D41E}","e"],["\u{1D41F}","f"],["\u{1D420}","g"],["\u{1D421}","h"],["\u{1D422}","i"],["\u{1D423}","j"],["\u{1D424}","k"],["\u{1D425}","l"],["\u{1D426}","m"],["\u{1D427}","n"],["\u{1D428}","o"],["\u{1D429}","p"],["\u{1D42A}","q"],["\u{1D42B}","r"],["\u{1D42C}","s"],["\u{1D42D}","t"],["\u{1D42E}","u"],["\u{1D42F}","v"],["\u{1D430}","w"],["\u{1D431}","x"],["\u{1D432}","y"],["\u{1D433}","z"],["\u{1D434}","A"],["\u{1D435}","B"],["\u{1D436}","C"],["\u{1D437}","D"],["\u{1D438}","E"],["\u{1D439}","F"],["\u{1D43A}","G"],["\u{1D43B}","H"],["\u{1D43C}","I"],["\u{1D43D}","J"],["\u{1D43E}","K"],["\u{1D43F}","L"],["\u{1D440}","M"],["\u{1D441}","N"],["\u{1D442}","O"],["\u{1D443}","P"],["\u{1D444}","Q"],["\u{1D445}","R"],["\u{1D446}","S"],["\u{1D447}","T"],["\u{1D448}","U"],["\u{1D449}","V"],["\u{1D44A}","W"],["\u{1D44B}","X"],["\u{1D44C}","Y"],["\u{1D44D}","Z"],["\u{1D44E}","a"],["\u{1D44F}","b"],["\u{1D450}","c"],["\u{1D451}","d"],["\u{1D452}","e"],["\u{1D453}","f"],["\u{1D454}","g"],["\u{1D456}","i"],["\u{1D457}","j"],["\u{1D458}","k"],["\u{1D459}","l"],["\u{1D45A}","m"],["\u{1D45B}","n"],["\u{1D45C}","o"],["\u{1D45D}","p"],["\u{1D45E}","q"],["\u{1D45F}","r"],["\u{1D460}","s"],["\u{1D461}","t"],["\u{1D462}","u"],["\u{1D463}","v"],["\u{1D464}","w"],["\u{1D465}","x"],["\u{1D466}","y"],["\u{1D467}","z"],["\u{1D468}","A"],["\u{1D469}","B"],["\u{1D46A}","C"],["\u{1D46B}","D"],["\u{1D46C}","E"],["\u{1D46D}","F"],["\u{1D46E}","G"],["\u{1D46F}","H"],["\u{1D470}","I"],["\u{1D471}","J"],["\u{1D472}","K"],["\u{1D473}","L"],["\u{1D474}","M"],["\u{1D475}","N"],["\u{1D476}","O"],["\u{1D477}","P"],["\u{1D478}","Q"],["\u{1D479}","R"],["\u{1D47A}","S"],["\u{1D47B}","T"],["\u{1D47C}","U"],["\u{1D47D}","V"],["\u{1D47E}","W"],["\u{1D47F}","X"],["\u{1D480}","Y"],["\u{1D481}","Z"],["\u{1D482}","a"],["\u{1D483}","b"],["\u{1D484}","c"],["\u{1D485}","d"],["\u{1D486}","e"],["\u{1D487}","f"],["\u{1D488}","g"],["\u{1D489}","h"],["\u{1D48A}","i"],["\u{1D48B}","j"],["\u{1D48C}","k"],["\u{1D48D}","l"],["\u{1D48E}","m"],["\u{1D48F}","n"],["\u{1D490}","o"],["\u{1D491}","p"],["\u{1D492}","q"],["\u{1D493}","r"],["\u{1D494}","s"],["\u{1D495}","t"],["\u{1D496}","u"],["\u{1D497}","v"],["\u{1D498}","w"],["\u{1D499}","x"],["\u{1D49A}","y"],["\u{1D49B}","z"],["\u{1D49C}","A"],["\u{1D49E}","C"],["\u{1D49F}","D"],["\u{1D4A2}","g"],["\u{1D4A5}","J"],["\u{1D4A6}","K"],["\u{1D4A9}","N"],["\u{1D4AA}","O"],["\u{1D4AB}","P"],["\u{1D4AC}","Q"],["\u{1D4AE}","S"],["\u{1D4AF}","T"],["\u{1D4B0}","U"],["\u{1D4B1}","V"],["\u{1D4B2}","W"],["\u{1D4B3}","X"],["\u{1D4B4}","Y"],["\u{1D4B5}","Z"],["\u{1D4B6}","a"],["\u{1D4B7}","b"],["\u{1D4B8}","c"],["\u{1D4B9}","d"],["\u{1D4BB}","f"],["\u{1D4BD}","h"],["\u{1D4BE}","i"],["\u{1D4BF}","j"],["\u{1D4C0}","k"],["\u{1D4C1}","l"],["\u{1D4C2}","m"],["\u{1D4C3}","n"],["\u{1D4C5}","p"],["\u{1D4C6}","q"],["\u{1D4C7}","r"],["\u{1D4C8}","s"],["\u{1D4C9}","t"],["\u{1D4CA}","u"],["\u{1D4CB}","v"],["\u{1D4CC}","w"],["\u{1D4CD}","x"],["\u{1D4CE}","y"],["\u{1D4CF}","z"],["\u{1D4D0}","A"],["\u{1D4D1}","B"],["\u{1D4D2}","C"],["\u{1D4D3}","D"],["\u{1D4D4}","E"],["\u{1D4D5}","F"],["\u{1D4D6}","G"],["\u{1D4D7}","H"],["\u{1D4D8}","I"],["\u{1D4D9}","J"],["\u{1D4DA}","K"],["\u{1D4DB}","L"],["\u{1D4DC}","M"],["\u{1D4DD}","N"],["\u{1D4DE}","O"],["\u{1D4DF}","P"],["\u{1D4E0}","Q"],["\u{1D4E1}","R"],["\u{1D4E2}","S"],["\u{1D4E3}","T"],["\u{1D4E4}","U"],["\u{1D4E5}","V"],["\u{1D4E6}","W"],["\u{1D4E7}","X"],["\u{1D4E8}","Y"],["\u{1D4E9}","Z"],["\u{1D4EA}","a"],["\u{1D4EB}","b"],["\u{1D4EC}","c"],["\u{1D4ED}","d"],["\u{1D4EE}","e"],["\u{1D4EF}","f"],["\u{1D4F0}","g"],["\u{1D4F1}","h"],["\u{1D4F2}","i"],["\u{1D4F3}","j"],["\u{1D4F4}","k"],["\u{1D4F5}","l"],["\u{1D4F6}","m"],["\u{1D4F7}","n"],["\u{1D4F8}","o"],["\u{1D4F9}","p"],["\u{1D4FA}","q"],["\u{1D4FB}","r"],["\u{1D4FC}","s"],["\u{1D4FD}","t"],["\u{1D4FE}","u"],["\u{1D4FF}","v"],["\u{1D500}","w"],["\u{1D501}","x"],["\u{1D502}","y"],["\u{1D503}","z"],["\u{1D504}","A"],["\u{1D505}","B"],["\u{1D507}","D"],["\u{1D508}","E"],["\u{1D509}","F"],["\u{1D50A}","G"],["\u{1D50D}","J"],["\u{1D50E}","K"],["\u{1D50F}","L"],["\u{1D510}","M"],["\u{1D511}","N"],["\u{1D512}","O"],["\u{1D513}","P"],["\u{1D514}","Q"],["\u{1D516}","S"],["\u{1D517}","T"],["\u{1D518}","U"],["\u{1D519}","V"],["\u{1D51A}","W"],["\u{1D51B}","X"],["\u{1D51C}","Y"],["\u{1D51E}","a"],["\u{1D51F}","b"],["\u{1D520}","c"],["\u{1D521}","d"],["\u{1D522}","e"],["\u{1D523}","f"],["\u{1D524}","g"],["\u{1D525}","h"],["\u{1D526}","i"],["\u{1D527}","j"],["\u{1D528}","k"],["\u{1D529}","l"],["\u{1D52A}","m"],["\u{1D52B}","n"],["\u{1D52C}","o"],["\u{1D52D}","p"],["\u{1D52E}","q"],["\u{1D52F}","r"],["\u{1D530}","s"],["\u{1D531}","t"],["\u{1D532}","u"],["\u{1D533}","v"],["\u{1D534}","w"],["\u{1D535}","x"],["\u{1D536}","y"],["\u{1D537}","z"],["\u{1D538}","A"],["\u{1D539}","B"],["\u{1D53B}","D"],["\u{1D53C}","E"],["\u{1D53D}","F"],["\u{1D53E}","G"],["\u{1D540}","I"],["\u{1D541}","J"],["\u{1D542}","K"],["\u{1D543}","L"],["\u{1D544}","M"],["\u{1D546}","O"],["\u{1D54A}","S"],["\u{1D54B}","T"],["\u{1D54C}","U"],["\u{1D54D}","V"],["\u{1D54E}","W"],["\u{1D54F}","X"],["\u{1D550}","Y"],["\u{1D552}","a"],["\u{1D553}","b"],["\u{1D554}","c"],["\u{1D555}","d"],["\u{1D556}","e"],["\u{1D557}","f"],["\u{1D558}","g"],["\u{1D559}","h"],["\u{1D55A}","i"],["\u{1D55B}","j"],["\u{1D55C}","k"],["\u{1D55D}","l"],["\u{1D55E}","m"],["\u{1D55F}","n"],["\u{1D560}","o"],["\u{1D561}","p"],["\u{1D562}","q"],["\u{1D563}","r"],["\u{1D564}","s"],["\u{1D565}","t"],["\u{1D566}","u"],["\u{1D567}","v"],["\u{1D568}","w"],["\u{1D569}","x"],["\u{1D56A}","y"],["\u{1D56B}","z"],["\u{1D56C}","A"],["\u{1D56D}","B"],["\u{1D56E}","C"],["\u{1D56F}","D"],["\u{1D570}","E"],["\u{1D571}","F"],["\u{1D572}","G"],["\u{1D573}","H"],["\u{1D574}","I"],["\u{1D575}","J"],["\u{1D576}","K"],["\u{1D577}","L"],["\u{1D578}","M"],["\u{1D579}","N"],["\u{1D57A}","O"],["\u{1D57B}","P"],["\u{1D57C}","Q"],["\u{1D57D}","R"],["\u{1D57E}","S"],["\u{1D57F}","T"],["\u{1D580}","U"],["\u{1D581}","V"],["\u{1D582}","W"],["\u{1D583}","X"],["\u{1D584}","Y"],["\u{1D585}","Z"],["\u{1D586}","a"],["\u{1D587}","b"],["\u{1D588}","c"],["\u{1D589}","d"],["\u{1D58A}","e"],["\u{1D58B}","f"],["\u{1D58C}","g"],["\u{1D58D}","h"],["\u{1D58E}","i"],["\u{1D58F}","j"],["\u{1D590}","k"],["\u{1D591}","l"],["\u{1D592}","m"],["\u{1D593}","n"],["\u{1D594}","o"],["\u{1D595}","p"],["\u{1D596}","q"],["\u{1D597}","r"],["\u{1D598}","s"],["\u{1D599}","t"],["\u{1D59A}","u"],["\u{1D59B}","v"],["\u{1D59C}","w"],["\u{1D59D}","x"],["\u{1D59E}","y"],["\u{1D59F}","z"],["\u{1D5A0}","A"],["\u{1D5A1}","B"],["\u{1D5A2}","C"],["\u{1D5A3}","D"],["\u{1D5A4}","E"],["\u{1D5A5}","F"],["\u{1D5A6}","G"],["\u{1D5A7}","H"],["\u{1D5A8}","I"],["\u{1D5A9}","J"],["\u{1D5AA}","K"],["\u{1D5AB}","L"],["\u{1D5AC}","M"],["\u{1D5AD}","N"],["\u{1D5AE}","O"],["\u{1D5AF}","P"],["\u{1D5B0}","Q"],["\u{1D5B1}","R"],["\u{1D5B2}","S"],["\u{1D5B3}","T"],["\u{1D5B4}","U"],["\u{1D5B5}","V"],["\u{1D5B6}","W"],["\u{1D5B7}","X"],["\u{1D5B8}","Y"],["\u{1D5B9}","Z"],["\u{1D5BA}","a"],["\u{1D5BB}","b"],["\u{1D5BC}","c"],["\u{1D5BD}","d"],["\u{1D5BE}","e"],["\u{1D5BF}","f"],["\u{1D5C0}","g"],["\u{1D5C1}","h"],["\u{1D5C2}","i"],["\u{1D5C3}","j"],["\u{1D5C4}","k"],["\u{1D5C5}","l"],["\u{1D5C6}","m"],["\u{1D5C7}","n"],["\u{1D5C8}","o"],["\u{1D5C9}","p"],["\u{1D5CA}","q"],["\u{1D5CB}","r"],["\u{1D5CC}","s"],["\u{1D5CD}","t"],["\u{1D5CE}","u"],["\u{1D5CF}","v"],["\u{1D5D0}","w"],["\u{1D5D1}","x"],["\u{1D5D2}","y"],["\u{1D5D3}","z"],["\u{1D5D4}","A"],["\u{1D5D5}","B"],["\u{1D5D6}","C"],["\u{1D5D7}","D"],["\u{1D5D8}","E"],["\u{1D5D9}","F"],["\u{1D5DA}","G"],["\u{1D5DB}","H"],["\u{1D5DC}","I"],["\u{1D5DD}","J"],["\u{1D5DE}","K"],["\u{1D5DF}","L"],["\u{1D5E0}","M"],["\u{1D5E1}","N"],["\u{1D5E2}","O"],["\u{1D5E3}","P"],["\u{1D5E4}","Q"],["\u{1D5E5}","R"],["\u{1D5E6}","S"],["\u{1D5E7}","T"],["\u{1D5E8}","U"],["\u{1D5E9}","V"],["\u{1D5EA}","W"],["\u{1D5EB}","X"],["\u{1D5EC}","Y"],["\u{1D5ED}","Z"],["\u{1D5EE}","a"],["\u{1D5EF}","b"],["\u{1D5F0}","c"],["\u{1D5F1}","d"],["\u{1D5F2}","e"],["\u{1D5F3}","f"],["\u{1D5F4}","g"],["\u{1D5F5}","h"],["\u{1D5F6}","i"],["\u{1D5F7}","j"],["\u{1D5F8}","k"],["\u{1D5F9}","l"],["\u{1D5FA}","m"],["\u{1D5FB}","n"],["\u{1D5FC}","o"],["\u{1D5FD}","p"],["\u{1D5FE}","q"],["\u{1D5FF}","r"],["\u{1D600}","s"],["\u{1D601}","t"],["\u{1D602}","u"],["\u{1D603}","v"],["\u{1D604}","w"],["\u{1D605}","x"],["\u{1D606}","y"],["\u{1D607}","z"],["\u{1D608}","A"],["\u{1D609}","B"],["\u{1D60A}","C"],["\u{1D60B}","D"],["\u{1D60C}","E"],["\u{1D60D}","F"],["\u{1D60E}","G"],["\u{1D60F}","H"],["\u{1D610}","I"],["\u{1D611}","J"],["\u{1D612}","K"],["\u{1D613}","L"],["\u{1D614}","M"],["\u{1D615}","N"],["\u{1D616}","O"],["\u{1D617}","P"],["\u{1D618}","Q"],["\u{1D619}","R"],["\u{1D61A}","S"],["\u{1D61B}","T"],["\u{1D61C}","U"],["\u{1D61D}","V"],["\u{1D61E}","W"],["\u{1D61F}","X"],["\u{1D620}","Y"],["\u{1D621}","Z"],["\u{1D622}","a"],["\u{1D623}","b"],["\u{1D624}","c"],["\u{1D625}","d"],["\u{1D626}","e"],["\u{1D627}","f"],["\u{1D628}","g"],["\u{1D629}","h"],["\u{1D62A}","i"],["\u{1D62B}","j"],["\u{1D62C}","k"],["\u{1D62D}","l"],["\u{1D62E}","m"],["\u{1D62F}","n"],["\u{1D630}","o"],["\u{1D631}","p"],["\u{1D632}","q"],["\u{1D633}","r"],["\u{1D634}","s"],["\u{1D635}","t"],["\u{1D636}","u"],["\u{1D637}","v"],["\u{1D638}","w"],["\u{1D639}","x"],["\u{1D63A}","y"],["\u{1D63B}","z"],["\u{1D63C}","A"],["\u{1D63D}","B"],["\u{1D63E}","C"],["\u{1D63F}","D"],["\u{1D640}","E"],["\u{1D641}","F"],["\u{1D642}","G"],["\u{1D643}","H"],["\u{1D644}","I"],["\u{1D645}","J"],["\u{1D646}","K"],["\u{1D647}","L"],["\u{1D648}","M"],["\u{1D649}","N"],["\u{1D64A}","O"],["\u{1D64B}","P"],["\u{1D64C}","Q"],["\u{1D64D}","R"],["\u{1D64E}","S"],["\u{1D64F}","T"],["\u{1D650}","U"],["\u{1D651}","V"],["\u{1D652}","W"],["\u{1D653}","X"],["\u{1D654}","Y"],["\u{1D655}","Z"],["\u{1D656}","a"],["\u{1D657}","b"],["\u{1D658}","c"],["\u{1D659}","d"],["\u{1D65A}","e"],["\u{1D65B}","f"],["\u{1D65C}","g"],["\u{1D65D}","h"],["\u{1D65E}","i"],["\u{1D65F}","j"],["\u{1D660}","k"],["\u{1D661}","l"],["\u{1D662}","m"],["\u{1D663}","n"],["\u{1D664}","o"],["\u{1D665}","p"],["\u{1D666}","q"],["\u{1D667}","r"],["\u{1D668}","s"],["\u{1D669}","t"],["\u{1D66A}","u"],["\u{1D66B}","v"],["\u{1D66C}","w"],["\u{1D66D}","x"],["\u{1D66E}","y"],["\u{1D66F}","z"],["\u{1D670}","A"],["\u{1D671}","B"],["\u{1D672}","C"],["\u{1D673}","D"],["\u{1D674}","E"],["\u{1D675}","F"],["\u{1D676}","G"],["\u{1D677}","H"],["\u{1D678}","I"],["\u{1D679}","J"],["\u{1D67A}","K"],["\u{1D67B}","L"],["\u{1D67C}","M"],["\u{1D67D}","N"],["\u{1D67E}","O"],["\u{1D67F}","P"],["\u{1D680}","Q"],["\u{1D681}","R"],["\u{1D682}","S"],["\u{1D683}","T"],["\u{1D684}","U"],["\u{1D685}","V"],["\u{1D686}","W"],["\u{1D687}","X"],["\u{1D688}","Y"],["\u{1D689}","Z"],["\u{1D68A}","a"],["\u{1D68B}","b"],["\u{1D68C}","c"],["\u{1D68D}","d"],["\u{1D68E}","e"],["\u{1D68F}","f"],["\u{1D690}","g"],["\u{1D691}","h"],["\u{1D692}","i"],["\u{1D693}","j"],["\u{1D694}","k"],["\u{1D695}","l"],["\u{1D696}","m"],["\u{1D697}","n"],["\u{1D698}","o"],["\u{1D699}","p"],["\u{1D69A}","q"],["\u{1D69B}","r"],["\u{1D69C}","s"],["\u{1D69D}","t"],["\u{1D69E}","u"],["\u{1D69F}","v"],["\u{1D6A0}","w"],["\u{1D6A1}","x"],["\u{1D6A2}","y"],["\u{1D6A3}","z"],["\u{1D6A4}","l"],["\u{1D6A5}","j"],["\u{1D6E2}","A"],["\u{1D6E3}","B"],["\u{1D6E4}","G"],["\u{1D6E5}","D"],["\u{1D6E6}","E"],["\u{1D6E7}","Z"],["\u{1D6E8}","I"],["\u{1D6E9}","TH"],["\u{1D6EA}","I"],["\u{1D6EB}","K"],["\u{1D6EC}","L"],["\u{1D6ED}","M"],["\u{1D6EE}","N"],["\u{1D6EF}","KS"],["\u{1D6F0}","O"],["\u{1D6F1}","P"],["\u{1D6F2}","R"],["\u{1D6F3}","TH"],["\u{1D6F4}","S"],["\u{1D6F5}","T"],["\u{1D6F6}","Y"],["\u{1D6F7}","F"],["\u{1D6F8}","x"],["\u{1D6F9}","PS"],["\u{1D6FA}","O"],["\u{1D6FB}","D"],["\u{1D6FC}","a"],["\u{1D6FD}","b"],["\u{1D6FE}","g"],["\u{1D6FF}","d"],["\u{1D700}","e"],["\u{1D701}","z"],["\u{1D702}","i"],["\u{1D703}","th"],["\u{1D704}","i"],["\u{1D705}","k"],["\u{1D706}","l"],["\u{1D707}","m"],["\u{1D708}","n"],["\u{1D709}","ks"],["\u{1D70A}","o"],["\u{1D70B}","p"],["\u{1D70C}","r"],["\u{1D70D}","s"],["\u{1D70E}","s"],["\u{1D70F}","t"],["\u{1D710}","y"],["\u{1D711}","f"],["\u{1D712}","x"],["\u{1D713}","ps"],["\u{1D714}","o"],["\u{1D715}","d"],["\u{1D716}","E"],["\u{1D717}","TH"],["\u{1D718}","K"],["\u{1D719}","f"],["\u{1D71A}","r"],["\u{1D71B}","p"],["\u{1D71C}","A"],["\u{1D71D}","V"],["\u{1D71E}","G"],["\u{1D71F}","D"],["\u{1D720}","E"],["\u{1D721}","Z"],["\u{1D722}","I"],["\u{1D723}","TH"],["\u{1D724}","I"],["\u{1D725}","K"],["\u{1D726}","L"],["\u{1D727}","M"],["\u{1D728}","N"],["\u{1D729}","KS"],["\u{1D72A}","O"],["\u{1D72B}","P"],["\u{1D72C}","S"],["\u{1D72D}","TH"],["\u{1D72E}","S"],["\u{1D72F}","T"],["\u{1D730}","Y"],["\u{1D731}","F"],["\u{1D732}","X"],["\u{1D733}","PS"],["\u{1D734}","O"],["\u{1D735}","D"],["\u{1D736}","a"],["\u{1D737}","v"],["\u{1D738}","g"],["\u{1D739}","d"],["\u{1D73A}","e"],["\u{1D73B}","z"],["\u{1D73C}","i"],["\u{1D73D}","th"],["\u{1D73E}","i"],["\u{1D73F}","k"],["\u{1D740}","l"],["\u{1D741}","m"],["\u{1D742}","n"],["\u{1D743}","ks"],["\u{1D744}","o"],["\u{1D745}","p"],["\u{1D746}","r"],["\u{1D747}","s"],["\u{1D748}","s"],["\u{1D749}","t"],["\u{1D74A}","y"],["\u{1D74B}","f"],["\u{1D74C}","x"],["\u{1D74D}","ps"],["\u{1D74E}","o"],["\u{1D74F}","a"],["\u{1D750}","e"],["\u{1D751}","i"],["\u{1D752}","k"],["\u{1D753}","f"],["\u{1D754}","r"],["\u{1D755}","p"],["\u{1D756}","A"],["\u{1D757}","B"],["\u{1D758}","G"],["\u{1D759}","D"],["\u{1D75A}","E"],["\u{1D75B}","Z"],["\u{1D75C}","I"],["\u{1D75D}","TH"],["\u{1D75E}","I"],["\u{1D75F}","K"],["\u{1D760}","L"],["\u{1D761}","M"],["\u{1D762}","N"],["\u{1D763}","KS"],["\u{1D764}","O"],["\u{1D765}","P"],["\u{1D766}","R"],["\u{1D767}","TH"],["\u{1D768}","S"],["\u{1D769}","T"],["\u{1D76A}","Y"],["\u{1D76B}","F"],["\u{1D76C}","X"],["\u{1D76D}","PS"],["\u{1D76E}","O"],["\u{1D76F}","D"],["\u{1D770}","a"],["\u{1D771}","v"],["\u{1D772}","g"],["\u{1D773}","d"],["\u{1D774}","e"],["\u{1D775}","z"],["\u{1D776}","i"],["\u{1D777}","th"],["\u{1D778}","i"],["\u{1D779}","k"],["\u{1D77A}","l"],["\u{1D77B}","m"],["\u{1D77C}","n"],["\u{1D77D}","ks"],["\u{1D77E}","o"],["\u{1D77F}","p"],["\u{1D780}","r"],["\u{1D781}","s"],["\u{1D782}","s"],["\u{1D783}","t"],["\u{1D784}","y"],["\u{1D785}","f"],["\u{1D786}","x"],["\u{1D787}","ps"],["\u{1D788}","o"],["\u{1D789}","a"],["\u{1D78A}","e"],["\u{1D78B}","i"],["\u{1D78C}","k"],["\u{1D78D}","f"],["\u{1D78E}","r"],["\u{1D78F}","p"],["\u{1D790}","A"],["\u{1D791}","V"],["\u{1D792}","G"],["\u{1D793}","D"],["\u{1D794}","E"],["\u{1D795}","Z"],["\u{1D796}","I"],["\u{1D797}","TH"],["\u{1D798}","I"],["\u{1D799}","K"],["\u{1D79A}","L"],["\u{1D79B}","M"],["\u{1D79C}","N"],["\u{1D79D}","KS"],["\u{1D79E}","O"],["\u{1D79F}","P"],["\u{1D7A0}","S"],["\u{1D7A1}","TH"],["\u{1D7A2}","S"],["\u{1D7A3}","T"],["\u{1D7A4}","Y"],["\u{1D7A5}","F"],["\u{1D7A6}","X"],["\u{1D7A7}","PS"],["\u{1D7A8}","O"],["\u{1D7A9}","D"],["\u{1D7AA}","av"],["\u{1D7AB}","g"],["\u{1D7AC}","d"],["\u{1D7AD}","e"],["\u{1D7AE}","z"],["\u{1D7AF}","i"],["\u{1D7B0}","i"],["\u{1D7B1}","th"],["\u{1D7B2}","i"],["\u{1D7B3}","k"],["\u{1D7B4}","l"],["\u{1D7B5}","m"],["\u{1D7B6}","n"],["\u{1D7B7}","ks"],["\u{1D7B8}","o"],["\u{1D7B9}","p"],["\u{1D7BA}","r"],["\u{1D7BB}","s"],["\u{1D7BC}","s"],["\u{1D7BD}","t"],["\u{1D7BE}","y"],["\u{1D7BF}","f"],["\u{1D7C0}","x"],["\u{1D7C1}","ps"],["\u{1D7C2}","o"],["\u{1D7C3}","a"],["\u{1D7C4}","e"],["\u{1D7C5}","i"],["\u{1D7C6}","k"],["\u{1D7C7}","f"],["\u{1D7C8}","r"],["\u{1D7C9}","p"],["\u{1D7CA}","F"],["\u{1D7CB}","f"],["\u249C","(a)"],["\u249D","(b)"],["\u249E","(c)"],["\u249F","(d)"],["\u24A0","(e)"],["\u24A1","(f)"],["\u24A2","(g)"],["\u24A3","(h)"],["\u24A4","(i)"],["\u24A5","(j)"],["\u24A6","(k)"],["\u24A7","(l)"],["\u24A8","(m)"],["\u24A9","(n)"],["\u24AA","(o)"],["\u24AB","(p)"],["\u24AC","(q)"],["\u24AD","(r)"],["\u24AE","(s)"],["\u24AF","(t)"],["\u24B0","(u)"],["\u24B1","(v)"],["\u24B2","(w)"],["\u24B3","(x)"],["\u24B4","(y)"],["\u24B5","(z)"],["\u24B6","(A)"],["\u24B7","(B)"],["\u24B8","(C)"],["\u24B9","(D)"],["\u24BA","(E)"],["\u24BB","(F)"],["\u24BC","(G)"],["\u24BD","(H)"],["\u24BE","(I)"],["\u24BF","(J)"],["\u24C0","(K)"],["\u24C1","(L)"],["\u24C3","(N)"],["\u24C4","(O)"],["\u24C5","(P)"],["\u24C6","(Q)"],["\u24C7","(R)"],["\u24C8","(S)"],["\u24C9","(T)"],["\u24CA","(U)"],["\u24CB","(V)"],["\u24CC","(W)"],["\u24CD","(X)"],["\u24CE","(Y)"],["\u24CF","(Z)"],["\u24D0","(a)"],["\u24D1","(b)"],["\u24D2","(c)"],["\u24D3","(d)"],["\u24D4","(e)"],["\u24D5","(f)"],["\u24D6","(g)"],["\u24D7","(h)"],["\u24D8","(i)"],["\u24D9","(j)"],["\u24DA","(k)"],["\u24DB","(l)"],["\u24DC","(m)"],["\u24DD","(n)"],["\u24DE","(o)"],["\u24DF","(p)"],["\u24E0","(q)"],["\u24E1","(r)"],["\u24E2","(s)"],["\u24E3","(t)"],["\u24E4","(u)"],["\u24E5","(v)"],["\u24E6","(w)"],["\u24E7","(x)"],["\u24E8","(y)"],["\u24E9","(z)"],["\u010A","C"],["\u010B","c"],["\u0120","G"],["\u0121","g"],["\u0126","H"],["\u0127","h"],["\u017B","Z"],["\u017C","z"],["\u{1D7CE}","0"],["\u{1D7CF}","1"],["\u{1D7D0}","2"],["\u{1D7D1}","3"],["\u{1D7D2}","4"],["\u{1D7D3}","5"],["\u{1D7D4}","6"],["\u{1D7D5}","7"],["\u{1D7D6}","8"],["\u{1D7D7}","9"],["\u{1D7D8}","0"],["\u{1D7D9}","1"],["\u{1D7DA}","2"],["\u{1D7DB}","3"],["\u{1D7DC}","4"],["\u{1D7DD}","5"],["\u{1D7DE}","6"],["\u{1D7DF}","7"],["\u{1D7E0}","8"],["\u{1D7E1}","9"],["\u{1D7E2}","0"],["\u{1D7E3}","1"],["\u{1D7E4}","2"],["\u{1D7E5}","3"],["\u{1D7E6}","4"],["\u{1D7E7}","5"],["\u{1D7E8}","6"],["\u{1D7E9}","7"],["\u{1D7EA}","8"],["\u{1D7EB}","9"],["\u{1D7EC}","0"],["\u{1D7ED}","1"],["\u{1D7EE}","2"],["\u{1D7EF}","3"],["\u{1D7F0}","4"],["\u{1D7F1}","5"],["\u{1D7F2}","6"],["\u{1D7F3}","7"],["\u{1D7F4}","8"],["\u{1D7F5}","9"],["\u{1D7F6}","0"],["\u{1D7F7}","1"],["\u{1D7F8}","2"],["\u{1D7F9}","3"],["\u{1D7FA}","4"],["\u{1D7FB}","5"],["\u{1D7FC}","6"],["\u{1D7FD}","7"],["\u{1D7FE}","8"],["\u{1D7FF}","9"],["\u2460","1"],["\u2461","2"],["\u2462","3"],["\u2463","4"],["\u2464","5"],["\u2465","6"],["\u2466","7"],["\u2467","8"],["\u2468","9"],["\u2469","10"],["\u246A","11"],["\u246B","12"],["\u246C","13"],["\u246D","14"],["\u246E","15"],["\u246F","16"],["\u2470","17"],["\u2471","18"],["\u2472","19"],["\u2473","20"],["\u2474","1"],["\u2475","2"],["\u2476","3"],["\u2477","4"],["\u2478","5"],["\u2479","6"],["\u247A","7"],["\u247B","8"],["\u247C","9"],["\u247D","10"],["\u247E","11"],["\u247F","12"],["\u2480","13"],["\u2481","14"],["\u2482","15"],["\u2483","16"],["\u2484","17"],["\u2485","18"],["\u2486","19"],["\u2487","20"],["\u2488","1."],["\u2489","2."],["\u248A","3."],["\u248B","4."],["\u248C","5."],["\u248D","6."],["\u248E","7."],["\u248F","8."],["\u2490","9."],["\u2491","10."],["\u2492","11."],["\u2493","12."],["\u2494","13."],["\u2495","14."],["\u2496","15."],["\u2497","16."],["\u2498","17."],["\u2499","18."],["\u249A","19."],["\u249B","20."],["\u24EA","0"],["\u24EB","11"],["\u24EC","12"],["\u24ED","13"],["\u24EE","14"],["\u24EF","15"],["\u24F0","16"],["\u24F1","17"],["\u24F2","18"],["\u24F3","19"],["\u24F4","20"],["\u24F5","1"],["\u24F6","2"],["\u24F7","3"],["\u24F8","4"],["\u24F9","5"],["\u24FA","6"],["\u24FB","7"],["\u24FC","8"],["\u24FD","9"],["\u24FE","10"],["\u24FF","0"],["\u{1F670}","&"],["\u{1F671}","&"],["\u{1F672}","&"],["\u{1F673}","&"],["\u{1F674}","&"],["\u{1F675}","&"],["\u{1F676}",'"'],["\u{1F677}",'"'],["\u{1F678}",'"'],["\u203D","?!"],["\u{1F679}","?!"],["\u{1F67A}","?!"],["\u{1F67B}","?!"],["\u{1F67C}","/"],["\u{1F67D}","\\"],["\u{1F707}","AR"],["\u{1F708}","V"],["\u{1F709}","V"],["\u{1F706}","VR"],["\u{1F705}","VF"],["\u{1F729}","2"],["\u{1F72A}","5"],["\u{1F761}","f"],["\u{1F762}","W"],["\u{1F763}","U"],["\u{1F767}","V"],["\u{1F768}","T"],["\u{1F76A}","V"],["\u{1F76B}","MB"],["\u{1F76C}","VB"],["\u{1F772}","3B"],["\u{1F773}","3B"],["\u{1F4AF}","100"],["\u{1F519}","BACK"],["\u{1F51A}","END"],["\u{1F51B}","ON!"],["\u{1F51C}","SOON"],["\u{1F51D}","TOP"],["\u{1F51E}","18"],["\u{1F524}","abc"],["\u{1F520}","ABCD"],["\u{1F521}","abcd"],["\u{1F522}","1234"],["\u{1F523}","T&@%"],["#\uFE0F\u20E3","#"],["*\uFE0F\u20E3","*"],["0\uFE0F\u20E3","0"],["1\uFE0F\u20E3","1"],["2\uFE0F\u20E3","2"],["3\uFE0F\u20E3","3"],["4\uFE0F\u20E3","4"],["5\uFE0F\u20E3","5"],["6\uFE0F\u20E3","6"],["7\uFE0F\u20E3","7"],["8\uFE0F\u20E3","8"],["9\uFE0F\u20E3","9"],["\u{1F51F}","10"],["\u{1F170}\uFE0F","A"],["\u{1F171}\uFE0F","B"],["\u{1F18E}","AB"],["\u{1F191}","CL"],["\u{1F17E}\uFE0F","O"],["\u{1F17F}","P"],["\u{1F198}","SOS"],["\u{1F172}","C"],["\u{1F173}","D"],["\u{1F174}","E"],["\u{1F175}","F"],["\u{1F176}","G"],["\u{1F177}","H"],["\u{1F178}","I"],["\u{1F179}","J"],["\u{1F17A}","K"],["\u{1F17B}","L"],["\u{1F17C}","M"],["\u{1F17D}","N"],["\u{1F180}","Q"],["\u{1F181}","R"],["\u{1F182}","S"],["\u{1F183}","T"],["\u{1F184}","U"],["\u{1F185}","V"],["\u{1F186}","W"],["\u{1F187}","X"],["\u{1F188}","Y"],["\u{1F189}","Z"],["\u2212","-"],["\u2053","-"]],hE=new Map(pE),Ec=hE});var Sm,ji,Ac,km=v(()=>{Sm=[["\xE6","ae"],["\xC6","Ae"],["\xF8","oe"],["\xD8","Oe"],["\xE5","aa"],["\xC5","Aa"]],ji={sv:[["\xE4","a"],["\xC4","A"],["\xF6","o"],["\xD6","O"],["\xE5","a"],["\xC5","A"]],da:Sm,nb:Sm,de:[["\xE4","ae"],["\xC4","Ae"],["\xF6","oe"],["\xD6","Oe"],["\xFC","ue"],["\xDC","Ue"],["\xDF","ss"],["\u1E9E","Ss"]],tr:[["\xE2","a"],["\xC2","A"],["\xF6","o"],["\xD6","O"],["\xFC","u"],["\xDC","U"]],hu:[["\u0171","u"],["\u0170","U"],["\xF6","o"],["\xD6","O"],["\xFC","u"],["\xDC","U"],["\xE1","a"],["\xC1","A"],["\xE9","e"],["\xC9","E"],["\xED","i"],["\xCD","I"],["\xF3","o"],["\xD3","O"],["\xFA","u"],["\xDA","U"]],sr:[["\u0452","dj"],["\u0402","Dj"],["\u045F","dz"],["\u040F","Dz"],["\u0459","lj"],["\u0409","Lj"],["\u045A","nj"],["\u040A","Nj"],["\u045B","c"],["\u040B","C"],["\u0447","ch"],["\u0427","Ch"],["\u0448","sh"],["\u0428","Sh"],["\u0436","zh"],["\u0416","Zh"]]};for(let n of Object.keys(ji))ji[n]=new Map(ji[n]);Ac=ji});function Tc(n,e){if(typeof n!="string")throw new TypeError(`Expected a string, got \`${typeof n}\``);e={customReplacements:[],...e};let t=gE(e.locale),r=Ec,s=e.customReplacements.length>0||e.customReplacements.size>0;if(t||s){if(r=new Map(Ec),t)for(let[i,o]of t)r.set(i,o);for(let[i,o]of e.customReplacements)r.set(i,o)}return n=n.normalize(),n=mE(n,r),n=n.normalize("NFD").replaceAll(/\p{Diacritic}/gu,"").normalize(),n=n.replaceAll(/\p{Dash_Punctuation}/gu,"-"),n}var mE,gE,xm=v(()=>{vm();km();mE=(n,e)=>{for(let[t,r]of e)n=n.replaceAll(t,r);return n},gE=n=>{if(!n)return;let e=n.toLowerCase().replace(/^no(-|$)/,"nb$1");return Ac[e]||Ac[e.split("-")[0]]||void 0}});var yE,Em,Am=v(()=>{yE=[["&"," and "],["\u{1F984}"," unicorn "],["\u2665"," love "]],Em=yE});function Oc(n,e){if(typeof n!="string")throw new TypeError(`Expected a string, got \`${typeof n}\``);e={separator:"-",lowercase:!0,decamelize:!0,customReplacements:[],preserveLeadingUnderscore:!1,preserveTrailingDash:!1,preserveCharacters:[],transliterate:!0,...e};let t=e.preserveLeadingUnderscore&&n.startsWith("_"),r=e.preserveTrailingDash&&n.endsWith("-");if(e.transliterate){let i=new Map([...Em,...e.customReplacements]);n=Tc(n,{customReplacements:i,locale:e.locale})}else if(e.customReplacements.length>0)for(let[i,o]of e.customReplacements)n=n.replaceAll(i,o);e.decamelize&&(n=bE(n));let s=vE(e);return e.lowercase&&(n=e.locale?n.toLocaleLowerCase(e.locale):n.toLowerCase()),n=n.replaceAll(/([a-zA-Z\d]+)['\u2019]([ts])(\s|$)/g,"$1$2$3"),n=n.replace(s,e.separator),n=n.replaceAll("\\",""),e.separator&&(n=wE(n,e.separator)),t&&(n=`_${n}`),r&&(n=`${n}-`),n}var bE,wE,vE,Tm=v(()=>{wm();xm();Am();bE=n=>n.replaceAll(/([A-Z]{2,})(\d+)/g,"$1 $2").replaceAll(/([a-z\d]+)([A-Z]{2,})/g,"$1 $2").replaceAll(/([a-z\d])([A-Z])/g,"$1 $2").replaceAll(/([A-Z]+)([A-Z][a-rt-z\d]+)/g,"$1 $2"),wE=(n,e)=>{let t=Di(e);return n.replaceAll(new RegExp(`(?:${t}){2,}`,"g"),e).replaceAll(new RegExp(`^(?:${t})|(?:${t})$`,"g"),"")},vE=n=>{let e=String.raw`a-z\d`;if(e+=n.lowercase?"":"A-Z",n.transliterate===!1&&(e+=String.raw`\p{L}\p{N}`),n.preserveCharacters.length>0)for(let r of n.preserveCharacters){if(r===n.separator)throw new Error(`The separator character \`${n.separator}\` cannot be included in preserved characters: ${n.preserveCharacters}`);e+=Di(r)}let t=n.transliterate?"g":"gu";return new RegExp(`[^${e}]+`,t)}});function Tn(n){return Oc(n)}var Om=v(()=>{Tm()});var On,Pm,Cm=v(()=>{On={local:"local",ide:"ide",published:"published",inline:"inline"},Pm=Object.values(On).map(n=>`'${n}'`).join(" | ")});var qr,Pc,_m=v(()=>{qr=` *, *::before, *::after { box-sizing: border-box; }
|
|
167
167
|
canvas { max-width: 100%; }
|
|
168
168
|
body { margin: 0; display: flow-root; font-family: system-ui, -apple-system, sans-serif; }
|
|
169
169
|
html[data-theme="dark"] { color-scheme: dark; }
|
|
170
|
-
html[data-theme="light"] { color-scheme: light; }`,
|
|
171
|
-
\u2026[${n.length-5e4} more characters truncated]`:n}function
|
|
172
|
-
`).map(i=>i.trim()).filter(Boolean),t=e[0];if(!t)return"";let r=t.length>300?t.slice(0,300).trimEnd()+"\u2026":t,s=e.length-1;return s>0?`${r} (+${s} line${s===1?"":"s"})`:r}var
|
|
173
|
-
`):n==null?"":we(JSON.stringify(n))}function
|
|
174
|
-
`).length,"line")}`;if(t.mode==="content")return
|
|
170
|
+
html[data-theme="light"] { color-scheme: light; }`,Pc=" html, body { height: 100%; }"});var ne=v(()=>{Ms();Ba();mf();wf();xc();bm();Om();Cm();_m();Bs()});function we(n){return n.length>5e4?n.slice(0,5e4)+`
|
|
171
|
+
\u2026[${n.length-5e4} more characters truncated]`:n}function Le(n){let e=n.replace(SE,"").split(`
|
|
172
|
+
`).map(i=>i.trim()).filter(Boolean),t=e[0];if(!t)return"";let r=t.length>300?t.slice(0,300).trimEnd()+"\u2026":t,s=e.length-1;return s>0?`${r} (+${s} line${s===1?"":"s"})`:r}var SE,Fi,Jr=v(()=>{"use strict";SE=/\u001b\[[0-9;]*m/g;Fi=(n,e)=>``});import{existsSync as kE,readdirSync as xE,statSync as EE}from"fs";import{join as AE}from"path";function Ui(n){if(!kE(n))return[];let e;try{e=xE(n)}catch{return[]}let t=[];for(let r of e){if(!r.endsWith(".jsonl"))continue;let s=AE(n,r);try{let i=EE(s);i.isFile()&&t.push({sessionId:r.slice(0,-6),file:s,mtime:i.mtimeMs})}catch{}}return t}var _c=v(()=>{"use strict"});var kt,qi=v(()=>{"use strict";kt=class{ensureHarnessSupport(){}}});import{openSync as TE,readSync as OE,closeSync as PE,statSync as CE,readdirSync as _E,readFileSync as RE,existsSync as IE}from"fs";import{join as Wr}from"path";import{homedir as Nc}from"os";function NE(n){return n.replace(/[^a-zA-Z0-9]/g,"-")}function Ji(n){let e=n?.type==="image"?n.source:void 0;return e?.type==="base64"&&e.data?Fi(e.data,e.media_type):""}function Rc(n){return typeof n=="string"?we(n):Array.isArray(n)?n.map(e=>{if(typeof e=="string")return we(e);let t=e;return typeof t?.text=="string"?we(t.text):t?.content!=null?Rc(t.content):Ji(t)}).join(`
|
|
173
|
+
`):n==null?"":we(JSON.stringify(n))}function LE(n){let e=n.trim();return!!e&&Lm.some(t=>t.test(e))}function ME(n){let e=n.trim();return e?Lm.some(t=>{let r=t.exec(e);return!!r&&r.index===0}):!0}function DE(n){return n.replace(BE,"")}function jE(n){let e=/^<command-name>([\s\S]*?)<\/command-name>/.exec(n)?.[1]?.trim();if(!e)return;let t=/<command-args>([\s\S]*?)<\/command-args>/.exec(n)?.[1]?.trim();return t?`${e} ${t}`:e}function xt(n){let e=DE(n).trim();return e?jE(e)??(LE(e)?"":e):""}function Ic(n){return n?.type==="text"&&typeof n.text=="string"?xt(n.text):""}function $c(n,e){if(typeof n=="string")return Le(n);if(!n||typeof n!="object")return Le(e);let t=n;if(t.type==="text"&&typeof t.file?.numLines=="number")return Me(t.file.numLines,"line");if(t.type==="image"){let r=Nm(t.file?.originalSize);return r?`image (${r})`:"image"}if(t.type==="pdf"){let r=Nm(t.file?.originalSize);return r?`PDF (${r})`:"PDF"}if(t.type==="parts"&&typeof t.file?.count=="number")return Me(t.file.count,"page");if(t.type==="file_unchanged")return"unchanged since last read";if(t.type==="create"&&typeof t.content=="string")return`created, ${Me(t.content.split(`
|
|
174
|
+
`).length,"line")}`;if(t.mode==="content")return Me(t.numLines??0,"line");if(t.mode==="count")return`${Me(t.numMatches??0,"match","matches")} (${Me(t.numFiles??0,"file")})`;if(t.mode==="files_with_matches")return Me(t.numFiles??0,"file");if(Array.isArray(t.structuredPatch)){let r=0,s=0;for(let i of t.structuredPatch)for(let o of i?.lines??[])typeof o=="string"&&(o.startsWith("+")?r++:o.startsWith("-")&&s++);return`+${r} \u2212${s}`}return typeof t.stdout=="string"||typeof t.stderr=="string"?t.backgroundTaskId?"running in background":t.interrupted?"interrupted":Le(t.stdout||t.stderr||"")||"no output":typeof t.code=="number"&&typeof t.codeText=="string"?`${t.code} ${t.codeText}`:typeof t.searchCount=="number"?Me(t.searchCount,"search","searches"):Array.isArray(t.matches)&&typeof t.total_deferred_tools=="number"?Me(t.matches.length,"tool"):Array.isArray(t.newTodos)?Me(t.newTodos.length,"todo"):typeof t.numFiles=="number"?Me(t.numFiles,"file"):Le(e)}function Kr(n){return!!n.isSidechain||!!n.isMeta}function FE(n){let e;try{e=TE(n,"r")}catch{return""}try{let r=65536;try{r=CE(n).size}catch{}let s=(c,d)=>{if(d<=0)return"";let u=Buffer.alloc(d),f=OE(e,u,0,d,c);return u.subarray(0,f).toString("utf8")},i=(c,d,u)=>{let f="";for(let p of c.split(`
|
|
175
175
|
`)){if(!p.includes(`"${d}"`))continue;let m;try{m=JSON.parse(p)}catch{continue}let h=m?.[u];m?.type===d&&typeof h=="string"&&h&&(f=h)}return f},o=s(0,Math.min(65536,r)),a=r>65536?s(r-65536,65536):"",l=i(a,"custom-title","customTitle")||i(o,"custom-title","customTitle")||i(a,"ai-title","aiTitle")||i(o,"ai-title","aiTitle");if(l)return l.replace(/\s+/g," ").trim().slice(0,200);for(let c of o.split(`
|
|
176
|
-
`)){if(!c.trim())continue;let d;try{d=JSON.parse(c)}catch{continue}if(!d||Kr(d)||d.type!=="user")continue;let u=d.message?.content,f="";typeof u=="string"?f=xt(u):Array.isArray(u)&&(f=u.map(
|
|
177
|
-
`),l=i.filter(u=>u.type==="tool_use").map(u=>({id:u.id??"",name:u.name??"",input:u.input??{}}));if(o||a||l.length){let u=Date.parse(e.timestamp??""),f=!isNaN(u)&&u>=t;r.push({type:"assistant",text:o,thinking:a,tools:l,live:f})}let c=e.message?.usage??e.usage,d=c&&{in:c.input_tokens??0,out:c.output_tokens??0,cached:c.cache_read_input_tokens??0,cacheCreate:c.cache_creation_input_tokens??0};return{events:r,usage:d,model:e.message?.model}}return{events:r}}chainWorking(e){let t;for(let o of e)(o.type==="user"||o.type==="assistant")&&(t=o);if(!t)return!1;if(t.type==="user"){try{let o=t.message?.content,a=typeof o=="string"?o:Array.isArray(o)?o.filter(c=>c&&c.type==="text").map(c=>c.text??"").join(""):"";if(!(Array.isArray(o)&&o.some(c=>c&&c.type==="tool_result"))&&a.trim()&&xt(a)==="")return!1}catch{}return!0}let s=(Array.isArray(t.message?.content)?t.message.content:[]).filter(o=>o.type==="tool_use").map(o=>o.id);if(s.length===0)return!1;let i=new Set;for(let o of e){let a=o.message?.content;if(Array.isArray(a))for(let l of a)l.type==="tool_result"&&l.tool_use_id&&i.add(l.tool_use_id)}return s.some(o=>o&&!i.has(o))}sessionAlive(e){return
|
|
178
|
-
`):""}function
|
|
179
|
-
`);if(r<0)return t.bytes>=65536?"":void 0;try{let s=JSON.parse(t.text.slice(0,r));return s?.type==="session_meta"&&typeof s.payload?.cwd=="string"?s.payload.cwd:""}catch{return""}}var
|
|
180
|
-
`))if(r.includes('"user_message"'))try{let s=JSON.parse(r);if(s?.type==="event_msg"&&s.payload?.type==="user_message"&&typeof s.payload.message=="string"){let i=s.payload.message.replace(/\s+/g," ").trim();if(i)return i.slice(0,200)}}catch{}return""}searchText(t){if(t?.type!=="response_item"||t.payload?.type!=="message")return"";let r=t.payload.role;return r!=="user"&&r!=="assistant"?"":
|
|
181
|
-
`),r=[];if(t.forEach((o,a)=>{let l=
|
|
182
|
-
`)}function
|
|
176
|
+
`)){if(!c.trim())continue;let d;try{d=JSON.parse(c)}catch{continue}if(!d||Kr(d)||d.type!=="user")continue;let u=d.message?.content,f="";typeof u=="string"?f=xt(u):Array.isArray(u)&&(f=u.map(Ic).filter(Boolean).join(" "));let p=f.replace(/\s+/g," ").trim();if(p)return(p.replace(/^Continuing from a prior session\. Here is the summary of our work so far:\s*/i,"").trim()||p).slice(0,200)}return""}finally{PE(e)}}function UE(n){let e;try{e=_E($m)}catch{return!1}for(let t of e)if(t.endsWith(".json"))try{let r=JSON.parse(RE(Wr($m,t),"utf8"));if(r?.sessionId!==n)continue;return process.kill(r.pid,0),!0}catch{}return!1}var $E,Im,Lm,BE,Me,Nm,$m,Pn,Ki=v(()=>{"use strict";Jr();_c();qi();$E=Wr(Nc(),".claude","projects"),Im=n=>Wr($E,NE(n));Lm=[/\[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,/^<local-command-stdout\b/i,/^<local-command-stderr\b/i];BE=/<ide_[a-z_]+>[\s\S]*?<\/ide_[a-z_]+>/gi;Me=(n,e,t=e+"s")=>`${n} ${n===1?e:t}`,Nm=n=>typeof n!="number"?"":n<1024?`${n}B`:n<1048576?`${Math.round(n/1024)}KB`:`${(n/1048576).toFixed(1)}MB`;$m=Wr(Nc(),".claude","sessions");Pn=class extends kt{displayName="Claude Mirror";detectsSelf(){return process.env.CLAUDECODE==="1"}detectsInstalled(){return IE(Wr(Nc(),".claude"))}sessionsDir(e){return Im(e)}listSessionFiles(e){return Ui(Im(e))}parseEntry(e){try{return JSON.parse(e)}catch{return null}}idOf(e){return e.uuid}parentOf(e){return e.parentUuid}timestampOf(e){return e.timestamp}isSidechain(e){return!!e.isSidechain}isLeafType(e){return e.type==="user"||e.type==="assistant"}isRecoveryNoise(e){return!!e.isApiErrorMessage}apply(e,t){if(Kr(e))return{events:[]};let r=[];if(e.type==="user"){let s=e.message?.content;if(typeof s=="string"){let i=xt(s);i&&r.push({type:"user",text:i})}else if(Array.isArray(s))for(let i of s)if(i?.type==="tool_result"){let o=Rc(i.content);r.push({type:"tool_result",id:i.tool_use_id??"",content:o,isError:!!i.is_error,digest:$c(e.toolUseResult,o)})}else{let o=Ic(i)||Ji(i);o&&r.push({type:"user",text:o})}return{events:r}}if(e.type==="attachment"&&e.attachment?.type==="queued_command"){let s=xt(Rc(e.attachment.prompt));return s&&r.push({type:"user",text:s}),{events:r}}if(e.type==="assistant"){let s=e.message?.content,i=Array.isArray(s)?s:[],o=i.filter(u=>u.type==="text").map(u=>u.text??"").filter(u=>!ME(u)).join(""),a=i.filter(u=>u.type==="thinking").map(u=>u.thinking??"").join(`
|
|
177
|
+
`),l=i.filter(u=>u.type==="tool_use").map(u=>({id:u.id??"",name:u.name??"",input:u.input??{}}));if(o||a||l.length){let u=Date.parse(e.timestamp??""),f=!isNaN(u)&&u>=t;r.push({type:"assistant",text:o,thinking:a,tools:l,live:f})}let c=e.message?.usage??e.usage,d=c&&{in:c.input_tokens??0,out:c.output_tokens??0,cached:c.cache_read_input_tokens??0,cacheCreate:c.cache_creation_input_tokens??0};return{events:r,usage:d,model:e.message?.model}}return{events:r}}chainWorking(e){let t;for(let o of e)(o.type==="user"||o.type==="assistant")&&(t=o);if(!t)return!1;if(t.type==="user"){try{let o=t.message?.content,a=typeof o=="string"?o:Array.isArray(o)?o.filter(c=>c&&c.type==="text").map(c=>c.text??"").join(""):"";if(!(Array.isArray(o)&&o.some(c=>c&&c.type==="tool_result"))&&a.trim()&&xt(a)==="")return!1}catch{}return!0}let s=(Array.isArray(t.message?.content)?t.message.content:[]).filter(o=>o.type==="tool_use").map(o=>o.id);if(s.length===0)return!1;let i=new Set;for(let o of e){let a=o.message?.content;if(Array.isArray(a))for(let l of a)l.type==="tool_result"&&l.tool_use_id&&i.add(l.tool_use_id)}return s.some(o=>o&&!i.has(o))}sessionAlive(e){return UE(e)}readPreview(e){return FE(e)}searchText(e){if(!e||Kr(e)||e.type!=="user"&&e.type!=="assistant")return"";let t=e.message?.content,r="";if(typeof t=="string")r=xt(t);else if(Array.isArray(t)){let s=t;r=e.type==="user"?s.map(Ic).filter(Boolean).join(" "):s.filter(i=>i.type==="text"&&typeof i.text=="string").map(i=>i.text).join(" ")}return r.replace(/\s+/g," ").trim()}}});import{statSync as qE,readdirSync as JE,openSync as KE,readSync as WE,closeSync as HE,existsSync as YE}from"fs";import{basename as VE,join as Lc,resolve as zE}from"path";import{homedir as Mm}from"os";function XE(n){let e=n.trimStart();return GE.some(t=>e.startsWith(t))}function Hr(n,e){return Array.isArray(n)?n.map(t=>typeof t?.text=="string"?e&&XE(t.text)?"":we(t.text):t?.type==="input_image"&&typeof t.image_url=="string"&&t.image_url.startsWith("data:")?``:"").filter(Boolean).join(`
|
|
178
|
+
`):""}function QE(n){return typeof n=="string"?we(n):Hr(n,!1)}function ZE(n){let e=n??"";for(let t of[/tools\.shell_command\((\{[\s\S]*?\})\)/,/tools\.shell_command\((\{[\s\S]*\})\)/]){let r=t.exec(e);if(r)try{return JSON.parse(r[1])}catch{}}return{script:e}}function eA(n){if(typeof n=="string"&&n)try{let e=JSON.parse(n);if(e&&typeof e=="object"&&!Array.isArray(e))return e}catch{}return{arguments:n??""}}function Dm(n,e){let t;try{t=KE(n,"r")}catch{return}try{let r=Buffer.alloc(e),s=WE(t,r,0,e,0);return{text:r.subarray(0,s).toString("utf8"),bytes:s}}finally{HE(t)}}function tA(n){let t=Dm(n,65536);if(t===void 0)return;let r=t.text.indexOf(`
|
|
179
|
+
`);if(r<0)return t.bytes>=65536?"":void 0;try{let s=JSON.parse(t.text.slice(0,r));return s?.type==="session_meta"&&typeof s.payload?.cwd=="string"?s.payload.cwd:""}catch{return""}}var GE,Bm,Cn,Mc=v(()=>{"use strict";Jr();qi();GE=["<permissions instructions>","<apps_instructions>","<plugins_instructions>","<skills_instructions>","<recommended_plugins>","<environment_context>","<user_instructions>"];Bm=n=>{let e=zE(n);return process.platform==="win32"?e.toLowerCase():e},Cn=class extends kt{constructor(t=Lc(Mm(),".codex","sessions")){super();this.root=t}displayName="Codex Mirror";#e=0;#s;#t=new Map;detectsSelf(){return!!process.env.CODEX_THREAD_ID}detectsInstalled(){return YE(Lc(Mm(),".codex"))}sessionsDir(t){return this.root}listSessionFiles(t){let r=Bm(t),s=[];for(let i of this.#r()){let o;try{let l=qE(i);if(!l.isFile())continue;o=l.mtimeMs}catch{continue}let a=this.#t.get(i);if(a===void 0){if(a=tA(i),a===void 0)continue;this.#t.set(i,a)}Bm(a)===r&&s.push({sessionId:VE(i,".jsonl"),file:i,mtime:o})}return s}#r(){let t=[],r=s=>{try{return JE(s).map(i=>Lc(s,i))}catch{return[]}};for(let s of r(this.root))for(let i of r(s))for(let o of r(i))for(let a of r(o))a.endsWith(".jsonl")&&t.push(a);return t}parseEntry(t){let r;try{r=JSON.parse(t)}catch{return null}return!r||typeof r.type!="string"?null:r}idOf(t){return t.ord===void 0&&(t.ord=String(this.#e++),t.parent=this.#s,this.#s=t.ord),t.ord}parentOf(t){return t.parent}timestampOf(t){return t.timestamp}isSidechain(t){return!1}isLeafType(t){return!0}isRecoveryNoise(t){return!1}apply(t,r){let s=[],i=t.payload;if(!i)return{events:s};let o=()=>{let a=Date.parse(t.timestamp??"");return!isNaN(a)&&a>=r};if(t.type==="response_item"){if(i.type==="message"){if(i.role==="user"){let a=Hr(i.content,!0).trim();a&&s.push({type:"user",text:a})}else if(i.role==="assistant"){let a=Hr(i.content,!1);a&&s.push({type:"assistant",text:a,thinking:"",tools:[],live:o()})}return{events:s}}if(i.type==="reasoning"){let a=Hr(i.summary,!1);return a&&s.push({type:"assistant",text:"",thinking:a,tools:[],live:o()}),{events:s}}if(i.type==="custom_tool_call"||i.type==="function_call"){let a=i.type==="custom_tool_call"?ZE(i.input):eA(i.arguments);return s.push({type:"assistant",text:"",thinking:"",tools:[{id:i.call_id??"",name:i.name??"",input:a}],live:o()}),{events:s}}if(i.type==="custom_tool_call_output"||i.type==="function_call_output"){let a=QE(i.output);return s.push({type:"tool_result",id:i.call_id??"",content:a,isError:!1,digest:Le(a)}),{events:s}}return{events:s}}if(t.type==="event_msg"){if(i.type==="token_count"){let a=i.info?.last_token_usage;if(!a)return{events:s};let l={in:Math.max(0,(a.input_tokens??0)-(a.cached_input_tokens??0)),out:a.output_tokens??0,cached:a.cached_input_tokens??0,cacheCreate:a.cache_write_input_tokens??0};return{events:s,usage:l}}return{events:s}}return t.type==="turn_context"?{events:s,model:i.model}:{events:s}}chainWorking(t){let r=!1;for(let s of t){if(s.type!=="event_msg")continue;let i=s.payload?.type;i==="task_started"?r=!0:(i==="task_complete"||i==="turn_aborted")&&(r=!1)}return r}sessionAlive(){}readPreview(t){for(let r of(Dm(t,256*1024)?.text??"").split(`
|
|
180
|
+
`))if(r.includes('"user_message"'))try{let s=JSON.parse(r);if(s?.type==="event_msg"&&s.payload?.type==="user_message"&&typeof s.payload.message=="string"){let i=s.payload.message.replace(/\s+/g," ").trim();if(i)return i.slice(0,200)}}catch{}return""}searchText(t){if(t?.type!=="response_item"||t.payload?.type!=="message")return"";let r=t.payload.role;return r!=="user"&&r!=="assistant"?"":Hr(t.payload.content,r==="user").replace(/\s+/g," ").trim()}}});import{realpathSync as nA}from"fs";import{createHash as rA}from"crypto";import{join as Wi,resolve as sA}from"path";import{homedir as iA}from"os";function Et(){let n=process.env.TYPEBULB_SERVERS_DIR;return n?Wi(n,".."):Wi(iA(),".typebulb")}function et(){jm||(jm=!0,console.error(`${Et()} not writable \u2014 continuing stateless: ports won't stick, caches stay cold, and typebulb logs/wait/send/stop may not see this run`))}function tt(){return process.env.TYPEBULB_SERVERS_DIR||Wi(Et(),"servers")}function Fm(n){let e=X(n),t=rA("sha1").update(e).digest("hex").slice(0,8),r=e.slice(e.lastIndexOf("/")+1).replace(/\.bulb\.md$/,"");return Wi(Et(),"canvas",`${r}-${t}.png`)}function X(n){let e=sA(n),t=e;try{t=nA.native(e)}catch{}return(process.platform==="win32"?t.toLowerCase():t).replace(/\\/g,"/")}function Um(n,e){let t=X(n),r=X(e);return t.startsWith(r.endsWith("/")?r:r+"/")?!t.includes("/node_modules/"):!1}var jm,At=v(()=>{"use strict";jm=!1});var Be,Hi=v(()=>{"use strict";Be="0.54.0"});import{spawn as qm}from"child_process";import{readdir as oA,readFile as Km,writeFile as Wm,unlink as Bc,mkdir as aA}from"fs/promises";import{mkdirSync as Hm,writeFileSync as Yi,appendFileSync as lA,readFileSync as Dc}from"fs";import*as Ee from"path";import{fileURLToPath as cA}from"url";function jc(n){return Ee.join(tt(),`${n}.json`)}function Vr(n){return Ee.join(tt(),`${n}.log`)}function Fc(n){return Ee.join(tt(),`${n}.wait.json`)}function Ym(n){try{let e=JSON.parse(Dc(Fc(n),"utf8"));return e.cursors&&typeof e.cursors=="object"?e.cursors:{}}catch{return{}}}function Uc(n,e=""){let t=Ym(n)[e];return typeof t=="number"&&Number.isFinite(t)&&t>=0?t:void 0}function Vi(n,e,t=""){try{Hm(tt(),{recursive:!0});let r=Ym(n);r[t]=e,Yi(Fc(n),JSON.stringify({cursors:r}))}catch{}}function zi(n){let e=Vr(n);try{Hm(tt(),{recursive:!0}),Yi(e,"")}catch{return()=>{}}let t=process.stdout.write.bind(process.stdout),r=process.stderr.write.bind(process.stderr),s=0,i=!1,o=a=>{if(!i)try{let l=typeof a=="string"?Buffer.from(a,"utf8"):Buffer.from(a);if(lA(e,l),s+=l.length,s>2*Jm){let c=Dc(e),d=c.subarray(Math.max(0,c.length-Jm));Yi(e,d),s=d.length}}catch{i=!0}};return process.stdout.write=((a,...l)=>(o(a),t(a,...l))),process.stderr.write=((a,...l)=>(o(a),r(a,...l))),()=>{process.stdout.write=t,process.stderr.write=r}}function Vm(n){try{Yi(Vr(n),"")}catch{}}function He(n,e=0){try{let t=Dc(Vr(n)),r=e>=0&&e<=t.length?e:0;return{text:t.subarray(r).toString("utf8"),offset:t.length}}catch{return{text:"",offset:0}}}function qc(n){return`\u2500\u2500 run ${n} \u2500\u2500 ${new Date().toTimeString().slice(0,8)}`}function dA(n){let e=uA.exec(n);return e?Number(e[1]):void 0}function zm(n,e){let t=n.split(`
|
|
181
|
+
`),r=[];if(t.forEach((o,a)=>{let l=dA(o);l!==void 0&&r.push({id:l,idx:a})}),!r.length)return e==="latest"?n:"";let s=e==="latest"?r[r.length-1]:r.find(o=>o.id===e);if(!s)return"";let i=r.find(o=>o.idx>s.idx);return t.slice(s.idx,i?i.idx:t.length).join(`
|
|
182
|
+
`)}function Jc(n){try{return process.kill(n,0),!0}catch(e){return e.code==="EPERM"}}async function Gm(n){try{await aA(tt(),{recursive:!0}),await Wm(jc(n.pid),JSON.stringify({version:Be,...n}))}catch{et()}}async function Xm(n,e){let t=jc(n);try{let r=JSON.parse(await Km(t,"utf8"));if(r.denied===e)return;r.denied=e,await Wm(t,JSON.stringify(r))}catch{}}async function Yr(n){await Bc(jc(n)).catch(()=>{}),await Bc(Vr(n)).catch(()=>{}),await Bc(Fc(n)).catch(()=>{})}async function Q(n){let e;try{e=await oA(tt())}catch{return[]}let t=[];return await Promise.all(e.map(async s=>{if(!/^\d+\.json$/.test(s))return;let i=parseInt(s,10),o;try{o=JSON.parse(await Km(Ee.join(tt(),s),"utf8"))}catch{await Yr(i);return}o&&typeof o.pid=="number"&&Jc(o.pid)?t.push(o):await Yr(i)})),(n?t.filter(s=>s.agent==null&&Um(s.file,n)):t).sort((s,i)=>s.startedAt-i.startedAt)}async function Kc(n,e){let t=X(n);return(await Q()).find(r=>r.cwd!=null&&X(r.cwd)===t&&(e?r.agent===e:r.agent!=null))}async function Yt(n){try{process.kill(n,"SIGTERM")}catch{}await Yr(n)}function _n(n,e){let t=X(e);return n.filter(r=>r.agent==null&&r.pid!==process.pid&&X(r.file)===t)}async function Wc(n){let e=_n(await Q(),n);for(let t of e)await Yt(t.pid);return e}function pA(n,e,t){(process.platform==="win32"?qm("cmd",["/c","start","","/b",n,...e],{cwd:t,stdio:"ignore",windowsHide:!0}):qm(n,e,{cwd:t,detached:!0,stdio:"ignore"})).unref()}function zr(){return Ee.join(Ee.dirname(cA(import.meta.url)),"index.js")}function hA(n,e={}){return{command:process.execPath,args:[zr(),...e.trust?["--trust"]:[],...e.batch?["--batch",e.batch]:[],...e.mode?["--mode",e.mode]:[],n,...e.open===!1?["--no-open"]:[]]}}function mA(n){return{command:process.execPath,args:[zr(),`agent:${n}`,"--no-open"]}}async function Qm(n,e,t,r){let s=await n();if(s)return s;pA(e.command,e.args,t);let i=Date.now()+2e4;for(;Date.now()<i;){await fA(150);let o=await n();if(o)return o}throw new Error(`Launched ${r} but it did not register within 20s.`)}async function Gi(n,e={}){let t=e.cwd??process.cwd(),r=Ee.resolve(t,n),[s]=await Wc(r),i={...e,batch:e.batch??s?.batch,mode:e.mode??s?.mode};return Qm(async()=>_n(await Q(),r)[0],hA(n,i),t,Ee.basename(n))}async function Zm(n,e=process.cwd()){return Qm(()=>Kc(e,n),mA(n),e,`the ${n} mirror`)}var Jm,uA,fA,Ae=v(()=>{"use strict";At();Hi();Jm=1e6;uA=/^── run (\d+) ── /;fA=n=>new Promise(e=>setTimeout(e,n))});function Rn(n){return{...cf(n),server:n.files.get("server.ts")??""}}function Xi(n){return!!n.server&&!n.code}var Gr=v(()=>{"use strict";ne();ne()});function Qi(n){let e=/^---[^\n]*\n([\s\S]*?)\n---/.exec(n),t=e?/^\s*name:\s*(.+?)\s*$/m.exec(e[1]):null;return t?t[1].replace(/^["']|["']$/g,""):void 0}function Hc(n){return Tn(Qi(n)??"bulb")||"bulb"}var Yc=v(()=>{"use strict";ne()});import{transform as gA}from"sucrase";function Vc(n,e={}){let t=e.serverOnly?["typescript"]:["typescript","jsx"];try{let{code:r}=gA(n,{transforms:t,jsxRuntime:"automatic",jsxImportSource:e.jsxImportSource||"react",production:!0});return{code:r}}catch(r){return{code:"",error:String(r)}}}var eg=v(()=>{});function zc(n){let e=n.split(""),t=(i,o)=>{for(let a=i;a<o&&a<e.length;a++)e[a]!==`
|
|
183
183
|
`&&(e[a]=" ")},r=0,s="";for(;r<n.length;){let i=n[r],o=n[r+1];if(i==="/"&&o==="/"){let a=r;for(;a<n.length&&n[a]!==`
|
|
184
|
-
`;)a++;t(r,a),r=a}else if(i==="/"&&o==="*"){let a=r+2;for(;a<n.length&&!(n[a]==="*"&&n[a+1]==="/");)a++;t(r,Math.min(a+2,n.length)),r=a+2}else if(i==="/"&&
|
|
184
|
+
`;)a++;t(r,a),r=a}else if(i==="/"&&o==="*"){let a=r+2;for(;a<n.length&&!(n[a]==="*"&&n[a+1]==="/");)a++;t(r,Math.min(a+2,n.length)),r=a+2}else if(i==="/"&&yA.has(s)){let a=r+1,l=!1;for(;a<n.length&&n[a]!==`
|
|
185
185
|
`;){let c=n[a];if(c==="\\")a++;else if(c==="[")l=!0;else if(c==="]")l=!1;else if(c==="/"&&!l)break;a++}r=a+1,s="/"}else if(i==='"'||i==="'"){let a=r+1;for(;a<n.length&&n[a]!==i&&n[a]!==`
|
|
186
|
-
`;)n[a]==="\\"&&a++,a++;r=a+1,s=i}else if(i==="`"){let a=
|
|
187
|
-
`).length-1}));return r}function
|
|
188
|
-
`),a=
|
|
189
|
-
`);for(let l=0;l<o.length;l++){let c=a[l],d=l+1+s;for(let u of
|
|
190
|
-
`)).filter(({root:i})=>!s.has(i)).map(({root:i,lineIndex:o})=>{let a=o+1+r;return{type:"UNDECLARED_IMPORT",severity:"error",message:
|
|
186
|
+
`;)n[a]==="\\"&&a++,a++;r=a+1,s=i}else if(i==="`"){let a=tg(n,r);t(r,a),r=a,s="`"}else/\s/.test(i)||(s=i),r++}return e.join("")}function tg(n,e){let t=e+1,r=0;for(;t<n.length;){let s=n[t];if(s==="\\"){t+=2;continue}if(s==="`"){if(r===0)return t+1;t=tg(n,t);continue}if(s==="$"&&n[t+1]==="{"){r++,t+=2;continue}if(s==="}"&&r>0){r--,t++;continue}t++}return n.length}var yA,ng=v(()=>{yA=new Set(["","(",",","=",":","[","!","&","|","?",";","{"])});function vA(n){if(/^[./]/.test(n)||/^[a-z][a-z0-9+.-]*:/i.test(n))return null;let e=n.split("/");return n.startsWith("@")?e.slice(0,2).join("/"):e[0]}function rg(n){let e=[];for(let s of wA)for(let i of n.matchAll(s)){let o=vA(i[1]);o&&e.push({root:o,index:i.index??0})}e.sort((s,i)=>s.index-i.index);let t=new Set,r=[];for(let{root:s,index:i}of e)t.has(s)||(t.add(s),r.push({root:s,lineIndex:n.slice(0,i).split(`
|
|
187
|
+
`).length-1}));return r}function sg(n){return rg(zc(n)).map(e=>e.root)}function Xr(n,e){if(!n)return[];let{target:t,dependencies:r}=e,s=(e.lineOffset??1)-1,i=[],o=n.split(`
|
|
188
|
+
`),a=zc(n).split(`
|
|
189
|
+
`);for(let l=0;l<o.length;l++){let c=a[l],d=l+1+s;for(let u of bA)u.targets.includes(t)&&u.pattern.test(c)&&i.push({type:u.type,severity:"error",message:xA(u.type,d),lineNumber:d,lineContent:o[l]})}return t==="client"&&r&&i.push(...SA(a,o,r,s)),i}function SA(n,e,t,r){let s=new Set(Object.keys(t));return rg(n.join(`
|
|
190
|
+
`)).filter(({root:i})=>!s.has(i)).map(({root:i,lineIndex:o})=>{let a=o+1+r;return{type:"UNDECLARED_IMPORT",severity:"error",message:kA(i,a),lineNumber:a,lineContent:e[o]}})}function kA(n,e){return`Import "${n}" is not declared in config.json dependencies! Found on line ${e}.
|
|
191
191
|
|
|
192
192
|
**CRITICAL**: Every bare import in code.tsx must be declared in the **config.json** "dependencies" block. A bulb that imports a package it doesn't declare is incomplete \u2014 it won't type-check, its versions aren't pinned, and it can't be reliably re-run or ported to typebulb.com.
|
|
193
193
|
|
|
@@ -201,7 +201,7 @@ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.pus
|
|
|
201
201
|
}
|
|
202
202
|
\`\`\`
|
|
203
203
|
|
|
204
|
-
**Fix:** Add a **config.json** block (or extend the existing one) with a "dependencies" entry for "${n}" \u2014 and for every other bare import in code.tsx. Pin a real version where you can (e.g. "react": "^19.2.7").`}function
|
|
204
|
+
**Fix:** Add a **config.json** block (or extend the existing one) with a "dependencies" entry for "${n}" \u2014 and for every other bare import in code.tsx. Pin a real version where you can (e.g. "react": "^19.2.7").`}function xA(n,e){return n==="URL_IMPORT"?`Direct URL imports are not supported! Found on line ${e}.
|
|
205
205
|
|
|
206
206
|
**CRITICAL**: Import packages by name only. Do NOT use CDN URLs:
|
|
207
207
|
|
|
@@ -355,18 +355,18 @@ import { something } from 'module-name'
|
|
|
355
355
|
const something = require('module-name') // NOT SUPPORTED!
|
|
356
356
|
\`\`\`
|
|
357
357
|
|
|
358
|
-
**Fix:** Replace all \`require()\` calls with ES6 \`import\` statements at the top of the file.`}var Vt,zt,
|
|
358
|
+
**Fix:** Replace all \`require()\` calls with ES6 \`import\` statements at the top of the file.`}var Vt,zt,bA,wA,Zi=v(()=>{ng();Vt=["client"],zt=["client","server"],bA=[{type:"DYNAMIC_IMPORT",pattern:/\bimport\s*\(\s*['"`]/,targets:Vt},{type:"COMMONJS_REQUIRE",pattern:/\brequire\s*\(\s*['"`]/,targets:zt},{type:"JS_EXTENSION_IMPORT",pattern:/from\s+['"][^'"]*\/[^'"]*\.js['"]/,targets:Vt},{type:"URL_IMPORT",pattern:/from\s+['"]https?:\/\//,targets:Vt},{type:"VERSION_SPECIFIER_IMPORT",pattern:/from\s+['"][^'"]*@[\d^~]/,targets:Vt},{type:"REDUNDANT_TB_DECLARATION",pattern:/declare\s+(const|var|let)\s+tb\b/,targets:zt},{type:"CONST_ENUM",pattern:/\bconst\s+enum\b/,targets:zt},{type:"NAMESPACE_DECLARATION",pattern:/\bnamespace\s+\w+/,targets:zt},{type:"COMMONJS_EXPORT_EQUALS",pattern:/\bexport\s*=/,targets:zt},{type:"COMMONJS_IMPORT_EQUALS",pattern:/\bimport\s+\w+\s*=/,targets:zt},{type:"MODULE_DECLARATION",pattern:/\bmodule\s+\w+\s*\{/,targets:zt},{type:"CSS_FILE_IMPORT",pattern:/(?:from|import)\s+['"][^'"]*\.css['"]/,targets:Vt},{type:"NAVIGATION",pattern:/window\.(location\.(reload|assign|replace)\s*\(|open\s*\()/,targets:Vt},{type:"NAVIGATION",pattern:/window\.location(\.href)?\s*=[^=]/,targets:Vt}],wA=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g]});function EA(n){return n.map(e=>`${e.type} (line ${e.lineNumber}): ${e.message.split(`
|
|
359
359
|
`)[0]}`).join(`
|
|
360
|
-
`)}function
|
|
361
|
-
${bA(t)}`)}var sg=v(()=>{"use strict";Qi()});var Tt,Xr,Vc,Qr=v(()=>{Tt="https://esm.sh",Xr="https://cdn.jsdelivr.net/npm/",Vc="https://data.jsdelivr.com/v1/package/npm/"});function ig(n){let e=(n||"").replace(/^\/+/,"").replace(/\/+$/,"");return e?e.split("/"):[]}var j,Nn,og,Zr=v(()=>{Qr();j=class n{constructor(e,t,r){let s=typeof e=="string"?n.parse(e):e;this.name=s.name,this.version=Nn(t??s.version),this.subpath=Nn(r??s.subpath)}static parse(e){let t=ig(e||"");if(!t.length)return new n({name:""});if(t[0].startsWith("@")){let s=t[0],[i,o]=og(t[1]??""),a=Nn(t.slice(2).join("/"));return new n({name:`${s}/${i}`,version:o,subpath:a})}else{let[s,i]=og(t[0]),o=Nn(t.slice(1).join("/"));return new n({name:s,version:i,subpath:o})}}static fromUrl(e){try{let t=new URL(e),r=new URL(Tt).host,s=new URL(Xr).host;if(t.host===r){let i=ig(t.pathname.replace(/^\/v\d+\//,"/"));if(!i.length)return;let o=i[0].startsWith("@")?`${i[0]}/${i[1]??""}`:i[0];return n.parse(o)}if(t.host===s){let i=t.pathname.split("/npm/")[1];if(!i)return;let o=i.split("/")[0]||"";return n.parse(o)}return}catch{return}}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 n.parse(e).name}withVersion(e){return new n({name:this.name,version:Nn(e),subpath:this.subpath})}static isBare(e){return!e||e.startsWith(".")||e.startsWith("/")?!1:!/^[a-z][a-z0-9+.-]*:/i.test(e)}},Nn=n=>n&&n.length?n:void 0,og=n=>{let e=n.indexOf("@");return e<0?[n,void 0]:[n.slice(0,e),Nn(n.slice(e+1))]}});async function ye(n){try{return await n()}catch{return}}var Zi=v(()=>{});function Gt(n){let e=n||"";return e.startsWith("./")?e.slice(2):e.replace(/^\/+/,"")}function zc(n){return n.startsWith("./")?n:`./${n}`}var es,Gc=v(()=>{Zr();Zi();Qr();es=class{constructor(e,t){this.cache=e,this.http=t,this.pinMs=1e4,this.versionsIndexMs=1440*60*1e3,this.metaTtlMs=10080*60*1e3,this.pinCache=new Map}baseDir(e){let t=typeof e=="string"?new j(e):e;return`${Xr}${t.name}${t.version?`@${t.version}`:""}/`}file(e,t){return new URL(Gt(t),this.baseDir(e)).toString()}packageJson(e){return this.file(e,"package.json")}buildEsmUrl(e,t={}){let{target:r="es2022",bundle:s=!1,external:i}=t,o=new URLSearchParams({target:r});return s&&o.append("bundle",""),i?.length&&o.append("external",i.join(",")),`${Tt}/${e}?${o.toString()}`}async resolveExactVersion(e){let t=Date.now(),r=this.pinCache.get(e);if(r&&t-r.ts<this.pinMs)return r.value;let s=await this.tryResolveFromUrls([this.buildEsmUrl(e),`${Tt}/${e}`]);return this.pinCache.set(e,{value:s,ts:t}),s}async tryResolveFromUrls(e){for(let t of e){let r=await ye(()=>this.http.head(t)),s=this.parseVersionFromUrl(r?.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 r=await ye(()=>this.http.getJson(`${Vc}${encodeURIComponent(e)}`));if(!r?.versions?.length){await this.cache.recordNegative(e);return}await this.cache.clearNegative(e);let s=r.tags&&Object.keys(r.tags).length?r.tags:void 0;return await this.cache.setIndex(e,r.versions,s),{versions:r.versions,distTags:s}}parseVersionFromUrl(e){let t=j.fromUrl(e)?.version;return t&&/\d+\.\d+\.\d+/.test(t)?t:void 0}async fetchPackageMeta(e,t){let r=await this.cache.getMeta(e,t);if(r&&Date.now()-r.updatedAt<this.metaTtlMs){let{dependencies:d,peerDependencies:u,peerDependenciesMeta:f}=r;return{name:e,version:t,dependencies:d,peerDependencies:u,peerDependenciesMeta:f}}let s=this.packageJson(new j(`${e}@${t}`)),i=await ye(()=>this.http.getJson(s));if(!i)return;let o=d=>d&&Object.keys(d).length?d:void 0,a=o(i.dependencies),l=o(i.peerDependencies),c=o(i.peerDependenciesMeta);return await this.cache.setMeta(e,t,a,l,c),{name:e,version:t,dependencies:a,peerDependencies:l,peerDependenciesMeta:c}}}});var ag,ts,Xc,wA,ns,eo=v(()=>{ag=n=>n.startsWith("@types/"),ts=n=>Object.keys(n?.peerDependencies||{}).filter(e=>!ag(e)),Xc=n=>Object.keys(n?.dependencies||{}).filter(e=>!ag(e)),wA=n=>ts(n).filter(e=>!n?.peerDependenciesMeta?.[e]?.optional),ns=class{constructor(e){this.cdn=e}async resolve(e,t){let r=await this.fetchMeta(e),{allRoots:s,autoAddedPeers:i}=await this.expandWithPeers(r,t),o=this.computeFlags(s);return{allRoots:s,flags:o,autoAddedPeers:i}}async fetchMeta(e){return Promise.all(e.map(async({name:t,version:r})=>({name:t,version:r,meta:await this.cdn.fetchPackageMeta(t,r)})))}async expandWithPeers(e,t){let r=new Map(e.map(i=>[i.name,i])),s=[];for(let i of e)for(let o of wA(i.meta))!r.has(o)&&!s.some(a=>a.name===o)&&s.push({name:o,requiredBy:i.name});for(let{name:i,requiredBy:o}of s)try{let a=await t(i),l=await this.cdn.fetchPackageMeta(i,a);r.set(i,{name:i,version:a,meta:l})}catch(a){console.warn(`[typebulb] Failed to resolve peer "${i}" for "${o}":`,a)}return{allRoots:[...r.values()],autoAddedPeers:s.filter(i=>r.has(i.name))}}computeFlags(e){let t=new Set(e.flatMap(i=>ts(i.meta))),r=new Map;for(let i of e)for(let o of Xc(i.meta))r.set(o,(r.get(o)||0)+1);let s=new Set([...r.entries()].filter(([,i])=>i>=2).map(([i])=>i));return new Map(e.map(i=>[i.name,{isPeerRoot:t.has(i.name),hasPeers:ts(i.meta).length>0,isSharedDep:s.has(i.name)}]))}}});var rs,Qc=v(()=>{Zr();Zi();rs=class{constructor(e,t,r){this.cache=e,this.cdn=t,this.semver=r}async learnExactVersion(e){let t=await ye(()=>this.cdn.fetchVersionsIndex(e));if(t?.versions?.length){let r=this.semver.selectBestVersion(t.versions,{distTags:t.distTags});if(r)return r}return this.cdn.resolveExactVersion(e)}async resolveExactForRoot(e,t){if(!t)return this.learnExactVersion(e);let r=await this.cache.getPinnedExact(e,t);if(r){if(this.semver.isExactVersion(r))return r;console.debug("[typebulb] cached version for",e,"is not exact (",r,"); re-resolving from registry")}let s=async o=>{if(o&&this.semver.isExactVersion(o))return await this.cache.setPinnedExact(e,t,o),o},i=await ye(()=>this.cdn.fetchVersionsIndex(e));if(i?.versions?.length){let o=this.semver.selectBestVersion(i.versions,{range:t,distTags:i.distTags});if(o){let a=await s(o);if(a)return a}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 ye(()=>this.cdn.fetchVersionsIndex(e));if(a?.versions?.length){let l=await s(this.semver.selectBestVersion(a.versions,{range:t,distTags:a.distTags}));if(l)return l}}}return s(await this.cdn.resolveExactVersion(`${e}@${t}`))}async effectivePackage(e,t){let r=new j(e),s=r.root(),i=t[s],o=i?await ye(()=>this.resolveExactForRoot(s,i)):void 0;return{effectivePackage:o?r.withVersion(o).format():e,root:s,range:i,pinned:o}}}});import{init as vA,parse as SA}from"es-module-lexer";var In,Zc=v(()=>{Zr();Qr();eo();In=class n{constructor(e,t,r){this.version=e,this.cdn=t,this.peer=r}extractImportsSync(e){let t=new Set;for(let r of n.importPatterns){r.lastIndex=0;for(let s of e.matchAll(r))j.isBare(s[1])&&t.add(s[1])}return Array.from(t)}async extractImports(e){let t=new Set,r=s=>{j.isBare(s)&&t.add(s)};try{await vA;let[s]=SA(e);s.forEach(i=>r(e.slice(i.s,i.e).trim()))}catch{return this.extractImportsSync(e)}return Array.from(t)}async buildImportMap(e,t,r){let s=(await this.extractImports(e)).filter(u=>!r?.has(j.rootOf(u))),i=[...new Set(s.map(j.rootOf))],o=await Promise.all(i.map(async u=>({name:u,version:await this.resolveVersion(u,t)}))),{allRoots:a,flags:l,autoAddedPeers:c}=await this.peer.resolve(o,u=>this.resolveVersion(u,t)),d=this.buildEntries([...s,...c.map(u=>u.name)],a,l);return{importMap:{imports:Object.fromEntries(d)},prefetchUrls:d.map(([,u])=>u)}}async resolveVersion(e,t){let r=t[e],s=await this.version.resolveExactForRoot(e,r);if(!s)throw new Error(`Cannot resolve ${r?`${e}@${r}`:e}: no matching version is published (the package or version may not exist, or the registry was unreachable).`);return s}buildEntries(e,t,r){let s=new Map(t.map(p=>[p.name,p])),i=p=>{let m=s.get(j.rootOf(p));return new j(p).withVersion(m.version).format()},o=new Set([...r.entries()].filter(([,p])=>p.isPeerRoot||p.isSharedDep).map(([p])=>p)),a=new Set(e.filter(p=>p!==j.rootOf(p)).map(j.rootOf)),l=[],c=new Set,d=new Set(e.filter(p=>p===j.rootOf(p))),u=new Set;for(let p of e){let m=j.rootOf(p),h=s.get(m),{isPeerRoot:b,hasPeers:A,isSharedDep:S}=r.get(m),P=a.has(m),_=p!==m,R=!(b||S)&&(P||!A),$=this.singletonDepsOf(h,o),x=_&&d.has(m);x&&u.add(m);let D=x?[...$,m]:$.length?$:void 0;l.push([p,this.cdn.buildEsmUrl(i(p),{bundle:R,external:D})]),c.add(p)}let f=new Set([...o,...u]);for(let p of f)s.has(p)&&(c.has(p)||l.push([p,this.cdn.buildEsmUrl(i(p),{})]),l.push([`${p}/`,`${Tt}/${i(p)}/`]));return l}singletonDepsOf(e,t){return[...new Set([...ts(e.meta),...Xc(e.meta)])].filter(r=>t.has(r))}};In.importPatterns=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g]});import{gt as lg,satisfies as kA,maxSatisfying as cg,major as xA,valid as EA}from"semver";var to,Xt,eu=v(()=>{to=class{cmp(e,t){return e===t?0:lg(e,t)?1:lg(t,e)?-1:0}satisfies(e,t){return!e||!e.trim()?!0:!!kA(t,e,{includePrerelease:!0})}selectBestVersion(e,t){if(!e?.length)return;let r=t?.range?.trim()||"*",s=t?.preferStable??!0,i=t?.distTags?.latest;if(i&&e.includes(i)&&this.satisfies(r,i))return i;if(s){let a=cg(e,r,{includePrerelease:!1});if(a)return a}return cg(e,r,{includePrerelease:!0})??void 0}majorOf(e){return xA(e)}isExactVersion(e){return EA(e)!==null}},Xt=new to});function AA(n){return Math.min(9e5*Math.pow(2,Math.max(0,n-1)),864e5)}var Qt,ug=v(()=>{Zi();Qt=class{constructor(e){this.store=e}async isNegative(e){let t=await ye(()=>this.store.get(e));return!!t&&t.until>Date.now()}async recordNegative(e){let r=((await ye(()=>this.store.get(e)))?.attempts||0)+1;await ye(()=>this.store.set(e,{until:Date.now()+AA(r),attempts:r}))}async clearNegative(e){await ye(()=>this.store.delete(e))}}});function dg(n,e){let t=new es(n,e),r=new ns(t),s=new rs(n,t,Xt);return{packageService:new In(s,t,r),versionResolver:s,cdnClient:t,peerResolver:r}}var nt=v(()=>{Gc();eo();Qc();Zc();eu();Zr();eu();Qr();Gc();eo();Qc();Zc();ug()});import*as tu from"fs/promises";import*as fg from"crypto";function De(n){return fg.createHash("sha1").update(n).digest("hex")}async function rt(n){try{return JSON.parse(await tu.readFile(n,"utf8"))}catch{return}}async function no(n){try{return await tu.readFile(n,"utf8")}catch{return}}var $n=v(()=>{"use strict"});import*as Pt from"fs/promises";import*as st from"path";import*as hg from"os";function Z(){return nu||(nu=OA().catch(()=>et())),nu}function so(n,e){return st.join(TA,De(n),e)}async function OA(){await Pt.mkdir(Ot,{recursive:!0});let n=st.join(Ot,"version.json");if((await rt(n))?.version===pg)return;let t=await Pt.readdir(Ot).catch(()=>[]);await Promise.all(t.map(r=>Pt.rm(st.join(Ot,r),{recursive:!0,force:!0}))),await Pt.writeFile(n,JSON.stringify({version:pg})+`
|
|
362
|
-
`,"utf8")}var
|
|
360
|
+
`)}function ig(n,e){let t=Xr(n,{target:"client",dependencies:e}).filter(r=>r.type==="UNDECLARED_IMPORT");if(t.length)throw new Error(`Lint failed:
|
|
361
|
+
${EA(t)}`)}var og=v(()=>{"use strict";Zi()});var Tt,Qr,Gc,Zr=v(()=>{Tt="https://esm.sh",Qr="https://cdn.jsdelivr.net/npm/",Gc="https://data.jsdelivr.com/v1/package/npm/"});function ag(n){let e=(n||"").replace(/^\/+/,"").replace(/\/+$/,"");return e?e.split("/"):[]}var j,In,lg,es=v(()=>{Zr();j=class n{constructor(e,t,r){let s=typeof e=="string"?n.parse(e):e;this.name=s.name,this.version=In(t??s.version),this.subpath=In(r??s.subpath)}static parse(e){let t=ag(e||"");if(!t.length)return new n({name:""});if(t[0].startsWith("@")){let s=t[0],[i,o]=lg(t[1]??""),a=In(t.slice(2).join("/"));return new n({name:`${s}/${i}`,version:o,subpath:a})}else{let[s,i]=lg(t[0]),o=In(t.slice(1).join("/"));return new n({name:s,version:i,subpath:o})}}static fromUrl(e){try{let t=new URL(e),r=new URL(Tt).host,s=new URL(Qr).host;if(t.host===r){let i=ag(t.pathname.replace(/^\/v\d+\//,"/"));if(!i.length)return;let o=i[0].startsWith("@")?`${i[0]}/${i[1]??""}`:i[0];return n.parse(o)}if(t.host===s){let i=t.pathname.split("/npm/")[1];if(!i)return;let o=i.split("/")[0]||"";return n.parse(o)}return}catch{return}}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 n.parse(e).name}withVersion(e){return new n({name:this.name,version:In(e),subpath:this.subpath})}static isBare(e){return!e||e.startsWith(".")||e.startsWith("/")?!1:!/^[a-z][a-z0-9+.-]*:/i.test(e)}},In=n=>n&&n.length?n:void 0,lg=n=>{let e=n.indexOf("@");return e<0?[n,void 0]:[n.slice(0,e),In(n.slice(e+1))]}});async function ye(n){try{return await n()}catch{return}}var eo=v(()=>{});function Gt(n){let e=n||"";return e.startsWith("./")?e.slice(2):e.replace(/^\/+/,"")}function Xc(n){return n.startsWith("./")?n:`./${n}`}var ts,Qc=v(()=>{es();eo();Zr();ts=class{constructor(e,t){this.cache=e,this.http=t,this.pinMs=1e4,this.versionsIndexMs=1440*60*1e3,this.metaTtlMs=10080*60*1e3,this.pinCache=new Map}baseDir(e){let t=typeof e=="string"?new j(e):e;return`${Qr}${t.name}${t.version?`@${t.version}`:""}/`}file(e,t){return new URL(Gt(t),this.baseDir(e)).toString()}packageJson(e){return this.file(e,"package.json")}buildEsmUrl(e,t={}){let{target:r="es2022",bundle:s=!1,external:i}=t,o=new URLSearchParams({target:r});return s&&o.append("bundle",""),i?.length&&o.append("external",i.join(",")),`${Tt}/${e}?${o.toString()}`}async resolveExactVersion(e){let t=Date.now(),r=this.pinCache.get(e);if(r&&t-r.ts<this.pinMs)return r.value;let s=await this.tryResolveFromUrls([this.buildEsmUrl(e),`${Tt}/${e}`]);return this.pinCache.set(e,{value:s,ts:t}),s}async tryResolveFromUrls(e){for(let t of e){let r=await ye(()=>this.http.head(t)),s=this.parseVersionFromUrl(r?.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 r=await ye(()=>this.http.getJson(`${Gc}${encodeURIComponent(e)}`));if(!r?.versions?.length){await this.cache.recordNegative(e);return}await this.cache.clearNegative(e);let s=r.tags&&Object.keys(r.tags).length?r.tags:void 0;return await this.cache.setIndex(e,r.versions,s),{versions:r.versions,distTags:s}}parseVersionFromUrl(e){let t=j.fromUrl(e)?.version;return t&&/\d+\.\d+\.\d+/.test(t)?t:void 0}async fetchPackageMeta(e,t){let r=await this.cache.getMeta(e,t);if(r&&Date.now()-r.updatedAt<this.metaTtlMs){let{dependencies:d,peerDependencies:u,peerDependenciesMeta:f}=r;return{name:e,version:t,dependencies:d,peerDependencies:u,peerDependenciesMeta:f}}let s=this.packageJson(new j(`${e}@${t}`)),i=await ye(()=>this.http.getJson(s));if(!i)return;let o=d=>d&&Object.keys(d).length?d:void 0,a=o(i.dependencies),l=o(i.peerDependencies),c=o(i.peerDependenciesMeta);return await this.cache.setMeta(e,t,a,l,c),{name:e,version:t,dependencies:a,peerDependencies:l,peerDependenciesMeta:c}}}});var cg,ns,Zc,AA,rs,to=v(()=>{cg=n=>n.startsWith("@types/"),ns=n=>Object.keys(n?.peerDependencies||{}).filter(e=>!cg(e)),Zc=n=>Object.keys(n?.dependencies||{}).filter(e=>!cg(e)),AA=n=>ns(n).filter(e=>!n?.peerDependenciesMeta?.[e]?.optional),rs=class{constructor(e){this.cdn=e}async resolve(e,t){let r=await this.fetchMeta(e),{allRoots:s,autoAddedPeers:i}=await this.expandWithPeers(r,t),o=this.computeFlags(s);return{allRoots:s,flags:o,autoAddedPeers:i}}async fetchMeta(e){return Promise.all(e.map(async({name:t,version:r})=>({name:t,version:r,meta:await this.cdn.fetchPackageMeta(t,r)})))}async expandWithPeers(e,t){let r=new Map(e.map(i=>[i.name,i])),s=[];for(let i of e)for(let o of AA(i.meta))!r.has(o)&&!s.some(a=>a.name===o)&&s.push({name:o,requiredBy:i.name});for(let{name:i,requiredBy:o}of s)try{let a=await t(i),l=await this.cdn.fetchPackageMeta(i,a);r.set(i,{name:i,version:a,meta:l})}catch(a){console.warn(`[typebulb] Failed to resolve peer "${i}" for "${o}":`,a)}return{allRoots:[...r.values()],autoAddedPeers:s.filter(i=>r.has(i.name))}}computeFlags(e){let t=new Set(e.flatMap(i=>ns(i.meta))),r=new Map;for(let i of e)for(let o of Zc(i.meta))r.set(o,(r.get(o)||0)+1);let s=new Set([...r.entries()].filter(([,i])=>i>=2).map(([i])=>i));return new Map(e.map(i=>[i.name,{isPeerRoot:t.has(i.name),hasPeers:ns(i.meta).length>0,isSharedDep:s.has(i.name)}]))}}});var ss,eu=v(()=>{es();eo();ss=class{constructor(e,t,r){this.cache=e,this.cdn=t,this.semver=r}async learnExactVersion(e){let t=await ye(()=>this.cdn.fetchVersionsIndex(e));if(t?.versions?.length){let r=this.semver.selectBestVersion(t.versions,{distTags:t.distTags});if(r)return r}return this.cdn.resolveExactVersion(e)}async resolveExactForRoot(e,t){if(!t)return this.learnExactVersion(e);let r=await this.cache.getPinnedExact(e,t);if(r){if(this.semver.isExactVersion(r))return r;console.debug("[typebulb] cached version for",e,"is not exact (",r,"); re-resolving from registry")}let s=async o=>{if(o&&this.semver.isExactVersion(o))return await this.cache.setPinnedExact(e,t,o),o},i=await ye(()=>this.cdn.fetchVersionsIndex(e));if(i?.versions?.length){let o=this.semver.selectBestVersion(i.versions,{range:t,distTags:i.distTags});if(o){let a=await s(o);if(a)return a}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 ye(()=>this.cdn.fetchVersionsIndex(e));if(a?.versions?.length){let l=await s(this.semver.selectBestVersion(a.versions,{range:t,distTags:a.distTags}));if(l)return l}}}return s(await this.cdn.resolveExactVersion(`${e}@${t}`))}async effectivePackage(e,t){let r=new j(e),s=r.root(),i=t[s],o=i?await ye(()=>this.resolveExactForRoot(s,i)):void 0;return{effectivePackage:o?r.withVersion(o).format():e,root:s,range:i,pinned:o}}}});import{init as TA,parse as OA}from"es-module-lexer";var Nn,tu=v(()=>{es();Zr();to();Nn=class n{constructor(e,t,r){this.version=e,this.cdn=t,this.peer=r}extractImportsSync(e){let t=new Set;for(let r of n.importPatterns){r.lastIndex=0;for(let s of e.matchAll(r))j.isBare(s[1])&&t.add(s[1])}return Array.from(t)}async extractImports(e){let t=new Set,r=s=>{j.isBare(s)&&t.add(s)};try{await TA;let[s]=OA(e);s.forEach(i=>r(e.slice(i.s,i.e).trim()))}catch{return this.extractImportsSync(e)}return Array.from(t)}async buildImportMap(e,t,r){let s=(await this.extractImports(e)).filter(u=>!r?.has(j.rootOf(u))),i=[...new Set(s.map(j.rootOf))],o=await Promise.all(i.map(async u=>({name:u,version:await this.resolveVersion(u,t)}))),{allRoots:a,flags:l,autoAddedPeers:c}=await this.peer.resolve(o,u=>this.resolveVersion(u,t)),d=this.buildEntries([...s,...c.map(u=>u.name)],a,l);return{importMap:{imports:Object.fromEntries(d)},prefetchUrls:d.map(([,u])=>u)}}async resolveVersion(e,t){let r=t[e],s=await this.version.resolveExactForRoot(e,r);if(!s)throw new Error(`Cannot resolve ${r?`${e}@${r}`:e}: no matching version is published (the package or version may not exist, or the registry was unreachable).`);return s}buildEntries(e,t,r){let s=new Map(t.map(p=>[p.name,p])),i=p=>{let m=s.get(j.rootOf(p));return new j(p).withVersion(m.version).format()},o=new Set([...r.entries()].filter(([,p])=>p.isPeerRoot||p.isSharedDep).map(([p])=>p)),a=new Set(e.filter(p=>p!==j.rootOf(p)).map(j.rootOf)),l=[],c=new Set,d=new Set(e.filter(p=>p===j.rootOf(p))),u=new Set;for(let p of e){let m=j.rootOf(p),h=s.get(m),{isPeerRoot:y,hasPeers:A,isSharedDep:S}=r.get(m),P=a.has(m),C=p!==m,R=!(y||S)&&(P||!A),$=this.singletonDepsOf(h,o),x=C&&d.has(m);x&&u.add(m);let D=x?[...$,m]:$.length?$:void 0;l.push([p,this.cdn.buildEsmUrl(i(p),{bundle:R,external:D})]),c.add(p)}let f=new Set([...o,...u]);for(let p of f)s.has(p)&&(c.has(p)||l.push([p,this.cdn.buildEsmUrl(i(p),{})]),l.push([`${p}/`,`${Tt}/${i(p)}/`]));return l}singletonDepsOf(e,t){return[...new Set([...ns(e.meta),...Zc(e.meta)])].filter(r=>t.has(r))}};Nn.importPatterns=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g]});import{gt as ug,satisfies as PA,maxSatisfying as dg,major as CA,valid as _A}from"semver";var no,Xt,nu=v(()=>{no=class{cmp(e,t){return e===t?0:ug(e,t)?1:ug(t,e)?-1:0}satisfies(e,t){return!e||!e.trim()?!0:!!PA(t,e,{includePrerelease:!0})}selectBestVersion(e,t){if(!e?.length)return;let r=t?.range?.trim()||"*",s=t?.preferStable??!0,i=t?.distTags?.latest;if(i&&e.includes(i)&&this.satisfies(r,i))return i;if(s){let a=dg(e,r,{includePrerelease:!1});if(a)return a}return dg(e,r,{includePrerelease:!0})??void 0}majorOf(e){return CA(e)}isExactVersion(e){return _A(e)!==null}},Xt=new no});function RA(n){return Math.min(9e5*Math.pow(2,Math.max(0,n-1)),864e5)}var Qt,fg=v(()=>{eo();Qt=class{constructor(e){this.store=e}async isNegative(e){let t=await ye(()=>this.store.get(e));return!!t&&t.until>Date.now()}async recordNegative(e){let r=((await ye(()=>this.store.get(e)))?.attempts||0)+1;await ye(()=>this.store.set(e,{until:Date.now()+RA(r),attempts:r}))}async clearNegative(e){await ye(()=>this.store.delete(e))}}});function pg(n,e){let t=new ts(n,e),r=new rs(t),s=new ss(n,t,Xt);return{packageService:new Nn(s,t,r),versionResolver:s,cdnClient:t,peerResolver:r}}var nt=v(()=>{Qc();to();eu();tu();nu();es();nu();Zr();Qc();to();eu();tu();fg()});import*as ru from"fs/promises";import*as hg from"crypto";function De(n){return hg.createHash("sha1").update(n).digest("hex")}async function rt(n){try{return JSON.parse(await ru.readFile(n,"utf8"))}catch{return}}async function ro(n){try{return await ru.readFile(n,"utf8")}catch{return}}var $n=v(()=>{"use strict"});import*as Pt from"fs/promises";import*as st from"path";import*as gg from"os";function Z(){return su||(su=NA().catch(()=>et())),su}function io(n,e){return st.join(IA,De(n),e)}async function NA(){await Pt.mkdir(Ot,{recursive:!0});let n=st.join(Ot,"version.json");if((await rt(n))?.version===mg)return;let t=await Pt.readdir(Ot).catch(()=>[]);await Promise.all(t.map(r=>Pt.rm(st.join(Ot,r),{recursive:!0,force:!0}))),await Pt.writeFile(n,JSON.stringify({version:mg})+`
|
|
362
|
+
`,"utf8")}var mg,Ot,is,os,so,IA,su,Ln=v(()=>{"use strict";$n();At();mg=1,Ot=st.join(gg.homedir(),".typebulb","cache"),is=st.join(Ot,"packages"),os=st.join(Ot,"proxy"),so=st.join(Ot,"dts"),IA=st.join(Ot,"emit")});import*as Ct from"fs/promises";import*as yg from"path";async function Te(n,e){let t=`${n}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;try{await Ct.mkdir(yg.dirname(n),{recursive:!0}),await Ct.writeFile(t,e,"utf8")}catch{et();return}await Ct.rename(t,n).catch(async()=>{await Ct.rm(t,{force:!0}).catch(()=>{})})}var as=v(()=>{"use strict";At()});var Mn,iu=v(()=>{"use strict";as();$n();Mn=class{constructor(e){this.filePath=e}mem;loadPromise;load(){return this.mem?Promise.resolve(this.mem):(this.loadPromise||(this.loadPromise=rt(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 r=await this.load();r.set(e,t),await this.persist(r)}async delete(e){let t=await this.load();t.delete(e)&&await this.persist(t)}async persist(e){await Te(this.filePath,JSON.stringify(Object.fromEntries(e)))}}});import*as vg from"fs/promises";import*as je from"path";function wg(n,e){return je.join($A,oo(n),encodeURIComponent(e)+".json")}function oo(n){return n.replace(/\//g,"__")}var ou,bg,$A,LA,ao,Sg=v(()=>{"use strict";nt();Ln();as();iu();$n();ou=je.join(is,"indexes"),bg=je.join(is,"pinned"),$A=je.join(is,"meta"),LA=je.join(is,"negative.json"),ao=class{pinnedMem=new Map;indexMem=new Map;metaMem=new Map;negativeCache=new Qt(new Mn(LA));async getPinnedExact(e,t){let r=`${e}@${t}`;if(this.pinnedMem.has(r))return this.pinnedMem.get(r);await Z();let s=await ro(je.join(bg,De(r)+".txt"));return this.pinnedMem.set(r,s),s}async setPinnedExact(e,t,r){let s=`${e}@${t}`;this.pinnedMem.set(s,r),await Z(),await Te(je.join(bg,De(s)+".txt"),r)}async getIndex(e){if(this.indexMem.has(e))return this.indexMem.get(e);await Z();let t=await rt(je.join(ou,oo(e)+".json"));return this.indexMem.set(e,t),t}async setIndex(e,t,r){let s={versions:t,distTags:r,updatedAt:Date.now()};this.indexMem.set(e,s),await Z(),await Te(je.join(ou,oo(e)+".json"),JSON.stringify(s))}async invalidateVersionsCache(e){this.indexMem.delete(e),await vg.rm(je.join(ou,oo(e)+".json"),{force:!0}).catch(()=>{})}async isNegative(e){return await Z(),this.negativeCache.isNegative(e)}async recordNegative(e){await Z(),await this.negativeCache.recordNegative(e)}async clearNegative(e){await this.negativeCache.clearNegative(e)}async getMeta(e,t){let r=`${e}@${t}`;if(this.metaMem.has(r))return this.metaMem.get(r);await Z();let s=await rt(wg(e,t));return this.metaMem.set(r,s),s}async setMeta(e,t,r,s,i){let o={dependencies:r,peerDependencies:s,peerDependenciesMeta:i,updatedAt:Date.now()};this.metaMem.set(`${e}@${t}`,o),await Z(),await Te(wg(e,t),JSON.stringify(o))}}});var kg,xg=v(()=>{"use strict";kg={async getJson(n){try{let e=await fetch(n,{redirect:"follow"});return e.ok?await e.json():void 0}catch{return}},async head(n){try{let e=await fetch(n,{method:"HEAD",redirect:"follow"});return{ok:e.ok,url:e.url}}catch{return}}}});var MA,lo,Eg,Ag,j$,au=v(()=>{"use strict";nt();Sg();xg();MA=new ao,{packageService:lo,versionResolver:Eg,cdnClient:Ag,peerResolver:j$}=pg(MA,kg)});function co(n){return n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function uo(n,e){return` <script>
|
|
363
363
|
(function() {
|
|
364
364
|
try {
|
|
365
|
-
var KEY = ${
|
|
365
|
+
var KEY = ${_t(JSON.stringify("tb-theme:"+n))};
|
|
366
366
|
var doc = document.documentElement;
|
|
367
367
|
var mq = window.matchMedia('(prefers-color-scheme: dark)');
|
|
368
368
|
var os = function() { return mq.matches ? 'dark' : 'light'; };
|
|
369
|
-
var FORCED = ${
|
|
369
|
+
var FORCED = ${_t(JSON.stringify(e??null))};
|
|
370
370
|
var stored = function() {
|
|
371
371
|
try { var v = localStorage.getItem(KEY); return (v === 'dark' || v === 'light') ? v : undefined; }
|
|
372
372
|
catch (e) { return undefined; }
|
|
@@ -404,7 +404,7 @@ ${bA(t)}`)}var sg=v(()=>{"use strict";Qi()});var Tt,Xr,Vc,Qr=v(()=>{Tt="https://
|
|
|
404
404
|
});
|
|
405
405
|
} catch (e) {}
|
|
406
406
|
})();
|
|
407
|
-
</script>`}var
|
|
407
|
+
</script>`}var _t,fo,po=v(()=>{"use strict";ne();_t=n=>n.replace(/<\/script/gi,"<\\/script");fo=`
|
|
408
408
|
const es = new EventSource('/__reload');
|
|
409
409
|
let bootId = null;
|
|
410
410
|
let firstErrorAt = 0;
|
|
@@ -421,7 +421,7 @@ ${bA(t)}`)}var sg=v(()=>{"use strict";Qi()});var Tt,Xr,Vc,Qr=v(()=>{Tt="https://
|
|
|
421
421
|
es.onerror = () => {
|
|
422
422
|
if (!firstErrorAt) firstErrorAt = Date.now();
|
|
423
423
|
if (Date.now() - firstErrorAt > RETRY_WINDOW_MS) es.close();
|
|
424
|
-
};`});var
|
|
424
|
+
};`});var Tg,Og=v(()=>{"use strict";po();ne();Tg=`
|
|
425
425
|
(() => {
|
|
426
426
|
// Inline (bulb-in-a-bulb): runs inside a sandboxed iframe with no parent
|
|
427
427
|
// bridge, so privileged tb.* (AI, fs, server RPC) can't reach a host and would
|
|
@@ -1219,7 +1219,7 @@ ${bA(t)}`)}var sg=v(()=>{"use strict";Qi()});var Tt,Xr,Vc,Qr=v(()=>{Tt="https://
|
|
|
1219
1219
|
// origin, not an inline bulb); a srcdoc inline bulb or a file:// static export has no server, so onMessage just
|
|
1220
1220
|
// stays inert there. Opening it independent of watch is what lets send reach a --no-watch page.
|
|
1221
1221
|
if (!isFramed && location.protocol.indexOf('http') === 0) {
|
|
1222
|
-
${
|
|
1222
|
+
${fo}
|
|
1223
1223
|
es.addEventListener('message', async (e) => {
|
|
1224
1224
|
// Wire envelope { id?, payload } (JSON \u2014 SSE-line-safe). tb:* payloads are the shim's reserved
|
|
1225
1225
|
// namespace (TB-Interrogation.md): answered by a built-in handler, never delivered to
|
|
@@ -1265,14 +1265,14 @@ ${uo}
|
|
|
1265
1265
|
});
|
|
1266
1266
|
}
|
|
1267
1267
|
})();
|
|
1268
|
-
`});function
|
|
1269
|
-
`+
|
|
1268
|
+
`});function Pg(n){let{name:e,code:t,css:r,html:s,data:i,insight:o,importMap:a,theme:l,inline:c,dir:d,source:u,compileError:f}=n,p=s.trim()||'<div id="app"></div>',m=c?"":`
|
|
1269
|
+
`+Pc,h={imports:UA(a.imports)};return`<!DOCTYPE html>
|
|
1270
1270
|
<html>
|
|
1271
1271
|
<head>
|
|
1272
1272
|
<meta charset="utf-8">
|
|
1273
1273
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
1274
|
-
<title>${
|
|
1275
|
-
${
|
|
1274
|
+
<title>${co(e)} - typebulb</title>
|
|
1275
|
+
${uo(e,l)}
|
|
1276
1276
|
<script type="importmap">
|
|
1277
1277
|
${JSON.stringify(h,null,2)}
|
|
1278
1278
|
</script>
|
|
@@ -1286,25 +1286,25 @@ ${r}
|
|
|
1286
1286
|
<body>
|
|
1287
1287
|
${p}
|
|
1288
1288
|
|
|
1289
|
-
${i.length>0?`<script>window.__TB_DATA__ = ${
|
|
1290
|
-
${o?`<script>window.__TB_INSIGHT__ = ${
|
|
1291
|
-
${d?`<script>window.__TB_DIR__ = ${
|
|
1292
|
-
${f?`<script>window.__TB_COMPILE_ERROR__ = ${
|
|
1289
|
+
${i.length>0?`<script>window.__TB_DATA__ = ${_t(JSON.stringify(i))};</script>`:""}
|
|
1290
|
+
${o?`<script>window.__TB_INSIGHT__ = ${_t(JSON.stringify(o))};</script>`:""}
|
|
1291
|
+
${d?`<script>window.__TB_DIR__ = ${_t(JSON.stringify(d))};</script>`:""}
|
|
1292
|
+
${f?`<script>window.__TB_COMPILE_ERROR__ = ${_t(JSON.stringify(f))};</script>`:""}
|
|
1293
1293
|
|
|
1294
1294
|
<script>
|
|
1295
|
-
${
|
|
1295
|
+
${Tg}
|
|
1296
1296
|
</script>
|
|
1297
1297
|
|
|
1298
|
-
${
|
|
1298
|
+
${FA}
|
|
1299
1299
|
|
|
1300
|
-
${
|
|
1300
|
+
${DA(t,u)}
|
|
1301
1301
|
</body>
|
|
1302
|
-
</html>`}function
|
|
1303
|
-
`);return`<script type="module">${s}${
|
|
1304
|
-
</script>`}function
|
|
1302
|
+
</html>`}function DA(n,e){let t=["",...BA],r=e?Array(Math.max(0,e.codeLine-t.length-1)).fill(""):[],s=[...t,...r,_t(n)].join(`
|
|
1303
|
+
`);return`<script type="module">${s}${jA(e,s)}
|
|
1304
|
+
</script>`}function jA(n,e){if(!n)return"";let t=e.split(`
|
|
1305
1305
|
`).length,r={version:3,file:n.file,sources:[`/__source/${n.file}`],names:[],mappings:["AAAA",...Array(Math.max(0,t-1)).fill("AACA")].join(";")};return`
|
|
1306
1306
|
//# sourceURL=${n.file.replace(/\s/g,"%20")}
|
|
1307
|
-
//# sourceMappingURL=data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(r))}`}function
|
|
1307
|
+
//# sourceMappingURL=data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(r))}`}function UA(n){let e={};for(let[t,r]of Object.entries(n))e[t]=r.startsWith("https://")?"/proxy/"+r:r;return e}var BA,FA,Cg=v(()=>{"use strict";Og();po();BA=["globalThis.__tbEntryRan = true; /* import graph resolved \u2014 the load-failure backstop's signal (imports hoist above this line) */","await globalThis.__tbBoot; /* #tb= fragment restore, set by the shim when present (TB-Inference.md) */"];FA=`<script>
|
|
1308
1308
|
(function () {
|
|
1309
1309
|
var framed = window.parent !== window;
|
|
1310
1310
|
var post = function (m) { try { parent.postMessage(m, '*'); } catch (e) {} }; /* framed only */
|
|
@@ -1403,22 +1403,22 @@ ${NA(t,u)}
|
|
|
1403
1403
|
}
|
|
1404
1404
|
});
|
|
1405
1405
|
})();
|
|
1406
|
-
</script>`});import*as
|
|
1407
|
-
Use a plain name with an exact / caret / tilde range (e.g. three@^0.160.0).`);await
|
|
1406
|
+
</script>`});import*as mo from"fs/promises";import*as ho from"path";import{existsSync as _g,readFileSync as qA}from"fs";import{execFile as JA}from"child_process";import{promisify as KA}from"util";import{builtinModules as WA}from"node:module";import{satisfies as HA}from"semver";async function go(n,e,t,r){let i=n.map(c=>GA(c,t)).filter(c=>!XA(c,e));if(i.length===0)return;let o=i.filter(c=>!zA.test(c));if(o.length)throw new Error(`Refusing to install npm spec(s) with unsupported characters: ${o.join(", ")}
|
|
1407
|
+
Use a plain name with an exact / caret / tilde range (e.g. three@^0.160.0).`);await mo.mkdir(e,{recursive:!0});let a=ho.join(e,"package.json");_g(a)||await mo.writeFile(a,JSON.stringify({name:"typebulb-server",private:!0})),console.log(` Installing: ${i.join(", ")}`);let l=["--no-audit","--no-fund",...r?.ignoreScripts?["--ignore-scripts"]:[]];await YA("npm",["install",...l,...i],{cwd:e,shell:!0})}function GA(n,e){if(!e||j.parse(n).version)return n;let t=e[n];return t?`${n}@${t}`:n}function XA(n,e){let{name:t,version:r}=j.parse(n),s=ho.join(e,"node_modules",t);if(!_g(s))return!1;if(!r)return!0;try{let i=JSON.parse(qA(ho.join(s,"package.json"),"utf-8")).version;return HA(i,r)}catch{return!1}}function yo(n){let e=new Set,t=/\bimport\s+(?:[\s\S]*?\s+from\s+)?['"]([^./][^'"]*)['"]/g,r;for(;r=t.exec(n);){let s=r[1];if(s.includes(":"))continue;let i=j.rootOf(s);VA.has(i)||e.add(i)}return[...e]}var YA,VA,zA,lu=v(()=>{"use strict";nt();YA=KA(JA),VA=new Set(WA),zA=/^(@[a-z0-9._-]+\/)?[a-z0-9._-]+(@[a-zA-Z0-9.^~*x-]+)?$/i});var Rg,Ig,Ye,Zt=v(()=>{Rg=n=>n!=null&&n>=0&&n<=4?n:void 0,Ig=(n,e)=>{let t={...n};for(let r of["input","output","reasoning","cacheRead"])e[r]!==void 0&&(t[r]=e[r]);return t},Ye=n=>n===void 0||n.input===void 0&&n.output===void 0?void 0:{input:n.input??0,output:n.output??0,reasoning:n.reasoning,cacheRead:n.cacheRead}});var ve,Fe,Bn=v(()=>{ve=class extends Error{constructor(e,t="unknown",r=!1){super(e),this.code=t,this.retryable=r}},Fe=class{getPath(e,t){return this.path}parseError(e,t){return this.parseJsonError(e,t)}parseStreamChunk(e){return this.checkAndThrowError(e),this.parseProviderStreamChunk(e)}extractSystemMessages(e,t=`
|
|
1408
1408
|
|
|
1409
|
-
`){let r=e.filter(s=>s.role==="system").map(s=>s.content);return{system:r.length?r.join(t):void 0,conversationMessages:e.filter(s=>s.role!=="system")}}parseJsonError(e,t){if(!e)return{message:`HTTP ${t}`};try{let r=JSON.parse(e);return r.error&&typeof r.error=="object"?{message:r.error.message||`HTTP ${t}`,type:r.error.type}:r.message?{message:r.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 r=t.code||"unknown";throw new ve(t.message,r,!!t.retryable)}if(t.error){let r=t.error,s=typeof r=="object"&&r!==null?String(r.type??r.code??""):"",i=/rate_limit|too_many_requests/i.test(s),o=/overloaded|server_error|unavailable/i.test(s),a=/context_length/i.test(s);throw new ve(this.extractErrorMessage(t.error),i?"rate_limit":a?"context_exceeded":"unknown",i||o)}}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
|
|
1409
|
+
`){let r=e.filter(s=>s.role==="system").map(s=>s.content);return{system:r.length?r.join(t):void 0,conversationMessages:e.filter(s=>s.role!=="system")}}parseJsonError(e,t){if(!e)return{message:`HTTP ${t}`};try{let r=JSON.parse(e);return r.error&&typeof r.error=="object"?{message:r.error.message||`HTTP ${t}`,type:r.error.type}:r.message?{message:r.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 r=t.code||"unknown";throw new ve(t.message,r,!!t.retryable)}if(t.error){let r=t.error,s=typeof r=="object"&&r!==null?String(r.type??r.code??""):"",i=/rate_limit|too_many_requests/i.test(s),o=/overloaded|server_error|unavailable/i.test(s),a=/context_length/i.test(s);throw new ve(this.extractErrorMessage(t.error),i?"rate_limit":a?"context_exceeded":"unknown",i||o)}}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 bo,cu=v(()=>{Zt();Bn();bo=class extends Fe{constructor(){super(...arguments),this.providerName="OpenAI",this.defaultBaseUrl="https://api.openai.com",this.path="/v1/responses",this.effortMap={0:"none",1:"low",2:"medium",3:"high",4:"xhigh"}}buildHeaders(e){return{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"}}buildPayload(e,t,r,s){let i=this.convertMessagesToInput(e),o={model:t,input:i,stream:s};if(r?.webSearch===!0&&(o.tools=[{type:"web_search"}]),r?.effort!==void 0){let a=this.effortMap[r.effort];o.reasoning=a==="none"?{effort:a}:{effort:a,summary:"auto"}}return r?.maxOutputTokens!==void 0&&(o.max_output_tokens=r.maxOutputTokens),o}parseNonStreamingResponse(e){if(!this.isResponsesApiResponse(e))return{text:""};let t=e.output_text||"",r;if(e.output&&Array.isArray(e.output))for(let s of e.output)s.type==="reasoning"&&s.summary&&(r=s.summary.map(i=>i.text).join(`
|
|
1410
1410
|
`)),!t&&s.type==="message"&&s.content&&(t=s.content.filter(i=>i.type==="output_text").map(i=>i.text).join(""));return{text:t,reasoning:r,usage:this.mapUsage(e.usage)}}parseProviderStreamChunk(e){if(!this.isResponsesApiEvent(e))return null;switch(e.type){case"response.failed":{let r=e.response?.error,s=r?.message||"Response failed",i=r?.code==="insufficient_quota"||r?.code==="rate_limit_exceeded";throw new ve(s,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.completed":{let t=this.mapUsage(e.response?.usage);return t?{usage:t}:null}default:return null}}mapUsage(e){if(e)return Ye({input:e.input_tokens,output:e.output_tokens,reasoning:e.output_tokens_details?.reasoning_tokens,cacheRead:e.input_tokens_details?.cached_tokens})}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(`
|
|
1411
1411
|
|
|
1412
|
-
`)}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 Dn,
|
|
1412
|
+
`)}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 Dn,wo=v(()=>{Zt();Bn();Dn=class extends Fe{parseNonStreamingResponse(e){if(!this.hasChoices(e))return{text:""};let t=e,r=t.choices[0],s=r?.message,i=s?.content??r?.text??"",o=s?.reasoning??s?.reasoning_content??t.reasoning;return{text:i,reasoning:o,usage:this.mapUsage(t.usage)}}parseProviderStreamChunk(e){if(!this.hasChoices(e))return null;let t=e,r=this.mapUsage(t.usage),s=t.choices[0]?.delta||t.choices[0]?.message,i=s?.content||void 0,o=s?.reasoning||s?.reasoning_content||void 0;return!i&&!o&&!r?null:{text:i,reasoning:o,usage:r}}hasChoices(e){return typeof e=="object"&&e!==null&&"choices"in e&&Array.isArray(e.choices)}mapUsage(e){if(e)return Ye({input:e.prompt_tokens,output:e.completion_tokens,reasoning:e.completion_tokens_details?.reasoning_tokens,cacheRead:e.prompt_tokens_details?.cached_tokens})}}});var vo,uu=v(()=>{wo();vo=class extends Dn{constructor(){super(...arguments),this.providerName="OpenRouter",this.defaultBaseUrl="https://openrouter.ai",this.path="/api/v1/chat/completions",this.effortMap={0:"none",1:"low",2:"medium",3:"high",4:"xhigh"}}buildHeaders(e,t){let r={Authorization:`Bearer ${e}`,"x-api-key":e,"Content-Type":"application/json",Accept:"application/json","X-Title":"Typebulb"};return t&&(r["HTTP-Referer"]=t,r.Referer=t,r.Origin=t),r}buildPayload(e,t,r,s){let i={model:t,messages:e,stream:s};s&&(i.stream_options={include_usage:!0}),r?.webSearch===!0&&(i.plugins=[{id:"web"}]);let o=r?.effort;return o!==void 0&&(i.reasoning={effort:this.effortMap[o]}),r?.maxOutputTokens!==void 0&&(i.max_tokens=r.maxOutputTokens),i}}});var So,du=v(()=>{Zt();Bn();So=class extends Fe{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,r,s){let{system:i,conversationMessages:o}=this.extractSystemMessages(e),a={model:t,max_tokens:Math.min(this.getMaxTokens(t),r?.maxOutputTokens??1/0),messages:this.withTailMessagesCached(o),stream:s};r?.webSearch===!0&&(a.tools=[{type:"web_search_20250305",name:"web_search"}]),i&&(a.system=[{type:"text",text:i,cache_control:{type:"ephemeral"}}]);let l=r?.effort;if(l!==void 0){if(this.isModernModel(t))if(l===0)this.alwaysThinks(t)||(a.thinking={type:"disabled"}),a.output_config={effort:"low"};else{let c={1:"low",2:"medium",3:"high",4:"max"};a.thinking={type:"adaptive",display:"summarized"},a.output_config={effort:c[l]}}else if(l!==0){let c={1:2048,2:4096,3:8192,4:16384};a.thinking={type:"enabled",budget_tokens:c[l]}}}return a}parseNonStreamingResponse(e){if(!this.isAnthropicResponse(e))return{text:""};let t=e.content.filter(s=>s.type==="text").map(s=>s.text).join(""),r=e.content.filter(s=>s.type==="thinking").map(s=>s.thinking).join(`
|
|
1413
1413
|
|
|
1414
|
-
`);return{text:t,reasoning:r||void 0,usage:Ye(this.mapUsage(e.usage))}}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":{let t=this.mapUsage(e.message?.usage);return t?{usage:t}:null}case"message_delta":{let t=this.mapUsage(e.usage);return t?{usage:t}:null}default:return null}}mapUsage(e){if(typeof e!="object"||e===null)return;let t=e,r=c=>typeof c=="number"?c:void 0,s=r(t.input_tokens),i=r(t.cache_read_input_tokens),o=r(t.cache_creation_input_tokens),a=r(t.output_tokens),l=s!==void 0||i!==void 0||o!==void 0?(s??0)+(i??0)+(o??0):void 0;if(!(l===void 0&&a===void 0))return{input:l,output:a,cacheRead:i}}withTailMessagesCached(e){let t=Math.max(0,e.length-2);return e.map((r,s)=>s>=t?{role:r.role,content:[{type:"text",text:r.content,cache_control:{type:"ephemeral"}}]}:r)}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-[a-z]+-(\d+)(?:-(\d+))?/i);if(!t)return!1;let r=+t[1],s=t[2]?+t[2]:0;return r>4||r===4&&s>=6}alwaysThinks(e){return/^claude-(fable|mythos)\b/i.test(e)}getMaxTokens(e){return this.isModernModel(e)?64e3:32e3}}});var
|
|
1414
|
+
`);return{text:t,reasoning:r||void 0,usage:Ye(this.mapUsage(e.usage))}}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":{let t=this.mapUsage(e.message?.usage);return t?{usage:t}:null}case"message_delta":{let t=this.mapUsage(e.usage);return t?{usage:t}:null}default:return null}}mapUsage(e){if(typeof e!="object"||e===null)return;let t=e,r=c=>typeof c=="number"?c:void 0,s=r(t.input_tokens),i=r(t.cache_read_input_tokens),o=r(t.cache_creation_input_tokens),a=r(t.output_tokens),l=s!==void 0||i!==void 0||o!==void 0?(s??0)+(i??0)+(o??0):void 0;if(!(l===void 0&&a===void 0))return{input:l,output:a,cacheRead:i}}withTailMessagesCached(e){let t=Math.max(0,e.length-2);return e.map((r,s)=>s>=t?{role:r.role,content:[{type:"text",text:r.content,cache_control:{type:"ephemeral"}}]}:r)}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-[a-z]+-(\d+)(?:-(\d+))?/i);if(!t)return!1;let r=+t[1],s=t[2]?+t[2]:0;return r>4||r===4&&s>=6}alwaysThinks(e){return/^claude-(fable|mythos)\b/i.test(e)}getMaxTokens(e){return this.isModernModel(e)?64e3:32e3}}});var ko,fu=v(()=>{Zt();Bn();ko=class extends Fe{constructor(){super(...arguments),this.providerName="Gemini",this.defaultBaseUrl="https://generativelanguage.googleapis.com",this.path="/v1beta/models",this.budgetMap={0:0,1:1024,2:8192,3:-1,4:-1}}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,r,s){let{system:i,conversationMessages:o}=this.extractSystemMessages(e,`
|
|
1415
1415
|
`),l={contents:o.map(d=>({role:d.role==="assistant"?"model":"user",parts:[{text:d.content}]}))};r?.webSearch===!0&&(l.tools=[{google_search:{}}]),i&&(l.systemInstruction={role:"system",parts:[{text:i}]});let c=r?.effort;if(c!==void 0){let d=this.geminiVersion(t),u=d!==null&&d>=3?{thinkingLevel:this.thinkingLevelFor(d,c)}:{thinkingBudget:this.budgetMap[c]};l.generationConfig={thinkingConfig:c===0?u:{includeThoughts:!0,...u}}}return r?.maxOutputTokens!==void 0&&(l.generationConfig={...l.generationConfig,maxOutputTokens:r.maxOutputTokens}),l}parseError(e,t){if(!e)return{message:`HTTP ${t}`};try{let r=JSON.parse(e),s=Array.isArray(r)?r[0]?.error:r?.error;return s&&typeof s=="object"?{message:(s.message||`HTTP ${t}`).split(`
|
|
1416
|
-
`)[0],type:s.status,code:s.code?.toString()}:r.message?{message:r.message}:{message:e}}catch{return{message:e}}}parseNonStreamingResponse(e){if(this.checkAndThrowError(e),this.checkGeminiError(e),!this.isGeminiResponse(e))return{text:"",status:"failed",error:"Invalid response format"};let t=this.extractParts(e).text||"",r=e.candidates?.[0]?.finishReason,s="complete";return r==="MAX_TOKENS"?s="interrupted":(r==="SAFETY"||r==="RECITATION")&&(s="failed"),{text:t,status:s,usage:this.mapUsage(e.usageMetadata)}}parseProviderStreamChunk(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return null;let t=this.extractParts(e),r=this.mapUsage(e.usageMetadata);return r&&(t.usage=r),t.text||t.reasoning||t.usage?t:null}mapUsage(e){if(!e)return;let t=e.candidatesTokenCount!==void 0||e.thoughtsTokenCount!==void 0;return Ye({input:e.promptTokenCount,output:t?(e.candidatesTokenCount??0)+(e.thoughtsTokenCount??0):void 0,reasoning:e.thoughtsTokenCount,cacheRead:e.cachedContentTokenCount})}geminiVersion(e){let t=e.match(/^gemini-(\d+(?:\.\d+)?)/);return t?Number(t[1]):null}thinkingLevelFor(e,t){let r=["minimal","low","medium","high","high"][t];return r==="minimal"&&e<3.5?"low":r}isGeminiResponse(e){return typeof e=="object"&&e!==null&&"candidates"in e&&Array.isArray(e.candidates)}extractParts(e){let t=e.candidates?.[0]?.content?.parts;if(!t)return{};let r="",s="";for(let i of t)i.text&&(i.thought?s+=i.text:r+=i.text);return{text:r||void 0,reasoning:s||void 0}}checkGeminiError(e){if(this.isGeminiResponse(e)&&e.promptFeedback?.blockReason){let t=e.promptFeedback.blockReason;throw new ve(`Prompt blocked: ${t}`)}}}});var
|
|
1416
|
+
`)[0],type:s.status,code:s.code?.toString()}:r.message?{message:r.message}:{message:e}}catch{return{message:e}}}parseNonStreamingResponse(e){if(this.checkAndThrowError(e),this.checkGeminiError(e),!this.isGeminiResponse(e))return{text:"",status:"failed",error:"Invalid response format"};let t=this.extractParts(e).text||"",r=e.candidates?.[0]?.finishReason,s="complete";return r==="MAX_TOKENS"?s="interrupted":(r==="SAFETY"||r==="RECITATION")&&(s="failed"),{text:t,status:s,usage:this.mapUsage(e.usageMetadata)}}parseProviderStreamChunk(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return null;let t=this.extractParts(e),r=this.mapUsage(e.usageMetadata);return r&&(t.usage=r),t.text||t.reasoning||t.usage?t:null}mapUsage(e){if(!e)return;let t=e.candidatesTokenCount!==void 0||e.thoughtsTokenCount!==void 0;return Ye({input:e.promptTokenCount,output:t?(e.candidatesTokenCount??0)+(e.thoughtsTokenCount??0):void 0,reasoning:e.thoughtsTokenCount,cacheRead:e.cachedContentTokenCount})}geminiVersion(e){let t=e.match(/^gemini-(\d+(?:\.\d+)?)/);return t?Number(t[1]):null}thinkingLevelFor(e,t){let r=["minimal","low","medium","high","high"][t];return r==="minimal"&&e<3.5?"low":r}isGeminiResponse(e){return typeof e=="object"&&e!==null&&"candidates"in e&&Array.isArray(e.candidates)}extractParts(e){let t=e.candidates?.[0]?.content?.parts;if(!t)return{};let r="",s="";for(let i of t)i.text&&(i.thought?s+=i.text:r+=i.text);return{text:r||void 0,reasoning:s||void 0}}checkGeminiError(e){if(this.isGeminiResponse(e)&&e.promptFeedback?.blockReason){let t=e.promptFeedback.blockReason;throw new ve(`Prompt blocked: ${t}`)}}}});var xo,pu=v(()=>{wo();xo=class extends Dn{constructor(){super(...arguments),this.providerName="Ollama",this.defaultBaseUrl="http://localhost:11434",this.path="/chat/completions"}buildHeaders(e){let t={"Content-Type":"application/json",Accept:"application/json"};return e&&(t.Authorization=`Bearer ${e}`),t}buildPayload(e,t,r,s){return s?{model:t,messages:e,stream:s,stream_options:{include_usage:!0}}:{model:t,messages:e,stream:s}}}});function en(n){let e=QA.get(n);if(!e)throw new Error(`Unsupported protocol: ${n}`);return e}function ZA(n,e){return n.replace(/\/+$/,"")+(e.startsWith("/")?e:`/${e}`)}async function hu(n,e){let t=en(n.protocol),r=t.getPath(n.model,e.stream),s=ZA(n.baseUrl,r),i=t.buildHeaders(n.apiKey,e.origin),o=t.buildPayload(e.messages,n.model,{effort:e.effort,webSearch:e.webSearch,maxOutputTokens:e.maxOutputTokens},e.stream);return fetch(s,{method:"POST",headers:i,body:JSON.stringify(o),signal:e.signal})}function eT(n){return/prompt is too long|context[_ ](length|window)|maximum context|token count exceeds|too many tokens/i.test(n)}async function jn(n,e){let t=en(e),r=await n.text().catch(()=>""),{message:s}=t.parseError(r,n.status),i=n.status,o="unknown";return i===429?o="rate_limit":(i===413||eT(s))&&(o="context_exceeded"),{code:o,message:s,retryable:i===429||i>=500}}var Ng,QA,mu=v(()=>{cu();uu();du();fu();pu();Ng=new xo,QA=new Map([["openai",new bo],["openrouter",new vo],["anthropic",new So],["gemini",new ko],["ollama",Ng],["openai-compat",Ng]])});function $g(n){let e=n.indexOf(`\r
|
|
1417
1417
|
\r
|
|
1418
1418
|
`),t=n.indexOf(`
|
|
1419
1419
|
|
|
1420
|
-
`);return e!==-1&&(t===-1||e<t)?{pos:e,len:4}:t!==-1?{pos:t,len:2}:{pos:-1,len:0}}function
|
|
1421
|
-
`).trim();if(!r)return null;if(r==="[DONE]")return"done";try{return JSON.parse(r)}catch{return null}}async function*
|
|
1420
|
+
`);return e!==-1&&(t===-1||e<t)?{pos:e,len:4}:t!==-1?{pos:t,len:2}:{pos:-1,len:0}}function gu(n){let t=n.split(/\r?\n/).filter(s=>s.startsWith("data:"));if(!t.length)return null;let r=t.map(s=>s.replace(/^data:\s?/,"")).join(`
|
|
1421
|
+
`).trim();if(!r)return null;if(r==="[DONE]")return"done";try{return JSON.parse(r)}catch{return null}}async function*Lg(n,e,t){let r=new TextDecoder,s="",i,o=e?new Promise((a,l)=>{e.aborted&&l(new Error("Aborted")),i=()=>l(new Error("Aborted")),e.addEventListener("abort",i,{once:!0})}):null;o?.catch(()=>{});try{for(;;){let{done:a,value:l}=o?await Promise.race([n.read(),o]):await n.read();if(a){if(s.trim()){let u=gu(s);u!==null&&u!=="done"&&(yield u)}return}t?.(),s+=r.decode(l,{stream:!0});let{pos:c,len:d}=$g(s);for(;c!==-1;){let u=s.slice(0,c);s=s.slice(c+d);let f=gu(u);if(f==="done")return;f!==null&&(yield f),{pos:c,len:d}=$g(s)}}}finally{i&&e?.removeEventListener("abort",i);try{await n.cancel()}catch{}}}async function yu(n,e){return(await Fn(n,e)).text}async function Fn(n,e){if(!n.body)throw new Error("Response body is missing");let t="",r;for await(let s of tn(n,e))s.kind==="text"?t+=s.text:s.kind==="usage"&&(r=s.usage);return{text:t,usage:r}}async function*tn(n,e){let t=e??(n.headers.get("X-Provider-Protocol")||"openai"),r=en(t);if(!n.body)return;let s=n.body.getReader(),i;for await(let a of Lg(s)){let l=r.parseStreamChunk(a);l?.reasoning&&(yield{kind:"reasoning",text:l.reasoning}),l?.text&&(yield{kind:"text",text:l.text}),l?.usage&&(i=Ig(i,l.usage))}let o=Ye(i);o&&(yield{kind:"usage",usage:o})}var Mg=v(()=>{Zt();mu()});import{strToU8 as tT,strFromU8 as nT,deflateSync as rT,inflateSync as sT}from"fflate";function wu(n,e){let t=[];if(t.push(`You are a data processor. Follow the instructions to analyze the provided data. Output valid JSON that the code can consume.
|
|
1422
1422
|
|
|
1423
1423
|
---
|
|
1424
1424
|
Instructions:
|
|
@@ -1436,21 +1436,21 @@ ${r}
|
|
|
1436
1436
|
</data>`)}return t.push(`
|
|
1437
1437
|
Output only valid JSON. No explanation, no markdown fences, just the JSON object. Every number must be a JSON literal \u2014 never an expression like 2 * pi; write the computed decimal instead.`),t.join(`
|
|
1438
1438
|
|
|
1439
|
-
`)}function
|
|
1440
|
-
`)){let t=e.trim();if(!t||t.startsWith("#"))continue;let r=t.indexOf("=");if(r===-1)continue;let s=t.slice(0,r).trim(),i=t.slice(r+1).trim();(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),yield[s,i]}}function
|
|
1441
|
-
`)}var Un,cT,uT,dT,fT,ls,Eo,cs,rn=v(()=>{"use strict";Un={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"};cT="https://api.typebulb.com/api/models",uT=1440*60*1e3,dT=5e3,fT=60*1e3,ls=null,Eo=null,cs=null});function at(n,e){let t=n??process.env.TB_AI_PROVIDER,r=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(!r)return"No model specified. Set TB_AI_MODEL in your .env file or pass model in the tb.ai() call.";let s;try{s=en(t)}catch{return`Unknown provider '${t}'.`}if(t==="ollama")return{apiKey:"",baseUrl:`${qn(process.env.OLLAMA_HOST??s.defaultBaseUrl)}/v1`,protocol:t,model:r,isFreeModel:!1};if(t==="openai-compat"){let a=process.env.TB_AI_BASE_URL;return a?{apiKey:process.env.TB_AI_API_KEY??"",baseUrl:a,protocol:t,model:r,isFreeModel:!1}:"No base URL for openai-compat. Set TB_AI_BASE_URL (the OpenAI-style base ending in /v1, e.g. http://localhost:1234/v1) in your .env file."}let i=Un[t];if(!i)return`Unknown provider '${t}'.`;let o=process.env[i];return o?{apiKey:o,baseUrl:s.defaultBaseUrl,protocol:t,model:r,isFreeModel:!1}:`No API key for '${t}'. Set ${i} \u2014 ${Ug()}.`}function Nt(n,e){let t=[...e.system?[{role:"system",content:e.system}]:[],...e.messages.map(r=>({role:r.role,content:r.content}))];return fu(n,{messages:t,stream:!0,effort:Cg(e.effort),webSearch:e.webSearch,signal:e.signal})}var To=v(()=>{"use strict";nn();nn();it();rn()});import*as Jn from"fs/promises";import*as lt from"path";function Oo(n,e,t=e){let r=lt.resolve(e,n),s=lt.normalize(t),i=lt.normalize(r);if(i!==s&&!i.startsWith(s+lt.sep))throw new Error("Path traversal detected - access denied");return r}async function us(n,e,t){return Jn.readFile(Oo(n,e,t))}async function Po(n,e,t,r){let s=Oo(n,t,r);await Jn.mkdir(lt.dirname(s),{recursive:!0}),await Jn.writeFile(s,typeof e=="string"?e:Buffer.from(e))}var xu=v(()=>{"use strict"});async function Hg(n){let e=at(n.provider,n.model);if(typeof e=="string")throw new Error(e);let t=await Nt(e,n);if(!t.ok){let r=await jn(t,e.protocol);throw new Error(r.message)}return{response:t,protocol:e.protocol}}async function gT(n){let{response:e,protocol:t}=await Hg(n);return Fn(e,t)}async function*yT(n){let{response:e,protocol:t}=await Hg(n);yield*tn(e,t)}function Wg(n,e=process.cwd()){let t=Object.assign(gT,{stream:yT}),r={read:async s=>{let i=await us(s,n,e);try{return new TextDecoder("utf-8",{fatal:!0}).decode(i)}catch{throw new Error(`File is not valid UTF-8 text: ${s} \u2014 use tb.fs.readBytes() for binary files.`)}},readBytes:async s=>new Uint8Array(await us(s,n,e)),write:async(s,i)=>(await Po(s,i,n,e),!0)};globalThis.tb=Object.freeze({log:(...s)=>{console.log(...s)},ai:t,fs:r,dir:n,models:()=>ot(),aiAccess:Ao,mode:On.local})}var Yg=v(()=>{"use strict";nn();ne();To();rn();xu()});import*as Ue from"fs/promises";import*as ie from"path";import{pathToFileURL as bT}from"url";async function Vg(n){let t=(await Ue.readdir(n)).find(r=>r.endsWith(".bulb.md"));return t?ie.join(n,t):null}function It(n,e){let t=ie.resolve(n),r=ie.join(ie.dirname(t),ie.basename(t).replace(/\.bulb\.md$/,""));return e?ie.join(r,"batches",e):r}async function Kn(n,e){let t=It(n,e);await Ue.mkdir(t,{recursive:!0});let r=new Date;await Ue.utimes(t,r,r).catch(()=>{})}function Hn(n){let[e,t,r,s]=n.split(ie.sep).slice(-4);if(!(e!=="typebulbs"||t!=="u"||!r||!s?.endsWith(".bulb.md")))return{userSlug:r,slug:s.slice(0,-8)}}async function qe(n){let e=await Ue.readFile(n,"utf-8"),t=ue(e);if(!t)throw new Error("Invalid .bulb.md file format");let r=_n(t);return{bulb:r,config:lr(r.config),warnings:sf(e),starts:t.starts}}function Eu(n){let e=ie.basename(n).replace(/\.bulb\.md$/i,"");return ie.join(ie.dirname(n),".typebulb",`${e}.server.mjs`)}async function ds(n,e,t,r,s){let i=Wc(n,{serverOnly:!0});if(i.error)throw new Error(`Server compilation error: ${i.error}`);let o=i.code;t&&(o=await Zd(o,t));let a=ie.join(ie.dirname(e),".typebulb");await Ue.mkdir(a,{recursive:!0});let l=go(o);l.length>0&&await mo(l,a,r);let c=Eu(e);return await Ue.writeFile(c,o,"utf-8"),Wg(It(e,s)),await import(`${bT(c).href}?t=${Date.now()}`)}async function Au(n,e,t,r,s){let{bulb:i,config:o,starts:a}=await qe(n),l=Mi(i.data);rg(i.code,o.dependencies??{});let c=Wc(i.code,{jsxImportSource:o.ts?.jsxImportSource});c.error&&console.error("Compilation error:",c.error);let{importMap:d}=await ao.buildImportMap(c.code,o.dependencies??{},r?new Set([r.name]):void 0);r&&(d.imports[r.name]=r.entryUrl);let u=Tg({name:i.name,code:c.code,css:i.css,html:i.html,data:l,insight:i.insight,importMap:d,dir:It(n,s),watch:e,source:{file:ie.basename(n),codeLine:a.get("code.tsx")??1},compileError:c.error?String(c.error):void 0}),f=null;return i.server&&t&&(f=await ds(i.server,n,r,o.dependencies,s)),{html:u,bulb:i,serverExports:f}}var $t,ze=v(()=>{"use strict";zr();Qm();sg();iu();Og();ou();$s();Yg();$t=(n,e)=>ie.join(It(n,e),"assets")});import{readdirSync as Gg,readFileSync as wT,statSync as Xg}from"fs";import{join as Co,basename as vT}from"path";function Qg(n,e,t){if(e>8)return t;let r;try{r=Gg(n,{withFileTypes:!0})}catch{return t}for(let s of r)if(s.isDirectory()){if(s.name.startsWith(".")||s.name==="node_modules")continue;Qg(Co(n,s.name),e+1,t)}else s.isFile()&&s.name.endsWith(".bulb.md")&&t.push(Co(n,s.name));return t}function Tu(n){let e=Co(It(n),"batches"),t;try{t=Gg(e,{withFileTypes:!0})}catch{return[]}return t.filter(r=>r.isDirectory()).map(r=>{let s=0;try{s=Xg(Co(e,r.name)).mtimeMs}catch{}return{name:r.name,mtime:s}}).sort((r,s)=>s.mtime-r.mtime).map(r=>r.name)}function ST(n,e){let t,r=!1;try{let s=wT(n,"utf8");t=Xi(s.slice(0,1024));let i=ue(s);r=!!i&&Gi(_n(i))}catch{}return{mtime:e,name:t??vT(n).replace(/\.bulb\.md$/,""),serverOnly:r}}function Ro(n){let e=new Map,t=Qg(n,0,[]).map(r=>{let s=0;try{s=Xg(r).mtimeMs}catch{}let i=s?zg.get(r):void 0,o=i?.mtime===s?i:ST(r,s);return s&&e.set(r,o),{path:r,...o}});return zg=e,t}var zg,Zg=v(()=>{"use strict";ne();zr();Hc();ze();zg=new Map});import*as ny from"net";import{mkdir as kT,readFile as xT,writeFile as ry}from"fs/promises";import{existsSync as ET}from"fs";import{join as sy}from"path";function ay(){return sy(Et(),"blocks")}function Ou(n){return sy(ay(),`${n}.json`)}function No(n){return new Promise(e=>{let t=ny.createServer();t.once("error",()=>e(!1)),t.listen(n,"127.0.0.1",()=>t.close(()=>e(!0)))})}async function OT(n){for(let e=n;e<65535;e++)if(await No(e))return e;throw new Error(`No free port found above ${n}`)}async function Pu(n){let e=(await Q()).find(r=>r.port===n),t=e?` (pid ${e.pid}, ${e.agent?`agent:${e.agent}`:e.file})`:"";console.error(`port ${n} in use${t}`),process.exit(1)}async function Io(n){try{let e=JSON.parse(await xT(Ou(n),"utf8"));return e&&typeof e.cwd=="string"?{cwd:e.cwd,slots:e.slots??{},mirrors:e.mirrors??{}}:void 0}catch{return}}async function $o(n,e){try{return await ry(Ou(n),JSON.stringify(e,null,2)),!0}catch{return et(),!1}}async function PT(n){let e=X(n);try{await kT(ay(),{recursive:!0})}catch{return}let t=[];for(let o=0;o<oy;o++)t.push(iy+o*sn);let r=await Promise.all(t.map(async o=>({base:o,block:await Io(o)})));for(let{base:o,block:a}of r)if(a?.cwd===e)return o;let s={cwd:e,slots:{},mirrors:{}};for(let{base:o,block:a}of r){if(!a)try{return await ry(Ou(o),JSON.stringify(s,null,2),{flag:"wx"}),o}catch(l){if((await Io(o))?.cwd===e)return o;l.code!=="EEXIST"&&et();continue}if(!ET(a.cwd))return await $o(o,s)?o:void 0}let i=r.filter(o=>!!o.block).sort((o,a)=>ey(o.block)-ey(a.block))[0];if(i)return await $o(i.base,s)?i.base:void 0}function ey(n){return Object.values(n.slots).reduce((e,t)=>Math.max(e,t.usedAt??0),0)}async function CT(n,e){let t=await Io(n)??{cwd:"",slots:{},mirrors:{}};if(e.kind==="mirror"){let i=t.mirrors[e.agent];if(i!==void 0)return i;let o=ty(t),a=o.has(0)?TT:0;for(;a>_o&&o.has(a);)a--;return t.mirrors[e.agent]=a,await $o(n,t),a}let r=X(e.file),s=t.slots[r]?.offset;if(s===void 0){let i=ty(t);for(s=_o;s<sn&&i.has(s);)s++;if(s>=sn){let o=Object.entries(t.slots).sort((a,l)=>(a[1].usedAt??0)-(l[1].usedAt??0))[0];s=o?o[1].offset:_o,o&&delete t.slots[o[0]]}}return t.slots[r]={offset:s,usedAt:Date.now()},await $o(n,t),s}function ty(n){return new Set([...Object.values(n.mirrors),...Object.values(n.slots).map(e=>e.offset)])}async function RT(n,e){let t=await PT(e);return t===void 0?void 0:t+await CT(t,n)}async function fs(n){let e=X(n);for(let t=0;t<oy;t++){let r=await Io(iy+t*sn);if(r?.cwd===e)return s=>r.slots[X(s)]?.usedAt??0}return()=>0}async function Lo(n){if(n.explicit!==void 0)return await No(n.explicit)||await Pu(n.explicit),{port:n.explicit};let e=await RT(n.target,n.cwd);if(e!==void 0){let r=e-e%sn;for(let s=0;s<4;s++){if(await No(e))return{port:e};await new Promise(i=>setTimeout(i,150))}for(let s=_o;s<sn;s++){let i=r+s;if(i!==e&&await No(i))return{port:i,note:`(slot ${e} was busy)`}}}return{port:await OT(AT),note:e===void 0?"(no port block available)":"(this project's block was full)"}}var iy,sn,oy,AT,_o,TT,Wn=v(()=>{"use strict";At();Be();iy=20100,sn=100,oy=19,AT=23e3,_o=1,TT=sn-1});function Yn(n){if(n.server.trim())return"server-side code (server.ts)";let e=n.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")||n.infer.trim()||/\btb\s*\.\s*infer\b/.test(e))return"AI (your API keys)";if(/\btb\s*\.\s*server\s*\.\s*\w/.test(e)||e.includes("/__api"))return"server-side code (server.ts)"}var Mo=v(()=>{"use strict"});import{readFile as _T}from"fs/promises";async function Cu(n){try{let e=ue(await _T(n,"utf-8"));return e?Yn(_n(e)):void 0}catch{return}}var ly=v(()=>{"use strict";zr();Mo()});function Ru(n){let e=ue(n);if(!e)return n;let t=e.files.get("code.tsx");if(!t)return n;let r=ng(t);if(!r.length)return n;let s=e.files.get("config.json"),i={};if(s)try{let c=JSON.parse(s);c&&typeof c=="object"&&(i=c)}catch{}let o=i.dependencies&&typeof i.dependencies=="object"?{...i.dependencies}:{},a=r.filter(c=>!(c in o));if(!a.length)return n;for(let c of a)o[c]="latest";i.dependencies=o;let l={name:e.frontmatter.name};for(let[c,d]of e.files){let u=ef(c);u&&(l[u]=d)}return l.config=JSON.stringify(i,null,2),cf(l)}var cy=v(()=>{"use strict";ne();Qi()});import{spawn as uy}from"child_process";import{basename as NT}from"path";function IT(){return process.env.TYPEBULB_EDITOR||"code"}function LT(n,e,t){return t==null?[e]:$T.test(NT(n))?["-g",`${e}:${t}`]:[`+${t}`,e]}function MT(n,e){let t=IT();return{command:t,args:LT(t,n,e)}}function _u(n,e){let{command:t,args:r}=MT(n,e),s=process.platform==="win32"?uy("cmd.exe",["/d","/s","/c",t,...r],{detached:!0,stdio:"ignore",windowsHide:!0}):uy(t,r,{detached:!0,stdio:"ignore"});s.on("error",i=>console.error("[typebulb] editor launch failed:",i?.message??i)),s.unref()}var $T,dy=v(()=>{"use strict";$T=/^(code|code-insiders|codium|vscodium|cursor|windsurf)(\.cmd|\.exe)?$/i});import{readFileSync as BT,writeFileSync as DT,mkdirSync as jT,statSync as FT}from"fs";import{join as UT}from"path";function Nu(){return UT(Et(),"trust.json")}function Iu(){try{let n=Nu(),e=FT(n).mtimeMs;if(ps?.mtime!==e){let t=JSON.parse(BT(n,"utf8"));ps={mtime:e,set:new Set(Array.isArray(t)?t:[])}}return ps.set}catch{return ps=void 0,new Set}}function qT(n){try{jT(Et(),{recursive:!0}),DT(Nu(),JSON.stringify([...n])),ps=void 0}catch(e){throw new Error(`can't write ${Nu()} \u2014 trust not remembered (unwritable home; sandboxed shell?): ${e.message}`)}}function on(n){return Iu().has(X(n))}function Vn(n,e){let t=new Set(Iu()),r=X(n);(e?t.has(r):!t.has(r))||(e?t.add(r):t.delete(r),qT(t))}function $u(){return[...Iu()]}var ps,hs=v(()=>{"use strict";At()});import{readFileSync as jM,existsSync as JT}from"fs";import*as zn from"path";import{fileURLToPath as KT}from"url";function HT(){let n=zn.dirname(KT(import.meta.url));for(;!JT(zn.join(n,"package.json"));){let e=zn.dirname(n);if(e===n)break;n=e}return n}function ms(){return zn.join(HT(),"SKILL.md")}var Lu=v(()=>{"use strict"});import*as Se from"fs/promises";import*as Oe from"path";import{createHash as WT}from"crypto";async function Bu(n,e,t){let r=[...n],s=async()=>{for(let i=r.shift();i!==void 0;i=r.shift())await t(i)};await Promise.all(Array.from({length:Math.min(e,n.length)},s))}function Gn(n){try{return JSON.parse(n).error||n}catch{return n}}async function ju(n,e){try{let t=await fetch(gs(n),{headers:e.token?{Authorization:`Bearer ${e.token}`}:{},signal:e.timeoutMs?AbortSignal.timeout(e.timeoutMs):void 0});return t.ok?t.headers.get("content-type")?.includes("json")?{entries:await t.json()}:{error:"manifest response is not JSON \u2014 wrong origin?"}:{error:`manifest request failed (${t.status}): ${Gn(await t.text())}`}}catch(t){return{error:t instanceof Error?t.message:String(t)}}}function Fu(n,e){Te(e);let t=process.env.TYPEBULB_ORIGIN||YT;try{return jo(n,process.cwd(),t)}catch(r){console.error(r instanceof Error?r.message:String(r)),process.exit(1)}}function jo(n,e,t){if(/^https?:\/\//i.test(n)){let i=new URL(n),o=i.pathname.split("/").filter(Boolean).map(decodeURIComponent),a=o[0]==="api"&&o[1]==="scripts"?o.slice(2):o;if(a[0]!=="u"||!a[1]||!a[2])throw new Error(`Not a bulb URL: ${n}
|
|
1442
|
-
Expected <origin>/u/<user>/<slug>`);let l=a[1],c=a[2].replace(/(\.bulb)?\.md$/,"");return{origin:i.origin,userSlug:l,slug:c,dest:
|
|
1443
|
-
A pull target must be a bulb URL, or a local file at typebulbs/u/<user>/<slug>.bulb.md \u2014 the path is its remote identity.`);return{origin:t,...s,dest:r}}async function
|
|
1444
|
-
`),r=ue(t(n)),s=ue(t(e));return!r||!s?t(n)===t(e):r.frontmatter.name===s.frontmatter.name&&
|
|
1439
|
+
`)}function ls(n){try{return JSON.parse(n)}catch{return null}}function Bg(n,e){let t="",r=0,s=!1,i=!1;for(let o=0;o<n.length;o++){let a=n[o];if(i){i=!1;continue}if(a==="\\"){i=!0;continue}a==='"'&&(s?(t+=n.slice(r,o+1),r=o+1):(t+=e(n.slice(r,o))+'"',r=o+1),s=!s)}return t+=s?n.slice(r):e(n.slice(r)),t}function oT(n){let e=Bg(n,t=>t.replace(/,(\s*[}\]])/g,"$1"));return e!==n?e:null}function aT(n){let e=Bg(n,t=>t.replace(/\bpi\b/g,"3.141592653589793").replace(/\be\b/g,"2.718281828459045").replace(/-?\d[\d.\s+\-*/()]*\d|\(-?\d[\d.\s+\-*/()]*\d\)/g,r=>{if(!/[+\-*/]/.test(r.replace(/^-/,""))||r.length>64||!/^[\d\s.+\-*/()]+$/.test(r))return r;try{let s=Function(`"use strict"; return (${r})`)();return typeof s=="number"&&Number.isFinite(s)?String(s):r}catch{return r}}));return e!==n?e:null}function lT(n,e){let t=0,r=!1,s=!1;for(let i=e;i<n.length;i++){let o=n[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(o==='"'){r=!r;continue}if(!r){if(o==="{"||o==="[")t++;else if((o==="}"||o==="]")&&(t--,t===0))return i}}return-1}function cT(n){let e=null,t=0;for(;t<n.length;){let r=n[t];if(r==="{"||r==="["){let s=lT(n,t);if(s!==-1){let i=n.slice(t,s+1),o=ls(i);o!==null&&(e={parsed:o,json:i}),t=s+1;continue}}t++}return e}function vu(n){let e=[],t=n.trim();t.startsWith("```")&&(t=t.replace(/^```(?:json)?\s*\n?/,"").replace(/\n?```\s*$/,""),e.push("markdown fences"));let r=ls(t);if(r!==null)return{parsed:r,json:t,fixesApplied:e};let s=t.match(/```(?:json)?\s*\n([\s\S]*?)\n?```\s*$/);if(s&&(t=s[1].trim(),e.push("preamble before fenced JSON"),r=ls(t),r!==null))return{parsed:r,json:t,fixesApplied:e};if(!t.startsWith("{")&&!t.startsWith("[")){let o=t.indexOf("{"),a=t.indexOf("["),l=o>=0&&a>=0?Math.min(o,a):o>=0?o:a;if(l>0&&(t=t.slice(l),e.push("preamble text"),r=ls(t),r!==null))return{parsed:r,json:t,fixesApplied:e}}for(let[o,a]of iT){let l=a(t);if(l!==null){let c=ls(l);if(c!==null)return{parsed:c,json:l,fixesApplied:[...e,o]}}}let i=cT(n);return i!==null?{...i,fixesApplied:[...e,"extracted last JSON value"]}:{parsed:null,json:t,fixesApplied:e}}function Su(n){try{let e={i:n.insight,d:n.data},t=JSON.stringify(e),r=rT(tT(t),{level:9}),s=dT(r),i=`${Dg}:${s}`;return i.length>uT?"":"#"+bu+i}catch{return""}}function ku(n){try{let e=n.startsWith("#")?n.slice(1):n;if(!e.startsWith(bu))return null;let t=e.slice(bu.length),r=t.indexOf(":");if(r===-1||t.slice(0,r)!==Dg)return null;let s=fT(t.slice(r+1)),i=JSON.parse(nT(sT(s)));return!i||typeof i.i>"u"||!Array.isArray(i.d)?null:{insight:i.i,insightJson:JSON.stringify(i.i,null,2),data:i.d}}catch{return null}}function dT(n){let e="";for(let t=0;t<n.length;t+=32768)e+=String.fromCharCode(...n.subarray(t,t+32768));return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function fT(n){let e=n.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4;)e+="=";let t=atob(e),r=new Uint8Array(t.length);for(let s=0;s<t.length;s++)r[s]=t.charCodeAt(s);return r}var iT,bu,Dg,uT,jg=v(()=>{iT=[["orphan quote",n=>{let e=n.replace(/^[ \t]*"[ \t]*\r?\n/gm,"");return e!==n?e:null}],["trailing }",n=>n.endsWith("}}")?n.slice(0,-1):null],["trailing ]",n=>n.endsWith("]]")?n.slice(0,-1):null],["trailing },",n=>n.endsWith("},")?n.slice(0,-1):null],["trailing ],",n=>n.endsWith("],")?n.slice(0,-1):null],["trailing commas",oT],["arithmetic constants",aT]];bu="tb=",Dg="1",uT=6e4});var nn=v(()=>{Zt();Bn();mu();Mg();jg();wo();du();fu();cu();uu();pu()});import{readFileSync as Fg,existsSync as pT}from"fs";import*as Ve from"path";function Ug(n){return[...n?[`.env.${n}.local`,`.env.${n}`]:[],".env.local",".env"]}function Oe(n,e=process.cwd()){let t={},r=[];for(let s of Ug(n)){let i;try{i=Fg(Ve.resolve(e,s),"utf-8")}catch{continue}r.push(s);for(let[o,a]of qg(i))process.env[o]===void 0&&(process.env[o]=a,t[o]=s)}return{mode:n,sources:t,loaded:r}}function*qg(n){for(let e of n.split(`
|
|
1440
|
+
`)){let t=e.trim();if(!t||t.startsWith("#"))continue;let r=t.indexOf("=");if(r===-1)continue;let s=t.slice(0,r).trim(),i=t.slice(r+1).trim();(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),yield[s,i]}}function Eo(n,e=process.cwd()){for(let t of Ug()){let r;try{r=Fg(Ve.resolve(e,t),"utf-8")}catch{continue}for(let[s,i]of qg(r))if(s===n)return i}return process.env[n]}function hT(n){let e=new Set,t=/process\.env\.([A-Za-z_$][\w$]*)|process\.env\[\s*['"]([^'"]+)['"]\s*\]/g;for(let r;r=t.exec(n);)e.add(r[1]??r[2]);return[...e]}function Jg(){return`.env loads from ${process.cwd()} (the directory you ran from, not the bulb's)`}function Rt(n,e,t){let{sources:r,mode:s,loaded:i}=n,o=process.cwd(),a=Ve.dirname(e),l=`(mode: ${s??"none"})`,c=t?hT(t):[],d=c.filter(p=>r[p]).map(p=>`${p} \u2190 ${r[p]}`);d.length?console.log(`env: ${d.join(", ")} ${l}`):i.length&&console.log(`env: loaded ${i.join(", ")} ${l}`),s&&!i.some(p=>p===`.env.${s}`||p===`.env.${s}.local`)&&console.log(`env: mode=${s} \u2014 no .env.${s} found; using .env`);let u=Ve.resolve(a)!==Ve.resolve(o);if(u)for(let p of[".env.local",".env"])pT(Ve.join(a,p))&&console.log(`env: ${Ve.join(a,p)} present but not loaded (cwd is ${o})`);let f=c.filter(p=>process.env[p]===void 0);if(f.length){let p=u?` \u2014 try running from ${a}`:"";console.log(`env: server.ts reads ${f.join(", ")} but ${f.length>1?"they are":"it's"} unset${p}`)}}var it=v(()=>{"use strict"});function qn(n){return(n.includes("://")?n:`http://${n}`).replace(/\/+$/,"")}function xu(){return us}async function ot(){let[n,e]=await Promise.all([Wg(),vT()]);return wT([...ST(e),...n],process.env.TB_AI_PROVIDER,process.env.TB_AI_MODEL)}function wT(n,e,t){return!e||!t?n:n.map(r=>r.provider===e&&r.name===t?{...r,default:!0}:r)}async function Kg(){let n;try{n=await fetch(mT,{signal:AbortSignal.timeout(yT)})}catch(e){return us=`catalog fetch failed: ${e?.message??e}`,null}if(!n.ok)return us=`catalog fetch failed: HTTP ${n.status}`,null;try{return await n.json()}catch(e){return us=`catalog returned an unreadable body: ${e?.message??e}`,null}}async function vT(){if(cs&&Date.now()-cs.fetchedAt<=gT)return cs.models;let n=await Kg()??await Kg();return n?(cs={models:n,fetchedAt:Date.now()},us=null,n):cs?.models??[]}async function Wg(){if(Ao&&Date.now()-Ao.fetchedAt<=bT)return Ao.models;let n=qn(process.env.OLLAMA_HOST??"http://localhost:11434"),e=[];try{let t=await fetch(new URL("/api/tags",n).toString());t.ok&&(e=((await t.json()).models??[]).map(s=>s.name).filter(s=>!!s).map(s=>({provider:"ollama",name:s,friendlyName:s,providerName:"Ollama"})))}catch{}return Ao={models:e,fetchedAt:Date.now()},e}function ST(n){let e=new Set(Object.entries(Un).filter(([,t])=>!!process.env[t]).map(([t])=>t));return n.filter(t=>e.has(t.provider))}function Eu(){return Object.values(Un).some(n=>!!process.env[n])}async function To(){return Eu()||process.env.TB_AI_BASE_URL||(await Wg()).length>0?"own":"none"}function Hg(n,e,t){let r=Math.max(...n.map(o=>o.name.length)),s=Math.max(...n.map(o=>o.friendlyName.length)),i=["Models available to tb.ai (filtered by your .env keys):",""];for(let o of n)i.push(` ${o.name.padEnd(r)} ${o.friendlyName.padEnd(s)} (${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(`
|
|
1441
|
+
`)}var Un,mT,gT,yT,bT,cs,Ao,us,rn=v(()=>{"use strict";Un={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"};mT="https://api.typebulb.com/api/models",gT=1440*60*1e3,yT=5e3,bT=60*1e3,cs=null,Ao=null,us=null});function at(n,e){let t=n??process.env.TB_AI_PROVIDER,r=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(!r)return"No model specified. Set TB_AI_MODEL in your .env file or pass model in the tb.ai() call.";let s;try{s=en(t)}catch{return`Unknown provider '${t}'.`}if(t==="ollama")return{apiKey:"",baseUrl:`${qn(process.env.OLLAMA_HOST??s.defaultBaseUrl)}/v1`,protocol:t,model:r,isFreeModel:!1};if(t==="openai-compat"){let a=process.env.TB_AI_BASE_URL;return a?{apiKey:process.env.TB_AI_API_KEY??"",baseUrl:a,protocol:t,model:r,isFreeModel:!1}:"No base URL for openai-compat. Set TB_AI_BASE_URL (the OpenAI-style base ending in /v1, e.g. http://localhost:1234/v1) in your .env file."}let i=Un[t];if(!i)return`Unknown provider '${t}'.`;let o=process.env[i];return o?{apiKey:o,baseUrl:s.defaultBaseUrl,protocol:t,model:r,isFreeModel:!1}:`No API key for '${t}'. Set ${i} \u2014 ${Jg()}.`}function It(n,e){let t=[...e.system?[{role:"system",content:e.system}]:[],...e.messages.map(r=>({role:r.role,content:r.content}))];return hu(n,{messages:t,stream:!0,effort:Rg(e.effort),webSearch:e.webSearch,signal:e.signal})}var Oo=v(()=>{"use strict";nn();nn();it();rn()});import*as Jn from"fs/promises";import*as lt from"path";function Po(n,e,t=e){let r=lt.resolve(e,n),s=lt.normalize(t),i=lt.normalize(r);if(i!==s&&!i.startsWith(s+lt.sep))throw new Error("Path traversal detected - access denied");return r}async function ds(n,e,t){return Jn.readFile(Po(n,e,t))}async function Co(n,e,t,r){let s=Po(n,t,r);await Jn.mkdir(lt.dirname(s),{recursive:!0}),await Jn.writeFile(s,typeof e=="string"?e:Buffer.from(e))}var Au=v(()=>{"use strict"});async function Yg(n){let e=at(n.provider,n.model);if(typeof e=="string")throw new Error(e);let t=await It(e,n);if(!t.ok){let r=await jn(t,e.protocol);throw new Error(r.message)}return{response:t,protocol:e.protocol}}async function kT(n){let{response:e,protocol:t}=await Yg(n);return Fn(e,t)}async function*xT(n){let{response:e,protocol:t}=await Yg(n);yield*tn(e,t)}function Vg(n,e=process.cwd()){let t=Object.assign(kT,{stream:xT}),r={read:async s=>{let i=await ds(s,n,e);try{return new TextDecoder("utf-8",{fatal:!0}).decode(i)}catch{throw new Error(`File is not valid UTF-8 text: ${s} \u2014 use tb.fs.readBytes() for binary files.`)}},readBytes:async s=>new Uint8Array(await ds(s,n,e)),write:async(s,i)=>(await Co(s,i,n,e),!0)};globalThis.tb=Object.freeze({log:(...s)=>{console.log(...s)},ai:t,fs:r,dir:n,models:()=>ot(),aiAccess:To,mode:On.local})}var zg=v(()=>{"use strict";nn();ne();Oo();rn();Au()});import*as Ue from"fs/promises";import*as ie from"path";import{pathToFileURL as ET}from"url";async function Gg(n){let t=(await Ue.readdir(n)).find(r=>r.endsWith(".bulb.md"));return t?ie.join(n,t):null}function Nt(n,e){let t=ie.resolve(n),r=ie.join(ie.dirname(t),ie.basename(t).replace(/\.bulb\.md$/,""));return e?ie.join(r,"batches",e):r}async function Kn(n,e){let t=Nt(n,e);await Ue.mkdir(t,{recursive:!0});let r=new Date;await Ue.utimes(t,r,r).catch(()=>{})}function Wn(n){let[e,t,r,s]=n.split(ie.sep).slice(-4);if(!(e!=="typebulbs"||t!=="u"||!r||!s?.endsWith(".bulb.md")))return{userSlug:r,slug:s.slice(0,-8)}}async function qe(n){let e=await Ue.readFile(n,"utf-8"),t=ue(e);if(!t)throw new Error("Invalid .bulb.md file format");let r=Rn(t);return{bulb:r,config:lr(r.config),warnings:lf(e),starts:t.starts}}function Tu(n){let e=ie.basename(n).replace(/\.bulb\.md$/i,"");return ie.join(ie.dirname(n),".typebulb",`${e}.server.mjs`)}async function fs(n,e,t,r,s){let i=Vc(n,{serverOnly:!0});if(i.error)throw new Error(`Server compilation error: ${i.error}`);let o=i.code;t&&(o=await nf(o,t));let a=ie.join(ie.dirname(e),".typebulb");await Ue.mkdir(a,{recursive:!0});let l=yo(o);l.length>0&&await go(l,a,r);let c=Tu(e);return await Ue.writeFile(c,o,"utf-8"),Vg(Nt(e,s)),await import(`${ET(c).href}?t=${Date.now()}`)}async function Ou(n,e,t,r,s){let{bulb:i,config:o,starts:a}=await qe(n),l=Bi(i.data);ig(i.code,o.dependencies??{});let c=Vc(i.code,{jsxImportSource:o.ts?.jsxImportSource});c.error&&console.error("Compilation error:",c.error);let{importMap:d}=await lo.buildImportMap(c.code,o.dependencies??{},r?new Set([r.name]):void 0);r&&(d.imports[r.name]=r.entryUrl);let u=Pg({name:i.name,code:c.code,css:i.css,html:i.html,data:l,insight:i.insight,importMap:d,dir:Nt(n,s),watch:e,source:{file:ie.basename(n),codeLine:a.get("code.tsx")??1},compileError:c.error?String(c.error):void 0}),f=null;return i.server&&t&&(f=await fs(i.server,n,r,o.dependencies,s)),{html:u,bulb:i,serverExports:f}}var $t,ze=v(()=>{"use strict";Gr();eg();og();au();Cg();lu();Ls();zg();$t=(n,e)=>ie.join(Nt(n,e),"assets")});import{readdirSync as Qg,readFileSync as AT,statSync as Zg}from"fs";import{join as _o,basename as TT}from"path";function ey(n,e,t){if(e>8)return t;let r;try{r=Qg(n,{withFileTypes:!0})}catch{return t}for(let s of r)if(s.isDirectory()){if(s.name.startsWith(".")||s.name==="node_modules")continue;ey(_o(n,s.name),e+1,t)}else s.isFile()&&s.name.endsWith(".bulb.md")&&t.push(_o(n,s.name));return t}function Pu(n){let e=_o(Nt(n),"batches"),t;try{t=Qg(e,{withFileTypes:!0})}catch{return[]}return t.filter(r=>r.isDirectory()).map(r=>{let s=0;try{s=Zg(_o(e,r.name)).mtimeMs}catch{}return{name:r.name,mtime:s}}).sort((r,s)=>s.mtime-r.mtime).map(r=>r.name)}function OT(n,e){let t,r=!1;try{let s=AT(n,"utf8");t=Qi(s.slice(0,1024));let i=ue(s);r=!!i&&Xi(Rn(i))}catch{}return{mtime:e,name:t??TT(n).replace(/\.bulb\.md$/,""),serverOnly:r}}function Ro(n){let e=new Map,t=ey(n,0,[]).map(r=>{let s=0;try{s=Zg(r).mtimeMs}catch{}let i=s?Xg.get(r):void 0,o=i?.mtime===s?i:OT(r,s);return s&&e.set(r,o),{path:r,...o}});return Xg=e,t}var Xg,ty=v(()=>{"use strict";ne();Gr();Yc();ze();Xg=new Map});import*as sy from"net";import{mkdir as PT,readFile as CT,writeFile as iy}from"fs/promises";import{existsSync as _T}from"fs";import{join as oy}from"path";function cy(){return oy(Et(),"blocks")}function Cu(n){return oy(cy(),`${n}.json`)}function No(n){return new Promise(e=>{let t=sy.createServer();t.once("error",()=>e(!1)),t.listen(n,"127.0.0.1",()=>t.close(()=>e(!0)))})}async function NT(n){for(let e=n;e<65535;e++)if(await No(e))return e;throw new Error(`No free port found above ${n}`)}async function _u(n){let e=(await Q()).find(r=>r.port===n),t=e?` (pid ${e.pid}, ${e.agent?`agent:${e.agent}`:e.file})`:"";console.error(`port ${n} in use${t}`),process.exit(1)}async function $o(n){try{let e=JSON.parse(await CT(Cu(n),"utf8"));return e&&typeof e.cwd=="string"?{cwd:e.cwd,slots:e.slots??{},mirrors:e.mirrors??{}}:void 0}catch{return}}async function Lo(n,e){try{return await iy(Cu(n),JSON.stringify(e,null,2)),!0}catch{return et(),!1}}async function $T(n){let e=X(n);try{await PT(cy(),{recursive:!0})}catch{return}let t=[];for(let o=0;o<ly;o++)t.push(ay+o*sn);let r=await Promise.all(t.map(async o=>({base:o,block:await $o(o)})));for(let{base:o,block:a}of r)if(a?.cwd===e)return o;let s={cwd:e,slots:{},mirrors:{}};for(let{base:o,block:a}of r){if(!a)try{return await iy(Cu(o),JSON.stringify(s,null,2),{flag:"wx"}),o}catch(l){if((await $o(o))?.cwd===e)return o;l.code!=="EEXIST"&&et();continue}if(!_T(a.cwd))return await Lo(o,s)?o:void 0}let i=r.filter(o=>!!o.block).sort((o,a)=>ny(o.block)-ny(a.block))[0];if(i)return await Lo(i.base,s)?i.base:void 0}function ny(n){return Object.values(n.slots).reduce((e,t)=>Math.max(e,t.usedAt??0),0)}async function LT(n,e){let t=await $o(n)??{cwd:"",slots:{},mirrors:{}};if(e.kind==="mirror"){let i=t.mirrors[e.agent];if(i!==void 0)return i;let o=ry(t),a=o.has(0)?IT:0;for(;a>Io&&o.has(a);)a--;return t.mirrors[e.agent]=a,await Lo(n,t),a}let r=X(e.file),s=t.slots[r]?.offset;if(s===void 0){let i=ry(t);for(s=Io;s<sn&&i.has(s);)s++;if(s>=sn){let o=Object.entries(t.slots).sort((a,l)=>(a[1].usedAt??0)-(l[1].usedAt??0))[0];s=o?o[1].offset:Io,o&&delete t.slots[o[0]]}}return t.slots[r]={offset:s,usedAt:Date.now()},await Lo(n,t),s}function ry(n){return new Set([...Object.values(n.mirrors),...Object.values(n.slots).map(e=>e.offset)])}async function MT(n,e){let t=await $T(e);return t===void 0?void 0:t+await LT(t,n)}async function ps(n){let e=X(n);for(let t=0;t<ly;t++){let r=await $o(ay+t*sn);if(r?.cwd===e)return s=>r.slots[X(s)]?.usedAt??0}return()=>0}async function Mo(n){if(n.explicit!==void 0)return await No(n.explicit)||await _u(n.explicit),{port:n.explicit};let e=await MT(n.target,n.cwd);if(e!==void 0){let r=e-e%sn;for(let s=0;s<4;s++){if(await No(e))return{port:e};await new Promise(i=>setTimeout(i,150))}for(let s=Io;s<sn;s++){let i=r+s;if(i!==e&&await No(i))return{port:i,note:`(slot ${e} was busy)`}}}return{port:await NT(RT),note:e===void 0?"(no port block available)":"(this project's block was full)"}}var ay,sn,ly,RT,Io,IT,Hn=v(()=>{"use strict";At();Ae();ay=20100,sn=100,ly=19,RT=23e3,Io=1,IT=sn-1});function Yn(n){if(n.server.trim())return"server-side code (server.ts)";let e=n.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")||n.infer.trim()||/\btb\s*\.\s*infer\b/.test(e))return"AI (your API keys)";if(/\btb\s*\.\s*server\s*\.\s*\w/.test(e)||e.includes("/__api"))return"server-side code (server.ts)"}var Bo=v(()=>{"use strict"});import{readFile as BT}from"fs/promises";async function Ru(n){try{let e=ue(await BT(n,"utf-8"));return e?Yn(Rn(e)):void 0}catch{return}}var uy=v(()=>{"use strict";Gr();Bo()});function Iu(n){let e=ue(n);if(!e)return n;let t=e.files.get("code.tsx");if(!t)return n;let r=sg(t);if(!r.length)return n;let s=e.files.get("config.json"),i={};if(s)try{let c=JSON.parse(s);c&&typeof c=="object"&&(i=c)}catch{}let o=i.dependencies&&typeof i.dependencies=="object"?{...i.dependencies}:{},a=r.filter(c=>!(c in o));if(!a.length)return n;for(let c of a)o[c]="latest";i.dependencies=o;let l={name:e.frontmatter.name};for(let[c,d]of e.files){let u=rf(c);u&&(l[u]=d)}return l.config=JSON.stringify(i,null,2),ff(l)}var dy=v(()=>{"use strict";ne();Zi()});import{spawn as fy}from"child_process";import{basename as DT}from"path";function jT(){return process.env.TYPEBULB_EDITOR||"code"}function UT(n,e,t){return t==null?[e]:FT.test(DT(n))?["-g",`${e}:${t}`]:[`+${t}`,e]}function qT(n,e){let t=jT();return{command:t,args:UT(t,n,e)}}function Nu(n,e){let{command:t,args:r}=qT(n,e),s=process.platform==="win32"?fy("cmd.exe",["/d","/s","/c",t,...r],{detached:!0,stdio:"ignore",windowsHide:!0}):fy(t,r,{detached:!0,stdio:"ignore"});s.on("error",i=>console.error("[typebulb] editor launch failed:",i?.message??i)),s.unref()}var FT,py=v(()=>{"use strict";FT=/^(code|code-insiders|codium|vscodium|cursor|windsurf)(\.cmd|\.exe)?$/i});import{readFileSync as JT,writeFileSync as KT,mkdirSync as WT,statSync as HT}from"fs";import{join as YT}from"path";function $u(){return YT(Et(),"trust.json")}function Lu(){try{let n=$u(),e=HT(n).mtimeMs;if(hs?.mtime!==e){let t=JSON.parse(JT(n,"utf8"));hs={mtime:e,set:new Set(Array.isArray(t)?t:[])}}return hs.set}catch{return hs=void 0,new Set}}function VT(n){try{WT(Et(),{recursive:!0}),KT($u(),JSON.stringify([...n])),hs=void 0}catch(e){throw new Error(`can't write ${$u()} \u2014 trust not remembered (unwritable home; sandboxed shell?): ${e.message}`)}}function on(n){return Lu().has(X(n))}function Vn(n,e){let t=new Set(Lu()),r=X(n);(e?t.has(r):!t.has(r))||(e?t.add(r):t.delete(r),VT(t))}function Mu(){return[...Lu()]}var hs,ms=v(()=>{"use strict";At()});import{readFileSync as WM,existsSync as zT}from"fs";import*as zn from"path";import{fileURLToPath as GT}from"url";function XT(){let n=zn.dirname(GT(import.meta.url));for(;!zT(zn.join(n,"package.json"));){let e=zn.dirname(n);if(e===n)break;n=e}return n}function gs(){return zn.join(XT(),"SKILL.md")}var Bu=v(()=>{"use strict"});import*as Se from"fs/promises";import*as Pe from"path";import{createHash as QT}from"crypto";async function ju(n,e,t){let r=[...n],s=async()=>{for(let i=r.shift();i!==void 0;i=r.shift())await t(i)};await Promise.all(Array.from({length:Math.min(e,n.length)},s))}function Gn(n){try{return JSON.parse(n).error||n}catch{return n}}async function Uu(n,e){try{let t=await fetch(ys(n),{headers:e.token?{Authorization:`Bearer ${e.token}`}:{},signal:e.timeoutMs?AbortSignal.timeout(e.timeoutMs):void 0});return t.ok?t.headers.get("content-type")?.includes("json")?{entries:await t.json()}:{error:"manifest response is not JSON \u2014 wrong origin?"}:{error:`manifest request failed (${t.status}): ${Gn(await t.text())}`}}catch(t){return{error:t instanceof Error?t.message:String(t)}}}function qu(n,e){Oe(e);let t=process.env.TYPEBULB_ORIGIN||ZT;try{return Fo(n,process.cwd(),t)}catch(r){console.error(r instanceof Error?r.message:String(r)),process.exit(1)}}function Fo(n,e,t){if(/^https?:\/\//i.test(n)){let i=new URL(n),o=i.pathname.split("/").filter(Boolean).map(decodeURIComponent),a=o[0]==="api"&&o[1]==="scripts"?o.slice(2):o;if(a[0]!=="u"||!a[1]||!a[2])throw new Error(`Not a bulb URL: ${n}
|
|
1442
|
+
Expected <origin>/u/<user>/<slug>`);let l=a[1],c=a[2].replace(/(\.bulb)?\.md$/,"");return{origin:i.origin,userSlug:l,slug:c,dest:Pe.join(e,Do(l,c))}}let r=Pe.resolve(e,n),s=Wn(r);if(!s)throw new Error(`Not a conventional bulb path: ${n}
|
|
1443
|
+
A pull target must be a bulb URL, or a local file at typebulbs/u/<user>/<slug>.bulb.md \u2014 the path is its remote identity.`);return{origin:t,...s,dest:r}}async function eO(n,e){let t=await Uu(n,e);if("error"in t||!t.entries.length)return{kind:"none"};let r=t.entries,s=$t(n.dest),i=[],o=[],a=0;for(let l of r){let c=await Se.readFile(Pe.join(s,...l.path.split("/"))).catch(()=>{});c===void 0?i.push(l.path):Fu(c)===l.md5?a++:e.force?i.push(l.path):o.push(l.path)}return o.length?{kind:"conflict",paths:o}:{kind:"plan",toGet:i,unchanged:a}}async function tO(n,e,t){let r=$t(n.dest),s=[],i=0;return await ju(e.toGet,4,async o=>{try{let a=await fetch(`${ys(n)}/${jo(o)}`,{headers:t.token?{Authorization:`Bearer ${t.token}`}:{},signal:AbortSignal.timeout(t.timeoutMs??3e4)});if(!a.ok){s.push(`${o}: HTTP ${a.status}`);return}let l=Pe.join(r,...o.split("/"));await Se.mkdir(Pe.dirname(l),{recursive:!0}),await Se.writeFile(l,new Uint8Array(await a.arrayBuffer())),i++}catch(a){s.push(`${o}: ${a instanceof Error?a.message:String(a)}`)}}),{downloaded:i,unchanged:e.unchanged,errors:s}}async function Uo(n,e={}){let t=await fetch(Du(n),{headers:e.token?{Authorization:`Bearer ${e.token}`}:{},signal:e.timeoutMs?AbortSignal.timeout(e.timeoutMs):void 0});if(!t.ok)return{kind:"http-error",status:t.status};let r=t.headers.get("content-type");if(!r?.includes("text/markdown"))return{kind:"not-markdown",contentType:r};let s=await t.text(),i;try{i=await Se.readFile(n.dest,"utf-8")}catch{}let o=i!==void 0&&nO(i,s);if(i!==void 0&&!o&&!e.force){let{mtime:c}=await Se.stat(n.dest);return{kind:"conflict",dest:n.dest,localMtime:c,remoteLastModified:t.headers.get("last-modified")}}let a=await eO(n,e);if(a.kind==="conflict")return{kind:"asset-conflict",dest:n.dest,paths:a.paths};if(!o){await Se.mkdir(Pe.dirname(n.dest),{recursive:!0}),await Se.writeFile(n.dest,s);let c=new Date(t.headers.get("last-modified")??"");isNaN(c.getTime())||await Se.utimes(n.dest,new Date,c)}let l=a.kind==="plan"?await tO(n,a,e):void 0;return o?{kind:"up-to-date",dest:n.dest,assets:l}:{kind:"written",dest:n.dest,created:i===void 0,assets:l}}function nO(n,e){let t=i=>i.replace(/\r\n/g,`
|
|
1444
|
+
`),r=ue(t(n)),s=ue(t(e));return!r||!s?t(n)===t(e):r.frontmatter.name===s.frontmatter.name&&Ie.every(i=>(r.files.get(le[i].path)||"")===(s.files.get(le[i].path)||""))}async function my(n,e){n||(console.error("Usage: typebulb pull <bulb url | typebulbs/u/<user>/<slug>.bulb.md>"),process.exit(1));let t=qu(n,e.mode),r=`${t.origin}/u/${t.userSlug}/${t.slug}`,s;try{s=await Uo(t,{force:e.force,token:process.env.TYPEBULB_TOKEN})}catch(o){console.error(`Could not reach ${t.origin}: ${o instanceof Error?o.message:String(o)}`),process.exitCode=1;return}let i=Pe.relative(process.cwd(),t.dest)||t.dest;switch(s.kind){case"written":console.log(`pulled ${r} \u2192 ${i}${s.created?"":" (overwritten)"}`),hy(s.assets);return;case"up-to-date":console.log(`up to date: ${i}`),hy(s.assets);return;case"conflict":console.error(`Refusing to overwrite ${i} \u2014 it differs from ${r}
|
|
1445
1445
|
local file modified ${s.localMtime.toISOString()}
|
|
1446
1446
|
remote last saved ${s.remoteLastModified??"unknown"}
|
|
1447
1447
|
Re-run with --force to overwrite the local file.`),process.exitCode=1;return;case"asset-conflict":console.error(`Refusing to overwrite local assets that differ from the hosted copies:
|
|
1448
1448
|
`+s.paths.map(o=>` assets/${o}`).join(`
|
|
1449
1449
|
`)+`
|
|
1450
|
-
Re-run with --force to overwrite them.`),process.exitCode=1;return;case"http-error":s.status===404?console.error(`Bulb not found: ${r}`):s.status===401||s.status===403?console.error(`This bulb is private (${s.status}) \u2014 pulling it needs a TYPEBULB_TOKEN for its owner.`):console.error(`Pull failed: ${t.origin} responded ${s.status}`),process.exitCode=1;return;case"not-markdown":console.error(`${r}.md did not return bulb markdown (got ${s.contentType??"no content-type"}) \u2014 is ${t.origin} a typebulb host?`),process.exitCode=1}}function
|
|
1450
|
+
Re-run with --force to overwrite them.`),process.exitCode=1;return;case"http-error":s.status===404?console.error(`Bulb not found: ${r}`):s.status===401||s.status===403?console.error(`This bulb is private (${s.status}) \u2014 pulling it needs a TYPEBULB_TOKEN for its owner.`):console.error(`Pull failed: ${t.origin} responded ${s.status}`),process.exitCode=1;return;case"not-markdown":console.error(`${r}.md did not return bulb markdown (got ${s.contentType??"no content-type"}) \u2014 is ${t.origin} a typebulb host?`),process.exitCode=1}}function hy(n){if(!(!n||!n.downloaded&&!n.errors.length)){console.log(`assets: ${n.downloaded} downloaded${n.unchanged?`, ${n.unchanged} unchanged`:""}`);for(let e of n.errors)console.error(` asset failed \u2014 ${e} (a re-pull retries just the missing ones)`);n.errors.length&&(process.exitCode=1)}}var ZT,Do,Du,jo,ys,Fu,qo=v(()=>{"use strict";it();ne();ze();ZT="https://typebulb.com",Do=(n,e)=>Pe.join("typebulbs","u",n,`${e}.bulb.md`),Du=n=>`${n.origin}/u/${encodeURIComponent(n.userSlug)}/${encodeURIComponent(n.slug)}.md`,jo=n=>n.split("/").map(encodeURIComponent).join("/"),ys=n=>`${n.origin}/u/${encodeURIComponent(n.userSlug)}/${encodeURIComponent(n.slug)}/assets`;Fu=n=>QT("md5").update(n).digest("hex")});import*as Ge from"fs/promises";import*as bs from"path";async function gy(n,e=""){let t=await Ge.readdir(n,{withFileTypes:!0}).catch(()=>[]),r=[];for(let s of t)s.isDirectory()?r.push(...await gy(bs.join(n,s.name),`${e}${s.name}/`)):s.isFile()&&r.push(e+s.name);return r}async function rO(n,e){let t=e.timeoutMs??3e4,r=ys(n),s={Authorization:`Bearer ${e.token}`},i=$t(n.dest);if(!await Ge.stat(i).then(m=>m.isDirectory()).catch(()=>!1))return{kind:"skipped"};let o=await gy(i),a=await Uu(n,{token:e.token,timeoutMs:t});if("error"in a)return{kind:"sync-error",message:a.error};let l=a.entries;if(!o.length&&!l.length)return{kind:"skipped"};let c=new Map(l.map(m=>[m.path,m.md5])),d=new Set(o),u=l.map(m=>m.path).filter(m=>!d.has(m)),f=0,p=0;try{await ju(o,4,async m=>{let h=await Ge.readFile(bs.join(i,...m.split("/")));if(c.get(m)===Fu(h)){p++;return}let y=await fetch(`${r}/${jo(m)}`,{method:"PUT",body:new Uint8Array(h),headers:s,signal:AbortSignal.timeout(t)});if(!y.ok)throw new Error(`upload of '${m}' refused (${y.status}): ${Gn(await y.text())}`);f++})}catch(m){return{kind:"sync-error",message:m instanceof Error?m.message:String(m)}}return{kind:"synced",uploaded:f,unchanged:p,toDelete:u,base:js(n.userSlug,n.slug)}}async function sO(n,e,t){let r=t.timeoutMs??3e4,s=ys(n),i=[];for(let o of e)try{let a=await fetch(`${s}/${jo(o)}`,{method:"DELETE",headers:{Authorization:`Bearer ${t.token}`},signal:AbortSignal.timeout(r)});if(!a.ok)return{deleted:i,error:`delete of '${o}' refused (${a.status}): ${Gn(await a.text())}`};i.push(o)}catch(a){return{deleted:i,error:a instanceof Error?a.message:String(a)}}return{deleted:i}}async function Jo(n,e){let t=await Ge.readFile(n.dest,"utf-8"),{mtime:r}=await Ge.stat(n.dest),s=await rO(n,{token:e.token,timeoutMs:e.timeoutMs});if(s.kind==="sync-error")return{kind:"asset-error",message:s.message};let i=s.kind==="synced"?{uploaded:s.uploaded,unchanged:s.unchanged,deleted:[],base:s.base}:void 0,o={Authorization:`Bearer ${e.token}`,"Content-Type":"text/markdown; charset=utf-8"};e.force||(o["If-Unmodified-Since"]=r.toUTCString());let a=await fetch(Du(n),{method:"PUT",body:t,headers:o,signal:e.timeoutMs?AbortSignal.timeout(e.timeoutMs):void 0}),l=await a.text();if(a.status===409)return{kind:"conflict",message:Gn(l),assets:i};if(!a.ok)return{kind:"http-error",status:a.status,message:Gn(l),assets:i};let c=JSON.parse(l);if(await Ge.utimes(n.dest,new Date,new Date(c.updatedAt)),i&&s.kind==="synced"&&s.toDelete.length){let d=await sO(n,s.toDelete,{token:e.token,timeoutMs:e.timeoutMs});i.deleted=d.deleted,d.error&&(i.pruneError=d.error)}return{kind:"pushed",created:c.created,serverStripped:c.serverStripped,updatedAt:c.updatedAt,assets:i}}async function yy(n,e){n||(console.error("Usage: typebulb push <typebulbs/u/<user>/<slug>.bulb.md>"),process.exit(1)),/^https?:\/\//i.test(n)&&(console.error("push takes a local .bulb.md file, not a URL (the path is its remote identity)"),process.exit(1));let t=qu(n,e.mode),r=process.env.TYPEBULB_TOKEN;r||(console.error("push needs TYPEBULB_TOKEN in your .env \u2014 create one on your typebulb.com settings page."),process.exit(1));let s=`${t.origin}/u/${t.userSlug}/${t.slug}`,i=bs.relative(process.cwd(),t.dest)||t.dest,o;try{o=await Jo(t,{token:r,force:e.force})}catch(a){let l=a instanceof Error?a.message:String(a);console.error(a?.code==="ENOENT"?`File not found: ${i}`:`Could not push to ${t.origin}: ${l}`),process.exitCode=1;return}switch(o.kind!=="asset-error"&&o.assets&&console.log(`assets: ${o.assets.uploaded} uploaded, ${o.assets.unchanged} unchanged \u2192 ${o.assets.base}`),o.kind){case"asset-error":console.error(`assets sync failed: ${o.message}
|
|
1451
1451
|
push refused: the bulb text was not pushed.`),process.exitCode=1;return;case"pushed":{console.log(`pushed ${i} \u2192 ${s}`),o.created&&(console.log(" created a new bulb, unlisted \u2014 nothing existed at this URL before"),console.log(" if you renamed this file, its previous bulb is still live at the old URL")),o.serverStripped&&console.log("note: the server.ts block was stripped on the server copy (CLI-only); your local file is untouched.");for(let a of o.assets?.deleted??[])console.log(` deleted ${a} (no longer in assets/)`);o.assets?.pruneError&&console.log(`note: asset cleanup incomplete \u2014 ${o.assets.pruneError}; the next push will retry.`);return}case"conflict":console.error(`${o.message}
|
|
1452
1452
|
pull to see the remote: typebulb pull ${i}
|
|
1453
|
-
or overwrite it: typebulb push ${i} --force`),process.exitCode=1;return;case"http-error":o.status===401?console.error("The server rejected TYPEBULB_TOKEN (401) \u2014 it may be revoked; mint a new one on the settings page."):console.error(`Push failed: ${t.origin} responded ${o.status}${o.message?` \u2014 ${o.message}`:""}`),process.exitCode=1}}var
|
|
1453
|
+
or overwrite it: typebulb push ${i} --force`),process.exitCode=1;return;case"http-error":o.status===401?console.error("The server rejected TYPEBULB_TOKEN (401) \u2014 it may be revoked; mint a new one on the settings page."):console.error(`Push failed: ${t.origin} responded ${o.status}${o.message?` \u2014 ${o.message}`:""}`),process.exitCode=1}}var Ju=v(()=>{"use strict";ne();qo();ze()});var Xn=v(()=>{"use strict";Ae();ty();Hn();uy();Yc();dy();py();ms();rn();rn();Oo();Bu();Ae();qo();Ju();it()});import{existsSync as iO,mkdirSync as oO,readFileSync as aO,rmSync as lO,writeFileSync as cO}from"fs";import{homedir as uO}from"os";import*as Qn from"path";function hO(){return pO.replace('"__TB_SKILL_PATH__"',JSON.stringify(gs())).replace('"__TB_BIN_PATH__"',JSON.stringify(zr()))}function by(){try{if(!iO(Ku()))return}catch{return}try{let n=dO(),e=hO(),t;try{t=aO(n,"utf8")}catch{}t!==e&&(oO(Qn.dirname(n),{recursive:!0}),cO(n,e))}catch{}for(let n of fO())try{lO(n,{force:!0})}catch{}}var Ku,dO,fO,pO,wy=v(()=>{"use strict";Xn();Ku=()=>Qn.join(uO(),".pi","agent"),dO=()=>Qn.join(Ku(),"extensions","typebulb.ts"),fO=()=>["typebulb-wait.ts","matchu-patchu.ts"].map(n=>Qn.join(Ku(),"extensions",n)),pO=String.raw`// Generated by typebulb — do not edit; overwritten on each run.
|
|
1454
1454
|
import { spawn } from "node:child_process";
|
|
1455
1455
|
import { existsSync } from "node:fs";
|
|
1456
1456
|
|
|
@@ -1459,6 +1459,48 @@ function logErr(...a) { try { console.error("[typebulb]", ...a); } catch (e) {}
|
|
|
1459
1459
|
// Matches "typebulb wait", "npx typebulb wait", "/path/to/typebulb wait", "pnpm exec typebulb wait", etc.
|
|
1460
1460
|
function isWaitCommand(command) { return /\btypebulb\s+wait\b/.test(String(command || "")); }
|
|
1461
1461
|
|
|
1462
|
+
// The fold's key (TB-Wait.md): an INLINE render wait, never "a wait was intercepted". A local bulb's
|
|
1463
|
+
// own wait (typebulb wait ./chess.bulb.md --match "[chess]") keeps taking the shim path untouched.
|
|
1464
|
+
function isInlineWait(command) { return isWaitCommand(command) && String(command || "").indexOf("[inline ") >= 0; }
|
|
1465
|
+
|
|
1466
|
+
// One mirror status line, as logInlineStatus writes it. ANCHORED: the composer driver echoes our own
|
|
1467
|
+
// notifies into that same log, so a tag quoted mid-line must not read as a status line.
|
|
1468
|
+
function parseInline(line) {
|
|
1469
|
+
var m = /^\[inline (.+?) v(\d+)\] (.*)$/.exec(String(line || "").trim());
|
|
1470
|
+
return m ? { name: m[1], version: Number(m[2]), verdict: m[3] } : null;
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1473
|
+
// The four forwarded outcomes are ok / malformed / compile error / runtime error; all but ok cost a turn.
|
|
1474
|
+
function isBroken(verdict) { return /^(compile error|runtime error|malformed)\b/.test(String(verdict || "")); }
|
|
1475
|
+
|
|
1476
|
+
// The wake decision for one status line, against the names THIS session emitted (own) and the
|
|
1477
|
+
// per-name state (seen: the 3-wake cap plus a repeat guard, so a re-render of one version is free).
|
|
1478
|
+
// Kept pure but for the seen map, so piDriver.test.ts can lift it out of this source and test it.
|
|
1479
|
+
function wakeFor(line, own, seen) {
|
|
1480
|
+
var text = String(line || "").trim();
|
|
1481
|
+
var s = parseInline(text);
|
|
1482
|
+
if (!s || !own.has(s.name)) return null;
|
|
1483
|
+
var prev = seen.get(s.name) || { count: 0, last: "" };
|
|
1484
|
+
var skip = !isBroken(s.verdict) || prev.last === text || prev.count >= 3;
|
|
1485
|
+
prev.last = text;
|
|
1486
|
+
if (!skip) prev.count += 1;
|
|
1487
|
+
seen.set(s.name, prev);
|
|
1488
|
+
return skip ? null : { name: s.name, line: text, count: prev.count };
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
// The third wake escalates instead of asking for a fourth fix: three failed inline repairs is a
|
|
1492
|
+
// venue error, not a bug to keep chasing (TB-Wait.md).
|
|
1493
|
+
function wakeText(w) {
|
|
1494
|
+
return w.count >= 3
|
|
1495
|
+
? "typebulb: " + w.line + "\nThat is three failed repairs of this inline bulb. Stop iterating inline: write it as a .bulb.md, gate it with typebulb check, and tell the user why you moved it."
|
|
1496
|
+
: "typebulb: " + w.line + "\nAn inline bulb you rendered is broken. Emit a same-named inline bulb with the fix. Nothing to arm: this session is watched, and a clean render stays silent.";
|
|
1497
|
+
}
|
|
1498
|
+
|
|
1499
|
+
// The fold's reply. Delivered by MUTATING the bash command into an echo of it rather than blocking:
|
|
1500
|
+
// pi renders a blocked call as an error result, which is exactly what taught a model to stop arming
|
|
1501
|
+
// waits at all. Apostrophe-free — it rides inside single quotes.
|
|
1502
|
+
var WATCHED_NOTE = "typebulb: this render is already watched for you. You will be woken if it breaks, and a clean render stays silent. Nothing to arm.";
|
|
1503
|
+
|
|
1462
1504
|
// pi's bash tool runs every command under Git Bash on Windows (its getShellConfig), so the
|
|
1463
1505
|
// intercepted string is POSIX. Re-running it under node's shell:true (cmd.exe on Windows) breaks
|
|
1464
1506
|
// that syntax — cmd doesn't split on ";", so a trailing "; echo ..." rides along as extra ARGS to
|
|
@@ -1479,11 +1521,16 @@ function resolveBash() {
|
|
|
1479
1521
|
// commands/agent.ts prints — readable without a permission prompt, and too big to emit on stdout).
|
|
1480
1522
|
var TB_SKILL_PATH = "__TB_SKILL_PATH__";
|
|
1481
1523
|
|
|
1524
|
+
// Resolved at shim-write time to this package's own bin — the session watcher runs THIS typebulb,
|
|
1525
|
+
// never an unpinned "npx typebulb" (a different install skews the disk state they share).
|
|
1526
|
+
var TB_BIN = "__TB_BIN_PATH__";
|
|
1527
|
+
|
|
1482
1528
|
// Orientation for a MIRROR-DRIVEN session (TYPEBULB_MIRROR=1 — set only by the mirror's composer
|
|
1483
1529
|
// driver). A composer-driven agent never runs "typebulb agent", so the guaranteed-delivery block
|
|
1484
1530
|
// that command prints (commands/agent.ts) never reaches it; this re-delivers it via the system
|
|
1485
1531
|
// prompt. The wording below is copied from agent.ts, hard-won across many failed interactions —
|
|
1486
|
-
//
|
|
1532
|
+
// change it there first. Two divergences: the mirror-link lines (the user is already IN the
|
|
1533
|
+
// mirror), and the arming lines, dropped because the session watcher holds that wait (TB-Wait.md).
|
|
1487
1534
|
var TB_MIRROR_BLOCK = [
|
|
1488
1535
|
"Typebulb: the user is prompting you from the typebulb agent mirror (already open in front of them).",
|
|
1489
1536
|
" Inline bulbs render live in this conversation.",
|
|
@@ -1491,8 +1538,6 @@ var TB_MIRROR_BLOCK = [
|
|
|
1491
1538
|
" • no need to end your reply with a mirror link",
|
|
1492
1539
|
" Reusable app/tool → write a .bulb.md",
|
|
1493
1540
|
" Show something inline → emit an inline bulb",
|
|
1494
|
-
" arm a wait for its render verdict — run it plainly:",
|
|
1495
|
-
' • typebulb wait agent --match "[inline <name>"',
|
|
1496
1541
|
" Read the authoring skill before writing a bulb:",
|
|
1497
1542
|
" • " + TB_SKILL_PATH,
|
|
1498
1543
|
].join("\n");
|
|
@@ -1501,9 +1546,76 @@ export default function (pi) {
|
|
|
1501
1546
|
try {
|
|
1502
1547
|
const pending = new Set();
|
|
1503
1548
|
|
|
1549
|
+
// ── the session watcher: typebulb holds the subscription, the agent arms nothing (TB-Wait.md) ──
|
|
1550
|
+
var watcher = null; // the standing follow-mode typebulb wait child
|
|
1551
|
+
var stopping = false; // set at session_shutdown, so a reaped watcher never respawns
|
|
1552
|
+
var ownNames = new Set(); // bulb names THIS session emitted — the wake gate
|
|
1553
|
+
var seen = new Map(); // name -> { count, last }
|
|
1554
|
+
|
|
1555
|
+
function onStatusLine(line) {
|
|
1556
|
+
try {
|
|
1557
|
+
var w = wakeFor(line, ownNames, seen);
|
|
1558
|
+
if (w) pi.sendUserMessage(wakeText(w), { deliverAs: "followUp" });
|
|
1559
|
+
} catch (e) { logErr("status", e && e.message); }
|
|
1560
|
+
}
|
|
1561
|
+
|
|
1562
|
+
// ONE standing tail of this cwd's mirror log for the whole session, matching every inline tag.
|
|
1563
|
+
// TYPEBULB_WAIT_FOLLOW makes it a continuous consumer: it never exits on a match, so it holds no
|
|
1564
|
+
// cursor (which concurrent sessions would share under this same --match) and needs no re-arm.
|
|
1565
|
+
// Spawned argv-direct on our own bin: the command is ours, not the agent's POSIX string, so no
|
|
1566
|
+
// shell is involved and the bracketed match needs no quoting.
|
|
1567
|
+
function startWatcher() {
|
|
1568
|
+
if (watcher || stopping || process.env.TYPEBULB_MIRROR !== "1") return;
|
|
1569
|
+
try {
|
|
1570
|
+
const child = spawn(process.execPath, [TB_BIN, "wait", "agent", "--match", "[inline "], {
|
|
1571
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
1572
|
+
env: { ...process.env, TYPEBULB_WAIT_SHIM: "1", TYPEBULB_WAIT_FOLLOW: "1" },
|
|
1573
|
+
});
|
|
1574
|
+
watcher = child;
|
|
1575
|
+
let buf = "";
|
|
1576
|
+
if (child.stdout) child.stdout.on("data", (b) => {
|
|
1577
|
+
buf += b.toString();
|
|
1578
|
+
const parts = buf.split("\n");
|
|
1579
|
+
buf = parts.pop() || "";
|
|
1580
|
+
for (const line of parts) onStatusLine(line);
|
|
1581
|
+
});
|
|
1582
|
+
if (child.stderr) child.stderr.resume(); // drained, never buffered: a full pipe would stall the tail
|
|
1583
|
+
child.on("error", (e) => { watcher = null; logErr("watcher", e && e.message); });
|
|
1584
|
+
// The agent armed nothing here, so a dead watcher costs the safety net, not the session (the
|
|
1585
|
+
// inverse of the intercepted-wait rule below): log and stand down. Never respawn — a watcher
|
|
1586
|
+
// that exits instantly would hot-loop — and never sendUserMessage a plumbing failure.
|
|
1587
|
+
child.on("exit", (code) => {
|
|
1588
|
+
watcher = null;
|
|
1589
|
+
if (!stopping) logErr("watcher exited (code " + code + ") — inline bulbs are unwatched for the rest of this session");
|
|
1590
|
+
});
|
|
1591
|
+
} catch (e) { watcher = null; logErr("watcher", e && e.message); }
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1594
|
+
pi.on("session_start", () => { try { startWatcher(); } catch (e) { logErr("session_start", e && e.message); } });
|
|
1595
|
+
|
|
1596
|
+
// The gate a wake must pass: a name this session itself emitted. The mirror's log is per MIRROR,
|
|
1597
|
+
// so ungated, session A gets woken to "fix" a bulb session B wrote — into its own transcript. A
|
|
1598
|
+
// name SET, not a transcript buffer: bounded by this session's own bulbs, and no fence parsing.
|
|
1599
|
+
pi.on("message_end", (event) => {
|
|
1600
|
+
try {
|
|
1601
|
+
const msg = event && event.message;
|
|
1602
|
+
if (!msg || msg.role !== "assistant") return undefined;
|
|
1603
|
+
const c = msg.content;
|
|
1604
|
+
const text = typeof c === "string" ? c : Array.isArray(c)
|
|
1605
|
+
? c.map((b) => (b && b.type === "text" && typeof b.text === "string" ? b.text : "")).join("\n")
|
|
1606
|
+
: "";
|
|
1607
|
+
if (text.indexOf("format: typebulb/v1") < 0) return undefined;
|
|
1608
|
+
const re = /^name:[ \t]*(\S.*)$/gm;
|
|
1609
|
+
let m;
|
|
1610
|
+
while ((m = re.exec(text))) ownNames.add(m[1].trim());
|
|
1611
|
+
} catch (e) { logErr("message_end", e && e.message); }
|
|
1612
|
+
return undefined;
|
|
1613
|
+
});
|
|
1614
|
+
|
|
1504
1615
|
pi.on("before_agent_start", (event) => {
|
|
1505
1616
|
try {
|
|
1506
1617
|
if (process.env.TYPEBULB_MIRROR !== "1") return undefined;
|
|
1618
|
+
startWatcher(); // idempotent — covers an instance bound mid-session
|
|
1507
1619
|
return { systemPrompt: event.systemPrompt + "\n\n" + TB_MIRROR_BLOCK };
|
|
1508
1620
|
} catch (e) { logErr("before_agent_start", e && e.message); return undefined; }
|
|
1509
1621
|
});
|
|
@@ -1514,6 +1626,16 @@ export default function (pi) {
|
|
|
1514
1626
|
const command = event.input && event.input.command;
|
|
1515
1627
|
if (!isWaitCommand(command)) return undefined;
|
|
1516
1628
|
|
|
1629
|
+
// Under the watcher this render is already subscribed, so a manual arm spawns nothing: a
|
|
1630
|
+
// second subscription double-wakes. The reply rides in as a MUTATED command (pi documents
|
|
1631
|
+
// event.input as mutable), so the tool result is green rather than the error-marked block
|
|
1632
|
+
// below. Keyed on the inline tag, and on a watcher actually running — a local bulb's wait,
|
|
1633
|
+
// or a session whose watcher never started, falls through to the shim path (TB-Wait.md).
|
|
1634
|
+
if (watcher && isInlineWait(command)) {
|
|
1635
|
+
event.input.command = "echo '" + WATCHED_NOTE + "'";
|
|
1636
|
+
return undefined;
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1517
1639
|
// Run the REAL typebulb wait in the background instead of foreground (which would deadlock the
|
|
1518
1640
|
// turn). It does the mirror/registry lookup, --match and offsets itself. The marker tells it this
|
|
1519
1641
|
// is a shim-backgrounded (non-blocking) wait, so it runs as a pure subscription: no give-up clock,
|
|
@@ -1587,31 +1709,31 @@ export default function (pi) {
|
|
|
1587
1709
|
|
|
1588
1710
|
return {
|
|
1589
1711
|
block: true,
|
|
1590
|
-
reason: "Armed in the background. You will be re-invoked
|
|
1712
|
+
reason: "Armed in the background for this emit. Do not run it again this turn; end your turn now. You will be re-invoked if the render reports a problem, a clean render stays silent, and each new emit takes a fresh wait.",
|
|
1591
1713
|
};
|
|
1592
1714
|
} catch (e) { logErr("tool_call", e && e.message); return undefined; }
|
|
1593
1715
|
});
|
|
1594
1716
|
|
|
1595
|
-
try { pi.on("session_shutdown", () => { for (const c of pending) { try { c.kill(); } catch (e) {} } pending.clear(); }); } catch (e) {}
|
|
1717
|
+
try { pi.on("session_shutdown", () => { stopping = true; if (watcher) { try { watcher.kill(); } catch (e) {} watcher = null; } for (const c of pending) { try { c.kill(); } catch (e) {} } pending.clear(); }); } catch (e) {}
|
|
1596
1718
|
} catch (e) { logErr("load", e && e.message); }
|
|
1597
1719
|
}
|
|
1598
|
-
`});function Y(n){return n?.message??String(n)}var z,Lt=v(()=>{"use strict";z=process.cwd()});import{spawn as
|
|
1599
|
-
`))>=0;){let o=r.slice(0,i);r=r.slice(i+1),o.endsWith("\r")&&(o=o.slice(0,-1)),o&&e(o)}})}var
|
|
1600
|
-
`)}catch{}await Promise.race([this.#
|
|
1601
|
-
`)}catch{}}#
|
|
1602
|
-
`)
|
|
1603
|
-
`),
|
|
1604
|
-
`).filter(Boolean).map(s=>s.replace(/\\/g,"/"))}return null}function
|
|
1605
|
-
`),l=i.filter(f=>f.type==="toolCall").map(f=>({id:f.id??"",name:f.name??"",input:f.arguments??{}}));if(o||a||l.length){let f=Date.parse(e.timestamp??""),p=!isNaN(f)&&f>=t;r.push({type:"assistant",text:o,thinking:a,tools:l,live:p})}let c=s.usage,d=c?(c.input??0)+(c.output??0)+(c.cacheRead??0)+(c.cacheWrite??0):0,u=c&&d>0&&s.stopReason!=="aborted"&&s.stopReason!=="error"?{in:c.input??0,out:c.output??0,cached:c.cacheRead??0,cacheCreate:c.cacheWrite??0}:void 0;return{events:r,usage:u,model:s.model,cost:c?.cost?.total}}return{events:r}}chainWorking(e){let t;for(let a of e)
|
|
1720
|
+
`});function Y(n){return n?.message??String(n)}var z,Lt=v(()=>{"use strict";z=process.cwd()});import{spawn as vy}from"child_process";import{StringDecoder as mO}from"string_decoder";function SO(n,e){let t=new mO("utf8"),r="";n.on("data",s=>{r+=typeof s=="string"?s:t.write(s);let i;for(;(i=r.indexOf(`
|
|
1721
|
+
`))>=0;){let o=r.slice(0,i);r=r.slice(i+1),o.endsWith("\r")&&(o=o.slice(0,-1)),o&&e(o)}})}var gO,Sy,ky,Wu,xy,yO,bO,wO,Ey,vO,Ko,Wo,Ay,Ty=v(()=>{"use strict";Lt();gO=3e4,Sy=18e4,ky="starting pi\u2026",Wu=5e3,xy=2e3,yO=2e3,bO=12e4,wO=8e3,Ey=15e3,vO=new Set(["get_state","get_commands","get_available_models","set_model","set_thinking_level","cycle_thinking_level","get_session_stats","compact","set_auto_compaction","get_fork_messages","fork","clone","set_session_name","export_html","bash","abort_bash"]),Ko=new Set;process.on("exit",()=>{for(let n of Ko)try{n.kill()}catch{}});Wo=class{#e;#s=!1;#t=0;#r=!1;#T=0;#a=!1;#m=null;#l=[];#g=null;#n=null;#i=null;#d=new Map;#o=[];#y=null;#S=null;#b=null;#f;#p;#w="";#_=1;#c=new Map;#k;#v;constructor(e,t,r=(s,i)=>vy(s,{cwd:i,shell:!0,stdio:["pipe","pipe","pipe"],env:{...process.env,TYPEBULB_MIRROR:"1"}})){if(this.#k=new Promise(o=>{this.#v=o}),t?.includes('"')){this.#p="session path contains a quote \u2014 cannot drive it",this.#v();return}let s=t?`pi --mode rpc --session "${t}"`:"pi --mode rpc",i;try{i=r(s,e)}catch(o){this.#p=`could not start pi: ${Y(o)}`,this.#v();return}this.#e=i,this.#f=t,this.#r=!0,this.#T=Date.now()+Sy,this.#n={text:ky,kind:"info"},Ko.add(i),i.stdout&&SO(i.stdout,o=>this.#I(o)),i.stderr&&i.stderr.on("data",o=>{this.#w=(this.#w+o.toString()).slice(-yO)}),i.on("error",o=>this.#P(`could not start pi: ${o.message}`)),i.on("exit",o=>{this.#e===i&&this.#P(o?`pi exited (code ${o})${this.#w.trim()?`: ${this.#w.trim()}`:""}`:"pi exited"),Ko.delete(i),this.#v()}),this.#u({type:"get_state"}).then(o=>{let a=o.data?.sessionFile;typeof a=="string"&&a&&(this.#f=a);let l=o.data?.model;l&&typeof l.id=="string"&&l.id&&(this.#b=l.id)}).catch(()=>{}).finally(()=>this.#R())}#R(){this.#r&&(this.#r=!1,this.#n?.text===ky&&(this.#n=null),this.#i&&(this.#i.until=Date.now()+Ey),!this.#s&&Date.now()<this.#t&&(this.#t=Date.now()+Wu),this.#A())}get streaming(){return this.#s||Date.now()<this.#t}get draft(){return this.#m}get echo(){return this.#g}get queue(){return this.#y}get stats(){return this.#S}get model(){return this.#b}get sessionFile(){return this.#f}get error(){return this.#p}get status(){if(this.#n)return this.#n;if(this.#i){if(Date.now()<this.#i.until)return{text:this.#i.text,kind:this.#i.kind};this.#i=null}return this.#d.size?{text:[...this.#d.values()].join(" \xB7 "),kind:"info"}:null}get dialog(){let e=Date.now();for(;this.#o.length;){let t=this.#o[0];if(e<t.until)return t.req;this.#o.shift(),t.ownTimeout||this.#x({type:"extension_ui_response",id:t.req.id,cancelled:!0})}return null}notice(e,t){this.#h(e,t)}respondUi(e,t){let r=this.#o.findIndex(o=>o.req.id===e);if(r<0)return{ok:!1,error:"dialog expired or already answered"};let[s]=this.#o.splice(r,1),i={type:"extension_ui_response",id:e};return t.cancelled?i.cancelled=!0:s.req.method==="confirm"?i.confirmed=!!t.confirmed:i.value=t.value??"",this.#x(i),{ok:!0}}async rpc(e){if(!vO.has(e.type))return{ok:!1,error:`command not allowed: ${e.type}`};try{let t=await this.#u(e);if(t.success&&e.type==="set_model"){let r=t.data?.id;typeof r=="string"&&r&&(this.#b=r)}if(t.success&&(e.type==="fork"||e.type==="clone")){try{let s=(await this.#u({type:"get_state"})).data?.sessionFile;typeof s=="string"&&s&&(this.#f=s)}catch{}return{ok:!0,data:{...t.data??{},sessionFile:this.#f}}}return t.success?{ok:!0,data:t.data}:{ok:!1,error:t.error??`pi rejected ${e.type}`}}catch(t){return{ok:!1,error:Y(t)}}}async send(e,t){let r=this.streaming,s=e.trimStart().startsWith("/"),i=r?s?{type:"prompt",message:e,streamingBehavior:t?.followUp?"followUp":"steer"}:{type:t?.followUp?"follow_up":"steer",message:e}:{type:"prompt",message:e},o=l=>{r||(this.#t=l,s||(this.#g=e))};if(this.#r)return this.#u(i).catch(()=>{}),o(this.#T+Wu),{ok:!0};let a;try{a=await this.#u(i)}catch(l){return{ok:!1,error:Y(l)}}return a.success&&o(Date.now()+Wu),a.success?{ok:!0}:{ok:!1,error:a.error??"pi rejected the message"}}async stop(){if(this.#e){if(this.#r){this.#x({type:"abort"}),this.#t=0;return}try{await this.#u({type:"abort"})}catch{}}}clearCompletedDraft(){this.#a||(this.#m=null)}clearEcho(){this.#g=null}async dispose(){let e=this.#e;if(e){if(this.#e=void 0,this.#r=!1,this.#s){try{e.stdin?.write(JSON.stringify({type:"abort"})+`
|
|
1722
|
+
`)}catch{}await Promise.race([this.#k,Ay(xy)])}try{e.stdin?.end()}catch{}if(await Promise.race([this.#k,Ay(xy)]),e.exitCode===null&&!e.killed)if(process.platform==="win32"&&e.pid)try{vy("taskkill",["/pid",String(e.pid),"/T","/F"],{stdio:"ignore"})}catch{}else try{e.kill("SIGKILL")}catch{}Ko.delete(e),this.#o=[],this.#C("pi was shut down")}}#x(e){try{this.#e?.stdin?.write(JSON.stringify(e)+`
|
|
1723
|
+
`)}catch{}}#O(){let e=this.#l[this.#l.length-1];this.#m={text:this.#l.filter(t=>t?.kind==="text").map(t=>t.text).join(""),thinking:this.#l.filter(t=>t?.kind==="thinking").map(t=>t.text).join(`
|
|
1724
|
+
`),tool:e?.kind==="tool"?e.name:void 0}}#E(e){let t=Array.isArray(e?.content)?e.content:[];this.#l=t.map(r=>({kind:r.type==="thinking"?"thinking":r.type==="toolCall"?"tool":"text",text:(r.type==="thinking"?r.thinking:r.text)??"",name:r.name})),this.#O()}#h(e,t){let r=e.length>200?e.slice(0,200)+"\u2026":e;r&&(this.#i={text:r,kind:t,until:Date.now()+(t==="info"?wO:Ey)})}#A(){this.#u({type:"get_session_stats"}).then(e=>{if(!e.success||!e.data)return;let t=e.data;this.#S={cost:typeof t.cost=="number"?t.cost:0,contextTokens:typeof t.contextUsage?.tokens=="number"?t.contextUsage.tokens:null,contextPercent:typeof t.contextUsage?.percent=="number"?t.contextUsage.percent:null}}).catch(()=>{})}#u(e){let t=this.#e;if(!t?.stdin?.writable)return Promise.reject(new Error(this.#p??"pi is not running"));let r=this.#r?Sy:gO,s=`tb-${this.#_++}`;return new Promise((i,o)=>{let a=setTimeout(()=>{this.#c.delete(s),o(new Error(`pi did not respond (${Math.round(r/1e3)}s)`))},r);a.unref?.(),this.#c.set(s,{resolve:i,timer:a});try{t.stdin.write(JSON.stringify({id:s,...e})+`
|
|
1725
|
+
`)}catch(l){clearTimeout(a),this.#c.delete(s),o(new Error(Y(l)))}})}#I(e){let t;try{t=JSON.parse(e)}catch{return}switch(t.type){case"response":{let r=t,s=r.id?this.#c.get(r.id):void 0;s&&(this.#c.delete(r.id),clearTimeout(s.timer),s.resolve(r));return}case"agent_start":this.#s=!0,this.#t=0;return;case"agent_end":this.#s=!1,this.#t=0,this.#a=!1,this.#n=null,this.#y=null,this.#A();return;case"message_start":{let r=t.message;if(r?.role!=="assistant")return;this.#a=!0,this.#E(r);return}case"message_update":{if(!this.#a)return;if(t.message){this.#E(t.message);return}let r=t.assistantMessageEvent;if(!r||typeof r.contentIndex!="number")return;let s=r.type.startsWith("thinking")?"thinking":r.type.startsWith("toolcall")?"tool":"text",i=this.#l[r.contentIndex]??={kind:s,text:""};i.kind=s,typeof r.delta=="string"&&s!=="tool"&&(i.text+=r.delta),typeof r.content=="string"&&(i.text=r.content),r.toolCall?.name&&(i.name=r.toolCall.name),this.#O();return}case"message_end":if(!this.#a)return;t.message&&this.#E(t.message),this.#a=!1;return;case"auto_retry_start":this.#n={text:`retrying after a transient error (attempt ${Number(t.attempt)||1}/${Number(t.maxAttempts)||"?"})\u2026`,kind:"warning"};return;case"auto_retry_end":this.#n=null,t.success===!1&&this.#h(`retries exhausted: ${String(t.finalError??"unknown error")}`,"error");return;case"compaction_start":this.#n={text:"compacting context\u2026",kind:"info"};return;case"compaction_end":{this.#n=null;let r=t.result;typeof t.errorMessage=="string"&&t.errorMessage?this.#h(`compaction failed: ${t.errorMessage}`,"error"):r?.tokensBefore&&this.#h(`compacted: ~${Math.round(r.tokensBefore/1e3)}k \u2192 ~${Math.round((r.estimatedTokensAfter??0)/1e3)}k tokens`,"info"),this.#A();return}case"queue_update":{let r=Array.isArray(t.steering)?t.steering.map(String):[],s=Array.isArray(t.followUp)?t.followUp.map(String):[];this.#y=r.length||s.length?{steering:r,followUp:s}:null;return}case"extension_ui_request":{let r=String(t.method??"");if(r==="select"||r==="confirm"||r==="input"||r==="editor"){let s=typeof t.timeout=="number"&&t.timeout>0?t.timeout:void 0;this.#o.push({req:{id:String(t.id??""),method:r,title:typeof t.title=="string"?t.title:void 0,message:typeof t.message=="string"?t.message:void 0,options:Array.isArray(t.options)?t.options.map(String):void 0,placeholder:typeof t.placeholder=="string"?t.placeholder:void 0,prefill:typeof t.prefill=="string"?t.prefill:void 0},until:Date.now()+(s??bO),ownTimeout:s!==void 0})}else if(r==="notify"){let s=t.notifyType==="warning"?"warning":t.notifyType==="error"?"error":"info";this.#h(String(t.message??""),s),console.log(`[composer] pi extension: ${String(t.message??"")}`)}else if(r==="setStatus"){let s=String(t.statusKey??"");typeof t.statusText=="string"&&t.statusText?this.#d.set(s,t.statusText):this.#d.delete(s)}return}default:return}}#P(e){this.#p=e,this.#r=!1,this.#s=!1,this.#t=0,this.#a=!1,this.#m=null,this.#l=[],this.#g=null,this.#n=null,this.#i=null,this.#d.clear(),this.#o=[],this.#y=null,this.#S=null,this.#b=null,this.#e=void 0,this.#C(e)}#C(e){for(let[,t]of this.#c)clearTimeout(t.timer),t.resolve({type:"response",success:!1,error:e});this.#c.clear()}},Ay=n=>new Promise(e=>{setTimeout(e,n).unref?.()})});import{existsSync as Oy,readFileSync as kO,realpathSync as xO}from"fs";import{join as an,dirname as Ry,resolve as EO}from"path";import{homedir as Py}from"os";function TO(n,e){let t=an(n,".pi");if(AO.some(s=>Oy(an(t,s))))return!0;let r=an(e,".agents","skills");for(let s=n;;){let i=an(s,".agents","skills");if(i!==r&&Oy(i))return!0;let o=Ry(s);if(o===s)return!1;s=o}}function OO(n,e){for(let t=e;;){if(n[t]===!0||n[t]===!1)return!0;let r=Ry(t);if(r===t)return!1;t=r}}function Iy(n,e){try{let t=e?.agentDir??an(Py(),".pi","agent"),r=Cy(e?.home??process.env.HOME??Py()),s=Cy(EO(n));if(!TO(s,r))return null;let i=_y(an(t,"settings.json")).defaultProjectTrust;return i==="always"||i==="never"||OO(_y(an(t,"trust.json")),s)?null:"pi has no trust decision for this project \u2014 running untrusted; run `pi` once in a terminal to grant it"}catch{return null}}var AO,Cy,_y,Ny=v(()=>{"use strict";AO=["settings.json","extensions","skills","prompts","themes","SYSTEM.md","APPEND_SYSTEM.md"],Cy=n=>{try{return xO(n)}catch{return n}},_y=n=>{try{return JSON.parse(kO(n,"utf8"))}catch{return{}}}});import{statSync as PO,openSync as CO,readSync as _O,closeSync as RO,existsSync as Ly}from"fs";import{join as Ho}from"path";import{homedir as Hu}from"os";import{execFile as IO}from"child_process";async function $O(n){let e=Ho(Hu(),".pi","agent","bin",process.platform==="win32"?"fd.exe":"fd");for(let t of["fd","fdfind",...Ly(e)?[e]:[]]){let r=await new Promise(s=>{IO(t,["--base-directory",n,"--type","f","--follow","--hidden","--exclude",".git"],{maxBuffer:67108864},(i,o)=>s(i?null:o))});if(r!==null)return r.split(`
|
|
1726
|
+
`).filter(Boolean).map(s=>s.replace(/\\/g,"/"))}return null}function LO(n){return`--${n.replace(/^[/\\]/,"").replace(/[/\\:]/g,"-")}--`}function $y(n){return n.type==="message"?MO(n.message?.role):n.type==="custom_message"?n.display!==!1:!1}var NO,MO,Zn,Yu=v(()=>{"use strict";Jr();_c();qi();wy();Ty();Ny();NO=Ho(Hu(),".pi","agent","sessions");MO=n=>n==="user"||n==="assistant"||n==="toolResult"||n==="bashExecution";Zn=class extends kt{displayName="Pi Mirror";detectsSelf(){return process.env.PI_CODING_AGENT==="true"}detectsInstalled(){return Ly(Ho(Hu(),".pi","agent"))}ensureHarnessSupport(){by()}createDriver(e,t){let r=new Wo(e,t),s=Iy(e);return s&&r.notice(s,"warning"),r}walkFiles(e){return $O(e)}sessionsDir(e){return Ho(NO,LO(e))}listSessionFiles(e){return Ui(this.sessionsDir(e))}parseEntry(e){let t;try{t=JSON.parse(e)}catch{return null}return!t||t.type==="session"||!t.id?null:t}idOf(e){return e.id}parentOf(e){return e.parentId??void 0}timestampOf(e){return e.timestamp}isSidechain(e){return!1}isLeafType(e){return $y(e)}isRecoveryNoise(e){return!1}apply(e,t){let r=[];if(e.type==="custom_message"){if(e.display===!1)return{events:r};let i=this.contentText(e.content).trim();return i&&r.push({type:"user",text:i}),{events:r}}if(e.type!=="message"||!e.message)return{events:r};let s=e.message;if(s.role==="user"){let i=this.contentText(s.content).trim();return i&&r.push({type:"user",text:i}),{events:r}}if(s.role==="toolResult"){let i=this.contentText(s.content);return r.push({type:"tool_result",id:s.toolCallId??"",content:i,isError:!!s.isError,digest:Le(i)}),{events:r}}if(s.role==="bashExecution")return s.command&&!s.excludeFromContext&&r.push({type:"user",text:`$ ${s.command}`}),{events:r};if(s.role==="assistant"){let i=Array.isArray(s.content)?s.content:[],o=i.filter(f=>f.type==="text").map(f=>f.text??"").join(""),a=i.filter(f=>f.type==="thinking").map(f=>f.thinking??"").join(`
|
|
1727
|
+
`),l=i.filter(f=>f.type==="toolCall").map(f=>({id:f.id??"",name:f.name??"",input:f.arguments??{}}));if(o||a||l.length){let f=Date.parse(e.timestamp??""),p=!isNaN(f)&&f>=t;r.push({type:"assistant",text:o,thinking:a,tools:l,live:p})}let c=s.usage,d=c?(c.input??0)+(c.output??0)+(c.cacheRead??0)+(c.cacheWrite??0):0,u=c&&d>0&&s.stopReason!=="aborted"&&s.stopReason!=="error"?{in:c.input??0,out:c.output??0,cached:c.cacheRead??0,cacheCreate:c.cacheWrite??0}:void 0;return{events:r,usage:u,model:s.model,cost:c?.cost?.total}}return{events:r}}chainWorking(e){let t;for(let a of e)$y(a)&&(t=a);if(!t||t.type==="custom_message")return!1;let r=t.message.role;if(r==="user"||r==="toolResult"||r==="bashExecution")return!0;if(r!=="assistant")return!1;let i=(Array.isArray(t.message.content)?t.message.content:[]).filter(a=>a.type==="toolCall").map(a=>a.id);if(!i.length)return!1;let o=new Set;for(let a of e)a.type==="message"&&a.message?.role==="toolResult"&&a.message.toolCallId&&o.add(a.message.toolCallId);return i.some(a=>a&&!o.has(a))}sessionAlive(){}readPreview(e){let t;try{t=CO(e,"r")}catch{return""}try{let s=65536;try{s=PO(e).size}catch{}let i=(u,f)=>{let p=Buffer.alloc(f),m=_O(t,p,0,f,u);return p.subarray(0,m).toString("utf8")},o=i(0,Math.min(65536,s)),a=s>65536?i(s-65536,65536):"",l=u=>{let f="";for(let p of u.split(`
|
|
1606
1728
|
`))if(p.includes('"session_info"'))try{let m=JSON.parse(p);m?.type==="session_info"&&typeof m.name=="string"&&m.name&&(f=m.name)}catch{}return f},c="";for(let u of o.split(`
|
|
1607
|
-
`))if(!(c||!u.includes('"type"')))try{let f=JSON.parse(u);f?.type==="message"&&f.message?.role==="user"&&(c=this.contentText(f.message.content).replace(/\s+/g," ").trim())}catch{}let d=l(a)||l(o)||c;return d?d.slice(0,200):""}finally{
|
|
1608
|
-
`):""}}});var
|
|
1729
|
+
`))if(!(c||!u.includes('"type"')))try{let f=JSON.parse(u);f?.type==="message"&&f.message?.role==="user"&&(c=this.contentText(f.message.content).replace(/\s+/g," ").trim())}catch{}let d=l(a)||l(o)||c;return d?d.slice(0,200):""}finally{RO(t)}}searchText(e){if(e?.type!=="message")return"";let t=e.message?.role;if(t!=="user"&&t!=="assistant")return"";let r=e.message?.content,s="";return typeof r=="string"?s=r:Array.isArray(r)&&(s=r.filter(i=>i.type==="text"&&typeof i.text=="string").map(i=>i.text).join(" ")),s.replace(/\s+/g," ").trim()}contentText(e){return typeof e=="string"?we(e):Array.isArray(e)?e.map(t=>typeof t?.text=="string"?we(t.text):t?.type==="image"&&t.data?Fi(t.data,t.mimeType):"").filter(Boolean).join(`
|
|
1730
|
+
`):""}}});var Yo,My=v(()=>{"use strict";Yo=class{#e=new Map;accept(e,t){return this.#e.get(e)===t?!1:(this.#e.set(e,t),!0)}}});import{execFile as BO}from"child_process";import{promisify as DO}from"util";import{readFile as jO}from"fs/promises";import{resolve as By,sep as FO}from"path";async function Je(n,e){let{stdout:t}=await UO("git",n,{cwd:e,maxBuffer:67108864});return t}async function ln(){if(Vo)return Vo;try{Vo=(await Je(["rev-parse","--show-toplevel"],z)).trim()}catch{}return Vo}function qO(n,e){let t=e===" "?n:e;return t==="?"?"U":t}async function zu(){let n=await ln();if(!n)return{repo:!1,root:"",files:[]};try{let e=await Je(["status","--porcelain","-z"],n),t=[],r=e.split("\0");for(let s=0;s<r.length;s++){let i=r[s];i.length<4||((i[0]==="R"||i[0]==="C")&&s++,t.push({path:i.slice(3),status:qO(i[0],i[1])}))}try{let s=await Je(["diff","--numstat","-z","HEAD"],n),i=new Map,o=s.split("\0");for(let a=0;a<o.length;a++){let l=/^(\d+|-)\t(\d+|-)\t(.*)$/.exec(o[a]);if(!l)continue;let c=l[3]||o[a+=2];c&&i.set(c,{add:+l[1]||0,del:+l[2]||0,binary:l[1]==="-"})}for(let a of t){let l=i.get(a.path);l&&(l.binary?a.binary=!0:(a.add=l.add,a.del=l.del))}}catch{}return t.sort((s,i)=>s.path.localeCompare(i.path)),{repo:!0,root:n,files:t}}catch(e){return{repo:!1,root:"",files:[],error:Y(e)}}}async function Gu(n){let e=await ln();if(!e)return{ok:!1,error:"not a git repository"};try{if((await Je(["status","--porcelain","-z","--",n],e)).startsWith("??")){let s=By(e,n);if(!s.startsWith(By(e)+FO))return{ok:!1,error:"outside repository"};let i=await jO(s);return i.includes(0)?Vu("Binary file (not shown)",!1):Vu(i.toString("utf8"),!0)}let r;try{r=await Je(["diff","--no-color","--unified=999999","HEAD","--",n],e)}catch{r=await Je(["diff","--no-color","--unified=999999","--",n],e)}return Vu(r,!1)}catch(t){return{ok:!1,error:Y(t)}}}var UO,Dy,Vo,Vu,ws=v(()=>{"use strict";Lt();UO=DO(BO),Dy=2e6;Vu=(n,e)=>({ok:!0,text:n.slice(0,Dy),untracked:e,truncated:n.length>Dy})});function zo(n,e){let t=0,r="";for(let s of n){let i=s.lower.indexOf(e);if(!(i<0)&&(t++,!r)){let o=Math.max(0,i-110),a=Math.min(s.text.length,i+e.length+110);r=(o>0?"\u2026":"")+s.text.slice(o,a)+(a<s.text.length?"\u2026":"")}}return{hitCount:t,snippet:r}}var Xu=v(()=>{"use strict"});function jy(){return JO.map(([n,e])=>at(n,e)).filter(n=>typeof n!="string")}function Fy(){return jy().length>0}async function Go(n,e,t=0){let r=AbortSignal.timeout(e);for(let s of jy()){try{let i=await It(s,{messages:[{role:"user",content:n}],effort:t,webSearch:!1,signal:r});if(i.ok){let o=(await yu(i,s.protocol)).trim();if(o)return o}}catch{}if(r.aborted)return}}var JO,Qu=v(()=>{"use strict";nn();Xn();JO=[["openrouter","openai/gpt-5.6-luna"],["openai","gpt-5.6-luna"]]});var Xo,Qo,Uy=v(()=>{"use strict";Xo=".typebulb/paste",Qo={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp"}});import{existsSync as KO,mkdirSync as WO,writeFileSync as HO,readFileSync as YO}from"fs";import{join as Zo}from"path";function qy(){let n=new Date,e=t=>String(t).padStart(2,"0");return`${n.getFullYear()}${e(n.getMonth()+1)}${e(n.getDate())}-${e(n.getHours())}${e(n.getMinutes())}${e(n.getSeconds())}`}function GO(n){return n.trim().toLowerCase().replace(/\.[a-z0-9]{1,4}$/,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)}async function XO(n){let e=await Go(`Reply with ONLY a short kebab-case filename (2-5 words, lowercase, no extension) describing this text:
|
|
1609
1731
|
|
|
1610
|
-
${n.slice(0,
|
|
1611
|
-
`+
|
|
1732
|
+
${n.slice(0,zO)}`,VO);return e&&GO(e)||void 0}async function Jy(n,e){if(!e||e.kind!=="image"&&e.kind!=="text")return{ok:!1,error:"bad paste kind"};if(typeof e.data!="string"||!e.data)return{ok:!1,error:"empty paste"};let t=Zo(n,Xo);try{WO(t,{recursive:!0})}catch(a){return{ok:!1,error:Y(a)}}let r,s,i;if(e.kind==="image"){if(r=`img-${qy()}`,s=Object.keys(Qo).find(a=>Qo[a]===e.mime)??"png",i=Buffer.from(e.data,"base64"),!i.length)return{ok:!1,error:"empty image data"}}else r=await XO(e.data)??`paste-${qy()}`,s="md",i=e.data;let o=`${r}.${s}`;for(let a=2;KO(Zo(t,o));a++)o=`${r}-${a}.${s}`;try{HO(Zo(t,o),i)}catch(a){return{ok:!1,error:Y(a)}}return{ok:!0,path:`${Xo}/${o}`}}function Ky(n,e){if(!/^[\w-]+(\.[\w-]+)*$/.test(e))return{ok:!1,error:"bad name"};let t=e.slice(e.lastIndexOf(".")+1).toLowerCase(),r=Qo[t];if(!r)return{ok:!1,error:"not an image"};try{return{ok:!0,mime:r,base64:YO(Zo(n,Xo,e)).toString("base64")}}catch{return{ok:!1,error:"not found"}}}var VO,zO,Wy=v(()=>{"use strict";Qu();Lt();Uy();VO=4e3,zO=4e3});async function Vy(n,e=""){let t=n.trim();if(!t)return{ok:!1,error:"nothing to summarize"};if(!Fy())return{ok:!1,error:"Summary needs OPENROUTER_API_KEY or OPENAI_API_KEY in this project\u2019s .env.",setup:!0};let r=e.trim()?Yy+`CONTEXT \u2014 the user message this reply answers. It is context only: never summarize it, and never report it as the reply's content.
|
|
1733
|
+
`+ZO(e.trim())+`
|
|
1612
1734
|
|
|
1613
1735
|
REPLY TO SUMMARIZE:
|
|
1614
|
-
`+t.slice(0,
|
|
1736
|
+
`+t.slice(0,Hy):Yy+t.slice(0,Hy),s=await Go(r,QO,1);return s?{ok:!0,text:s}:{ok:!1,error:"the model call failed or timed out"}}var QO,Hy,Yy,ZO,zy=v(()=>{"use strict";Qu();QO=2e4,Hy=24e3,Yy=`Summarize this assistant reply for someone who wants its substance without the prose.
|
|
1615
1737
|
|
|
1616
1738
|
- Markdown. Start with the direct answer, recommendation, result, or status. If it is qualified, put the qualification in that same opening sentence; do not make the reader infer it from later bullets.
|
|
1617
1739
|
- Preserve material limits and conditions that change the answer: exceptions, tradeoffs, prerequisites, uncertainty, incomplete validation, and clauses such as but, only when, unless, or if. Cut only filler hedges (for example, "I think" or "arguably") that change nothing.
|
|
@@ -1626,23 +1748,23 @@ Reply with the summary alone.
|
|
|
1626
1748
|
|
|
1627
1749
|
---
|
|
1628
1750
|
|
|
1629
|
-
`,
|
|
1751
|
+
`,ZO=(n,e=4e3)=>{if(n.length<=e)return n;let t=Math.floor(e/2)-20;return n.slice(0,t)+`
|
|
1630
1752
|
|
|
1631
1753
|
[snipped for brevity]
|
|
1632
1754
|
|
|
1633
|
-
`+n.slice(n.length-t)}});function
|
|
1634
|
-
`))>=0;){let
|
|
1635
|
-
`).filter(Boolean):await n.walkFiles?.(e.cwd)??[];return(await Promise.all(k.map(async T=>{try{return{f:T,m:(await
|
|
1636
|
-
`)){if(!
|
|
1637
|
-
`)){if(!
|
|
1638
|
-
`)){let c=l.replace(/\s+/g," ").trim();c&&i.push({text:c,lower:c.toLowerCase()})}let{hitCount:o,snippet:a}=
|
|
1639
|
-
${n}`;return Mt?.key===e&&Date.now()-Mt.fetchedAt<=
|
|
1640
|
-
`)}function
|
|
1755
|
+
`+n.slice(n.length-t)}});function eP(n,...e){return n.slice().sort((t,r)=>{for(let{key:s,desc:i}of e){let o=s(t),a=s(r);if(o!==a)return o==null?i?-1:1:a==null||o<a?i?1:-1:i?-1:1}return 0})}var Gy,Xy=v(()=>{"use strict";Gy=(n,e)=>eP(n,{key:e,desc:!0})});import{existsSync as Qy,openSync as tP,readSync as nP,closeSync as rP,statSync as er,readdirSync as Zy,watchFile as sP,unwatchFile as eb,mkdirSync as iP,writeFileSync as oP,readFileSync as ea,unlinkSync as aP,rmSync as lP}from"fs";import{stat as cP}from"fs/promises";import{dirname as uP,join as cn,resolve as tb}from"path";function hP(n){if(!Number.isInteger(n))return!0;try{return process.kill(n,0),!0}catch(e){return e.code==="EPERM"}}function tr(n){let e={cwd:z,sessionId:"",sessionStartMs:Date.now(),buffer:[],partial:"",offset:0,latest:{in:0,out:0,cached:0,cacheCreate:0},latestModel:null,everAttached:!1,entries:new Map},t=new Set,r,s=0;function i(){if(e.file){for(let g of t)if(g.file===e.file)return g;return}return r}function o(g){let k={d:n.createDriver(e.cwd,g),file:g,id:`new:${++s}`,startedAt:Date.now()};return t.add(k),e.file||(r=k),k}function a(){let g=[...t].filter(w=>w.file);if(!g.length)return[];let k=new Map(n.listSessionFiles(e.cwd).map(w=>[w.file,w.sessionId]));return g.map(w=>{let T=k.get(w.file);return{rec:w,sessionId:T??w.id,pending:T===void 0}})}let l=()=>a().filter(g=>g.pending&&g.rec.prompt!==void 0);async function c(g){t.delete(g),r===g&&(r=void 0);try{await g.d.dispose()}catch(k){console.error("[composer] dispose:",Y(k))}}function d(){let g=i(),k=new Set(l().map(w=>w.rec));for(let w of[...t])w!==g&&(k.has(w)||w.d.streaming||w.d.queue||w.d.error||c(w))}function u(){for(let g of t)g.d.sessionFile&&g.file!==g.d.sessionFile&&(g.file=g.d.sessionFile);if(r&&!e.file&&r.file){let g=n.listSessionFiles(e.cwd).find(k=>k.file===r.file);g&&x(g)}r&&!e.file&&r.prompt!==void 0&&e.sessionId!==r.id&&($(void 0,r.id),e.everAttached=!0)}let f=g=>cn(g,fP),p=(g,k)=>cn(f(g),`${k}.lock`);function m(g,k){try{let w=p(g,k);if(Date.now()-er(w).mtimeMs>=nb)return!1;try{let T=parseInt(ea(w,"utf8").trim(),10);if(T===process.pid||!hP(T))return!1}catch{}return!0}catch{return!1}}function h(g,k){if(k)try{iP(f(g),{recursive:!0}),oP(p(g,k),String(process.pid))}catch(w){console.error("[lock] claim failed:",Y(w))}}function y(g){try{lP(cn(g,".claude-bulb"),{recursive:!0,force:!0})}catch{}}function A(g){let k=f(g);if(!Qy(k))return;let w;try{w=Zy(k)}catch{return}let T=Date.now();for(let N of w){if(!N.endsWith(".lock"))continue;let F=cn(k,N);try{let B=er(F);T-B.mtimeMs>pP&&aP(F)}catch{}}}function S(g){try{return er(g),!1}catch(k){return k.code==="ENOENT"}}function P(){let g=e;if(g.file&&!S(g.file)){h(g.cwd,g.sessionId);return}let k=C(g);k&&x(k)}function C(g){if(!g.everAttached)return _(g.cwd)??R(g.cwd,()=>!0)}function _(g){let k=f(g);if(!Qy(k))return;let w;try{w=Zy(k)}catch{return}let T;for(let F of w)if(F.endsWith(".lock"))try{let B=er(cn(k,F));if(Date.now()-B.mtimeMs>=nb||parseInt(ea(cn(k,F),"utf8").trim(),10)!==process.pid)continue;(!T||B.mtimeMs>T.mtime)&&(T={sessionId:F.slice(0,-5),mtime:B.mtimeMs})}catch{}if(!T)return;let N=n.listSessionFiles(g).find(F=>F.sessionId===T.sessionId);if(!(!N||S(N.file)))return N}function R(g,k){return n.listSessionFiles(g).sort((w,T)=>T.mtime-w.mtime).find(w=>!m(g,w.sessionId)&&k(w))}function $(g,k){let w=e;if(w.file)try{eb(w.file)}catch{}w.file=g,w.sessionId=k,w.partial="",w.offset=0,w.latest={in:0,out:0,cached:0,cacheCreate:0},w.latestModel=null,w.entries=new Map,w.chainLastId=void 0,w.buffer.push({type:"cleared"}),w.buffer.push({type:"session",sessionId:k})}function x(g){let k=e;r=void 0,$(g.file,g.sessionId),k.everAttached=!0,h(k.cwd,g.sessionId),K();try{eb(g.file)}catch{}sP(g.file,{interval:200},()=>K())}function D(){$(void 0,"")}function K(){let g=e;if(!g.file)return;let k;try{k=er(g.file).size}catch{return}if(k<=g.offset)return;let w;try{w=tP(g.file,"r")}catch{return}try{let H=k-g.offset,be=Buffer.alloc(H),ae=0;for(;ae<H;){let Vd=nP(w,be,ae,H-ae,g.offset+ae);if(!Vd)break;ae+=Vd}g.offset+=ae,g.partial+=be.subarray(0,ae).toString("utf8")}finally{rP(w)}let T,N;for(;(N=g.partial.indexOf(`
|
|
1756
|
+
`))>=0;){let H=g.partial.slice(0,N);if(g.partial=g.partial.slice(N+1),!H.trim())continue;let be=n.parseEntry(H);if(!be)continue;let ae=n.idOf(be);ae&&(g.entries.set(ae,be),!n.isSidechain(be)&&n.isLeafType(be)&&(T=ae))}if(!T)return;let F=[],B=g.entries.get(T),V=!1;for(;B;){if(F.push(B),n.idOf(B)===g.chainLastId){V=!0;break}let H=n.parentOf(B);B=H?g.entries.get(H):void 0}if(V)for(let H=F.length-2;H>=0;H--)I(F[H]);else{g.chainLastId!==void 0&&(g.buffer.push({type:"cleared"}),g.buffer.push({type:"session",sessionId:g.sessionId}),g.latest={in:0,out:0,cached:0,cacheCreate:0});let H=new Set(F.map(ae=>n.idOf(ae))),be=q(g.entries);for(let ae=F.length-1;ae>=0;ae--)I(F[ae]),b(n.idOf(F[ae]),be,H)}g.chainLastId=T}function q(g){let k=new Map;for(let w of g.values()){let T=n.parentOf(w);if(!T)continue;let N=k.get(T);N?N.push(w):k.set(T,[w])}return k}function b(g,k,w){if(!g)return;let T=k.get(g);if(!T)return;let N=T.filter(H=>!n.isSidechain(H));if(N.length<2)return;let F=N.filter(H=>!w.has(n.idOf(H)));if(!F.length)return;let B=[],V=0;for(let H of F){let be=E(H,k);B.push(...be.events),V+=be.count}V>0&&e.buffer.push({type:"fork",atId:g,count:V,events:B})}function E(g,k){let w=[],T=[g];for(;T.length;){let B=T.pop();if(n.isSidechain(B))continue;w.push(B);let V=k.get(n.idOf(B)??"");if(V)for(let H of V)T.push(H)}w.sort((B,V)=>(Date.parse(n.timestampOf(B)??"")||0)-(Date.parse(n.timestampOf(V)??"")||0));let N=[];for(let B of w)n.isRecoveryNoise(B)||N.push(...n.apply(B,e.sessionStartMs).events);return{count:N.reduce((B,V)=>B+(V.type==="user"||V.type==="assistant"?1:0),0),events:N}}function I(g){try{let{events:k,usage:w,model:T,cost:N}=n.apply(g,e.sessionStartMs);for(let F of k)e.buffer.push(F);k.some(F=>F.type==="assistant")&&i()?.d.clearCompletedDraft(),k.some(F=>F.type==="user")&&i()?.d.clearEcho(),T&&(e.latestModel=T),w&&(e.latest=w),(w||N)&&e.buffer.push({type:"usage",...e.latest,cost:N})}catch(k){console.error("[mirror] skipped malformed entry:",Y(k))}}async function L(){return{cwd:e.cwd,pid:process.pid,composer:!!n.createDriver,elsewhere:await M()}}async function M(){if(n.listSessionFiles(e.cwd).length)return;let g=await ln();if(!g)return;let k=tb(g).toLowerCase();for(let w=tb(e.cwd);w.toLowerCase()!==k;){let T=uP(w);if(T===w)return;w=T;let N=n.listSessionFiles(w).length;if(N)return{dir:w,count:N}}}M().then(g=>{g&&console.log(`No sessions for ${e.cwd} \u2014 ${g.count} exist for ${g.dir}. Launched from a subfolder? Relaunch from the project root.`)}).catch(()=>{});let W=new Yo;async function G(g,k){W.accept(g,k)&&console.log(k)}function he(){let g=n.sessionAlive(e.sessionId,e.cwd);if(g!==void 0)return g;if(!e.file)return!1;try{return Date.now()-er(e.file).mtimeMs<1e4}catch{return!1}}function ee(){return n.chainWorking([...e.entries.values()])&&he()}function oe(){!n.createDriver||i()||e.latestModel||ee()||o(e.file)}async function ke(g){let k=e;P(),u(),oe(),d();let w=i();for(let B of t)B!==w&&B.d.dialog;let T=a().filter(B=>B.rec.d.streaming).map(B=>B.sessionId),N=ee(),F=n.createDriver?{streaming:!!w?.d.streaming,foreign:!w&&N,draft:w?.d.draft??null,echo:w?.d.echo??null,status:w?.d.status??null,dialog:w?.d.dialog??null,queue:w?.d.queue??null,stats:w?.d.stats??null,model:w?.d.model??null,error:w?.d.error}:void 0;return{events:k.buffer.slice(g),cursor:k.buffer.length,working:!!w?.d.streaming||N,latestModel:k.latestModel,composer:F,busy:T}}async function Re(){P(),u();let g=i();if(g?.d.error&&!g.d.streaming&&(await c(g),g=void 0),!g){if(ee())return{ok:!1,error:"the agent is mid-turn in a terminal \u2014 watch only"};g=o(e.file)}let k=g;return{ok:!0,d:k.d,markSent:w=>{k.prompt===void 0&&(k.prompt=w)}}}async function or(g,k){if(!n.createDriver)return{ok:!1,error:"not supported"};let w=String(g??"").trim();if(!w)return{ok:!1,error:"empty message"};let T=await Re();if(!T.ok)return T;let N=await T.d.send(w,k);return N.ok&&T.markSent(w),N}async function Gw(g,k){let w=i();return w?w.d.respondUi(String(g??""),k??{}):{ok:!1,error:"no dialog pending"}}async function Xw(g,k){if(!n.createDriver)return{ok:!1,error:"not supported"};if(!g||typeof g.type!="string")return{ok:!1,error:"bad command"};if(k?.spawn){let T=await Re();return T.ok?T.d.rpc(g):T}let w=i();return!w||w.d.error?{ok:!1,error:"not running"}:w.d.rpc(g)}async function Qw(){let g=i();if(g)try{await g.d.stop()}catch(k){console.error("[composer] stop:",Y(k))}return{ok:!0}}async function Zw(){return n.createDriver?(u(),!e.file&&r&&r.prompt===void 0&&!r.d.streaming&&!r.d.error?{ok:!0}:(r?.d.error&&await c(r),r=void 0,D(),o(void 0),d(),{ok:!0})):{ok:!1,error:"not supported"}}async function ev(){if(!n.createDriver)return[];let g=await Je(["ls-files","--cached","--others","--exclude-standard"],e.cwd).catch(()=>null),k=g!==null?g.split(`
|
|
1757
|
+
`).filter(Boolean):await n.walkFiles?.(e.cwd)??[];return(await Promise.all(k.map(async T=>{try{return{f:T,m:(await cP(cn(e.cwd,T))).mtimeMs}}catch{return{f:T,m:0}}}))).sort((T,N)=>N.m-T.m).map(T=>T.f)}function tv(){for(let g of[...t])c(g)}async function nv(g){return n.createDriver?Jy(e.cwd,g):{ok:!1,error:"not supported"}}async function rv(g){return Ky(e.cwd,String(g??""))}async function sv(g,k){return Vy(String(g??""),String(k??""))}async function iv(){let g=n.listSessionFiles(e.cwd).map(({sessionId:w,file:T,mtime:N})=>({sessionId:w,mtime:N,preview:n.readPreview(T)})),k=l().map(w=>({sessionId:w.sessionId,mtime:w.rec.startedAt,preview:w.rec.prompt??"",pending:!0}));return Gy([...g,...k],w=>w.mtime)}let Wd=new Map;function ov(g,k){let w=Wd.get(g);if(w&&w.mtime===k)return w.turns;let T=[],N="";try{N=ea(g,"utf8")}catch{return[]}for(let F of N.split(`
|
|
1758
|
+
`)){if(!F.trim())continue;let B=n.parseEntry(F);if(!B)continue;let V=n.searchText(B);V&&T.push({text:V,lower:V.toLowerCase()})}return Wd.set(g,{mtime:k,turns:T}),T}async function av(g){let k=g.toLowerCase(),w=[];for(let{sessionId:T,file:N,mtime:F}of n.listSessionFiles(e.cwd).sort((B,V)=>V.mtime-B.mtime)){let{hitCount:B,snippet:V}=zo(ov(N,F),k);if(B&&(w.push({sessionId:T,mtime:F,preview:n.readPreview(N),hitCount:B,snippet:V}),w.length>=mP))break}return w}let Hd=800,Yd=new Map;function lv(g,k){let w=Yd.get(g);if(w&&w.mtime===k)return w.text;let T="";try{T=ea(g,"utf8")}catch{return""}let N="";for(let B of T.split(`
|
|
1759
|
+
`)){if(!B.trim())continue;let V=n.parseEntry(B);if(V)for(let H of n.apply(V,e.sessionStartMs).events)H.type==="assistant"&&H.text.trim()&&(N=H.text.trim())}let F=N.length>Hd?N.slice(0,Hd).trimEnd()+"\u2026":N;return Yd.set(g,{mtime:k,text:F}),F}async function cv(g){let k=n.listSessionFiles(e.cwd).find(w=>w.sessionId===g);return{text:k?lv(k.file,k.mtime):""}}async function uv(g){let k=e,w=n.listSessionFiles(k.cwd).find(T=>T.sessionId===g);if(!w){let T=l().find(N=>N.sessionId===g)?.rec;return T?((r!==T||k.sessionId!==T.id)&&(r=T,$(void 0,T.id),k.everAttached=!0,d()),{ok:!0}):{ok:!1,error:"session not found"}}return w.file===k.file?{ok:!0}:(x(w),u(),d(),{ok:!0})}return y(e.cwd),A(e.cwd),P(),{info:L,poll:ke,logInlineStatus:G,listSessions:iv,searchSessions:av,sessionPeek:cv,attach:uv,composerSend:or,composerStop:Qw,composerNew:Zw,composerFiles:ev,composerUiRespond:Gw,composerRpc:Xw,composerPaste:nv,composerPasteRead:rv,summarizeTurn:sv,shutdownComposer:tv}}var dP,fP,nb,pP,mP,ta=v(()=>{"use strict";Lt();My();ws();Xu();Wy();zy();Xy();dP=".typebulb",fP=`${dP}/locks`,nb=5e3,pP=6e4;mP=50});import{existsSync as nd,mkdirSync as gP,readFileSync as rb,writeFileSync as yP}from"fs";import{join as un,isAbsolute as bP}from"path";async function sd(n,e){let t=bP(n)?n:un(z,n);return nd(t)?(Nu(t,e),{ok:!0}):{ok:!1,error:"file not found"}}async function id(n){let e=z,t=Iu(n),r=un(e,"typebulbs");gP(r,{recursive:!0});let s=Hc(t),i=`${s}.bulb.md`;for(let c=2;nd(un(r,i))&&rb(un(r,i),"utf8")!==t;c++)i=`${s}-${c}.bulb.md`;let o=un(r,i);nd(o)||yP(o,t);let a=un("typebulbs",i),l=await Gi(a,{cwd:e,open:!1});return{ok:!0,file:a,pid:l.pid,url:l.url}}async function od(){return Q(z)}async function ad(n){return await Yt(n),{ok:!0}}async function ld(){let n=await ps(z);return Ro(z).filter(e=>!e.serverOnly).map(e=>({...e,trusted:on(e.path),batches:Pu(e.path),lastRunAt:n(e.path)}))}async function cd(n){let e=n.toLowerCase(),t=[];for(let r of Ro(z).filter(s=>!s.serverOnly).sort((s,i)=>i.mtime-s.mtime)){let s="";try{s=rb(r.path,"utf8")}catch{continue}let i=[];for(let l of s.split(`
|
|
1760
|
+
`)){let c=l.replace(/\s+/g," ").trim();c&&i.push({text:c,lower:c.toLowerCase()})}let{hitCount:o,snippet:a}=zo(i,e);o&&t.push({path:r.path,hitCount:o,snippet:a})}return t}async function ud(n,e,t){let r=z;e!=null&&Vn(n,e);let s=await Gi(n,{cwd:r,open:!1,trust:e,batch:t??void 0});return{ok:!0,file:s.file,pid:s.pid,url:s.url,trust:!!s.trust}}async function dd(n){return{cap:await Ru(n)}}async function fd(n,e){return Vn(n,e),{ok:!0}}async function pd(n,e){return He(n,e)}async function hd(){return vs&&Date.now()-vs.fetchedAt<=vP?vs.samples:(Zu??=SP().finally(()=>{Zu=null}),Zu)}async function SP(){try{let n=await fetch(`${wP}/api/scripts/u/samples?stubs`,{signal:AbortSignal.timeout(ib)});if(!n.ok)throw new Error(`HTTP ${n.status}`);let e=await n.json(),t=i=>i.order??Number.MAX_SAFE_INTEGER,r=i=>Date.parse(i.createdAt??"")||0,s=e.filter(i=>i.slug!=="welcome").sort((i,o)=>t(i)-t(o)||r(o)-r(i)).map(i=>({slug:i.slug,name:i.name,description:Da(i.config)}));return vs={samples:s,fetchedAt:Date.now()},s}catch{return vs?.samples??[]}}async function md(n){return rd.test(n)?ab(sb,"samples",n,!0):{ok:!1,error:"bad slug"}}async function yd(){let n=gd();if(!n)return{bulbs:[]};let e=`${na()}
|
|
1761
|
+
${n}`;return Mt?.key===e&&Date.now()-Mt.fetchedAt<=kP?{user:Mt.user,bulbs:Mt.bulbs}:(ed??=xP(e,n).finally(()=>{ed=null}),ed)}async function td(n,e,t){let r=await fetch(`${n}${e}`,{headers:t,signal:AbortSignal.timeout(ib)});if(!r.ok)throw new Error(`HTTP ${r.status}`);if(!r.headers.get("content-type")?.includes("json"))throw new Error("not json");return r.json()}async function xP(n,e){let t={Authorization:`Bearer ${e}`};try{let r=na(),s;try{s=await td(r,"/api/me",t)}catch{let a=new URL(r);r=`${a.protocol}//api.${a.host}`,s=await td(r,"/api/me",t)}let o=(await td(r,"/api/scripts/list",t)).filter(a=>a.userSlug===s.slug&&!a.isTemplate).map(a=>({slug:a.slug,name:a.name,description:Da(a.config)}));return Mt={key:n,user:s.slug,bulbs:o,fetchedAt:Date.now()},{user:s.slug,bulbs:o}}catch{return Mt?.key===n?{user:Mt.user,bulbs:Mt.bulbs}:{bulbs:[]}}}async function bd(n,e,t=!1){return!rd.test(e)||!rd.test(n)?{ok:!1,error:"bad slug"}:ab(na(),n,e,t)}async function ab(n,e,t,r){let s=Do(e,t);try{let i=await Uo({origin:n,userSlug:e,slug:t,dest:un(z,s)},{force:r,token:gd(),timeoutMs:ob});return i.kind==="conflict"?{ok:!1,conflict:!0,error:"local file differs from the site copy"}:i.kind==="asset-conflict"?{ok:!1,conflict:!0,error:`local assets differ from the site copies (${i.paths.join(", ")})`}:i.kind==="http-error"?{ok:!1,error:`HTTP ${i.status}`}:i.kind==="not-markdown"?{ok:!1,error:`not a bulb (${i.contentType??"no content-type"})`}:{ok:!0,file:s,upToDate:i.kind==="up-to-date"}}catch(i){return{ok:!1,error:i?.message??String(i)}}}async function wd(n,e=!1){let t=gd();if(!t)return{ok:!1,error:"no TYPEBULB_TOKEN in .env"};try{let r=Fo(n,z,na()),s=await Jo(r,{token:t,force:e,timeoutMs:ob});return s.kind==="conflict"?{ok:!1,conflict:!0,error:s.message}:s.kind==="asset-error"?{ok:!1,error:`assets sync failed: ${s.message}`}:s.kind==="http-error"?{ok:!1,error:`HTTP ${s.status}: ${s.message}`}:{ok:!0,created:s.created,serverStripped:s.serverStripped}}catch(r){return{ok:!1,error:r?.message??String(r)}}}var wP,sb,vP,ib,ob,vs,Zu,rd,kP,Mt,ed,na,gd,ra=v(()=>{"use strict";Xn();Lt();Xu();ne();wP="https://api.typebulb.com",sb="https://typebulb.com",vP=3600*1e3,ib=5e3,ob=15e3,vs=null,Zu=null;rd=/^[a-z0-9][a-z0-9-]*$/,kP=300*1e3,Mt=null,ed=null,na=()=>Eo("TYPEBULB_ORIGIN",z)||sb,gd=()=>Eo("TYPEBULB_TOKEN",z)});import{readFileSync as kd,writeFileSync as cb,mkdirSync as EP,appendFileSync as ub,rmSync as lb}from"fs";import{join as oa,dirname as AP}from"path";import{createServer as TP}from"http";function Bt(n){try{return JSON.parse(kd(n,"utf8"))}catch{return null}}function ia(n,e){EP(AP(n),{recursive:!0}),cb(n,JSON.stringify(e,null,2)+`
|
|
1762
|
+
`)}function fb(n,e,t){let r=oa(n,".gitignore"),s="";try{s=kd(r,"utf8")}catch{}let i=new Set(s.split(/\r?\n/).map(l=>l.trim())),o=e.filter(l=>!i.has(l));if(!o.length)return;let a=s&&!s.endsWith(`
|
|
1641
1763
|
`)?`
|
|
1642
|
-
`:"";try{
|
|
1764
|
+
`:"";try{ub(r,a+t+`
|
|
1643
1765
|
`+o.join(`
|
|
1644
1766
|
`)+`
|
|
1645
|
-
`)}catch(l){console.error("[switcher] .gitignore update failed",Y(l))}}function
|
|
1767
|
+
`)}catch(l){console.error("[switcher] .gitignore update failed",Y(l))}}function RP(n){let e=i=>{let o=i.exec(n);return o?Number(o[1]):0},t=e(/"cache_read_input_tokens":\s*(\d+)/),r=e(/"cache_creation_input_tokens":\s*(\d+)/),s=e(/"input_tokens":\s*(\d+)/);t>0||r>0?xs="live":s>_P&&(xs="uncached")}function hb(n,e){let t={"content-type":"application/json",authorization:`Bearer ${e}`,"anthropic-version":n.headers["anthropic-version"]||"2023-06-01"},r=n.headers["anthropic-beta"];return typeof r=="string"&&(t["anthropic-beta"]=r),t}function IP(n){if(Array.isArray(n?.messages))for(let e of n.messages){if(!Array.isArray(e?.content))continue;let t=e.content.filter(r=>r?.type!=="thinking"&&r?.type!=="redacted_thinking");t.length&&t.length!==e.content.length&&(e.content=t)}}function mb(n){let e;try{e=JSON.parse(n)}catch{return n}ks=typeof e?.model=="string"?e.model:null,Xe&&(e.model=Xe),fn&&(e.provider=pb(fn));let t=/haiku/i.test(ks||"");return Es!=null&&!t&&(e.reasoning={effort:vd[Es]}),delete e.thinking,e.output_config&&delete e.output_config.effort,IP(e),JSON.stringify(e)}function NP(){let n="",e=0,t=new Map,r=new Set(["thinking","redacted_thinking"]),s=i=>{let o=/^data: (.*)$/m.exec(i);if(!o)return i;let a;try{a=JSON.parse(o[1])}catch{return i}switch(a.type){case"message_start":return t.clear(),e=0,i;case"content_block_start":{if(r.has(a.content_block?.type))return t.set(a.index,null),null;let l=e++;return t.set(a.index,l),a.index=l,`event: ${a.type}
|
|
1646
1768
|
data: ${JSON.stringify(a)}
|
|
1647
1769
|
|
|
1648
1770
|
`}case"content_block_delta":case"content_block_stop":{let l=t.get(a.index);return l==null?null:(a.index=l,`event: ${a.type}
|
|
@@ -1650,11 +1772,11 @@ data: ${JSON.stringify(a)}
|
|
|
1650
1772
|
|
|
1651
1773
|
`)}default:return i}};return i=>{n+=i;let o="",a;for(;(a=n.indexOf(`
|
|
1652
1774
|
|
|
1653
|
-
`))!==-1;){let l=n.slice(0,a);if(n=n.slice(a+2),!l.trim())continue;let c=s(l);c!==null&&(o+=c)}return o}}function
|
|
1775
|
+
`))!==-1;){let l=n.slice(0,a);if(n=n.slice(a+2),!l.trim())continue;let c=s(l);c!==null&&(o+=c)}return o}}function $P(n){return new Promise(e=>{let t=[];n.on("data",r=>t.push(r)),n.on("end",()=>e(Buffer.concat(t).toString("utf8"))),n.on("error",()=>e(Buffer.concat(t).toString("utf8")))})}function Ss(n,e,t,r){n.writableEnded||(n.writeHead(e,{"content-type":"application/json"}),n.end(JSON.stringify({type:"error",error:{type:t,message:r}})))}async function LP(n,e,t){if(!Xe){Ss(e,400,"invalid_request_error",CP);return}let r=process.env.OPENROUTER_API_KEY;if(!r){Ss(e,401,"authentication_error","OPENROUTER_API_KEY not set in the typebulb proxy");return}let s=new AbortController;e.on("close",()=>{e.writableEnded||s.abort()});let i;try{i=await fetch(xd,{method:"POST",headers:hb(n,r),body:mb(t),signal:s.signal})}catch(u){Ss(e,502,"api_error",`proxy upstream failed: ${Y(u)}`);return}let o=i.headers.get("content-type")||"application/json";if(e.writeHead(i.status,{"content-type":o}),!i.body){e.end();return}let a=o.includes("event-stream"),l=i.body.getReader(),c=new TextDecoder,d=a?NP():null;try{for(;;){let{done:u,value:f}=await l.read();if(u)break;if(f)if(d){let p=c.decode(f,{stream:!0});RP(p);let m=d(p);m&&e.write(m)}else e.write(Buffer.from(f))}}catch{}finally{e.writableEnded||e.end()}}async function MP(n,e,t){let r=process.env.OPENROUTER_API_KEY,s=()=>{e.writeHead(200,{"content-type":"application/json"}),e.end(JSON.stringify({input_tokens:Math.max(1,Math.ceil(t.length/4))}))};if(!Xe||!r)return s();try{let i=await fetch(`${xd}/count_tokens`,{method:"POST",headers:hb(n,r),body:mb(t)});if(!i.ok)return s();let o=await i.text();e.writeHead(200,{"content-type":"application/json"}),e.end(o)}catch{s()}}function BP(n,e){let t=n.url||"/";if(n.method==="HEAD"){e.writeHead(200),e.end();return}if(n.method!=="POST"){Ss(e,404,"not_found_error",t);return}$P(n).then(r=>{if(t.includes("count_tokens"))return MP(n,e,r);if(t.includes("/v1/messages"))return LP(n,e,r);Ss(e,404,"not_found_error",t)})}function DP(){return nr&&dn?Promise.resolve(dn):new Promise((n,e)=>{let t=TP(BP);t.on("error",e),t.listen(0,"127.0.0.1",()=>{nr=t,dn=t.address().port,console.log(`[switcher] wire proxy listening on ${sa(dn)}`),n(dn)})})}function jP(){try{nr?.close()}catch{}nr=null,dn=null}function FP(n,e){let t=aa(n),r=Bt(t),s=r||{};if((!s.env||typeof s.env!="object")&&(s.env={}),s.env.ANTHROPIC_BASE_URL===sa(e)&&s.env.ANTHROPIC_AUTH_TOKEN)return;let i=la(n);if(!Bt(i)){let a={};for(let l of db)a[l]=l in s.env?s.env[l]:null;ia(i,{managedBy:"agent-switcher",fileExisted:r!==null,snapshot:a,active:null})}s.env.ANTHROPIC_BASE_URL=sa(e),s.env.ANTHROPIC_AUTH_TOKEN=PP,ia(t,s),fb(n,[".claude/settings.local.json",".claude/.cc-switcher.json"],"# agent switcher (local Claude Code model override)")}function UP(n,e,t){let r=la(n),s=Bt(r)||{managedBy:"agent-switcher",fileExisted:!1,snapshot:{}};s.active={model:e,provider:t},ia(r,s)}function gb(n){let e=aa(n),t=la(n),r=Bt(t),s=Bt(e);if(s?.env){let i=r?.snapshot||{};for(let o of db){let a=i[o];a==null?delete s.env[o]:s.env[o]=a}if(Object.keys(s.env).length===0&&delete s.env,r?.fileExisted===!1&&Object.keys(s).length===0)try{lb(e,{force:!0})}catch{}else ia(e,s)}try{lb(t,{force:!0})}catch{}}async function qP(){let n=!!process.env.OPENROUTER_API_KEY,e=[];try{e=(await ot()).filter(r=>r.provider==="openrouter"&&!Ed(r.name)).map(r=>({id:r.name,label:r.friendlyName||r.name}))}catch(r){console.error("[switcher] model list failed",Y(r))}let t=e.length?void 0:xu()??void 0;return{hasKey:n,models:e,error:t}}async function JP(){if(nr&&Xe)return{active:!0,managed:!0,model:Xe,port:dn,provider:fn,routedModel:ks,caching:xs,reasoning:Es,externalBaseUrl:null};let n=Bt(aa(z))?.env||{};return{active:!1,managed:!1,model:null,port:null,provider:null,routedModel:null,caching:"unknown",reasoning:Es,externalBaseUrl:n.ANTHROPIC_BASE_URL||null}}async function yb(n,e){let t=await DP();return Xe=n,fn=e,FP(z,t),t}async function KP({model:n}){if(!process.env.OPENROUTER_API_KEY)return{ok:!1,error:"OPENROUTER_API_KEY not set \u2014 add a key first"};if(!n)return{ok:!1,error:"no model given"};if(Ed(n))return{ok:!1,error:"Refusing to route an Anthropic model through OpenRouter \u2014 that bills full API rate with no caching. Use it on your Anthropic subscription instead."};try{await yb(n,Ad[n]??null),ks=null,xs="unknown",UP(z,n,fn)}catch(e){return{ok:!1,error:`failed to start the wire proxy: ${Y(e)}`}}return{ok:!0}}async function WP({level:n}){return n!=null&&(!Number.isInteger(n)||n<0||n>=vd.length)?{ok:!1,error:`reasoning level must be 0\u2013${vd.length-1} or null`}:(Es=n,{ok:!0,level:n})}async function HP(){return gb(z),Xe=null,fn=null,ks=null,xs="unknown",{ok:!0}}async function YP({key:n}){let e=(n||"").trim();if(!e)return{ok:!1,error:"empty key"};let t=z,r=oa(t,".env"),s="";try{s=kd(r,"utf8")}catch{}try{if(/^\s*OPENROUTER_API_KEY\s*=/m.test(s))cb(r,s.replace(/^\s*OPENROUTER_API_KEY\s*=.*$/m,`OPENROUTER_API_KEY=${e}`));else{let i=s&&!s.endsWith(`
|
|
1654
1776
|
`)?`
|
|
1655
|
-
`:"";
|
|
1656
|
-
`)}}catch(i){return{ok:!1,error:Y(i)}}return process.env.OPENROUTER_API_KEY=e,
|
|
1657
|
-
`)}catch(o){return{ok:!1,error:`could not write ${n}: ${Y(o)}`}}return{ok:!0,count:e.length}}var
|
|
1777
|
+
`:"";ub(r,i+`OPENROUTER_API_KEY=${e}
|
|
1778
|
+
`)}}catch(i){return{ok:!1,error:Y(i)}}return process.env.OPENROUTER_API_KEY=e,fb(t,[".env"],"# secrets"),{ok:!0}}function VP(){if(!(!nr&&!Xe)){try{gb(z)}catch{}jP()}}function zP(n,e){return bb.test(e)?"blocked by your OpenRouter data policy":n===401||n===403||/unauthor|invalid api key|no auth|forbidden/i.test(e)?"auth rejected \u2014 check your OpenRouter key":n===404||/not a valid model|no such model|unknown model|model not found/i.test(e)?"model not found on this route":n===429||/rate limit/i.test(e)?"rate limited":n===402||/insufficient|credit|quota|balance/i.test(e)?"out of credits / quota":e.slice(0,160)}function GP(n){if(bb.test(n))return"This model's only provider(s) require prompt logging/training, which your OpenRouter account disallows by default. Allow it (or that provider) at openrouter.ai/settings/privacy, then probe again."}function XP(n,e,t){if(!n)return{works:null,read:0,note:t?`couldn't re-test on ${t} \u2014 caching unconfirmed`:"caching unconfirmed"};let r=Sd(e?.cache_read_input_tokens)||Sd(e?.prompt_tokens_details?.cached_tokens),s=e?.cache_read_input_tokens!==void 0||e?.cache_creation_input_tokens!==void 0||e?.prompt_tokens_details!==void 0;return r>0?{works:!0,read:r,note:`${r} tokens read from cache on the 2nd call`}:s?{works:!1,read:r,note:"no cache reads after a warm call \u2014 every turn re-bills the full context"}:{works:null,read:r,note:"route doesn't report cache usage \u2014 caching almost certainly not honored"}}async function QP({model:n}){let e=process.env.OPENROUTER_API_KEY;if(!e)return{ok:!1,error:"OPENROUTER_API_KEY not set \u2014 add a key first"};if(!n)return{ok:!1,error:"no model given"};if(Ed(n))return{ok:!1,error:"Anthropic model \u2014 not offered or probed via OpenRouter"};let t=Date.now(),r=Array(350).fill("Caching probe filler sentence; its only purpose is to exceed the prompt-cache minimum token threshold.").join(" "),s={"content-type":"application/json",authorization:`Bearer ${e}`,"anthropic-version":"2023-06-01"},i={model:n,max_tokens:64,system:[{type:"text",text:r,cache_control:{type:"ephemeral"}}],messages:[{role:"user",content:"Reply with exactly: ok"}]},o=async a=>{let l=new AbortController,c=setTimeout(()=>l.abort(),2e4);try{let d=JSON.stringify(a?{...i,provider:pb(a)}:i),u=await fetch(xd,{method:"POST",signal:l.signal,headers:s,body:d}),f=await u.json().catch(()=>({}));return{r:u,j:f}}finally{clearTimeout(c)}};try{let{r:a,j:l}=await o();if(!a.ok){let A=l?.error?.message||l?.message||JSON.stringify(l).slice(0,300);return{ok:!0,callable:!1,status:a.status,ms:Date.now()-t,error:zP(a.status,A),restriction:GP(A)}}let c=typeof l?.provider=="string"?l.provider:void 0,d=l?.content?.find?.(A=>A.type==="text")?.text??l?.content?.[0]?.text??"ok",u=Sd(l?.usage?.cache_creation_input_tokens),{r:f,j:p}=await o(c),{works:m,read:h,note:y}=XP(f.ok,p?.usage,c);return m===!0&&c&&(Ad[n]=c,Xe===n&&(fn=c)),{ok:!0,callable:!0,status:a.status,ms:Date.now()-t,provider:c,sample:String(d).trim().slice(0,60),cache:{works:m,created:u,read:h,note:y}}}catch(a){let l=Y(a);return{ok:!0,callable:!1,ms:Date.now()-t,error:/abort/i.test(l)?"timed out (20s)":l}}}var OP,xd,PP,CP,db,_P,vd,aa,la,sa,Ed,nr,dn,Xe,fn,ks,xs,Es,Ad,Sd,pb,bb,wb=v(()=>{"use strict";Xn();Lt();OP="https://openrouter.ai/api",xd=`${OP}/v1/messages`,PP="typebulb-proxy-managed",CP="The typebulb model override was reverted to Anthropic, but this Claude Code session still points at the now-idle proxy. Reload the window (VS Code/Cursor: \u201CDeveloper: Reload Window\u201D) or relaunch `claude` in a terminal to return to your Anthropic subscription.",db=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN"],_P=5e3,vd=["low","medium","high"],aa=n=>oa(n,".claude","settings.local.json"),la=n=>oa(n,".claude",".cc-switcher.json"),sa=n=>`http://127.0.0.1:${n}`;Ed=n=>/^anthropic\//i.test(n)||/claude/i.test(n),nr=null,dn=null,Xe=null,fn=null,ks=null,xs="unknown",Es=1,Ad={},Sd=n=>typeof n=="number"?n:0,pb=n=>({order:[n],allow_fallbacks:!1});bb=/data policy|no endpoints|no allowed providers|privacy|requires.*(training|logging|data)/i;(async function(){try{let e=Bt(la(z)),t=e?.active?.model;if(!t)return;let s=(Bt(aa(z))?.env||{}).ANTHROPIC_BASE_URL||"";if(!/127\.0\.0\.1|localhost/.test(s))return;let i=await yb(t,e.active.provider??Ad[t]??null);console.log(`[switcher] re-adopted override after restart: ${t} via ${sa(i)}`)}catch(e){console.error("[switcher] boot reconcile failed",Y(e))}})()});var Sb={};_a(Sb,{attach:()=>oC,blockToMarkdown:()=>Ji,breakout:()=>id,capText:()=>we,cleanUserText:()=>xt,clearSwitchModel:()=>HP,composerPasteRead:()=>aC,displayName:()=>ZP,downloadSample:()=>md,firstLineDigest:()=>Le,git:()=>Je,gitChangedFiles:()=>zu,gitDiff:()=>Gu,info:()=>eC,isHiddenTurn:()=>Kr,launchBulb:()=>ud,listBreakouts:()=>od,listBulbFiles:()=>ld,listMyBulbs:()=>yd,listSamples:()=>hd,listSessions:()=>rC,listSwitchModels:()=>qP,logInlineStatus:()=>nC,openFile:()=>sd,poll:()=>tC,predictTrustOf:()=>dd,probeModel:()=>QP,pullRemoteBulb:()=>bd,pushLocalBulb:()=>wd,readBulbLog:()=>pd,repoRoot:()=>ln,saveOpenRouterKey:()=>YP,searchBulbs:()=>cd,searchSessions:()=>sC,sessionPeek:()=>iC,setBulbTrust:()=>fd,setReasoning:()=>WP,setSwitchModel:()=>KP,shutdownSwitcher:()=>VP,stopBreakout:()=>ad,summarizeTurn:()=>lC,switchState:()=>JP,toolResultDigest:()=>$c});var vb,ZP,eC,tC,nC,rC,sC,iC,oC,aC,lC,kb=v(()=>{"use strict";ta();Ki();ra();ws();wb();Ki();Jr();vb=new Pn,ZP=vb.displayName,{info:eC,poll:tC,logInlineStatus:nC,listSessions:rC,searchSessions:sC,sessionPeek:iC,attach:oC,composerPasteRead:aC,summarizeTurn:lC}=tr(vb)});var Eb={};_a(Eb,{attach:()=>gC,breakout:()=>id,composerPasteRead:()=>yC,displayName:()=>cC,downloadSample:()=>md,git:()=>Je,gitChangedFiles:()=>zu,gitDiff:()=>Gu,info:()=>uC,launchBulb:()=>ud,listBreakouts:()=>od,listBulbFiles:()=>ld,listMyBulbs:()=>yd,listSamples:()=>hd,listSessions:()=>pC,logInlineStatus:()=>fC,openFile:()=>sd,poll:()=>dC,predictTrustOf:()=>dd,pullRemoteBulb:()=>bd,pushLocalBulb:()=>wd,readBulbLog:()=>pd,repoRoot:()=>ln,searchBulbs:()=>cd,searchSessions:()=>hC,sessionPeek:()=>mC,setBulbTrust:()=>fd,stopBreakout:()=>ad,summarizeTurn:()=>bC});var xb,cC,uC,dC,fC,pC,hC,mC,gC,yC,bC,Ab=v(()=>{"use strict";ta();Mc();ra();ws();xb=new Cn,cC=xb.displayName,{info:uC,poll:dC,logInlineStatus:fC,listSessions:pC,searchSessions:hC,sessionPeek:mC,attach:gC,composerPasteRead:yC,summarizeTurn:bC}=tr(xb)});import{readFileSync as wC,writeFileSync as vC,mkdirSync as SC}from"fs";import{homedir as kC}from"os";import*as ca from"path";async function Pb(){try{let n=await fetch(new URL("/api/tags",Ob()).toString(),{signal:AbortSignal.timeout(xC)});return n.ok?((await n.json()).models??[]).map(t=>t.name).filter(t=>!!t):[]}catch{return[]}}function Cb(n){let e;try{e=wC(n,"utf-8")}catch{return{json:void 0,unreadable:!1}}try{let t=JSON.parse(e);if(t&&typeof t=="object"&&!Array.isArray(t)){let r=t;return{json:r,unreadable:"providers"in r&&!Td(r)}}}catch{}return{json:void 0,unreadable:!0}}function Td(n){let e=n?.providers;return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function EC(n){let e=Td(n);if(!e||!("ollama"in e))return null;let t=e.ollama?.models;return Array.isArray(t)?t.map(r=>r?.id).filter(r=>typeof r=="string"):[]}async function _b(){let{json:n,unreadable:e}=Cb(Tb());return e?{installed:[],configured:null}:{installed:await Pb(),configured:EC(n)}}async function Rb(){let n=await Pb();return n.length?AC(Tb(),n,Ob()):{ok:!1,error:"Ollama is not running (or has no models installed)"}}function AC(n,e,t){let{json:r,unreadable:s}=Cb(n);if(s)return{ok:!1,error:`could not parse ${n} \u2014 edit the ollama provider there yourself`};let i={...r??{},providers:{...Td(r)??{},ollama:{baseUrl:`${t}/v1`,api:"openai-completions",apiKey:"ollama",models:e.map(o=>({id:o}))}}};try{SC(ca.dirname(n),{recursive:!0}),vC(n,JSON.stringify(i,null,2)+`
|
|
1779
|
+
`)}catch(o){return{ok:!1,error:`could not write ${n}: ${Y(o)}`}}return{ok:!0,count:e.length}}var xC,Tb,Ob,Ib=v(()=>{"use strict";Lt();Xn();xC=1500,Tb=()=>ca.join(kC(),".pi","agent","models.json"),Ob=()=>qn(process.env.OLLAMA_HOST??"http://localhost:11434")});var $b={};_a($b,{attach:()=>NC,breakout:()=>id,composerFiles:()=>BC,composerNew:()=>MC,composerPaste:()=>FC,composerPasteRead:()=>UC,composerRpc:()=>jC,composerSend:()=>$C,composerStop:()=>LC,composerUiRespond:()=>DC,displayName:()=>TC,downloadSample:()=>md,git:()=>Je,gitChangedFiles:()=>zu,gitDiff:()=>Gu,info:()=>OC,launchBulb:()=>ud,listBreakouts:()=>od,listBulbFiles:()=>ld,listMyBulbs:()=>yd,listSamples:()=>hd,listSessions:()=>_C,logInlineStatus:()=>CC,ollamaOffer:()=>_b,ollamaSync:()=>Rb,openFile:()=>sd,poll:()=>PC,predictTrustOf:()=>dd,pullRemoteBulb:()=>bd,pushLocalBulb:()=>wd,readBulbLog:()=>pd,repoRoot:()=>ln,searchBulbs:()=>cd,searchSessions:()=>RC,sessionPeek:()=>IC,setBulbTrust:()=>fd,shutdownComposer:()=>JC,stopBreakout:()=>ad,summarizeTurn:()=>qC});var Nb,TC,OC,PC,CC,_C,RC,IC,NC,$C,LC,MC,BC,DC,jC,FC,UC,qC,JC,Lb=v(()=>{"use strict";ta();Yu();ra();ws();Ib();Nb=new Zn,TC=Nb.displayName,{info:OC,poll:PC,logInlineStatus:CC,listSessions:_C,searchSessions:RC,sessionPeek:IC,attach:NC,composerSend:$C,composerStop:LC,composerNew:MC,composerFiles:BC,composerUiRespond:DC,composerRpc:jC,composerPaste:FC,composerPasteRead:UC,summarizeTurn:qC,shutdownComposer:JC}=tr(Nb)});import*as zw from"fs/promises";import*as dt from"path";Ls();ne();function Cc(n){if(!Ie.includes(n))throw new Error(`Unknown block kind '${n}' (one of: ${Ie.join(", ")})`);return n}function Rm(n){let e=[];for(let t of n){let r=t.indexOf("=");if(r<=0||r===t.length-1)throw new Error(`Expected <kind>=<source>, got '${t}' (e.g. data=results.json, or data=- for stdin)`);let s=Cc(t.slice(0,r));if(e.some(i=>i.kind===s))throw new Error(`Duplicate block kind '${s}' \u2014 each block can be written once per invocation`);e.push({kind:s,source:t.slice(r+1)})}if(e.filter(t=>t.source==="-").length>1)throw new Error("Only one <kind>=- can read stdin");return e}Ki();Mc();Yu();var ua={claude:{adapter:()=>new Pn,server:()=>Promise.resolve().then(()=>(kb(),Sb))},codex:{adapter:()=>new Cn,server:()=>Promise.resolve().then(()=>(Ab(),Eb))},pi:{adapter:()=>new Zn,server:()=>Promise.resolve().then(()=>(Lb(),$b))}};function Mb(n){return n in ua}function rr(){return Object.keys(ua)}function Bb(){return Object.fromEntries(Object.entries(ua).map(([n,e])=>[n,e.adapter]))}function Db(n){return ua[n].server()}var As=Bb();function jb(){for(let n of Object.values(As))try{n().ensureHarnessSupport()}catch{}}function pn(){for(let n of Object.keys(As))try{if(As[n]().detectsSelf())return n}catch{}}function Fb(n){let e=rr(),t=new Map(e.filter(i=>As[i]).map(i=>[i,As[i]()]));for(let[i,o]of t)if(o.detectsSelf())return{name:i};let r=[...t].filter(([,i])=>i.detectsInstalled()).map(([i])=>i);if(r.length===0)return{name:e[0]};if(r.length===1)return{name:r[0]};let s=i=>t.get(i).listSessionFiles(n).length>0;return{ambiguous:[...r].sort((i,o)=>Number(s(o))-Number(s(i)))}}var Pd=5e3;function Od(n){try{return n()}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exit(1)}}function Ub(n){let t={subcommand:"run",file:"",watch:!0,open:!(process.env.TERM_PROGRAM==="vscode"||pn()!==void 0),server:!1,trust:!1,noTrust:!1,force:!1,follow:!1,clear:!1,help:!1,version:!1,callArgs:[],hasArgsFlag:!1},r=["call","check","predict","logs","wait","stop","trust","untrust","models","slug","send","pull","push","get","put"],s=n[0];if(s==="agent"||s?.startsWith("agent:")){t.subcommand="agent";let o=s.indexOf(":");if(o!==-1){let a=s.slice(o+1);a&&(t.agentTarget=a)}n=n.slice(1)}else s&&r.includes(s)&&(t.subcommand=s,n=n.slice(1));let i=[];for(let o=0;o<n.length;o++){let a=n[o];if(a==="--help"||a==="-h")t.help=!0;else if(a==="--version"||a==="-V")t.version=!0;else if(a==="--no-watch")t.watch=!1;else if(a==="--open")t.open=!0;else if(a==="--no-open")t.open=!1;else if(a==="--server")t.server=!0;else if(a==="--trust")t.trust=!0;else if(a==="--no-trust")t.noTrust=!0;else if(a==="--force")t.force=!0;else if(a==="--mode"){let l=n[++o];(!l||l.startsWith("-"))&&(console.error("Missing value for --mode (e.g. --mode staging)"),process.exit(1)),t.mode=l}else if(a==="--batch"){let l=n[++o];(!l||l.startsWith("-"))&&(console.error("Missing value for --batch (a batch name, e.g. --batch pilot)"),process.exit(1));let c=l.replace(/[\\/]+$/,"");(!c||/[\\/]/.test(c)||c==="."||c==="..")&&(console.error(`Invalid --batch value: ${l} (a single folder name \u2014 no path separators or dot segments)`),process.exit(1)),t.batch=c}else if(a==="--follow"||a==="-f")t.follow=!0;else if(a==="--clear")t.clear=!0;else if(a==="--run"){let l=n[++o];if(l==="latest")t.run="latest";else{let c=parseInt(l,10);(isNaN(c)||c<1)&&(console.error(`Invalid --run value: ${l} (a run number, or 'latest')`),process.exit(1)),t.run=c}}else if(a==="--bulbs")t.stopScope="bulbs";else if(a==="--agent")t.stopScope="agent";else if(a==="--global")t.stopScope="global";else if(a==="--match"){let l=n[++o];l===void 0&&(console.error("Missing value for --match (a literal substring new log lines must contain)"),process.exit(1)),t.match=l}else if(a==="--timeout"){let l=parseInt(n[++o],10);(isNaN(l)||l<=0)&&(console.error(`Invalid --timeout value: ${n[o]} (seconds)`),process.exit(1)),t.timeoutSec=l}else if(a==="--wait"||a.startsWith("--wait="))if(a.startsWith("--wait=")){let l=parseInt(a.slice(7),10);(isNaN(l)||l<=0)&&(console.error(`Invalid --wait value: ${a.slice(7)} (milliseconds)`),process.exit(1)),t.sendWaitMs=l}else t.sendWaitMs=Pd;else if(a==="--lines"||a==="-n"){let l=parseInt(n[++o],10);(isNaN(l)||l<0)&&(console.error(`Invalid --lines value: ${n[o]}`),process.exit(1)),t.lines=l}else if(a==="--port"||a==="-p"){let l=n[++o],c=parseInt(l,10);isNaN(c)&&(console.error(`Invalid port: ${l}`),process.exit(1)),t.port=c}else if(a==="--replace"||a.startsWith("--replace=")){let l=a.startsWith("--replace=")?a.slice(10):n[++o]??"",c=Od(()=>ef(l));t.local&&(console.error(`--replace can only be used once (got '${t.local.name}' and '${c.name}')`),process.exit(1)),t.local=c}else if(a==="--args"||a.startsWith("--args=")){t.hasArgsFlag=!0;let l=a.startsWith("--args=")?a.slice(7):n[++o];l===void 0&&(console.error("Missing value for --args (a JSON array, or - to read it from stdin)"),process.exit(1)),t.argsJson=l}else if(!a.startsWith("-"))["call","send","get","put","slug"].includes(t.subcommand)?i.push(a):t.file=a;else{let l=t.subcommand==="call"?" (for a negative or dash-leading argument, use --args '<json-array>')":"";console.error(`Unknown option: ${a}${l}`),process.exit(1)}}return t.subcommand==="call"&&(i.length<2&&(console.error("Usage: typebulb call <file> <fn> [arg\u2026]"),process.exit(1)),t.file=i[0],t.fn=i[1],t.callArgs=i.slice(2)),t.subcommand==="send"&&(i.length<1&&(console.error("Usage: typebulb send <file> [message]"),process.exit(1)),t.file=i[0],t.sendMessage=i[1]),t.subcommand==="slug"&&(i.length||(console.error("Usage: typebulb slug <bulb name>"),process.exit(1)),t.slugName=i.join(" ")),t.subcommand==="get"&&(i.length!==2&&(console.error("Usage: typebulb get <file> <kind>"),process.exit(1)),t.file=i[0],t.blockKind=Od(()=>Cc(i[1]))),t.subcommand==="put"&&(i.length<2&&(console.error("Usage: typebulb put <file> <kind>=<source> [<kind>=<source> \u2026]"),process.exit(1)),t.file=i[0],t.blockPairs=Od(()=>Rm(i.slice(1)))),t}function qb(){console.log(`
|
|
1658
1780
|
typebulb - Local bulb runner for Typebulb
|
|
1659
1781
|
|
|
1660
1782
|
Usage:
|
|
@@ -1827,7 +1949,7 @@ Examples:
|
|
|
1827
1949
|
typebulb my-editor.bulb.md
|
|
1828
1950
|
typebulb --no-watch --port 8080 my-editor.bulb.md
|
|
1829
1951
|
typebulb .
|
|
1830
|
-
`)}ze();
|
|
1952
|
+
`)}ze();Gr();Ls();ms();ze();import*as _e from"path";import{spawn as g_,execSync as y_}from"child_process";import{createRequire as b_}from"module";import{existsSync as w_}from"fs";import*as pe from"fs/promises";import*as de from"path";var Cd=[{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"}],_d=[{name:"dom"},{name:"dom.iterable"},{name:"dom.asynciterable"}];function Rd(n,e){if(!e)return n.filter(s=>!s.since);let t={"5.0":0,"5.5":1},r=t[e];return n.filter(s=>!s.since||t[s.since]<=r)}ne();var KC=`
|
|
1831
1953
|
/**
|
|
1832
1954
|
* Get raw data chunk from the Data tab.
|
|
1833
1955
|
* @param index - Chunk index (0-based). Separate chunks with 2 blank lines.
|
|
@@ -1838,7 +1960,7 @@ Examples:
|
|
|
1838
1960
|
* @param index - Chunk index (0-based)
|
|
1839
1961
|
* @throws If chunk is not valid JSON/JSON-ish
|
|
1840
1962
|
*/
|
|
1841
|
-
json<T = unknown>(index: number): T;`,
|
|
1963
|
+
json<T = unknown>(index: number): T;`,WC=`
|
|
1842
1964
|
/**
|
|
1843
1965
|
* Get the insight data produced by the inference layer.
|
|
1844
1966
|
*
|
|
@@ -1847,7 +1969,7 @@ Examples:
|
|
|
1847
1969
|
*
|
|
1848
1970
|
* @returns The parsed insight JSON, or undefined if no insight is available
|
|
1849
1971
|
*/
|
|
1850
|
-
insight<T = unknown>(): T | undefined;`,
|
|
1972
|
+
insight<T = unknown>(): T | undefined;`,Jb=`options: {
|
|
1851
1973
|
messages: Array<{ role: "user" | "assistant"; content: string }>;
|
|
1852
1974
|
system?: string;
|
|
1853
1975
|
/** Reasoning effort: 0=minimal, 1=low, 2=med, 3=high, 4=xhigh. Mapped to each provider's native mechanism (OpenAI/OpenRouter reasoning effort, Gemini thinking level, Anthropic adaptive thinking). 0 reaches the vendor's explicit off switch, and floors to a little thinking only on always-thinking models. 4 reaches the rung above high where the vendor has one (OpenAI/OpenRouter xhigh, Anthropic max) and clamps to high where it doesn't (Gemini) \u2014 never an error. Pin 1 (low) for most work; pick 0 deliberately, when you want the raw model or latency is the constraint. Omitting is NOT off \u2014 it buys the model's own default (medium on GPT-5.6), which reasons and bills invisibly. Ignored on the courtesy model, which runs at the level Typebulb sets. */
|
|
@@ -1858,7 +1980,7 @@ Examples:
|
|
|
1858
1980
|
webSearch?: boolean;
|
|
1859
1981
|
/** Abort the request. On abort the promise rejects / the stream ends. */
|
|
1860
1982
|
signal?: AbortSignal;
|
|
1861
|
-
}`,
|
|
1983
|
+
}`,Kb=`
|
|
1862
1984
|
/** Provider-reported token counts for one call \u2014 real usage from the API, never an estimate.
|
|
1863
1985
|
* \`output\` is total billed output (reasoning included); \`reasoning\` is the itemized subset where
|
|
1864
1986
|
* the provider splits it (OpenAI, Gemini, OpenRouter \u2014 Anthropic doesn't); \`cacheRead\` is the
|
|
@@ -1870,10 +1992,10 @@ type AiChunk =
|
|
|
1870
1992
|
| { kind: "text"; text: string }
|
|
1871
1993
|
| { kind: "reasoning"; text: string }
|
|
1872
1994
|
| { kind: "usage"; usage: AiUsage };
|
|
1873
|
-
`,
|
|
1995
|
+
`,Wb=`
|
|
1874
1996
|
/** What backs \`tb.ai\`: the user's own keys, the quota-limited courtesy model, or nothing. */
|
|
1875
1997
|
type AiAccess = "own" | "courtesy" | "none";
|
|
1876
|
-
`,
|
|
1998
|
+
`,Hb=`
|
|
1877
1999
|
/**
|
|
1878
2000
|
* General-purpose AI call. \`tb.ai(opts)\` resolves with the full text; \`tb.ai.stream(opts)\`
|
|
1879
2001
|
* returns an async iterable of {@link AiChunk} deltas you consume with \`for await\`.
|
|
@@ -1883,7 +2005,7 @@ type AiAccess = "own" | "courtesy" | "none";
|
|
|
1883
2005
|
* @throws On rate limit, network error, or provider error
|
|
1884
2006
|
*/
|
|
1885
2007
|
ai: {
|
|
1886
|
-
(${
|
|
2008
|
+
(${Jb}): Promise<{ text: string; usage?: AiUsage }>;
|
|
1887
2009
|
/**
|
|
1888
2010
|
* Streaming counterpart of \`tb.ai()\`. Yields \`{ kind: "text" | "reasoning", text }\` deltas
|
|
1889
2011
|
* as they arrive, then one final \`{ kind: "usage", usage }\` chunk with the call's token
|
|
@@ -1900,8 +2022,8 @@ type AiAccess = "own" | "courtesy" | "none";
|
|
|
1900
2022
|
* if (c.kind === "text") answer += c.text;
|
|
1901
2023
|
* }
|
|
1902
2024
|
*/
|
|
1903
|
-
stream(${
|
|
1904
|
-
};`,
|
|
2025
|
+
stream(${Jb}): AsyncIterable<AiChunk>;
|
|
2026
|
+
};`,Yb=`
|
|
1905
2027
|
/**
|
|
1906
2028
|
* Returns AI models available to the current user.
|
|
1907
2029
|
* Models are filtered by the user's configured API keys.
|
|
@@ -1931,7 +2053,7 @@ type AiAccess = "own" | "courtesy" | "none";
|
|
|
1931
2053
|
* \`tb.mode\` or the length of \`tb.models()\` \u2014 which hosts offer a courtesy
|
|
1932
2054
|
* model is the host's business and changes without your bulb changing.
|
|
1933
2055
|
*/
|
|
1934
|
-
aiAccess(): Promise<AiAccess>;`,
|
|
2056
|
+
aiAccess(): Promise<AiAccess>;`,HC="\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;",Vb=`
|
|
1935
2057
|
/**
|
|
1936
2058
|
* The mode this bulb is running in.
|
|
1937
2059
|
*
|
|
@@ -1941,7 +2063,7 @@ type AiAccess = "own" | "courtesy" | "none";
|
|
|
1941
2063
|
* - \`'inline'\` \u2014 Running inline in an agent's transcript, rendered by the mirror
|
|
1942
2064
|
* (sandboxed, client-only: AI, filesystem, and server RPC are unavailable)
|
|
1943
2065
|
*/
|
|
1944
|
-
mode: ${
|
|
2066
|
+
mode: ${Pm};`,zb=`
|
|
1945
2067
|
/**
|
|
1946
2068
|
* Local filesystem access (CLI only).
|
|
1947
2069
|
*
|
|
@@ -1958,7 +2080,7 @@ type AiAccess = "own" | "courtesy" | "none";
|
|
|
1958
2080
|
readBytes(path: string): Promise<Uint8Array>;
|
|
1959
2081
|
/** Write text or raw bytes to a file. Creates parent directories if needed. */
|
|
1960
2082
|
write(path: string, content: string | Uint8Array): Promise<boolean>;
|
|
1961
|
-
};`,
|
|
2083
|
+
};`,Gb="\n /**\n * The bulb's folder \u2014 absolute path to `<bulb-dir>/<filename-stem>/`\n * (or its `batches/<name>/` folder when the run is scoped with `--batch`).\n *\n * For interop only (handing a path to `server.ts` or a spawned tool):\n * `tb.fs` already resolves relative paths against it, so bulb code writing\n * its own files never needs it. CLI only \u2014 throws in ide/published/inline mode.\n */\n readonly dir: string;",YC=`
|
|
1962
2084
|
/**
|
|
1963
2085
|
* Async value inspector for tensor-like objects.
|
|
1964
2086
|
*
|
|
@@ -2009,47 +2131,47 @@ type AiAccess = "own" | "courtesy" | "none";
|
|
|
2009
2131
|
*
|
|
2010
2132
|
* @returns The full canonical URL
|
|
2011
2133
|
*/
|
|
2012
|
-
url(): Promise<string>;`,
|
|
2134
|
+
url(): Promise<string>;`,VC="\n /**\n * Subscribe to a value pushed from the terminal via `typebulb send <file> [message]`.\n *\n * The dual of `tb.log` (data out): a value sent *in* from the CLI, no `--trust` required.\n * Use it to start expensive work on demand instead of on load \u2014 e.g. `tb.onMessage(() => start())`\n * \u2014 so hot reloads don't re-trigger it while you edit, and an agent kicks off one run when ready.\n *\n * The message is the JSON-parsed value of what `send` was given (or the raw string if it isn't\n * JSON; `undefined` for a bare `typebulb send <file>`). A non-`undefined` return value (awaited)\n * becomes the reply `send --wait` prints on stdout \u2014 JSON-serializable, at most one handler\n * replying \u2014 the structured read-back for self-tests. Returns an unsubscribe function. Inert in\n * an inline bulb (no sender) \u2014 the handler is registered but never fires.\n *\n * @param handler - Called with each pushed message; may return a JSON-serializable reply.\n * @returns An unsubscribe function.\n */\n onMessage(handler: (message: any) => unknown): () => void;",zC="\n /**\n * Print to the CLI's stdout \u2014 the bulb's log channel, read back with `typebulb logs <file>`.\n *\n * Ungated: needs no `server.ts` block and no `--trust`, so a Restricted client-only bulb can\n * instrument itself. Args cross to the CLI as JSON; where no CLI serves the page (web, inline,\n * or a transport failure) it falls back to the browser console. Works in `server.ts` too (same\n * as `console.log` there).\n */\n log(...args: any[]): void;",GC="\n /**\n * Server-side function proxy.\n *\n * In the CLI, calls exported functions from the `**server.ts**` section.\n *\n * A normal export is awaited for its result (`await tb.server.fn()`). An `async function*`\n * export streams: `for await (const chunk of tb.server.gen())`. The call object supports both;\n * break the `for await` to cancel and tear down the server generator.\n */\n server: Record<string, (...args: any[]) => Promise<any> & AsyncIterable<any>>;",Id=`${Kb}${Wb}
|
|
2013
2135
|
/**
|
|
2014
2136
|
* Typebulb utilities namespace.
|
|
2015
2137
|
* Type \`tb.\` to discover available helpers.
|
|
2016
2138
|
*/
|
|
2017
|
-
declare const tb: {${
|
|
2139
|
+
declare const tb: {${KC}${YC}${WC}${zC}${GC}${VC}${Hb}${zb}${Gb}${Yb}${HC}${Vb}
|
|
2018
2140
|
};
|
|
2019
|
-
`,
|
|
2141
|
+
`,XC=`
|
|
2020
2142
|
/**
|
|
2021
2143
|
* Print to the CLI's stdout \u2014 the same channel as \`console.log\` here (the server's console IS
|
|
2022
2144
|
* the bulb's log). One log verb across blocks: page-side \`tb.log\` reaches this same stdout.
|
|
2023
2145
|
*/
|
|
2024
|
-
log(...args: any[]): void;`,
|
|
2146
|
+
log(...args: any[]): void;`,Nd=`${Kb}${Wb}
|
|
2025
2147
|
/**
|
|
2026
2148
|
* Typebulb utilities namespace (server-side).
|
|
2027
2149
|
* Type \`tb.\` to discover available helpers.
|
|
2028
2150
|
*/
|
|
2029
|
-
declare const tb: {${
|
|
2151
|
+
declare const tb: {${XC}${Hb}${zb}${Gb}${Yb}${Vb}
|
|
2030
2152
|
};
|
|
2031
|
-
`;nt();import
|
|
2153
|
+
`;nt();import t_ from"p-limit";nt();import{resolve as Qb}from"resolve.exports";var ct={maxRelativeTypeRefs:500,maxBareDeps:8,maxBareDepth:3,prefetchConcurrency:4,negativeTtlMs:1e4},Ts=["index.d.ts","index.d.mts"],$d=/\.d\.(ts|mts|cts)$/i;function da(n){return/\.d\.(ts|mts|cts)(?:[?#].*)?$/i.test(n)||/[?&]dts(?:[&#]|$)/i.test(n)}function Xb(n){return[`${n}.d.ts`,`${n}.d.mts`]}function Dt(n){if(!n||n==="./"||n==="/")return[...Ts];let e=n.replace(/\.(mjs|cjs|js|mts|cts|ts)$/i,""),t=Xb(e),r=e.endsWith("/")?e:`${e}/`;return t.push(...Xb(`${r}index`)),t}async function sr(n,{retries:e=2,timeoutMs:t=15e3,init:r}={}){for(let s=0;s<=e;s++){let i=new AbortController,o=setTimeout(()=>i.abort(),t);try{let a=await fetch(n,{...r,signal:i.signal});if(QC(a.status)&&s<e)continue;return a}catch{if(s<e)continue;return}finally{clearTimeout(o)}}}function QC(n){return n===408||n===429||n>=500&&n<600}var fa=class{constructor(e,t){this.fetchDts=e,this.cdnClient=t}async tryUrls(e){for(let t of e){let r=await this.fetchDts(t);if(r&&(this.looksLikeDts(r.dts)||da(r.url)))return r}}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)}async loadPackageAtVersionedRoot(e,t){let r=this.cdnClient.packageJson(new j({name:e,version:t})),s=await sr(r);if(!s?.ok)return;let i;try{i=await s.json()}catch{return}if(i)return{pkg:i,baseDir:this.cdnClient.baseDir(new j({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 r of e){let s=await t(r);if(s)return s}}async resolveFromSelected(e,t,r){if(e.kind==="types"){let o=Gt(e.path);if(!o||o==="/"||o===".")return this.tryUntilSuccess([...Ts],t);if(!$d.test(o)){let a=await this.tryUntilSuccess(Dt(o),t);if(a)return a}return t(o)}let s=Dt(e.path),i=r?.subpath?[...s,...Ts]:[...Ts,...s];return this.tryUntilSuccess(i,t)}toResolutionResult(e){return{kind:$d.test(e)?"types":"probe",path:e}}resolveExportsPath(e,t){let r=t||".",s=e;try{let i=this.extractPathFromResult(Qb(s,r,{conditions:["types"]}));if(i)return i}catch{}try{return this.extractPathFromResult(Qb(s,r,{browser:!0,conditions:["import","default","module","browser","node"]}))}catch{return}}async resolve(e){try{let t=j.parse(e),{pkg:r,baseDir:s}=await this.loadPackageAtVersionedRoot(t.name,t.version)||{};if(!r||!s)return;let i={name:t.name,version:t.version},o=new j(i).format(),a=new j({...i,subpath:t.subpath}).format(),l=u=>this.fetchCandidateFrom(s,t.name,u);if(t.subpath){let u=Xc(t.subpath),f=this.resolveExportsPath(r,u);if(f){let m=await this.resolveFromSelected(this.toResolutionResult(f),l,{subpath:!0});if(m)return{...m,resolvedPkg:a}}let p=await this.tryUntilSuccess(Dt(u),l);if(p)return{...p,resolvedPkg:a}}let c=r.types??r.typings;if(c){let u=await this.resolveFromSelected({kind:"types",path:c},l);if(u)return{...u,resolvedPkg:o}}let d=this.resolveExportsPath(r,".");if(d){let u=await this.resolveFromSelected(this.toResolutionResult(d),l);if(u)return{...u,resolvedPkg:o}}return}catch{return}}async fetchCandidateFrom(e,t,r){let s=Gt(r),i=new URL(s,e).toString(),o=await this.tryUrls([i]);return o?{dts:o.dts,url:o.url,resolvedPkg:t}:void 0}};nt();import{gunzipSync as ZC}from"fflate";var pa=class{async fetchAndExtract(e,t){let r=this.getTarballUrl(e,t),s=await sr(r,{timeoutMs:3e4});if(!s?.ok)return new Map;let i=new Uint8Array(await s.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\//,""),r=t.indexOf("/");return r>0?t.substring(r+1):t}extractDtsFiles(e){let t=new Map;try{let r=ZC(e),s=new TextDecoder("utf-8"),i=0;for(;i<r.length-512;){let o=r.slice(i,i+512);if(o[0]===0)break;let a=o.slice(0,100),l=a.indexOf(0),c=s.decode(a.slice(0,l>0?l:100)).trim(),d=o.slice(124,136),u=s.decode(d).trim().replace(/\0/g,""),f=parseInt(u,8)||0,p=String.fromCharCode(o[156]);if(i+=512,(p==="0"||p==="\0")&&(c.endsWith(".d.ts")||c.endsWith(".d.mts"))){let m=r.slice(i,i+f);t.set(this.normalizeTarPath(c),s.decode(m))}i+=Math.ceil(f/512)*512}}catch{}return t}};var ha=class{constructor(e,t,r=new pa){this.cdnClient=e,this.cache=t,this.tarballFetcher=r}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,r){try{if(r){let i=Xt.majorOf(r),o=e.filter(a=>Xt.majorOf(a)===i);if(o.length)return o.sort((a,l)=>Xt.cmp(l,a))[0]}let s=t?.latest;return s&&e.includes(s)?s:e[0]}catch{return e[0]}}subpathCandidates(e){let t=e.replace(/\.(mjs|cjs|js|mts|cts|ts)$/i,""),r=Dt(e);return t!==e&&r.push(`${e}.d.ts`,`${e}/index.d.ts`),r}async fetchFromVersionedRoot(e,t){let r=new j(e),s=r.version;if(!s)return;let i;try{i=await this.tarballFetcher.fetchAndExtract(r.name,s)}catch{return}if(!i||i.size===0)return;for(let[a,l]of i.entries()){let c=this.cdnClient.file(e,a);try{await this.cache.setCachedFile(c,l)}catch{}}let o=t.subpath?this.subpathCandidates(t.subpath):["index.d.ts"];for(let a of o){let l=i.get(a);if(l)return{dts:l,url:this.cdnClient.file(e,a),resolvedPkg:t.subpath?new j(t).format():t.name}}}async resolve(e){let t=j.parse(e);if(t.name)for(let r of this.typesNameCandidates(t.name)){let s=`@types/${r}`,i;try{i=await this.cdnClient.fetchVersionsIndex(s)}catch{continue}if(!i?.versions?.length)continue;let o=this.selectTypesVersion(i.versions,i.distTags,t.version),a=await this.fetchFromVersionedRoot(`${s}@${o}`,t);if(a)return a}}};var ma=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=e.split(`
|
|
2032
2154
|
`).filter(s=>{let i=s.trimStart();return!(i.startsWith("*")||i.startsWith("//")||i.startsWith("/*"))}).join(`
|
|
2033
|
-
`),r=new Set;for(let s of t.matchAll(/(import|export)\s+[^'"\n]*from\s*['"]([^'"\n]+)['"]/g))r.add(s[2]);for(let s of t.matchAll(/export\s*\*\s*from\s*['"]([^'"\n]+)['"]/g))r.add(s[1]);return Array.from(r)}isBare(e){return!(e.startsWith("./")||e.startsWith("../")||e.startsWith("file:")||e.startsWith("http://")||e.startsWith("https://"))}};nt();var
|
|
2034
|
-
`);await this.prefetchBareDeps(m,c,f,p,s);let h=l.format(),
|
|
2035
|
-
`,"utf8"),await pe.writeFile(de.join(e,"code.tsx"),n.code,"utf8"),await pe.writeFile(de.join(e,"tb.d.ts"),
|
|
2036
|
-
`,"utf8"),{dir:e}}function
|
|
2037
|
-
`))console.log(`${e} ${r}`);return n.length>0}function
|
|
2155
|
+
`),r=new Set;for(let s of t.matchAll(/(import|export)\s+[^'"\n]*from\s*['"]([^'"\n]+)['"]/g))r.add(s[2]);for(let s of t.matchAll(/export\s*\*\s*from\s*['"]([^'"\n]+)['"]/g))r.add(s[1]);return Array.from(r)}isBare(e){return!(e.startsWith("./")||e.startsWith("../")||e.startsWith("file:")||e.startsWith("http://")||e.startsWith("https://"))}};nt();var Zb="file:///node_modules",ga=class{constructor(){this.epoch=0}bumpEpoch(){this.epoch+=1}epochDir(){return`__tsepoch_${this.epoch}`}pathForMain(e){return`${Zb}/${this.epochDir()}/${e}/index.d.ts`}pathFor(e,t){let r=Gt(t);return`${Zb}/${this.epochDir()}/${e}/${r}`}};import{LRUCache as e_}from"lru-cache";function ew(n){let e=new e_({ttl:ct.negativeTtlMs,max:500}),t=new Map;return async function(s){try{if(await n.isNegative(s)||e.has(s))return;let i=await n.getCachedFile(s);if(i)return{dts:i,url:s};let o=t.get(s);if(o)return o;let a=(async()=>{let l=await sr(s,{init:{cache:"no-store"}});if(!l?.ok){l?.status===404&&(e.set(s,!0),await n.recordNegative(s));return}let c=await l.text(),d=l.url||s;return await n.clearNegative(s),await n.setCachedFile(d,c),{dts:c,url:d}})();return t.set(s,a),await a.finally(()=>t.delete(s))}catch{return}}}var Os=class{constructor(e){this.inFlight=new Map,this.scanner=new ma,this.cache=e.cache,this.cdnClient=e.cdnClient,this.versionResolver=e.versionResolver,this.packageService=e.packageService,this.fetchDts=ew(e.cache),this.typescriptProvider=new fa(this.fetchDts,e.cdnClient),this.definitelyTypedProvider=new ha(e.cdnClient,e.cache),this.virtualFs=new ga}withInFlight(e,t){let r=this.inFlight.get(e);if(r)return r;let s=t().finally(()=>this.inFlight.delete(e));return this.inFlight.set(e,s),s}invalidate(){this.virtualFs.bumpEpoch(),this.inFlight.clear()}pushFileIfNew(e,t,r){e.some(s=>s.path===t)||e.push({path:t,content:r})}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 fetchViaProviders(e){for(let t of[this.typescriptProvider,this.definitelyTypedProvider])try{let r=await t.resolve(e);if(r?.dts)return r}catch{}}async fetchRootDts(e,t){let{effectivePackage:r,root:s,pinned:i}=await this.versionResolver.effectivePackage(e,t),o=await this.cache.getCachedDts(r);if(o?.content){let l=o.url??this.cdnClient.file(i?`${s}@${i}`:s,"index.d.ts");return{dts:o.content,url:l,resolvedPkg:r}}let a;try{a=await this.fetchViaProviders(r)}catch{return}if(!(!a?.dts||!a.url)&&new j(r).subpath===new j(a.resolvedPkg||r).subpath){try{await this.cache.setCachedDts(r,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,r){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(r,s)}computeEntryPath(e,t){if(!e)return{mainPath:this.virtualFs.pathForMain(t),packageRootUrl:void 0};let r=new URL(e),s=this.extractPackageRootUrl(r);return{mainPath:this.toVirtualPath(s,r,t),packageRootUrl:s}}async expandRelativeRefs(e,t,r,s,i=new Set,o){if(!i.has(t)&&(i.add(t),!(i.size>ct.maxRelativeTypeRefs)))try{let a=new URL(t),l=new URL("./",a);o??(o=this.extractPackageRootUrl(a));let c=this.scanner.collectRelativeTypeRefs(e).slice(0,ct.maxRelativeTypeRefs);for(let d of c)await this.tryRelativeRef(d,l,o,r,s,i)}catch{}}async tryRelativeRef(e,t,r,s,i,o){try{let a=new URL(e,t),l=a.pathname+a.search,c=da(l)?[l]:Dt(l);for(let d of c){let f=new URL(d,a).toString();if(o.has(f))return;let p=await this.fetchDts(f);if(p?.dts){let m=this.toVirtualPath(r,new URL(p.url),s);this.pushFileIfNew(i,m,p.dts),await this.expandRelativeRefs(p.dts,p.url,s,i,o,r);return}}}catch{}}isDifferentPackage(e,t){return e===t?!1:new j(e).name!==new j(t).name}ambientlyDeclares(e,t){if(/^(?:import|export)\b/m.test(e))return!1;for(let r of e.matchAll(/declare\s+module\s+['"]([^'"]+)['"]/g)){let s=r[1];if(s===t||s.endsWith("/*")&&t.startsWith(s.slice(0,-1)))return!0}return!1}markFileAmbient(e,t){let r=e.find(s=>s.path===t);r&&(r.ambient=!0)}async prefetchBareDeps(e,t,r,s,i){try{let o=this.scanner.collectBareModuleRefs(e).slice(0,ct.maxBareDeps).filter(c=>this.isDifferentPackage(c,t));if(!o.length)return;let a=new Set([t]),l=t_(ct.prefetchConcurrency);await Promise.all(o.map(c=>l(()=>this.prefetchBareDepsRecursive(c,r,s,ct.maxBareDepth,a,i).catch(()=>{}))))}catch{}}async prefetchBareDepsRecursive(e,t,r,s,i,o){if(s<=0||i.has(e))return;i.add(e);let a=await this.fetchRootDts(e,o);if(!a?.dts)return;let l=a.resolvedPkg||e,c=this.virtualFs.pathForMain(l);this.pushFileIfNew(t,c,a.dts),this.ambientlyDeclares(a.dts,e)?this.markFileAmbient(t,c):r.push({module:e,path:c}),a.url&&await this.expandRelativeRefs(a.dts,a.url,l,t);let d=this.scanner.collectBareModuleRefs(a.dts).slice(0,ct.maxBareDeps).filter(u=>!i.has(u));for(let u of d)await this.prefetchBareDepsRecursive(u,t,r,s-1,i,o)}async resolve(e,t,r){let s=await this.packageService.extractImports(e),i=r?[...s,...r]:s;return(await Promise.all(i.map(a=>this.resolveOne(a,t)))).filter(a=>!!a)}async resolveOne(e,t){let{effectivePackage:r}=await this.versionResolver.effectivePackage(e,t);return this.withInFlight(r,async()=>{let s=new j(e),i=await this.fetchRootDts(e,t)??(s.subpath?await this.fetchRootDts(s.name,t):void 0);return i?this.buildDefFromContent(e,i,i.resolvedPkg||e,t):this.createStubDef(e)})}async buildDefFromContent(e,t,r,s){let{dts:i,url:o,resolvedPkg:a}=t,l=new j(a||r),c=l.version?`${l.name}@${l.version}`:l.name,{mainPath:d,packageRootUrl:u}=this.computeEntryPath(o,c),f=[{path:d,content:i}],p=[];o&&await this.expandRelativeRefs(i,o,c,f,void 0,u);let m=f.map(S=>S.content).join(`
|
|
2156
|
+
`);await this.prefetchBareDeps(m,c,f,p,s);let h=l.format(),y=e===h?[e]:[e,h],A=y.some(S=>this.ambientlyDeclares(i,S));return A?this.markFileAmbient(f,d):p.push(...y.map(S=>({module:S,path:d}))),{pkg:e,mainPath:d,files:f,shims:p,ambient:A}}};au();nt();Ln();as();iu();$n();import*as ir from"path";var n_=ir.join(so,"pkg"),r_=ir.join(so,"files"),s_=ir.join(so,"negative.json"),ba=class{pkgMem=new Map;fileMem=new Map;negativeCache=new Qt(new Mn(s_));async getCachedDts(e){if(this.pkgMem.has(e))return this.pkgMem.get(e);await Z();let t=await rt(tw(e));return this.pkgMem.set(e,t),t}async setCachedDts(e,t,r){let s={content:t,url:r};this.pkgMem.set(e,s),await ya(async()=>{await Z(),await Te(tw(e),JSON.stringify(s))})}async getCachedFile(e){if(this.fileMem.has(e))return this.fileMem.get(e);await Z();let t=await ro(nw(e));return this.fileMem.set(e,t),t}async setCachedFile(e,t){this.fileMem.set(e,t),await ya(async()=>{await Z(),await Te(nw(e),t)})}isNegative(e){return this.negativeCache.isNegative(e)}async recordNegative(e){await ya(async()=>{await Z(),await this.negativeCache.recordNegative(e)})}clearNegative(e){return ya(()=>this.negativeCache.clearNegative(e))}};async function ya(n){try{await n()}catch{}}function tw(n){return ir.join(n_,De(n)+".json")}function nw(n){return ir.join(r_,De(n)+".txt")}Ln();var Ld;function i_(){return Ld||(Ld=new Os({cache:new ba,cdnClient:Ag,packageService:lo,versionResolver:Eg})),Ld}var rw="file:///node_modules/";async function sw(n){let e=io(n.emitKey,"typecheck");await Z(),await pe.rm(e,{recursive:!0,force:!0}),await pe.mkdir(e,{recursive:!0});let t=c_(n.jsxImportSource,n.dependencies),r=await i_().resolve(n.code,n.dependencies,t),s=n.local?.name,i=s?r.filter(d=>d.pkg!==s):r,o=new Set;for(let d of i)for(let u of d.files){let f=wa(u.path);if(!f||o.has(f))continue;o.add(f);let p=de.join(e,"node_modules",f);await pe.mkdir(de.dirname(p),{recursive:!0}),await pe.writeFile(p,u.content,"utf8")}let a={};for(let d of i)for(let u of d.shims){let f=wa(u.path);f&&(a[u.module]=[`./node_modules/${f}`])}for(let d of i){if(d.ambient)continue;let u=wa(d.mainPath);u&&(a[d.pkg]=[`./node_modules/${u}`])}let l=new Set;for(let d of i)for(let u of d.files){if(!u.ambient)continue;let f=wa(u.path);f&&l.add(`node_modules/${f}`)}if(n.local){delete a[n.local.name];let d=await u_(n.local,e);d?a[n.local.name]=[`./node_modules/${n.local.name}/${d}`]:console.warn(` local: '${n.local.name}' ships no type defs; check cannot type against it.`)}let c=o_(n.jsxImportSource,a,[...l]);return await pe.writeFile(de.join(e,"tsconfig.json"),JSON.stringify(c,null,2)+`
|
|
2157
|
+
`,"utf8"),await pe.writeFile(de.join(e,"code.tsx"),n.code,"utf8"),await pe.writeFile(de.join(e,"tb.d.ts"),Id,"utf8"),{dir:e}}var Md={target:"es2023",module:"esnext",moduleResolution:"bundler",strict:!0,noEmit:!0,skipLibCheck:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0};function o_(n,e,t=[]){return{compilerOptions:{...Md,lib:a_([...Cd,..._d]),jsx:"react-jsx",jsxImportSource:n??"react",paths:e},include:["code.tsx","tb.d.ts",...t]}}function a_(n){return Rd(n).map(e=>l_(e.name))}function l_(n){return n.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 c_(n,e){let t=n??("react"in e?"react":void 0);return t?[`${t}/jsx-runtime`,`${t}/jsx-dev-runtime`]:[]}function wa(n){if(!n.startsWith(rw))return;let e=n.slice(rw.length),t=e.indexOf("/");if(!(t<0))return e.slice(t+1)}async function u_(n,e){if(!n.typesAbs)return;let t=de.dirname(n.typesAbs),r=de.join(e,"node_modules",n.name);for(let s of await d_(t)){let i=de.join(r,de.relative(t,s));await pe.mkdir(de.dirname(i),{recursive:!0}),await pe.copyFile(s,i)}return de.basename(n.typesAbs)}async function d_(n){let e=[];async function t(r){let s=await pe.readdir(r,{withFileTypes:!0});for(let i of s){let o=de.join(r,i.name);i.isDirectory()?await t(o):/\.d\.ts(\.map)?$/.test(i.name)&&e.push(o)}}return await t(n),e}import*as Ce from"fs/promises";import*as ut from"path";import{existsSync as f_}from"fs";Ln();lu();var p_="^22";async function iw(n){let e=io(n.emitKey,"typecheck-server");await Z(),await Ce.rm(e,{recursive:!0,force:!0}),await Ce.mkdir(e,{recursive:!0});let t=ut.join(n.bulbDir,".typebulb"),r=yo(n.server).filter(o=>o!==n.local?.name);await go([`@types/node@${p_}`,...r],t,n.dependencies,{ignoreScripts:!0});let s=ut.join(t,"node_modules"),i=ut.join(e,"node_modules");return await m_(s,i),await Ce.writeFile(ut.join(e,"server.ts"),n.server,"utf8"),await Ce.writeFile(ut.join(e,"tb.d.ts"),Nd,"utf8"),await Ce.writeFile(ut.join(e,"tsconfig.json"),JSON.stringify(h_(n.local),null,2)+`
|
|
2158
|
+
`,"utf8"),{dir:e}}function h_(n){let e={...Md,lib:["ES2023"],types:["node"]};if(n?.typesAbs){let t=i=>i.replace(/\\/g,"/"),r=t(ut.dirname(n.typesAbs)),s=t(n.typesAbs).replace(/\.d\.ts$/,"");e.paths={[n.name]:[s],[`${n.name}/*`]:[`${r}/*`]}}return{compilerOptions:e,include:["server.ts","tb.d.ts"]}}async function m_(n,e){if(!f_(n)){await Ce.mkdir(e,{recursive:!0});return}await Ce.rm(e,{recursive:!0,force:!0});let t=process.platform==="win32"?"junction":"dir";await Ce.symlink(n,e,t)}Zi();ne();async function aw(n,e){let{bulb:t,config:r,warnings:s,starts:i}=await qe(n),o=_e.basename(n),a=h=>i.get(h)??1;!t.code&&!t.server&&(console.error("Bulb has neither **code.tsx** nor **server.ts**; nothing to check."),process.exit(1));let l=!1,c=!1;for(let h of s)console.log(`structure ${h}`);s.length&&(l=!0);let d=Wn(_e.resolve(n)),u=d?Tn(t.name):"";d&&u&&u!==d.slug&&(console.log(`naming filename '${d.slug}.bulb.md' doesn't match the title '${t.name}' \u2014 its slug derives to '${u}'. Rename the file to '${u}.bulb.md', or change name: to suit the filename.`),c=!0),t.code&&(l=ow(Xr(t.code,{target:"client",dependencies:r.dependencies??{},lineOffset:a("code.tsx")}),"client")||l),t.server&&(l=ow(Xr(t.server,{target:"server",lineOffset:a("server.ts")}),"server")||l);let f=x_([process.cwd(),_e.dirname(n)]);if(!f){let h=_e.relative(process.cwd(),n)||n;console.error("check: TypeScript not found \u2014 install it once, then re-run:"),console.error(" npm i -g typescript"),console.error(` typebulb check ${h}`),process.exit(2)}let p=[];if(t.code){let{dir:h}=await sw({code:t.code,dependencies:r.dependencies??{},jsxImportSource:r.ts?.jsxImportSource,emitKey:n,local:e});p.push({role:"client",dir:h})}if(t.server){let{dir:h}=await iw({server:t.server,bulbDir:_e.dirname(n),emitKey:n,local:e?{name:e.name,typesAbs:e.typesAbs}:void 0,dependencies:r.dependencies});p.push({role:"server",dir:h})}for(let{role:h,dir:y}of p){let{stdout:A,exitCode:S}=await S_(f,y);for(let P of A.split(/\r?\n/))P.trim()&&console.log(`${h} ${v_(P,o,a)}`);S!==0&&(l=!0)}l&&process.exit(1);let m=[t.code&&"code.tsx",t.server&&"server.ts"].filter(Boolean).join(", ");console.error(c?`\u2713 type-checks (${m}) \u2014 see the naming warning above`:`\u2713 no issues (${m})`)}function ow(n,e){for(let t of n)for(let r of t.message.split(`
|
|
2159
|
+
`))console.log(`${e} ${r}`);return n.length>0}function v_(n,e,t){return n.replace(/\b(code\.tsx|server\.ts)\((\d+),(\d+)\)/g,(r,s,i,o)=>`${e}(${Number(i)+t(s)-1},${o})`)}function S_(n,e){return new Promise(t=>{let r=g_(process.execPath,[n,"--noEmit"],{cwd:e}),s="";r.stdout?.on("data",i=>{s+=i.toString()}),r.stderr?.on("data",i=>{s+=i.toString()}),r.on("close",i=>t({stdout:s,exitCode:i??1}))})}var k_=b_(import.meta.url);function x_(n){let e=r=>{try{let s=k_.resolve("typescript/package.json",{paths:r}),i=_e.join(_e.dirname(s),"lib","tsc.js");return w_(i)?i:void 0}catch{return}},t=e(n);if(t)return t;try{let r=y_("npm root -g",{encoding:"utf8"}).trim();return e([r])}catch{return}}ze();Bo();ms();async function lw(n,e){let{bulb:t}=await qe(n),r=Yn(t);if(on(n)){console.log("remembered-trusted \u2014 runs with filesystem / AI / server.ts automatically (`typebulb untrust` to revoke)."),r&&console.log(` (it uses ${r})`);return}r?(console.log(`This bulb appears to use ${r}; 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.)")}ms();import*as Ps from"path";async function cw(n,e){if(!n){e||(console.error("Usage: typebulb untrust <file.bulb.md>"),process.exit(1));let r=Mu();if(!r.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 r)console.log(` ${s}`);return}let t=Ps.resolve(n);t.endsWith(".bulb.md")||(console.error("File must have .bulb.md extension"),process.exit(1));try{Vn(t,e)}catch(r){console.error(r.message),process.exit(1)}console.log(e?`Trusted ${Ps.basename(t)} \u2014 runs with fs / AI / server.ts (no --trust needed).`:`Untrusted ${Ps.basename(t)} \u2014 runs Restricted.`),console.log(` ${t}`)}Ae();import*as fw from"readline";Bu();function Bd(n){let e=t=>r=>n?`\x1B[${t}m${r}\x1B[0m`:r;return{lit:e("38;5;70"),litLink:e("4;38;5;70"),brand:e("38;5;135")}}var E_=5e3,va=()=>Math.round(performance.now()),uw=n=>n>=1e3?`${(n/1e3).toFixed(1)}s`:`${n}ms`;async function pw(n){let e=Fb(process.cwd()),t=va();if("ambiguous"in e){let r=await A_(n,e.ambiguous);return r?dw(n,r,{boot:t,from:va()}):T_(n,e.ambiguous)}return dw(n,e.name,{boot:t,from:va()})}async function dw(n,e,t){let r,s;try{r=await Zm(e)}catch(p){s=p instanceof Error?p.message:String(p)}let i=va()-t.from,{lit:o,litLink:a,brand:l}=Bd(process.stdout.isTTY===!0),c=[" Read the authoring skill before writing a bulb:",` \u2022 ${o(gs())}`],d=r?[` Agent mirror (${e}) is live\u{1F4A1}`,` ${o("\u25CF")} ${a(r.url)}`," Inline bulbs render live here."," Agents:",` Reusable app/tool \u2192 write a ${o(".bulb.md")}`," Show something inline \u2192 emit an inline bulb",...e==="codex"?[" verify it this turn \u2014 foreground-wait, bounded:",` \u2022 ${o('typebulb wait agent --match "[inline <name>" --timeout 120')}`," raise the shell tool's timeout_ms to 130000"," (its 10s default kills even a clean ok)"]:[e==="pi"?" arm a wait for its render verdict \u2014 run it plainly:":" background a wait for its render verdict:",` \u2022 ${o('typebulb wait agent --match "[inline <name>"')}`],...c," End this reply with the mirror link above"," \u2022 easy to miss the link mid-message"]:[` The mirror did not start (${s})`,` \u25CF Start it manually: ${o(`npx typebulb agent:${e}`)}`," Agents:",...c],u=t.boot+i>E_?[` slow launch: boot ${uw(t.boot)} \xB7 mirror ${uw(i)}`]:[],f=[` ${l(`typebulb v${n}`)}`,...u,...d,""];process.stdout.write(f.join(`
|
|
2038
2160
|
`)+`
|
|
2039
|
-
`)}async function
|
|
2161
|
+
`)}async function A_(n,e){if(!process.stdin.isTTY||!process.stdout.isTTY)return;let{lit:t,brand:r}=Bd(!0),s=[` ${r(`typebulb v${n}`)}`," More than one agent harness is available here.",...e.map((o,a)=>` ${t(String(a+1))}) ${o}`),""];process.stdout.write(s.join(`
|
|
2040
2162
|
`)+`
|
|
2041
|
-
`);let i=
|
|
2163
|
+
`);let i=fw.createInterface({input:process.stdin,output:process.stdout});try{let o=(await new Promise(l=>i.question(" Open which? [1]: ",l))).trim();if(o==="")return e[0];let a=Number(o);return Number.isInteger(a)&&a>=1&&a<=e.length?e[a-1]:e.find(l=>l===o.toLowerCase())}finally{i.close()}}function T_(n,e){let{lit:t,brand:r}=Bd(process.stdout.isTTY===!0),s=[` ${r(`typebulb v${n}`)}`," More than one agent harness is available here."," Open the mirror for the one you want:",...e.map(i=>` \u2022 ${t(`npx typebulb agent:${i}`)}`),""];process.stdout.write(s.join(`
|
|
2042
2164
|
`)+`
|
|
2043
|
-
`)}it();rn();async function
|
|
2044
|
-
`+e)}function
|
|
2165
|
+
`)}it();rn();async function hw(n){Oe(n);let e=await ot();if(e.length>0){console.log(Hg(e,process.env.TB_AI_PROVIDER,process.env.TB_AI_MODEL));return}if(!Eu()){console.log("No AI provider keys found in this directory's .env, and no local Ollama server detected."),console.log("Set one of these to use a cloud model with tb.ai:");for(let[t,r]of Object.entries(Un))console.log(` ${r.padEnd(20)} (${t})`);console.log("\u2026or start Ollama (http://localhost:11434, or set OLLAMA_HOST) for local models. Then re-run `typebulb models`.");return}console.log("Couldn't fetch the model catalog (offline?). tb.ai still works with any valid provider/model id for your keys.")}ne();function mw(n){n?.trim()||(console.error("Usage: typebulb slug <bulb name>"),process.exit(1));let e=Tn(n);e||(console.error(`'${n}' has no slug \u2014 a bulb name needs at least one letter or digit.`),process.exit(1)),console.log(e)}At();import*as yw from"path";import{valid as gw,lt as O_}from"semver";Ae();Hi();function P_(n,e,t,r){if(/^\d+$/.test(e))return n.find(i=>i.pid===parseInt(e,10));let s=e==="agent"?n.filter(i=>i.agent!=null):n.filter(i=>i.agent===e);if(s.length){if(!t)return s[0];let i=s.filter(o=>o.cwd&&X(o.cwd)===X(t));return r&&i.find(o=>o.agent===r)||i[0]}return n.find(i=>X(i.file)===X(e))}var Cs=n=>n.agent??yw.basename(n.file);function C_(n){return n===Be?"":n?(gw(n)&&gw(Be)?O_(n,Be):!0)?` STALE runtime v${n} (this CLI is v${Be} \u2014 relaunch to update)`:` runtime v${n} (newer than this CLI's v${Be})`:" STALE runtime (predates the version stamp \u2014 relaunch to update)"}function bw(n,e){for(let t of n)e(` ${t.url} pid ${t.pid} ${t.trust?"trusted":"restricted"}${t.batch?` --batch ${t.batch}`:""}${C_(t.version)} ${t.file}`)}function Dd(n,e){if(!n.length){console.log("No running bulb servers.");return}console.log("Running bulb servers:"),bw(n,t=>console.log(t)),console.log(`
|
|
2166
|
+
`+e)}function jd(n,e,t,r,s){let i=P_(n,e,r,s);if(i)return i;console.error(`No running server for '${e}'.`),n.length?(console.error(`Running servers (try \`typebulb ${t} <file|pid>\`):`),bw(n,o=>console.error(o))):console.error("No bulb servers are running."),process.exit(1)}async function ww(n,e){if(!n){e.clear&&(console.error("Specify which server to clear: typebulb logs --clear <file|pid>"),process.exit(1)),Dd(await Q(process.cwd()),"Run `typebulb logs <file|pid>` to print one server's console.");return}let t=jd(await Q(),n,"logs",process.cwd(),pn());if(e.clear){Vm(t.pid),console.log(`Cleared log for ${Cs(t)} (pid ${t.pid}).`);return}let r=He(t.pid),s=r.text;if(e.run!==void 0?(s=zm(s,e.run),s||console.error(e.run==="latest"?"No output in the latest run yet (the server has logged nothing since its last reload).":`No output for run ${e.run} (it hasn't started, or was trimmed from the log).`)):!s&&!e.follow&&console.error("Log is empty \u2014 this server has logged nothing yet."),e.lines&&e.lines>0){let i=s.split(`
|
|
2045
2167
|
`);i.length&&i[i.length-1]===""&&i.pop(),s=i.slice(-e.lines).join(`
|
|
2046
2168
|
`)}if(process.stdout.write(s),s&&!s.endsWith(`
|
|
2047
2169
|
`)&&process.stdout.write(`
|
|
2048
|
-
`),e.follow&&e.run===void 0){let i=r.offset,o=setInterval(()=>{let l=
|
|
2049
|
-
`);
|
|
2170
|
+
`),e.follow&&e.run===void 0){let i=r.offset,o=setInterval(()=>{let l=He(t.pid,i);i=l.offset,l.text&&process.stdout.write(l.text)},500),a=()=>{clearInterval(o),process.exit(0)};process.on("SIGINT",a),process.on("SIGTERM",a),await new Promise(()=>{})}}var __=n=>new Promise(e=>setTimeout(e,n));async function vw(n,e){if(!n){Dd(await Q(process.cwd()),"Run `typebulb wait <file|pid>` to block until one logs a new line.");return}let t=jd(await Q(),n,"wait",process.cwd(),pn()),r=t.agent!=null,s=process.env.TYPEBULB_WAIT_SHIM==="1",i=process.env.TYPEBULB_WAIT_FOLLOW==="1",o=s||i,a=e.timeoutSec??1800,l=e.match??"",c=He(t.pid).offset,d=i?void 0:Uc(t.pid,l)??(l?Uc(t.pid):void 0),u=i?c:d!==void 0&&d<=c?d:l?0:c,f=Date.now()+a*1e3,p=r?1e4:1e3,m=2e3,h,y="",A=0;for(;;){let S=He(t.pid,u);if(u=S.offset,S.text){y+=S.text;let P=y.split(`
|
|
2171
|
+
`);y=P.pop()??"";for(let C of P)C.trim()&&(e.match&&!C.includes(e.match)||(console.log(C),!i&&(h??=Date.now()+p,r&&(C.includes("] compile error")||C.includes("] runtime error"))&&(h=Math.min(h,Date.now()+m)))))}if(h&&Date.now()>=h)break;if(!o&&!h&&Date.now()>=f){console.error(`timeout: no ${e.match?`line matching '${e.match}'`:"new output"} from ${Cs(t)} within ${a}s`),A=2;break}if(!Jc(t.pid)){h||(console.error(`server ${Cs(t)} (pid ${t.pid}) exited while waiting`),process.exit(3));break}await __(400)}i||Vi(t.pid,u,l),process.exit(A)}async function Sw(n){if(!n){Dd(await Q(process.cwd()),"Run `typebulb stop <file|pid>` to stop one.");return}let e=jd(await Q(),n,"stop",process.cwd(),pn());await Yt(e.pid),console.log(`Stopped ${Cs(e)} (pid ${e.pid}, ${e.url}).`)}async function kw(n){let e=process.cwd(),t=n==="agent"?pn():void 0,r=n==="global"?await Q():n==="bulbs"?await Q(e):(await Q()).filter(i=>i.agent!=null&&i.cwd!=null&&X(i.cwd)===X(e)&&(!t||i.agent===t)),s=n==="global"?"server":n==="agent"?"mirror":"bulb";if(!r.length){console.log(n==="global"?"No running bulb servers.":`No running ${s}s for this project.`);return}await Promise.all(r.map(i=>Yt(i.pid))),console.log(`Stopped ${r.length} ${s}${r.length===1?"":"s"}:`);for(let i of r)console.log(` ${i.url} pid ${i.pid} ${Cs(i)}`)}Ae();At();Hn();import*as Sa from"path";import*as xw from"http";import{mkdir as R_,writeFile as I_}from"fs/promises";function N_(n,e){return new Promise((t,r)=>{let s=new URL(n),i=xw.request({hostname:s.hostname,port:s.port,path:s.pathname+s.search,method:"POST",headers:{"Content-Type":"text/plain","Content-Length":Buffer.byteLength(e)}},o=>{let a="";o.setEncoding("utf8"),o.on("data",l=>{a+=l}),o.on("end",()=>t({status:o.statusCode??0,text:a}))});i.setTimeout(0),i.on("error",r),i.end(e)})}var $_=n=>{let e=Math.round((Date.now()-n)/6e4);return e<1?"moments ago":e<60?`${e}m ago`:`${Math.round(e/60)}h ago`};async function Ew(n,e,t=0){let r=e!==void 0&&e.startsWith("tb:");r&&t<=0&&(t=Pd);let s=e!==void 0&&/^tb:(click|set)( |$)/.test(e),i=Sa.resolve(n),o=_n(await Q(),i)[0];if(!o){let p=(await ps(process.cwd()))(i);console.error(p?`No running server for '${n}' \u2014 it last ran ${$_(p)}. Relaunching reuses the same URL (a stale tab is one reload from live): npx typebulb ${n}`:`No running server for '${n}'. Start it first: npx typebulb ${n}`),process.exit(1)}let a=async p=>{let m=[p>0?`reply=${p}`:"",s?"solo=1":""].filter(Boolean).join("&"),h=await N_(`${o.url}/__send${m?`?${m}`:""}`,e??"");(h.status<200||h.status>=300)&&(console.error(`send failed: HTTP ${h.status} from ${o.url}/__send`),process.exit(1));try{return JSON.parse(h.text)}catch{return{}}},l={};try{let p=Date.now()+t;do{if(l=await a(t>0?Math.max(p-Date.now(),1e3):0),(l.clients??0)>0||Date.now()>=p)break;await new Promise(m=>setTimeout(m,150))}while(!0)}catch(p){console.error(`send failed: ${p instanceof Error?p.message:String(p)}`),process.exit(1)}let c=l.clients??0,d=`${c} page${c===1?"":"s"}`;if(l.refused&&(console.error(`Actuation needs exactly one connected page; ${d} are open on ${o.url} \u2014 close the extras and retry.`),process.exit(1)),c===0){let p=l.droppedMsAgo,m=p!==void 0?` \u2014 a page disconnected ${Math.round(p/1e3)}s ago and hasn't reconnected; reload it, or open ${o.url}`:` \u2014 no page has ever connected; share ${o.url} and arm: typebulb wait ${n} --match "[page] connected"`;t>0?console.error(`No page connected after ${t/1e3}s${m}`):console.error(`Sent, but no page is connected${m}`),r&&process.exit(1);return}console.error(`Sent to ${d}.`);let u=l.results??[],f=l.errors??[];for(let p of f)console.error(`handler error: ${p}`);if(f.length&&process.exit(1),u.length>1&&(console.error(`${u.length} replies from ${d} \u2014 one reply owns stdout: at most one tb.onMessage handler, in one page, may return a value.`),process.exit(1)),u.length===1){if(e!==void 0&&/^tb:png( |$)/.test(e)){let m={};try{m=JSON.parse(u[0])}catch{}typeof m.png!="string"&&(console.error("tb:png replied with an unexpected shape \u2014 an older runtime? (`typebulb logs` lists server versions)"),process.exit(1));let h=Fm(i);await R_(Sa.dirname(h),{recursive:!0}),await I_(h,Buffer.from(m.png,"base64"));let y=[m.via?`inside "${m.via}"`:"",m.backdrop?`backdrop ${m.backdrop}`:""].filter(Boolean);console.error(`canvas ${m.width}\xD7${m.height} \u2192 PNG${y.length?` (${y.join("; ")})`:""}`),console.log(h);return}let p;try{p=JSON.parse(u[0])}catch{p=void 0}console.log(typeof p=="string"?p:u[0])}else l.timedOut&&(r&&(console.error(`No reply to '${e}' within ${t/1e3}s \u2014 reload the page and retry.`),process.exit(1)),console.error(`(no reply within ${t/1e3}s \u2014 slow work needs a larger --wait=ms; a reply that NEVER comes is a done-promise that missed an exit)`))}qo();Ju();ne();import*as Aw from"fs/promises";async function Tw(n,e){let t=await Aw.readFile(n,"utf-8"),r=ue(t);r||(console.error(`Not a valid bulb: ${n}`),process.exit(1));let s=le[e].path,i=r.files.get(s);i||(console.error(i===void 0?`No **${s}** block in ${n}`:`The **${s}** block in ${n} is empty`),process.exit(2)),process.stdout.write(i.endsWith(`
|
|
2050
2172
|
`)?i:i+`
|
|
2051
|
-
`)}ne();import*as
|
|
2052
|
-
`).trimEnd()}function
|
|
2173
|
+
`)}ne();import*as _s from"fs/promises";async function Cw(n,e){let t=await _s.readFile(n,"utf-8"),r=[];for(let{kind:i,source:o}of e){let a;try{a=o==="-"?await M_():await _s.readFile(o,"utf-8")}catch(l){Pw(`Cannot read ${i}'s source: ${l instanceof Error?l.message:String(l)}`)}r.push({kind:i,content:_w(a),label:o==="-"?"stdin":o})}let s;try{s=L_(t,r)}catch(i){Pw(`${n}: ${i instanceof Error?i.message:String(i)}`)}for(let i of s.upToDate)console.log(`${le[i].path}: already up to date`);if(s.written.length){await _s.writeFile(n,s.text);for(let i of s.written)console.log(i.action==="removed"?`${le[i.kind].path}: removed (${i.label} is empty)`:`${le[i.kind].path}: ${i.action} from ${i.label} (${i.chars.toLocaleString()} chars)`)}}function L_(n,e){let t=ue(n);if(!t)throw new Error("not a valid bulb");let r=n,s=[],i=[];for(let{kind:o,content:a,label:l}of e){let c=le[o].path,d=t.files.get(c);if(!a){if(d===void 0){i.push(o);continue}r=Ow(hf(r,o),r,c),s.push({kind:o,action:"removed",chars:0,label:l});continue}if(d!==void 0&&_w(d)===a){i.push(o);continue}r=Ow(ar(r,o,a),r,c),s.push({kind:o,action:d===void 0?"created":"replaced",chars:a.length,label:l})}return{text:r,written:s,upToDate:i}}function _w(n){return(n.charCodeAt(0)===65279?n.slice(1):n).replace(/\r\n/g,`
|
|
2174
|
+
`).trimEnd()}function Ow(n,e,t){if(n===e)throw new Error(`the **${t}** block's fence is unterminated; refusing to rewrite inside it`);return n}function Pw(n){console.error(n),process.exit(1)}async function M_(){let n=[];for await(let e of process.stdin)n.push(e);return Buffer.concat(n).toString("utf-8")}it();ze();ne();Bo();import*as Ft from"fs/promises";import*as Pa from"path";import{EventEmitter as Mw}from"events";import Z_ from"open";nn();ne();import{Hono as q_}from"hono";import{serve as J_}from"@hono/node-server";import{streamSSE as K_}from"hono/streaming";import*as Jd from"fs/promises";Ln();as();$n();import*as Fd from"fs/promises";import*as Rs from"path";var ka=class{async get(e){let t=De(e),r=Rs.join(os,t+".bin"),s=Rs.join(os,t+".json");try{let[i,o]=await Promise.all([Fd.readFile(r),Fd.readFile(s,"utf8")]),a=JSON.parse(o);return{body:i,contentType:a.contentType,cacheControl:a.cacheControl}}catch{return}}async set(e,t){await Z();let r=De(e),s=Rs.join(os,r+".bin"),i=Rs.join(os,r+".json"),o={url:e,contentType:t.contentType,cacheControl:t.cacheControl};await Promise.all([Te(s,t.body),Te(i,JSON.stringify(o))])}};var Rw=`
|
|
2053
2175
|
const CSS = '\\n' +
|
|
2054
2176
|
/* The agent mirror's token set, verbatim (agents/core/client/styles.css) \u2014 one system across CLI
|
|
2055
2177
|
chrome: app chrome sits on --panel, content wells paint --veil, grays ride one neutral tint.
|
|
@@ -2370,18 +2492,18 @@ export function runInference(ctx) {
|
|
|
2370
2492
|
showConfirm();
|
|
2371
2493
|
document.body.appendChild(host);
|
|
2372
2494
|
}
|
|
2373
|
-
`;
|
|
2374
|
-
${f}`:"";return
|
|
2375
|
-
`+ee.slice(-4e3)),new ve("LLM output is not valid JSON","parse_error",!0);oe.fixesApplied.length&&console.warn("[tb.infer] sanitized output, fixes applied:",oe.fixesApplied.join(", "));let ke={insight:oe.parsed,insightJson:oe.json,data:M};yield{kind:"complete",...ke,fixesApplied:oe.fixesApplied,hash:
|
|
2495
|
+
`;Ae();rn();Oo();nn();import{stream as B_}from"hono/streaming";var D_="X-TB-Stream";function Is(n){return n instanceof ve?{message:n.message,code:n.code,retryable:n.retryable}:{message:n instanceof Error?n.message:"Unknown error",code:"unknown",retryable:!1}}function xa(n,e){return n.header("Content-Type","application/x-ndjson; charset=utf-8"),n.header("Cache-Control","no-cache"),n.header(D_,"1"),B_(n,async t=>{let r=e[Symbol.asyncIterator]();t.onAbort(()=>{r.return?.()});try{for(;;){let{done:s,value:i}=await r.next();if(s)break;await t.writeln(JSON.stringify({type:"chunk",value:i}))}}catch(s){await t.writeln(JSON.stringify({type:"error",error:Is(s)}))}finally{try{await r.return?.()}catch{}}})}var Ea={log:(...n)=>console.log(...n)};function Aa(n,e){let t=n?.[e]??(Object.hasOwn(Ea,e)?Ea[e]:void 0);return typeof t=="function"?t:void 0}function Ta(n){return n.constructor?.name==="AsyncGeneratorFunction"}Au();var j_=/^\/(v\d+\/|stable\/|node\/|gh\/|@[^/]+\/[^@/]+@|[^@/]+@)/,F_=/[?&]target=/,U_=/^\/(?:@[^/]+\/)?[^/@]+\/[^/]+/;function Iw(n,e=""){return j_.test(n)?!0:U_.test(n)&&F_.test(e)}var W_="127.0.0.1",H_=new Set(["localhost","127.0.0.1","::1"]),Y_=0;function V_(n){if(n)try{return new URL(n.includes("://")?n:`http://${n}`).hostname}catch{return}}function z_(n){let e=V_(n);return!!e&&H_.has(e)}function G_(n,e){if(!e)return!1;try{return new URL(n).host===e}catch{return!1}}function Ud(n){return n instanceof Error?n.message:"Unknown error"}async function $w(n){let{getHtml:e,basePath:t,fsBase:r,port:s,reloadEmitter:i,messageEmitter:o,getServerExports:a,getBulbBlocks:l,saveInferenceResult:c,localOverride:d,trusted:u=!1,trustHint:f,staticAssets:p,bulbAssets:m,sourceFile:h}=n,y=`${process.pid}-${++Y_}-${Date.now()}`,A=r??t,S=new q_;S.use("*",async(b,E)=>{if(!z_(b.req.header("host")))return b.text("Forbidden: untrusted Host",403);await E()}),S.use("*",async(b,E)=>{await E(),b.res.headers.set("Cross-Origin-Opener-Policy","same-origin"),b.res.headers.set("Cross-Origin-Embedder-Policy","credentialless")});let P=[["/__fs/*","the filesystem"],["/__api/*","server-side code (server.ts)"],["/__ai","AI (your API keys)"],["/__infer","AI (your API keys)"],["/__infer-save","the filesystem"]],C=async(b,E)=>{if(!u){let I=new URL(b.req.url).pathname,L=P.find(([W])=>W.endsWith("/*")?I.startsWith(W.slice(0,-2)):I===W)?.[1]??"server-side code (server.ts)";Xm(process.pid,L);let M=f?`
|
|
2496
|
+
${f}`:"";return b.text(`Forbidden: this capability requires --trust.${M}`,403)}await E()},_=async(b,E)=>{let I=b.req.header("sec-fetch-site");if(I){if(I!=="same-origin")return b.text(`Forbidden: ${I} request`,403)}else{let L=b.req.header("origin");if(L&&!G_(L,b.req.header("host")))return b.text("Forbidden: cross-origin request",403)}await E()};for(let[b]of P)S.use(b,C),S.use(b,_);S.use("/__log",_),S.post("/__log",async b=>{try{let{args:E}=await b.req.json();console.log(...E||[])}catch{}return b.json({ok:!0})});let R=0;if(o){let b=0,E=new Map;S.use("/__send",_),S.post("/__send",async I=>{let L="";try{L=await I.req.text()}catch{}let M=Number(I.req.query("reply"))||0,W=o.listenerCount("message"),G=W===0&&R?Date.now()-R:void 0;if(I.req.query("solo")!==void 0&&W!==1)return I.json({clients:W,droppedMsAgo:G,refused:W>1});if(M<=0||W===0)return o.emit("message",{payload:L}),I.json({clients:W,droppedMsAgo:G});let he=++b,ee=await new Promise(oe=>{let ke={expected:W,received:0,results:[],errors:[],finish:or=>{clearTimeout(Re),E.delete(he),oe({results:ke.results,errors:ke.errors,timedOut:or})}},Re=setTimeout(()=>ke.finish(!0),M);E.set(he,ke),o.emit("message",{id:he,payload:L})});return I.json({clients:W,...ee})}),S.use("/__send-reply",_),S.post("/__send-reply",async I=>{try{let{id:L,results:M,errors:W}=await I.req.json(),G=E.get(L);G&&(G.results.push(...M??[]),G.errors.push(...W??[]),++G.received>=G.expected&&G.finish(!1))}catch{}return I.json({ok:!0})})}S.get("/",b=>b.html(e())),S.post("/__fs/read",async b=>{try{let{path:E}=await b.req.json(),I=await ds(E,A,t);return new Response(new Uint8Array(I),{headers:{"Content-Type":"application/octet-stream"}})}catch(E){let I=Ud(E);return b.json({error:I},400)}}),S.post("/__fs/write",async b=>{try{let E=b.req.query("path");return E?(await Co(E,new Uint8Array(await b.req.arrayBuffer()),A,t),b.json({success:!0})):b.json({error:"Missing path"},400)}catch(E){let I=Ud(E);return b.json({error:I},400)}}),S.post("/__api/:name",async b=>{try{let E=b.req.param("name"),I=Aa(a?.(),E);if(!I)return b.json({error:`API function '${E}' not found`},404);let{args:L}=await b.req.json();if(Ta(I))return xa(b,I(...L||[]));let M=await I(...L||[]);return b.json({result:M})}catch(E){let I=Ud(E);return b.json({error:I},500)}}),S.post("/__ai",async b=>{try{let{messages:E,system:I,effort:L,provider:M,model:W,webSearch:G,stream:he}=await b.req.json();if(!E||!Array.isArray(E)||E.length===0)return b.json({message:"messages array is required",code:"unknown",retryable:!1},400);let ee=at(M,W);if(typeof ee=="string")return b.json({message:ee,code:"unknown",retryable:!1},400);let oe=await It(ee,{messages:E,system:I,effort:L,webSearch:G,signal:b.req.raw.signal});if(!oe.ok){let or=await jn(oe,ee.protocol);return b.json(or,oe.status)}if(he)return xa(b,tn(oe,ee.protocol));let{text:ke,usage:Re}=await Fn(oe,ee.protocol);return ke||console.warn("[tb.ai] Empty response from provider"),b.json({text:ke,usage:Re})}catch(E){return b.json(Is(E),500)}}),S.post("/__infer",async b=>{try{let{data:E}=await b.req.json().catch(()=>({})),I=l?.();if(!I?.infer.trim())return b.json({message:"This bulb has no infer.md block.",code:"unknown",retryable:!1},400);let L=at();if(typeof L=="string")return b.json({message:L,code:"unknown",retryable:!1},400);let M=Array.isArray(E)?E.map(String):[],W=wu(I,M),G=await It(L,{messages:[{role:"user",content:W}],signal:b.req.raw.signal});if(!G.ok){let ee=await jn(G,L.protocol);return b.json(ee,G.status)}let he=(async function*(){let ee="";for await(let Re of tn(G,L.protocol))Re.kind!=="text"||!Re.text||(ee+=Re.text,yield{kind:"delta",text:Re.text});let oe=vu(ee);if(oe.parsed===null)throw console.warn(`[tb.infer] output not valid JSON after sanitize; raw output (last 4000 chars):
|
|
2497
|
+
`+ee.slice(-4e3)),new ve("LLM output is not valid JSON","parse_error",!0);oe.fixesApplied.length&&console.warn("[tb.infer] sanitized output, fixes applied:",oe.fixesApplied.join(", "));let ke={insight:oe.parsed,insightJson:oe.json,data:M};yield{kind:"complete",...ke,fixesApplied:oe.fixesApplied,hash:Su(ke)}})();return xa(b,he)}catch(E){return b.json(Is(E),500)}});let $=async b=>{let{hash:E}=await b.req.json().catch(()=>({}));return typeof E=="string"?ku(E):null};S.post("/__infer-save",async b=>{try{if(!c)return b.json({message:"Save is not available for this server.",code:"unknown",retryable:!1},400);let E=await $(b);return E?(await c(E.data,E.insightJson),b.json({ok:!0})):b.json({message:"No decodable #tb= fragment to save.",code:"unknown",retryable:!1},400)}catch(E){return b.json(Is(E),500)}}),S.get("/__infer-info",b=>{let E=l?.(),I=lr(E?.config??"").inference,L=Bi(E?.data??""),M=at();return typeof M=="string"?b.json({error:M,inference:I,data:L}):b.json({provider:M.protocol,model:M.model,inference:I,data:L})}),S.use("/__infer-decode",_),S.post("/__infer-decode",async b=>b.json(await $(b)??{error:"invalid fragment"})),S.get("/__infer-ui.js",b=>b.body(Rw,200,{"Content-Type":"text/javascript; charset=utf-8"})),S.get("/__models",async b=>{try{let E=await ot();return b.json(E)}catch{return b.json([],200)}}),S.get("/__ai-access",async b=>{try{return b.json(await To())}catch{return b.json("none",200)}}),h&&S.get("/__source/*",async b=>{let E=await Jd.readFile(h,"utf-8").catch(()=>{});return E===void 0?b.text("Not Found",404):new Response(E,{headers:{"Content-Type":"text/plain; charset=utf-8"}})});let x=["esm.sh","unpkg.com","cdn.jsdelivr.net","cdnjs.cloudflare.com"],D=new ka;S.get("/proxy/*",async b=>{let E=new URL(b.req.url),L=(E.pathname+E.search).slice(7),M=L.lastIndexOf("https://");return M===-1?b.text("Invalid proxy URL",400):K(b,L.slice(M))}),d&&Nw(S,`/local/${d.name}/`,d.serveDir),p&&Nw(S,p.mount,p.dir),m&&S.get("/assets/*",async b=>{let{pathname:E}=new URL(b.req.url),I=E.slice(8),L;try{L=decodeURIComponent(I)}catch{return b.text("Not Found",404)}let M=bf(L);if(M)return b.text(`${M} is not an asset type: a bulb's code and markup live in the bulb; assets are media and data`,403);try{for(let G of m.dirs){let he=await Lw(L,G,{"Cache-Control":"no-cache"});if(he)return he}}catch{return b.text("Not Found",404)}let W=m.remoteBase;return W?b.redirect(W+I,302):b.text("Not Found",404)});async function K(b,E){let I;try{I=new URL(E)}catch{return b.text("Invalid URL",400)}if(I.protocol!=="https:")return b.text("HTTPS only",400);if(!x.includes(I.hostname))return b.text("Host not allowed",403);let L=await D.get(E);if(L)return new Response(L.body,{status:200,headers:qd(L.contentType,L.cacheControl)});try{let M=await fetch(E,{headers:{Accept:b.req.header("Accept")||"*/*"},redirect:"follow"});if(!M.ok)return b.text(`Upstream ${M.status}`,M.status);let W=M.headers.get("Content-Type")||void 0,G=M.headers.get("Cache-Control")||void 0;if(M.body){let[he,ee]=M.body.tee();return(async()=>{try{let oe=await new Response(ee).arrayBuffer();await D.set(E,{body:Buffer.from(oe),contentType:W,cacheControl:G})}catch{}})(),new Response(he,{status:M.status,headers:qd(W,G)})}return new Response(null,{status:M.status,headers:qd(W,G)})}catch(M){return b.text(`Proxy fetch failed: ${M instanceof Error?M.message:M}`,502)}}(i||o)&&S.get("/__reload",b=>K_(b,async E=>{let I=()=>{E.writeSSE({event:"reload",data:""})},L=M=>{E.writeSSE({event:"message",data:JSON.stringify(M)})};for(i?.on("reload",I),o?.on("message",L),o&&o.listenerCount("message")===1&&console.log("[page] connected"),E.onAbort(()=>{i?.removeListener("reload",I),o?.removeListener("message",L),R=Date.now()}),await E.writeSSE({event:"hello",data:y});!E.aborted;)await E.sleep(3e4)})),S.notFound(async b=>{if(b.req.method!=="GET")return b.text("Not Found",404);let E=new URL(b.req.url);return Iw(E.pathname,E.search)?K(b,"https://esm.sh"+E.pathname+E.search):b.text("Not Found",404)});let q=J_({fetch:S.fetch,port:s,hostname:W_});return q.listening||await new Promise((b,E)=>{let I=L=>E(L);q.once("error",I),q.once("listening",()=>{q.removeListener("error",I),b()})}),{port:s,close:()=>q.close()}}function qd(n,e){let t=new Headers;return n&&t.set("Content-Type",n),e&&t.set("Cache-Control",e),t.set("Access-Control-Allow-Origin","*"),t.set("Cross-Origin-Resource-Policy","cross-origin"),t}function Nw(n,e,t){n.get(`${e}*`,async r=>{let{pathname:s}=new URL(r.req.url);if(!s.startsWith(e))return r.text("Not Found",404);try{return await Lw(decodeURIComponent(s.slice(e.length)),t)??r.text("Not Found",404)}catch{return r.text("Not Found",404)}})}async function Lw(n,e,t={}){let r=Po(n,e),s=await Jd.readFile(r).catch(()=>{});if(s)return new Response(s,{headers:{"Content-Type":yf(r),...t}})}Ae();Hn();async function Oa(n){let{port:e,portNote:t,makeServerOptions:r,makeEntry:s,displayName:i,stopLog:o}=n,a=await $w(r(e)).catch(async u=>{if(u?.code!=="EADDRINUSE")throw u;return _u(e)}),l=`http://localhost:${e}`;await Gm(s(e,l)),console.log(`
|
|
2376
2498
|
${i}`),console.log(` ${l}`),t&&console.log(` ${t}`);let c=[],d=async()=>{console.log(`
|
|
2377
|
-
Shutting down...`),a.close();for(let u of c)try{await u()}catch{}o(),await Yr(process.pid),process.exit(0)};return process.on("SIGINT",d),process.on("SIGTERM",d),{port:e,url:l,onCleanup(u){c.push(u)}}}
|
|
2499
|
+
Shutting down...`),a.close();for(let u of c)try{await u()}catch{}o(),await Yr(process.pid),process.exit(0)};return process.on("SIGINT",d),process.on("SIGTERM",d),{port:e,url:l,onCleanup(u){c.push(u)}}}Hn();import X_ from"chokidar";var Q_={persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50}};function jt(n){let{target:e,onChange:t,events:r="change",debounceMs:s=150}=n,i,o=X_.watch(e,Q_);o.on("error",l=>console.warn(`watch: ${l instanceof Error?l.message:l} \u2014 continuing`));let a=()=>{i&&clearTimeout(i),i=setTimeout(t,s)};return r==="all"?o.on("all",a):o.on("change",a),()=>{i&&clearTimeout(i),o.close()}}Ae();async function Bw(n,e,t,r){let s=process.cwd(),i=zi(process.pid),o=e.watch?new Mw:void 0,a=new Mw;a.setMaxListeners(0);let l=Oe(e.mode),c=await Wc(n);c.length&&console.log(`Replacing the running server for this bulb (pid ${c.map(x=>x.pid).join(", ")})`);let{port:d,note:u}=await Mo({explicit:e.port,target:{kind:"bulb",file:n},cwd:process.cwd()}),f=1;console.log(qc(f)),e.batch&&await Kn(n,e.batch),console.log(`Loading ${Pa.basename(n)}...`);let{html:p,bulb:m,serverExports:h}=await Ou(n,e.watch,e.trust,r,e.batch);Rt(l,n,m.server);let y=[...e.batch?[$t(n,e.batch)]:[],$t(n)],A=Wn(Pa.resolve(n)),S=e.trust?void 0:Yn(m),{port:P,url:C,onCleanup:_}=await Oa({port:d,portNote:u,displayName:m.name,stopLog:i,makeServerOptions:x=>({getHtml:()=>p,basePath:s,fsBase:Nt(n,e.batch),port:x,reloadEmitter:o,messageEmitter:a,getServerExports:()=>h,getBulbBlocks:()=>({infer:m.infer,insight:m.insight,code:m.code,config:m.config,data:m.data}),saveInferenceResult:async(D,K)=>{let q=await Ft.readFile(n,"utf-8");q=ar(q,"data",D.join(ym)),q=ar(q,"insight",K),await Ft.writeFile(n,q)},localOverride:r?{name:r.name,serveDir:r.serveDir}:void 0,bulbAssets:{dirs:y,remoteBase:A&&js(A.userSlug,A.slug)},sourceFile:n,trusted:e.trust,trustHint:t}),makeEntry:(x,D)=>({pid:process.pid,port:x,url:D,file:n,cwd:process.cwd(),startedAt:Date.now(),trust:e.trust,batch:e.batch,mode:e.mode,predicted:S})});e.trust?console.log(" trust: granted (filesystem, AI, server.ts enabled)"):console.log(S?` trust: restricted \u2014 this bulb appears to use ${S}; re-run with --trust to enable it:
|
|
2378
2500
|
${t}
|
|
2379
2501
|
`:` trust: restricted \u2014 re-run with --trust to enable filesystem / AI / server.ts
|
|
2380
2502
|
`),e.watch&&console.log(` Watching for changes...
|
|
2381
|
-
`);let R,$;if(e.watch&&o){let x=0,D=Promise.resolve();if(R=jt({target:n,onChange:()=>{let K=++x;D=D.then(async()=>{if(K===x)try{console.log("Recompiling...");let q=await
|
|
2382
|
-
`),o.emit("reload")}})}for(let K of
|
|
2383
|
-
`),o.emit("reload")}}))}R&&
|
|
2384
|
-
`):await
|
|
2503
|
+
`);let R,$;if(e.watch&&o){let x=0,D=Promise.resolve();if(R=jt({target:n,onChange:()=>{let K=++x;D=D.then(async()=>{if(K===x)try{console.log("Recompiling...");let q=await Ou(n,!0,e.trust,r,e.batch);p=q.html,h=q.serverExports,m=q.bulb,f++,console.log(qc(f)),o.emit("reload")}catch(q){console.error("Compile error:",q)}})}}),r){let{name:K,serveDir:q}=r;$=jt({target:q,events:"all",onChange:()=>{console.log(`Local package '${K}' changed. Browser reloading...
|
|
2504
|
+
`),o.emit("reload")}})}for(let K of y)await Ft.stat(K).then(q=>q.isDirectory()).catch(()=>!1)&&_(jt({target:K,events:"all",onChange:()=>{console.log(`Assets changed. Browser reloading...
|
|
2505
|
+
`),o.emit("reload")}}))}R&&_(R),$&&_($),_(()=>Ft.rm(Tu(n),{force:!0})),e.open&&(c.some(x=>x.port===P)?console.log(` Reusing the open browser tab.
|
|
2506
|
+
`):await Z_(C))}it();import{readFileSync as jw,copyFileSync as tR,existsSync as nR}from"fs";import*as fe from"path";import{fileURLToPath as rR}from"url";import{EventEmitter as sR}from"events";import Fw from"open";Hn();Ae();po();var Kd=n=>`/agents/${n}/client.js`,eR=`
|
|
2385
2507
|
(() => {
|
|
2386
2508
|
const api = async (name, ...args) => {
|
|
2387
2509
|
const resp = await fetch('/__api/' + name, {
|
|
@@ -2410,16 +2532,16 @@ Shutting down...`),a.close();for(let u of c)try{await u()}catch{}o(),await Yr(pr
|
|
|
2410
2532
|
})
|
|
2411
2533
|
});
|
|
2412
2534
|
if (window.__TYPEBULB_WATCH__) {
|
|
2413
|
-
${
|
|
2535
|
+
${fo}
|
|
2414
2536
|
}
|
|
2415
2537
|
})();
|
|
2416
|
-
`;function
|
|
2538
|
+
`;function Dw(n){let{name:e,agent:t,styles:r,mountHtml:s,watch:i,theme:o}=n,a=Kd(t);return`<!DOCTYPE html>
|
|
2417
2539
|
<html>
|
|
2418
2540
|
<head>
|
|
2419
2541
|
<meta charset="utf-8">
|
|
2420
2542
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
2421
|
-
<title>${
|
|
2422
|
-
${
|
|
2543
|
+
<title>${co(e)} - typebulb</title>
|
|
2544
|
+
${uo(e,o)}
|
|
2423
2545
|
<style>
|
|
2424
2546
|
${qr}
|
|
2425
2547
|
</style>
|
|
@@ -2433,17 +2555,17 @@ ${s}
|
|
|
2433
2555
|
${i?"<script>window.__TYPEBULB_WATCH__ = true;</script>":""}
|
|
2434
2556
|
|
|
2435
2557
|
<script>
|
|
2436
|
-
${
|
|
2558
|
+
${eR}
|
|
2437
2559
|
</script>
|
|
2438
2560
|
|
|
2439
2561
|
<script type="module" src="${a}"></script>
|
|
2440
2562
|
</body>
|
|
2441
|
-
</html>`}async function
|
|
2442
|
-
${r.url}`),n.open&&await
|
|
2443
|
-
`);let
|
|
2444
|
-
`),i.emit("reload")}catch(K){console.error("Mirror rebuild failed:",K instanceof Error?K.message:K)}finally{D=!1}}}})}n.open&&await
|
|
2445
|
-
`);let l=0,c=Promise.resolve();jt({target:n,onChange:()=>{let d=++l;c=c.then(async()=>{if(d===l)try{console.log("Re-running..."),await a()}catch(u){console.error("Error:",u)}})}})}}it();ze();import{Console as
|
|
2446
|
-
`)}catch(p){Ns(p instanceof Error?p.stack??p.message:String(p))}return
|
|
2447
|
-
`),
|
|
2448
|
-
`),process.exit(1)}function
|
|
2449
|
-
${e}`),process.exit(1))}async function
|
|
2563
|
+
</html>`}async function Uw(n){let e=process.cwd(),t=n.agentTarget;Mb(t)||(console.error(`Unknown agent '${t}'. Known: ${rr().join(", ")}.`),process.exit(1));let r=await Kc(e,t);if(r){console.log(`Mirror '${t}' is already running for this project:
|
|
2564
|
+
${r.url}`),n.open&&await Fw(r.url);return}let s=zi(process.pid),i=n.watch?new sR:void 0,o=Oe(n.mode),a=await Db(t),l=a.displayName||`${t} mirror`;Rt(o,fe.join(e,"mirror"));let c=fe.dirname(rR(import.meta.url)),d=fe.join(c,"agents",t),u=fe.join(c,"..","cli","agents"),f=fe.join(d,"styles.css"),p=fe.join(d,"index.html"),m=()=>Dw({name:l,agent:t,styles:jw(f,"utf8"),mountHtml:jw(p,"utf8"),watch:n.watch}),{port:h,note:y}=await Mo({explicit:n.port,target:{kind:"mirror",agent:t},cwd:e}),{port:A,url:S,onCleanup:P}=await Oa({port:h,portNote:y,displayName:l,stopLog:s,makeServerOptions:x=>({getHtml:m,basePath:e,port:x,reloadEmitter:i,getServerExports:()=>a,trusted:!0,staticAssets:{mount:`${fe.posix.dirname(Kd(t))}/`,dir:d}}),makeEntry:(x,D)=>({pid:process.pid,port:x,url:D,file:`agent:${t}`,cwd:e,startedAt:Date.now(),trust:!0,agent:t})});n.watch&&console.log(` Watching for changes...
|
|
2565
|
+
`);let C=fe.join(u,t,"client"),_=fe.join(u,"core","client");async function R(){await(await import("esbuild")).build({entryPoints:[fe.join(C,"index.ts")],bundle:!0,platform:"browser",format:"esm",outfile:fe.join(d,"client.js")});for(let D of["styles.css","index.html","typebulb.png","typebulb-inv.png"])tR(fe.join(_,D),fe.join(d,D))}let $;if(n.watch&&i){let x=nR(C),D=!1;$=jt({target:x?u:d,events:"all",onChange:async()=>{if(!D){D=!0;try{x&&await R(),console.log(`Mirror rebuilt. Browser reloading...
|
|
2566
|
+
`),i.emit("reload")}catch(K){console.error("Mirror rebuild failed:",K instanceof Error?K.message:K)}finally{D=!1}}}})}n.open&&await Fw(S),P(()=>a.shutdownSwitcher?.()),P(()=>a.shutdownComposer?.()),$&&P($)}it();ze();import*as qw from"path";async function Jw(n,e,t,r,s){let i=Oe(t),o=!1;s&&await Kn(n,s);let a=async()=>{let{bulb:l,config:c}=await qe(n);o||(Rt(i,n,l.server),o=!0),await fs(l.server,n,r,c.dependencies,s)};if(console.log(`Running ${qw.basename(n)}...`),await a(),e){console.log(`Watching for changes...
|
|
2567
|
+
`);let l=0,c=Promise.resolve();jt({target:n,onChange:()=>{let d=++l;c=c.then(async()=>{if(d===l)try{console.log("Re-running..."),await a()}catch(u){console.error("Error:",u)}})}})}}it();ze();import{Console as iR}from"node:console";Ae();async function Hw(n,e,t,r,s){uR();try{let p=_n(await Q(),n)[0];p&&(Vi(p.pid,He(p.pid).offset),console.error(`note: 'call' boots a fresh server.ts instance; the running server (${p.url}) is not contacted \u2014 state shared with it must live on disk.`))}catch{}let i=Oe(t),{bulb:o,config:a}=await qe(n);o.server||Ns("This bulb has no **server.ts** block; nothing to call."),Rt(i,n,o.server),s&&await Kn(n,s);let l;try{l=await fs(o.server,n,r,a.dependencies,s)}catch(p){Ns(p instanceof Error?p.message:String(p))}let c=Aa(l,e.fn);if(!c){let p=[...Object.keys(l).filter(m=>typeof l[m]=="function"),...Object.keys(Ea)];Ns(`Function '${e.fn}' not found. Available: ${p.length?p.join(", "):"(none)"}.`)}let d=await oR(e);if(Ta(c)){try{for await(let p of c(...d))await Ww(JSON.stringify(p,Yw)+`
|
|
2568
|
+
`)}catch(p){Ns(p instanceof Error?p.stack??p.message:String(p))}return Kw(0)}let u;try{u=await c(...d)}catch(p){Ns(p instanceof Error?p.stack??p.message:String(p))}let f=cR(u);f!==void 0&&await Ww(f+`
|
|
2569
|
+
`),Kw(0)}function Kw(n){process.exitCode=n,setTimeout(()=>process.exit(n),2e3).unref?.()}async function oR(n){if(n.hasArgsFlag){let e=n.argsJson??"";return e==="-"&&(e=await dR()),lR(e)}return aR(n.positional)}function aR(n){return n.map(e=>{try{return JSON.parse(e)}catch{return e}})}function lR(n){let e;try{e=JSON.parse(n)}catch(t){throw new Error(`--args must be a JSON array: ${t instanceof Error?t.message:String(t)}`)}if(!Array.isArray(e))throw new Error(`--args must be a JSON array, got ${e===null?"null":typeof e}`);return e}function cR(n){if(n!==void 0)return JSON.stringify(n,Yw,2)}function Yw(n,e){return typeof e=="bigint"?e.toString():e}function Ns(n){process.stderr.write(n+`
|
|
2570
|
+
`),process.exit(1)}function uR(){let n=new iR(process.stderr,process.stderr);console.log=n.log.bind(n),console.info=n.info.bind(n),console.debug=n.debug.bind(n),console.dir=n.dir.bind(n)}function Ww(n){return new Promise((e,t)=>{process.stdout.write(n,r=>r?t(r):e())})}async function dR(){let n=[];for await(let e of process.stdin)n.push(e);return Buffer.concat(n).toString("utf-8")}Hi();for(let n of[process.stdout,process.stderr])n.on("error",e=>{if(e?.code!=="EPIPE")throw e});function Vw(n,e){n||(console.error(`This bulb runs server-side Node code (server.ts), which --trust must authorize:
|
|
2571
|
+
${e}`),process.exit(1))}async function fR(){let n=Ub(process.argv.slice(2));if(n.version&&(console.log(`typebulb ${Be}`),process.exit(0)),n.help&&(qb(),process.exit(0)),jb(),n.subcommand==="logs"){await ww(n.file||void 0,{follow:n.follow,clear:n.clear,run:n.run,lines:n.lines});return}if(n.subcommand==="wait"){await vw(n.file||void 0,{match:n.match,timeoutSec:n.timeoutSec});return}if(n.subcommand==="stop"){n.stopScope?await kw(n.stopScope):await Sw(n.file||void 0);return}if(n.subcommand==="send"){await Ew(n.file,n.sendMessage,n.sendWaitMs??0);return}if(n.subcommand==="models"){await hw(n.mode);return}if(n.subcommand==="slug"){mw(n.slugName);return}if(n.subcommand==="pull"){await my(n.file||void 0,{force:n.force,mode:n.mode});return}if(n.subcommand==="push"){await yy(n.file||void 0,{force:n.force,mode:n.mode});return}if(n.subcommand==="agent"){await(n.agentTarget?Uw(n):pw(Be));return}if(n.subcommand==="trust"||n.subcommand==="untrust"){await cw(n.file||void 0,n.subcommand==="trust");return}let e;if(!n.file||n.file==="."){let l=await Gg(process.cwd());l||(console.error("No .bulb.md file found in current directory"),process.exit(1)),e=l}else e=dt.resolve(n.file);if(await zw.access(e).then(()=>!0,()=>!1)||(rr().includes(n.file)&&(console.error(`To open the ${n.file} agent mirror, run: npx typebulb agent:${n.file}`),process.exit(1)),console.error(`File not found: ${e}`+(dt.isAbsolute(n.file)?"":` (resolved from cwd ${process.cwd()})`)),process.exit(1)),e.endsWith(".bulb.md")||(console.error("File must have .bulb.md extension"),process.exit(1)),n.subcommand==="get"){await Tw(e,n.blockKind);return}if(n.subcommand==="put"){await Cw(e,n.blockPairs);return}let r=n.file&&n.file!=="."?n.file:dt.relative(process.cwd(),e)||dt.basename(e),s=`npx typebulb --trust ${r.includes(" ")?`"${r}"`:r}`;if(n.subcommand==="predict"){await lw(e,s);return}let i=!n.noTrust&&on(e);i&&!n.trust&&console.error("trust: granted from memory (run `typebulb untrust` to revoke)"),n.trust=n.noTrust?!1:n.trust||i;let o;try{o=await qe(e)}catch{}let a;if(n.local){o&&!(n.local.name in(o.config.dependencies??{}))&&(console.error(`--replace: '${n.local.name}' is not a dependency in this bulb's config.json; nothing to replace.`),process.exit(1)),o&&n.subcommand!=="call"&&(!o.bulb.code||n.server)&&console.warn("warning: --replace has no effect in server mode (the override is client-only).");try{a=await tf(n.local)}catch(l){console.error(l instanceof Error?l.message:String(l)),process.exit(1)}console.error(`replace: ${a.name} \u2192 ${dt.relative(process.cwd(),a.dir)||"."}`)}if(n.subcommand==="check"){await aw(e,a);return}if(n.subcommand==="call"){Vw(n.trust,s),await Hw(e,{fn:n.fn,positional:n.callArgs,argsJson:n.argsJson,hasArgsFlag:n.hasArgsFlag},n.mode,a,n.batch);return}if(o&&o.bulb.server&&(Xi(o.bulb)||n.server)){Vw(n.trust,s),await Jw(e,n.watch,n.mode,a,n.batch);return}await Bw(e,n,s,a)}fR().catch(n=>{console.error("Error:",n.message),process.exit(1)});
|