typebulb 0.51.2 → 0.51.3
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/index.js +83 -66
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __cr } from 'module'; const require = __cr(import.meta.url);
|
|
3
|
-
var Yw=Object.create;var Ea=Object.defineProperty;var Vw=Object.getOwnPropertyDescriptor;var zw=Object.getOwnPropertyNames;var Gw=Object.getPrototypeOf,Xw=Object.prototype.hasOwnProperty;var Rs=(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),Aa=(n,e)=>{for(var t in e)Ea(n,t,{get:e[t],enumerable:!0})},Qw=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of zw(e))!Xw.call(n,s)&&s!==t&&Ea(n,s,{get:()=>e[s],enumerable:!(r=Vw(e,s))||r.enumerable});return n};var Zw=(n,e,t)=>(t=n!=null?Yw(Gw(n)):{},Qw(e||!n||!n.__esModule?Ea(t,"default",{value:n,enumerable:!0}):t,n));import*as
|
|
3
|
+
var Yw=Object.create;var Ea=Object.defineProperty;var Vw=Object.getOwnPropertyDescriptor;var zw=Object.getOwnPropertyNames;var Gw=Object.getPrototypeOf,Xw=Object.prototype.hasOwnProperty;var Rs=(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),Aa=(n,e)=>{for(var t in e)Ea(n,t,{get:e[t],enumerable:!0})},Qw=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of zw(e))!Xw.call(n,s)&&s!==t&&Ea(n,s,{get:()=>e[s],enumerable:!(r=Vw(e,s))||r.enumerable});return n};var Zw=(n,e,t)=>(t=n!=null?Yw(Gw(n)):{},Qw(e||!n||!n.__esModule?Ea(t,"default",{value:n,enumerable:!0}):t,n));import*as Ud from"fs/promises";import{existsSync as pn,readFileSync as ev}from"fs";import*as re from"path";import{pathToFileURL as tv}from"url";import{resolve as Oa}from"resolve.exports";import{init as Jd,parse as Kd}from"es-module-lexer";function Hd(n,e){let t=re.join(n,"package.json");try{return JSON.parse(ev(t,"utf8"))}catch{throw new Error(`--replace package '${e}' has no readable package.json at ${t}`)}}function Wd(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 Yd(n){let{name:e,dir:t}=n;if(!pn(t))throw new Error(`--replace path for '${e}' does not exist: ${t}`);let r=Hd(t,e),s=nv(r,e),i=re.resolve(t,s);if(!pn(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=rv(r,t);return await sv(e,i,o),{name:e,dir:t,entryAbs:i,serveDir:o,entryUrl:a,typesAbs:l}}function nv(n,e){if(n.exports!==void 0){let r;try{r=Oa(n,".",{browser:!0,conditions:Ta})}catch(i){throw new Error(`--replace package '${e}' "exports" does not resolve a browser entry (conditions: ${Ta.join(", ")}): ${i instanceof Error?i.message:i}`)}let s=Pa(r);if(!s)throw new Error(`--replace package '${e}' "exports" did not resolve "." to a single file (conditions: ${Ta.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 rv(n,e){if(n.exports!==void 0)try{let r=Oa(n,".",{conditions:["types"]}),s=Pa(r);if(s){let i=re.resolve(e,s);if(pn(i))return i}}catch{}let t=n.types??n.typings;if(t){let r=re.resolve(e,t);if(pn(r))return r}}function Pa(n){if(typeof n=="string")return n;if(Array.isArray(n))return n.find(e=>typeof e=="string")}async function sv(n,e,t){await Jd;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 Ud.readFile(o,"utf8")}catch{continue}let l,c;try{[l,,,c]=Kd(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=iv(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 iv(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)&&pn(o))return o}function ov(n,e,t){let r=Hd(n,e),s;if(r.exports!==void 0)try{s=Pa(Oa(r,t,{conditions:qd}))}catch(o){throw new Error(`--replace package '${e}' "exports" does not resolve a node entry for '${t}' (conditions: ${qd.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(!pn(i))throw new Error(`--replace package '${e}' built file not found: ${i} \u2014 did you build it (e.g. \`pnpm run build\`)?`);return tv(i).href}async function Vd(n,e){await Jd;let t;try{[t]=Kd(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=ov(e.dir,e.name,a);r+=n.slice(s,i.s)+l,s=i.e}return r+n.slice(s)}var Ta,qd,_s=v(()=>{"use strict";Ta=["browser","import","default"],qd=["node","import","default"]});function zd(n){return _e.find(e=>le[e].path===n)}function Xd(n){return!!n?.startsWith("typebulb")}var le,_e,Gd,Ns=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"}},_e=["code","css","html","data","infer","insight","config","notes"];Gd="typebulb/v1"});function Ca(n){return/[:\n"']/.test(n)||n.startsWith(" ")||n.endsWith(" ")?`"${n.replace(/"/g,'\\"')}"`:n}function Ra(n){return n.startsWith('"')&&n.endsWith('"')?n.slice(1,-1).replace(/\\"/g,'"'):n.startsWith("'")&&n.endsWith("'")?n.slice(1,-1):n}var Is=v(()=>{});function ue(n){try{let e=n.split(`
|
|
4
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=uv(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(Qd);if(d){let u=d[1].trim();for(t++;t<e.length&&e[t]?.trim()==="";)t++;let f=e[t]?.match($s);if(!f){a.push(`**${u}** has no code fence \u2014 block skipped`);continue}let p=f[1];t++;let m=t+1,h=[],b=_a(p);for(;t<e.length&&!e[t]?.match(b);)h.push(e[t]),t++;let A=t<e.length;t++,a.push(...lv(u,h,A)),i.set(u,h.join(`
|
|
5
5
|
`)),o.set(u,m),l=t}else t++}return{frontmatter:s,files:i,warnings:a,bodyEndLine:l,starts:o}}catch{return null}}function lv(n,e,t){let r=[];for(let s=0;s<e.length;s++){let i=e[s]?.trim().match(Qd);i&&av.has(i[1].trim())&&cv(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 cv(n,e){let t=e+1;for(;t<n.length&&n[t]?.trim()==="";)t++;return!!n[t]?.match($s)}function uv(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=Ra(i);break}}return!Xd(e.format)||!e.name?null:e}function Zd(n){return ue(n)?.warnings??[]}function ef(n){let e=Object.fromEntries(_e.map(t=>[t,n.files.get(le[t].path)||""]));return{name:n.frontmatter.name,...e}}var Qd,$s,av,_a,Na=v(()=>{Ns();Is();Qd=/^\*\*(.+)\*\*$/,$s=/^(`{3,})(\w*)\s*$/,av=new Set(_e.map(n=>le[n].path)),_a=n=>new RegExp(`^${n}\\s*$`)});function tf(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 nf(n,e){let{path:t}=le[n],r=t.split(".").pop(),s=tf(e);return`**${t}**
|
|
6
6
|
|
|
@@ -18,17 +18,17 @@ ${nf(e,t)}
|
|
|
18
18
|
`).replace(/\s*$/,"")+`
|
|
19
19
|
`}var af=v(()=>{Ns();Na();Is()});function ir(n){if(!n.trim())return{};try{return JSON.parse(n)}catch{return{}}}function cf(n){switch(lf(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 uf(n){let e=lf(n);return e!==void 0&&fv.has(e)?e:void 0}function hv(n){return n.replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/\*([^*]+)\*/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/^#{1,6}\s+/gm,"")}function Ia(n){let e=ir(n??"").description?.trim();if(!e)return pv;let t=hv(e);return(t.length>200?t.slice(0,197)+"...":t).replace(/\n/g," ")}var dv,Ls,lf,fv,pv,df=v(()=>{dv="https://assets.typebulb.com",Ls=(n,e)=>`${dv}/u/${encodeURIComponent(n)}/${encodeURIComponent(e)}/`,lf=n=>/\.[^./\\]+$/.exec(n)?.[0]?.toLowerCase();fv=new Set([".html",".htm",".xhtml",".js",".mjs",".cjs",".ts",".tsx",".css"]);pv="A Typebulb bulb."});var ff=v(()=>{});function $a(n,e,t){let s=new RegExp(e).exec(n.slice(t));return s?t+s.index:-1}var pf=v(()=>{});function or(n,e,t){let s=new RegExp(e).exec(n.slice(t));return s?t+s.index+s[0].length-1:-1}var hf=v(()=>{});function Ms(n,e){let t=new RegExp(e,"g"),r=n.match(t);return r?r.length:0}var mf=v(()=>{});function ar(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=$a(n,`<${e}[
|
|
20
20
|
>/]`,i);if(r&&console.log("[xml-utils] start:",o),o===-1)return;let a=n.slice(o+e.length),l=or(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=or(a,"[ /]"+e+">",p))!==-1;){let b=a.substring(p,l+1);if(m+=Ms(b,"<"+e+`[
|
|
21
|
-
>]`),h+=Ms(b,"</"+e+">"),h>=m)break;p=l}}else l=or(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 La=v(()=>{pf();hf();mf()});var Ma=v(()=>{La()});var Ba=v(()=>{Ma()});var gf=v(()=>{Ba()});var yf=v(()=>{});var bf=v(()=>{ff();La();Ma();gf();Ba();yf()});var
|
|
22
|
-
`)}};cr.defaultYaml={explicit:!1,version:"1.2"};cr.defaultTags={"!!":"tag:yaml.org,2002:"};Pf.Directives=cr});var
|
|
21
|
+
>]`),h+=Ms(b,"</"+e+">"),h>=m)break;p=l}}else l=or(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 La=v(()=>{pf();hf();mf()});var Ma=v(()=>{La()});var Ba=v(()=>{Ma()});var gf=v(()=>{Ba()});var yf=v(()=>{});var bf=v(()=>{ff();La();Ma();gf();Ba();yf()});var q=O(ce=>{"use strict";var Da=Symbol.for("yaml.alias"),wf=Symbol.for("yaml.document"),Bs=Symbol.for("yaml.map"),vf=Symbol.for("yaml.pair"),ja=Symbol.for("yaml.scalar"),Ds=Symbol.for("yaml.seq"),Xe=Symbol.for("yaml.node.type"),yv=n=>!!n&&typeof n=="object"&&n[Xe]===Da,bv=n=>!!n&&typeof n=="object"&&n[Xe]===wf,wv=n=>!!n&&typeof n=="object"&&n[Xe]===Bs,vv=n=>!!n&&typeof n=="object"&&n[Xe]===vf,Sf=n=>!!n&&typeof n=="object"&&n[Xe]===ja,Sv=n=>!!n&&typeof n=="object"&&n[Xe]===Ds;function kf(n){if(n&&typeof n=="object")switch(n[Xe]){case Bs:case Ds:return!0}return!1}function kv(n){if(n&&typeof n=="object")switch(n[Xe]){case Da:case Bs:case ja:case Ds:return!0}return!1}var xv=n=>(Sf(n)||kf(n))&&!!n.anchor;ce.ALIAS=Da;ce.DOC=wf;ce.MAP=Bs;ce.NODE_TYPE=Xe;ce.PAIR=vf;ce.SCALAR=ja;ce.SEQ=Ds;ce.hasAnchor=xv;ce.isAlias=yv;ce.isCollection=kf;ce.isDocument=bv;ce.isMap=wv;ce.isNode=kv;ce.isPair=vv;ce.isScalar=Sf;ce.isSeq=Sv});var lr=O(Fa=>{"use strict";var se=q(),me=Symbol("break visit"),xf=Symbol("skip children"),Ke=Symbol("remove node");function js(n,e){let t=Ef(e);se.isDocument(n)?hn(null,n.contents,t,Object.freeze([n]))===Ke&&(n.contents=null):hn(null,n,t,Object.freeze([]))}js.BREAK=me;js.SKIP=xf;js.REMOVE=Ke;function hn(n,e,t,r){let s=Af(n,e,t,r);if(se.isNode(s)||se.isPair(s))return Tf(n,r,s),hn(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=hn(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=hn("key",e.key,t,r);if(i===me)return me;i===Ke&&(e.key=null);let o=hn("value",e.value,t,r);if(o===me)return me;o===Ke&&(e.value=null)}}return s}async function Fs(n,e){let t=Ef(e);se.isDocument(n)?await mn(null,n.contents,t,Object.freeze([n]))===Ke&&(n.contents=null):await mn(null,n,t,Object.freeze([]))}Fs.BREAK=me;Fs.SKIP=xf;Fs.REMOVE=Ke;async function mn(n,e,t,r){let s=await Af(n,e,t,r);if(se.isNode(s)||se.isPair(s))return Tf(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=await 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=await mn("key",e.key,t,r);if(i===me)return me;i===Ke&&(e.key=null);let o=await mn("value",e.value,t,r);if(o===me)return me;o===Ke&&(e.value=null)}}return s}function Ef(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 Af(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 Tf(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`)}}Fa.visit=js;Fa.visitAsync=Fs});var qa=O(Pf=>{"use strict";var Of=q(),Ev=lr(),Av={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},Tv=n=>n.replace(/[!,[\]{}]/g,e=>Av[e]),cr=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+Tv(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&&Of.isNode(e.contents)){let i={};Ev.visit(e.contents,(o,a)=>{Of.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
|
+
`)}};cr.defaultYaml={explicit:!1,version:"1.2"};cr.defaultTags={"!!":"tag:yaml.org,2002:"};Pf.Directives=cr});var qs=O(ur=>{"use strict";var Cf=q(),Ov=lr();function Pv(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 Rf(n){let e=new Set;return Ov.visit(n,{Value(t,r){r.anchor&&e.add(r.anchor)}}),e}function _f(n,e){for(let t=1;;++t){let r=`${n}${t}`;if(!e.has(r))return r}}function Cv(n,e){let t=[],r=new Map,s=null;return{onAnchor:i=>{t.push(i),s??(s=Rf(n));let o=_f(e,s);return s.add(o),o},setAnchors:()=>{for(let i of t){let o=r.get(i);if(typeof o=="object"&&o.anchor&&(Cf.isScalar(o.node)||Cf.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}}ur.anchorIsValid=Pv;ur.anchorNames=Rf;ur.createNodeAnchors=Cv;ur.findNewAnchor=_f});var Ua=O(Nf=>{"use strict";function dr(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=dr(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=dr(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=dr(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=dr(n,r,s,i);o===void 0?delete r[s]:o!==i&&(r[s]=o)}return n.call(e,t,r)}Nf.applyReviver=dr});var dt=O($f=>{"use strict";var Rv=q();function If(n,e,t){if(Array.isArray(n))return n.map((r,s)=>If(r,String(s),t));if(n&&typeof n.toJSON=="function"){if(!t||!Rv.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}$f.toJS=If});var Us=O(Mf=>{"use strict";var _v=Ua(),Lf=q(),Nv=dt(),Ja=class{constructor(e){Object.defineProperty(this,Lf.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(!Lf.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=Nv.toJS(this,"",o);if(typeof s=="function")for(let{count:l,res:c}of o.anchors.values())s(c,l);return typeof i=="function"?_v.applyReviver(i,{"":a},"",a):a}};Mf.NodeBase=Ja});var fr=O(Bf=>{"use strict";var Iv=qs(),$v=lr(),gn=q(),Lv=Us(),Mv=dt(),Ka=class extends Lv.NodeBase{constructor(e){super(gn.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=[],$v.visit(e,{Node:(i,o)=>{(gn.isAlias(o)||gn.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||(Mv.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=Js(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(Iv.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 Js(n,e,t){if(gn.isAlias(e)){let r=e.resolve(n),s=t&&r&&t.get(r);return s?s.count*s.aliasCount:0}else if(gn.isCollection(e)){let r=0;for(let s of e.items){let i=Js(n,s,t);i>r&&(r=i)}return r}else if(gn.isPair(e)){let r=Js(n,e.key,t),s=Js(n,e.value,t);return Math.max(r,s)}return 1}Bf.Alias=Ka});var te=O(Ha=>{"use strict";var Bv=q(),Dv=Us(),jv=dt(),Fv=n=>!n||typeof n!="function"&&typeof n!="object",ft=class extends Dv.NodeBase{constructor(e){super(Bv.SCALAR),this.value=e}toJSON(e,t){return t?.keep?this.value:jv.toJS(this.value,e,t)}toString(){return String(this.value)}};ft.BLOCK_FOLDED="BLOCK_FOLDED";ft.BLOCK_LITERAL="BLOCK_LITERAL";ft.PLAIN="PLAIN";ft.QUOTE_DOUBLE="QUOTE_DOUBLE";ft.QUOTE_SINGLE="QUOTE_SINGLE";Ha.Scalar=ft;Ha.isScalarValue=Fv});var pr=O(jf=>{"use strict";var qv=fr(),Ft=q(),Df=te(),Uv="tag:yaml.org,2002:";function Jv(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 Kv(n,e,t){if(Ft.isDocument(n)&&(n=n.contents),Ft.isNode(n))return n;if(Ft.isPair(n)){let u=t.schema[Ft.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 qv.Alias(l.anchor);l={anchor:null,node:null},a.set(n,l)}e?.startsWith("!!")&&(e=Uv+e.slice(2));let c=Jv(n,e,o.tags);if(!c){if(n&&typeof n.toJSON=="function"&&(n=n.toJSON()),!n||typeof n!="object"){let u=new Df.Scalar(n);return l&&(l.node=u),u}c=n instanceof Map?o[Ft.MAP]:Symbol.iterator in Object(n)?o[Ft.SEQ]:o[Ft.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 Df.Scalar(n);return e?d.tag=e:c.default||(d.tag=c.tag),l&&(l.node=d),d}jf.createNode=Kv});var Hs=O(Ks=>{"use strict";var Hv=pr(),He=q(),Wv=Us();function Wa(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 Hv.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 Ff=n=>n==null||typeof n=="object"&&!!n[Symbol.iterator]().next().done,Ya=class extends Wv.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=>He.isNode(r)||He.isPair(r)?r.clone(e):r),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Ff(e))this.add(t);else{let[r,...s]=e,i=this.get(r,!0);if(He.isCollection(i))i.addIn(s,t);else if(i===void 0&&this.schema)this.set(r,Wa(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(He.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&&He.isScalar(i)?i.value:i:He.isCollection(i)?i.getIn(s,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!He.isPair(t))return!1;let r=t.value;return r==null||e&&He.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 He.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(He.isCollection(i))i.setIn(s,t);else if(i===void 0&&this.schema)this.set(r,Wa(this.schema,s,t));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${s}`)}}};Ks.Collection=Ya;Ks.collectionFromPath=Wa;Ks.isEmptyPath=Ff});var hr=O(Ws=>{"use strict";var Yv=n=>n.replace(/^(?!$)(?: $)?/gm,"#");function Va(n,e){return/^\n+$/.test(n)?n.substring(1):e?n.replace(/^(?! *$)/gm,e):n}var Vv=(n,e,t)=>n.endsWith(`
|
|
23
23
|
`)?Va(t,e):t.includes(`
|
|
24
24
|
`)?`
|
|
25
|
-
`+Va(t,e):(n.endsWith(" ")?"":" ")+t;Ws.indentComment=Va;Ws.lineComment=Vv;Ws.stringifyComment=Yv});var
|
|
26
|
-
`)t===za&&(h=
|
|
25
|
+
`+Va(t,e):(n.endsWith(" ")?"":" ")+t;Ws.indentComment=Va;Ws.lineComment=Vv;Ws.stringifyComment=Yv});var Uf=O(mr=>{"use strict";var zv="flow",za="block",Ys="quoted";function Gv(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,b=-1,A=-1;t===za&&(h=qf(n,h,e.length),h!==-1&&(u=h+l));for(let P;P=n[h+=1];){if(t===Ys&&P==="\\"){switch(b=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===za&&(h=qf(n,h,e.length)),u=h+e.length+l,f=void 0;else{if(P===" "&&p&&p!==" "&&p!==`
|
|
27
27
|
`&&p!==" "){let _=n[h+1];_&&_!==" "&&_!==`
|
|
28
28
|
`&&_!==" "&&(f=h)}if(h>=u)if(f)c.push(f),u=f+l,f=void 0;else if(t===Ys){for(;p===" "||p===" ";)p=P,P=n[h+=1],m=!0;let _=h>A+1?h-2:b-1;if(d[_])return n;c.push(_),d[_]=!0,u=_+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[P],C=c[P+1]||n.length;_===0?S=`
|
|
29
29
|
${e}${n.slice(0,C)}`:(t===Ys&&d[_]&&(S+=`${n[_]}\\`),S+=`
|
|
30
|
-
${e}${n.slice(_+1,C)}`)}return S}function
|
|
31
|
-
`);r=e,s=e+1,i=n[s]}return r}mr.FOLD_BLOCK=za;mr.FOLD_FLOW=zv;mr.FOLD_QUOTED=Ys;mr.foldFlowLines=Gv});var yr=O(Jf=>{"use strict";var Ne=te(),pt=
|
|
30
|
+
${e}${n.slice(_+1,C)}`)}return S}function qf(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}mr.FOLD_BLOCK=za;mr.FOLD_FLOW=zv;mr.FOLD_QUOTED=Ys;mr.foldFlowLines=Gv});var yr=O(Jf=>{"use strict";var Ne=te(),pt=Uf(),zs=(n,e)=>({indentAtStart:e?n.indent.length:n.indentAtStart,lineWidth:n.options.lineWidth,minContentWidth:n.options.minContentWidth}),Gs=n=>/^(%|---|\.\.\.)/m.test(n);function Xv(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
32
|
`){if(i-o>r)return!0;if(o=i+1,s-o<=r)return!1}return!0}function gr(n,e){let t=JSON.stringify(n);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:r}=e,s=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(Gs(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+=`
|
|
@@ -50,8 +50,8 @@ ${c}${S}${t}${p}`}function Qv(n,e,t,r){let{type:s,value:i}=n,{actualString:o,imp
|
|
|
50
50
|
`)||d&&/[[\]{},]/.test(i))return yn(i,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(i))return a||d||!i.includes(`
|
|
51
51
|
`)?yn(i,e):Vs(n,e,t,r);if(!a&&!d&&s!==Ne.Scalar.PLAIN&&i.includes(`
|
|
52
52
|
`))return Vs(n,e,t,r);if(Gs(i)){if(l==="")return e.forceBlockIndent=!0,Vs(n,e,t,r);if(a&&l===c)return yn(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 yn(i,e)}return a?u:pt.foldFlowLines(u,l,pt.FOLD_FLOW,zs(e,!1))}function Zv(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?yn(o.value,e):Vs(o,e,t,r);case Ne.Scalar.QUOTE_DOUBLE:return gr(o.value,e);case Ne.Scalar.QUOTE_SINGLE:return Ga(o.value,e);case Ne.Scalar.PLAIN:return Qv(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}Jf.stringifyString=Zv});var br=O(Qa=>{"use strict";var eS=
|
|
54
|
-
${e.indent}${a}`:a}Qa.createStringifyContext=rS;Qa.stringify=oS});var Yf=O(Wf=>{"use strict";var Qe=
|
|
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 yn(i,e)}return a?u:pt.foldFlowLines(u,l,pt.FOLD_FLOW,zs(e,!1))}function Zv(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?yn(o.value,e):Vs(o,e,t,r);case Ne.Scalar.QUOTE_DOUBLE:return gr(o.value,e);case Ne.Scalar.QUOTE_SINGLE:return Ga(o.value,e);case Ne.Scalar.PLAIN:return Qv(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}Jf.stringifyString=Zv});var br=O(Qa=>{"use strict";var eS=qs(),ht=q(),tS=hr(),nS=yr();function rS(n,e){let t=Object.assign({blockQuote:!0,commentString:tS.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 sS(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(ht.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 iS(n,e,{anchors:t,doc:r}){if(!r.directives)return"";let s=[],i=(ht.isScalar(n)||ht.isCollection(n))&&n.anchor;i&&eS.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 oS(n,e,t,r){if(ht.isPair(n))return n.toString(e,t,r);if(ht.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=ht.isNode(n)?n:e.doc.createNode(n,{onTagObj:l=>s=l});s??(s=sS(e.doc.schema.tags,i));let o=iS(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):ht.isScalar(i)?nS.stringifyString(i,e,t,r):i.toString(e,t,r);return o?ht.isScalar(i)||a[0]==="{"||a[0]==="["?`${o} ${a}`:`${o}
|
|
54
|
+
${e.indent}${a}`:a}Qa.createStringifyContext=rS;Qa.stringify=oS});var Yf=O(Wf=>{"use strict";var Qe=q(),Kf=te(),Hf=br(),wr=hr();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=Qe.isNode(n)&&n.comment||null;if(u){if(f)throw new Error("With simple keys, key nodes cannot have comments");if(Qe.isCollection(n)||!Qe.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||Qe.isCollection(n)||(Qe.isScalar(n)?n.type===Kf.Scalar.BLOCK_FOLDED||n.type===Kf.Scalar.BLOCK_LITERAL:typeof n=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!p&&(u||!i),indent:a+l});let m=!1,h=!1,b=Hf.stringify(n,t,()=>m=!0,()=>h=!0);if(!p&&!t.inFlow&&b.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(),b===""?"?":p?`? ${b}`:b}else if(i&&!u||e==null&&p)return b=`? ${b}`,f&&!m?b+=wr.lineComment(b,t.indent,c(f)):h&&s&&s(),b;m&&(f=null),p?(f&&(b+=wr.lineComment(b,t.indent,c(f))),b=`? ${b}
|
|
55
55
|
${a}:`):(b=`${b}:`,f&&(b+=wr.lineComment(b,t.indent,c(f))));let A,S,P;Qe.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&&Qe.isScalar(e)&&(t.indentAtStart=b.length+1),h=!1,!d&&l.length>=2&&!t.inFlow&&!p&&Qe.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let _=!1,C=Hf.stringify(e,t,()=>_=!0,()=>h=!0),R=" ";if(f||A||S){if(R=A?`
|
|
56
56
|
`:"",S){let $=c(S);R+=`
|
|
57
57
|
${wr.indentComment($,t.indent)}`}C===""&&!t.inFlow?R===`
|
|
@@ -59,34 +59,34 @@ ${wr.indentComment($,t.indent)}`}C===""&&!t.inFlow?R===`
|
|
|
59
59
|
|
|
60
60
|
`):R+=`
|
|
61
61
|
${t.indent}`}else if(!p&&Qe.isCollection(e)){let $=C[0],x=C.indexOf(`
|
|
62
|
-
`),D=x!==-1,K=t.inFlow??e.flow??e.items.length===0;if(D||!K){let
|
|
62
|
+
`),D=x!==-1,K=t.inFlow??e.flow??e.items.length===0;if(D||!K){let U=!1;if(D&&($==="&"||$==="!")){let y=C.indexOf(" ");$==="&"&&y!==-1&&y<x&&C[y+1]==="!"&&(y=C.indexOf(" ",y+1)),(y===-1||x<y)&&(U=!0)}U||(R=`
|
|
63
63
|
${t.indent}`)}}else(C===""||C[0]===`
|
|
64
|
-
`)&&(R="");return b+=R+C,t.inFlow?_&&r&&r():P&&!_?b+=wr.lineComment(b,t.indent,c(P)):h&&s&&s(),b}Wf.stringifyPair=aS});var el=O(Za=>{"use strict";var Vf=Rs("process");function lS(n,...e){n==="debug"&&console.log(...e)}function cS(n,e){(n==="debug"||n==="warn")&&(typeof Vf.emitWarning=="function"?Vf.emitWarning(e):console.warn(e))}Za.debug=lS;Za.warn=cS});var ei=O(Zs=>{"use strict";var vr=
|
|
64
|
+
`)&&(R="");return b+=R+C,t.inFlow?_&&r&&r():P&&!_?b+=wr.lineComment(b,t.indent,c(P)):h&&s&&s(),b}Wf.stringifyPair=aS});var el=O(Za=>{"use strict";var Vf=Rs("process");function lS(n,...e){n==="debug"&&console.log(...e)}function cS(n,e){(n==="debug"||n==="warn")&&(typeof Vf.emitWarning=="function"?Vf.emitWarning(e):console.warn(e))}Za.debug=lS;Za.warn=cS});var ei=O(Zs=>{"use strict";var vr=q(),zf=te(),Xs="<<",Qs={identify:n=>n===Xs||typeof n=="symbol"&&n.description===Xs,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new zf.Scalar(Symbol(Xs)),{addToJSMap:Gf}),stringify:()=>Xs},uS=(n,e)=>(Qs.identify(e)||vr.isScalar(e)&&(!e.type||e.type===zf.Scalar.PLAIN)&&Qs.identify(e.value))&&n?.doc.schema.tags.some(t=>t.tag===Qs.tag&&t.default);function Gf(n,e,t){if(t=n&&vr.isAlias(t)?t.resolve(n.doc):t,vr.isSeq(t))for(let r of t.items)tl(n,e,r);else if(Array.isArray(t))for(let r of t)tl(n,e,r);else tl(n,e,t)}function tl(n,e,t){let r=n&&vr.isAlias(t)?t.resolve(n.doc):t;if(!vr.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}Zs.addMergeToJSMap=Gf;Zs.isMergeKey=uS;Zs.merge=Qs});var rl=O(Zf=>{"use strict";var dS=el(),Xf=ei(),fS=br(),Qf=q(),nl=dt();function pS(n,e,{key:t,value:r}){if(Qf.isNode(t)&&t.addToJSMap)t.addToJSMap(n,e,r);else if(Xf.isMergeKey(n,t))Xf.addMergeToJSMap(n,e,r);else{let s=nl.toJS(t,"",n);if(e instanceof Map)e.set(s,nl.toJS(r,s,n));else if(e instanceof Set)e.add(s);else{let i=hS(t,s,n),o=nl.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 hS(n,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(Qf.isNode(n)&&t?.doc){let r=fS.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)+'..."'),dS.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)}Zf.addPairToJSMap=pS});var mt=O(sl=>{"use strict";var ep=pr(),mS=Yf(),gS=rl(),ti=q();function yS(n,e,t){let r=ep.createNode(n,void 0,t),s=ep.createNode(e,void 0,t);return new ni(r,s)}var ni=class n{constructor(e,t=null){Object.defineProperty(this,ti.NODE_TYPE,{value:ti.PAIR}),this.key=e,this.value=t}clone(e){let{key:t,value:r}=this;return ti.isNode(t)&&(t=t.clone(e)),ti.isNode(r)&&(r=r.clone(e)),new n(t,r)}toJSON(e,t){let r=t?.mapAsMap?new Map:{};return gS.addPairToJSMap(t,r,this)}toString(e,t,r){return e?.doc?mS.stringifyPair(this,e,t,r):JSON.stringify(this)}};sl.Pair=ni;sl.createPair=yS});var il=O(np=>{"use strict";var qt=q(),tp=br(),ri=hr();function bS(n,e,t){return(e.inFlow??n.flow?vS:wS)(n,e,t)}function wS({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],b=null;if(qt.isNode(h))!u&&h.spaceBefore&&f.push(""),si(t,f,h.commentBefore,u),h.comment&&(b=h.comment);else if(qt.isPair(h)){let S=qt.isNode(h.key)?h.key:null;S&&(!u&&S.spaceBefore&&f.push(""),si(t,f,S.commentBefore,u))}u=!1;let A=tp.stringify(h,d,()=>b=null,()=>u=!0);b&&(A+=ri.lineComment(A,i,c(b))),u&&b&&(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
|
-
`+ri.indentComment(c(n),l),a&&a()):u&&o&&o(),p}function vS({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],b=null;if(
|
|
67
|
+
`+ri.indentComment(c(n),l),a&&a()):u&&o&&o(),p}function vS({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],b=null;if(qt.isNode(h))h.spaceBefore&&u.push(""),si(e,u,h.commentBefore,!1),h.comment&&(b=h.comment);else if(qt.isPair(h)){let S=qt.isNode(h.key)?h.key:null;S&&(S.spaceBefore&&u.push(""),si(e,u,S.commentBefore,!1),S.comment&&(c=!0));let P=qt.isNode(h.value)?h.value:null;P?(P.comment&&(b=P.comment),P.commentBefore&&(c=!0)):h.value==null&&S?.comment&&(b=S.comment)}b&&(c=!0);let A=tp.stringify(h,l,()=>b=null);m<n.length-1&&(A+=","),b&&(A+=ri.lineComment(A,r,a(b))),!c&&(u.length>d||A.includes(`
|
|
68
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,b)=>h+b.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 si({indent:n,options:{commentString:e}},t,r,s){if(r&&s&&(r=r.replace(/^\n+/,"")),r){let i=ri.indentComment(e(r),n);t.push(i.trimStart())}}np.stringifyCollection=bS});var yt=O(al=>{"use strict";var SS=il(),kS=rl(),xS=Hs(),gt=
|
|
72
|
-
`:" ")}return rk.stringifyString({comment:n,type:e,value:a},r,s,i)}};kp.binary=sk});var mi=O(hi=>{"use strict";var pi=
|
|
71
|
+
${s}${p}`}else return`${f}${o}${u.join(" ")}${o}${p}`}function si({indent:n,options:{commentString:e}},t,r,s){if(r&&s&&(r=r.replace(/^\n+/,"")),r){let i=ri.indentComment(e(r),n);t.push(i.trimStart())}}np.stringifyCollection=bS});var yt=O(al=>{"use strict";var SS=il(),kS=rl(),xS=Hs(),gt=q(),ii=mt(),ES=te();function Sr(n,e){let t=gt.isScalar(e)?e.value:e;for(let r of n)if(gt.isPair(r)&&(r.key===e||r.key===t||gt.isScalar(r.key)&&r.key.value===t))return r}var ol=class extends xS.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(gt.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(ii.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;gt.isPair(e)?r=e:!e||typeof e!="object"||!("key"in e)?r=new ii.Pair(e,e?.value):r=new ii.Pair(e.key,e.value);let s=Sr(this.items,r.key),i=this.schema?.sortMapEntries;if(s){if(!t)throw new Error(`Key ${r.key} already set`);gt.isScalar(s.value)&&ES.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=Sr(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let s=Sr(this.items,e)?.value;return(!t&>.isScalar(s)?s.value:s)??void 0}has(e){return!!Sr(this.items,e)}set(e,t){this.add(new ii.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)kS.addPairToJSMap(t,s,i);return s}toString(e,t,r){if(!e)return JSON.stringify(this);for(let s of this.items)if(!gt.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})),SS.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:r,onComment:t})}};al.YAMLMap=ol;al.findPair=Sr});var bn=O(sp=>{"use strict";var AS=q(),rp=yt(),TS={collection:"map",default:!0,nodeClass:rp.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(n,e){return AS.isMap(n)||e("Expected a mapping for this tag"),n},createNode:(n,e,t)=>rp.YAMLMap.from(n,e,t)};sp.map=TS});var bt=O(ip=>{"use strict";var OS=pr(),PS=il(),CS=Hs(),ai=q(),RS=te(),_S=dt(),ll=class extends CS.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(ai.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=oi(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let r=oi(e);if(typeof r!="number")return;let s=this.items[r];return!t&&ai.isScalar(s)?s.value:s}has(e){let t=oi(e);return typeof t=="number"&&t<this.items.length}set(e,t){let r=oi(e);if(typeof r!="number")throw new Error(`Expected a valid index, not ${e}.`);let s=this.items[r];ai.isScalar(s)&&RS.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(_S.toJS(i,String(s++),t));return r}toString(e,t,r){return e?PS.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(OS.createNode(a,void 0,r))}}return i}};function oi(n){let e=ai.isScalar(n)?n.value:n;return e&&typeof e=="string"&&(e=Number(e)),typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}ip.YAMLSeq=ll});var wn=O(ap=>{"use strict";var NS=q(),op=bt(),IS={collection:"seq",default:!0,nodeClass:op.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(n,e){return NS.isSeq(n)||e("Expected a sequence for this tag"),n},createNode:(n,e,t)=>op.YAMLSeq.from(n,e,t)};ap.seq=IS});var kr=O(lp=>{"use strict";var $S=yr(),LS={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),$S.stringifyString(n,e,t,r)}};lp.string=LS});var li=O(dp=>{"use strict";var cp=te(),up={identify:n=>n==null,createNode:()=>new cp.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new cp.Scalar(null),stringify:({source:n},e)=>typeof n=="string"&&up.test.test(n)?n:e.options.nullStr};dp.nullTag=up});var cl=O(pp=>{"use strict";var MS=te(),fp={identify:n=>typeof n=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:n=>new MS.Scalar(n[0]==="t"||n[0]==="T"),stringify({source:n,value:e},t){if(n&&fp.test.test(n)){let r=n[0]==="t"||n[0]==="T";if(e===r)return n}return e?t.options.trueStr:t.options.falseStr}};pp.boolTag=fp});var vn=O(hp=>{"use strict";function BS({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}hp.stringifyNumber=BS});var dl=O(ci=>{"use strict";var DS=te(),ul=vn(),jS={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:ul.stringifyNumber},FS={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():ul.stringifyNumber(n)}},qS={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 DS.Scalar(parseFloat(n)),t=n.indexOf(".");return t!==-1&&n[n.length-1]==="0"&&(e.minFractionDigits=n.length-t-1),e},stringify:ul.stringifyNumber};ci.float=qS;ci.floatExp=FS;ci.floatNaN=jS});var pl=O(di=>{"use strict";var mp=vn(),ui=n=>typeof n=="bigint"||Number.isInteger(n),fl=(n,e,t,{intAsBigInt:r})=>r?BigInt(n):parseInt(n.substring(e),t);function gp(n,e,t){let{value:r}=n;return ui(r)&&r>=0?t+r.toString(e):mp.stringifyNumber(n)}var US={identify:n=>ui(n)&&n>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(n,e,t)=>fl(n,2,8,t),stringify:n=>gp(n,8,"0o")},JS={identify:ui,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(n,e,t)=>fl(n,0,10,t),stringify:mp.stringifyNumber},KS={identify:n=>ui(n)&&n>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(n,e,t)=>fl(n,2,16,t),stringify:n=>gp(n,16,"0x")};di.int=JS;di.intHex=KS;di.intOct=US});var bp=O(yp=>{"use strict";var HS=bn(),WS=li(),YS=wn(),VS=kr(),zS=cl(),hl=dl(),ml=pl(),GS=[HS.map,YS.seq,VS.string,WS.nullTag,zS.boolTag,ml.intOct,ml.int,ml.intHex,hl.floatNaN,hl.floatExp,hl.float];yp.schema=GS});var Sp=O(vp=>{"use strict";var XS=te(),QS=bn(),ZS=wn();function wp(n){return typeof n=="bigint"||Number.isInteger(n)}var fi=({value:n})=>JSON.stringify(n),ek=[{identify:n=>typeof n=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:n=>n,stringify:fi},{identify:n=>n==null,createNode:()=>new XS.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:fi},{identify:n=>typeof n=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:n=>n==="true",stringify:fi},{identify:wp,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})=>wp(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:fi}],tk={default:!0,tag:"",test:/^/,resolve(n,e){return e(`Unresolved plain scalar ${JSON.stringify(n)}`),n}},nk=[QS.map,ZS.seq].concat(ek,tk);vp.schema=nk});var yl=O(kp=>{"use strict";var xr=Rs("buffer"),gl=te(),rk=yr(),sk={identify:n=>n instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(n,e){if(typeof xr.Buffer=="function")return xr.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 xr.Buffer=="function")a=o instanceof xr.Buffer?o.toString("base64"):xr.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=gl.Scalar.BLOCK_LITERAL),e!==gl.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===gl.Scalar.BLOCK_LITERAL?`
|
|
72
|
+
`:" ")}return rk.stringifyString({comment:n,type:e,value:a},r,s,i)}};kp.binary=sk});var mi=O(hi=>{"use strict";var pi=q(),bl=mt(),ik=te(),ok=bt();function xp(n,e){if(pi.isSeq(n))for(let t=0;t<n.items.length;++t){let r=n.items[t];if(!pi.isPair(r)){if(pi.isMap(r)){r.items.length>1&&e("Each pair must have its own sequence indicator");let s=r.items[0]||new bl.Pair(new ik.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]=pi.isPair(r)?r:new bl.Pair(r)}}else e("Expected a sequence for this tag");return n}function Ep(n,e,t){let{replacer:r}=t,s=new ok.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(bl.createPair(a,l,t))}return s}var ak={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:xp,createNode:Ep};hi.createPairs=Ep;hi.pairs=ak;hi.resolvePairs=xp});var Sl=O(vl=>{"use strict";var Ap=U(),wl=dt(),Er=yt(),lk=bt(),Tp=mi(),qt=class n extends lk.YAMLSeq{constructor(){super(),this.add=Er.YAMLMap.prototype.add.bind(this),this.delete=Er.YAMLMap.prototype.delete.bind(this),this.get=Er.YAMLMap.prototype.get.bind(this),this.has=Er.YAMLMap.prototype.has.bind(this),this.set=Er.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(Ap.isPair(s)?(i=wl.toJS(s.key,"",t),o=wl.toJS(s.value,i,t)):i=wl.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=Tp.createPairs(e,t,r),i=new this;return i.items=s.items,i}};qt.tag="tag:yaml.org,2002:omap";var ck={collection:"seq",identify:n=>n instanceof Map,nodeClass:qt,default:!1,tag:"tag:yaml.org,2002:omap",resolve(n,e){let t=Tp.resolvePairs(n,e),r=[];for(let{key:s}of t.items)Ap.isScalar(s)&&(r.includes(s.value)?e(`Ordered maps must not include duplicate keys: ${s.value}`):r.push(s.value));return Object.assign(new qt,t)},createNode:(n,e,t)=>qt.from(n,e,t)};vl.YAMLOMap=qt;vl.omap=ck});var _p=O(kl=>{"use strict";var Op=te();function Pp({value:n,source:e},t){return e&&(n?Cp:Rp).test.test(e)?e:n?t.options.trueStr:t.options.falseStr}var Cp={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 Op.Scalar(!0),stringify:Pp},Rp={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 Op.Scalar(!1),stringify:Pp};kl.falseTag=Rp;kl.trueTag=Cp});var Np=O(gi=>{"use strict";var uk=te(),xl=vn(),dk={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:xl.stringifyNumber},fk={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():xl.stringifyNumber(n)}},pk={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 uk.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:xl.stringifyNumber};gi.float=pk;gi.floatExp=fk;gi.floatNaN=dk});var $p=O(Tr=>{"use strict";var Ip=vn(),Ar=n=>typeof n=="bigint"||Number.isInteger(n);function yi(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 El(n,e,t){let{value:r}=n;if(Ar(r)){let s=r.toString(e);return r<0?"-"+t+s.substr(1):t+s}return Ip.stringifyNumber(n)}var hk={identify:Ar,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(n,e,t)=>yi(n,2,2,t),stringify:n=>El(n,2,"0b")},mk={identify:Ar,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(n,e,t)=>yi(n,1,8,t),stringify:n=>El(n,8,"0")},gk={identify:Ar,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(n,e,t)=>yi(n,0,10,t),stringify:Ip.stringifyNumber},yk={identify:Ar,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(n,e,t)=>yi(n,2,16,t),stringify:n=>El(n,16,"0x")};Tr.int=gk;Tr.intBin=hk;Tr.intHex=yk;Tr.intOct=mk});var Tl=O(Al=>{"use strict";var vi=U(),bi=mt(),wi=yt(),Jt=class n extends wi.YAMLMap{constructor(e){super(e),this.tag=n.tag}add(e){let t;vi.isPair(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new bi.Pair(e.key,null):t=new bi.Pair(e,null),wi.findPair(this.items,t.key)||this.items.push(t)}get(e,t){let r=wi.findPair(this.items,e);return!t&&vi.isPair(r)?vi.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=wi.findPair(this.items,e);r&&!t?this.items.splice(this.items.indexOf(r),1):!r&&t&&this.items.push(new bi.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(bi.createPair(o,null,r));return i}};Jt.tag="tag:yaml.org,2002:set";var bk={collection:"map",identify:n=>n instanceof Set,nodeClass:Jt,default:!1,tag:"tag:yaml.org,2002:set",createNode:(n,e,t)=>Jt.from(n,e,t),resolve(n,e){if(vi.isMap(n)){if(n.hasAllNullValues(!0))return Object.assign(new Jt,n);e("Set items must all have null values")}else e("Expected a mapping for this tag");return n}};Al.YAMLSet=Jt;Al.set=bk});var Pl=O(Si=>{"use strict";var wk=vn();function Ol(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 Lp(n){let{value:e}=n,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return wk.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 vk={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})=>Ol(n,t),stringify:Lp},Sk={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=>Ol(n,!1),stringify:Lp},Mp={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(Mp.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=Ol(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$/,"")??""};Si.floatTime=Sk;Si.intTime=vk;Si.timestamp=Mp});var jp=O(Dp=>{"use strict";var kk=bn(),xk=li(),Ek=wn(),Ak=kr(),Tk=yl(),Bp=_p(),Cl=Np(),ki=$p(),Ok=ei(),Pk=Sl(),Ck=mi(),Rk=Tl(),Rl=Pl(),_k=[kk.map,Ek.seq,Ak.string,xk.nullTag,Bp.trueTag,Bp.falseTag,ki.intBin,ki.intOct,ki.int,ki.intHex,Cl.floatNaN,Cl.floatExp,Cl.float,Tk.binary,Ok.merge,Pk.omap,Ck.pairs,Rk.set,Rl.intTime,Rl.floatTime,Rl.timestamp];Dp.schema=_k});var zp=O(Il=>{"use strict";var Jp=bn(),Nk=li(),Kp=wn(),Ik=kr(),$k=cl(),_l=dl(),Nl=pl(),Lk=bp(),Mk=Sp(),Hp=yl(),Or=ei(),Wp=Sl(),Yp=mi(),Fp=jp(),Vp=Tl(),xi=Pl(),Up=new Map([["core",Lk.schema],["failsafe",[Jp.map,Kp.seq,Ik.string]],["json",Mk.schema],["yaml11",Fp.schema],["yaml-1.1",Fp.schema]]),qp={binary:Hp.binary,bool:$k.boolTag,float:_l.float,floatExp:_l.floatExp,floatNaN:_l.floatNaN,floatTime:xi.floatTime,int:Nl.int,intHex:Nl.intHex,intOct:Nl.intOct,intTime:xi.intTime,map:Jp.map,merge:Or.merge,null:Nk.nullTag,omap:Wp.omap,pairs:Yp.pairs,seq:Kp.seq,set:Vp.set,timestamp:xi.timestamp},Bk={"tag:yaml.org,2002:binary":Hp.binary,"tag:yaml.org,2002:merge":Or.merge,"tag:yaml.org,2002:omap":Wp.omap,"tag:yaml.org,2002:pairs":Yp.pairs,"tag:yaml.org,2002:set":Vp.set,"tag:yaml.org,2002:timestamp":xi.timestamp};function Dk(n,e,t){let r=Up.get(e);if(r&&!n)return t&&!r.includes(Or.merge)?r.concat(Or.merge):r.slice();let s=r;if(!s)if(Array.isArray(n))s=[];else{let i=Array.from(Up.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(Or.merge)),s.reduce((i,o)=>{let a=typeof o=="string"?qp[o]:o;if(!a){let l=JSON.stringify(o),c=Object.keys(qp).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},[])}Il.coreKnownTags=Bk;Il.getTags=Dk});var Ml=O(Gp=>{"use strict";var $l=U(),jk=bn(),Fk=wn(),Uk=kr(),Ei=zp(),qk=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0,Ll=class n{constructor({compat:e,customTags:t,merge:r,resolveKnownTags:s,schema:i,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?Ei.getTags(e,"compat"):e?Ei.getTags(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=s?Ei.coreKnownTags:{},this.tags=Ei.getTags(t,this.name,r),this.toStringOptions=a??null,Object.defineProperty(this,$l.MAP,{value:jk.map}),Object.defineProperty(this,$l.SCALAR,{value:Uk.string}),Object.defineProperty(this,$l.SEQ,{value:Fk.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?qk:null}clone(){let e=Object.create(n.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};Gp.Schema=Ll});var Qp=O(Xp=>{"use strict";var Jk=U(),Bl=br(),Pr=hr();function Kk(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=Bl.createStringifyContext(n,e),{commentString:i}=s.options;if(n.commentBefore){t.length!==1&&t.unshift("");let l=i(n.commentBefore);t.unshift(Pr.indentComment(l,""))}let o=!1,a=null;if(n.contents){if(Jk.isNode(n.contents)){if(n.contents.spaceBefore&&r&&t.push(""),n.contents.commentBefore){let d=i(n.contents.commentBefore);t.push(Pr.indentComment(d,""))}s.forceBlockIndent=!!n.comment,a=n.contents.comment}let l=a?void 0:()=>o=!0,c=Bl.stringify(n.contents,s,()=>a=null,l);a&&(c+=Pr.lineComment(c,"",i(a))),(c[0]==="|"||c[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${c}`:t.push(c)}else t.push(Bl.stringify(n.contents,s));if(n.directives?.docEnd)if(n.comment){let l=i(n.comment);l.includes(`
|
|
74
|
+
${i.comment}`:r.comment}r=s}n.items[t]=pi.isPair(r)?r:new bl.Pair(r)}}else e("Expected a sequence for this tag");return n}function Ep(n,e,t){let{replacer:r}=t,s=new ok.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(bl.createPair(a,l,t))}return s}var ak={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:xp,createNode:Ep};hi.createPairs=Ep;hi.pairs=ak;hi.resolvePairs=xp});var Sl=O(vl=>{"use strict";var Ap=q(),wl=dt(),Er=yt(),lk=bt(),Tp=mi(),Ut=class n extends lk.YAMLSeq{constructor(){super(),this.add=Er.YAMLMap.prototype.add.bind(this),this.delete=Er.YAMLMap.prototype.delete.bind(this),this.get=Er.YAMLMap.prototype.get.bind(this),this.has=Er.YAMLMap.prototype.has.bind(this),this.set=Er.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(Ap.isPair(s)?(i=wl.toJS(s.key,"",t),o=wl.toJS(s.value,i,t)):i=wl.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=Tp.createPairs(e,t,r),i=new this;return i.items=s.items,i}};Ut.tag="tag:yaml.org,2002:omap";var ck={collection:"seq",identify:n=>n instanceof Map,nodeClass:Ut,default:!1,tag:"tag:yaml.org,2002:omap",resolve(n,e){let t=Tp.resolvePairs(n,e),r=[];for(let{key:s}of t.items)Ap.isScalar(s)&&(r.includes(s.value)?e(`Ordered maps must not include duplicate keys: ${s.value}`):r.push(s.value));return Object.assign(new Ut,t)},createNode:(n,e,t)=>Ut.from(n,e,t)};vl.YAMLOMap=Ut;vl.omap=ck});var _p=O(kl=>{"use strict";var Op=te();function Pp({value:n,source:e},t){return e&&(n?Cp:Rp).test.test(e)?e:n?t.options.trueStr:t.options.falseStr}var Cp={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 Op.Scalar(!0),stringify:Pp},Rp={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 Op.Scalar(!1),stringify:Pp};kl.falseTag=Rp;kl.trueTag=Cp});var Np=O(gi=>{"use strict";var uk=te(),xl=vn(),dk={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:xl.stringifyNumber},fk={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():xl.stringifyNumber(n)}},pk={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 uk.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:xl.stringifyNumber};gi.float=pk;gi.floatExp=fk;gi.floatNaN=dk});var $p=O(Tr=>{"use strict";var Ip=vn(),Ar=n=>typeof n=="bigint"||Number.isInteger(n);function yi(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 El(n,e,t){let{value:r}=n;if(Ar(r)){let s=r.toString(e);return r<0?"-"+t+s.substr(1):t+s}return Ip.stringifyNumber(n)}var hk={identify:Ar,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(n,e,t)=>yi(n,2,2,t),stringify:n=>El(n,2,"0b")},mk={identify:Ar,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(n,e,t)=>yi(n,1,8,t),stringify:n=>El(n,8,"0")},gk={identify:Ar,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(n,e,t)=>yi(n,0,10,t),stringify:Ip.stringifyNumber},yk={identify:Ar,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(n,e,t)=>yi(n,2,16,t),stringify:n=>El(n,16,"0x")};Tr.int=gk;Tr.intBin=hk;Tr.intHex=yk;Tr.intOct=mk});var Tl=O(Al=>{"use strict";var vi=q(),bi=mt(),wi=yt(),Jt=class n extends wi.YAMLMap{constructor(e){super(e),this.tag=n.tag}add(e){let t;vi.isPair(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new bi.Pair(e.key,null):t=new bi.Pair(e,null),wi.findPair(this.items,t.key)||this.items.push(t)}get(e,t){let r=wi.findPair(this.items,e);return!t&&vi.isPair(r)?vi.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=wi.findPair(this.items,e);r&&!t?this.items.splice(this.items.indexOf(r),1):!r&&t&&this.items.push(new bi.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(bi.createPair(o,null,r));return i}};Jt.tag="tag:yaml.org,2002:set";var bk={collection:"map",identify:n=>n instanceof Set,nodeClass:Jt,default:!1,tag:"tag:yaml.org,2002:set",createNode:(n,e,t)=>Jt.from(n,e,t),resolve(n,e){if(vi.isMap(n)){if(n.hasAllNullValues(!0))return Object.assign(new Jt,n);e("Set items must all have null values")}else e("Expected a mapping for this tag");return n}};Al.YAMLSet=Jt;Al.set=bk});var Pl=O(Si=>{"use strict";var wk=vn();function Ol(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 Lp(n){let{value:e}=n,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return wk.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 vk={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})=>Ol(n,t),stringify:Lp},Sk={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=>Ol(n,!1),stringify:Lp},Mp={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(Mp.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=Ol(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$/,"")??""};Si.floatTime=Sk;Si.intTime=vk;Si.timestamp=Mp});var jp=O(Dp=>{"use strict";var kk=bn(),xk=li(),Ek=wn(),Ak=kr(),Tk=yl(),Bp=_p(),Cl=Np(),ki=$p(),Ok=ei(),Pk=Sl(),Ck=mi(),Rk=Tl(),Rl=Pl(),_k=[kk.map,Ek.seq,Ak.string,xk.nullTag,Bp.trueTag,Bp.falseTag,ki.intBin,ki.intOct,ki.int,ki.intHex,Cl.floatNaN,Cl.floatExp,Cl.float,Tk.binary,Ok.merge,Pk.omap,Ck.pairs,Rk.set,Rl.intTime,Rl.floatTime,Rl.timestamp];Dp.schema=_k});var zp=O(Il=>{"use strict";var Jp=bn(),Nk=li(),Kp=wn(),Ik=kr(),$k=cl(),_l=dl(),Nl=pl(),Lk=bp(),Mk=Sp(),Hp=yl(),Or=ei(),Wp=Sl(),Yp=mi(),Fp=jp(),Vp=Tl(),xi=Pl(),qp=new Map([["core",Lk.schema],["failsafe",[Jp.map,Kp.seq,Ik.string]],["json",Mk.schema],["yaml11",Fp.schema],["yaml-1.1",Fp.schema]]),Up={binary:Hp.binary,bool:$k.boolTag,float:_l.float,floatExp:_l.floatExp,floatNaN:_l.floatNaN,floatTime:xi.floatTime,int:Nl.int,intHex:Nl.intHex,intOct:Nl.intOct,intTime:xi.intTime,map:Jp.map,merge:Or.merge,null:Nk.nullTag,omap:Wp.omap,pairs:Yp.pairs,seq:Kp.seq,set:Vp.set,timestamp:xi.timestamp},Bk={"tag:yaml.org,2002:binary":Hp.binary,"tag:yaml.org,2002:merge":Or.merge,"tag:yaml.org,2002:omap":Wp.omap,"tag:yaml.org,2002:pairs":Yp.pairs,"tag:yaml.org,2002:set":Vp.set,"tag:yaml.org,2002:timestamp":xi.timestamp};function Dk(n,e,t){let r=qp.get(e);if(r&&!n)return t&&!r.includes(Or.merge)?r.concat(Or.merge):r.slice();let s=r;if(!s)if(Array.isArray(n))s=[];else{let i=Array.from(qp.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(Or.merge)),s.reduce((i,o)=>{let a=typeof o=="string"?Up[o]:o;if(!a){let l=JSON.stringify(o),c=Object.keys(Up).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},[])}Il.coreKnownTags=Bk;Il.getTags=Dk});var Ml=O(Gp=>{"use strict";var $l=q(),jk=bn(),Fk=wn(),qk=kr(),Ei=zp(),Uk=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0,Ll=class n{constructor({compat:e,customTags:t,merge:r,resolveKnownTags:s,schema:i,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?Ei.getTags(e,"compat"):e?Ei.getTags(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=s?Ei.coreKnownTags:{},this.tags=Ei.getTags(t,this.name,r),this.toStringOptions=a??null,Object.defineProperty(this,$l.MAP,{value:jk.map}),Object.defineProperty(this,$l.SCALAR,{value:qk.string}),Object.defineProperty(this,$l.SEQ,{value:Fk.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?Uk:null}clone(){let e=Object.create(n.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};Gp.Schema=Ll});var Qp=O(Xp=>{"use strict";var Jk=q(),Bl=br(),Pr=hr();function Kk(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=Bl.createStringifyContext(n,e),{commentString:i}=s.options;if(n.commentBefore){t.length!==1&&t.unshift("");let l=i(n.commentBefore);t.unshift(Pr.indentComment(l,""))}let o=!1,a=null;if(n.contents){if(Jk.isNode(n.contents)){if(n.contents.spaceBefore&&r&&t.push(""),n.contents.commentBefore){let d=i(n.contents.commentBefore);t.push(Pr.indentComment(d,""))}s.forceBlockIndent=!!n.comment,a=n.contents.comment}let l=a?void 0:()=>o=!0,c=Bl.stringify(n.contents,s,()=>a=null,l);a&&(c+=Pr.lineComment(c,"",i(a))),(c[0]==="|"||c[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${c}`:t.push(c)}else t.push(Bl.stringify(n.contents,s));if(n.directives?.docEnd)if(n.comment){let l=i(n.comment);l.includes(`
|
|
75
75
|
`)?(t.push("..."),t.push(Pr.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(Pr.indentComment(i(l),"")))}return t.join(`
|
|
76
76
|
`)+`
|
|
77
|
-
`}Xp.stringifyDocument=Kk});var Cr=O(Zp=>{"use strict";var Hk=fr(),Sn=Hs(),xe=
|
|
77
|
+
`}Xp.stringifyDocument=Kk});var Cr=O(Zp=>{"use strict";var Hk=fr(),Sn=Hs(),xe=q(),Wk=mt(),Yk=dt(),Vk=Ml(),zk=Qp(),Dl=qs(),Gk=Ua(),Xk=pr(),jl=qa(),Fl=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 jl.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){kn(this.contents)&&this.contents.add(e)}addIn(e,t){kn(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let r=Dl.anchorNames(this);e.anchor=!t||r.has(t)?Dl.findNewAnchor(t||"a",r):t}return new Hk.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 b=S=>typeof S=="number"||S instanceof String||S instanceof Number,A=t.filter(b).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}=Dl.createNodeAnchors(this,o||"a"),m={aliasDuplicateObjects:i??!0,keepUndefined:l??!1,onAnchor:u,onTagObj:c,replacer:s,schema:this.schema,sourceObjects:p},h=Xk.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 Wk.Pair(s,i)}delete(e){return kn(this.contents)?this.contents.delete(e):!1}deleteIn(e){return Sn.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):kn(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 Sn.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 Sn.isEmptyPath(e)?this.contents!==void 0:xe.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=Sn.collectionFromPath(this.schema,[e],t):kn(this.contents)&&this.contents.set(e,t)}setIn(e,t){Sn.isEmptyPath(e)?this.contents=t:this.contents==null?this.contents=Sn.collectionFromPath(this.schema,Array.from(e),t):kn(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 jl.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 jl.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 Vk.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=Yk.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"?Gk.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 zk.stringifyDocument(this,e)}};function kn(n){if(xe.isCollection(n))return!0;throw new Error("Expected a YAML collection as document contents")}Zp.Document=Fl});var Nr=O(_r=>{"use strict";var Rr=class extends Error{constructor(e,t,r,s){super(),this.name=e,this.code=r,this.message=s,this.pos=t}},ql=class extends Rr{constructor(e,t,r){super("YAMLParseError",e,t,r)}},Ul=class extends Rr{constructor(e,t,r){super("YAMLWarning",e,t,r)}},Qk=(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=Rr;_r.YAMLParseError=
|
|
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(Jl(e.key)||Jl(e.value))return!0}return!1;default:return!0}}th.containsNewline=Jl});var Kl=O(nh=>{"use strict";var ex=Ai();function tx(n,e,t){if(e?.type==="flow-collection"){let r=e.end[0];r.indent===n&&(r.source==="]"||r.source==="}")&&ex.containsNewline(e)&&t(r,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}nh.flowIndentCheck=tx});var Hl=O(sh=>{"use strict";var rh=
|
|
82
|
+
`}};_r.YAMLError=Rr;_r.YAMLParseError=ql;_r.YAMLWarning=Ul;_r.prettifyError=Qk});var Ir=O(eh=>{"use strict";function Zk(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,b=null,A=null,S=null,P=null,_=null,C=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:(!_||t!=="seq-item-ind")&&(l=!0):f+=x.source,c=!0,p=!0,(b||A)&&(S=x),d=!0;break;case"anchor":b&&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),b=x,C??(C=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,C??(C=x.offset),c=!1,d=!1,m=!0;break}case t:(b||A)&&i(x,"BAD_PROP_ORDER",`Anchors and tags must be after the ${x.source} indicator`),_&&i(x,"UNEXPECTED_TOKEN",`Unexpected ${x.source} in ${e??"collection"}`),_=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:_,spaceBefore:l,comment:u,hasNewline:p,anchor:b,tag:A,newlineAfterProp:S,end:$,start:C??$}}eh.resolveProps=Zk});var Ai=O(th=>{"use strict";function Jl(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(Jl(e.key)||Jl(e.value))return!0}return!1;default:return!0}}th.containsNewline=Jl});var Kl=O(nh=>{"use strict";var ex=Ai();function tx(n,e,t){if(e?.type==="flow-collection"){let r=e.end[0];r.indent===n&&(r.source==="]"||r.source==="}")&&ex.containsNewline(e)&&t(r,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}nh.flowIndentCheck=tx});var Hl=O(sh=>{"use strict";var rh=q();function nx(n,e,t){let{uniqueKeys:r}=n.options;if(r===!1)return!1;let s=typeof r=="function"?r:(i,o)=>i===o||rh.isScalar(i)&&rh.isScalar(o)&&i.value===o.value;return e.some(i=>s(i.key,t))}sh.mapIncludes=nx});var uh=O(ch=>{"use strict";var ih=mt(),rx=yt(),oh=Ir(),sx=Ai(),ah=Kl(),ix=Hl(),lh="All mapping items must start at the same column";function ox({composeNode:n,composeEmptyNode:e},t,r,s,i){let o=i?.nodeClass??rx.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=oh.resolveProps(u,{indicator:"explicit-key-ind",next:f??p?.[0],offset:l,onError:s,parentIndent:r.indent,startOnNewline:!0}),b=!h.found;if(b){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",lh)),!h.anchor&&!h.tag&&!p){c=h.end,h.comment&&(a.comment?a.comment+=`
|
|
84
84
|
`+h.comment:a.comment=h.comment);continue}(h.newlineAfterProp||sx.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",lh);t.atKey=!0;let A=h.end,S=f?n(t,f,h,s):e(t,A,u,null,h,s);t.schema.compat&&ah.flowIndentCheck(r.indent,f,s),t.atKey=!1,ix.mapIncludes(t,a.items,S)&&s(A,"DUPLICATE_KEY","Map keys must be unique");let P=oh.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){b&&(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 _=m?n(t,m,P,s):e(t,l,p,null,P,s);t.schema.compat&&ah.flowIndentCheck(r.indent,m,s),l=_.range[2];let C=new ih.Pair(S,_);t.options.keepSourceTokens&&(C.srcToken=d),a.items.push(C)}else{b&&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 _=new ih.Pair(S);t.options.keepSourceTokens&&(_.srcToken=d),a.items.push(_)}}return c&&c<l&&s(c,"IMPOSSIBLE","Map comment with trailing content"),a.range=[r.offset,l,c??l],a}ch.resolveBlockMap=ox});var fh=O(dh=>{"use strict";var ax=bt(),lx=Ir(),cx=Kl();function ux({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=lx.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&&cx.flowIndentCheck(r.indent,u,s),l=p.range[2],a.items.push(p)}return a.range=[r.offset,l,c??l],a}dh.resolveBlockSeq=ux});var xn=O(ph=>{"use strict";function dx(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}}ph.resolveEnd=dx});var yh=O(gh=>{"use strict";var fx=
|
|
85
|
+
`+P.comment:S.comment=P.comment);let _=new ih.Pair(S);t.options.keepSourceTokens&&(_.srcToken=d),a.items.push(_)}}return c&&c<l&&s(c,"IMPOSSIBLE","Map comment with trailing content"),a.range=[r.offset,l,c??l],a}ch.resolveBlockMap=ox});var fh=O(dh=>{"use strict";var ax=bt(),lx=Ir(),cx=Kl();function ux({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=lx.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&&cx.flowIndentCheck(r.indent,u,s),l=p.range[2],a.items.push(p)}return a.range=[r.offset,l,c??l],a}dh.resolveBlockSeq=ux});var xn=O(ph=>{"use strict";function dx(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}}ph.resolveEnd=dx});var yh=O(gh=>{"use strict";var fx=q(),px=mt(),hh=yt(),hx=bt(),mx=xn(),mh=Ir(),gx=Ai(),yx=Hl(),Wl="Block collections are not allowed within flow collections",Yl=n=>n&&(n.type==="block-map"||n.type==="block-seq");function bx({composeNode:n,composeEmptyNode:e},t,r,s,i){let o=r.start.source==="{",a=o?"flow map":"flow sequence",l=i?.nodeClass??(o?hh.YAMLMap:hx.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 b=0;b<r.items.length;++b){let A=r.items[b],{start:S,key:P,sep:_,value:C}=A,R=mh.resolveProps(S,{flow:a,indicator:"explicit-key-ind",next:P??_?.[0],offset:u,onError:s,parentIndent:r.indent,startOnNewline:!1});if(!R.found){if(!R.anchor&&!R.tag&&!_&&!C){b===0&&R.comma?s(R.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${a}`):b<r.items.length-1&&s(R.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${a}`),R.comment&&(c.comment?c.comment+=`
|
|
86
86
|
`+R.comment:c.comment=R.comment),u=R.end;continue}!o&&t.options.strict&&gx.containsNewline(P)&&s(P,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(b===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];fx.isPair(x)&&(x=x.value??x.key),x.comment?x.comment+=`
|
|
87
87
|
`+$:x.comment=$,R.comment=R.comment.substring($.length+1)}}if(!o&&!_&&!R.found){let $=C?n(t,C,R,s):e(t,R.end,_,null,R,s);c.items.push($),u=$.range[2],Yl(C)&&s($.range,"BLOCK_IN_FLOW",Wl)}else{t.atKey=!0;let $=R.end,x=P?n(t,P,R,s):e(t,$,S,null,R,s);Yl(P)&&s(x.range,"BLOCK_IN_FLOW",Wl),t.atKey=!1;let D=mh.resolveProps(_??[],{flow:a,indicator:"map-value-ind",next:C,offset:x.range[2],onError:s,parentIndent:r.indent,startOnNewline:!1});if(D.found){if(!o&&!R.found&&t.options.strict){if(_)for(let y of _){if(y===D.found)break;if(y.type==="newline"){s(y,"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 C&&("source"in C&&C.source?.[0]===":"?s(C,"MISSING_CHAR",`Missing space after : in ${a}`):s(D.start,"MISSING_CHAR",`Missing , or : between ${a} items`));let K=C?n(t,C,D,s):D.found?e(t,D.end,_,null,D,s):null;K?Yl(C)&&s(K.range,"BLOCK_IN_FLOW",Wl):D.comment&&(x.comment?x.comment+=`
|
|
88
|
-
`+D.comment:x.comment=D.comment);let
|
|
89
|
-
`+b.comment:c.comment=b.comment),c.range=[r.offset,h,b.offset]}else c.range=[r.offset,h,h];return c}gh.resolveFlowCollection=bx});var wh=O(bh=>{"use strict";var wx=
|
|
88
|
+
`+D.comment:x.comment=D.comment);let U=new px.Pair(x,K);if(t.options.keepSourceTokens&&(U.srcToken=A),o){let y=c;yx.mapIncludes(t,y.items,x)&&s($,"DUPLICATE_KEY","Map keys must be unique"),y.items.push(U)}else{let y=new hh.YAMLMap(t.schema);y.flow=!0,y.items.push(U);let E=(K??x).range;y.range=[x.range[0],E[1],E[2]],c.items.push(y)}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 b=a[0].toUpperCase()+a.substring(1),A=d?`${b} must end with a ${f}`:`${b} 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 b=mx.resolveEnd(m,h,t.options.strict,s);b.comment&&(c.comment?c.comment+=`
|
|
89
|
+
`+b.comment:c.comment=b.comment),c.range=[r.offset,h,b.offset]}else c.range=[r.offset,h,h];return c}gh.resolveFlowCollection=bx});var wh=O(bh=>{"use strict";var wx=q(),vx=te(),Sx=yt(),kx=bt(),xx=uh(),Ex=fh(),Ax=yh();function Vl(n,e,t,r,s,i){let o=t.type==="block-map"?xx.resolveBlockMap(n,e,t,r,i):t.type==="block-seq"?Ex.resolveBlockSeq(n,e,t,r,i):Ax.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 Tx(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===Sx.YAMLMap.tagName&&a==="map"||o===kx.YAMLSeq.tagName&&a==="seq")return Vl(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),Vl(n,e,t,s,o)}let c=Vl(n,e,t,s,o,l),d=l.resolve?.(c,f=>s(i,"TAG_RESOLVE_FAILED",f),e.options)??c,u=wx.isNode(d)?d:new vx.Scalar(d);return u.range=c.range,u.tag=o,l?.format&&(u.format=l.format),u}bh.composeCollection=Tx});var Gl=O(vh=>{"use strict";var zl=te();function Ox(n,e,t){let r=e.offset,s=Px(e,n.options.strict,t);if(!s)return{value:"",type:null,comment:"",range:[r,r,r]};let i=s.mode===">"?zl.Scalar.BLOCK_FOLDED:zl.Scalar.BLOCK_LITERAL,o=e.source?Cx(e.source):[],a=o.length;for(let h=o.length-1;h>=0;--h){let b=o[h][1];if(b===""||b==="\r")a=h;else break}if(a===0){let h=s.chomp==="+"&&o.length>0?`
|
|
90
90
|
`.repeat(Math.max(1,o.length-1)):"",b=r+s.length;return e.source&&(b+=e.source.length),{value:h,type:i,comment:s.comment,range:[r,b,b]}}let l=e.indent+s.indent,c=e.offset+s.length,d=0;for(let h=0;h<a;++h){let[b,A]=o[h];if(A===""||A==="\r")s.indent===0&&b.length>l&&(l=b.length);else{b.length<l&&t(c+b.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator"),s.indent===0&&(l=b.length),d=h,l===0&&!n.atRoot&&t(c,"BAD_INDENT","Block scalar values in collections must be indented");break}c+=b.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
91
|
`;for(let h=d;h<a;++h){let[b,A]=o[h];c+=b.length+A.length+1;let S=A[A.length-1]==="\r";if(S&&(A=A.slice(0,-1)),A&&b.length<l){let _=`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",_),b=""}i===zl.Scalar.BLOCK_LITERAL?(u+=f+b.slice(l)+A,f=`
|
|
92
92
|
`):b.length>l||A[0]===" "?(f===" "?f=`
|
|
@@ -116,7 +116,7 @@ ${c}
|
|
|
116
116
|
`);)r===`
|
|
117
117
|
`&&(t+=`
|
|
118
118
|
`),e+=1,r=n[e+1];return t||(t=" "),{fold:t,offset:e}}var Mx={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 Bx(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)}kh.resolveFlowScalar=_x});var Ah=O(Eh=>{"use strict";var Kt=
|
|
119
|
+
`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function Bx(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)}kh.resolveFlowScalar=_x});var Ah=O(Eh=>{"use strict";var Kt=q(),xh=te(),Dx=Gl(),jx=Ql();function Fx(n,e,t,r){let{value:s,type:i,comment:o,range:a}=e.type==="block-scalar"?Dx.resolveBlockScalar(n,e,r):jx.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[Kt.SCALAR]:l?c=qx(n.schema,s,l,t,r):e.type==="scalar"?c=Ux(n,s,e,r):c=n.schema[Kt.SCALAR];let d;try{let u=c.resolve(s,f=>r(t??e,"TAG_RESOLVE_FAILED",f),n.options);d=Kt.isScalar(u)?u:new xh.Scalar(u)}catch(u){let f=u instanceof Error?u.message:String(u);r(t??e,"TAG_RESOLVE_FAILED",f),d=new xh.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 qx(n,e,t,r,s){if(t==="!")return n[Kt.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[Kt.SCALAR])}function Ux({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[Kt.SCALAR];if(t.compat){let a=t.compat.find(l=>l.default&&l.test?.test(r))??t[Kt.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}Eh.composeScalar=Fx});var Oh=O(Th=>{"use strict";function Jx(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}Th.emptyScalarPosition=Jx});var Rh=O(ec=>{"use strict";var Kx=fr(),Hx=q(),Wx=wh(),Ph=Ah(),Yx=xn(),Vx=Oh(),zx={composeNode:Ch,composeEmptyNode:Zl};function Ch(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=Gx(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=Ph.composeScalar(n,e,l,r),a&&(c.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":c=Wx.composeCollection(zx,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=Zl(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&&(!Hx.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 Zl(n,e,t,r,{spaceBefore:s,comment:i,anchor:o,tag:a,end:l},c){let d={type:"scalar",offset:Vx.emptyScalarPosition(e,t,r),indent:-1,source:""},u=Ph.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 Gx({options:n},{offset:e,source:t,end:r},s){let i=new Kx.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=Yx.resolveEnd(r,o,n.strict,s);return i.range=[e,o,a.offset],a.comment&&(i.comment=a.comment),i}ec.composeEmptyNode=Zl;ec.composeNode=Ch});var Ih=O(Nh=>{"use strict";var Xx=Cr(),_h=Rh(),Qx=xn(),Zx=Ir();function e0(n,e,{offset:t,start:r,value:s,end:i},o){let a=Object.assign({_directives:e},n),l=new Xx.Document(void 0,a),c={atKey:!1,atRoot:!0,directives:l.directives,options:l.options,schema:l.schema},d=Zx.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?_h.composeNode(c,s,d,o):_h.composeEmptyNode(c,d.end,r,null,d,o);let u=l.contents.range[2],f=Qx.resolveEnd(i,u,!1,o);return f.comment&&(l.comment=f.comment),l.range=[t,u,f.offset],l}Nh.composeDoc=e0});var nc=O(Mh=>{"use strict";var t0=Rs("process"),n0=qa(),r0=Cr(),$r=Nr(),$h=q(),s0=Ih(),i0=xn();function Lr(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 Lh(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
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 tc=class{constructor(e={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(t,r,s,i)=>{let o=Lr(t);i?this.warnings.push(new $r.YAMLWarning(o,r,s)):this.errors.push(new $r.YAMLParseError(o,r,s))},this.directives=new n0.Directives({version:e.version||"1.2"}),this.options=e}decorate(e,t){let{comment:r,afterEmptyLine:s}=Lh(this.prelude);if(r){let i=e.contents;if(t)e.comment=e.comment?`${e.comment}
|
|
@@ -131,7 +131,7 @@ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.pus
|
|
|
131
131
|
`),r=e.substring(0,t),s=e.substring(t+1)+`
|
|
132
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}];Dh(a,"end"in n?n.end:void 0)||a.push({type:"newline",offset:-1,indent:o,source:`
|
|
133
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 Dh(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 rc(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})}}}Ti.createScalarToken=u0;Ti.resolveAsScalar=c0;Ti.setScalarValue=d0});var
|
|
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})}}}Ti.createScalarToken=u0;Ti.resolveAsScalar=c0;Ti.setScalarValue=d0});var qh=O(Fh=>{"use strict";var p0=n=>"type"in n?Pi(n):Oi(n);function Pi(n){switch(n.type){case"block-scalar":{let e="";for(let t of n.props)e+=Pi(t);return e+n.source}case"block-map":case"block-seq":{let e="";for(let t of n.items)e+=Oi(t);return e}case"flow-collection":{let e=n.start.source;for(let t of n.items)e+=Oi(t);for(let t of n.end)e+=t.source;return e}case"document":{let e=Oi(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 Oi({start:n,key:e,sep:t,value:r}){let s="";for(let i of n)s+=i.source;if(e&&(s+=Pi(e)),t)for(let i of t)s+=i.source;return r&&(s+=Pi(r)),s}Fh.stringify=p0});var Hh=O(Kh=>{"use strict";var sc=Symbol("break visit"),h0=Symbol("skip children"),Uh=Symbol("remove item");function Ht(n,e){"type"in n&&n.type==="document"&&(n={start:n.start,value:n.value}),Jh(Object.freeze([]),n,e)}Ht.BREAK=sc;Ht.SKIP=h0;Ht.REMOVE=Uh;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 Jh(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=Jh(Object.freeze(n.concat([[s,o]])),i.items[o],t);if(typeof a=="number")o=a-1;else{if(a===sc)return sc;a===Uh&&(i.items.splice(o,1),o-=1)}}typeof r=="function"&&s==="key"&&(r=r(e,n))}}return typeof r=="function"?r(e,n):r}Kh.visit=Ht});var Ci=O(ge=>{"use strict";var ic=jh(),m0=qh(),g0=Hh(),oc="\uFEFF",ac="",lc="",cc="",y0=n=>!!n&&"items"in n,b0=n=>!!n&&(n.type==="scalar"||n.type==="single-quoted-scalar"||n.type==="double-quoted-scalar"||n.type==="block-scalar");function w0(n){switch(n){case oc:return"<BOM>";case ac:return"<DOC>";case lc:return"<FLOW_END>";case cc:return"<SCALAR>";default:return JSON.stringify(n)}}function v0(n){switch(n){case oc:return"byte-order-mark";case ac:return"doc-mode";case lc:return"flow-error-end";case cc:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
|
|
135
135
|
`:case`\r
|
|
136
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=ic.createScalarToken;ge.resolveAsScalar=ic.resolveAsScalar;ge.setScalarValue=ic.setScalarValue;ge.stringify=m0.stringify;ge.visit=g0.visit;ge.BOM=oc;ge.DOCUMENT=ac;ge.FLOW_END=lc;ge.SCALAR=cc;ge.isCollection=y0;ge.isScalar=b0;ge.prettyToken=w0;ge.tokenType=v0});var fc=O(Yh=>{"use strict";var Mr=Ci();function Ie(n){switch(n){case void 0:case" ":case`
|
|
137
137
|
`:case"\r":case" ":return!0;default:return!1}}var Wh=new Set("0123456789ABCDEFabcdef"),S0=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),Ri=new Set(",[]{}"),k0=new Set(` ,[]{}
|
|
@@ -156,7 +156,7 @@ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.pus
|
|
|
156
156
|
`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`
|
|
157
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(wt(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(Qh(t.key)&&!wt(t.sep,"newline")){let o=En(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(wt(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let o=En(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]}):wt(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&&!wt(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||wt(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=_i(r),i=En(s);Xh(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=_i(e),r=En(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=_i(e),r=En(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())}}};Zh.Parser=mc});var sm=O(Dr=>{"use strict";var em=nc(),A0=Cr(),Br=Nr(),T0=el(),O0=
|
|
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=_i(e),r=En(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=_i(e),r=En(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())}}};Zh.Parser=mc});var sm=O(Dr=>{"use strict";var em=nc(),A0=Cr(),Br=Nr(),T0=el(),O0=q(),P0=hc(),tm=gc();function nm(n){let e=n.prettyErrors!==!1;return{lineCounter:n.lineCounter||e&&new P0.LineCounter||null,prettyErrors:e}}function C0(n,e={}){let{lineCounter:t,prettyErrors:r}=nm(e),s=new tm.Parser(t?.addNewLine),i=new em.Composer(e),o=Array.from(i.compose(s.parse(n)));if(r&&t)for(let a of o)a.errors.forEach(Br.prettifyError(n,t)),a.warnings.forEach(Br.prettifyError(n,t));return o.length>0?o:Object.assign([],{empty:!0},i.streamInfo())}function rm(n,e={}){let{lineCounter:t,prettyErrors:r}=nm(e),s=new tm.Parser(t?.addNewLine),i=new em.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 Br.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return r&&t&&(o.errors.forEach(Br.prettifyError(n,t)),o.warnings.forEach(Br.prettifyError(n,t))),o}function R0(n,e,t){let r;typeof e=="function"?r=e:t===void 0&&e&&typeof e=="object"&&(t=e);let s=rm(n,t);if(!s)return null;if(s.warnings.forEach(i=>T0.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 _0(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 O0.isDocument(n)&&!r?n.toString(t):new A0.Document(n,r,t).toString(t)}Dr.parse=R0;Dr.parseAllDocuments=C0;Dr.parseDocument=rm;Dr.stringify=_0});var om=O(J=>{"use strict";var N0=nc(),I0=Cr(),$0=Ml(),yc=Nr(),L0=fr(),vt=q(),M0=mt(),B0=te(),D0=yt(),j0=bt(),F0=Ci(),q0=fc(),U0=hc(),J0=gc(),Ni=sm(),im=lr();J.Composer=N0.Composer;J.Document=I0.Document;J.Schema=$0.Schema;J.YAMLError=yc.YAMLError;J.YAMLParseError=yc.YAMLParseError;J.YAMLWarning=yc.YAMLWarning;J.Alias=L0.Alias;J.isAlias=vt.isAlias;J.isCollection=vt.isCollection;J.isDocument=vt.isDocument;J.isMap=vt.isMap;J.isNode=vt.isNode;J.isPair=vt.isPair;J.isScalar=vt.isScalar;J.isSeq=vt.isSeq;J.Pair=M0.Pair;J.Scalar=B0.Scalar;J.YAMLMap=D0.YAMLMap;J.YAMLSeq=j0.YAMLSeq;J.CST=F0;J.Lexer=q0.Lexer;J.LineCounter=U0.LineCounter;J.Parser=J0.Parser;J.parse=Ni.parse;J.parseAllDocuments=Ni.parseAllDocuments;J.parseDocument=Ni.parseDocument;J.stringify=Ni.stringify;J.visit=im.visit;J.visitAsync=im.visitAsync});function H0(n){try{return JSON.parse(n.trim()),!0}catch{return!1}}function W0(n){let e=n.trim();if(!e.startsWith("<"))return!1;let t=e.match(K0);return t?ar(e,t[1])!==null:!1}function Y0(n){let e=n.trim();if(!e.match(/^(---|#|\w+:|-)/)||"[{<".includes(e[0]))return!1;try{let t=am.parse(e);return t!==null&&typeof t=="object"}catch{return!1}}function lm(n){return H0(n)||W0(n)||Y0(n)}var am,K0,bc=v(()=>{bf();am=Zw(om(),1),K0=/<([a-zA-Z_][\w.-]*)/});function V0(n){if(!n?.trim())return[];let e=n.replace(/\r\n/g,`
|
|
160
160
|
`),t=e.trim();if(lm(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(`
|
|
@@ -169,17 +169,17 @@ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.pus
|
|
|
169
169
|
html[data-theme="dark"] { color-scheme: dark; }
|
|
170
170
|
html[data-theme="light"] { color-scheme: light; }`,xc=" html, body { height: 100%; }"});var ne=v(()=>{Ns();Na();af();df();bc();um();wm();Sm();km();Is()});function we(n){return n.length>5e4?n.slice(0,5e4)+`
|
|
171
171
|
\u2026[${n.length-5e4} more characters truncated]`:n}function $e(n){let e=n.replace(rE,"").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 rE,Mi,Fr=v(()=>{"use strict";rE=/\u001b\[[0-9;]*m/g;Mi=(n,e)=>``});import{existsSync as sE,readdirSync as iE,statSync as oE}from"fs";import{join as aE}from"path";function Bi(n){if(!sE(n))return[];let e;try{e=iE(n)}catch{return[]}let t=[];for(let r of e){if(!r.endsWith(".jsonl"))continue;let s=aE(n,r);try{let i=oE(s);i.isFile()&&t.push({sessionId:r.slice(0,-6),file:s,mtime:i.mtimeMs})}catch{}}return t}var Ac=v(()=>{"use strict"});var St,Di=v(()=>{"use strict";St=class{ensureHarnessSupport(){}}});import{openSync as lE,readSync as cE,closeSync as uE,statSync as dE,readdirSync as fE,readFileSync as pE,existsSync as hE}from"fs";import{join as
|
|
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 rE,Mi,Fr=v(()=>{"use strict";rE=/\u001b\[[0-9;]*m/g;Mi=(n,e)=>``});import{existsSync as sE,readdirSync as iE,statSync as oE}from"fs";import{join as aE}from"path";function Bi(n){if(!sE(n))return[];let e;try{e=iE(n)}catch{return[]}let t=[];for(let r of e){if(!r.endsWith(".jsonl"))continue;let s=aE(n,r);try{let i=oE(s);i.isFile()&&t.push({sessionId:r.slice(0,-6),file:s,mtime:i.mtimeMs})}catch{}}return t}var Ac=v(()=>{"use strict"});var St,Di=v(()=>{"use strict";St=class{ensureHarnessSupport(){}}});import{openSync as lE,readSync as cE,closeSync as uE,statSync as dE,readdirSync as fE,readFileSync as pE,existsSync as hE}from"fs";import{join as Ur}from"path";import{homedir as Pc}from"os";function mE(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?Mi(e.data,e.media_type):""}function Tc(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?Tc(t.content):ji(t)}).join(`
|
|
173
173
|
`):n==null?"":we(JSON.stringify(n))}function yE(n){let e=n.trim();return!!e&&Om.some(t=>t.test(e))}function bE(n){let e=n.trim();return e?Om.some(t=>{let r=t.exec(e);return!!r&&r.index===0}):!0}function vE(n){return n.replace(wE,"")}function SE(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 kt(n){let e=vE(n).trim();return e?SE(e)??(yE(e)?"":e):""}function Oc(n){return n?.type==="text"&&typeof n.text=="string"?kt(n.text):""}function Cc(n,e){if(typeof n=="string")return $e(n);if(!n||typeof n!="object")return $e(e);let t=n;if(t.type==="text"&&typeof t.file?.numLines=="number")return Le(t.file.numLines,"line");if(t.type==="image"){let r=Am(t.file?.originalSize);return r?`image (${r})`:"image"}if(t.type==="pdf"){let r=Am(t.file?.originalSize);return r?`PDF (${r})`:"PDF"}if(t.type==="parts"&&typeof t.file?.count=="number")return Le(t.file.count,"page");if(t.type==="file_unchanged")return"unchanged since last read";if(t.type==="create"&&typeof t.content=="string")return`created, ${Le(t.content.split(`
|
|
174
|
-
`).length,"line")}`;if(t.mode==="content")return Le(t.numLines??0,"line");if(t.mode==="count")return`${Le(t.numMatches??0,"match","matches")} (${Le(t.numFiles??0,"file")})`;if(t.mode==="files_with_matches")return Le(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":$e(t.stdout||t.stderr||"")||"no output":typeof t.code=="number"&&typeof t.codeText=="string"?`${t.code} ${t.codeText}`:typeof t.searchCount=="number"?Le(t.searchCount,"search","searches"):Array.isArray(t.matches)&&typeof t.total_deferred_tools=="number"?Le(t.matches.length,"tool"):Array.isArray(t.newTodos)?Le(t.newTodos.length,"todo"):typeof t.numFiles=="number"?Le(t.numFiles,"file"):$e(e)}function
|
|
174
|
+
`).length,"line")}`;if(t.mode==="content")return Le(t.numLines??0,"line");if(t.mode==="count")return`${Le(t.numMatches??0,"match","matches")} (${Le(t.numFiles??0,"file")})`;if(t.mode==="files_with_matches")return Le(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":$e(t.stdout||t.stderr||"")||"no output":typeof t.code=="number"&&typeof t.codeText=="string"?`${t.code} ${t.codeText}`:typeof t.searchCount=="number"?Le(t.searchCount,"search","searches"):Array.isArray(t.matches)&&typeof t.total_deferred_tools=="number"?Le(t.matches.length,"tool"):Array.isArray(t.newTodos)?Le(t.newTodos.length,"todo"):typeof t.numFiles=="number"?Le(t.numFiles,"file"):$e(e)}function qr(n){return!!n.isSidechain||!!n.isMeta}function kE(n){let e;try{e=lE(n,"r")}catch{return""}try{let r=65536;try{r=dE(n).size}catch{}let s=(c,d)=>{if(d<=0)return"";let u=Buffer.alloc(d),f=cE(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||
|
|
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()&&kt(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 xE(e)}readPreview(e){return kE(e)}searchText(e){if(!e||
|
|
176
|
+
`)){if(!c.trim())continue;let d;try{d=JSON.parse(c)}catch{continue}if(!d||qr(d)||d.type!=="user")continue;let u=d.message?.content,f="";typeof u=="string"?f=kt(u):Array.isArray(u)&&(f=u.map(Oc).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{uE(e)}}function xE(n){let e;try{e=fE(Tm)}catch{return!1}for(let t of e)if(t.endsWith(".json"))try{let r=JSON.parse(pE(Ur(Tm,t),"utf8"));if(r?.sessionId!==n)continue;return process.kill(r.pid,0),!0}catch{}return!1}var gE,Em,Om,wE,Le,Am,Tm,On,Fi=v(()=>{"use strict";Fr();Ac();Di();gE=Ur(Pc(),".claude","projects"),Em=n=>Ur(gE,mE(n));Om=[/\[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];wE=/<ide_[a-z_]+>[\s\S]*?<\/ide_[a-z_]+>/gi;Le=(n,e,t=e+"s")=>`${n} ${n===1?e:t}`,Am=n=>typeof n!="number"?"":n<1024?`${n}B`:n<1048576?`${Math.round(n/1024)}KB`:`${(n/1048576).toFixed(1)}MB`;Tm=Ur(Pc(),".claude","sessions");On=class extends St{displayName="Claude Mirror";detectsSelf(){return process.env.CLAUDECODE==="1"}detectsInstalled(){return hE(Ur(Pc(),".claude"))}sessionsDir(e){return Em(e)}listSessionFiles(e){return Bi(Em(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(qr(e))return{events:[]};let r=[];if(e.type==="user"){let s=e.message?.content;if(typeof s=="string"){let i=kt(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=Tc(i.content);r.push({type:"tool_result",id:i.tool_use_id??"",content:o,isError:!!i.is_error,digest:Cc(e.toolUseResult,o)})}else{let o=Oc(i)||ji(i);o&&r.push({type:"user",text:o})}return{events:r}}if(e.type==="attachment"&&e.attachment?.type==="queued_command"){let s=kt(Tc(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=>!bE(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()&&kt(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 xE(e)}readPreview(e){return kE(e)}searchText(e){if(!e||qr(e)||e.type!=="user"&&e.type!=="assistant")return"";let t=e.message?.content,r="";if(typeof t=="string")r=kt(t);else if(Array.isArray(t)){let s=t;r=e.type==="user"?s.map(Oc).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 EE,readdirSync as AE,openSync as TE,readSync as OE,closeSync as PE,existsSync as CE}from"fs";import{basename as RE,join as Rc,resolve as _E}from"path";import{homedir as Pm}from"os";function IE(n){let e=n.trimStart();return NE.some(t=>e.startsWith(t))}function Jr(n,e){return Array.isArray(n)?n.map(t=>typeof t?.text=="string"?e&&IE(t.text)?"":we(t.text):t?.type==="input_image"&&typeof t.image_url=="string"&&t.image_url.startsWith("data:")?``:"").filter(Boolean).join(`
|
|
178
178
|
`):""}function $E(n){return typeof n=="string"?we(n):Jr(n,!1)}function LE(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 ME(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 Rm(n,e){let t;try{t=TE(n,"r")}catch{return}try{let r=Buffer.alloc(e),s=OE(t,r,0,e,0);return{text:r.subarray(0,s).toString("utf8"),bytes:s}}finally{PE(t)}}function BE(n){let t=Rm(n,65536);if(t===void 0)return;let r=t.text.indexOf(`
|
|
179
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 NE,Cm,Pn,_c=v(()=>{"use strict";Fr();Di();NE=["<permissions instructions>","<apps_instructions>","<plugins_instructions>","<skills_instructions>","<recommended_plugins>","<environment_context>","<user_instructions>"];Cm=n=>{let e=_E(n);return process.platform==="win32"?e.toLowerCase():e},Pn=class extends St{constructor(t=Rc(Pm(),".codex","sessions")){super();this.root=t}displayName="Codex Mirror";#e=0;#t;#n=new Map;detectsSelf(){return!!process.env.CODEX_THREAD_ID}detectsInstalled(){return CE(Rc(Pm(),".codex"))}sessionsDir(t){return this.root}listSessionFiles(t){let r=Cm(t),s=[];for(let i of this.#r()){let o;try{let l=EE(i);if(!l.isFile())continue;o=l.mtimeMs}catch{continue}let a=this.#n.get(i);if(a===void 0){if(a=BE(i),a===void 0)continue;this.#n.set(i,a)}Cm(a)===r&&s.push({sessionId:RE(i,".jsonl"),file:i,mtime:o})}return s}#r(){let t=[],r=s=>{try{return AE(s).map(i=>Rc(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.#t,this.#t=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=Jr(i.content,!0).trim();a&&s.push({type:"user",text:a})}else if(i.role==="assistant"){let a=Jr(i.content,!1);a&&s.push({type:"assistant",text:a,thinking:"",tools:[],live:o()})}return{events:s}}if(i.type==="reasoning"){let a=Jr(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"?LE(i.input):ME(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=$E(i.output);return s.push({type:"tool_result",id:i.call_id??"",content:a,isError:!1,digest:$e(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(Rm(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"?"":Jr(t.payload.content,r==="user").replace(/\s+/g," ").trim()}}});import{realpathSync as DE}from"fs";import{createHash as jE}from"crypto";import{join as
|
|
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"?"":Jr(t.payload.content,r==="user").replace(/\s+/g," ").trim()}}});import{realpathSync as DE}from"fs";import{createHash as jE}from"crypto";import{join as qi,resolve as FE}from"path";import{homedir as qE}from"os";function xt(){let n=process.env.TYPEBULB_SERVERS_DIR;return n?qi(n,".."):qi(qE(),".typebulb")}function Ze(){_m||(_m=!0,console.error(`${xt()} not writable \u2014 continuing stateless: ports won't stick, caches stay cold, and typebulb logs/wait/send/stop may not see this run`))}function et(){return process.env.TYPEBULB_SERVERS_DIR||qi(xt(),"servers")}function Nm(n){let e=X(n),t=jE("sha1").update(e).digest("hex").slice(0,8),r=e.slice(e.lastIndexOf("/")+1).replace(/\.bulb\.md$/,"");return qi(xt(),"canvas",`${r}-${t}.png`)}function X(n){let e=FE(n),t=e;try{t=DE.native(e)}catch{}return(process.platform==="win32"?t.toLowerCase():t).replace(/\\/g,"/")}function Im(n,e){let t=X(n),r=X(e);return t.startsWith(r.endsWith("/")?r:r+"/")?!t.includes("/node_modules/"):!1}var _m,Et=v(()=>{"use strict";_m=!1});var Me,Ui=v(()=>{"use strict";Me="0.51.3"});import{spawn as $m}from"child_process";import{readdir as UE,readFile as Mm,writeFile as Bm,unlink as Nc,mkdir as JE}from"fs/promises";import{mkdirSync as Dm,writeFileSync as Ji,appendFileSync as KE,readFileSync as Ic}from"fs";import*as Ee from"path";import{fileURLToPath as HE}from"url";function $c(n){return Ee.join(et(),`${n}.json`)}function Hr(n){return Ee.join(et(),`${n}.log`)}function Lc(n){return Ee.join(et(),`${n}.wait.json`)}function jm(n){try{let e=JSON.parse(Ic(Lc(n),"utf8"));return e.cursors&&typeof e.cursors=="object"?e.cursors:{}}catch{return{}}}function Mc(n,e=""){let t=jm(n)[e];return typeof t=="number"&&Number.isFinite(t)&&t>=0?t:void 0}function Ki(n,e,t=""){try{Dm(et(),{recursive:!0});let r=jm(n);r[t]=e,Ji(Lc(n),JSON.stringify({cursors:r}))}catch{}}function Hi(n){let e=Hr(n);try{Dm(et(),{recursive:!0}),Ji(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(KE(e,l),s+=l.length,s>2*Lm){let c=Ic(e),d=c.subarray(Math.max(0,c.length-Lm));Ji(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 Fm(n){try{Ji(Hr(n),"")}catch{}}function We(n,e=0){try{let t=Ic(Hr(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 Bc(n){return`\u2500\u2500 run ${n} \u2500\u2500 ${new Date().toTimeString().slice(0,8)}`}function YE(n){let e=WE.exec(n);return e?Number(e[1]):void 0}function qm(n,e){let t=n.split(`
|
|
181
181
|
`),r=[];if(t.forEach((o,a)=>{let l=YE(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 Dc(n){try{return process.kill(n,0),!0}catch(e){return e.code==="EPERM"}}async function
|
|
182
|
+
`)}function Dc(n){try{return process.kill(n,0),!0}catch(e){return e.code==="EPERM"}}async function Um(n){try{await JE(et(),{recursive:!0}),await Bm($c(n.pid),JSON.stringify({version:Me,...n}))}catch{Ze()}}async function Jm(n,e){let t=$c(n);try{let r=JSON.parse(await Mm(t,"utf8"));if(r.denied===e)return;r.denied=e,await Bm(t,JSON.stringify(r))}catch{}}async function Kr(n){await Nc($c(n)).catch(()=>{}),await Nc(Hr(n)).catch(()=>{}),await Nc(Lc(n)).catch(()=>{})}async function Q(n){let e;try{e=await UE(et())}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 Mm(Ee.join(et(),s),"utf8"))}catch{await Kr(i);return}o&&typeof o.pid=="number"&&Dc(o.pid)?t.push(o):await Kr(i)})),(n?t.filter(s=>s.agent==null&&Im(s.file,n)):t).sort((s,i)=>s.startedAt-i.startedAt)}async function jc(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 Wt(n){try{process.kill(n,"SIGTERM")}catch{}await Kr(n)}function Cn(n,e){let t=X(e);return n.filter(r=>r.agent==null&&r.pid!==process.pid&&X(r.file)===t)}async function Fc(n){let e=Cn(await Q(),n);for(let t of e)await Wt(t.pid);return e}function zE(n,e,t){(process.platform==="win32"?$m("cmd",["/c","start","","/b",n,...e],{cwd:t,stdio:"ignore",windowsHide:!0}):$m(n,e,{cwd:t,detached:!0,stdio:"ignore"})).unref()}function Km(){return Ee.join(Ee.dirname(HE(import.meta.url)),"index.js")}function GE(n,e={}){return{command:process.execPath,args:[Km(),...e.trust?["--trust"]:[],...e.batch?["--batch",e.batch]:[],...e.mode?["--mode",e.mode]:[],n,...e.open===!1?["--no-open"]:[]]}}function XE(n){return{command:process.execPath,args:[Km(),`agent:${n}`,"--no-open"]}}async function Hm(n,e,t,r){let s=await n();if(s)return s;zE(e.command,e.args,t);let i=Date.now()+2e4;for(;Date.now()<i;){await VE(150);let o=await n();if(o)return o}throw new Error(`Launched ${r} but it did not register within 20s.`)}async function Wi(n,e={}){let t=e.cwd??process.cwd(),r=Ee.resolve(t,n),[s]=await Fc(r),i={...e,batch:e.batch??s?.batch,mode:e.mode??s?.mode};return Hm(async()=>Cn(await Q(),r)[0],GE(n,i),t,Ee.basename(n))}async function Wm(n,e=process.cwd()){return Hm(()=>jc(e,n),XE(n),e,`the ${n} mirror`)}var Lm,WE,VE,Be=v(()=>{"use strict";Et();Ui();Lm=1e6;WE=/^── run (\d+) ── /;VE=n=>new Promise(e=>setTimeout(e,n))});function Rn(n){return{...ef(n),server:n.files.get("server.ts")??""}}function Yi(n){return!!n.server&&!n.code}var Wr=v(()=>{"use strict";ne();ne()});function Vi(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 qc(n){return An(Vi(n)??"bulb")||"bulb"}var Uc=v(()=>{"use strict";ne()});import{transform as QE}from"sucrase";function Jc(n,e={}){let t=e.serverOnly?["typescript"]:["typescript","jsx"];try{let{code:r}=QE(n,{transforms:t,jsxRuntime:"automatic",jsxImportSource:e.jsxImportSource||"react",production:!0});return{code:r}}catch(r){return{code:"",error:String(r)}}}var Ym=v(()=>{});function Kc(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
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==="/"&&ZE.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]!==`
|
|
@@ -1435,9 +1435,9 @@ ${r}
|
|
|
1435
1435
|
</data>`)}return t.push(`
|
|
1436
1436
|
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(`
|
|
1437
1437
|
|
|
1438
|
-
`)}function ss(n){try{return JSON.parse(n)}catch{return null}}function Rg(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
|
|
1438
|
+
`)}function ss(n){try{return JSON.parse(n)}catch{return null}}function Rg(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 UA(n){let e=Rg(n,t=>t.replace(/,(\s*[}\]])/g,"$1"));return e!==n?e:null}function JA(n){let e=Rg(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 KA(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 HA(n){let e=null,t=0;for(;t<n.length;){let r=n[t];if(r==="{"||r==="["){let s=KA(n,t);if(s!==-1){let i=n.slice(t,s+1),o=ss(i);o!==null&&(e={parsed:o,json:i}),t=s+1;continue}}t++}return e}function hu(n){let e=[],t=n.trim();t.startsWith("```")&&(t=t.replace(/^```(?:json)?\s*\n?/,"").replace(/\n?```\s*$/,""),e.push("markdown fences"));let r=ss(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=ss(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=ss(t),r!==null))return{parsed:r,json:t,fixesApplied:e}}for(let[o,a]of qA){let l=a(t);if(l!==null){let c=ss(l);if(c!==null)return{parsed:c,json:l,fixesApplied:[...e,o]}}}let i=HA(n);return i!==null?{...i,fixesApplied:[...e,"extracted last JSON value"]}:{parsed:null,json:t,fixesApplied:e}}function mu(n){try{let e={i:n.insight,d:n.data},t=JSON.stringify(e),r=jA(BA(t),{level:9}),s=YA(r),i=`${_g}:${s}`;return i.length>WA?"":"#"+fu+i}catch{return""}}function gu(n){try{let e=n.startsWith("#")?n.slice(1):n;if(!e.startsWith(fu))return null;let t=e.slice(fu.length),r=t.indexOf(":");if(r===-1||t.slice(0,r)!==_g)return null;let s=VA(t.slice(r+1)),i=JSON.parse(DA(FA(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 YA(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 VA(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 qA,fu,_g,WA,Ng=v(()=>{qA=[["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",UA],["arithmetic constants",JA]];fu="tb=",_g="1",WA=6e4});var tn=v(()=>{Ag();Mn();uu();Cg();Ng();mo();ou();au();su();iu();lu()});import{readFileSync as Ig,existsSync as zA}from"fs";import*as Ye from"path";function $g(n){return[...n?[`.env.${n}.local`,`.env.${n}`]:[],".env.local",".env"]}function Te(n,e=process.cwd()){let t={},r=[];for(let s of $g(n)){let i;try{i=Ig(Ye.resolve(e,s),"utf-8")}catch{continue}r.push(s);for(let[o,a]of Lg(i))process.env[o]===void 0&&(process.env[o]=a,t[o]=s)}return{mode:n,sources:t,loaded:r}}function*Lg(n){for(let e of n.split(`
|
|
1439
1439
|
`)){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 vo(n,e=process.cwd()){for(let t of $g()){let r;try{r=Ig(Ye.resolve(e,t),"utf-8")}catch{continue}for(let[s,i]of Lg(r))if(s===n)return i}return process.env[n]}function GA(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 Mg(){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=Ye.dirname(e),l=`(mode: ${s??"none"})`,c=t?GA(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=Ye.resolve(a)!==Ye.resolve(o);if(u)for(let p of[".env.local",".env"])zA(Ye.join(a,p))&&console.log(`env: ${Ye.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 st=v(()=>{"use strict"});function Fn(n){return(n.includes("://")?n:`http://${n}`).replace(/\/+$/,"")}function yu(){return os}async function it(){let[n,e]=await Promise.all([Dg(),nT()]);return tT([...rT(e),...n],process.env.TB_AI_PROVIDER,process.env.TB_AI_MODEL)}function tT(n,e,t){return!e||!t?n:n.map(r=>r.provider===e&&r.name===t?{...r,default:!0}:r)}async function Bg(){let n;try{n=await fetch(XA,{signal:AbortSignal.timeout(ZA)})}catch(e){return os=`catalog fetch failed: ${e?.message??e}`,null}if(!n.ok)return os=`catalog fetch failed: HTTP ${n.status}`,null;try{return await n.json()}catch(e){return os=`catalog returned an unreadable body: ${e?.message??e}`,null}}async function nT(){if(is&&Date.now()-is.fetchedAt<=QA)return is.models;let n=await Bg()??await Bg();return n?(is={models:n,fetchedAt:Date.now()},os=null,n):is?.models??[]}async function Dg(){if(So&&Date.now()-So.fetchedAt<=eT)return So.models;let n=Fn(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 So={models:e,fetchedAt:Date.now()},e}function rT(n){let e=new Set(Object.entries(jn).filter(([,t])=>!!process.env[t]).map(([t])=>t));return n.filter(t=>e.has(t.provider))}function bu(){return Object.values(jn).some(n=>!!process.env[n])}async function ko(){return bu()||process.env.TB_AI_BASE_URL||(await Dg()).length>0?"own":"none"}function jg(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(`
|
|
1440
|
-
`)}var jn,XA,QA,ZA,eT,is,So,os,nn=v(()=>{"use strict";jn={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"};XA="https://api.typebulb.com/api/models",QA=1440*60*1e3,ZA=5e3,eT=60*1e3,is=null,So=null,os=null});function ot(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=Qt(t)}catch{return`Unknown provider '${t}'.`}if(t==="ollama")return{apiKey:"",baseUrl:`${Fn(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=jn[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 ${Mg()}.`}function _t(n,e){let t=[...e.system?[{role:"system",content:e.system}]:[],...e.messages.map(r=>({role:r.role,content:r.content}))];return cu(n,{messages:t,stream:!0,effort:Eg(e.effort),webSearch:e.webSearch,signal:e.signal})}var xo=v(()=>{"use strict";tn();tn();st();nn()});import*as Un from"fs/promises";import*as at from"path";function Eo(n,e,t=e){let r=at.resolve(e,n),s=at.normalize(t),i=at.normalize(r);if(i!==s&&!i.startsWith(s+at.sep))throw new Error("Path traversal detected - access denied");return r}async function as(n,e,t){return Un.readFile(Eo(n,e,t))}async function Ao(n,e,t,r){let s=Eo(n,t,r);await Un.mkdir(at.dirname(s),{recursive:!0}),await Un.writeFile(s,typeof e=="string"?e:Buffer.from(e))}var wu=v(()=>{"use strict"});async function Fg(n){let e=ot(n.provider,n.model);if(typeof e=="string")throw new Error(e);let t=await _t(e,n);if(!t.ok){let r=await Dn(t,e.protocol);throw new Error(r.message)}return{response:t,protocol:e.protocol}}async function sT(n){let{response:e,protocol:t}=await Fg(n);return{text:await Zt(e,t)}}async function*iT(n){let{response:e,protocol:t}=await Fg(n);yield*en(e,t)}function Ug(n,e=process.cwd()){let t=Object.assign(sT,{stream:iT}),r={read:async s=>{let i=await as(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 as(s,n,e)),write:async(s,i)=>(await Ao(s,i,n,e),!0)};globalThis.tb=Object.freeze({log:(...s)=>{console.log(...s)},ai:t,fs:r,dir:n,models:()=>it(),aiAccess:ko,mode:Tn.local})}var qg=v(()=>{"use strict";tn();ne();xo();nn();wu()});import*as Ue from"fs/promises";import*as ie from"path";import{pathToFileURL as oT}from"url";async function Jg(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 qn(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 Jn(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:ir(r.config),warnings:Zd(e),starts:t.starts}}function vu(n){let e=ie.basename(n).replace(/\.bulb\.md$/i,"");return ie.join(ie.dirname(n),".typebulb",`${e}.server.mjs`)}async function ls(n,e,t,r,s){let i=Jc(n,{serverOnly:!0});if(i.error)throw new Error(`Server compilation error: ${i.error}`);let o=i.code;t&&(o=await Vd(o,t));let a=ie.join(ie.dirname(e),".typebulb");await Ue.mkdir(a,{recursive:!0});let l=po(o);l.length>0&&await fo(l,a,r);let c=vu(e);return await Ue.writeFile(c,o,"utf-8"),Ug(Nt(e,s)),await import(`${oT(c).href}?t=${Date.now()}`)}async function Su(n,e,t,r,s){let{bulb:i,config:o,starts:a}=await qe(n),l=Ii(i.data);Qm(i.code,o.dependencies??{});let c=Jc(i.code,{jsxImportSource:o.ts?.jsxImportSource});c.error&&console.error("Compilation error:",c.error);let{importMap:d}=await so.buildImportMap(c.code,o.dependencies??{},r?new Set([r.name]):void 0);r&&(d.imports[r.name]=r.entryUrl);let u=Sg({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 ls(i.server,n,r,o.dependencies,s)),{html:u,bulb:i,serverExports:f}}var It,Ve=v(()=>{"use strict";Wr();Ym();Zm();nu();kg();ru();_s();qg();It=(n,e)=>ie.join(Nt(n,e),"assets")});import{readdirSync as Hg,readFileSync as aT,statSync as Wg}from"fs";import{join as To,basename as lT}from"path";function Yg(n,e,t){if(e>8)return t;let r;try{r=Hg(n,{withFileTypes:!0})}catch{return t}for(let s of r)if(s.isDirectory()){if(s.name.startsWith(".")||s.name==="node_modules")continue;Yg(To(n,s.name),e+1,t)}else s.isFile()&&s.name.endsWith(".bulb.md")&&t.push(To(n,s.name));return t}function ku(n){let e=To(Nt(n),"batches"),t;try{t=Hg(e,{withFileTypes:!0})}catch{return[]}return t.filter(r=>r.isDirectory()).map(r=>{let s=0;try{s=Wg(To(e,r.name)).mtimeMs}catch{}return{name:r.name,mtime:s}}).sort((r,s)=>s.mtime-r.mtime).map(r=>r.name)}function cT(n,e){let t,r=!1;try{let s=aT(n,"utf8");t=Vi(s.slice(0,1024));let i=ue(s);r=!!i&&Yi(Rn(i))}catch{}return{mtime:e,name:t??lT(n).replace(/\.bulb\.md$/,""),serverOnly:r}}function Oo(n){let e=new Map,t=Yg(n,0,[]).map(r=>{let s=0;try{s=Wg(r).mtimeMs}catch{}let i=s?Kg.get(r):void 0,o=i?.mtime===s?i:cT(r,s);return s&&e.set(r,o),{path:r,...o}});return Kg=e,t}var Kg,Vg=v(()=>{"use strict";ne();Wr();qc();Ve();Kg=new Map});import*as Xg from"net";import{mkdir as uT,readFile as dT,writeFile as Qg}from"fs/promises";import{existsSync as fT}from"fs";import{join as Zg}from"path";function ny(){return Zg(xt(),"blocks")}function xu(n){return Zg(ny(),`${n}.json`)}function Co(n){return new Promise(e=>{let t=Xg.createServer();t.once("error",()=>e(!1)),t.listen(n,"127.0.0.1",()=>t.close(()=>e(!0)))})}async function mT(n){for(let e=n;e<65535;e++)if(await Co(e))return e;throw new Error(`No free port found above ${n}`)}async function Eu(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 Ro(n){try{let e=JSON.parse(await dT(xu(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 Qg(xu(n),JSON.stringify(e,null,2)),!0}catch{return Ze(),!1}}async function gT(n){let e=X(n);try{await uT(ny(),{recursive:!0})}catch{return}let t=[];for(let o=0;o<ty;o++)t.push(ey+o*rn);let r=await Promise.all(t.map(async o=>({base:o,block:await Ro(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 Qg(xu(o),JSON.stringify(s,null,2),{flag:"wx"}),o}catch(l){if((await Ro(o))?.cwd===e)return o;l.code!=="EEXIST"&&Ze();continue}if(!fT(a.cwd))return await _o(o,s)?o:void 0}let i=r.filter(o=>!!o.block).sort((o,a)=>zg(o.block)-zg(a.block))[0];if(i)return await _o(i.base,s)?i.base:void 0}function zg(n){return Object.values(n.slots).reduce((e,t)=>Math.max(e,t.usedAt??0),0)}async function yT(n,e){let t=await Ro(n)??{cwd:"",slots:{},mirrors:{}};if(e.kind==="mirror"){let i=t.mirrors[e.agent];if(i!==void 0)return i;let o=Gg(t),a=o.has(0)?hT:0;for(;a>Po&&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=Gg(t);for(s=Po;s<rn&&i.has(s);)s++;if(s>=rn){let o=Object.entries(t.slots).sort((a,l)=>(a[1].usedAt??0)-(l[1].usedAt??0))[0];s=o?o[1].offset:Po,o&&delete t.slots[o[0]]}}return t.slots[r]={offset:s,usedAt:Date.now()},await _o(n,t),s}function Gg(n){return new Set([...Object.values(n.mirrors),...Object.values(n.slots).map(e=>e.offset)])}async function bT(n,e){let t=await gT(e);return t===void 0?void 0:t+await yT(t,n)}async function cs(n){let e=X(n);for(let t=0;t<ty;t++){let r=await Ro(ey+t*rn);if(r?.cwd===e)return s=>r.slots[X(s)]?.usedAt??0}return()=>0}async function No(n){if(n.explicit!==void 0)return await Co(n.explicit)||await Eu(n.explicit),{port:n.explicit};let e=await bT(n.target,n.cwd);if(e!==void 0){let r=e-e%rn;for(let s=0;s<4;s++){if(await Co(e))return{port:e};await new Promise(i=>setTimeout(i,150))}for(let s=Po;s<rn;s++){let i=r+s;if(i!==e&&await Co(i))return{port:i,note:`(slot ${e} was busy)`}}}return{port:await mT(pT),note:e===void 0?"(no port block available)":"(this project's block was full)"}}var ey,rn,ty,pT,Po,hT,Kn=v(()=>{"use strict";Et();Be();ey=20100,rn=100,ty=19,pT=23e3,Po=1,hT=rn-1});function Hn(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 Io=v(()=>{"use strict"});import{readFile as wT}from"fs/promises";async function Au(n){try{let e=ue(await wT(n,"utf-8"));return e?Hn(Rn(e)):void 0}catch{return}}var ry=v(()=>{"use strict";Wr();Io()});function Tu(n){let e=ue(n);if(!e)return n;let t=e.files.get("code.tsx");if(!t)return n;let r=Xm(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=zd(c);u&&(l[u]=d)}return l.config=JSON.stringify(i,null,2),rf(l)}var sy=v(()=>{"use strict";ne();zi()});import{spawn as iy}from"child_process";import{basename as vT}from"path";function ST(){return process.env.TYPEBULB_EDITOR||"code"}function xT(n,e,t){return t==null?[e]:kT.test(vT(n))?["-g",`${e}:${t}`]:[`+${t}`,e]}function ET(n,e){let t=ST();return{command:t,args:xT(t,n,e)}}function Ou(n,e){let{command:t,args:r}=ET(n,e),s=process.platform==="win32"?iy("cmd.exe",["/d","/s","/c",t,...r],{detached:!0,stdio:"ignore",windowsHide:!0}):iy(t,r,{detached:!0,stdio:"ignore"});s.on("error",i=>console.error("[typebulb] editor launch failed:",i?.message??i)),s.unref()}var kT,oy=v(()=>{"use strict";kT=/^(code|code-insiders|codium|vscodium|cursor|windsurf)(\.cmd|\.exe)?$/i});import{readFileSync as AT,writeFileSync as TT,mkdirSync as OT,statSync as PT}from"fs";import{join as CT}from"path";function Pu(){return CT(xt(),"trust.json")}function Cu(){try{let n=Pu(),e=PT(n).mtimeMs;if(us?.mtime!==e){let t=JSON.parse(AT(n,"utf8"));us={mtime:e,set:new Set(Array.isArray(t)?t:[])}}return us.set}catch{return us=void 0,new Set}}function RT(n){try{OT(xt(),{recursive:!0}),TT(Pu(),JSON.stringify([...n])),us=void 0}catch(e){throw new Error(`can't write ${Pu()} \u2014 trust not remembered (unwritable home; sandboxed shell?): ${e.message}`)}}function sn(n){return Cu().has(X(n))}function Wn(n,e){let t=new Set(Cu()),r=X(n);(e?t.has(r):!t.has(r))||(e?t.add(r):t.delete(r),RT(t))}function Ru(){return[...Cu()]}var us,ds=v(()=>{"use strict";Et()});import{readFileSync as yM,existsSync as _T}from"fs";import*as Yn from"path";import{fileURLToPath as NT}from"url";function IT(){let n=Yn.dirname(NT(import.meta.url));for(;!_T(Yn.join(n,"package.json"));){let e=Yn.dirname(n);if(e===n)break;n=e}return n}function fs(){return Yn.join(IT(),"SKILL.md")}var _u=v(()=>{"use strict"});import*as Se from"fs/promises";import*as Oe from"path";import{createHash as $T}from"crypto";async function Iu(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 Vn(n){try{return JSON.parse(n).error||n}catch{return n}}async function Lu(n,e){try{let t=await fetch(ps(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}): ${Vn(await t.text())}`}}catch(t){return{error:t instanceof Error?t.message:String(t)}}}function Mu(n,e){Te(e);let t=process.env.TYPEBULB_ORIGIN||LT;try{return Mo(n,process.cwd(),t)}catch(r){console.error(r instanceof Error?r.message:String(r)),process.exit(1)}}function Mo(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}
|
|
1440
|
+
`)}var jn,XA,QA,ZA,eT,is,So,os,nn=v(()=>{"use strict";jn={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"};XA="https://api.typebulb.com/api/models",QA=1440*60*1e3,ZA=5e3,eT=60*1e3,is=null,So=null,os=null});function ot(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=Qt(t)}catch{return`Unknown provider '${t}'.`}if(t==="ollama")return{apiKey:"",baseUrl:`${Fn(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=jn[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 ${Mg()}.`}function _t(n,e){let t=[...e.system?[{role:"system",content:e.system}]:[],...e.messages.map(r=>({role:r.role,content:r.content}))];return cu(n,{messages:t,stream:!0,effort:Eg(e.effort),webSearch:e.webSearch,signal:e.signal})}var xo=v(()=>{"use strict";tn();tn();st();nn()});import*as qn from"fs/promises";import*as at from"path";function Eo(n,e,t=e){let r=at.resolve(e,n),s=at.normalize(t),i=at.normalize(r);if(i!==s&&!i.startsWith(s+at.sep))throw new Error("Path traversal detected - access denied");return r}async function as(n,e,t){return qn.readFile(Eo(n,e,t))}async function Ao(n,e,t,r){let s=Eo(n,t,r);await qn.mkdir(at.dirname(s),{recursive:!0}),await qn.writeFile(s,typeof e=="string"?e:Buffer.from(e))}var wu=v(()=>{"use strict"});async function Fg(n){let e=ot(n.provider,n.model);if(typeof e=="string")throw new Error(e);let t=await _t(e,n);if(!t.ok){let r=await Dn(t,e.protocol);throw new Error(r.message)}return{response:t,protocol:e.protocol}}async function sT(n){let{response:e,protocol:t}=await Fg(n);return{text:await Zt(e,t)}}async function*iT(n){let{response:e,protocol:t}=await Fg(n);yield*en(e,t)}function qg(n,e=process.cwd()){let t=Object.assign(sT,{stream:iT}),r={read:async s=>{let i=await as(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 as(s,n,e)),write:async(s,i)=>(await Ao(s,i,n,e),!0)};globalThis.tb=Object.freeze({log:(...s)=>{console.log(...s)},ai:t,fs:r,dir:n,models:()=>it(),aiAccess:ko,mode:Tn.local})}var Ug=v(()=>{"use strict";tn();ne();xo();nn();wu()});import*as qe from"fs/promises";import*as ie from"path";import{pathToFileURL as oT}from"url";async function Jg(n){let t=(await qe.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 Un(n,e){let t=Nt(n,e);await qe.mkdir(t,{recursive:!0});let r=new Date;await qe.utimes(t,r,r).catch(()=>{})}function Jn(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 Ue(n){let e=await qe.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:ir(r.config),warnings:Zd(e),starts:t.starts}}function vu(n){let e=ie.basename(n).replace(/\.bulb\.md$/i,"");return ie.join(ie.dirname(n),".typebulb",`${e}.server.mjs`)}async function ls(n,e,t,r,s){let i=Jc(n,{serverOnly:!0});if(i.error)throw new Error(`Server compilation error: ${i.error}`);let o=i.code;t&&(o=await Vd(o,t));let a=ie.join(ie.dirname(e),".typebulb");await qe.mkdir(a,{recursive:!0});let l=po(o);l.length>0&&await fo(l,a,r);let c=vu(e);return await qe.writeFile(c,o,"utf-8"),qg(Nt(e,s)),await import(`${oT(c).href}?t=${Date.now()}`)}async function Su(n,e,t,r,s){let{bulb:i,config:o,starts:a}=await Ue(n),l=Ii(i.data);Qm(i.code,o.dependencies??{});let c=Jc(i.code,{jsxImportSource:o.ts?.jsxImportSource});c.error&&console.error("Compilation error:",c.error);let{importMap:d}=await so.buildImportMap(c.code,o.dependencies??{},r?new Set([r.name]):void 0);r&&(d.imports[r.name]=r.entryUrl);let u=Sg({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 ls(i.server,n,r,o.dependencies,s)),{html:u,bulb:i,serverExports:f}}var It,Ve=v(()=>{"use strict";Wr();Ym();Zm();nu();kg();ru();_s();Ug();It=(n,e)=>ie.join(Nt(n,e),"assets")});import{readdirSync as Hg,readFileSync as aT,statSync as Wg}from"fs";import{join as To,basename as lT}from"path";function Yg(n,e,t){if(e>8)return t;let r;try{r=Hg(n,{withFileTypes:!0})}catch{return t}for(let s of r)if(s.isDirectory()){if(s.name.startsWith(".")||s.name==="node_modules")continue;Yg(To(n,s.name),e+1,t)}else s.isFile()&&s.name.endsWith(".bulb.md")&&t.push(To(n,s.name));return t}function ku(n){let e=To(Nt(n),"batches"),t;try{t=Hg(e,{withFileTypes:!0})}catch{return[]}return t.filter(r=>r.isDirectory()).map(r=>{let s=0;try{s=Wg(To(e,r.name)).mtimeMs}catch{}return{name:r.name,mtime:s}}).sort((r,s)=>s.mtime-r.mtime).map(r=>r.name)}function cT(n,e){let t,r=!1;try{let s=aT(n,"utf8");t=Vi(s.slice(0,1024));let i=ue(s);r=!!i&&Yi(Rn(i))}catch{}return{mtime:e,name:t??lT(n).replace(/\.bulb\.md$/,""),serverOnly:r}}function Oo(n){let e=new Map,t=Yg(n,0,[]).map(r=>{let s=0;try{s=Wg(r).mtimeMs}catch{}let i=s?Kg.get(r):void 0,o=i?.mtime===s?i:cT(r,s);return s&&e.set(r,o),{path:r,...o}});return Kg=e,t}var Kg,Vg=v(()=>{"use strict";ne();Wr();Uc();Ve();Kg=new Map});import*as Xg from"net";import{mkdir as uT,readFile as dT,writeFile as Qg}from"fs/promises";import{existsSync as fT}from"fs";import{join as Zg}from"path";function ny(){return Zg(xt(),"blocks")}function xu(n){return Zg(ny(),`${n}.json`)}function Co(n){return new Promise(e=>{let t=Xg.createServer();t.once("error",()=>e(!1)),t.listen(n,"127.0.0.1",()=>t.close(()=>e(!0)))})}async function mT(n){for(let e=n;e<65535;e++)if(await Co(e))return e;throw new Error(`No free port found above ${n}`)}async function Eu(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 Ro(n){try{let e=JSON.parse(await dT(xu(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 Qg(xu(n),JSON.stringify(e,null,2)),!0}catch{return Ze(),!1}}async function gT(n){let e=X(n);try{await uT(ny(),{recursive:!0})}catch{return}let t=[];for(let o=0;o<ty;o++)t.push(ey+o*rn);let r=await Promise.all(t.map(async o=>({base:o,block:await Ro(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 Qg(xu(o),JSON.stringify(s,null,2),{flag:"wx"}),o}catch(l){if((await Ro(o))?.cwd===e)return o;l.code!=="EEXIST"&&Ze();continue}if(!fT(a.cwd))return await _o(o,s)?o:void 0}let i=r.filter(o=>!!o.block).sort((o,a)=>zg(o.block)-zg(a.block))[0];if(i)return await _o(i.base,s)?i.base:void 0}function zg(n){return Object.values(n.slots).reduce((e,t)=>Math.max(e,t.usedAt??0),0)}async function yT(n,e){let t=await Ro(n)??{cwd:"",slots:{},mirrors:{}};if(e.kind==="mirror"){let i=t.mirrors[e.agent];if(i!==void 0)return i;let o=Gg(t),a=o.has(0)?hT:0;for(;a>Po&&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=Gg(t);for(s=Po;s<rn&&i.has(s);)s++;if(s>=rn){let o=Object.entries(t.slots).sort((a,l)=>(a[1].usedAt??0)-(l[1].usedAt??0))[0];s=o?o[1].offset:Po,o&&delete t.slots[o[0]]}}return t.slots[r]={offset:s,usedAt:Date.now()},await _o(n,t),s}function Gg(n){return new Set([...Object.values(n.mirrors),...Object.values(n.slots).map(e=>e.offset)])}async function bT(n,e){let t=await gT(e);return t===void 0?void 0:t+await yT(t,n)}async function cs(n){let e=X(n);for(let t=0;t<ty;t++){let r=await Ro(ey+t*rn);if(r?.cwd===e)return s=>r.slots[X(s)]?.usedAt??0}return()=>0}async function No(n){if(n.explicit!==void 0)return await Co(n.explicit)||await Eu(n.explicit),{port:n.explicit};let e=await bT(n.target,n.cwd);if(e!==void 0){let r=e-e%rn;for(let s=0;s<4;s++){if(await Co(e))return{port:e};await new Promise(i=>setTimeout(i,150))}for(let s=Po;s<rn;s++){let i=r+s;if(i!==e&&await Co(i))return{port:i,note:`(slot ${e} was busy)`}}}return{port:await mT(pT),note:e===void 0?"(no port block available)":"(this project's block was full)"}}var ey,rn,ty,pT,Po,hT,Kn=v(()=>{"use strict";Et();Be();ey=20100,rn=100,ty=19,pT=23e3,Po=1,hT=rn-1});function Hn(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 Io=v(()=>{"use strict"});import{readFile as wT}from"fs/promises";async function Au(n){try{let e=ue(await wT(n,"utf-8"));return e?Hn(Rn(e)):void 0}catch{return}}var ry=v(()=>{"use strict";Wr();Io()});function Tu(n){let e=ue(n);if(!e)return n;let t=e.files.get("code.tsx");if(!t)return n;let r=Xm(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=zd(c);u&&(l[u]=d)}return l.config=JSON.stringify(i,null,2),rf(l)}var sy=v(()=>{"use strict";ne();zi()});import{spawn as iy}from"child_process";import{basename as vT}from"path";function ST(){return process.env.TYPEBULB_EDITOR||"code"}function xT(n,e,t){return t==null?[e]:kT.test(vT(n))?["-g",`${e}:${t}`]:[`+${t}`,e]}function ET(n,e){let t=ST();return{command:t,args:xT(t,n,e)}}function Ou(n,e){let{command:t,args:r}=ET(n,e),s=process.platform==="win32"?iy("cmd.exe",["/d","/s","/c",t,...r],{detached:!0,stdio:"ignore",windowsHide:!0}):iy(t,r,{detached:!0,stdio:"ignore"});s.on("error",i=>console.error("[typebulb] editor launch failed:",i?.message??i)),s.unref()}var kT,oy=v(()=>{"use strict";kT=/^(code|code-insiders|codium|vscodium|cursor|windsurf)(\.cmd|\.exe)?$/i});import{readFileSync as AT,writeFileSync as TT,mkdirSync as OT,statSync as PT}from"fs";import{join as CT}from"path";function Pu(){return CT(xt(),"trust.json")}function Cu(){try{let n=Pu(),e=PT(n).mtimeMs;if(us?.mtime!==e){let t=JSON.parse(AT(n,"utf8"));us={mtime:e,set:new Set(Array.isArray(t)?t:[])}}return us.set}catch{return us=void 0,new Set}}function RT(n){try{OT(xt(),{recursive:!0}),TT(Pu(),JSON.stringify([...n])),us=void 0}catch(e){throw new Error(`can't write ${Pu()} \u2014 trust not remembered (unwritable home; sandboxed shell?): ${e.message}`)}}function sn(n){return Cu().has(X(n))}function Wn(n,e){let t=new Set(Cu()),r=X(n);(e?t.has(r):!t.has(r))||(e?t.add(r):t.delete(r),RT(t))}function Ru(){return[...Cu()]}var us,ds=v(()=>{"use strict";Et()});import{readFileSync as yM,existsSync as _T}from"fs";import*as Yn from"path";import{fileURLToPath as NT}from"url";function IT(){let n=Yn.dirname(NT(import.meta.url));for(;!_T(Yn.join(n,"package.json"));){let e=Yn.dirname(n);if(e===n)break;n=e}return n}function fs(){return Yn.join(IT(),"SKILL.md")}var _u=v(()=>{"use strict"});import*as Se from"fs/promises";import*as Oe from"path";import{createHash as $T}from"crypto";async function Iu(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 Vn(n){try{return JSON.parse(n).error||n}catch{return n}}async function Lu(n,e){try{let t=await fetch(ps(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}): ${Vn(await t.text())}`}}catch(t){return{error:t instanceof Error?t.message:String(t)}}}function Mu(n,e){Te(e);let t=process.env.TYPEBULB_ORIGIN||LT;try{return Mo(n,process.cwd(),t)}catch(r){console.error(r instanceof Error?r.message:String(r)),process.exit(1)}}function Mo(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}
|
|
1441
1441
|
Expected <origin>/u/<user>/<slug>`);let l=a[1],c=a[2].replace(/(\.bulb)?\.md$/,"");return{origin:i.origin,userSlug:l,slug:c,dest:Oe.join(e,$o(l,c))}}let r=Oe.resolve(e,n),s=Jn(r);if(!s)throw new Error(`Not a conventional bulb path: ${n}
|
|
1442
1442
|
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 MT(n,e){let t=await Lu(n,e);if("error"in t||!t.entries.length)return{kind:"none"};let r=t.entries,s=It(n.dest),i=[],o=[],a=0;for(let l of r){let c=await Se.readFile(Oe.join(s,...l.path.split("/"))).catch(()=>{});c===void 0?i.push(l.path):$u(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 BT(n,e,t){let r=It(n.dest),s=[],i=0;return await Iu(e.toGet,4,async o=>{try{let a=await fetch(`${ps(n)}/${Lo(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=Oe.join(r,...o.split("/"));await Se.mkdir(Oe.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 Bo(n,e={}){let t=await fetch(Nu(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&&DT(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 MT(n,e);if(a.kind==="conflict")return{kind:"asset-conflict",dest:n.dest,paths:a.paths};if(!o){await Se.mkdir(Oe.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 BT(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 DT(n,e){let t=i=>i.replace(/\r\n/g,`
|
|
1443
1443
|
`),r=ue(t(n)),s=ue(t(e));return!r||!s?t(n)===t(e):r.frontmatter.name===s.frontmatter.name&&_e.every(i=>(r.files.get(le[i].path)||"")===(s.files.get(le[i].path)||""))}async function ly(n,e){n||(console.error("Usage: typebulb pull <bulb url | typebulbs/u/<user>/<slug>.bulb.md>"),process.exit(1));let t=Mu(n,e.mode),r=`${t.origin}/u/${t.userSlug}/${t.slug}`,s;try{s=await Bo(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=Oe.relative(process.cwd(),t.dest)||t.dest;switch(s.kind){case"written":console.log(`pulled ${r} \u2192 ${i}${s.created?"":" (overwritten)"}`),ay(s.assets);return;case"up-to-date":console.log(`up to date: ${i}`),ay(s.assets);return;case"conflict":console.error(`Refusing to overwrite ${i} \u2014 it differs from ${r}
|
|
@@ -1449,7 +1449,7 @@ Re-run with --force to overwrite the local file.`),process.exitCode=1;return;cas
|
|
|
1449
1449
|
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 ay(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 LT,$o,Nu,Lo,ps,$u,Do=v(()=>{"use strict";st();ne();Ve();LT="https://typebulb.com",$o=(n,e)=>Oe.join("typebulbs","u",n,`${e}.bulb.md`),Nu=n=>`${n.origin}/u/${encodeURIComponent(n.userSlug)}/${encodeURIComponent(n.slug)}.md`,Lo=n=>n.split("/").map(encodeURIComponent).join("/"),ps=n=>`${n.origin}/u/${encodeURIComponent(n.userSlug)}/${encodeURIComponent(n.slug)}/assets`;$u=n=>$T("md5").update(n).digest("hex")});import*as ze from"fs/promises";import*as hs from"path";async function cy(n,e=""){let t=await ze.readdir(n,{withFileTypes:!0}).catch(()=>[]),r=[];for(let s of t)s.isDirectory()?r.push(...await cy(hs.join(n,s.name),`${e}${s.name}/`)):s.isFile()&&r.push(e+s.name);return r}async function jT(n,e){let t=e.timeoutMs??3e4,r=ps(n),s={Authorization:`Bearer ${e.token}`},i=It(n.dest);if(!await ze.stat(i).then(m=>m.isDirectory()).catch(()=>!1))return{kind:"skipped"};let o=await cy(i),a=await Lu(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 Iu(o,4,async m=>{let h=await ze.readFile(hs.join(i,...m.split("/")));if(c.get(m)===$u(h)){p++;return}let b=await fetch(`${r}/${Lo(m)}`,{method:"PUT",body:new Uint8Array(h),headers:s,signal:AbortSignal.timeout(t)});if(!b.ok)throw new Error(`upload of '${m}' refused (${b.status}): ${Vn(await b.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:Ls(n.userSlug,n.slug)}}async function FT(n,e,t){let r=t.timeoutMs??3e4,s=ps(n),i=[];for(let o of e)try{let a=await fetch(`${s}/${Lo(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}): ${Vn(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 ze.readFile(n.dest,"utf-8"),{mtime:r}=await ze.stat(n.dest),s=await jT(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(Nu(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:Vn(l),assets:i};if(!a.ok)return{kind:"http-error",status:a.status,message:Vn(l),assets:i};let c=JSON.parse(l);if(await ze.utimes(n.dest,new Date,new Date(c.updatedAt)),i&&s.kind==="synced"&&s.toDelete.length){let d=await FT(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 uy(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=Mu(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=hs.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}
|
|
1450
1450
|
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}
|
|
1451
1451
|
pull to see the remote: typebulb pull ${i}
|
|
1452
|
-
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 Bu=v(()=>{"use strict";ne();Do();Ve()});var zn=v(()=>{"use strict";Be();Vg();Kn();ry();
|
|
1452
|
+
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 Bu=v(()=>{"use strict";ne();Do();Ve()});var zn=v(()=>{"use strict";Be();Vg();Kn();ry();Uc();sy();oy();ds();nn();nn();xo();_u();Do();Bu();st()});import{existsSync as qT,mkdirSync as UT,rmSync as JT,writeFileSync as KT}from"fs";import{homedir as HT}from"os";import*as Gn from"path";function zT(){return VT.replace('"__TB_SKILL_PATH__"',JSON.stringify(fs()))}function dy(){try{if(!qT(Du()))return}catch{return}try{let n=WT();UT(Gn.dirname(n),{recursive:!0}),KT(n,zT())}catch{}for(let n of YT())try{JT(n,{force:!0})}catch{}}var Du,WT,YT,VT,fy=v(()=>{"use strict";zn();Du=()=>Gn.join(HT(),".pi","agent"),WT=()=>Gn.join(Du(),"extensions","typebulb.ts"),YT=()=>["typebulb-wait.ts","matchu-patchu.ts"].map(n=>Gn.join(Du(),"extensions",n)),VT=String.raw`// Generated by typebulb — do not edit; overwritten on each run.
|
|
1453
1453
|
import { spawn } from "node:child_process";
|
|
1454
1454
|
import { existsSync } from "node:fs";
|
|
1455
1455
|
|
|
@@ -1595,24 +1595,24 @@ export default function (pi) {
|
|
|
1595
1595
|
} catch (e) { logErr("load", e && e.message); }
|
|
1596
1596
|
}
|
|
1597
1597
|
`});function Y(n){return n?.message??String(n)}var z,$t=v(()=>{"use strict";z=process.cwd()});import{spawn as py}from"child_process";import{StringDecoder as GT}from"string_decoder";function sO(n,e){let t=new GT("utf8"),r="";n.on("data",s=>{r+=typeof s=="string"?s:t.write(s);let i;for(;(i=r.indexOf(`
|
|
1598
|
-
`))>=0;){let o=r.slice(0,i);r=r.slice(i+1),o.endsWith("\r")&&(o=o.slice(0,-1)),o&&e(o)}})}var XT,QT,hy,ZT,eO,tO,nO,rO,Fo,
|
|
1598
|
+
`))>=0;){let o=r.slice(0,i);r=r.slice(i+1),o.endsWith("\r")&&(o=o.slice(0,-1)),o&&e(o)}})}var XT,QT,hy,ZT,eO,tO,nO,rO,Fo,qo,my,gy=v(()=>{"use strict";$t();XT=3e4,QT=5e3,hy=2e3,ZT=2e3,eO=12e4,tO=8e3,nO=15e3,rO=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"]),Fo=new Set;process.on("exit",()=>{for(let n of Fo)try{n.kill()}catch{}});qo=class{#e;#t=!1;#n=0;#r=!1;#c=null;#h=null;#s=null;#o=null;#u=new Map;#i=[];#m=null;#w=null;#g=null;#d;#f;#y="";#A=1;#a=new Map;#v;#b;constructor(e,t,r=(s,i)=>py(s,{cwd:i,shell:!0,stdio:["pipe","pipe","pipe"],env:{...process.env,TYPEBULB_MIRROR:"1"}})){if(this.#v=new Promise(o=>{this.#b=o}),t?.includes('"')){this.#f="session path contains a quote \u2014 cannot drive it",this.#b();return}let s=t?`pi --mode rpc --session "${t}"`:"pi --mode rpc",i;try{i=r(s,e)}catch(o){this.#f=`could not start pi: ${Y(o)}`,this.#b();return}this.#e=i,this.#d=t,Fo.add(i),i.stdout&&sO(i.stdout,o=>this.#T(o)),i.stderr&&i.stderr.on("data",o=>{this.#y=(this.#y+o.toString()).slice(-ZT)}),i.on("error",o=>this.#x(`could not start pi: ${o.message}`)),i.on("exit",o=>{this.#e===i&&this.#x(o?`pi exited (code ${o})${this.#y.trim()?`: ${this.#y.trim()}`:""}`:"pi exited"),Fo.delete(i),this.#b()}),this.#l({type:"get_state"}).then(o=>{let a=o.data?.sessionFile;typeof a=="string"&&a&&(this.#d=a);let l=o.data?.model;l&&typeof l.id=="string"&&l.id&&(this.#g=l.id)}).catch(()=>{}),this.#S()}get streaming(){return this.#t||Date.now()<this.#n}get draft(){return this.#c}get echo(){return this.#h}get queue(){return this.#m}get stats(){return this.#w}get model(){return this.#g}get sessionFile(){return this.#d}get error(){return this.#f}get status(){if(this.#s)return this.#s;if(this.#o){if(Date.now()<this.#o.until)return{text:this.#o.text,kind:this.#o.kind};this.#o=null}return this.#u.size?{text:[...this.#u.values()].join(" \xB7 "),kind:"info"}:null}get dialog(){let e=Date.now();for(;this.#i.length;){let t=this.#i[0];if(e<t.until)return t.req;this.#i.shift(),t.ownTimeout||this.#k({type:"extension_ui_response",id:t.req.id,cancelled:!0})}return null}notice(e,t){this.#p(e,t)}respondUi(e,t){let r=this.#i.findIndex(o=>o.req.id===e);if(r<0)return{ok:!1,error:"dialog expired or already answered"};let[s]=this.#i.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.#k(i),{ok:!0}}async rpc(e){if(!rO.has(e.type))return{ok:!1,error:`command not allowed: ${e.type}`};try{let t=await this.#l(e);if(t.success&&e.type==="set_model"){let r=t.data?.id;typeof r=="string"&&r&&(this.#g=r)}if(t.success&&(e.type==="fork"||e.type==="clone")){try{let s=(await this.#l({type:"get_state"})).data?.sessionFile;typeof s=="string"&&s&&(this.#d=s)}catch{}return{ok:!0,data:{...t.data??{},sessionFile:this.#d}}}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=r?e.trimStart().startsWith("/")?{type:"prompt",message:e,streamingBehavior:t?.followUp?"followUp":"steer"}:{type:t?.followUp?"follow_up":"steer",message:e}:{type:"prompt",message:e},i;try{i=await this.#l(s)}catch(o){return{ok:!1,error:Y(o)}}return i.success&&!r&&(this.#n=Date.now()+QT),i.success&&!r&&!e.trimStart().startsWith("/")&&(this.#h=e),i.success?{ok:!0}:{ok:!1,error:i.error??"pi rejected the message"}}async stop(){if(this.#e)try{await this.#l({type:"abort"})}catch{}}clearCompletedDraft(){this.#r||(this.#c=null)}clearEcho(){this.#h=null}async dispose(){let e=this.#e;if(e){if(this.#e=void 0,this.#t){try{e.stdin?.write(JSON.stringify({type:"abort"})+`
|
|
1599
1599
|
`)}catch{}await Promise.race([this.#v,my(hy)])}try{e.stdin?.end()}catch{}if(await Promise.race([this.#v,my(hy)]),e.exitCode===null&&!e.killed)if(process.platform==="win32"&&e.pid)try{py("taskkill",["/pid",String(e.pid),"/T","/F"],{stdio:"ignore"})}catch{}else try{e.kill("SIGKILL")}catch{}Fo.delete(e),this.#i=[],this.#E("pi was shut down")}}#k(e){try{this.#e?.stdin?.write(JSON.stringify(e)+`
|
|
1600
1600
|
`)}catch{}}#p(e,t){let r=e.length>200?e.slice(0,200)+"\u2026":e;r&&(this.#o={text:r,kind:t,until:Date.now()+(t==="info"?tO:nO)})}#S(){this.#l({type:"get_session_stats"}).then(e=>{if(!e.success||!e.data)return;let t=e.data;this.#w={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(()=>{})}#l(e){let t=this.#e;if(!t?.stdin?.writable)return Promise.reject(new Error(this.#f??"pi is not running"));let r=`tb-${this.#A++}`;return new Promise((s,i)=>{let o=setTimeout(()=>{this.#a.delete(r),i(new Error("pi did not respond (30s)"))},XT);o.unref?.(),this.#a.set(r,{resolve:s,timer:o});try{t.stdin.write(JSON.stringify({id:r,...e})+`
|
|
1601
1601
|
`)}catch(a){clearTimeout(o),this.#a.delete(r),i(new Error(Y(a)))}})}#T(e){let t;try{t=JSON.parse(e)}catch{return}switch(t.type){case"response":{let r=t,s=r.id?this.#a.get(r.id):void 0;s&&(this.#a.delete(r.id),clearTimeout(s.timer),s.resolve(r));return}case"agent_start":this.#t=!0,this.#n=0;return;case"agent_end":this.#t=!1,this.#n=0,this.#r=!1,this.#s=null,this.#m=null,this.#S();return;case"message_start":{t.message?.role==="assistant"&&(this.#r=!0,this.#c={text:"",thinking:""});return}case"message_update":{if(!this.#r)return;let r=t.message,s=Array.isArray(r?.content)?r.content:[],i=s[s.length-1];this.#c={text:s.filter(o=>o?.type==="text").map(o=>o.text??"").join(""),thinking:s.filter(o=>o?.type==="thinking").map(o=>o.thinking??"").join(`
|
|
1602
|
-
`),tool:i?.type==="toolCall"?i.name:void 0};return}case"message_end":this.#r=!1;return;case"auto_retry_start":this.#s={text:`retrying after a transient error (attempt ${Number(t.attempt)||1}/${Number(t.maxAttempts)||"?"})\u2026`,kind:"warning"};return;case"auto_retry_end":this.#s=null,t.success===!1&&this.#p(`retries exhausted: ${String(t.finalError??"unknown error")}`,"error");return;case"compaction_start":this.#s={text:"compacting context\u2026",kind:"info"};return;case"compaction_end":{this.#s=null;let r=t.result;typeof t.errorMessage=="string"&&t.errorMessage?this.#p(`compaction failed: ${t.errorMessage}`,"error"):r?.tokensBefore&&this.#p(`compacted: ~${Math.round(r.tokensBefore/1e3)}k \u2192 ~${Math.round((r.estimatedTokensAfter??0)/1e3)}k tokens`,"info"),this.#S();return}case"queue_update":{let r=Array.isArray(t.steering)?t.steering.map(String):[],s=Array.isArray(t.followUp)?t.followUp.map(String):[];this.#m=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.#i.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??eO),ownTimeout:s!==void 0})}else if(r==="notify"){let s=t.notifyType==="warning"?"warning":t.notifyType==="error"?"error":"info";this.#p(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.#u.set(s,t.statusText):this.#u.delete(s)}return}default:return}}#x(e){this.#f=e,this.#t=!1,this.#n=0,this.#r=!1,this.#c=null,this.#h=null,this.#s=null,this.#o=null,this.#u.clear(),this.#i=[],this.#m=null,this.#w=null,this.#g=null,this.#e=void 0,this.#E(e)}#E(e){for(let[,t]of this.#a)clearTimeout(t.timer),t.resolve({type:"response",success:!1,error:e});this.#a.clear()}},my=n=>new Promise(e=>{setTimeout(e,n).unref?.()})});import{existsSync as yy,readFileSync as iO,realpathSync as oO}from"fs";import{join as on,dirname as Sy,resolve as aO}from"path";import{homedir as by}from"os";function cO(n,e){let t=on(n,".pi");if(lO.some(s=>yy(on(t,s))))return!0;let r=on(e,".agents","skills");for(let s=n;;){let i=on(s,".agents","skills");if(i!==r&&yy(i))return!0;let o=Sy(s);if(o===s)return!1;s=o}}function uO(n,e){for(let t=e;;){if(n[t]===!0||n[t]===!1)return!0;let r=Sy(t);if(r===t)return!1;t=r}}function ky(n,e){try{let t=e?.agentDir??on(by(),".pi","agent"),r=wy(e?.home??process.env.HOME??by()),s=wy(aO(n));if(!cO(s,r))return null;let i=vy(on(t,"settings.json")).defaultProjectTrust;return i==="always"||i==="never"||uO(vy(on(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 lO,wy,vy,xy=v(()=>{"use strict";lO=["settings.json","extensions","skills","prompts","themes","SYSTEM.md","APPEND_SYSTEM.md"],wy=n=>{try{return oO(n)}catch{return n}},vy=n=>{try{return JSON.parse(iO(n,"utf8"))}catch{return{}}}});import{statSync as dO,openSync as fO,readSync as pO,closeSync as hO,existsSync as Ay}from"fs";import{join as
|
|
1603
|
-
`).filter(Boolean).map(s=>s.replace(/\\/g,"/"))}return null}function bO(n){return`--${n.replace(/^[/\\]/,"").replace(/[/\\:]/g,"-")}--`}function Ey(n){return n.type==="message"?wO(n.message?.role):n.type==="custom_message"?n.display!==!1:!1}var gO,wO,Xn,Fu=v(()=>{"use strict";Fr();Ac();Di();fy();gy();xy();gO=
|
|
1602
|
+
`),tool:i?.type==="toolCall"?i.name:void 0};return}case"message_end":this.#r=!1;return;case"auto_retry_start":this.#s={text:`retrying after a transient error (attempt ${Number(t.attempt)||1}/${Number(t.maxAttempts)||"?"})\u2026`,kind:"warning"};return;case"auto_retry_end":this.#s=null,t.success===!1&&this.#p(`retries exhausted: ${String(t.finalError??"unknown error")}`,"error");return;case"compaction_start":this.#s={text:"compacting context\u2026",kind:"info"};return;case"compaction_end":{this.#s=null;let r=t.result;typeof t.errorMessage=="string"&&t.errorMessage?this.#p(`compaction failed: ${t.errorMessage}`,"error"):r?.tokensBefore&&this.#p(`compacted: ~${Math.round(r.tokensBefore/1e3)}k \u2192 ~${Math.round((r.estimatedTokensAfter??0)/1e3)}k tokens`,"info"),this.#S();return}case"queue_update":{let r=Array.isArray(t.steering)?t.steering.map(String):[],s=Array.isArray(t.followUp)?t.followUp.map(String):[];this.#m=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.#i.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??eO),ownTimeout:s!==void 0})}else if(r==="notify"){let s=t.notifyType==="warning"?"warning":t.notifyType==="error"?"error":"info";this.#p(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.#u.set(s,t.statusText):this.#u.delete(s)}return}default:return}}#x(e){this.#f=e,this.#t=!1,this.#n=0,this.#r=!1,this.#c=null,this.#h=null,this.#s=null,this.#o=null,this.#u.clear(),this.#i=[],this.#m=null,this.#w=null,this.#g=null,this.#e=void 0,this.#E(e)}#E(e){for(let[,t]of this.#a)clearTimeout(t.timer),t.resolve({type:"response",success:!1,error:e});this.#a.clear()}},my=n=>new Promise(e=>{setTimeout(e,n).unref?.()})});import{existsSync as yy,readFileSync as iO,realpathSync as oO}from"fs";import{join as on,dirname as Sy,resolve as aO}from"path";import{homedir as by}from"os";function cO(n,e){let t=on(n,".pi");if(lO.some(s=>yy(on(t,s))))return!0;let r=on(e,".agents","skills");for(let s=n;;){let i=on(s,".agents","skills");if(i!==r&&yy(i))return!0;let o=Sy(s);if(o===s)return!1;s=o}}function uO(n,e){for(let t=e;;){if(n[t]===!0||n[t]===!1)return!0;let r=Sy(t);if(r===t)return!1;t=r}}function ky(n,e){try{let t=e?.agentDir??on(by(),".pi","agent"),r=wy(e?.home??process.env.HOME??by()),s=wy(aO(n));if(!cO(s,r))return null;let i=vy(on(t,"settings.json")).defaultProjectTrust;return i==="always"||i==="never"||uO(vy(on(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 lO,wy,vy,xy=v(()=>{"use strict";lO=["settings.json","extensions","skills","prompts","themes","SYSTEM.md","APPEND_SYSTEM.md"],wy=n=>{try{return oO(n)}catch{return n}},vy=n=>{try{return JSON.parse(iO(n,"utf8"))}catch{return{}}}});import{statSync as dO,openSync as fO,readSync as pO,closeSync as hO,existsSync as Ay}from"fs";import{join as Uo}from"path";import{homedir as ju}from"os";import{execFile as mO}from"child_process";async function yO(n){let e=Uo(ju(),".pi","agent","bin",process.platform==="win32"?"fd.exe":"fd");for(let t of["fd","fdfind",...Ay(e)?[e]:[]]){let r=await new Promise(s=>{mO(t,["--base-directory",n,"--type","f","--follow","--hidden","--exclude",".git"],{maxBuffer:67108864},(i,o)=>s(i?null:o))});if(r!==null)return r.split(`
|
|
1603
|
+
`).filter(Boolean).map(s=>s.replace(/\\/g,"/"))}return null}function bO(n){return`--${n.replace(/^[/\\]/,"").replace(/[/\\:]/g,"-")}--`}function Ey(n){return n.type==="message"?wO(n.message?.role):n.type==="custom_message"?n.display!==!1:!1}var gO,wO,Xn,Fu=v(()=>{"use strict";Fr();Ac();Di();fy();gy();xy();gO=Uo(ju(),".pi","agent","sessions");wO=n=>n==="user"||n==="assistant"||n==="toolResult"||n==="bashExecution";Xn=class extends St{displayName="Pi Mirror";detectsSelf(){return process.env.PI_CODING_AGENT==="true"}detectsInstalled(){return Ay(Uo(ju(),".pi","agent"))}ensureHarnessSupport(){dy()}createDriver(e,t){let r=new qo(e,t),s=ky(e);return s&&r.notice(s,"warning"),r}walkFiles(e){return yO(e)}sessionsDir(e){return Uo(gO,bO(e))}listSessionFiles(e){return Bi(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 Ey(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:$e(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(`
|
|
1604
1604
|
`),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)Ey(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=fO(e,"r")}catch{return""}try{let s=65536;try{s=dO(e).size}catch{}let i=(u,f)=>{let p=Buffer.alloc(f),m=pO(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(`
|
|
1605
1605
|
`))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(`
|
|
1606
1606
|
`))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{hO(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?Mi(t.data,t.mimeType):"").filter(Boolean).join(`
|
|
1607
|
-
`):""}}});var Jo,Ty=v(()=>{"use strict";Jo=class{#e=new Map;accept(e,t){return this.#e.get(e)===t?!1:(this.#e.set(e,t),!0)}}});import{execFile as vO}from"child_process";import{promisify as SO}from"util";import{readFile as kO}from"fs/promises";import{resolve as Oy,sep as xO}from"path";async function Je(n,e){let{stdout:t}=await EO("git",n,{cwd:e,maxBuffer:67108864});return t}async function an(){if(Ko)return Ko;try{Ko=(await Je(["rev-parse","--show-toplevel"],z)).trim()}catch{}return Ko}function AO(n,e){let t=e===" "?n:e;return t==="?"?"U":t}async function
|
|
1608
|
-
|
|
1609
|
-
${n.slice(0,_O)}`}],effort:0,webSearch:!1,signal:e});if(!i.ok)continue;let o=IO(await Zt(i,s.protocol));if(o)return o}catch{}if(e.aborted)return}}}async function _y(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=Vo(n,Wo);try{OO(t,{recursive:!0})}catch(a){return{ok:!1,error:Y(a)}}let r,s,i;if(e.kind==="image"){if(r=`img-${Ry()}`,s=Object.keys(Yo).find(a=>Yo[a]===e.mime)??"png",i=Buffer.from(e.data,"base64"),!i.length)return{ok:!1,error:"empty image data"}}else r=await $O(e.data)??`paste-${Ry()}`,s="md",i=e.data;let o=`${r}.${s}`;for(let a=2;TO(Vo(t,o));a++)o=`${r}-${a}.${s}`;try{PO(Vo(t,o),i)}catch(a){return{ok:!1,error:Y(a)}}return{ok:!0,path:`${Wo}/${o}`}}function Ny(n,e){if(!/^[\w-]+(\.[\w-]+)*$/.test(e))return{ok:!1,error:"bad name"};let t=e.slice(e.lastIndexOf(".")+1).toLowerCase(),r=Yo[t];if(!r)return{ok:!1,error:"not an image"};try{return{ok:!0,mime:r,base64:CO(Vo(n,Wo,e)).toString("base64")}}catch{return{ok:!1,error:"not found"}}}var RO,_O,NO,Iy=v(()=>{"use strict";tn();zn();$t();Cy();RO=4e3,_O=4e3,NO=[["openrouter","google/gemini-3.1-flash-lite-preview"],["gemini","gemini-3.1-flash-lite"]]});function LO(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 $y,Ly=v(()=>{"use strict";$y=(n,e)=>LO(n,{key:e,desc:!0})});import{existsSync as My,openSync as MO,readSync as BO,closeSync as DO,statSync as Qn,readdirSync as By,watchFile as jO,unwatchFile as Dy,mkdirSync as FO,writeFileSync as
|
|
1610
|
-
`))>=0;){let W=g.partial.slice(0,I);if(g.partial=g.partial.slice(I+1),!W.trim())continue;let be=n.parseEntry(W);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 B=[],F=g.entries.get(T),V=!1;for(;F;){if(B.push(F),n.idOf(F)===g.chainLastId){V=!0;break}let W=n.parentOf(F);F=W?g.entries.get(W):void 0}if(V)for(let W=B.length-2;W>=0;W--)N(B[W]);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 W=new Set(B.map(ae=>n.idOf(ae))),be=
|
|
1611
|
-
`).filter(Boolean):await n.walkFiles?.(e.cwd)??[];return(await Promise.all(k.map(async T=>{try{return{f:T,m:(await KO(ln(e.cwd,T))).mtimeMs}}catch{return{f:T,m:0}}}))).sort((T,I)=>I.m-T.m).map(T=>T.f)}function Dw(){for(let g of[...t])c(g)}async function jw(g){return n.createDriver?_y(e.cwd,g):{ok:!1,error:"not supported"}}async function Fw(g){return Ny(e.cwd,String(g??""))}async function
|
|
1612
|
-
`)){if(!B.trim())continue;let F=n.parseEntry(B);if(!F)continue;let V=n.searchText(F);V&&T.push({text:V,lower:V.toLowerCase()})}return Bd.set(g,{mtime:k,turns:T}),T}async function Jw(g){let k=g.toLowerCase(),w=[];for(let{sessionId:T,file:I,mtime:B}of n.listSessionFiles(e.cwd).sort((F,V)=>V.mtime-F.mtime)){let{hitCount:F,snippet:V}=Ho(
|
|
1613
|
-
`)){if(!F.trim())continue;let V=n.parseEntry(F);if(V)for(let W of n.apply(V,e.sessionStartMs).events)W.type==="assistant"&&W.text.trim()&&(I=W.text.trim())}let B=I.length>Dd?I.slice(0,Dd).trimEnd()+"\u2026":I;return jd.set(g,{mtime:k,text:B}),B}async function Hw(g){let k=n.listSessionFiles(e.cwd).find(w=>w.sessionId===g);return{text:k?Kw(k.file,k.mtime):""}}async function Ww(g){let k=e,w=n.listSessionFiles(k.cwd).find(T=>T.sessionId===g);if(!w){let T=l().find(I=>I.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 b(e.cwd),A(e.cwd),P(),{info:L,poll:ke,logInlineStatus:G,listSessions:
|
|
1614
|
-
`)){let c=l.replace(/\s+/g," ").trim();c&&i.push({text:c,lower:c.toLowerCase()})}let{hitCount:o,snippet:a}=Ho(i,e);o&&t.push({path:r.path,hitCount:o,snippet:a})}return t}async function nd(n,e,t){let r=z;e!=null&&Wn(n,e);let s=await Wi(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 rd(n){return{cap:await Au(n)}}async function sd(n,e){return Wn(n,e),{ok:!0}}async function id(n,e){return We(n,e)}async function od(){return gs&&Date.now()-gs.fetchedAt<=tP?gs.samples:(Hu??=nP().finally(()=>{Hu=null}),Hu)}async function nP(){try{let n=await fetch(`${eP}/api/scripts/u/samples?stubs`,{signal:AbortSignal.timeout(Jy)});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:Ia(i.config)}));return gs={samples:s,fetchedAt:Date.now()},s}catch{return gs?.samples??[]}}async function ad(n){return zu.test(n)?Hy(
|
|
1615
|
-
${n}`;return Lt?.key===e&&Date.now()-Lt.fetchedAt<=rP?{user:Lt.user,bulbs:Lt.bulbs}:(Wu??=sP(e,n).finally(()=>{Wu=null}),Wu)}async function Yu(n,e,t){let r=await fetch(`${n}${e}`,{headers:t,signal:AbortSignal.timeout(Jy)});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 sP(n,e){let t={Authorization:`Bearer ${e}`};try{let r=Xo(),s;try{s=await Yu(r,"/api/me",t)}catch{let a=new URL(r);r=`${a.protocol}//api.${a.host}`,s=await Yu(r,"/api/me",t)}let o=(await Yu(r,"/api/scripts/list",t)).filter(a=>a.userSlug===s.slug&&!a.isTemplate).map(a=>({slug:a.slug,name:a.name,description:Ia(a.config)}));return Lt={key:n,user:s.slug,bulbs:o,fetchedAt:Date.now()},{user:s.slug,bulbs:o}}catch{return Lt?.key===n?{user:Lt.user,bulbs:Lt.bulbs}:{bulbs:[]}}}async function ud(n,e,t=!1){return!zu.test(e)||!zu.test(n)?{ok:!1,error:"bad slug"}:Hy(Xo(),n,e,t)}async function Hy(n,e,t,r){let s=$o(e,t);try{let i=await Bo({origin:n,userSlug:e,slug:t,dest:cn(z,s)},{force:r,token:ld(),timeoutMs:Ky});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 dd(n,e=!1){let t=ld();if(!t)return{ok:!1,error:"no TYPEBULB_TOKEN in .env"};try{let r=Mo(n,z,Xo()),s=await jo(r,{token:t,force:e,timeoutMs:Ky});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 eP,
|
|
1607
|
+
`):""}}});var Jo,Ty=v(()=>{"use strict";Jo=class{#e=new Map;accept(e,t){return this.#e.get(e)===t?!1:(this.#e.set(e,t),!0)}}});import{execFile as vO}from"child_process";import{promisify as SO}from"util";import{readFile as kO}from"fs/promises";import{resolve as Oy,sep as xO}from"path";async function Je(n,e){let{stdout:t}=await EO("git",n,{cwd:e,maxBuffer:67108864});return t}async function an(){if(Ko)return Ko;try{Ko=(await Je(["rev-parse","--show-toplevel"],z)).trim()}catch{}return Ko}function AO(n,e){let t=e===" "?n:e;return t==="?"?"U":t}async function Uu(){let n=await an();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:AO(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 Ju(n){let e=await an();if(!e)return{ok:!1,error:"not a git repository"};try{if((await Je(["status","--porcelain","-z","--",n],e)).startsWith("??")){let s=Oy(e,n);if(!s.startsWith(Oy(e)+xO))return{ok:!1,error:"outside repository"};let i=await kO(s);return i.includes(0)?qu("Binary file (not shown)",!1):qu(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 qu(r,!1)}catch(t){return{ok:!1,error:Y(t)}}}var EO,Py,Ko,qu,ms=v(()=>{"use strict";$t();EO=SO(vO),Py=2e6;qu=(n,e)=>({ok:!0,text:n.slice(0,Py),untracked:e,truncated:n.length>Py})});function Ho(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 Ku=v(()=>{"use strict"});var Wo,Yo,Cy=v(()=>{"use strict";Wo=".typebulb/paste",Yo={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 TO,mkdirSync as OO,writeFileSync as PO,readFileSync as CO}from"fs";import{join as Vo}from"path";function Ry(){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 IO(n){return n.trim().toLowerCase().replace(/\.[a-z0-9]{1,4}$/,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)}async function $O(n){let e=AbortSignal.timeout(RO);for(let[t,r]of NO){let s=ot(t,r);if(typeof s!="string"){try{let i=await _t(s,{messages:[{role:"user",content:`Reply with ONLY a short kebab-case filename (2-5 words, lowercase, no extension) describing this text:
|
|
1608
|
+
|
|
1609
|
+
${n.slice(0,_O)}`}],effort:0,webSearch:!1,signal:e});if(!i.ok)continue;let o=IO(await Zt(i,s.protocol));if(o)return o}catch{}if(e.aborted)return}}}async function _y(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=Vo(n,Wo);try{OO(t,{recursive:!0})}catch(a){return{ok:!1,error:Y(a)}}let r,s,i;if(e.kind==="image"){if(r=`img-${Ry()}`,s=Object.keys(Yo).find(a=>Yo[a]===e.mime)??"png",i=Buffer.from(e.data,"base64"),!i.length)return{ok:!1,error:"empty image data"}}else r=await $O(e.data)??`paste-${Ry()}`,s="md",i=e.data;let o=`${r}.${s}`;for(let a=2;TO(Vo(t,o));a++)o=`${r}-${a}.${s}`;try{PO(Vo(t,o),i)}catch(a){return{ok:!1,error:Y(a)}}return{ok:!0,path:`${Wo}/${o}`}}function Ny(n,e){if(!/^[\w-]+(\.[\w-]+)*$/.test(e))return{ok:!1,error:"bad name"};let t=e.slice(e.lastIndexOf(".")+1).toLowerCase(),r=Yo[t];if(!r)return{ok:!1,error:"not an image"};try{return{ok:!0,mime:r,base64:CO(Vo(n,Wo,e)).toString("base64")}}catch{return{ok:!1,error:"not found"}}}var RO,_O,NO,Iy=v(()=>{"use strict";tn();zn();$t();Cy();RO=4e3,_O=4e3,NO=[["openrouter","google/gemini-3.1-flash-lite-preview"],["gemini","gemini-3.1-flash-lite"]]});function LO(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 $y,Ly=v(()=>{"use strict";$y=(n,e)=>LO(n,{key:e,desc:!0})});import{existsSync as My,openSync as MO,readSync as BO,closeSync as DO,statSync as Qn,readdirSync as By,watchFile as jO,unwatchFile as Dy,mkdirSync as FO,writeFileSync as qO,readFileSync as zo,unlinkSync as UO,rmSync as JO}from"fs";import{stat as KO}from"fs/promises";import{dirname as HO,join as ln,resolve as jy}from"path";function zO(n){if(!Number.isInteger(n))return!0;try{return process.kill(n,0),!0}catch(e){return e.code==="EPERM"}}function Zn(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=>ln(g,YO),p=(g,k)=>ln(f(g),`${k}.lock`);function m(g,k){try{let w=p(g,k);if(Date.now()-Qn(w).mtimeMs>=Fy)return!1;try{let T=parseInt(zo(w,"utf8").trim(),10);if(T===process.pid||!zO(T))return!1}catch{}return!0}catch{return!1}}function h(g,k){if(k)try{FO(f(g),{recursive:!0}),qO(p(g,k),String(process.pid))}catch(w){console.error("[lock] claim failed:",Y(w))}}function b(g){try{JO(ln(g,".claude-bulb"),{recursive:!0,force:!0})}catch{}}function A(g){let k=f(g);if(!My(k))return;let w;try{w=By(k)}catch{return}let T=Date.now();for(let I of w){if(!I.endsWith(".lock"))continue;let B=ln(k,I);try{let F=Qn(B);T-F.mtimeMs>VO&&UO(B)}catch{}}}function S(g){try{return Qn(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=_(g);k&&x(k)}function _(g){if(!g.everAttached)return C(g.cwd)??R(g.cwd,()=>!0)}function C(g){let k=f(g);if(!My(k))return;let w;try{w=By(k)}catch{return}let T;for(let B of w)if(B.endsWith(".lock"))try{let F=Qn(ln(k,B));if(Date.now()-F.mtimeMs>=Fy||parseInt(zo(ln(k,B),"utf8").trim(),10)!==process.pid)continue;(!T||F.mtimeMs>T.mtime)&&(T={sessionId:B.slice(0,-5),mtime:F.mtimeMs})}catch{}if(!T)return;let I=n.listSessionFiles(g).find(B=>B.sessionId===T.sessionId);if(!(!I||S(I.file)))return I}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{Dy(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{Dy(g.file)}catch{}jO(g.file,{interval:200},()=>K())}function D(){$(void 0,"")}function K(){let g=e;if(!g.file)return;let k;try{k=Qn(g.file).size}catch{return}if(k<=g.offset)return;let w;try{w=MO(g.file,"r")}catch{return}try{let W=k-g.offset,be=Buffer.alloc(W),ae=0;for(;ae<W;){let Fd=BO(w,be,ae,W-ae,g.offset+ae);if(!Fd)break;ae+=Fd}g.offset+=ae,g.partial+=be.subarray(0,ae).toString("utf8")}finally{DO(w)}let T,I;for(;(I=g.partial.indexOf(`
|
|
1610
|
+
`))>=0;){let W=g.partial.slice(0,I);if(g.partial=g.partial.slice(I+1),!W.trim())continue;let be=n.parseEntry(W);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 B=[],F=g.entries.get(T),V=!1;for(;F;){if(B.push(F),n.idOf(F)===g.chainLastId){V=!0;break}let W=n.parentOf(F);F=W?g.entries.get(W):void 0}if(V)for(let W=B.length-2;W>=0;W--)N(B[W]);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 W=new Set(B.map(ae=>n.idOf(ae))),be=U(g.entries);for(let ae=B.length-1;ae>=0;ae--)N(B[ae]),y(n.idOf(B[ae]),be,W)}g.chainLastId=T}function U(g){let k=new Map;for(let w of g.values()){let T=n.parentOf(w);if(!T)continue;let I=k.get(T);I?I.push(w):k.set(T,[w])}return k}function y(g,k,w){if(!g)return;let T=k.get(g);if(!T)return;let I=T.filter(W=>!n.isSidechain(W));if(I.length<2)return;let B=I.filter(W=>!w.has(n.idOf(W)));if(!B.length)return;let F=[],V=0;for(let W of B){let be=E(W,k);F.push(...be.events),V+=be.count}V>0&&e.buffer.push({type:"fork",atId:g,count:V,events:F})}function E(g,k){let w=[],T=[g];for(;T.length;){let F=T.pop();if(n.isSidechain(F))continue;w.push(F);let V=k.get(n.idOf(F)??"");if(V)for(let W of V)T.push(W)}w.sort((F,V)=>(Date.parse(n.timestampOf(F)??"")||0)-(Date.parse(n.timestampOf(V)??"")||0));let I=[];for(let F of w)n.isRecoveryNoise(F)||I.push(...n.apply(F,e.sessionStartMs).events);return{count:I.reduce((F,V)=>F+(V.type==="user"||V.type==="assistant"?1:0),0),events:I}}function N(g){try{let{events:k,usage:w,model:T,cost:I}=n.apply(g,e.sessionStartMs);for(let B of k)e.buffer.push(B);k.some(B=>B.type==="assistant")&&i()?.d.clearCompletedDraft(),k.some(B=>B.type==="user")&&i()?.d.clearEcho(),T&&(e.latestModel=T),w&&(e.latest=w),(w||I)&&e.buffer.push({type:"usage",...e.latest,cost:I})}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 an();if(!g)return;let k=jy(g).toLowerCase();for(let w=jy(e.cwd);w.toLowerCase()!==k;){let T=HO(w);if(T===w)return;w=T;let I=n.listSessionFiles(w).length;if(I)return{dir:w,count:I}}}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 H=new Jo;async function G(g,k){H.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()-Qn(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),I=n.createDriver?{streaming:!!w?.d.streaming,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||ee(),latestModel:k.latestModel,composer:I,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 xa(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 I=await T.d.send(w,k);return I.ok&&T.markSent(w),I}async function Iw(g,k){let w=i();return w?w.d.respondUi(String(g??""),k??{}):{ok:!1,error:"no dialog pending"}}async function $w(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 Lw(){let g=i();if(g)try{await g.d.stop()}catch(k){console.error("[composer] stop:",Y(k))}return{ok:!0}}async function Mw(){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 Bw(){if(!n.createDriver)return[];let g=await Je(["ls-files","--cached","--others","--exclude-standard"],e.cwd).catch(()=>null),k=g!==null?g.split(`
|
|
1611
|
+
`).filter(Boolean):await n.walkFiles?.(e.cwd)??[];return(await Promise.all(k.map(async T=>{try{return{f:T,m:(await KO(ln(e.cwd,T))).mtimeMs}}catch{return{f:T,m:0}}}))).sort((T,I)=>I.m-T.m).map(T=>T.f)}function Dw(){for(let g of[...t])c(g)}async function jw(g){return n.createDriver?_y(e.cwd,g):{ok:!1,error:"not supported"}}async function Fw(g){return Ny(e.cwd,String(g??""))}async function qw(){let g=n.listSessionFiles(e.cwd).map(({sessionId:w,file:T,mtime:I})=>({sessionId:w,mtime:I,preview:n.readPreview(T)})),k=l().map(w=>({sessionId:w.sessionId,mtime:w.rec.startedAt,preview:w.rec.prompt??"",pending:!0}));return $y([...g,...k],w=>w.mtime)}let Bd=new Map;function Uw(g,k){let w=Bd.get(g);if(w&&w.mtime===k)return w.turns;let T=[],I="";try{I=zo(g,"utf8")}catch{return[]}for(let B of I.split(`
|
|
1612
|
+
`)){if(!B.trim())continue;let F=n.parseEntry(B);if(!F)continue;let V=n.searchText(F);V&&T.push({text:V,lower:V.toLowerCase()})}return Bd.set(g,{mtime:k,turns:T}),T}async function Jw(g){let k=g.toLowerCase(),w=[];for(let{sessionId:T,file:I,mtime:B}of n.listSessionFiles(e.cwd).sort((F,V)=>V.mtime-F.mtime)){let{hitCount:F,snippet:V}=Ho(Uw(I,B),k);if(F&&(w.push({sessionId:T,mtime:B,preview:n.readPreview(I),hitCount:F,snippet:V}),w.length>=GO))break}return w}let Dd=800,jd=new Map;function Kw(g,k){let w=jd.get(g);if(w&&w.mtime===k)return w.text;let T="";try{T=zo(g,"utf8")}catch{return""}let I="";for(let F of T.split(`
|
|
1613
|
+
`)){if(!F.trim())continue;let V=n.parseEntry(F);if(V)for(let W of n.apply(V,e.sessionStartMs).events)W.type==="assistant"&&W.text.trim()&&(I=W.text.trim())}let B=I.length>Dd?I.slice(0,Dd).trimEnd()+"\u2026":I;return jd.set(g,{mtime:k,text:B}),B}async function Hw(g){let k=n.listSessionFiles(e.cwd).find(w=>w.sessionId===g);return{text:k?Kw(k.file,k.mtime):""}}async function Ww(g){let k=e,w=n.listSessionFiles(k.cwd).find(T=>T.sessionId===g);if(!w){let T=l().find(I=>I.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 b(e.cwd),A(e.cwd),P(),{info:L,poll:ke,logInlineStatus:G,listSessions:qw,searchSessions:Jw,sessionPeek:Hw,attach:Ww,composerSend:xa,composerStop:Lw,composerNew:Mw,composerFiles:Bw,composerUiRespond:Iw,composerRpc:$w,composerPaste:jw,composerPasteRead:Fw,shutdownComposer:Dw}}var WO,YO,Fy,VO,GO,Go=v(()=>{"use strict";$t();Ty();ms();Ku();Iy();Ly();WO=".typebulb",YO=`${WO}/locks`,Fy=5e3,VO=6e4;GO=50});import{existsSync as Vu,mkdirSync as XO,readFileSync as qy,writeFileSync as QO}from"fs";import{join as cn,isAbsolute as ZO}from"path";async function Gu(n,e){let t=ZO(n)?n:cn(z,n);return Vu(t)?(Ou(t,e),{ok:!0}):{ok:!1,error:"file not found"}}async function Xu(n){let e=z,t=Tu(n),r=cn(e,"typebulbs");XO(r,{recursive:!0});let s=qc(t),i=`${s}.bulb.md`;for(let c=2;Vu(cn(r,i))&&qy(cn(r,i),"utf8")!==t;c++)i=`${s}-${c}.bulb.md`;let o=cn(r,i);Vu(o)||QO(o,t);let a=cn("typebulbs",i),l=await Wi(a,{cwd:e,open:!1});return{ok:!0,file:a,pid:l.pid,url:l.url}}async function Qu(){return Q(z)}async function Zu(n){return await Wt(n),{ok:!0}}async function ed(){let n=await cs(z);return Oo(z).filter(e=>!e.serverOnly).map(e=>({...e,trusted:sn(e.path),batches:ku(e.path),lastRunAt:n(e.path)}))}async function td(n){let e=n.toLowerCase(),t=[];for(let r of Oo(z).filter(s=>!s.serverOnly).sort((s,i)=>i.mtime-s.mtime)){let s="";try{s=qy(r.path,"utf8")}catch{continue}let i=[];for(let l of s.split(`
|
|
1614
|
+
`)){let c=l.replace(/\s+/g," ").trim();c&&i.push({text:c,lower:c.toLowerCase()})}let{hitCount:o,snippet:a}=Ho(i,e);o&&t.push({path:r.path,hitCount:o,snippet:a})}return t}async function nd(n,e,t){let r=z;e!=null&&Wn(n,e);let s=await Wi(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 rd(n){return{cap:await Au(n)}}async function sd(n,e){return Wn(n,e),{ok:!0}}async function id(n,e){return We(n,e)}async function od(){return gs&&Date.now()-gs.fetchedAt<=tP?gs.samples:(Hu??=nP().finally(()=>{Hu=null}),Hu)}async function nP(){try{let n=await fetch(`${eP}/api/scripts/u/samples?stubs`,{signal:AbortSignal.timeout(Jy)});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:Ia(i.config)}));return gs={samples:s,fetchedAt:Date.now()},s}catch{return gs?.samples??[]}}async function ad(n){return zu.test(n)?Hy(Uy,"samples",n,!0):{ok:!1,error:"bad slug"}}async function cd(){let n=ld();if(!n)return{bulbs:[]};let e=`${Xo()}
|
|
1615
|
+
${n}`;return Lt?.key===e&&Date.now()-Lt.fetchedAt<=rP?{user:Lt.user,bulbs:Lt.bulbs}:(Wu??=sP(e,n).finally(()=>{Wu=null}),Wu)}async function Yu(n,e,t){let r=await fetch(`${n}${e}`,{headers:t,signal:AbortSignal.timeout(Jy)});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 sP(n,e){let t={Authorization:`Bearer ${e}`};try{let r=Xo(),s;try{s=await Yu(r,"/api/me",t)}catch{let a=new URL(r);r=`${a.protocol}//api.${a.host}`,s=await Yu(r,"/api/me",t)}let o=(await Yu(r,"/api/scripts/list",t)).filter(a=>a.userSlug===s.slug&&!a.isTemplate).map(a=>({slug:a.slug,name:a.name,description:Ia(a.config)}));return Lt={key:n,user:s.slug,bulbs:o,fetchedAt:Date.now()},{user:s.slug,bulbs:o}}catch{return Lt?.key===n?{user:Lt.user,bulbs:Lt.bulbs}:{bulbs:[]}}}async function ud(n,e,t=!1){return!zu.test(e)||!zu.test(n)?{ok:!1,error:"bad slug"}:Hy(Xo(),n,e,t)}async function Hy(n,e,t,r){let s=$o(e,t);try{let i=await Bo({origin:n,userSlug:e,slug:t,dest:cn(z,s)},{force:r,token:ld(),timeoutMs:Ky});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 dd(n,e=!1){let t=ld();if(!t)return{ok:!1,error:"no TYPEBULB_TOKEN in .env"};try{let r=Mo(n,z,Xo()),s=await jo(r,{token:t,force:e,timeoutMs:Ky});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 eP,Uy,tP,Jy,Ky,gs,Hu,zu,rP,Lt,Wu,Xo,ld,Qo=v(()=>{"use strict";zn();$t();Ku();ne();eP="https://api.typebulb.com",Uy="https://typebulb.com",tP=3600*1e3,Jy=5e3,Ky=15e3,gs=null,Hu=null;zu=/^[a-z0-9][a-z0-9-]*$/,rP=300*1e3,Lt=null,Wu=null,Xo=()=>vo("TYPEBULB_ORIGIN",z)||Uy,ld=()=>vo("TYPEBULB_TOKEN",z)});import{readFileSync as hd,writeFileSync as Yy,mkdirSync as iP,appendFileSync as Vy,rmSync as Wy}from"fs";import{join as ta,dirname as oP}from"path";import{createServer as aP}from"http";function Mt(n){try{return JSON.parse(hd(n,"utf8"))}catch{return null}}function ea(n,e){iP(oP(n),{recursive:!0}),Yy(n,JSON.stringify(e,null,2)+`
|
|
1616
1616
|
`)}function Gy(n,e,t){let r=ta(n,".gitignore"),s="";try{s=hd(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(`
|
|
1617
1617
|
`)?`
|
|
1618
1618
|
`:"";try{Vy(r,a+t+`
|
|
@@ -1629,8 +1629,8 @@ data: ${JSON.stringify(a)}
|
|
|
1629
1629
|
`))!==-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 mP(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 ys(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 gP(n,e,t){if(!Ge){ys(e,400,"invalid_request_error",uP);return}let r=process.env.OPENROUTER_API_KEY;if(!r){ys(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(md,{method:"POST",headers:Qy(n,r),body:Zy(t),signal:s.signal})}catch(u){ys(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?hP():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});fP(p);let m=d(p);m&&e.write(m)}else e.write(Buffer.from(f))}}catch{}finally{e.writableEnded||e.end()}}async function yP(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(!Ge||!r)return s();try{let i=await fetch(`${md}/count_tokens`,{method:"POST",headers:Qy(n,r),body:Zy(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"){ys(e,404,"not_found_error",t);return}mP(n).then(r=>{if(t.includes("count_tokens"))return yP(n,e,r);if(t.includes("/v1/messages"))return gP(n,e,r);ys(e,404,"not_found_error",t)})}function wP(){return er&&un?Promise.resolve(un):new Promise((n,e)=>{let t=aP(bP);t.on("error",e),t.listen(0,"127.0.0.1",()=>{er=t,un=t.address().port,console.log(`[switcher] wire proxy listening on ${Zo(un)}`),n(un)})})}function vP(){try{er?.close()}catch{}er=null,un=null}function SP(n,e){let t=na(n),r=Mt(t),s=r||{};if((!s.env||typeof s.env!="object")&&(s.env={}),s.env.ANTHROPIC_BASE_URL===Zo(e)&&s.env.ANTHROPIC_AUTH_TOKEN)return;let i=ra(n);if(!Mt(i)){let a={};for(let l of zy)a[l]=l in s.env?s.env[l]:null;ea(i,{managedBy:"agent-switcher",fileExisted:r!==null,snapshot:a,active:null})}s.env.ANTHROPIC_BASE_URL=Zo(e),s.env.ANTHROPIC_AUTH_TOKEN=cP,ea(t,s),Gy(n,[".claude/settings.local.json",".claude/.cc-switcher.json"],"# agent switcher (local Claude Code model override)")}function kP(n,e,t){let r=ra(n),s=Mt(r)||{managedBy:"agent-switcher",fileExisted:!1,snapshot:{}};s.active={model:e,provider:t},ea(r,s)}function eb(n){let e=na(n),t=ra(n),r=Mt(t),s=Mt(e);if(s?.env){let i=r?.snapshot||{};for(let o of zy){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{Wy(e,{force:!0})}catch{}else ea(e,s)}try{Wy(t,{force:!0})}catch{}}async function xP(){let n=!!process.env.OPENROUTER_API_KEY,e=[];try{e=(await it()).filter(r=>r.provider==="openrouter"&&!gd(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:yu()??void 0;return{hasKey:n,models:e,error:t}}async function EP(){if(er&&Ge)return{active:!0,managed:!0,model:Ge,port:un,provider:dn,routedModel:bs,caching:ws,reasoning:vs,externalBaseUrl:null};let n=Mt(na(z))?.env||{};return{active:!1,managed:!1,model:null,port:null,provider:null,routedModel:null,caching:"unknown",reasoning:vs,externalBaseUrl:n.ANTHROPIC_BASE_URL||null}}async function tb(n,e){let t=await wP();return Ge=n,dn=e,SP(z,t),t}async function AP({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(gd(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 tb(n,yd[n]??null),bs=null,ws="unknown",kP(z,n,dn)}catch(e){return{ok:!1,error:`failed to start the wire proxy: ${Y(e)}`}}return{ok:!0}}async function TP({level:n}){return n!=null&&(!Number.isInteger(n)||n<0||n>=fd.length)?{ok:!1,error:`reasoning level must be 0\u2013${fd.length-1} or null`}:(vs=n,{ok:!0,level:n})}async function OP(){return eb(z),Ge=null,dn=null,bs=null,ws="unknown",{ok:!0}}async function PP({key:n}){let e=(n||"").trim();if(!e)return{ok:!1,error:"empty key"};let t=z,r=ta(t,".env"),s="";try{s=hd(r,"utf8")}catch{}try{if(/^\s*OPENROUTER_API_KEY\s*=/m.test(s))Yy(r,s.replace(/^\s*OPENROUTER_API_KEY\s*=.*$/m,`OPENROUTER_API_KEY=${e}`));else{let i=s&&!s.endsWith(`
|
|
1630
1630
|
`)?`
|
|
1631
1631
|
`:"";Vy(r,i+`OPENROUTER_API_KEY=${e}
|
|
1632
|
-
`)}}catch(i){return{ok:!1,error:Y(i)}}return process.env.OPENROUTER_API_KEY=e,Gy(t,[".env"],"# secrets"),{ok:!0}}function CP(){if(!(!er&&!Ge)){try{eb(z)}catch{}vP()}}function RP(n,e){return nb.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 _P(n){if(nb.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 NP(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=pd(e?.cache_read_input_tokens)||pd(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 IP({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(gd(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:Xy(a)}:i),u=await fetch(md,{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:RP(a.status,A),restriction:_P(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=pd(l?.usage?.cache_creation_input_tokens),{r:f,j:p}=await o(c),{works:m,read:h,note:b}=NP(f.ok,p?.usage,c);return m===!0&&c&&(yd[n]=c,Ge===n&&(dn=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:b}}}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 lP,md,cP,uP,zy,dP,fd,na,ra,Zo,gd,er,un,Ge,dn,bs,ws,vs,yd,pd,Xy,nb,rb=v(()=>{"use strict";zn();$t();lP="https://openrouter.ai/api",md=`${lP}/v1/messages`,cP="typebulb-proxy-managed",uP="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.",zy=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN"],dP=5e3,fd=["low","medium","high"],na=n=>ta(n,".claude","settings.local.json"),ra=n=>ta(n,".claude",".cc-switcher.json"),Zo=n=>`http://127.0.0.1:${n}`;gd=n=>/^anthropic\//i.test(n)||/claude/i.test(n),er=null,un=null,Ge=null,dn=null,bs=null,ws="unknown",vs=1,yd={},pd=n=>typeof n=="number"?n:0,Xy=n=>({order:[n],allow_fallbacks:!1});nb=/data policy|no endpoints|no allowed providers|privacy|requires.*(training|logging|data)/i;(async function(){try{let e=Mt(ra(z)),t=e?.active?.model;if(!t)return;let s=(Mt(na(z))?.env||{}).ANTHROPIC_BASE_URL||"";if(!/127\.0\.0\.1|localhost/.test(s))return;let i=await tb(t,e.active.provider??yd[t]??null);console.log(`[switcher] re-adopted override after restart: ${t} via ${Zo(i)}`)}catch(e){console.error("[switcher] boot reconcile failed",Y(e))}})()});var ib={};Aa(ib,{attach:()=>
|
|
1633
|
-
`)}catch(o){return{ok:!1,error:`could not write ${n}: ${Y(o)}`}}return{ok:!0,count:e.length}}var nC,ub,db,gb=v(()=>{"use strict";$t();zn();nC=1500,ub=()=>sa.join(tC(),".pi","agent","models.json"),db=()=>Fn(process.env.OLLAMA_HOST??"http://localhost:11434")});var bb={};Aa(bb,{attach:()=>fC,breakout:()=>Xu,composerFiles:()=>gC,composerNew:()=>mC,composerPaste:()=>wC,composerPasteRead:()=>vC,composerRpc:()=>bC,composerSend:()=>pC,composerStop:()=>hC,composerUiRespond:()=>yC,displayName:()=>iC,downloadSample:()=>ad,git:()=>Je,gitChangedFiles:()=>
|
|
1632
|
+
`)}}catch(i){return{ok:!1,error:Y(i)}}return process.env.OPENROUTER_API_KEY=e,Gy(t,[".env"],"# secrets"),{ok:!0}}function CP(){if(!(!er&&!Ge)){try{eb(z)}catch{}vP()}}function RP(n,e){return nb.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 _P(n){if(nb.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 NP(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=pd(e?.cache_read_input_tokens)||pd(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 IP({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(gd(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:Xy(a)}:i),u=await fetch(md,{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:RP(a.status,A),restriction:_P(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=pd(l?.usage?.cache_creation_input_tokens),{r:f,j:p}=await o(c),{works:m,read:h,note:b}=NP(f.ok,p?.usage,c);return m===!0&&c&&(yd[n]=c,Ge===n&&(dn=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:b}}}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 lP,md,cP,uP,zy,dP,fd,na,ra,Zo,gd,er,un,Ge,dn,bs,ws,vs,yd,pd,Xy,nb,rb=v(()=>{"use strict";zn();$t();lP="https://openrouter.ai/api",md=`${lP}/v1/messages`,cP="typebulb-proxy-managed",uP="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.",zy=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN"],dP=5e3,fd=["low","medium","high"],na=n=>ta(n,".claude","settings.local.json"),ra=n=>ta(n,".claude",".cc-switcher.json"),Zo=n=>`http://127.0.0.1:${n}`;gd=n=>/^anthropic\//i.test(n)||/claude/i.test(n),er=null,un=null,Ge=null,dn=null,bs=null,ws="unknown",vs=1,yd={},pd=n=>typeof n=="number"?n:0,Xy=n=>({order:[n],allow_fallbacks:!1});nb=/data policy|no endpoints|no allowed providers|privacy|requires.*(training|logging|data)/i;(async function(){try{let e=Mt(ra(z)),t=e?.active?.model;if(!t)return;let s=(Mt(na(z))?.env||{}).ANTHROPIC_BASE_URL||"";if(!/127\.0\.0\.1|localhost/.test(s))return;let i=await tb(t,e.active.provider??yd[t]??null);console.log(`[switcher] re-adopted override after restart: ${t} via ${Zo(i)}`)}catch(e){console.error("[switcher] boot reconcile failed",Y(e))}})()});var ib={};Aa(ib,{attach:()=>qP,blockToMarkdown:()=>ji,breakout:()=>Xu,capText:()=>we,cleanUserText:()=>kt,clearSwitchModel:()=>OP,composerPasteRead:()=>UP,displayName:()=>$P,downloadSample:()=>ad,firstLineDigest:()=>$e,git:()=>Je,gitChangedFiles:()=>Uu,gitDiff:()=>Ju,info:()=>LP,isHiddenTurn:()=>qr,launchBulb:()=>nd,listBreakouts:()=>Qu,listBulbFiles:()=>ed,listMyBulbs:()=>cd,listSamples:()=>od,listSessions:()=>DP,listSwitchModels:()=>xP,logInlineStatus:()=>BP,openFile:()=>Gu,poll:()=>MP,predictTrustOf:()=>rd,probeModel:()=>IP,pullRemoteBulb:()=>ud,pushLocalBulb:()=>dd,readBulbLog:()=>id,repoRoot:()=>an,saveOpenRouterKey:()=>PP,searchBulbs:()=>td,searchSessions:()=>jP,sessionPeek:()=>FP,setBulbTrust:()=>sd,setReasoning:()=>TP,setSwitchModel:()=>AP,shutdownSwitcher:()=>CP,stopBreakout:()=>Zu,switchState:()=>EP,toolResultDigest:()=>Cc});var sb,$P,LP,MP,BP,DP,jP,FP,qP,UP,ob=v(()=>{"use strict";Go();Fi();Qo();ms();rb();Fi();Fr();sb=new On,$P=sb.displayName,{info:LP,poll:MP,logInlineStatus:BP,listSessions:DP,searchSessions:jP,sessionPeek:FP,attach:qP,composerPasteRead:UP}=Zn(sb)});var lb={};Aa(lb,{attach:()=>GP,breakout:()=>Xu,composerPasteRead:()=>XP,displayName:()=>JP,downloadSample:()=>ad,git:()=>Je,gitChangedFiles:()=>Uu,gitDiff:()=>Ju,info:()=>KP,launchBulb:()=>nd,listBreakouts:()=>Qu,listBulbFiles:()=>ed,listMyBulbs:()=>cd,listSamples:()=>od,listSessions:()=>YP,logInlineStatus:()=>WP,openFile:()=>Gu,poll:()=>HP,predictTrustOf:()=>rd,pullRemoteBulb:()=>ud,pushLocalBulb:()=>dd,readBulbLog:()=>id,repoRoot:()=>an,searchBulbs:()=>td,searchSessions:()=>VP,sessionPeek:()=>zP,setBulbTrust:()=>sd,stopBreakout:()=>Zu});var ab,JP,KP,HP,WP,YP,VP,zP,GP,XP,cb=v(()=>{"use strict";Go();_c();Qo();ms();ab=new Pn,JP=ab.displayName,{info:KP,poll:HP,logInlineStatus:WP,listSessions:YP,searchSessions:VP,sessionPeek:zP,attach:GP,composerPasteRead:XP}=Zn(ab)});import{readFileSync as QP,writeFileSync as ZP,mkdirSync as eC}from"fs";import{homedir as tC}from"os";import*as sa from"path";async function fb(){try{let n=await fetch(new URL("/api/tags",db()).toString(),{signal:AbortSignal.timeout(nC)});return n.ok?((await n.json()).models??[]).map(t=>t.name).filter(t=>!!t):[]}catch{return[]}}function pb(n){let e;try{e=QP(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&&!bd(r)}}}catch{}return{json:void 0,unreadable:!0}}function bd(n){let e=n?.providers;return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function rC(n){let e=bd(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 hb(){let{json:n,unreadable:e}=pb(ub());return e?{installed:[],configured:null}:{installed:await fb(),configured:rC(n)}}async function mb(){let n=await fb();return n.length?sC(ub(),n,db()):{ok:!1,error:"Ollama is not running (or has no models installed)"}}function sC(n,e,t){let{json:r,unreadable:s}=pb(n);if(s)return{ok:!1,error:`could not parse ${n} \u2014 edit the ollama provider there yourself`};let i={...r??{},providers:{...bd(r)??{},ollama:{baseUrl:`${t}/v1`,api:"openai-completions",apiKey:"ollama",models:e.map(o=>({id:o}))}}};try{eC(sa.dirname(n),{recursive:!0}),ZP(n,JSON.stringify(i,null,2)+`
|
|
1633
|
+
`)}catch(o){return{ok:!1,error:`could not write ${n}: ${Y(o)}`}}return{ok:!0,count:e.length}}var nC,ub,db,gb=v(()=>{"use strict";$t();zn();nC=1500,ub=()=>sa.join(tC(),".pi","agent","models.json"),db=()=>Fn(process.env.OLLAMA_HOST??"http://localhost:11434")});var bb={};Aa(bb,{attach:()=>fC,breakout:()=>Xu,composerFiles:()=>gC,composerNew:()=>mC,composerPaste:()=>wC,composerPasteRead:()=>vC,composerRpc:()=>bC,composerSend:()=>pC,composerStop:()=>hC,composerUiRespond:()=>yC,displayName:()=>iC,downloadSample:()=>ad,git:()=>Je,gitChangedFiles:()=>Uu,gitDiff:()=>Ju,info:()=>oC,launchBulb:()=>nd,listBreakouts:()=>Qu,listBulbFiles:()=>ed,listMyBulbs:()=>cd,listSamples:()=>od,listSessions:()=>cC,logInlineStatus:()=>lC,ollamaOffer:()=>hb,ollamaSync:()=>mb,openFile:()=>Gu,poll:()=>aC,predictTrustOf:()=>rd,pullRemoteBulb:()=>ud,pushLocalBulb:()=>dd,readBulbLog:()=>id,repoRoot:()=>an,searchBulbs:()=>td,searchSessions:()=>uC,sessionPeek:()=>dC,setBulbTrust:()=>sd,shutdownComposer:()=>SC,stopBreakout:()=>Zu});var yb,iC,oC,aC,lC,cC,uC,dC,fC,pC,hC,mC,gC,yC,bC,wC,vC,SC,wb=v(()=>{"use strict";Go();Fu();Qo();ms();gb();yb=new Xn,iC=yb.displayName,{info:oC,poll:aC,logInlineStatus:lC,listSessions:cC,searchSessions:uC,sessionPeek:dC,attach:fC,composerSend:pC,composerStop:hC,composerNew:mC,composerFiles:gC,composerUiRespond:yC,composerRpc:bC,composerPaste:wC,composerPasteRead:vC,shutdownComposer:SC}=Zn(yb)});import*as Nw from"fs/promises";import*as ut from"path";_s();ne();function Ec(n){if(!_e.includes(n))throw new Error(`Unknown block kind '${n}' (one of: ${_e.join(", ")})`);return n}function xm(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=Ec(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}Fi();_c();Fu();var ia={claude:{adapter:()=>new On,server:()=>Promise.resolve().then(()=>(ob(),ib))},codex:{adapter:()=>new Pn,server:()=>Promise.resolve().then(()=>(cb(),lb))},pi:{adapter:()=>new Xn,server:()=>Promise.resolve().then(()=>(wb(),bb))}};function vb(n){return n in ia}function tr(){return Object.keys(ia)}function Sb(){return Object.fromEntries(Object.entries(ia).map(([n,e])=>[n,e.adapter]))}function kb(n){return ia[n].server()}var Ss=Sb();function xb(){for(let n of Object.values(Ss))try{n().ensureHarnessSupport()}catch{}}function fn(){for(let n of Object.keys(Ss))try{if(Ss[n]().detectsSelf())return n}catch{}}function Eb(n){let e=tr(),t=new Map(e.filter(i=>Ss[i]).map(i=>[i,Ss[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 vd=5e3;function wd(n){try{return n()}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exit(1)}}function Ab(n){let t={subcommand:"run",file:"",watch:!0,open:!(process.env.TERM_PROGRAM==="vscode"||fn()!==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=vd;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=wd(()=>Wd(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=wd(()=>Ec(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=wd(()=>xm(i.slice(1)))),t}function Tb(){console.log(`
|
|
1634
1634
|
typebulb - Local bulb runner for Typebulb
|
|
1635
1635
|
|
|
1636
1636
|
Usage:
|
|
@@ -1996,17 +1996,17 @@ declare const tb: {${CC}${Rb}${Ib}${$b}${_b}${Nb}
|
|
|
1996
1996
|
`;tt();import IC from"p-limit";tt();import{resolve as Mb}from"resolve.exports";var lt={maxRelativeTypeRefs:500,maxBareDeps:8,maxBareDepth:3,prefetchConcurrency:4,negativeTtlMs:1e4},ks=["index.d.ts","index.d.mts"],Td=/\.d\.(ts|mts|cts)$/i;function oa(n){return/\.d\.(ts|mts|cts)(?:[?#].*)?$/i.test(n)||/[?&]dts(?:[&#]|$)/i.test(n)}function Lb(n){return[`${n}.d.ts`,`${n}.d.mts`]}function Bt(n){if(!n||n==="./"||n==="/")return[...ks];let e=n.replace(/\.(mjs|cjs|js|mts|cts|ts)$/i,""),t=Lb(e),r=e.endsWith("/")?e:`${e}/`;return t.push(...Lb(`${r}index`)),t}async function nr(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(RC(a.status)&&s<e)continue;return a}catch{if(s<e)continue;return}finally{clearTimeout(o)}}}function RC(n){return n===408||n===429||n>=500&&n<600}var aa=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)||oa(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 nr(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=zt(e.path);if(!o||o==="/"||o===".")return this.tryUntilSuccess([...ks],t);if(!Td.test(o)){let a=await this.tryUntilSuccess(Bt(o),t);if(a)return a}return t(o)}let s=Bt(e.path),i=r?.subpath?[...s,...ks]:[...ks,...s];return this.tryUntilSuccess(i,t)}toResolutionResult(e){return{kind:Td.test(e)?"types":"probe",path:e}}resolveExportsPath(e,t){let r=t||".",s=e;try{let i=this.extractPathFromResult(Mb(s,r,{conditions:["types"]}));if(i)return i}catch{}try{return this.extractPathFromResult(Mb(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=Wc(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(Bt(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=zt(r),i=new URL(s,e).toString(),o=await this.tryUrls([i]);return o?{dts:o.dts,url:o.url,resolvedPkg:t}:void 0}};tt();import{gunzipSync as _C}from"fflate";var la=class{async fetchAndExtract(e,t){let r=this.getTarballUrl(e,t),s=await nr(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=_C(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 ca=class{constructor(e,t,r=new la){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=Gt.majorOf(r),o=e.filter(a=>Gt.majorOf(a)===i);if(o.length)return o.sort((a,l)=>Gt.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=Bt(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 ua=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(`
|
|
1997
1997
|
`).filter(s=>{let i=s.trimStart();return!(i.startsWith("*")||i.startsWith("//")||i.startsWith("/*"))}).join(`
|
|
1998
1998
|
`),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://"))}};tt();var Bb="file:///node_modules",da=class{constructor(){this.epoch=0}bumpEpoch(){this.epoch+=1}epochDir(){return`__tsepoch_${this.epoch}`}pathForMain(e){return`${Bb}/${this.epochDir()}/${e}/index.d.ts`}pathFor(e,t){let r=zt(t);return`${Bb}/${this.epochDir()}/${e}/${r}`}};import{LRUCache as NC}from"lru-cache";function Db(n){let e=new NC({ttl:lt.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 nr(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 xs=class{constructor(e){this.inFlight=new Map,this.scanner=new ua,this.cache=e.cache,this.cdnClient=e.cdnClient,this.versionResolver=e.versionResolver,this.packageService=e.packageService,this.fetchDts=Db(e.cache),this.typescriptProvider=new aa(this.fetchDts,e.cdnClient),this.definitelyTypedProvider=new ca(e.cdnClient,e.cache),this.virtualFs=new da}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>lt.maxRelativeTypeRefs)))try{let a=new URL(t),l=new URL("./",a);o??(o=this.extractPackageRootUrl(a));let c=this.scanner.collectRelativeTypeRefs(e).slice(0,lt.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=oa(l)?[l]:Bt(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,lt.maxBareDeps).filter(c=>this.isDifferentPackage(c,t));if(!o.length)return;let a=new Set([t]),l=IC(lt.prefetchConcurrency);await Promise.all(o.map(c=>l(()=>this.prefetchBareDepsRecursive(c,r,s,lt.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,lt.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(`
|
|
1999
|
-
`);await this.prefetchBareDeps(m,c,f,p,s);let h=l.format(),b=e===h?[e]:[e,h],A=b.some(S=>this.ambientlyDeclares(i,S));return A?this.markFileAmbient(f,d):p.push(...b.map(S=>({module:S,path:d}))),{pkg:e,mainPath:d,files:f,shims:p,ambient:A}}};nu();tt();$n();rs();eu();In();import*as rr from"path";var $C=rr.join(eo,"pkg"),LC=rr.join(eo,"files"),MC=rr.join(eo,"negative.json"),pa=class{pkgMem=new Map;fileMem=new Map;negativeCache=new Xt(new Ln(MC));async getCachedDts(e){if(this.pkgMem.has(e))return this.pkgMem.get(e);await Z();let t=await nt(jb(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 fa(async()=>{await Z(),await Ae(jb(e),JSON.stringify(s))})}async getCachedFile(e){if(this.fileMem.has(e))return this.fileMem.get(e);await Z();let t=await Zi(Fb(e));return this.fileMem.set(e,t),t}async setCachedFile(e,t){this.fileMem.set(e,t),await fa(async()=>{await Z(),await Ae(Fb(e),t)})}isNegative(e){return this.negativeCache.isNegative(e)}async recordNegative(e){await fa(async()=>{await Z(),await this.negativeCache.recordNegative(e)})}clearNegative(e){return fa(()=>this.negativeCache.clearNegative(e))}};async function fa(n){try{await n()}catch{}}function jb(n){return rr.join($C,De(n)+".json")}function Fb(n){return rr.join(LC,De(n)+".txt")}$n();var Od;function BC(){return Od||(Od=new xs({cache:new pa,cdnClient:bg,packageService:so,versionResolver:yg})),Od}var
|
|
2000
|
-
`,"utf8"),await pe.writeFile(de.join(e,"code.tsx"),n.code,"utf8"),await pe.writeFile(de.join(e,"tb.d.ts"),Ed,"utf8"),{dir:e}}var Pd={target:"es2023",module:"esnext",moduleResolution:"bundler",strict:!0,noEmit:!0,skipLibCheck:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0};function DC(n,e,t=[]){return{compilerOptions:{...Pd,lib:jC([...Sd,...kd]),jsx:"react-jsx",jsxImportSource:n??"react",paths:e},include:["code.tsx","tb.d.ts",...t]}}function jC(n){return xd(n).map(e=>FC(e.name))}function FC(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
|
|
2001
|
-
`,"utf8"),{dir:e}}function WC(n){let e={...Pd,lib:["ES2023"],types:["node"]};if(n?.typesAbs){let t=i=>i.replace(/\\/g,"/"),r=t(ct.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 YC(n,e){if(!KC(n)){await Pe.mkdir(e,{recursive:!0});return}await Pe.rm(e,{recursive:!0,force:!0});let t=process.platform==="win32"?"junction":"dir";await Pe.symlink(n,e,t)}zi();ne();async function Hb(n,e){let{bulb:t,config:r,warnings:s,starts:i}=await
|
|
2002
|
-
`))console.log(`${e} ${r}`);return n.length>0}function QC(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 ZC(n,e){return new Promise(t=>{let r=VC(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 eR=GC(import.meta.url);function tR(n){let e=r=>{try{let s=eR.resolve("typescript/package.json",{paths:r}),i=Ce.join(Ce.dirname(s),"lib","tsc.js");return XC(i)?i:void 0}catch{return}},t=e(n);if(t)return t;try{let r=zC("npm root -g",{encoding:"utf8"}).trim();return e([r])}catch{return}}Ve();Io();ds();async function Wb(n,e){let{bulb:t}=await
|
|
1999
|
+
`);await this.prefetchBareDeps(m,c,f,p,s);let h=l.format(),b=e===h?[e]:[e,h],A=b.some(S=>this.ambientlyDeclares(i,S));return A?this.markFileAmbient(f,d):p.push(...b.map(S=>({module:S,path:d}))),{pkg:e,mainPath:d,files:f,shims:p,ambient:A}}};nu();tt();$n();rs();eu();In();import*as rr from"path";var $C=rr.join(eo,"pkg"),LC=rr.join(eo,"files"),MC=rr.join(eo,"negative.json"),pa=class{pkgMem=new Map;fileMem=new Map;negativeCache=new Xt(new Ln(MC));async getCachedDts(e){if(this.pkgMem.has(e))return this.pkgMem.get(e);await Z();let t=await nt(jb(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 fa(async()=>{await Z(),await Ae(jb(e),JSON.stringify(s))})}async getCachedFile(e){if(this.fileMem.has(e))return this.fileMem.get(e);await Z();let t=await Zi(Fb(e));return this.fileMem.set(e,t),t}async setCachedFile(e,t){this.fileMem.set(e,t),await fa(async()=>{await Z(),await Ae(Fb(e),t)})}isNegative(e){return this.negativeCache.isNegative(e)}async recordNegative(e){await fa(async()=>{await Z(),await this.negativeCache.recordNegative(e)})}clearNegative(e){return fa(()=>this.negativeCache.clearNegative(e))}};async function fa(n){try{await n()}catch{}}function jb(n){return rr.join($C,De(n)+".json")}function Fb(n){return rr.join(LC,De(n)+".txt")}$n();var Od;function BC(){return Od||(Od=new xs({cache:new pa,cdnClient:bg,packageService:so,versionResolver:yg})),Od}var qb="file:///node_modules/";async function Ub(n){let e=to(n.emitKey,"typecheck");await Z(),await pe.rm(e,{recursive:!0,force:!0}),await pe.mkdir(e,{recursive:!0});let t=qC(n.jsxImportSource,n.dependencies),r=await BC().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=ha(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=ha(u.path);f&&(a[u.module]=[`./node_modules/${f}`])}for(let d of i){if(d.ambient)continue;let u=ha(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=ha(u.path);f&&l.add(`node_modules/${f}`)}if(n.local){delete a[n.local.name];let d=await UC(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=DC(n.jsxImportSource,a,[...l]);return await pe.writeFile(de.join(e,"tsconfig.json"),JSON.stringify(c,null,2)+`
|
|
2000
|
+
`,"utf8"),await pe.writeFile(de.join(e,"code.tsx"),n.code,"utf8"),await pe.writeFile(de.join(e,"tb.d.ts"),Ed,"utf8"),{dir:e}}var Pd={target:"es2023",module:"esnext",moduleResolution:"bundler",strict:!0,noEmit:!0,skipLibCheck:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0};function DC(n,e,t=[]){return{compilerOptions:{...Pd,lib:jC([...Sd,...kd]),jsx:"react-jsx",jsxImportSource:n??"react",paths:e},include:["code.tsx","tb.d.ts",...t]}}function jC(n){return xd(n).map(e=>FC(e.name))}function FC(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 qC(n,e){let t=n??("react"in e?"react":void 0);return t?[`${t}/jsx-runtime`,`${t}/jsx-dev-runtime`]:[]}function ha(n){if(!n.startsWith(qb))return;let e=n.slice(qb.length),t=e.indexOf("/");if(!(t<0))return e.slice(t+1)}async function UC(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 JC(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 JC(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 Pe from"fs/promises";import*as ct from"path";import{existsSync as KC}from"fs";$n();ru();var HC="^22";async function Jb(n){let e=to(n.emitKey,"typecheck-server");await Z(),await Pe.rm(e,{recursive:!0,force:!0}),await Pe.mkdir(e,{recursive:!0});let t=ct.join(n.bulbDir,".typebulb"),r=po(n.server).filter(o=>o!==n.local?.name);await fo([`@types/node@${HC}`,...r],t,n.dependencies,{ignoreScripts:!0});let s=ct.join(t,"node_modules"),i=ct.join(e,"node_modules");return await YC(s,i),await Pe.writeFile(ct.join(e,"server.ts"),n.server,"utf8"),await Pe.writeFile(ct.join(e,"tb.d.ts"),Ad,"utf8"),await Pe.writeFile(ct.join(e,"tsconfig.json"),JSON.stringify(WC(n.local),null,2)+`
|
|
2001
|
+
`,"utf8"),{dir:e}}function WC(n){let e={...Pd,lib:["ES2023"],types:["node"]};if(n?.typesAbs){let t=i=>i.replace(/\\/g,"/"),r=t(ct.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 YC(n,e){if(!KC(n)){await Pe.mkdir(e,{recursive:!0});return}await Pe.rm(e,{recursive:!0,force:!0});let t=process.platform==="win32"?"junction":"dir";await Pe.symlink(n,e,t)}zi();ne();async function Hb(n,e){let{bulb:t,config:r,warnings:s,starts:i}=await Ue(n),o=Ce.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=Jn(Ce.resolve(n)),u=d?An(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=Kb(Yr(t.code,{target:"client",dependencies:r.dependencies??{},lineOffset:a("code.tsx")}),"client")||l),t.server&&(l=Kb(Yr(t.server,{target:"server",lineOffset:a("server.ts")}),"server")||l);let f=tR([process.cwd(),Ce.dirname(n)]);if(!f){let h=Ce.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 Ub({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 Jb({server:t.server,bulbDir:Ce.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:b}of p){let{stdout:A,exitCode:S}=await ZC(f,b);for(let P of A.split(/\r?\n/))P.trim()&&console.log(`${h} ${QC(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 Kb(n,e){for(let t of n)for(let r of t.message.split(`
|
|
2002
|
+
`))console.log(`${e} ${r}`);return n.length>0}function QC(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 ZC(n,e){return new Promise(t=>{let r=VC(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 eR=GC(import.meta.url);function tR(n){let e=r=>{try{let s=eR.resolve("typescript/package.json",{paths:r}),i=Ce.join(Ce.dirname(s),"lib","tsc.js");return XC(i)?i:void 0}catch{return}},t=e(n);if(t)return t;try{let r=zC("npm root -g",{encoding:"utf8"}).trim();return e([r])}catch{return}}Ve();Io();ds();async function Wb(n,e){let{bulb:t}=await Ue(n),r=Hn(t);if(sn(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.)")}ds();import*as Es from"path";async function Yb(n,e){if(!n){e||(console.error("Usage: typebulb untrust <file.bulb.md>"),process.exit(1));let r=Ru();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=Es.resolve(n);t.endsWith(".bulb.md")||(console.error("File must have .bulb.md extension"),process.exit(1));try{Wn(t,e)}catch(r){console.error(r.message),process.exit(1)}console.log(e?`Trusted ${Es.basename(t)} \u2014 runs with fs / AI / server.ts (no --trust needed).`:`Untrusted ${Es.basename(t)} \u2014 runs Restricted.`),console.log(` ${t}`)}Be();import*as zb from"readline";_u();function Cd(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")}}async function Gb(n){let e=Eb(process.cwd());if("ambiguous"in e){let t=await nR(n,e.ambiguous);return t?Vb(n,t):rR(n,e.ambiguous)}return Vb(n,e.name)}async function Vb(n,e){let t,r;try{t=await Wm(e)}catch(d){r=d instanceof Error?d.message:String(d)}let{lit:s,litLink:i,brand:o}=Cd(process.stdout.isTTY===!0),a=[" Read the authoring skill before writing a bulb:",` \u2022 ${s(fs())}`],l=t?[` Agent mirror (${e}) is live\u{1F4A1}`,` ${s("\u25CF")} ${i(t.url)}`," Inline bulbs render live here."," Agents:",` Reusable app/tool \u2192 write a ${s(".bulb.md")}`," Show something inline \u2192 emit an inline bulb",...e==="codex"?[" verify it this turn \u2014 foreground-wait, bounded:",` \u2022 ${s('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 ${s('typebulb wait agent --match "[inline <name>"')}`],...a," End this reply with the mirror link above"," \u2022 easy to miss the link mid-message"]:[` The mirror did not start (${r})`,` \u25CF Start it manually: ${s(`npx typebulb agent:${e}`)}`," Agents:",...a],c=[` ${o(`typebulb v${n}`)}`,...l,""];process.stdout.write(c.join(`
|
|
2003
2003
|
`)+`
|
|
2004
2004
|
`)}async function nR(n,e){if(!process.stdin.isTTY||!process.stdout.isTTY)return;let{lit:t,brand:r}=Cd(!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(`
|
|
2005
2005
|
`)+`
|
|
2006
2006
|
`);let i=zb.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 rR(n,e){let{lit:t,brand:r}=Cd(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(`
|
|
2007
2007
|
`)+`
|
|
2008
|
-
`)}st();nn();async function Xb(n){Te(n);let e=await it();if(e.length>0){console.log(jg(e,process.env.TB_AI_PROVIDER,process.env.TB_AI_MODEL));return}if(!bu()){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(jn))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 Qb(n){n?.trim()||(console.error("Usage: typebulb slug <bulb name>"),process.exit(1));let e=An(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)}Et();import*as ew from"path";import{valid as Zb,lt as sR}from"semver";Be();
|
|
2009
|
-
`+e)}function _d(n,e,t,r,s){let i=iR(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>\`):`),tw(n,o=>console.error(o))):console.error("No bulb servers are running."),process.exit(1)}async function nw(n,e){if(!n){e.clear&&(console.error("Specify which server to clear: typebulb logs --clear <file|pid>"),process.exit(1)),Rd(await Q(process.cwd()),"Run `typebulb logs <file|pid>` to print one server's console.");return}let t=_d(await Q(),n,"logs",process.cwd(),fn());if(e.clear){Fm(t.pid),console.log(`Cleared log for ${As(t)} (pid ${t.pid}).`);return}let r=We(t.pid),s=r.text;if(e.run!==void 0?(s=
|
|
2008
|
+
`)}st();nn();async function Xb(n){Te(n);let e=await it();if(e.length>0){console.log(jg(e,process.env.TB_AI_PROVIDER,process.env.TB_AI_MODEL));return}if(!bu()){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(jn))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 Qb(n){n?.trim()||(console.error("Usage: typebulb slug <bulb name>"),process.exit(1));let e=An(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)}Et();import*as ew from"path";import{valid as Zb,lt as sR}from"semver";Be();Ui();function iR(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 As=n=>n.agent??ew.basename(n.file);function oR(n){return n===Me?"":n?(Zb(n)&&Zb(Me)?sR(n,Me):!0)?` STALE runtime v${n} (this CLI is v${Me} \u2014 relaunch to update)`:` runtime v${n} (newer than this CLI's v${Me})`:" STALE runtime (predates the version stamp \u2014 relaunch to update)"}function tw(n,e){for(let t of n)e(` ${t.url} pid ${t.pid} ${t.trust?"trusted":"restricted"}${t.batch?` --batch ${t.batch}`:""}${oR(t.version)} ${t.file}`)}function Rd(n,e){if(!n.length){console.log("No running bulb servers.");return}console.log("Running bulb servers:"),tw(n,t=>console.log(t)),console.log(`
|
|
2009
|
+
`+e)}function _d(n,e,t,r,s){let i=iR(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>\`):`),tw(n,o=>console.error(o))):console.error("No bulb servers are running."),process.exit(1)}async function nw(n,e){if(!n){e.clear&&(console.error("Specify which server to clear: typebulb logs --clear <file|pid>"),process.exit(1)),Rd(await Q(process.cwd()),"Run `typebulb logs <file|pid>` to print one server's console.");return}let t=_d(await Q(),n,"logs",process.cwd(),fn());if(e.clear){Fm(t.pid),console.log(`Cleared log for ${As(t)} (pid ${t.pid}).`);return}let r=We(t.pid),s=r.text;if(e.run!==void 0?(s=qm(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(`
|
|
2010
2010
|
`);i.length&&i[i.length-1]===""&&i.pop(),s=i.slice(-e.lines).join(`
|
|
2011
2011
|
`)}if(process.stdout.write(s),s&&!s.endsWith(`
|
|
2012
2012
|
`)&&process.stdout.write(`
|
|
@@ -2053,6 +2053,8 @@ const CSS = '\\n' +
|
|
|
2053
2053
|
'.leftgrp { margin-right: auto; display: flex; gap: 8px; }\\n' +
|
|
2054
2054
|
'button { font: inherit; padding: 6px 14px; border-radius: 6px; cursor: pointer;\\n' +
|
|
2055
2055
|
' border: 1px solid var(--border); background: transparent; color: inherit; }\\n' +
|
|
2056
|
+
'button.iconbtn { padding: 6px 9px; display: inline-flex; align-items: center; }\\n' +
|
|
2057
|
+
'button.iconbtn svg { display: block; }\\n' +
|
|
2056
2058
|
'button.run { background: var(--accent); border-color: var(--accent); color: var(--accent-contrast); }\\n' +
|
|
2057
2059
|
'button.run:disabled { opacity: .5; cursor: default; }\\n' +
|
|
2058
2060
|
'@keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }\\n' +
|
|
@@ -2210,15 +2212,21 @@ export function runInference(ctx) {
|
|
|
2210
2212
|
body.appendChild(model);
|
|
2211
2213
|
|
|
2212
2214
|
// Fragment-driven actions (TB-Inference.md): the address bar holds the last completed run, so
|
|
2213
|
-
//
|
|
2215
|
+
// all three appear exactly when one exists. Copy = share it; Save = promote it to the bulb's
|
|
2216
|
+
// source; Discard = drop it and land back on the file's own data + example.
|
|
2214
2217
|
if (location.hash.indexOf('tb=') !== -1) {
|
|
2215
2218
|
var grp = el('div', 'leftgrp');
|
|
2216
|
-
|
|
2219
|
+
// Icon-only: the glyph reads as "copy link", the title carries the words, and the footer
|
|
2220
|
+
// keeps room for three actions without wrapping.
|
|
2221
|
+
var LINK_SVG = '<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>';
|
|
2222
|
+
var share = el('button', 'iconbtn');
|
|
2223
|
+
share.innerHTML = LINK_SVG;
|
|
2224
|
+
share.setAttribute('aria-label', 'Copy share URL');
|
|
2217
2225
|
share.title = 'Copies this page URL with the #tb= result fragment \\u2014 paste the fragment onto the published bulb\\u2019s URL to share the last run';
|
|
2218
2226
|
share.addEventListener('click', function () {
|
|
2219
2227
|
navigator.clipboard.writeText(location.href).then(function () {
|
|
2220
|
-
share.textContent = '
|
|
2221
|
-
setTimeout(function () { share.
|
|
2228
|
+
share.textContent = '\\u2713';
|
|
2229
|
+
setTimeout(function () { share.innerHTML = LINK_SVG; }, 1500);
|
|
2222
2230
|
});
|
|
2223
2231
|
});
|
|
2224
2232
|
grp.appendChild(share);
|
|
@@ -2242,6 +2250,15 @@ export function runInference(ctx) {
|
|
|
2242
2250
|
});
|
|
2243
2251
|
});
|
|
2244
2252
|
grp.appendChild(save);
|
|
2253
|
+
var discard = el('button', '', 'Discard run');
|
|
2254
|
+
discard.title = 'Drop this run\\u2019s result \\u2014 back to the bulb\\u2019s own data and example insight';
|
|
2255
|
+
discard.addEventListener('click', function () {
|
|
2256
|
+
// The fragment IS the runtime state (TB-Inference.md Invariant 2): strip it and reload,
|
|
2257
|
+
// and the page boots from the file's blocks. The file is never touched.
|
|
2258
|
+
history.replaceState(null, '', location.pathname + location.search);
|
|
2259
|
+
location.reload();
|
|
2260
|
+
});
|
|
2261
|
+
grp.appendChild(discard);
|
|
2245
2262
|
foot.appendChild(grp);
|
|
2246
2263
|
}
|
|
2247
2264
|
|
|
@@ -2320,14 +2337,14 @@ export function runInference(ctx) {
|
|
|
2320
2337
|
}
|
|
2321
2338
|
`;Be();nn();xo();tn();import{stream as hR}from"hono/streaming";var mR="X-TB-Stream";function Ps(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 ya(n,e){return n.header("Content-Type","application/x-ndjson; charset=utf-8"),n.header("Cache-Control","no-cache"),n.header(mR,"1"),hR(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:Ps(s)}))}finally{try{await r.return?.()}catch{}}})}var ba={log:(...n)=>console.log(...n)};function wa(n,e){let t=n?.[e]??(Object.hasOwn(ba,e)?ba[e]:void 0);return typeof t=="function"?t:void 0}function va(n){return n.constructor?.name==="AsyncGeneratorFunction"}wu();var gR=/^\/(v\d+\/|stable\/|node\/|gh\/|@[^/]+\/[^@/]+@|[^@/]+@)/,yR=/[?&]target=/,bR=/^\/(?:@[^/]+\/)?[^/@]+\/[^/]+/;function mw(n,e=""){return gR.test(n)?!0:bR.test(n)&&yR.test(e)}var kR="127.0.0.1",xR=new Set(["localhost","127.0.0.1","::1"]),ER=0;function AR(n){if(n)try{return new URL(n.includes("://")?n:`http://${n}`).hostname}catch{return}}function TR(n){let e=AR(n);return!!e&&xR.has(e)}function OR(n,e){if(!e)return!1;try{return new URL(n).host===e}catch{return!1}}function Id(n){return n instanceof Error?n.message:"Unknown error"}async function yw(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,b=`${process.pid}-${++ER}-${Date.now()}`,A=r??t,S=new wR;S.use("*",async(y,E)=>{if(!TR(y.req.header("host")))return y.text("Forbidden: untrusted Host",403);await E()}),S.use("*",async(y,E)=>{await E(),y.res.headers.set("Cross-Origin-Opener-Policy","same-origin"),y.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"]],_=async(y,E)=>{if(!u){let N=new URL(y.req.url).pathname,L=P.find(([H])=>H.endsWith("/*")?N.startsWith(H.slice(0,-2)):N===H)?.[1]??"server-side code (server.ts)";Jm(process.pid,L);let M=f?`
|
|
2322
2339
|
${f}`:"";return y.text(`Forbidden: this capability requires --trust.${M}`,403)}await E()},C=async(y,E)=>{let N=y.req.header("sec-fetch-site");if(N){if(N!=="same-origin")return y.text(`Forbidden: ${N} request`,403)}else{let L=y.req.header("origin");if(L&&!OR(L,y.req.header("host")))return y.text("Forbidden: cross-origin request",403)}await E()};for(let[y]of P)S.use(y,_),S.use(y,C);S.use("/__log",C),S.post("/__log",async y=>{try{let{args:E}=await y.req.json();console.log(...E||[])}catch{}return y.json({ok:!0})});let R=0;if(o){let y=0,E=new Map;S.use("/__send",C),S.post("/__send",async N=>{let L="";try{L=await N.req.text()}catch{}let M=Number(N.req.query("reply"))||0,H=o.listenerCount("message"),G=H===0&&R?Date.now()-R:void 0;if(N.req.query("solo")!==void 0&&H!==1)return N.json({clients:H,droppedMsAgo:G,refused:H>1});if(M<=0||H===0)return o.emit("message",{payload:L}),N.json({clients:H,droppedMsAgo:G});let he=++y,ee=await new Promise(oe=>{let ke={expected:H,received:0,results:[],errors:[],finish:xa=>{clearTimeout(Re),E.delete(he),oe({results:ke.results,errors:ke.errors,timedOut:xa})}},Re=setTimeout(()=>ke.finish(!0),M);E.set(he,ke),o.emit("message",{id:he,payload:L})});return N.json({clients:H,...ee})}),S.use("/__send-reply",C),S.post("/__send-reply",async N=>{try{let{id:L,results:M,errors:H}=await N.req.json(),G=E.get(L);G&&(G.results.push(...M??[]),G.errors.push(...H??[]),++G.received>=G.expected&&G.finish(!1))}catch{}return N.json({ok:!0})})}S.get("/",y=>y.html(e())),S.post("/__fs/read",async y=>{try{let{path:E}=await y.req.json(),N=await as(E,A,t);return new Response(new Uint8Array(N),{headers:{"Content-Type":"application/octet-stream"}})}catch(E){let N=Id(E);return y.json({error:N},400)}}),S.post("/__fs/write",async y=>{try{let E=y.req.query("path");return E?(await Ao(E,new Uint8Array(await y.req.arrayBuffer()),A,t),y.json({success:!0})):y.json({error:"Missing path"},400)}catch(E){let N=Id(E);return y.json({error:N},400)}}),S.post("/__api/:name",async y=>{try{let E=y.req.param("name"),N=wa(a?.(),E);if(!N)return y.json({error:`API function '${E}' not found`},404);let{args:L}=await y.req.json();if(va(N))return ya(y,N(...L||[]));let M=await N(...L||[]);return y.json({result:M})}catch(E){let N=Id(E);return y.json({error:N},500)}}),S.post("/__ai",async y=>{try{let{messages:E,system:N,effort:L,provider:M,model:H,webSearch:G,stream:he}=await y.req.json();if(!E||!Array.isArray(E)||E.length===0)return y.json({message:"messages array is required",code:"unknown",retryable:!1},400);let ee=ot(M,H);if(typeof ee=="string")return y.json({message:ee,code:"unknown",retryable:!1},400);let oe=await _t(ee,{messages:E,system:N,effort:L,webSearch:G,signal:y.req.raw.signal});if(!oe.ok){let Re=await Dn(oe,ee.protocol);return y.json(Re,oe.status)}if(he)return ya(y,en(oe,ee.protocol));let ke=await Zt(oe,ee.protocol);return ke||console.warn("[tb.ai] Empty response from provider"),y.json({text:ke})}catch(E){return y.json(Ps(E),500)}}),S.post("/__infer",async y=>{try{let{data:E}=await y.req.json().catch(()=>({})),N=l?.();if(!N?.infer.trim())return y.json({message:"This bulb has no infer.md block.",code:"unknown",retryable:!1},400);let L=ot();if(typeof L=="string")return y.json({message:L,code:"unknown",retryable:!1},400);let M=Array.isArray(E)?E.map(String):[],H=pu(N,M),G=await _t(L,{messages:[{role:"user",content:H}],signal:y.req.raw.signal});if(!G.ok){let ee=await Dn(G,L.protocol);return y.json(ee,G.status)}let he=(async function*(){let ee="";for await(let Re of en(G,L.protocol))Re.kind!=="text"||!Re.text||(ee+=Re.text,yield{kind:"delta",text:Re.text});let oe=hu(ee);if(oe.parsed===null)throw console.warn(`[tb.infer] output not valid JSON after sanitize; raw output (last 4000 chars):
|
|
2323
|
-
`+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:mu(ke)}})();return ya(y,he)}catch(E){return y.json(Ps(E),500)}});let $=async y=>{let{hash:E}=await y.req.json().catch(()=>({}));return typeof E=="string"?gu(E):null};S.post("/__infer-save",async y=>{try{if(!c)return y.json({message:"Save is not available for this server.",code:"unknown",retryable:!1},400);let E=await $(y);return E?(await c(E.data,E.insightJson),y.json({ok:!0})):y.json({message:"No decodable #tb= fragment to save.",code:"unknown",retryable:!1},400)}catch(E){return y.json(Ps(E),500)}}),S.get("/__infer-info",y=>{let E=l?.(),N=ir(E?.config??"").inference,L=Ii(E?.data??""),M=ot();return typeof M=="string"?y.json({error:M,inference:N,data:L}):y.json({provider:M.protocol,model:M.model,inference:N,data:L})}),S.use("/__infer-decode",C),S.post("/__infer-decode",async y=>y.json(await $(y)??{error:"invalid fragment"})),S.get("/__infer-ui.js",y=>y.body(hw,200,{"Content-Type":"text/javascript; charset=utf-8"})),S.get("/__models",async y=>{try{let E=await it();return y.json(E)}catch{return y.json([],200)}}),S.get("/__ai-access",async y=>{try{return y.json(await ko())}catch{return y.json("none",200)}}),h&&S.get("/__source/*",async y=>{let E=await Ld.readFile(h,"utf-8").catch(()=>{});return E===void 0?y.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 ga;S.get("/proxy/*",async y=>{let E=new URL(y.req.url),L=(E.pathname+E.search).slice(7),M=L.lastIndexOf("https://");return M===-1?y.text("Invalid proxy URL",400):K(y,L.slice(M))}),d&&gw(S,`/local/${d.name}/`,d.serveDir),p&&gw(S,p.mount,p.dir),m&&S.get("/assets/*",async y=>{let{pathname:E}=new URL(y.req.url),N=E.slice(8),L;try{L=decodeURIComponent(N)}catch{return y.text("Not Found",404)}let M=uf(L);if(M)return y.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 bw(L,G,{"Cache-Control":"no-cache"});if(he)return he}}catch{return y.text("Not Found",404)}let H=m.remoteBase;return H?y.redirect(H+N,302):y.text("Not Found",404)});async function K(y,E){let N;try{N=new URL(E)}catch{return y.text("Invalid URL",400)}if(N.protocol!=="https:")return y.text("HTTPS only",400);if(!x.includes(N.hostname))return y.text("Host not allowed",403);let L=await D.get(E);if(L)return new Response(L.body,{status:200,headers:$d(L.contentType,L.cacheControl)});try{let M=await fetch(E,{headers:{Accept:y.req.header("Accept")||"*/*"},redirect:"follow"});if(!M.ok)return y.text(`Upstream ${M.status}`,M.status);let H=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:H,cacheControl:G})}catch{}})(),new Response(he,{status:M.status,headers:$d(H,G)})}return new Response(null,{status:M.status,headers:$d(H,G)})}catch(M){return y.text(`Proxy fetch failed: ${M instanceof Error?M.message:M}`,502)}}(i||o)&&S.get("/__reload",y=>SR(y,async E=>{let N=()=>{E.writeSSE({event:"reload",data:""})},L=M=>{E.writeSSE({event:"message",data:JSON.stringify(M)})};for(i?.on("reload",N),o?.on("message",L),o&&o.listenerCount("message")===1&&console.log("[page] connected"),E.onAbort(()=>{i?.removeListener("reload",N),o?.removeListener("message",L),R=Date.now()}),await E.writeSSE({event:"hello",data:b});!E.aborted;)await E.sleep(3e4)})),S.notFound(async y=>{if(y.req.method!=="GET")return y.text("Not Found",404);let E=new URL(y.req.url);return mw(E.pathname,E.search)?K(y,"https://esm.sh"+E.pathname+E.search):y.text("Not Found",404)});let
|
|
2340
|
+
`+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:mu(ke)}})();return ya(y,he)}catch(E){return y.json(Ps(E),500)}});let $=async y=>{let{hash:E}=await y.req.json().catch(()=>({}));return typeof E=="string"?gu(E):null};S.post("/__infer-save",async y=>{try{if(!c)return y.json({message:"Save is not available for this server.",code:"unknown",retryable:!1},400);let E=await $(y);return E?(await c(E.data,E.insightJson),y.json({ok:!0})):y.json({message:"No decodable #tb= fragment to save.",code:"unknown",retryable:!1},400)}catch(E){return y.json(Ps(E),500)}}),S.get("/__infer-info",y=>{let E=l?.(),N=ir(E?.config??"").inference,L=Ii(E?.data??""),M=ot();return typeof M=="string"?y.json({error:M,inference:N,data:L}):y.json({provider:M.protocol,model:M.model,inference:N,data:L})}),S.use("/__infer-decode",C),S.post("/__infer-decode",async y=>y.json(await $(y)??{error:"invalid fragment"})),S.get("/__infer-ui.js",y=>y.body(hw,200,{"Content-Type":"text/javascript; charset=utf-8"})),S.get("/__models",async y=>{try{let E=await it();return y.json(E)}catch{return y.json([],200)}}),S.get("/__ai-access",async y=>{try{return y.json(await ko())}catch{return y.json("none",200)}}),h&&S.get("/__source/*",async y=>{let E=await Ld.readFile(h,"utf-8").catch(()=>{});return E===void 0?y.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 ga;S.get("/proxy/*",async y=>{let E=new URL(y.req.url),L=(E.pathname+E.search).slice(7),M=L.lastIndexOf("https://");return M===-1?y.text("Invalid proxy URL",400):K(y,L.slice(M))}),d&&gw(S,`/local/${d.name}/`,d.serveDir),p&&gw(S,p.mount,p.dir),m&&S.get("/assets/*",async y=>{let{pathname:E}=new URL(y.req.url),N=E.slice(8),L;try{L=decodeURIComponent(N)}catch{return y.text("Not Found",404)}let M=uf(L);if(M)return y.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 bw(L,G,{"Cache-Control":"no-cache"});if(he)return he}}catch{return y.text("Not Found",404)}let H=m.remoteBase;return H?y.redirect(H+N,302):y.text("Not Found",404)});async function K(y,E){let N;try{N=new URL(E)}catch{return y.text("Invalid URL",400)}if(N.protocol!=="https:")return y.text("HTTPS only",400);if(!x.includes(N.hostname))return y.text("Host not allowed",403);let L=await D.get(E);if(L)return new Response(L.body,{status:200,headers:$d(L.contentType,L.cacheControl)});try{let M=await fetch(E,{headers:{Accept:y.req.header("Accept")||"*/*"},redirect:"follow"});if(!M.ok)return y.text(`Upstream ${M.status}`,M.status);let H=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:H,cacheControl:G})}catch{}})(),new Response(he,{status:M.status,headers:$d(H,G)})}return new Response(null,{status:M.status,headers:$d(H,G)})}catch(M){return y.text(`Proxy fetch failed: ${M instanceof Error?M.message:M}`,502)}}(i||o)&&S.get("/__reload",y=>SR(y,async E=>{let N=()=>{E.writeSSE({event:"reload",data:""})},L=M=>{E.writeSSE({event:"message",data:JSON.stringify(M)})};for(i?.on("reload",N),o?.on("message",L),o&&o.listenerCount("message")===1&&console.log("[page] connected"),E.onAbort(()=>{i?.removeListener("reload",N),o?.removeListener("message",L),R=Date.now()}),await E.writeSSE({event:"hello",data:b});!E.aborted;)await E.sleep(3e4)})),S.notFound(async y=>{if(y.req.method!=="GET")return y.text("Not Found",404);let E=new URL(y.req.url);return mw(E.pathname,E.search)?K(y,"https://esm.sh"+E.pathname+E.search):y.text("Not Found",404)});let U=vR({fetch:S.fetch,port:s,hostname:kR});return U.listening||await new Promise((y,E)=>{let N=L=>E(L);U.once("error",N),U.once("listening",()=>{U.removeListener("error",N),y()})}),{port:s,close:()=>U.close()}}function $d(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 gw(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 bw(decodeURIComponent(s.slice(e.length)),t)??r.text("Not Found",404)}catch{return r.text("Not Found",404)}})}async function bw(n,e,t={}){let r=Eo(n,e),s=await Ld.readFile(r).catch(()=>{});if(s)return new Response(s,{headers:{"Content-Type":cf(r),...t}})}Be();Kn();async function Sa(n){let{port:e,portNote:t,makeServerOptions:r,makeEntry:s,displayName:i,stopLog:o}=n,a=await yw(r(e)).catch(async u=>{if(u?.code!=="EADDRINUSE")throw u;return Eu(e)}),l=`http://localhost:${e}`;await Um(s(e,l)),console.log(`
|
|
2324
2341
|
${i}`),console.log(` ${l}`),t&&console.log(` ${t}`);let c=[],d=async()=>{console.log(`
|
|
2325
|
-
Shutting down...`),a.close();for(let u of c)try{await u()}catch{}o(),await Kr(process.pid),process.exit(0)};return process.on("SIGINT",d),process.on("SIGTERM",d),{port:e,url:l,onCleanup(u){c.push(u)}}}Kn();import PR from"chokidar";var CR={persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50}};function Dt(n){let{target:e,onChange:t,events:r="change",debounceMs:s=150}=n,i,o=PR.watch(e,CR);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()}}Be();async function vw(n,e,t,r){let s=process.cwd(),i=Hi(process.pid),o=e.watch?new ww:void 0,a=new ww;a.setMaxListeners(0);let l=Te(e.mode),c=await Fc(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 No({explicit:e.port,target:{kind:"bulb",file:n},cwd:process.cwd()}),f=1;console.log(Bc(f)),e.batch&&await
|
|
2342
|
+
Shutting down...`),a.close();for(let u of c)try{await u()}catch{}o(),await Kr(process.pid),process.exit(0)};return process.on("SIGINT",d),process.on("SIGTERM",d),{port:e,url:l,onCleanup(u){c.push(u)}}}Kn();import PR from"chokidar";var CR={persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50}};function Dt(n){let{target:e,onChange:t,events:r="change",debounceMs:s=150}=n,i,o=PR.watch(e,CR);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()}}Be();async function vw(n,e,t,r){let s=process.cwd(),i=Hi(process.pid),o=e.watch?new ww:void 0,a=new ww;a.setMaxListeners(0);let l=Te(e.mode),c=await Fc(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 No({explicit:e.port,target:{kind:"bulb",file:n},cwd:process.cwd()}),f=1;console.log(Bc(f)),e.batch&&await Un(n,e.batch),console.log(`Loading ${ka.basename(n)}...`);let{html:p,bulb:m,serverExports:h}=await Su(n,e.watch,e.trust,r,e.batch);Rt(l,n,m.server);let b=[...e.batch?[It(n,e.batch)]:[],It(n)],A=Jn(ka.resolve(n)),S=e.trust?void 0:Hn(m),{port:P,url:_,onCleanup:C}=await Sa({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 U=await jt.readFile(n,"utf-8");U=sr(U,"data",D.join(cm)),U=sr(U,"insight",K),await jt.writeFile(n,U)},localOverride:r?{name:r.name,serveDir:r.serveDir}:void 0,bulbAssets:{dirs:b,remoteBase:A&&Ls(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:
|
|
2326
2343
|
${t}
|
|
2327
2344
|
`:` trust: restricted \u2014 re-run with --trust to enable filesystem / AI / server.ts
|
|
2328
2345
|
`),e.watch&&console.log(` Watching for changes...
|
|
2329
|
-
`);let R,$;if(e.watch&&o){let x=0,D=Promise.resolve();if(R=Dt({target:n,onChange:()=>{let K=++x;D=D.then(async()=>{if(K===x)try{console.log("Recompiling...");let
|
|
2330
|
-
`),o.emit("reload")}})}for(let K of b)await jt.stat(K).then(
|
|
2346
|
+
`);let R,$;if(e.watch&&o){let x=0,D=Promise.resolve();if(R=Dt({target:n,onChange:()=>{let K=++x;D=D.then(async()=>{if(K===x)try{console.log("Recompiling...");let U=await Su(n,!0,e.trust,r,e.batch);p=U.html,h=U.serverExports,m=U.bulb,f++,console.log(Bc(f)),o.emit("reload")}catch(U){console.error("Compile error:",U)}})}}),r){let{name:K,serveDir:U}=r;$=Dt({target:U,events:"all",onChange:()=>{console.log(`Local package '${K}' changed. Browser reloading...
|
|
2347
|
+
`),o.emit("reload")}})}for(let K of b)await jt.stat(K).then(U=>U.isDirectory()).catch(()=>!1)&&C(Dt({target:K,events:"all",onChange:()=>{console.log(`Assets changed. Browser reloading...
|
|
2331
2348
|
`),o.emit("reload")}}))}R&&C(R),$&&C($),C(()=>jt.rm(vu(n),{force:!0})),e.open&&(c.some(x=>x.port===P)?console.log(` Reusing the open browser tab.
|
|
2332
2349
|
`):await RR(_))}st();import{readFileSync as kw,copyFileSync as NR,existsSync as IR}from"fs";import*as fe from"path";import{fileURLToPath as $R}from"url";import{EventEmitter as LR}from"events";import xw from"open";Kn();Be();lo();var Md=n=>`/agents/${n}/client.js`,_R=`
|
|
2333
2350
|
(() => {
|
|
@@ -2389,9 +2406,9 @@ ${_R}
|
|
|
2389
2406
|
</html>`}async function Ew(n){let e=process.cwd(),t=n.agentTarget;vb(t)||(console.error(`Unknown agent '${t}'. Known: ${tr().join(", ")}.`),process.exit(1));let r=await jc(e,t);if(r){console.log(`Mirror '${t}' is already running for this project:
|
|
2390
2407
|
${r.url}`),n.open&&await xw(r.url);return}let s=Hi(process.pid),i=n.watch?new LR:void 0,o=Te(n.mode),a=await kb(t),l=a.displayName||`${t} mirror`;Rt(o,fe.join(e,"mirror"));let c=fe.dirname($R(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=()=>Sw({name:l,agent:t,styles:kw(f,"utf8"),mountHtml:kw(p,"utf8"),watch:n.watch}),{port:h,note:b}=await No({explicit:n.port,target:{kind:"mirror",agent:t},cwd:e}),{port:A,url:S,onCleanup:P}=await Sa({port:h,portNote:b,displayName:l,stopLog:s,makeServerOptions:x=>({getHtml:m,basePath:e,port:x,reloadEmitter:i,getServerExports:()=>a,trusted:!0,staticAssets:{mount:`${fe.posix.dirname(Md(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...
|
|
2391
2408
|
`);let _=fe.join(u,t,"client"),C=fe.join(u,"core","client");async function R(){await(await import("esbuild")).build({entryPoints:[fe.join(_,"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"])NR(fe.join(C,D),fe.join(d,D))}let $;if(n.watch&&i){let x=IR(_),D=!1;$=Dt({target:x?u:d,events:"all",onChange:async()=>{if(!D){D=!0;try{x&&await R(),console.log(`Mirror rebuilt. Browser reloading...
|
|
2392
|
-
`),i.emit("reload")}catch(K){console.error("Mirror rebuild failed:",K instanceof Error?K.message:K)}finally{D=!1}}}})}n.open&&await xw(S),P(()=>a.shutdownSwitcher?.()),P(()=>a.shutdownComposer?.()),$&&P($)}st();Ve();import*as Aw from"path";async function Tw(n,e,t,r,s){let i=Te(t),o=!1;s&&await
|
|
2393
|
-
`);let l=0,c=Promise.resolve();Dt({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)}})}})}}st();Ve();import{Console as MR}from"node:console";Be();async function Cw(n,e,t,r,s){
|
|
2409
|
+
`),i.emit("reload")}catch(K){console.error("Mirror rebuild failed:",K instanceof Error?K.message:K)}finally{D=!1}}}})}n.open&&await xw(S),P(()=>a.shutdownSwitcher?.()),P(()=>a.shutdownComposer?.()),$&&P($)}st();Ve();import*as Aw from"path";async function Tw(n,e,t,r,s){let i=Te(t),o=!1;s&&await Un(n,s);let a=async()=>{let{bulb:l,config:c}=await Ue(n);o||(Rt(i,n,l.server),o=!0),await ls(l.server,n,r,c.dependencies,s)};if(console.log(`Running ${Aw.basename(n)}...`),await a(),e){console.log(`Watching for changes...
|
|
2410
|
+
`);let l=0,c=Promise.resolve();Dt({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)}})}})}}st();Ve();import{Console as MR}from"node:console";Be();async function Cw(n,e,t,r,s){qR();try{let p=Cn(await Q(),n)[0];p&&(Ki(p.pid,We(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=Te(t),{bulb:o,config:a}=await Ue(n);o.server||Cs("This bulb has no **server.ts** block; nothing to call."),Rt(i,n,o.server),s&&await Un(n,s);let l;try{l=await ls(o.server,n,r,a.dependencies,s)}catch(p){Cs(p instanceof Error?p.message:String(p))}let c=wa(l,e.fn);if(!c){let p=[...Object.keys(l).filter(m=>typeof l[m]=="function"),...Object.keys(ba)];Cs(`Function '${e.fn}' not found. Available: ${p.length?p.join(", "):"(none)"}.`)}let d=await BR(e);if(va(c)){try{for await(let p of c(...d))await Pw(JSON.stringify(p,Rw)+`
|
|
2394
2411
|
`)}catch(p){Cs(p instanceof Error?p.stack??p.message:String(p))}return Ow(0)}let u;try{u=await c(...d)}catch(p){Cs(p instanceof Error?p.stack??p.message:String(p))}let f=FR(u);f!==void 0&&await Pw(f+`
|
|
2395
|
-
`),Ow(0)}function Ow(n){process.exitCode=n,setTimeout(()=>process.exit(n),2e3).unref?.()}async function BR(n){if(n.hasArgsFlag){let e=n.argsJson??"";return e==="-"&&(e=await
|
|
2396
|
-
`),process.exit(1)}function
|
|
2397
|
-
${e}`),process.exit(1))}async function JR(){let n=Ab(process.argv.slice(2));if(n.version&&(console.log(`typebulb ${Me}`),process.exit(0)),n.help&&(Tb(),process.exit(0)),xb(),n.subcommand==="logs"){await nw(n.file||void 0,{follow:n.follow,clear:n.clear,run:n.run,lines:n.lines});return}if(n.subcommand==="wait"){await rw(n.file||void 0,{match:n.match,timeoutSec:n.timeoutSec});return}if(n.subcommand==="stop"){n.stopScope?await iw(n.stopScope):await sw(n.file||void 0);return}if(n.subcommand==="send"){await aw(n.file,n.sendMessage,n.sendWaitMs??0);return}if(n.subcommand==="models"){await Xb(n.mode);return}if(n.subcommand==="slug"){Qb(n.slugName);return}if(n.subcommand==="pull"){await ly(n.file||void 0,{force:n.force,mode:n.mode});return}if(n.subcommand==="push"){await uy(n.file||void 0,{force:n.force,mode:n.mode});return}if(n.subcommand==="agent"){await(n.agentTarget?Ew(n):Gb(Me));return}if(n.subcommand==="trust"||n.subcommand==="untrust"){await Yb(n.file||void 0,n.subcommand==="trust");return}let e;if(!n.file||n.file==="."){let l=await Jg(process.cwd());l||(console.error("No .bulb.md file found in current directory"),process.exit(1)),e=l}else e=ut.resolve(n.file);if(await Nw.access(e).then(()=>!0,()=>!1)||(tr().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}`+(ut.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 cw(e,n.blockKind);return}if(n.subcommand==="put"){await fw(e,n.blockPairs);return}let r=n.file&&n.file!=="."?n.file:ut.relative(process.cwd(),e)||ut.basename(e),s=`npx typebulb --trust ${r.includes(" ")?`"${r}"`:r}`;if(n.subcommand==="predict"){await Wb(e,s);return}let i=!n.noTrust&&sn(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
|
|
2412
|
+
`),Ow(0)}function Ow(n){process.exitCode=n,setTimeout(()=>process.exit(n),2e3).unref?.()}async function BR(n){if(n.hasArgsFlag){let e=n.argsJson??"";return e==="-"&&(e=await UR()),jR(e)}return DR(n.positional)}function DR(n){return n.map(e=>{try{return JSON.parse(e)}catch{return e}})}function jR(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 FR(n){if(n!==void 0)return JSON.stringify(n,Rw,2)}function Rw(n,e){return typeof e=="bigint"?e.toString():e}function Cs(n){process.stderr.write(n+`
|
|
2413
|
+
`),process.exit(1)}function qR(){let n=new MR(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 Pw(n){return new Promise((e,t)=>{process.stdout.write(n,r=>r?t(r):e())})}async function UR(){let n=[];for await(let e of process.stdin)n.push(e);return Buffer.concat(n).toString("utf-8")}Ui();for(let n of[process.stdout,process.stderr])n.on("error",e=>{if(e?.code!=="EPIPE")throw e});function _w(n,e){n||(console.error(`This bulb runs server-side Node code (server.ts), which --trust must authorize:
|
|
2414
|
+
${e}`),process.exit(1))}async function JR(){let n=Ab(process.argv.slice(2));if(n.version&&(console.log(`typebulb ${Me}`),process.exit(0)),n.help&&(Tb(),process.exit(0)),xb(),n.subcommand==="logs"){await nw(n.file||void 0,{follow:n.follow,clear:n.clear,run:n.run,lines:n.lines});return}if(n.subcommand==="wait"){await rw(n.file||void 0,{match:n.match,timeoutSec:n.timeoutSec});return}if(n.subcommand==="stop"){n.stopScope?await iw(n.stopScope):await sw(n.file||void 0);return}if(n.subcommand==="send"){await aw(n.file,n.sendMessage,n.sendWaitMs??0);return}if(n.subcommand==="models"){await Xb(n.mode);return}if(n.subcommand==="slug"){Qb(n.slugName);return}if(n.subcommand==="pull"){await ly(n.file||void 0,{force:n.force,mode:n.mode});return}if(n.subcommand==="push"){await uy(n.file||void 0,{force:n.force,mode:n.mode});return}if(n.subcommand==="agent"){await(n.agentTarget?Ew(n):Gb(Me));return}if(n.subcommand==="trust"||n.subcommand==="untrust"){await Yb(n.file||void 0,n.subcommand==="trust");return}let e;if(!n.file||n.file==="."){let l=await Jg(process.cwd());l||(console.error("No .bulb.md file found in current directory"),process.exit(1)),e=l}else e=ut.resolve(n.file);if(await Nw.access(e).then(()=>!0,()=>!1)||(tr().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}`+(ut.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 cw(e,n.blockKind);return}if(n.subcommand==="put"){await fw(e,n.blockPairs);return}let r=n.file&&n.file!=="."?n.file:ut.relative(process.cwd(),e)||ut.basename(e),s=`npx typebulb --trust ${r.includes(" ")?`"${r}"`:r}`;if(n.subcommand==="predict"){await Wb(e,s);return}let i=!n.noTrust&&sn(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 Ue(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 Yd(n.local)}catch(l){console.error(l instanceof Error?l.message:String(l)),process.exit(1)}console.error(`replace: ${a.name} \u2192 ${ut.relative(process.cwd(),a.dir)||"."}`)}if(n.subcommand==="check"){await Hb(e,a);return}if(n.subcommand==="call"){_w(n.trust,s),await Cw(e,{fn:n.fn,positional:n.callArgs,argsJson:n.argsJson,hasArgsFlag:n.hasArgsFlag},n.mode,a,n.batch);return}if(o&&o.bulb.server&&(Yi(o.bulb)||n.server)){_w(n.trust,s),await Tw(e,n.watch,n.mode,a,n.batch);return}await vw(e,n,s,a)}JR().catch(n=>{console.error("Error:",n.message),process.exit(1)});
|