typebulb 0.19.0 → 0.19.1
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/dist/agents/claude/client.js +4 -6
- package/dist/agents/pi/client.js +4 -6
- package/dist/dts/tbTypings.d.ts +2 -2
- package/dist/dts/tbTypings.d.ts.map +1 -1
- package/dist/dts/tbTypings.js +0 -2
- package/dist/dts/tbTypings.js.map +1 -1
- package/dist/index.js +67 -71
- package/dist/render.js +4 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9,14 +9,14 @@ ${s}
|
|
|
9
9
|
${o}`});return["---",`format: ${Jc}`,`name: ${Ci(r.name)}`,"---","",...e].join(`
|
|
10
10
|
`)}var Qc=C(()=>{gn();yn()});function Xc(r){if(!r.trim())return{};try{return JSON.parse(r)}catch{return{}}}var Zc=C(()=>{});var el=C(()=>{});function Ni(r,e,t){let s=new RegExp(e).exec(r.slice(t));return s?t+s.index:-1}var tl=C(()=>{});function er(r,e,t){let s=new RegExp(e).exec(r.slice(t));return s?t+s.index+s[0].length-1:-1}var rl=C(()=>{});function bn(r,e){let t=new RegExp(e,"g"),n=r.match(t);return n?n.length:0}var nl=C(()=>{});function tr(r,e,t){let n=t&&t.debug||!1,s=!(t&&typeof t.nested===!1),i=t&&t.startIndex||0;n&&console.log("[xml-utils] starting findTagByName with",e," and ",t);let o=Ni(r,`<${e}[
|
|
11
11
|
>/]`,i);if(n&&console.log("[xml-utils] start:",o),o===-1)return;let a=r.slice(o+e.length),c=er(a,"^[^<]*[ /]>",0),l=c!==-1&&a[c-1]==="/";if(n&&console.log("[xml-utils] selfClosing:",l),l===!1)if(s){let p=0,m=1,h=0;for(;(c=er(a,"[ /]"+e+">",p))!==-1;){let y=a.substring(p,c+1);if(m+=bn(y,"<"+e+`[
|
|
12
|
-
>]`),h+=bn(y,"</"+e+">"),h>=m)break;p=c}}else c=er(a,"[ /]"+e+">",0);let f=o+e.length+c+1;if(n&&console.log("[xml-utils] end:",f),f===-1)return;let u=r.slice(o,f),d;return l?d=null:d=u.slice(u.indexOf(">")+1,u.lastIndexOf("<")),{inner:d,outer:u,start:o,end:f}}var _i=C(()=>{tl();rl();nl()});var Ii=C(()=>{_i()});var Li=C(()=>{Ii()});var sl=C(()=>{Li()});var il=C(()=>{});var ol=C(()=>{el();_i();Ii();sl();Li();il()});var _=T(
|
|
12
|
+
>]`),h+=bn(y,"</"+e+">"),h>=m)break;p=c}}else c=er(a,"[ /]"+e+">",0);let f=o+e.length+c+1;if(n&&console.log("[xml-utils] end:",f),f===-1)return;let u=r.slice(o,f),d;return l?d=null:d=u.slice(u.indexOf(">")+1,u.lastIndexOf("<")),{inner:d,outer:u,start:o,end:f}}var _i=C(()=>{tl();rl();nl()});var Ii=C(()=>{_i()});var Li=C(()=>{Ii()});var sl=C(()=>{Li()});var il=C(()=>{});var ol=C(()=>{el();_i();Ii();sl();Li();il()});var _=T(z=>{"use strict";var $i=Symbol.for("yaml.alias"),al=Symbol.for("yaml.document"),wn=Symbol.for("yaml.map"),cl=Symbol.for("yaml.pair"),Mi=Symbol.for("yaml.scalar"),vn=Symbol.for("yaml.seq"),Te=Symbol.for("yaml.node.type"),lm=r=>!!r&&typeof r=="object"&&r[Te]===$i,um=r=>!!r&&typeof r=="object"&&r[Te]===al,fm=r=>!!r&&typeof r=="object"&&r[Te]===wn,dm=r=>!!r&&typeof r=="object"&&r[Te]===cl,ll=r=>!!r&&typeof r=="object"&&r[Te]===Mi,pm=r=>!!r&&typeof r=="object"&&r[Te]===vn;function ul(r){if(r&&typeof r=="object")switch(r[Te]){case wn:case vn:return!0}return!1}function hm(r){if(r&&typeof r=="object")switch(r[Te]){case $i:case wn:case Mi:case vn:return!0}return!1}var mm=r=>(ll(r)||ul(r))&&!!r.anchor;z.ALIAS=$i;z.DOC=al;z.MAP=wn;z.NODE_TYPE=Te;z.PAIR=cl;z.SCALAR=Mi;z.SEQ=vn;z.hasAnchor=mm;z.isAlias=lm;z.isCollection=ul;z.isDocument=um;z.isMap=fm;z.isNode=hm;z.isPair=dm;z.isScalar=ll;z.isSeq=pm});var rr=T(Di=>{"use strict";var H=_(),te=Symbol("break visit"),fl=Symbol("skip children"),be=Symbol("remove node");function Sn(r,e){let t=dl(e);H.isDocument(r)?St(null,r.contents,t,Object.freeze([r]))===be&&(r.contents=null):St(null,r,t,Object.freeze([]))}Sn.BREAK=te;Sn.SKIP=fl;Sn.REMOVE=be;function St(r,e,t,n){let s=pl(r,e,t,n);if(H.isNode(s)||H.isPair(s))return hl(r,n,s),St(r,s,t,n);if(typeof s!="symbol"){if(H.isCollection(e)){n=Object.freeze(n.concat(e));for(let i=0;i<e.items.length;++i){let o=St(i,e.items[i],t,n);if(typeof o=="number")i=o-1;else{if(o===te)return te;o===be&&(e.items.splice(i,1),i-=1)}}}else if(H.isPair(e)){n=Object.freeze(n.concat(e));let i=St("key",e.key,t,n);if(i===te)return te;i===be&&(e.key=null);let o=St("value",e.value,t,n);if(o===te)return te;o===be&&(e.value=null)}}return s}async function xn(r,e){let t=dl(e);H.isDocument(r)?await xt(null,r.contents,t,Object.freeze([r]))===be&&(r.contents=null):await xt(null,r,t,Object.freeze([]))}xn.BREAK=te;xn.SKIP=fl;xn.REMOVE=be;async function xt(r,e,t,n){let s=await pl(r,e,t,n);if(H.isNode(s)||H.isPair(s))return hl(r,n,s),xt(r,s,t,n);if(typeof s!="symbol"){if(H.isCollection(e)){n=Object.freeze(n.concat(e));for(let i=0;i<e.items.length;++i){let o=await xt(i,e.items[i],t,n);if(typeof o=="number")i=o-1;else{if(o===te)return te;o===be&&(e.items.splice(i,1),i-=1)}}}else if(H.isPair(e)){n=Object.freeze(n.concat(e));let i=await xt("key",e.key,t,n);if(i===te)return te;i===be&&(e.key=null);let o=await xt("value",e.value,t,n);if(o===te)return te;o===be&&(e.value=null)}}return s}function dl(r){return typeof r=="object"&&(r.Collection||r.Node||r.Value)?Object.assign({Alias:r.Node,Map:r.Node,Scalar:r.Node,Seq:r.Node},r.Value&&{Map:r.Value,Scalar:r.Value,Seq:r.Value},r.Collection&&{Map:r.Collection,Seq:r.Collection},r):r}function pl(r,e,t,n){if(typeof t=="function")return t(r,e,n);if(H.isMap(e))return t.Map?.(r,e,n);if(H.isSeq(e))return t.Seq?.(r,e,n);if(H.isPair(e))return t.Pair?.(r,e,n);if(H.isScalar(e))return t.Scalar?.(r,e,n);if(H.isAlias(e))return t.Alias?.(r,e,n)}function hl(r,e,t){let n=e[e.length-1];if(H.isCollection(n))n.items[r]=t;else if(H.isPair(n))r==="key"?n.key=t:n.value=t;else if(H.isDocument(n))n.contents=t;else{let s=H.isAlias(n)?"alias":"scalar";throw new Error(`Cannot replace node with ${s} parent`)}}Di.visit=Sn;Di.visitAsync=xn});var Bi=T(gl=>{"use strict";var ml=_(),gm=rr(),ym={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},bm=r=>r.replace(/[!,[\]{}]/g,e=>ym[e]),nr=class r{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},r.defaultYaml,e),this.tags=Object.assign({},r.defaultTags,t)}clone(){let e=new r(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new r(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:r.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},r.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:r.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},r.defaultTags),this.atNextDocument=!1);let n=e.trim().split(/[ \t]+/),s=n.shift();switch(s){case"%TAG":{if(n.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),n.length<2))return!1;let[i,o]=n;return this.tags[i]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,n.length!==1)return t(0,"%YAML directive should contain exactly one part"),!1;let[i]=n;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[,n,s]=e.match(/^(.*!)([^!]*)$/s);s||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(s)}catch(o){return t(String(o)),null}return n==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+bm(e.substring(n.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],n=Object.entries(this.tags),s;if(e&&n.length>0&&ml.isNode(e.contents)){let i={};gm.visit(e.contents,(o,a)=>{ml.isNode(a)&&a.tag&&(i[a.tag]=!0)}),s=Object.keys(i)}else s=[];for(let[i,o]of n)i==="!!"&&o==="tag:yaml.org,2002:"||(!e||s.some(a=>a.startsWith(o)))&&t.push(`%TAG ${i} ${o}`);return t.join(`
|
|
13
13
|
`)}};nr.defaultYaml={explicit:!1,version:"1.2"};nr.defaultTags={"!!":"tag:yaml.org,2002:"};gl.Directives=nr});var kn=T(sr=>{"use strict";var yl=_(),wm=rr();function vm(r){if(/[\x00-\x19\s,[\]{}]/.test(r)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(r)}`;throw new Error(t)}return!0}function bl(r){let e=new Set;return wm.visit(r,{Value(t,n){n.anchor&&e.add(n.anchor)}}),e}function wl(r,e){for(let t=1;;++t){let n=`${r}${t}`;if(!e.has(n))return n}}function Sm(r,e){let t=[],n=new Map,s=null;return{onAnchor:i=>{t.push(i),s??(s=bl(r));let o=wl(e,s);return s.add(o),o},setAnchors:()=>{for(let i of t){let o=n.get(i);if(typeof o=="object"&&o.anchor&&(yl.isScalar(o.node)||yl.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:n}}sr.anchorIsValid=vm;sr.anchorNames=bl;sr.createNodeAnchors=Sm;sr.findNewAnchor=wl});var ji=T(vl=>{"use strict";function ir(r,e,t,n){if(n&&typeof n=="object")if(Array.isArray(n))for(let s=0,i=n.length;s<i;++s){let o=n[s],a=ir(r,n,String(s),o);a===void 0?delete n[s]:a!==o&&(n[s]=a)}else if(n instanceof Map)for(let s of Array.from(n.keys())){let i=n.get(s),o=ir(r,n,s,i);o===void 0?n.delete(s):o!==i&&n.set(s,o)}else if(n instanceof Set)for(let s of Array.from(n)){let i=ir(r,n,s,s);i===void 0?n.delete(s):i!==s&&(n.delete(s),n.add(i))}else for(let[s,i]of Object.entries(n)){let o=ir(r,n,s,i);o===void 0?delete n[s]:o!==i&&(n[s]=o)}return r.call(e,t,n)}vl.applyReviver=ir});var Ie=T(xl=>{"use strict";var xm=_();function Sl(r,e,t){if(Array.isArray(r))return r.map((n,s)=>Sl(n,String(s),t));if(r&&typeof r.toJSON=="function"){if(!t||!xm.hasAnchor(r))return r.toJSON(e,t);let n={aliasCount:0,count:1,res:void 0};t.anchors.set(r,n),t.onCreate=i=>{n.res=i,delete t.onCreate};let s=r.toJSON(e,t);return t.onCreate&&t.onCreate(s),s}return typeof r=="bigint"&&!t?.keep?Number(r):r}xl.toJS=Sl});var En=T(El=>{"use strict";var km=ji(),kl=_(),Em=Ie(),Fi=class{constructor(e){Object.defineProperty(this,kl.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:n,onAnchor:s,reviver:i}={}){if(!kl.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 n=="number"?n:100},a=Em.toJS(this,"",o);if(typeof s=="function")for(let{count:c,res:l}of o.anchors.values())s(l,c);return typeof i=="function"?km.applyReviver(i,{"":a},"",a):a}};El.NodeBase=Fi});var or=T(Al=>{"use strict";var Am=kn(),Tm=rr(),kt=_(),Pm=En(),Om=Ie(),qi=class extends Pm.NodeBase{constructor(e){super(kt.ALIAS),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,t){let n;t?.aliasResolveCache?n=t.aliasResolveCache:(n=[],Tm.visit(e,{Node:(i,o)=>{(kt.isAlias(o)||kt.hasAnchor(o))&&n.push(o)}}),t&&(t.aliasResolveCache=n));let s;for(let i of n){if(i===this)break;i.anchor===this.source&&(s=i)}return s}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:s,maxAliasCount:i}=t,o=this.resolve(s,t);if(!o){let c=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(c)}let a=n.get(o);if(a||(Om.toJS(o,null,t),a=n.get(o)),a?.res===void 0){let c="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(c)}if(i>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=An(s,o,n)),a.count*a.aliasCount>i)){let c="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(c)}return a.res}toString(e,t,n){let s=`*${this.source}`;if(e){if(Am.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 An(r,e,t){if(kt.isAlias(e)){let n=e.resolve(r),s=t&&n&&t.get(n);return s?s.count*s.aliasCount:0}else if(kt.isCollection(e)){let n=0;for(let s of e.items){let i=An(r,s,t);i>n&&(n=i)}return n}else if(kt.isPair(e)){let n=An(r,e.key,t),s=An(r,e.value,t);return Math.max(n,s)}return 1}Al.Alias=qi});var U=T(Ui=>{"use strict";var Cm=_(),Rm=En(),Nm=Ie(),_m=r=>!r||typeof r!="function"&&typeof r!="object",Le=class extends Rm.NodeBase{constructor(e){super(Cm.SCALAR),this.value=e}toJSON(e,t){return t?.keep?this.value:Nm.toJS(this.value,e,t)}toString(){return String(this.value)}};Le.BLOCK_FOLDED="BLOCK_FOLDED";Le.BLOCK_LITERAL="BLOCK_LITERAL";Le.PLAIN="PLAIN";Le.QUOTE_DOUBLE="QUOTE_DOUBLE";Le.QUOTE_SINGLE="QUOTE_SINGLE";Ui.Scalar=Le;Ui.isScalarValue=_m});var ar=T(Pl=>{"use strict";var Im=or(),Xe=_(),Tl=U(),Lm="tag:yaml.org,2002:";function $m(r,e,t){if(e){let n=t.filter(i=>i.tag===e),s=n.find(i=>!i.format)??n[0];if(!s)throw new Error(`Tag ${e} not found`);return s}return t.find(n=>n.identify?.(r)&&!n.format)}function Mm(r,e,t){if(Xe.isDocument(r)&&(r=r.contents),Xe.isNode(r))return r;if(Xe.isPair(r)){let u=t.schema[Xe.MAP].createNode?.(t.schema,null,t);return u.items.push(r),u}(r instanceof String||r instanceof Number||r instanceof Boolean||typeof BigInt<"u"&&r instanceof BigInt)&&(r=r.valueOf());let{aliasDuplicateObjects:n,onAnchor:s,onTagObj:i,schema:o,sourceObjects:a}=t,c;if(n&&r&&typeof r=="object"){if(c=a.get(r),c)return c.anchor??(c.anchor=s(r)),new Im.Alias(c.anchor);c={anchor:null,node:null},a.set(r,c)}e?.startsWith("!!")&&(e=Lm+e.slice(2));let l=$m(r,e,o.tags);if(!l){if(r&&typeof r.toJSON=="function"&&(r=r.toJSON()),!r||typeof r!="object"){let u=new Tl.Scalar(r);return c&&(c.node=u),u}l=r instanceof Map?o[Xe.MAP]:Symbol.iterator in Object(r)?o[Xe.SEQ]:o[Xe.MAP]}i&&(i(l),delete t.onTagObj);let f=l?.createNode?l.createNode(t.schema,r,t):typeof l?.nodeClass?.from=="function"?l.nodeClass.from(t.schema,r,t):new Tl.Scalar(r);return e?f.tag=e:l.default||(f.tag=l.tag),c&&(c.node=f),f}Pl.createNode=Mm});var Pn=T(Tn=>{"use strict";var Dm=ar(),we=_(),Bm=En();function Ji(r,e,t){let n=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]=n,n=o}else n=new Map([[i,n]])}return Dm.createNode(n,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:r,sourceObjects:new Map})}var Ol=r=>r==null||typeof r=="object"&&!!r[Symbol.iterator]().next().done,Ki=class extends Bm.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(n=>we.isNode(n)||we.isPair(n)?n.clone(e):n),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Ol(e))this.add(t);else{let[n,...s]=e,i=this.get(n,!0);if(we.isCollection(i))i.addIn(s,t);else if(i===void 0&&this.schema)this.set(n,Ji(this.schema,s,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${s}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let s=this.get(t,!0);if(we.isCollection(s))return s.deleteIn(n);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...s]=e,i=this.get(n,!0);return s.length===0?!t&&we.isScalar(i)?i.value:i:we.isCollection(i)?i.getIn(s,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!we.isPair(t))return!1;let n=t.value;return n==null||e&&we.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let s=this.get(t,!0);return we.isCollection(s)?s.hasIn(n):!1}setIn(e,t){let[n,...s]=e;if(s.length===0)this.set(n,t);else{let i=this.get(n,!0);if(we.isCollection(i))i.setIn(s,t);else if(i===void 0&&this.schema)this.set(n,Ji(this.schema,s,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${s}`)}}};Tn.Collection=Ki;Tn.collectionFromPath=Ji;Tn.isEmptyPath=Ol});var cr=T(On=>{"use strict";var jm=r=>r.replace(/^(?!$)(?: $)?/gm,"#");function Wi(r,e){return/^\n+$/.test(r)?r.substring(1):e?r.replace(/^(?! *$)/gm,e):r}var Fm=(r,e,t)=>r.endsWith(`
|
|
14
14
|
`)?Wi(t,e):t.includes(`
|
|
15
15
|
`)?`
|
|
16
|
-
`+Wi(t,e):(r.endsWith(" ")?"":" ")+t;On.indentComment=Wi;On.lineComment=Fm;On.stringifyComment=jm});var Rl=T(lr=>{"use strict";var qm="flow",Hi="block",Cn="quoted";function Um(r,e,t="flow",{indentAtStart:n,lineWidth:s=80,minContentWidth:i=20,onFold:o,onOverflow:a}={}){if(!s||s<0)return r;s<i&&(i=0);let c=Math.max(1+i,1+s-e.length);if(r.length<=c)return r;let l=[],f={},u=s-e.length;typeof n=="number"&&(n>s-Math.max(2,i)?l.push(0):u=s-n);let d,p,m=!1,h=-1,y=-1,
|
|
16
|
+
`+Wi(t,e):(r.endsWith(" ")?"":" ")+t;On.indentComment=Wi;On.lineComment=Fm;On.stringifyComment=jm});var Rl=T(lr=>{"use strict";var qm="flow",Hi="block",Cn="quoted";function Um(r,e,t="flow",{indentAtStart:n,lineWidth:s=80,minContentWidth:i=20,onFold:o,onOverflow:a}={}){if(!s||s<0)return r;s<i&&(i=0);let c=Math.max(1+i,1+s-e.length);if(r.length<=c)return r;let l=[],f={},u=s-e.length;typeof n=="number"&&(n>s-Math.max(2,i)?l.push(0):u=s-n);let d,p,m=!1,h=-1,y=-1,x=-1;t===Hi&&(h=Cl(r,h,e.length),h!==-1&&(u=h+c));for(let g;g=r[h+=1];){if(t===Cn&&g==="\\"){switch(y=h,r[h+1]){case"x":h+=3;break;case"u":h+=5;break;case"U":h+=9;break;default:h+=1}x=h}if(g===`
|
|
17
17
|
`)t===Hi&&(h=Cl(r,h,e.length)),u=h+e.length+c,d=void 0;else{if(g===" "&&p&&p!==" "&&p!==`
|
|
18
18
|
`&&p!==" "){let b=r[h+1];b&&b!==" "&&b!==`
|
|
19
|
-
`&&b!==" "&&(d=h)}if(h>=u)if(d)l.push(d),u=d+c,d=void 0;else if(t===Cn){for(;p===" "||p===" ";)p=g,g=r[h+=1],m=!0;let b=h>
|
|
19
|
+
`&&b!==" "&&(d=h)}if(h>=u)if(d)l.push(d),u=d+c,d=void 0;else if(t===Cn){for(;p===" "||p===" ";)p=g,g=r[h+=1],m=!0;let b=h>x+1?h-2:y-1;if(f[b])return r;l.push(b),f[b]=!0,u=b+c,d=void 0}else m=!0}p=g}if(m&&a&&a(),l.length===0)return r;o&&o();let A=r.slice(0,l[0]);for(let g=0;g<l.length;++g){let b=l[g],v=l[g+1]||r.length;b===0?A=`
|
|
20
20
|
${e}${r.slice(0,v)}`:(t===Cn&&f[b]&&(A+=`${r[b]}\\`),A+=`
|
|
21
21
|
${e}${r.slice(b+1,v)}`)}return A}function Cl(r,e,t){let n=e,s=e+1,i=r[s];for(;i===" "||i===" ";)if(e<s+t)i=r[++e];else{do i=r[++e];while(i&&i!==`
|
|
22
22
|
`);n=e,s=e+1,i=r[s]}return n}lr.FOLD_BLOCK=Hi;lr.FOLD_FLOW=qm;lr.FOLD_QUOTED=Cn;lr.foldFlowLines=Um});var fr=T(Nl=>{"use strict";var fe=U(),$e=Rl(),Nn=(r,e)=>({indentAtStart:e?r.indent.length:r.indentAtStart,lineWidth:r.options.lineWidth,minContentWidth:r.options.minContentWidth}),_n=r=>/^(%|---|\.\.\.)/m.test(r);function Jm(r,e,t){if(!e||e<0)return!1;let n=e-t,s=r.length;if(s<=n)return!1;for(let i=0,o=0;i<s;++i)if(r[i]===`
|
|
@@ -33,30 +33,30 @@ ${t}`)+"'";return e.implicitKey?n:$e.foldFlowLines(n,t,$e.FOLD_FLOW,Nn(e,!1))}fu
|
|
|
33
33
|
`;let u,d;for(d=t.length;d>0;--d){let v=t[d-1];if(v!==`
|
|
34
34
|
`&&v!==" "&&v!==" ")break}let p=t.substring(d),m=p.indexOf(`
|
|
35
35
|
`);m===-1?u="-":t===p||m!==p.length-1?(u="+",i&&i()):u="",p&&(t=t.slice(0,-p.length),p[p.length-1]===`
|
|
36
|
-
`&&(p=p.slice(0,-1)),p=p.replace(Yi,`$&${l}`));let h=!1,y,
|
|
37
|
-
`)
|
|
38
|
-
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${l}`),
|
|
39
|
-
${l}${
|
|
36
|
+
`&&(p=p.slice(0,-1)),p=p.replace(Yi,`$&${l}`));let h=!1,y,x=-1;for(y=0;y<t.length;++y){let v=t[y];if(v===" ")h=!0;else if(v===`
|
|
37
|
+
`)x=y;else break}let A=t.substring(0,x<y?x+1:y);A&&(t=t.substring(A.length),A=A.replace(/\n+/g,`$&${l}`));let b=(h?l?"2":"1":"")+u;if(r&&(b+=" "+a(r.replace(/ ?[\r\n]+/g," ")),s&&s()),!f){let v=t.replace(/\n+/g,`
|
|
38
|
+
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${l}`),S=!1,P=Nn(n,!0);o!=="folded"&&e!==fe.Scalar.BLOCK_FOLDED&&(P.onOverflow=()=>{S=!0});let k=$e.foldFlowLines(`${A}${v}${p}`,l,$e.FOLD_BLOCK,P);if(!S)return`>${b}
|
|
39
|
+
${l}${k}`}return t=t.replace(/\n+/g,`$&${l}`),`|${b}
|
|
40
40
|
${l}${A}${t}${p}`}function Km(r,e,t,n){let{type:s,value:i}=r,{actualString:o,implicitKey:a,indent:c,indentStep:l,inFlow:f}=e;if(a&&i.includes(`
|
|
41
41
|
`)||f&&/[[\]{},]/.test(i))return Et(i,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(i))return a||f||!i.includes(`
|
|
42
42
|
`)?Et(i,e):Rn(r,e,t,n);if(!a&&!f&&s!==fe.Scalar.PLAIN&&i.includes(`
|
|
43
43
|
`))return Rn(r,e,t,n);if(_n(i)){if(c==="")return e.forceBlockIndent=!0,Rn(r,e,t,n);if(a&&c===l)return Et(i,e)}let u=i.replace(/\n+/g,`$&
|
|
44
44
|
${c}`);if(o){let d=h=>h.default&&h.tag!=="tag:yaml.org,2002:str"&&h.test?.test(u),{compat:p,tags:m}=e.doc.schema;if(m.some(d)||p?.some(d))return Et(i,e)}return a?u:$e.foldFlowLines(u,c,$e.FOLD_FLOW,Nn(e,!1))}function Wm(r,e,t,n){let{implicitKey:s,inFlow:i}=e,o=typeof r.value=="string"?r:Object.assign({},r,{value:String(r.value)}),{type:a}=r;a!==fe.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(a=fe.Scalar.QUOTE_DOUBLE);let c=f=>{switch(f){case fe.Scalar.BLOCK_FOLDED:case fe.Scalar.BLOCK_LITERAL:return s||i?Et(o.value,e):Rn(o,e,t,n);case fe.Scalar.QUOTE_DOUBLE:return ur(o.value,e);case fe.Scalar.QUOTE_SINGLE:return Vi(o.value,e);case fe.Scalar.PLAIN:return Km(o,e,t,n);default:return null}},l=c(a);if(l===null){let{defaultKeyType:f,defaultStringType:u}=e.options,d=s&&f||u;if(l=c(d),l===null)throw new Error(`Unsupported default string type ${d}`)}return l}Nl.stringifyString=Wm});var dr=T(Gi=>{"use strict";var Hm=kn(),Me=_(),Vm=cr(),Ym=fr();function Gm(r,e){let t=Object.assign({blockQuote:!0,commentString:Vm.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},r.schema.toStringOptions,e),n;switch(t.collectionStyle){case"block":n=!1;break;case"flow":n=!0;break;default:n=null}return{anchors:new Set,doc:r,flowCollectionPadding:t.flowCollectionPadding?" ":"",indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:n,options:t}}function zm(r,e){if(e.tag){let s=r.filter(i=>i.tag===e.tag);if(s.length>0)return s.find(i=>i.format===e.format)??s[0]}let t,n;if(Me.isScalar(e)){n=e.value;let s=r.filter(i=>i.identify?.(n));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 n=e,t=r.find(s=>s.nodeClass&&n instanceof s.nodeClass);if(!t){let s=n?.constructor?.name??(n===null?"null":typeof n);throw new Error(`Tag not resolved for ${s} value`)}return t}function Qm(r,e,{anchors:t,doc:n}){if(!n.directives)return"";let s=[],i=(Me.isScalar(r)||Me.isCollection(r))&&r.anchor;i&&Hm.anchorIsValid(i)&&(t.add(i),s.push(`&${i}`));let o=r.tag??(e.default?null:e.tag);return o&&s.push(n.directives.tagString(o)),s.join(" ")}function Xm(r,e,t,n){if(Me.isPair(r))return r.toString(e,t,n);if(Me.isAlias(r)){if(e.doc.directives)return r.toString(e);if(e.resolvedAliases?.has(r))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(r):e.resolvedAliases=new Set([r]),r=r.resolve(e.doc)}let s,i=Me.isNode(r)?r:e.doc.createNode(r,{onTagObj:c=>s=c});s??(s=zm(e.doc.schema.tags,i));let o=Qm(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,n):Me.isScalar(i)?Ym.stringifyString(i,e,t,n):i.toString(e,t,n);return o?Me.isScalar(i)||a[0]==="{"||a[0]==="["?`${o} ${a}`:`${o}
|
|
45
45
|
${e.indent}${a}`:a}Gi.createStringifyContext=Gm;Gi.stringify=Xm});var $l=T(Ll=>{"use strict";var Pe=_(),_l=U(),Il=dr(),pr=cr();function Zm({key:r,value:e},t,n,s){let{allNullValues:i,doc:o,indent:a,indentStep:c,options:{commentString:l,indentSeq:f,simpleKeys:u}}=t,d=Pe.isNode(r)&&r.comment||null;if(u){if(d)throw new Error("With simple keys, key nodes cannot have comments");if(Pe.isCollection(r)||!Pe.isNode(r)&&typeof r=="object"){let P="With simple keys, collection cannot be used as a key value";throw new Error(P)}}let p=!u&&(!r||d&&e==null&&!t.inFlow||Pe.isCollection(r)||(Pe.isScalar(r)?r.type===_l.Scalar.BLOCK_FOLDED||r.type===_l.Scalar.BLOCK_LITERAL:typeof r=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!p&&(u||!i),indent:a+c});let m=!1,h=!1,y=Il.stringify(r,t,()=>m=!0,()=>h=!0);if(!p&&!t.inFlow&&y.length>1024){if(u)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");p=!0}if(t.inFlow){if(i||e==null)return m&&n&&n(),y===""?"?":p?`? ${y}`:y}else if(i&&!u||e==null&&p)return y=`? ${y}`,d&&!m?y+=pr.lineComment(y,t.indent,l(d)):h&&s&&s(),y;m&&(d=null),p?(d&&(y+=pr.lineComment(y,t.indent,l(d))),y=`? ${y}
|
|
46
|
-
${a}:`):(y=`${y}:`,d&&(y+=pr.lineComment(y,t.indent,l(d))));let
|
|
47
|
-
`:"",A){let P=l(A);
|
|
48
|
-
${pr.indentComment(P,t.indent)}`}v===""&&!t.inFlow?
|
|
49
|
-
`&&g&&(
|
|
50
|
-
|
|
51
|
-
`):
|
|
52
|
-
${t.indent}`}else if(!p&&Pe.isCollection(e)){let P=v[0],
|
|
53
|
-
`)
|
|
46
|
+
${a}:`):(y=`${y}:`,d&&(y+=pr.lineComment(y,t.indent,l(d))));let x,A,g;Pe.isNode(e)?(x=!!e.spaceBefore,A=e.commentBefore,g=e.comment):(x=!1,A=null,g=null,e&&typeof e=="object"&&(e=o.createNode(e))),t.implicitKey=!1,!p&&!d&&Pe.isScalar(e)&&(t.indentAtStart=y.length+1),h=!1,!f&&c.length>=2&&!t.inFlow&&!p&&Pe.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let b=!1,v=Il.stringify(e,t,()=>b=!0,()=>h=!0),S=" ";if(d||x||A){if(S=x?`
|
|
47
|
+
`:"",A){let P=l(A);S+=`
|
|
48
|
+
${pr.indentComment(P,t.indent)}`}v===""&&!t.inFlow?S===`
|
|
49
|
+
`&&g&&(S=`
|
|
50
|
+
|
|
51
|
+
`):S+=`
|
|
52
|
+
${t.indent}`}else if(!p&&Pe.isCollection(e)){let P=v[0],k=v.indexOf(`
|
|
53
|
+
`),L=k!==-1,Q=t.inFlow??e.flow??e.items.length===0;if(L||!Q){let V=!1;if(L&&(P==="&"||P==="!")){let B=v.indexOf(" ");P==="&"&&B!==-1&&B<k&&v[B+1]==="!"&&(B=v.indexOf(" ",B+1)),(B===-1||k<B)&&(V=!0)}V||(S=`
|
|
54
54
|
${t.indent}`)}}else(v===""||v[0]===`
|
|
55
|
-
`)&&(
|
|
55
|
+
`)&&(S="");return y+=S+v,t.inFlow?b&&n&&n():g&&!b?y+=pr.lineComment(y,t.indent,l(g)):h&&s&&s(),y}Ll.stringifyPair=Zm});var Qi=T(zi=>{"use strict";var Ml=mn("process");function eg(r,...e){r==="debug"&&console.log(...e)}function tg(r,e){(r==="debug"||r==="warn")&&(typeof Ml.emitWarning=="function"?Ml.emitWarning(e):console.warn(e))}zi.debug=eg;zi.warn=tg});var Mn=T($n=>{"use strict";var hr=_(),Dl=U(),In="<<",Ln={identify:r=>r===In||typeof r=="symbol"&&r.description===In,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new Dl.Scalar(Symbol(In)),{addToJSMap:Bl}),stringify:()=>In},rg=(r,e)=>(Ln.identify(e)||hr.isScalar(e)&&(!e.type||e.type===Dl.Scalar.PLAIN)&&Ln.identify(e.value))&&r?.doc.schema.tags.some(t=>t.tag===Ln.tag&&t.default);function Bl(r,e,t){if(t=r&&hr.isAlias(t)?t.resolve(r.doc):t,hr.isSeq(t))for(let n of t.items)Xi(r,e,n);else if(Array.isArray(t))for(let n of t)Xi(r,e,n);else Xi(r,e,t)}function Xi(r,e,t){let n=r&&hr.isAlias(t)?t.resolve(r.doc):t;if(!hr.isMap(n))throw new Error("Merge sources must be maps or map aliases");let s=n.toJSON(null,r,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}$n.addMergeToJSMap=Bl;$n.isMergeKey=rg;$n.merge=Ln});var eo=T(ql=>{"use strict";var ng=Qi(),jl=Mn(),sg=dr(),Fl=_(),Zi=Ie();function ig(r,e,{key:t,value:n}){if(Fl.isNode(t)&&t.addToJSMap)t.addToJSMap(r,e,n);else if(jl.isMergeKey(r,t))jl.addMergeToJSMap(r,e,n);else{let s=Zi.toJS(t,"",r);if(e instanceof Map)e.set(s,Zi.toJS(n,s,r));else if(e instanceof Set)e.add(s);else{let i=og(t,s,r),o=Zi.toJS(n,i,r);i in e?Object.defineProperty(e,i,{value:o,writable:!0,enumerable:!0,configurable:!0}):e[i]=o}}return e}function og(r,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(Fl.isNode(r)&&t?.doc){let n=sg.createStringifyContext(t.doc,{});n.anchors=new Set;for(let i of t.anchors.keys())n.anchors.add(i.anchor);n.inFlow=!0,n.inStringifyKey=!0;let s=r.toString(n);if(!t.mapKeyWarned){let i=JSON.stringify(s);i.length>40&&(i=i.substring(0,36)+'..."'),ng.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)}ql.addPairToJSMap=ig});var De=T(to=>{"use strict";var Ul=ar(),ag=$l(),cg=eo(),Dn=_();function lg(r,e,t){let n=Ul.createNode(r,void 0,t),s=Ul.createNode(e,void 0,t);return new Bn(n,s)}var Bn=class r{constructor(e,t=null){Object.defineProperty(this,Dn.NODE_TYPE,{value:Dn.PAIR}),this.key=e,this.value=t}clone(e){let{key:t,value:n}=this;return Dn.isNode(t)&&(t=t.clone(e)),Dn.isNode(n)&&(n=n.clone(e)),new r(t,n)}toJSON(e,t){let n=t?.mapAsMap?new Map:{};return cg.addPairToJSMap(t,n,this)}toString(e,t,n){return e?.doc?ag.stringifyPair(this,e,t,n):JSON.stringify(this)}};to.Pair=Bn;to.createPair=lg});var ro=T(Kl=>{"use strict";var Ze=_(),Jl=dr(),jn=cr();function ug(r,e,t){return(e.inFlow??r.flow?dg:fg)(r,e,t)}function fg({comment:r,items:e},t,{blockItemPrefix:n,flowChars:s,itemIndent:i,onChompKeep:o,onComment:a}){let{indent:c,options:{commentString:l}}=t,f=Object.assign({},t,{indent:i,type:null}),u=!1,d=[];for(let m=0;m<e.length;++m){let h=e[m],y=null;if(Ze.isNode(h))!u&&h.spaceBefore&&d.push(""),Fn(t,d,h.commentBefore,u),h.comment&&(y=h.comment);else if(Ze.isPair(h)){let A=Ze.isNode(h.key)?h.key:null;A&&(!u&&A.spaceBefore&&d.push(""),Fn(t,d,A.commentBefore,u))}u=!1;let x=Jl.stringify(h,f,()=>y=null,()=>u=!0);y&&(x+=jn.lineComment(x,i,l(y))),u&&y&&(u=!1),d.push(n+x)}let p;if(d.length===0)p=s.start+s.end;else{p=d[0];for(let m=1;m<d.length;++m){let h=d[m];p+=h?`
|
|
56
56
|
${c}${h}`:`
|
|
57
57
|
`}}return r?(p+=`
|
|
58
|
-
`+jn.indentComment(l(r),c),a&&a()):u&&o&&o(),p}function dg({items:r},e,{flowChars:t,itemIndent:n}){let{indent:s,indentStep:i,flowCollectionPadding:o,options:{commentString:a}}=e;n+=i;let c=Object.assign({},e,{indent:n,inFlow:!0,type:null}),l=!1,f=0,u=[];for(let m=0;m<r.length;++m){let h=r[m],y=null;if(Ze.isNode(h))h.spaceBefore&&u.push(""),Fn(e,u,h.commentBefore,!1),h.comment&&(y=h.comment);else if(Ze.isPair(h)){let A=Ze.isNode(h.key)?h.key:null;A&&(A.spaceBefore&&u.push(""),Fn(e,u,A.commentBefore,!1),A.comment&&(l=!0));let g=Ze.isNode(h.value)?h.value:null;g?(g.comment&&(y=g.comment),g.commentBefore&&(l=!0)):h.value==null&&A?.comment&&(y=A.comment)}y&&(l=!0);let
|
|
59
|
-
`))&&(l=!0),u.push(
|
|
58
|
+
`+jn.indentComment(l(r),c),a&&a()):u&&o&&o(),p}function dg({items:r},e,{flowChars:t,itemIndent:n}){let{indent:s,indentStep:i,flowCollectionPadding:o,options:{commentString:a}}=e;n+=i;let c=Object.assign({},e,{indent:n,inFlow:!0,type:null}),l=!1,f=0,u=[];for(let m=0;m<r.length;++m){let h=r[m],y=null;if(Ze.isNode(h))h.spaceBefore&&u.push(""),Fn(e,u,h.commentBefore,!1),h.comment&&(y=h.comment);else if(Ze.isPair(h)){let A=Ze.isNode(h.key)?h.key:null;A&&(A.spaceBefore&&u.push(""),Fn(e,u,A.commentBefore,!1),A.comment&&(l=!0));let g=Ze.isNode(h.value)?h.value:null;g?(g.comment&&(y=g.comment),g.commentBefore&&(l=!0)):h.value==null&&A?.comment&&(y=A.comment)}y&&(l=!0);let x=Jl.stringify(h,c,()=>y=null);m<r.length-1&&(x+=","),y&&(x+=jn.lineComment(x,n,a(y))),!l&&(u.length>f||x.includes(`
|
|
59
|
+
`))&&(l=!0),u.push(x),f=u.length}let{start:d,end:p}=t;if(u.length===0)return d+p;if(!l){let m=u.reduce((h,y)=>h+y.length+2,2);l=e.options.lineWidth>0&&m>e.options.lineWidth}if(l){let m=d;for(let h of u)m+=h?`
|
|
60
60
|
${i}${s}${h}`:`
|
|
61
61
|
`;return`${m}
|
|
62
62
|
${s}${p}`}else return`${d}${o}${u.join(" ")}${o}${p}`}function Fn({indent:r,options:{commentString:e}},t,n,s){if(n&&s&&(n=n.replace(/^\n+/,"")),n){let i=jn.indentComment(e(n),r);t.push(i.trimStart())}}Kl.stringifyCollection=ug});var je=T(so=>{"use strict";var pg=ro(),hg=eo(),mg=Pn(),Be=_(),qn=De(),gg=U();function mr(r,e){let t=Be.isScalar(e)?e.value:e;for(let n of r)if(Be.isPair(n)&&(n.key===e||n.key===t||Be.isScalar(n.key)&&n.key.value===t))return n}var no=class extends mg.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Be.MAP,e),this.items=[]}static from(e,t,n){let{keepUndefined:s,replacer:i}=n,o=new this(e),a=(c,l)=>{if(typeof i=="function")l=i.call(t,c,l);else if(Array.isArray(i)&&!i.includes(c))return;(l!==void 0||s)&&o.items.push(qn.createPair(c,l,n))};if(t instanceof Map)for(let[c,l]of t)a(c,l);else if(t&&typeof t=="object")for(let c of Object.keys(t))a(c,t[c]);return typeof e.sortMapEntries=="function"&&o.items.sort(e.sortMapEntries),o}add(e,t){let n;Be.isPair(e)?n=e:!e||typeof e!="object"||!("key"in e)?n=new qn.Pair(e,e?.value):n=new qn.Pair(e.key,e.value);let s=mr(this.items,n.key),i=this.schema?.sortMapEntries;if(s){if(!t)throw new Error(`Key ${n.key} already set`);Be.isScalar(s.value)&&gg.isScalarValue(n.value)?s.value.value=n.value:s.value=n.value}else if(i){let o=this.items.findIndex(a=>i(n,a)<0);o===-1?this.items.push(n):this.items.splice(o,0,n)}else this.items.push(n)}delete(e){let t=mr(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let s=mr(this.items,e)?.value;return(!t&&Be.isScalar(s)?s.value:s)??void 0}has(e){return!!mr(this.items,e)}set(e,t){this.add(new qn.Pair(e,t),!0)}toJSON(e,t,n){let s=n?new n:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(s);for(let i of this.items)hg.addPairToJSMap(t,s,i);return s}toString(e,t,n){if(!e)return JSON.stringify(this);for(let s of this.items)if(!Be.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})),pg.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:n,onComment:t})}};so.YAMLMap=no;so.findPair=mr});var At=T(Hl=>{"use strict";var yg=_(),Wl=je(),bg={collection:"map",default:!0,nodeClass:Wl.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(r,e){return yg.isMap(r)||e("Expected a mapping for this tag"),r},createNode:(r,e,t)=>Wl.YAMLMap.from(r,e,t)};Hl.map=bg});var Fe=T(Vl=>{"use strict";var wg=ar(),vg=ro(),Sg=Pn(),Jn=_(),xg=U(),kg=Ie(),io=class extends Sg.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(Jn.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=Un(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let n=Un(e);if(typeof n!="number")return;let s=this.items[n];return!t&&Jn.isScalar(s)?s.value:s}has(e){let t=Un(e);return typeof t=="number"&&t<this.items.length}set(e,t){let n=Un(e);if(typeof n!="number")throw new Error(`Expected a valid index, not ${e}.`);let s=this.items[n];Jn.isScalar(s)&&xg.isScalarValue(t)?s.value=t:this.items[n]=t}toJSON(e,t){let n=[];t?.onCreate&&t.onCreate(n);let s=0;for(let i of this.items)n.push(kg.toJS(i,String(s++),t));return n}toString(e,t,n){return e?vg.stringifyCollection(this,e,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(e.indent||"")+" ",onChompKeep:n,onComment:t}):JSON.stringify(this)}static from(e,t,n){let{replacer:s}=n,i=new this(e);if(t&&Symbol.iterator in Object(t)){let o=0;for(let a of t){if(typeof s=="function"){let c=t instanceof Set?a:String(o++);a=s.call(t,c,a)}i.items.push(wg.createNode(a,void 0,n))}}return i}};function Un(r){let e=Jn.isScalar(r)?r.value:r;return e&&typeof e=="string"&&(e=Number(e)),typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}Vl.YAMLSeq=io});var Tt=T(Gl=>{"use strict";var Eg=_(),Yl=Fe(),Ag={collection:"seq",default:!0,nodeClass:Yl.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(r,e){return Eg.isSeq(r)||e("Expected a sequence for this tag"),r},createNode:(r,e,t)=>Yl.YAMLSeq.from(r,e,t)};Gl.seq=Ag});var gr=T(zl=>{"use strict";var Tg=fr(),Pg={identify:r=>typeof r=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:r=>r,stringify(r,e,t,n){return e=Object.assign({actualString:!0},e),Tg.stringifyString(r,e,t,n)}};zl.string=Pg});var Kn=T(Zl=>{"use strict";var Ql=U(),Xl={identify:r=>r==null,createNode:()=>new Ql.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new Ql.Scalar(null),stringify:({source:r},e)=>typeof r=="string"&&Xl.test.test(r)?r:e.options.nullStr};Zl.nullTag=Xl});var oo=T(tu=>{"use strict";var Og=U(),eu={identify:r=>typeof r=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:r=>new Og.Scalar(r[0]==="t"||r[0]==="T"),stringify({source:r,value:e},t){if(r&&eu.test.test(r)){let n=r[0]==="t"||r[0]==="T";if(e===n)return r}return e?t.options.trueStr:t.options.falseStr}};tu.boolTag=eu});var Pt=T(ru=>{"use strict";function Cg({format:r,minFractionDigits:e,tag:t,value:n}){if(typeof n=="bigint")return String(n);let s=typeof n=="number"?n:Number(n);if(!isFinite(s))return isNaN(s)?".nan":s<0?"-.inf":".inf";let i=Object.is(n,-0)?"-0":JSON.stringify(n);if(!r&&e&&(!t||t==="tag:yaml.org,2002:float")&&/^\d/.test(i)){let o=i.indexOf(".");o<0&&(o=i.length,i+=".");let a=e-(i.length-o-1);for(;a-- >0;)i+="0"}return i}ru.stringifyNumber=Cg});var co=T(Wn=>{"use strict";var Rg=U(),ao=Pt(),Ng={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:r=>r.slice(-3).toLowerCase()==="nan"?NaN:r[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ao.stringifyNumber},_g={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:r=>parseFloat(r),stringify(r){let e=Number(r.value);return isFinite(e)?e.toExponential():ao.stringifyNumber(r)}},Ig={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(r){let e=new Rg.Scalar(parseFloat(r)),t=r.indexOf(".");return t!==-1&&r[r.length-1]==="0"&&(e.minFractionDigits=r.length-t-1),e},stringify:ao.stringifyNumber};Wn.float=Ig;Wn.floatExp=_g;Wn.floatNaN=Ng});var uo=T(Vn=>{"use strict";var nu=Pt(),Hn=r=>typeof r=="bigint"||Number.isInteger(r),lo=(r,e,t,{intAsBigInt:n})=>n?BigInt(r):parseInt(r.substring(e),t);function su(r,e,t){let{value:n}=r;return Hn(n)&&n>=0?t+n.toString(e):nu.stringifyNumber(r)}var Lg={identify:r=>Hn(r)&&r>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(r,e,t)=>lo(r,2,8,t),stringify:r=>su(r,8,"0o")},$g={identify:Hn,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(r,e,t)=>lo(r,0,10,t),stringify:nu.stringifyNumber},Mg={identify:r=>Hn(r)&&r>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(r,e,t)=>lo(r,2,16,t),stringify:r=>su(r,16,"0x")};Vn.int=$g;Vn.intHex=Mg;Vn.intOct=Lg});var ou=T(iu=>{"use strict";var Dg=At(),Bg=Kn(),jg=Tt(),Fg=gr(),qg=oo(),fo=co(),po=uo(),Ug=[Dg.map,jg.seq,Fg.string,Bg.nullTag,qg.boolTag,po.intOct,po.int,po.intHex,fo.floatNaN,fo.floatExp,fo.float];iu.schema=Ug});var lu=T(cu=>{"use strict";var Jg=U(),Kg=At(),Wg=Tt();function au(r){return typeof r=="bigint"||Number.isInteger(r)}var Yn=({value:r})=>JSON.stringify(r),Hg=[{identify:r=>typeof r=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:r=>r,stringify:Yn},{identify:r=>r==null,createNode:()=>new Jg.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:Yn},{identify:r=>typeof r=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:r=>r==="true",stringify:Yn},{identify:au,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(r,e,{intAsBigInt:t})=>t?BigInt(r):parseInt(r,10),stringify:({value:r})=>au(r)?r.toString():JSON.stringify(r)},{identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:r=>parseFloat(r),stringify:Yn}],Vg={default:!0,tag:"",test:/^/,resolve(r,e){return e(`Unresolved plain scalar ${JSON.stringify(r)}`),r}},Yg=[Kg.map,Wg.seq].concat(Hg,Vg);cu.schema=Yg});var mo=T(uu=>{"use strict";var yr=mn("buffer"),ho=U(),Gg=fr(),zg={identify:r=>r instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(r,e){if(typeof yr.Buffer=="function")return yr.Buffer.from(r,"base64");if(typeof atob=="function"){let t=atob(r.replace(/[\n\r]/g,"")),n=new Uint8Array(t.length);for(let s=0;s<t.length;++s)n[s]=t.charCodeAt(s);return n}else return e("This environment does not support reading binary tags; either Buffer or atob is required"),r},stringify({comment:r,type:e,value:t},n,s,i){if(!t)return"";let o=t,a;if(typeof yr.Buffer=="function")a=o instanceof yr.Buffer?o.toString("base64"):yr.Buffer.from(o.buffer).toString("base64");else if(typeof btoa=="function"){let c="";for(let l=0;l<o.length;++l)c+=String.fromCharCode(o[l]);a=btoa(c)}else throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(e??(e=ho.Scalar.BLOCK_LITERAL),e!==ho.Scalar.QUOTE_DOUBLE){let c=Math.max(n.options.lineWidth-n.indent.length,n.options.minContentWidth),l=Math.ceil(a.length/c),f=new Array(l);for(let u=0,d=0;u<l;++u,d+=c)f[u]=a.substr(d,c);a=f.join(e===ho.Scalar.BLOCK_LITERAL?`
|
|
@@ -65,30 +65,30 @@ ${s.key.commentBefore}`:n.commentBefore),n.comment){let i=s.value??s.key;i.comme
|
|
|
65
65
|
${i.comment}`:n.comment}n=s}r.items[t]=Gn.isPair(n)?n:new go.Pair(n)}}else e("Expected a sequence for this tag");return r}function du(r,e,t){let{replacer:n}=t,s=new Xg.YAMLSeq(r);s.tag="tag:yaml.org,2002:pairs";let i=0;if(e&&Symbol.iterator in Object(e))for(let o of e){typeof n=="function"&&(o=n.call(e,String(i++),o));let a,c;if(Array.isArray(o))if(o.length===2)a=o[0],c=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let l=Object.keys(o);if(l.length===1)a=l[0],c=o[a];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else a=o;s.items.push(go.createPair(a,c,t))}return s}var Zg={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:fu,createNode:du};zn.createPairs=du;zn.pairs=Zg;zn.resolvePairs=fu});var wo=T(bo=>{"use strict";var pu=_(),yo=Ie(),br=je(),ey=Fe(),hu=Qn(),et=class r extends ey.YAMLSeq{constructor(){super(),this.add=br.YAMLMap.prototype.add.bind(this),this.delete=br.YAMLMap.prototype.delete.bind(this),this.get=br.YAMLMap.prototype.get.bind(this),this.has=br.YAMLMap.prototype.has.bind(this),this.set=br.YAMLMap.prototype.set.bind(this),this.tag=r.tag}toJSON(e,t){if(!t)return super.toJSON(e);let n=new Map;t?.onCreate&&t.onCreate(n);for(let s of this.items){let i,o;if(pu.isPair(s)?(i=yo.toJS(s.key,"",t),o=yo.toJS(s.value,i,t)):i=yo.toJS(s,"",t),n.has(i))throw new Error("Ordered maps must not include duplicate keys");n.set(i,o)}return n}static from(e,t,n){let s=hu.createPairs(e,t,n),i=new this;return i.items=s.items,i}};et.tag="tag:yaml.org,2002:omap";var ty={collection:"seq",identify:r=>r instanceof Map,nodeClass:et,default:!1,tag:"tag:yaml.org,2002:omap",resolve(r,e){let t=hu.resolvePairs(r,e),n=[];for(let{key:s}of t.items)pu.isScalar(s)&&(n.includes(s.value)?e(`Ordered maps must not include duplicate keys: ${s.value}`):n.push(s.value));return Object.assign(new et,t)},createNode:(r,e,t)=>et.from(r,e,t)};bo.YAMLOMap=et;bo.omap=ty});var wu=T(vo=>{"use strict";var mu=U();function gu({value:r,source:e},t){return e&&(r?yu:bu).test.test(e)?e:r?t.options.trueStr:t.options.falseStr}var yu={identify:r=>r===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new mu.Scalar(!0),stringify:gu},bu={identify:r=>r===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new mu.Scalar(!1),stringify:gu};vo.falseTag=bu;vo.trueTag=yu});var vu=T(Xn=>{"use strict";var ry=U(),So=Pt(),ny={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:r=>r.slice(-3).toLowerCase()==="nan"?NaN:r[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:So.stringifyNumber},sy={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:r=>parseFloat(r.replace(/_/g,"")),stringify(r){let e=Number(r.value);return isFinite(e)?e.toExponential():So.stringifyNumber(r)}},iy={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(r){let e=new ry.Scalar(parseFloat(r.replace(/_/g,""))),t=r.indexOf(".");if(t!==-1){let n=r.substring(t+1).replace(/_/g,"");n[n.length-1]==="0"&&(e.minFractionDigits=n.length)}return e},stringify:So.stringifyNumber};Xn.float=iy;Xn.floatExp=sy;Xn.floatNaN=ny});var xu=T(vr=>{"use strict";var Su=Pt(),wr=r=>typeof r=="bigint"||Number.isInteger(r);function Zn(r,e,t,{intAsBigInt:n}){let s=r[0];if((s==="-"||s==="+")&&(e+=1),r=r.substring(e).replace(/_/g,""),n){switch(t){case 2:r=`0b${r}`;break;case 8:r=`0o${r}`;break;case 16:r=`0x${r}`;break}let o=BigInt(r);return s==="-"?BigInt(-1)*o:o}let i=parseInt(r,t);return s==="-"?-1*i:i}function xo(r,e,t){let{value:n}=r;if(wr(n)){let s=n.toString(e);return n<0?"-"+t+s.substr(1):t+s}return Su.stringifyNumber(r)}var oy={identify:wr,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(r,e,t)=>Zn(r,2,2,t),stringify:r=>xo(r,2,"0b")},ay={identify:wr,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(r,e,t)=>Zn(r,1,8,t),stringify:r=>xo(r,8,"0")},cy={identify:wr,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(r,e,t)=>Zn(r,0,10,t),stringify:Su.stringifyNumber},ly={identify:wr,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(r,e,t)=>Zn(r,2,16,t),stringify:r=>xo(r,16,"0x")};vr.int=cy;vr.intBin=oy;vr.intHex=ly;vr.intOct=ay});var Eo=T(ko=>{"use strict";var rs=_(),es=De(),ts=je(),tt=class r extends ts.YAMLMap{constructor(e){super(e),this.tag=r.tag}add(e){let t;rs.isPair(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new es.Pair(e.key,null):t=new es.Pair(e,null),ts.findPair(this.items,t.key)||this.items.push(t)}get(e,t){let n=ts.findPair(this.items,e);return!t&&rs.isPair(n)?rs.isScalar(n.key)?n.key.value:n.key:n}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 n=ts.findPair(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new es.Pair(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw new Error("Set items must all have null values")}static from(e,t,n){let{replacer:s}=n,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(es.createPair(o,null,n));return i}};tt.tag="tag:yaml.org,2002:set";var uy={collection:"map",identify:r=>r instanceof Set,nodeClass:tt,default:!1,tag:"tag:yaml.org,2002:set",createNode:(r,e,t)=>tt.from(r,e,t),resolve(r,e){if(rs.isMap(r)){if(r.hasAllNullValues(!0))return Object.assign(new tt,r);e("Set items must all have null values")}else e("Expected a mapping for this tag");return r}};ko.YAMLSet=tt;ko.set=uy});var To=T(ns=>{"use strict";var fy=Pt();function Ao(r,e){let t=r[0],n=t==="-"||t==="+"?r.substring(1):r,s=o=>e?BigInt(o):Number(o),i=n.replace(/_/g,"").split(":").reduce((o,a)=>o*s(60)+s(a),s(0));return t==="-"?s(-1)*i:i}function ku(r){let{value:e}=r,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return fy.stringifyNumber(r);let n="";e<0&&(n="-",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))),n+i.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var dy={identify:r=>typeof r=="bigint"||Number.isInteger(r),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(r,e,{intAsBigInt:t})=>Ao(r,t),stringify:ku},py={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:r=>Ao(r,!1),stringify:ku},Eu={identify:r=>r instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(r){let e=r.match(Eu.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,t,n,s,i,o,a]=e.map(Number),c=e[7]?Number((e[7]+"00").substr(1,3)):0,l=Date.UTC(t,n-1,s,i||0,o||0,a||0,c),f=e[8];if(f&&f!=="Z"){let u=Ao(f,!1);Math.abs(u)<30&&(u*=60),l-=6e4*u}return new Date(l)},stringify:({value:r})=>r?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};ns.floatTime=py;ns.intTime=dy;ns.timestamp=Eu});var Pu=T(Tu=>{"use strict";var hy=At(),my=Kn(),gy=Tt(),yy=gr(),by=mo(),Au=wu(),Po=vu(),ss=xu(),wy=Mn(),vy=wo(),Sy=Qn(),xy=Eo(),Oo=To(),ky=[hy.map,gy.seq,yy.string,my.nullTag,Au.trueTag,Au.falseTag,ss.intBin,ss.intOct,ss.int,ss.intHex,Po.floatNaN,Po.floatExp,Po.float,by.binary,wy.merge,vy.omap,Sy.pairs,xy.set,Oo.intTime,Oo.floatTime,Oo.timestamp];Tu.schema=ky});var Du=T(No=>{"use strict";var Nu=At(),Ey=Kn(),_u=Tt(),Ay=gr(),Ty=oo(),Co=co(),Ro=uo(),Py=ou(),Oy=lu(),Iu=mo(),Sr=Mn(),Lu=wo(),$u=Qn(),Ou=Pu(),Mu=Eo(),is=To(),Cu=new Map([["core",Py.schema],["failsafe",[Nu.map,_u.seq,Ay.string]],["json",Oy.schema],["yaml11",Ou.schema],["yaml-1.1",Ou.schema]]),Ru={binary:Iu.binary,bool:Ty.boolTag,float:Co.float,floatExp:Co.floatExp,floatNaN:Co.floatNaN,floatTime:is.floatTime,int:Ro.int,intHex:Ro.intHex,intOct:Ro.intOct,intTime:is.intTime,map:Nu.map,merge:Sr.merge,null:Ey.nullTag,omap:Lu.omap,pairs:$u.pairs,seq:_u.seq,set:Mu.set,timestamp:is.timestamp},Cy={"tag:yaml.org,2002:binary":Iu.binary,"tag:yaml.org,2002:merge":Sr.merge,"tag:yaml.org,2002:omap":Lu.omap,"tag:yaml.org,2002:pairs":$u.pairs,"tag:yaml.org,2002:set":Mu.set,"tag:yaml.org,2002:timestamp":is.timestamp};function Ry(r,e,t){let n=Cu.get(e);if(n&&!r)return t&&!n.includes(Sr.merge)?n.concat(Sr.merge):n.slice();let s=n;if(!s)if(Array.isArray(r))s=[];else{let i=Array.from(Cu.keys()).filter(o=>o!=="yaml11").map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${i} or define customTags array`)}if(Array.isArray(r))for(let i of r)s=s.concat(i);else typeof r=="function"&&(s=r(s.slice()));return t&&(s=s.concat(Sr.merge)),s.reduce((i,o)=>{let a=typeof o=="string"?Ru[o]:o;if(!a){let c=JSON.stringify(o),l=Object.keys(Ru).map(f=>JSON.stringify(f)).join(", ");throw new Error(`Unknown custom tag ${c}; use one of ${l}`)}return i.includes(a)||i.push(a),i},[])}No.coreKnownTags=Cy;No.getTags=Ry});var Lo=T(Bu=>{"use strict";var _o=_(),Ny=At(),_y=Tt(),Iy=gr(),os=Du(),Ly=(r,e)=>r.key<e.key?-1:r.key>e.key?1:0,Io=class r{constructor({compat:e,customTags:t,merge:n,resolveKnownTags:s,schema:i,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?os.getTags(e,"compat"):e?os.getTags(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=s?os.coreKnownTags:{},this.tags=os.getTags(t,this.name,n),this.toStringOptions=a??null,Object.defineProperty(this,_o.MAP,{value:Ny.map}),Object.defineProperty(this,_o.SCALAR,{value:Iy.string}),Object.defineProperty(this,_o.SEQ,{value:_y.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?Ly:null}clone(){let e=Object.create(r.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};Bu.Schema=Io});var Fu=T(ju=>{"use strict";var $y=_(),$o=dr(),xr=cr();function My(r,e){let t=[],n=e.directives===!0;if(e.directives!==!1&&r.directives){let c=r.directives.toString(r);c?(t.push(c),n=!0):r.directives.docStart&&(n=!0)}n&&t.push("---");let s=$o.createStringifyContext(r,e),{commentString:i}=s.options;if(r.commentBefore){t.length!==1&&t.unshift("");let c=i(r.commentBefore);t.unshift(xr.indentComment(c,""))}let o=!1,a=null;if(r.contents){if($y.isNode(r.contents)){if(r.contents.spaceBefore&&n&&t.push(""),r.contents.commentBefore){let f=i(r.contents.commentBefore);t.push(xr.indentComment(f,""))}s.forceBlockIndent=!!r.comment,a=r.contents.comment}let c=a?void 0:()=>o=!0,l=$o.stringify(r.contents,s,()=>a=null,c);a&&(l+=xr.lineComment(l,"",i(a))),(l[0]==="|"||l[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${l}`:t.push(l)}else t.push($o.stringify(r.contents,s));if(r.directives?.docEnd)if(r.comment){let c=i(r.comment);c.includes(`
|
|
66
66
|
`)?(t.push("..."),t.push(xr.indentComment(c,""))):t.push(`... ${c}`)}else t.push("...");else{let c=r.comment;c&&o&&(c=c.replace(/^\n+/,"")),c&&((!o||a)&&t[t.length-1]!==""&&t.push(""),t.push(xr.indentComment(i(c),"")))}return t.join(`
|
|
67
67
|
`)+`
|
|
68
|
-
`}ju.stringifyDocument=My});var kr=T(qu=>{"use strict";var Dy=or(),Ot=Pn(),ae=_(),By=De(),jy=Ie(),Fy=Lo(),qy=Fu(),Mo=kn(),Uy=ji(),Jy=ar(),Do=Bi(),Bo=class r{constructor(e,t,n){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,ae.NODE_TYPE,{value:ae.DOC});let s=null;typeof t=="function"||Array.isArray(t)?s=t:n===void 0&&t&&(n=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"},n);this.options=i;let{version:o}=i;n?._directives?(this.directives=n._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new Do.Directives({version:o}),this.setSchema(o,n),this.contents=e===void 0?null:this.createNode(e,s,n)}clone(){let e=Object.create(r.prototype,{[ae.NODE_TYPE]:{value:ae.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=ae.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){Ct(this.contents)&&this.contents.add(e)}addIn(e,t){Ct(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let n=Mo.anchorNames(this);e.anchor=!t||n.has(t)?Mo.findNewAnchor(t||"a",n):t}return new Dy.Alias(e.anchor)}createNode(e,t,n){let s;if(typeof t=="function")e=t.call({"":e},"",e),s=t;else if(Array.isArray(t)){let y=A=>typeof A=="number"||A instanceof String||A instanceof Number,
|
|
68
|
+
`}ju.stringifyDocument=My});var kr=T(qu=>{"use strict";var Dy=or(),Ot=Pn(),ae=_(),By=De(),jy=Ie(),Fy=Lo(),qy=Fu(),Mo=kn(),Uy=ji(),Jy=ar(),Do=Bi(),Bo=class r{constructor(e,t,n){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,ae.NODE_TYPE,{value:ae.DOC});let s=null;typeof t=="function"||Array.isArray(t)?s=t:n===void 0&&t&&(n=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"},n);this.options=i;let{version:o}=i;n?._directives?(this.directives=n._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new Do.Directives({version:o}),this.setSchema(o,n),this.contents=e===void 0?null:this.createNode(e,s,n)}clone(){let e=Object.create(r.prototype,{[ae.NODE_TYPE]:{value:ae.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=ae.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){Ct(this.contents)&&this.contents.add(e)}addIn(e,t){Ct(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let n=Mo.anchorNames(this);e.anchor=!t||n.has(t)?Mo.findNewAnchor(t||"a",n):t}return new Dy.Alias(e.anchor)}createNode(e,t,n){let s;if(typeof t=="function")e=t.call({"":e},"",e),s=t;else if(Array.isArray(t)){let y=A=>typeof A=="number"||A instanceof String||A instanceof Number,x=t.filter(y).map(String);x.length>0&&(t=t.concat(x)),s=t}else n===void 0&&t&&(n=t,t=void 0);let{aliasDuplicateObjects:i,anchorPrefix:o,flow:a,keepUndefined:c,onTagObj:l,tag:f}=n??{},{onAnchor:u,setAnchors:d,sourceObjects:p}=Mo.createNodeAnchors(this,o||"a"),m={aliasDuplicateObjects:i??!0,keepUndefined:c??!1,onAnchor:u,onTagObj:l,replacer:s,schema:this.schema,sourceObjects:p},h=Jy.createNode(e,f,m);return a&&ae.isCollection(h)&&(h.flow=!0),d(),h}createPair(e,t,n={}){let s=this.createNode(e,null,n),i=this.createNode(t,null,n);return new By.Pair(s,i)}delete(e){return Ct(this.contents)?this.contents.delete(e):!1}deleteIn(e){return Ot.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):Ct(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return ae.isCollection(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return Ot.isEmptyPath(e)?!t&&ae.isScalar(this.contents)?this.contents.value:this.contents:ae.isCollection(this.contents)?this.contents.getIn(e,t):void 0}has(e){return ae.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return Ot.isEmptyPath(e)?this.contents!==void 0:ae.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=Ot.collectionFromPath(this.schema,[e],t):Ct(this.contents)&&this.contents.set(e,t)}setIn(e,t){Ot.isEmptyPath(e)?this.contents=t:this.contents==null?this.contents=Ot.collectionFromPath(this.schema,Array.from(e),t):Ct(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let n;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new Do.Directives({version:"1.1"}),n={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new Do.Directives({version:e}),n={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,n=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(n)this.schema=new Fy.Schema(Object.assign(n,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:n,maxAliasCount:s,onAnchor:i,reviver:o}={}){let a={anchors:new Map,doc:this,keep:!e,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof s=="number"?s:100},c=jy.toJS(this.contents,t??"",a);if(typeof i=="function")for(let{count:l,res:f}of a.anchors.values())i(f,l);return typeof o=="function"?Uy.applyReviver(o,{"":c},"",c):c}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let t=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${t}`)}return qy.stringifyDocument(this,e)}};function Ct(r){if(ae.isCollection(r))return!0;throw new Error("Expected a YAML collection as document contents")}qu.Document=Bo});var Tr=T(Ar=>{"use strict";var Er=class extends Error{constructor(e,t,n,s){super(),this.name=e,this.code=n,this.message=s,this.pos=t}},jo=class extends Er{constructor(e,t,n){super("YAMLParseError",e,t,n)}},Fo=class extends Er{constructor(e,t,n){super("YAMLWarning",e,t,n)}},Ky=(r,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(a=>e.linePos(a));let{line:n,col:s}=t.linePos[0];t.message+=` at line ${n}, column ${s}`;let i=s-1,o=r.substring(e.lineStarts[n-1],e.lineStarts[n]).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"),n>1&&/^ *$/.test(o.substring(0,i))){let a=r.substring(e.lineStarts[n-2],e.lineStarts[n-1]);a.length>80&&(a=a.substring(0,79)+`\u2026
|
|
69
69
|
`),o=a+o}if(/[^ ]/.test(o)){let a=1,c=t.linePos[1];c?.line===n&&c.col>s&&(a=Math.max(1,Math.min(c.col-s,80-i)));let l=" ".repeat(i)+"^".repeat(a);t.message+=`:
|
|
70
70
|
|
|
71
71
|
${o}
|
|
72
72
|
${l}
|
|
73
|
-
`}};Ar.YAMLError=Er;Ar.YAMLParseError=jo;Ar.YAMLWarning=Fo;Ar.prettifyError=Ky});var Pr=T(Uu=>{"use strict";function Wy(r,{flow:e,indicator:t,next:n,offset:s,onError:i,parentIndent:o,startOnNewline:a}){let c=!1,l=a,f=a,u="",d="",p=!1,m=!1,h=null,y=null,
|
|
73
|
+
`}};Ar.YAMLError=Er;Ar.YAMLParseError=jo;Ar.YAMLWarning=Fo;Ar.prettifyError=Ky});var Pr=T(Uu=>{"use strict";function Wy(r,{flow:e,indicator:t,next:n,offset:s,onError:i,parentIndent:o,startOnNewline:a}){let c=!1,l=a,f=a,u="",d="",p=!1,m=!1,h=null,y=null,x=null,A=null,g=null,b=null,v=null;for(let k of r)switch(m&&(k.type!=="space"&&k.type!=="newline"&&k.type!=="comma"&&i(k.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),m=!1),h&&(l&&k.type!=="comment"&&k.type!=="newline"&&i(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),h=null),k.type){case"space":!e&&(t!=="doc-start"||n?.type!=="flow-collection")&&k.source.includes(" ")&&(h=k),f=!0;break;case"comment":{f||i(k,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let L=k.source.substring(1)||" ";u?u+=d+L:u=L,d="",l=!1;break}case"newline":l?u?u+=k.source:(!b||t!=="seq-item-ind")&&(c=!0):d+=k.source,l=!0,p=!0,(y||x)&&(A=k),f=!0;break;case"anchor":y&&i(k,"MULTIPLE_ANCHORS","A node can have at most one anchor"),k.source.endsWith(":")&&i(k.offset+k.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),y=k,v??(v=k.offset),l=!1,f=!1,m=!0;break;case"tag":{x&&i(k,"MULTIPLE_TAGS","A node can have at most one tag"),x=k,v??(v=k.offset),l=!1,f=!1,m=!0;break}case t:(y||x)&&i(k,"BAD_PROP_ORDER",`Anchors and tags must be after the ${k.source} indicator`),b&&i(k,"UNEXPECTED_TOKEN",`Unexpected ${k.source} in ${e??"collection"}`),b=k,l=t==="seq-item-ind"||t==="explicit-key-ind",f=!1;break;case"comma":if(e){g&&i(k,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),g=k,l=!1,f=!1;break}default:i(k,"UNEXPECTED_TOKEN",`Unexpected ${k.type} token`),l=!1,f=!1}let S=r[r.length-1],P=S?S.offset+S.source.length:s;return m&&n&&n.type!=="space"&&n.type!=="newline"&&n.type!=="comma"&&(n.type!=="scalar"||n.source!=="")&&i(n.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),h&&(l&&h.indent<=o||n?.type==="block-map"||n?.type==="block-seq")&&i(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:g,found:b,spaceBefore:c,comment:u,hasNewline:p,anchor:y,tag:x,newlineAfterProp:A,end:P,start:v??P}}Uu.resolveProps=Wy});var as=T(Ju=>{"use strict";function qo(r){if(!r)return null;switch(r.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(r.source.includes(`
|
|
74
74
|
`))return!0;if(r.end){for(let e of r.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of r.items){for(let t of e.start)if(t.type==="newline")return!0;if(e.sep){for(let t of e.sep)if(t.type==="newline")return!0}if(qo(e.key)||qo(e.value))return!0}return!1;default:return!0}}Ju.containsNewline=qo});var Uo=T(Ku=>{"use strict";var Hy=as();function Vy(r,e,t){if(e?.type==="flow-collection"){let n=e.end[0];n.indent===r&&(n.source==="]"||n.source==="}")&&Hy.containsNewline(e)&&t(n,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}Ku.flowIndentCheck=Vy});var Jo=T(Hu=>{"use strict";var Wu=_();function Yy(r,e,t){let{uniqueKeys:n}=r.options;if(n===!1)return!1;let s=typeof n=="function"?n:(i,o)=>i===o||Wu.isScalar(i)&&Wu.isScalar(o)&&i.value===o.value;return e.some(i=>s(i.key,t))}Hu.mapIncludes=Yy});var Xu=T(Qu=>{"use strict";var Vu=De(),Gy=je(),Yu=Pr(),zy=as(),Gu=Uo(),Qy=Jo(),zu="All mapping items must start at the same column";function Xy({composeNode:r,composeEmptyNode:e},t,n,s,i){let o=i?.nodeClass??Gy.YAMLMap,a=new o(t.schema);t.atRoot&&(t.atRoot=!1);let c=n.offset,l=null;for(let f of n.items){let{start:u,key:d,sep:p,value:m}=f,h=Yu.resolveProps(u,{indicator:"explicit-key-ind",next:d??p?.[0],offset:c,onError:s,parentIndent:n.indent,startOnNewline:!0}),y=!h.found;if(y){if(d&&(d.type==="block-seq"?s(c,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in d&&d.indent!==n.indent&&s(c,"BAD_INDENT",zu)),!h.anchor&&!h.tag&&!p){l=h.end,h.comment&&(a.comment?a.comment+=`
|
|
75
|
-
`+h.comment:a.comment=h.comment);continue}(h.newlineAfterProp||zy.containsNewline(d))&&s(d??u[u.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else h.found?.indent!==n.indent&&s(c,"BAD_INDENT",zu);t.atKey=!0;let
|
|
76
|
-
`+g.comment:A.comment=g.comment);let b=new Vu.Pair(A);t.options.keepSourceTokens&&(b.srcToken=f),a.items.push(b)}}return l&&l<c&&s(l,"IMPOSSIBLE","Map comment with trailing content"),a.range=[n.offset,c,l??c],a}Qu.resolveBlockMap=Xy});var ef=T(Zu=>{"use strict";var Zy=Fe(),eb=Pr(),tb=Uo();function rb({composeNode:r,composeEmptyNode:e},t,n,s,i){let o=i?.nodeClass??Zy.YAMLSeq,a=new o(t.schema);t.atRoot&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let c=n.offset,l=null;for(let{start:f,value:u}of n.items){let d=eb.resolveProps(f,{indicator:"seq-item-ind",next:u,offset:c,onError:s,parentIndent:n.indent,startOnNewline:!0});if(!d.found)if(d.anchor||d.tag||u)u?.type==="block-seq"?s(d.end,"BAD_INDENT","All sequence items must start at the same column"):s(c,"MISSING_CHAR","Sequence item without - indicator");else{l=d.end,d.comment&&(a.comment=d.comment);continue}let p=u?r(t,u,d,s):e(t,d.end,f,null,d,s);t.schema.compat&&tb.flowIndentCheck(n.indent,u,s),c=p.range[2],a.items.push(p)}return a.range=[n.offset,c,l??c],a}Zu.resolveBlockSeq=rb});var Rt=T(tf=>{"use strict";function nb(r,e,t,n){let s="";if(r){let i=!1,o="";for(let a of r){let{source:c,type:l}=a;switch(l){case"space":i=!0;break;case"comment":{t&&!i&&n(a,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let f=c.substring(1)||" ";s?s+=o+f:s=f,o="";break}case"newline":s&&(o+=c),i=!0;break;default:n(a,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}e+=c.length}}return{comment:s,offset:e}}tf.resolveEnd=nb});var of=T(sf=>{"use strict";var sb=_(),ib=De(),rf=je(),ob=Fe(),ab=Rt(),nf=Pr(),cb=as(),lb=Jo(),Ko="Block collections are not allowed within flow collections",Wo=r=>r&&(r.type==="block-map"||r.type==="block-seq");function ub({composeNode:r,composeEmptyNode:e},t,n,s,i){let o=n.start.source==="{",a=o?"flow map":"flow sequence",c=i?.nodeClass??(o?rf.YAMLMap:ob.YAMLSeq),l=new c(t.schema);l.flow=!0;let f=t.atRoot;f&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let u=n.offset+n.start.source.length;for(let y=0;y<n.items.length;++y){let
|
|
77
|
-
`+
|
|
78
|
-
`+P:
|
|
79
|
-
|
|
75
|
+
`+h.comment:a.comment=h.comment);continue}(h.newlineAfterProp||zy.containsNewline(d))&&s(d??u[u.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else h.found?.indent!==n.indent&&s(c,"BAD_INDENT",zu);t.atKey=!0;let x=h.end,A=d?r(t,d,h,s):e(t,x,u,null,h,s);t.schema.compat&&Gu.flowIndentCheck(n.indent,d,s),t.atKey=!1,Qy.mapIncludes(t,a.items,A)&&s(x,"DUPLICATE_KEY","Map keys must be unique");let g=Yu.resolveProps(p??[],{indicator:"map-value-ind",next:m,offset:A.range[2],onError:s,parentIndent:n.indent,startOnNewline:!d||d.type==="block-scalar"});if(c=g.end,g.found){y&&(m?.type==="block-map"&&!g.hasNewline&&s(c,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&h.start<g.found.offset-1024&&s(A.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));let b=m?r(t,m,g,s):e(t,c,p,null,g,s);t.schema.compat&&Gu.flowIndentCheck(n.indent,m,s),c=b.range[2];let v=new Vu.Pair(A,b);t.options.keepSourceTokens&&(v.srcToken=f),a.items.push(v)}else{y&&s(A.range,"MISSING_CHAR","Implicit map keys need to be followed by map values"),g.comment&&(A.comment?A.comment+=`
|
|
76
|
+
`+g.comment:A.comment=g.comment);let b=new Vu.Pair(A);t.options.keepSourceTokens&&(b.srcToken=f),a.items.push(b)}}return l&&l<c&&s(l,"IMPOSSIBLE","Map comment with trailing content"),a.range=[n.offset,c,l??c],a}Qu.resolveBlockMap=Xy});var ef=T(Zu=>{"use strict";var Zy=Fe(),eb=Pr(),tb=Uo();function rb({composeNode:r,composeEmptyNode:e},t,n,s,i){let o=i?.nodeClass??Zy.YAMLSeq,a=new o(t.schema);t.atRoot&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let c=n.offset,l=null;for(let{start:f,value:u}of n.items){let d=eb.resolveProps(f,{indicator:"seq-item-ind",next:u,offset:c,onError:s,parentIndent:n.indent,startOnNewline:!0});if(!d.found)if(d.anchor||d.tag||u)u?.type==="block-seq"?s(d.end,"BAD_INDENT","All sequence items must start at the same column"):s(c,"MISSING_CHAR","Sequence item without - indicator");else{l=d.end,d.comment&&(a.comment=d.comment);continue}let p=u?r(t,u,d,s):e(t,d.end,f,null,d,s);t.schema.compat&&tb.flowIndentCheck(n.indent,u,s),c=p.range[2],a.items.push(p)}return a.range=[n.offset,c,l??c],a}Zu.resolveBlockSeq=rb});var Rt=T(tf=>{"use strict";function nb(r,e,t,n){let s="";if(r){let i=!1,o="";for(let a of r){let{source:c,type:l}=a;switch(l){case"space":i=!0;break;case"comment":{t&&!i&&n(a,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let f=c.substring(1)||" ";s?s+=o+f:s=f,o="";break}case"newline":s&&(o+=c),i=!0;break;default:n(a,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}e+=c.length}}return{comment:s,offset:e}}tf.resolveEnd=nb});var of=T(sf=>{"use strict";var sb=_(),ib=De(),rf=je(),ob=Fe(),ab=Rt(),nf=Pr(),cb=as(),lb=Jo(),Ko="Block collections are not allowed within flow collections",Wo=r=>r&&(r.type==="block-map"||r.type==="block-seq");function ub({composeNode:r,composeEmptyNode:e},t,n,s,i){let o=n.start.source==="{",a=o?"flow map":"flow sequence",c=i?.nodeClass??(o?rf.YAMLMap:ob.YAMLSeq),l=new c(t.schema);l.flow=!0;let f=t.atRoot;f&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let u=n.offset+n.start.source.length;for(let y=0;y<n.items.length;++y){let x=n.items[y],{start:A,key:g,sep:b,value:v}=x,S=nf.resolveProps(A,{flow:a,indicator:"explicit-key-ind",next:g??b?.[0],offset:u,onError:s,parentIndent:n.indent,startOnNewline:!1});if(!S.found){if(!S.anchor&&!S.tag&&!b&&!v){y===0&&S.comma?s(S.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${a}`):y<n.items.length-1&&s(S.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${a}`),S.comment&&(l.comment?l.comment+=`
|
|
77
|
+
`+S.comment:l.comment=S.comment),u=S.end;continue}!o&&t.options.strict&&cb.containsNewline(g)&&s(g,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(y===0)S.comma&&s(S.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${a}`);else if(S.comma||s(S.start,"MISSING_CHAR",`Missing , between ${a} items`),S.comment){let P="";e:for(let k of A)switch(k.type){case"comma":case"space":break;case"comment":P=k.source.substring(1);break e;default:break e}if(P){let k=l.items[l.items.length-1];sb.isPair(k)&&(k=k.value??k.key),k.comment?k.comment+=`
|
|
78
|
+
`+P:k.comment=P,S.comment=S.comment.substring(P.length+1)}}if(!o&&!b&&!S.found){let P=v?r(t,v,S,s):e(t,S.end,b,null,S,s);l.items.push(P),u=P.range[2],Wo(v)&&s(P.range,"BLOCK_IN_FLOW",Ko)}else{t.atKey=!0;let P=S.end,k=g?r(t,g,S,s):e(t,P,A,null,S,s);Wo(g)&&s(k.range,"BLOCK_IN_FLOW",Ko),t.atKey=!1;let L=nf.resolveProps(b??[],{flow:a,indicator:"map-value-ind",next:v,offset:k.range[2],onError:s,parentIndent:n.indent,startOnNewline:!1});if(L.found){if(!o&&!S.found&&t.options.strict){if(b)for(let B of b){if(B===L.found)break;if(B.type==="newline"){s(B,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}S.start<L.found.offset-1024&&s(L.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else v&&("source"in v&&v.source?.[0]===":"?s(v,"MISSING_CHAR",`Missing space after : in ${a}`):s(L.start,"MISSING_CHAR",`Missing , or : between ${a} items`));let Q=v?r(t,v,L,s):L.found?e(t,L.end,b,null,L,s):null;Q?Wo(v)&&s(Q.range,"BLOCK_IN_FLOW",Ko):L.comment&&(k.comment?k.comment+=`
|
|
79
|
+
`+L.comment:k.comment=L.comment);let V=new ib.Pair(k,Q);if(t.options.keepSourceTokens&&(V.srcToken=x),o){let B=l;lb.mapIncludes(t,B.items,k)&&s(P,"DUPLICATE_KEY","Map keys must be unique"),B.items.push(V)}else{let B=new rf.YAMLMap(t.schema);B.flow=!0,B.items.push(V);let w=(Q??k).range;B.range=[k.range[0],w[1],w[2]],l.items.push(B)}u=Q?Q.range[2]:L.end}}let d=o?"}":"]",[p,...m]=n.end,h=u;if(p?.source===d)h=p.offset+p.source.length;else{let y=a[0].toUpperCase()+a.substring(1),x=f?`${y} must end with a ${d}`:`${y} in block collection must be sufficiently indented and end with a ${d}`;s(u,f?"MISSING_CHAR":"BAD_INDENT",x),p&&p.source.length!==1&&m.unshift(p)}if(m.length>0){let y=ab.resolveEnd(m,h,t.options.strict,s);y.comment&&(l.comment?l.comment+=`
|
|
80
80
|
`+y.comment:l.comment=y.comment),l.range=[n.offset,h,y.offset]}else l.range=[n.offset,h,h];return l}sf.resolveFlowCollection=ub});var cf=T(af=>{"use strict";var fb=_(),db=U(),pb=je(),hb=Fe(),mb=Xu(),gb=ef(),yb=of();function Ho(r,e,t,n,s,i){let o=t.type==="block-map"?mb.resolveBlockMap(r,e,t,n,i):t.type==="block-seq"?gb.resolveBlockSeq(r,e,t,n,i):yb.resolveFlowCollection(r,e,t,n,i),a=o.constructor;return s==="!"||s===a.tagName?(o.tag=a.tagName,o):(s&&(o.tag=s),o)}function bb(r,e,t,n,s){let i=n.tag,o=i?e.directives.tagName(i.source,d=>s(i,"TAG_RESOLVE_FAILED",d)):null;if(t.type==="block-seq"){let{anchor:d,newlineAfterProp:p}=n,m=d&&i?d.offset>i.offset?d:i:d??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===pb.YAMLMap.tagName&&a==="map"||o===hb.YAMLSeq.tagName&&a==="seq")return Ho(r,e,t,s,o);let c=e.schema.tags.find(d=>d.tag===o&&d.collection===a);if(!c){let d=e.schema.knownTags[o];if(d?.collection===a)e.schema.tags.push(Object.assign({},d,{default:!1})),c=d;else return d?s(i,"BAD_COLLECTION_TYPE",`${d.tag} used for ${a} collection, but expects ${d.collection??"scalar"}`,!0):s(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),Ho(r,e,t,s,o)}let l=Ho(r,e,t,s,o,c),f=c.resolve?.(l,d=>s(i,"TAG_RESOLVE_FAILED",d),e.options)??l,u=fb.isNode(f)?f:new db.Scalar(f);return u.range=l.range,u.tag=o,c?.format&&(u.format=c.format),u}af.composeCollection=bb});var Yo=T(lf=>{"use strict";var Vo=U();function wb(r,e,t){let n=e.offset,s=vb(e,r.options.strict,t);if(!s)return{value:"",type:null,comment:"",range:[n,n,n]};let i=s.mode===">"?Vo.Scalar.BLOCK_FOLDED:Vo.Scalar.BLOCK_LITERAL,o=e.source?Sb(e.source):[],a=o.length;for(let h=o.length-1;h>=0;--h){let y=o[h][1];if(y===""||y==="\r")a=h;else break}if(a===0){let h=s.chomp==="+"&&o.length>0?`
|
|
81
|
-
`.repeat(Math.max(1,o.length-1)):"",y=n+s.length;return e.source&&(y+=e.source.length),{value:h,type:i,comment:s.comment,range:[n,y,y]}}let c=e.indent+s.indent,l=e.offset+s.length,f=0;for(let h=0;h<a;++h){let[y,
|
|
82
|
-
`;for(let h=f;h<a;++h){let[y,
|
|
83
|
-
`):y.length>c||
|
|
81
|
+
`.repeat(Math.max(1,o.length-1)):"",y=n+s.length;return e.source&&(y+=e.source.length),{value:h,type:i,comment:s.comment,range:[n,y,y]}}let c=e.indent+s.indent,l=e.offset+s.length,f=0;for(let h=0;h<a;++h){let[y,x]=o[h];if(x===""||x==="\r")s.indent===0&&y.length>c&&(c=y.length);else{y.length<c&&t(l+y.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator"),s.indent===0&&(c=y.length),f=h,c===0&&!r.atRoot&&t(l,"BAD_INDENT","Block scalar values in collections must be indented");break}l+=y.length+x.length+1}for(let h=o.length-1;h>=a;--h)o[h][0].length>c&&(a=h+1);let u="",d="",p=!1;for(let h=0;h<f;++h)u+=o[h][0].slice(c)+`
|
|
82
|
+
`;for(let h=f;h<a;++h){let[y,x]=o[h];l+=y.length+x.length+1;let A=x[x.length-1]==="\r";if(A&&(x=x.slice(0,-1)),x&&y.length<c){let b=`Block scalar lines must not be less indented than their ${s.indent?"explicit indentation indicator":"first line"}`;t(l-x.length-(A?2:1),"BAD_INDENT",b),y=""}i===Vo.Scalar.BLOCK_LITERAL?(u+=d+y.slice(c)+x,d=`
|
|
83
|
+
`):y.length>c||x[0]===" "?(d===" "?d=`
|
|
84
84
|
`:!p&&d===`
|
|
85
85
|
`&&(d=`
|
|
86
86
|
|
|
87
|
-
`),u+=d+y.slice(c)+
|
|
88
|
-
`,p=!0):
|
|
87
|
+
`),u+=d+y.slice(c)+x,d=`
|
|
88
|
+
`,p=!0):x===""?d===`
|
|
89
89
|
`?u+=`
|
|
90
90
|
`:d=`
|
|
91
|
-
`:(u+=d+
|
|
91
|
+
`:(u+=d+x,d=" ",p=!1)}switch(s.chomp){case"-":break;case"+":for(let h=a;h<o.length;++h)u+=`
|
|
92
92
|
`+o[h][0].slice(c);u[u.length-1]!==`
|
|
93
93
|
`&&(u+=`
|
|
94
94
|
`);break;default:u+=`
|
|
@@ -122,9 +122,9 @@ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.pus
|
|
|
122
122
|
`),n=e.substring(0,t),s=e.substring(t+1)+`
|
|
123
123
|
`;if(r.type==="block-scalar"){let i=r.props[0];if(i.type!=="block-scalar-header")throw new Error("Invalid block scalar header");i.source=n,r.source=s}else{let{offset:i}=r,o="indent"in r?r.indent:-1,a=[{type:"block-scalar-header",offset:i,indent:o,source:n}];Pf(a,"end"in r?r.end:void 0)||a.push({type:"newline",offset:-1,indent:o,source:`
|
|
124
124
|
`});for(let c of Object.keys(r))c!=="type"&&c!=="offset"&&delete r[c];Object.assign(r,{type:"block-scalar",indent:o,props:a,source:s})}}function Pf(r,e){if(e)for(let t of e)switch(t.type){case"space":case"comment":r.push(t);break;case"newline":return r.push(t),!0}return!1}function ta(r,e,t){switch(r.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":r.type=t,r.source=e;break;case"block-scalar":{let n=r.props.slice(1),s=e.length;r.props[0].type==="block-scalar-header"&&(s-=r.props[0].source.length);for(let i of n)i.offset+=s;delete r.props,Object.assign(r,{type:t,source:e,end:n});break}case"block-map":case"block-seq":{let s={type:"newline",offset:r.offset+e.length,indent:r.indent,source:`
|
|
125
|
-
`};delete r.items,Object.assign(r,{type:t,source:e,end:[s]});break}default:{let n="indent"in r?r.indent:-1,s="end"in r&&Array.isArray(r.end)?r.end.filter(i=>i.type==="space"||i.type==="comment"||i.type==="newline"):[];for(let i of Object.keys(r))i!=="type"&&i!=="offset"&&delete r[i];Object.assign(r,{type:t,indent:n,source:e,end:s})}}}cs.createScalarToken=rw;cs.resolveAsScalar=tw;cs.setScalarValue=nw});var Rf=T(Cf=>{"use strict";var iw=r=>"type"in r?us(r):ls(r);function us(r){switch(r.type){case"block-scalar":{let e="";for(let t of r.props)e+=us(t);return e+r.source}case"block-map":case"block-seq":{let e="";for(let t of r.items)e+=ls(t);return e}case"flow-collection":{let e=r.start.source;for(let t of r.items)e+=ls(t);for(let t of r.end)e+=t.source;return e}case"document":{let e=ls(r);if(r.end)for(let t of r.end)e+=t.source;return e}default:{let e=r.source;if("end"in r&&r.end)for(let t of r.end)e+=t.source;return e}}}function ls({start:r,key:e,sep:t,value:n}){let s="";for(let i of r)s+=i.source;if(e&&(s+=us(e)),t)for(let i of t)s+=i.source;return n&&(s+=us(n)),s}Cf.stringify=iw});var Lf=T(If=>{"use strict";var ra=Symbol("break visit"),ow=Symbol("skip children"),Nf=Symbol("remove item");function nt(r,e){"type"in r&&r.type==="document"&&(r={start:r.start,value:r.value}),_f(Object.freeze([]),r,e)}nt.BREAK=ra;nt.SKIP=ow;nt.REMOVE=Nf;nt.itemAtPath=(r,e)=>{let t=r;for(let[n,s]of e){let i=t?.[n];if(i&&"items"in i)t=i.items[s];else return}return t};nt.parentCollection=(r,e)=>{let t=nt.itemAtPath(r,e.slice(0,-1)),n=e[e.length-1][0],s=t?.[n];if(s&&"items"in s)return s;throw new Error("Parent collection not found")};function _f(r,e,t){let n=t(e,r);if(typeof n=="symbol")return n;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=_f(Object.freeze(r.concat([[s,o]])),i.items[o],t);if(typeof a=="number")o=a-1;else{if(a===ra)return ra;a===Nf&&(i.items.splice(o,1),o-=1)}}typeof n=="function"&&s==="key"&&(n=n(e,r))}}return typeof n=="function"?n(e,r):n}If.visit=nt});var fs=T(
|
|
125
|
+
`};delete r.items,Object.assign(r,{type:t,source:e,end:[s]});break}default:{let n="indent"in r?r.indent:-1,s="end"in r&&Array.isArray(r.end)?r.end.filter(i=>i.type==="space"||i.type==="comment"||i.type==="newline"):[];for(let i of Object.keys(r))i!=="type"&&i!=="offset"&&delete r[i];Object.assign(r,{type:t,indent:n,source:e,end:s})}}}cs.createScalarToken=rw;cs.resolveAsScalar=tw;cs.setScalarValue=nw});var Rf=T(Cf=>{"use strict";var iw=r=>"type"in r?us(r):ls(r);function us(r){switch(r.type){case"block-scalar":{let e="";for(let t of r.props)e+=us(t);return e+r.source}case"block-map":case"block-seq":{let e="";for(let t of r.items)e+=ls(t);return e}case"flow-collection":{let e=r.start.source;for(let t of r.items)e+=ls(t);for(let t of r.end)e+=t.source;return e}case"document":{let e=ls(r);if(r.end)for(let t of r.end)e+=t.source;return e}default:{let e=r.source;if("end"in r&&r.end)for(let t of r.end)e+=t.source;return e}}}function ls({start:r,key:e,sep:t,value:n}){let s="";for(let i of r)s+=i.source;if(e&&(s+=us(e)),t)for(let i of t)s+=i.source;return n&&(s+=us(n)),s}Cf.stringify=iw});var Lf=T(If=>{"use strict";var ra=Symbol("break visit"),ow=Symbol("skip children"),Nf=Symbol("remove item");function nt(r,e){"type"in r&&r.type==="document"&&(r={start:r.start,value:r.value}),_f(Object.freeze([]),r,e)}nt.BREAK=ra;nt.SKIP=ow;nt.REMOVE=Nf;nt.itemAtPath=(r,e)=>{let t=r;for(let[n,s]of e){let i=t?.[n];if(i&&"items"in i)t=i.items[s];else return}return t};nt.parentCollection=(r,e)=>{let t=nt.itemAtPath(r,e.slice(0,-1)),n=e[e.length-1][0],s=t?.[n];if(s&&"items"in s)return s;throw new Error("Parent collection not found")};function _f(r,e,t){let n=t(e,r);if(typeof n=="symbol")return n;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=_f(Object.freeze(r.concat([[s,o]])),i.items[o],t);if(typeof a=="number")o=a-1;else{if(a===ra)return ra;a===Nf&&(i.items.splice(o,1),o-=1)}}typeof n=="function"&&s==="key"&&(n=n(e,r))}}return typeof n=="function"?n(e,r):n}If.visit=nt});var fs=T(re=>{"use strict";var na=Of(),aw=Rf(),cw=Lf(),sa="\uFEFF",ia="",oa="",aa="",lw=r=>!!r&&"items"in r,uw=r=>!!r&&(r.type==="scalar"||r.type==="single-quoted-scalar"||r.type==="double-quoted-scalar"||r.type==="block-scalar");function fw(r){switch(r){case sa:return"<BOM>";case ia:return"<DOC>";case oa:return"<FLOW_END>";case aa:return"<SCALAR>";default:return JSON.stringify(r)}}function dw(r){switch(r){case sa:return"byte-order-mark";case ia:return"doc-mode";case oa:return"flow-error-end";case aa:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
|
|
126
126
|
`:case`\r
|
|
127
|
-
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(r[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}
|
|
127
|
+
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(r[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}re.createScalarToken=na.createScalarToken;re.resolveAsScalar=na.resolveAsScalar;re.setScalarValue=na.setScalarValue;re.stringify=aw.stringify;re.visit=cw.visit;re.BOM=sa;re.DOCUMENT=ia;re.FLOW_END=oa;re.SCALAR=aa;re.isCollection=lw;re.isScalar=uw;re.prettyToken=fw;re.tokenType=dw});var ua=T(Mf=>{"use strict";var Rr=fs();function de(r){switch(r){case void 0:case" ":case`
|
|
128
128
|
`:case"\r":case" ":return!0;default:return!1}}var $f=new Set("0123456789ABCDEFabcdef"),pw=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),ds=new Set(",[]{}"),hw=new Set(` ,[]{}
|
|
129
129
|
\r `),ca=r=>!r||hw.has(r),la=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!t;let n=this.next??"stream";for(;n&&(t||this.hasChars(1));)n=yield*this.parseNext(n)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===`
|
|
130
130
|
`?!0:t==="\r"?this.buffer[e+1]===`
|
|
@@ -147,7 +147,7 @@ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.pus
|
|
|
147
147
|
`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`
|
|
148
148
|
`,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 n="end"in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type==="comment"?n?.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 n=!this.onKeyLine&&this.indent===e.indent,s=n&&(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 c=t.sep[a];switch(c.type){case"newline":o.push(a);break;case"space":break;case"comment":c.indent>e.indent&&(o.length=0);break;default:o.length=0}}o.length>=2&&(i=t.sep.splice(o[1]))}switch(this.type){case"anchor":case"tag":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(qe(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(qf(t.key)&&!qe(t.sep,"newline")){let o=Nt(t.start),a=t.key,c=t.sep;c.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:a,sep:c}]})}else i.length>0?t.sep=t.sep.concat(i,this.sourceToken):t.sep.push(this.sourceToken);else if(qe(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let o=Nt(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]}):qe(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&&!qe(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 n&&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 n="end"in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type==="comment"?n?.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||qe(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let n=this.startBlockValue(e);if(n){this.stack.push(n);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let n;do yield*this.pop(),n=this.peek(1);while(n?.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 n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{let n=this.peek(2);if(n.type==="block-map"&&(this.type==="map-value-ind"&&n.indent===e.indent||this.type==="newline"&&!n.items[n.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&n.type!=="flow-collection"){let s=ps(n),i=Nt(s);Ff(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(`
|
|
149
149
|
`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`
|
|
150
|
-
`,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=ps(e),n=Nt(t);return n.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let t=ps(e),n=Nt(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(n=>n.type==="newline"||n.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())}}};Uf.Parser=pa});var Vf=T(_r=>{"use strict";var Jf=ea(),yw=kr(),Nr=Tr(),bw=Qi(),ww=_(),vw=da(),Kf=ha();function Wf(r){let e=r.prettyErrors!==!1;return{lineCounter:r.lineCounter||e&&new vw.LineCounter||null,prettyErrors:e}}function Sw(r,e={}){let{lineCounter:t,prettyErrors:n}=Wf(e),s=new Kf.Parser(t?.addNewLine),i=new Jf.Composer(e),o=Array.from(i.compose(s.parse(r)));if(n&&t)for(let a of o)a.errors.forEach(Nr.prettifyError(r,t)),a.warnings.forEach(Nr.prettifyError(r,t));return o.length>0?o:Object.assign([],{empty:!0},i.streamInfo())}function Hf(r,e={}){let{lineCounter:t,prettyErrors:n}=Wf(e),s=new Kf.Parser(t?.addNewLine),i=new Jf.Composer(e),o=null;for(let a of i.compose(s.parse(r),!0,r.length))if(!o)o=a;else if(o.options.logLevel!=="silent"){o.errors.push(new Nr.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return n&&t&&(o.errors.forEach(Nr.prettifyError(r,t)),o.warnings.forEach(Nr.prettifyError(r,t))),o}function xw(r,e,t){let n;typeof e=="function"?n=e:t===void 0&&e&&typeof e=="object"&&(t=e);let s=Hf(r,t);if(!s)return null;if(s.warnings.forEach(i=>bw.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:n},t))}function kw(r,e,t){let n=null;if(typeof e=="function"||Array.isArray(e)?n=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(r===void 0){let{keepUndefined:s}=t??e??{};if(!s)return}return ww.isDocument(r)&&!n?r.toString(t):new yw.Document(r,n,t).toString(t)}_r.parse=xw;_r.parseAllDocuments=Sw;_r.parseDocument=Hf;_r.stringify=kw});var Gf=T(
|
|
150
|
+
`,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=ps(e),n=Nt(t);return n.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let t=ps(e),n=Nt(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(n=>n.type==="newline"||n.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())}}};Uf.Parser=pa});var Vf=T(_r=>{"use strict";var Jf=ea(),yw=kr(),Nr=Tr(),bw=Qi(),ww=_(),vw=da(),Kf=ha();function Wf(r){let e=r.prettyErrors!==!1;return{lineCounter:r.lineCounter||e&&new vw.LineCounter||null,prettyErrors:e}}function Sw(r,e={}){let{lineCounter:t,prettyErrors:n}=Wf(e),s=new Kf.Parser(t?.addNewLine),i=new Jf.Composer(e),o=Array.from(i.compose(s.parse(r)));if(n&&t)for(let a of o)a.errors.forEach(Nr.prettifyError(r,t)),a.warnings.forEach(Nr.prettifyError(r,t));return o.length>0?o:Object.assign([],{empty:!0},i.streamInfo())}function Hf(r,e={}){let{lineCounter:t,prettyErrors:n}=Wf(e),s=new Kf.Parser(t?.addNewLine),i=new Jf.Composer(e),o=null;for(let a of i.compose(s.parse(r),!0,r.length))if(!o)o=a;else if(o.options.logLevel!=="silent"){o.errors.push(new Nr.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return n&&t&&(o.errors.forEach(Nr.prettifyError(r,t)),o.warnings.forEach(Nr.prettifyError(r,t))),o}function xw(r,e,t){let n;typeof e=="function"?n=e:t===void 0&&e&&typeof e=="object"&&(t=e);let s=Hf(r,t);if(!s)return null;if(s.warnings.forEach(i=>bw.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:n},t))}function kw(r,e,t){let n=null;if(typeof e=="function"||Array.isArray(e)?n=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(r===void 0){let{keepUndefined:s}=t??e??{};if(!s)return}return ww.isDocument(r)&&!n?r.toString(t):new yw.Document(r,n,t).toString(t)}_r.parse=xw;_r.parseAllDocuments=Sw;_r.parseDocument=Hf;_r.stringify=kw});var Gf=T($=>{"use strict";var Ew=ea(),Aw=kr(),Tw=Lo(),ma=Tr(),Pw=or(),Ue=_(),Ow=De(),Cw=U(),Rw=je(),Nw=Fe(),_w=fs(),Iw=ua(),Lw=da(),$w=ha(),hs=Vf(),Yf=rr();$.Composer=Ew.Composer;$.Document=Aw.Document;$.Schema=Tw.Schema;$.YAMLError=ma.YAMLError;$.YAMLParseError=ma.YAMLParseError;$.YAMLWarning=ma.YAMLWarning;$.Alias=Pw.Alias;$.isAlias=Ue.isAlias;$.isCollection=Ue.isCollection;$.isDocument=Ue.isDocument;$.isMap=Ue.isMap;$.isNode=Ue.isNode;$.isPair=Ue.isPair;$.isScalar=Ue.isScalar;$.isSeq=Ue.isSeq;$.Pair=Ow.Pair;$.Scalar=Cw.Scalar;$.YAMLMap=Rw.YAMLMap;$.YAMLSeq=Nw.YAMLSeq;$.CST=_w;$.Lexer=Iw.Lexer;$.LineCounter=Lw.LineCounter;$.Parser=$w.Parser;$.parse=hs.parse;$.parseAllDocuments=hs.parseAllDocuments;$.parseDocument=hs.parseDocument;$.stringify=hs.stringify;$.visit=Yf.visit;$.visitAsync=Yf.visitAsync});function Dw(r){try{return JSON.parse(r.trim()),!0}catch{return!1}}function Bw(r){let e=r.trim();if(!e.startsWith("<"))return!1;let t=e.match(Mw);return t?tr(e,t[1])!==null:!1}function jw(r){let e=r.trim();if(!e.match(/^(---|#|\w+:|-)/)||"[{<".includes(e[0]))return!1;try{let t=zf.parse(e);return t!==null&&typeof t=="object"}catch{return!1}}function Qf(r){return Dw(r)||Bw(r)||jw(r)}var zf,Mw,ga=C(()=>{ol();zf=Vh(Gf(),1),Mw=/<([a-zA-Z_][\w.-]*)/});function Fw(r){if(!r?.trim())return[];let e=r.replace(/\r\n/g,`
|
|
151
151
|
`),t=e.trim();if(Qf(t))return[{text:t,startLine:1,endLine:e.split(`
|
|
152
152
|
`).length}];let n=e.split(`
|
|
153
153
|
`),s=[],i=0,o=-1,a=0,c=()=>{if(o>=i){let l=n.slice(i,o+1).join(`
|
|
@@ -390,10 +390,10 @@ export default function (pi) {
|
|
|
390
390
|
`),c=i.filter(u=>u.type==="toolCall").map(u=>({id:u.id??"",name:u.name??"",input:u.arguments??{}}));if(o||a||c.length){let u=Date.parse(e.timestamp??""),d=!isNaN(u)&&u>=t;n.push({type:"assistant",text:o,thinking:a,tools:c,live:d})}let l=s.usage,f=l&&{in:l.input??0,out:l.output??0,cached:l.cacheRead??0,cacheCreate:l.cacheWrite??0};return{events:n,usage:f,model:s.model}}return{events:n}}chainWorking(e){let t;for(let a of e)dp(a)&&(t=a);if(!t||t.type==="custom_message")return!1;let n=t.message.role;if(n==="user"||n==="toolResult"||n==="bashExecution")return!0;if(n!=="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=qS(e,"r")}catch{return""}try{let s=65536;try{s=FS(e).size}catch{}let i=Buffer.alloc(Math.min(65536,s)),o=US(t,i,0,i.length,0),a=i.subarray(0,o).toString("utf8"),c="",l="";for(let u of a.split(`
|
|
391
391
|
`)){if(!u.includes('"type"'))continue;let d;try{d=JSON.parse(u)}catch{continue}d?.type==="session_info"&&typeof d.name=="string"&&d.name?c=d.name:!l&&d?.type==="message"&&d.message?.role==="user"&&(l=this.contentText(d.message.content).replace(/\s+/g," ").trim())}let f=c||l;return f?f.slice(0,200):""}finally{JS(t)}}searchText(e){if(e?.type!=="message")return"";let t=e.message?.role;if(t!=="user"&&t!=="assistant")return"";let n=e.message?.content,s="";return typeof n=="string"?s=n:Array.isArray(n)&&(s=n.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"?ke(e):Array.isArray(e)?e.map(t=>typeof t?.text=="string"?ke(t.text):t?.type==="image"&&t.data?Hs(t.data,t.mimeType):"").filter(Boolean).join(`
|
|
392
392
|
`):""}}});function Xa(r){return(r.includes("://")?r:`http://${r}`).replace(/\/+$/,"")}async function pt(){let[r,e]=await Promise.all([ux(),lx()]);return[...fx(e),...r]}async function lx(){if(Vt&&Date.now()-Vt.fetchedAt<=ax)return Vt.models;let r=await fetch(ox).catch(()=>null);return!r||!r.ok?Vt?.models??[]:(Vt={models:await r.json(),fetchedAt:Date.now()},Vt.models)}async function ux(){if(Zs&&Date.now()-Zs.fetchedAt<=cx)return Zs.models;let r=Xa(process.env.OLLAMA_HOST??"http://localhost:11434"),e=[];try{let t=await fetch(new URL("/api/tags",r).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 Zs={models:e,fetchedAt:Date.now()},e}function fx(r){let e=new Set(Object.entries(Yt).filter(([,t])=>!!process.env[t]).map(([t])=>t));return r.filter(t=>e.has(t.provider))}function Sp(){return Object.values(Yt).some(r=>!!process.env[r])}function xp(r,e,t){let n=Math.max(...r.map(o=>o.name.length)),s=Math.max(...r.map(o=>o.friendlyName.length)),i=["Models available to tb.ai (filtered by your .env keys):",""];for(let o of r)i.push(` ${o.name.padEnd(n)} ${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(`
|
|
393
|
-
`)}var Yt,ox,ax,cx,Vt,Zs,ei=C(()=>{Yt={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"};ox="https://api.typebulb.com/api/models",ax=1440*60*1e3,cx=60*1e3,Vt=null,Zs=null});function ye(r){return r?.message??String(r)}var
|
|
394
|
-
`))>=0;){let j=w.partial.slice(0,
|
|
395
|
-
`)){if(!
|
|
396
|
-
`)){let l=c.replace(/\s+/g," ").trim();l&&i.push({text:l,lower:l.toLowerCase()})}let{hitCount:o,snippet:a}=gi(i,e);o&&t.push({path:n.path,hitCount:o,snippet:a})}return t}async function uh(r,e){let t=
|
|
393
|
+
`)}var Yt,ox,ax,cx,Vt,Zs,ei=C(()=>{Yt={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"};ox="https://api.typebulb.com/api/models",ax=1440*60*1e3,cx=60*1e3,Vt=null,Zs=null});function ye(r){return r?.message??String(r)}var G,hi=C(()=>{G=process.cwd()});var mi,Wp=C(()=>{mi=class{#e=new Map;accept(e,t){return this.#e.get(e)===t?!1:(this.#e.set(e,t),!0)}}});function gi(r,e){let t=0,n="";for(let s of r){let i=s.lower.indexOf(e);if(!(i<0)&&(t++,!n)){let o=Math.max(0,i-110),a=Math.min(s.text.length,i+e.length+110);n=(o>0?"\u2026":"")+s.text.slice(o,a)+(a<s.text.length?"\u2026":"")}}return{hitCount:t,snippet:n}}var dc=C(()=>{});import{existsSync as Hp,openSync as _x,readSync as Ix,closeSync as Lx,statSync as zt,readdirSync as Vp,watchFile as $x,unwatchFile as Yp,mkdirSync as Mx,writeFileSync as Dx,readFileSync as pc,unlinkSync as Bx,rmSync as jx}from"fs";import{join as Qt}from"path";function yi(r){let e={cwd:G,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=w=>Qt(w,qx),n=(w,E)=>Qt(t(w),`${E}.lock`);function s(w,E){try{let O=n(w,E);if(Date.now()-zt(O).mtimeMs>=Gp)return!1;try{if(parseInt(pc(O,"utf8").trim(),10)===process.pid)return!1}catch{}return!0}catch{return!1}}function i(w,E){if(E)try{Mx(t(w),{recursive:!0}),Dx(n(w,E),String(process.pid))}catch(O){console.error("[lock] claim failed:",ye(O))}}function o(w){try{jx(Qt(w,".claude-bulb"),{recursive:!0,force:!0})}catch{}}function a(w){let E=t(w);if(!Hp(E))return;let O;try{O=Vp(E)}catch{return}let N=Date.now();for(let M of O){if(!M.endsWith(".lock"))continue;let D=Qt(E,M);try{let I=zt(D);N-I.mtimeMs>Ux&&Bx(D)}catch{}}}function c(w){try{return zt(w),!1}catch(E){return E.code==="ENOENT"}}function l(){let w=e;if(w.file&&!c(w.file)){i(w.cwd,w.sessionId);return}let E=f(w);E&&p(E)}function f(w){if(!w.everAttached)return u(w.cwd)??d(w.cwd,()=>!0)}function u(w){let E=t(w);if(!Hp(E))return;let O;try{O=Vp(E)}catch{return}let N;for(let D of O)if(D.endsWith(".lock"))try{let I=zt(Qt(E,D));if(Date.now()-I.mtimeMs>=Gp||parseInt(pc(Qt(E,D),"utf8").trim(),10)!==process.pid)continue;(!N||I.mtimeMs>N.mtime)&&(N={sessionId:D.slice(0,-5),mtime:I.mtimeMs})}catch{}if(!N)return;let M=r.listSessionFiles(w).find(D=>D.sessionId===N.sessionId);if(!(!M||c(M.file)))return M}function d(w,E){return r.listSessionFiles(w).sort((O,N)=>N.mtime-O.mtime).find(O=>!s(w,O.sessionId)&&E(O))}function p(w){let E=e;if(E.file)try{Yp(E.file)}catch{}E.file=w.file,E.sessionId=w.sessionId,E.everAttached=!0,E.partial="",E.offset=0,E.latest={in:0,out:0,cached:0,cacheCreate:0},E.latestModel=null,E.entries=new Map,E.chainLastId=void 0,E.buffer.push({type:"cleared"}),E.buffer.push({type:"session",sessionId:w.sessionId}),i(E.cwd,w.sessionId),m();try{Yp(w.file)}catch{}$x(w.file,{interval:200},()=>m())}function m(){let w=e;if(!w.file)return;let E;try{E=zt(w.file).size}catch{return}if(E<=w.offset)return;let O;try{O=_x(w.file,"r")}catch{return}try{let j=E-w.offset,ie=Buffer.alloc(j),Y=0;for(;Y<j;){let Rc=Ix(O,ie,Y,j-Y,w.offset+Y);if(!Rc)break;Y+=Rc}w.offset+=Y,w.partial+=ie.subarray(0,Y).toString("utf8")}finally{Lx(O)}let N,M;for(;(M=w.partial.indexOf(`
|
|
394
|
+
`))>=0;){let j=w.partial.slice(0,M);if(w.partial=w.partial.slice(M+1),!j.trim())continue;let ie=r.parseEntry(j);if(!ie)continue;let Y=r.idOf(ie);Y&&(w.entries.set(Y,ie),!r.isSidechain(ie)&&r.isLeafType(ie)&&(N=Y))}if(!N)return;let D=[],I=w.entries.get(N),F=!1;for(;I;){if(D.push(I),r.idOf(I)===w.chainLastId){F=!0;break}let j=r.parentOf(I);I=j?w.entries.get(j):void 0}if(F)for(let j=D.length-2;j>=0;j--)A(D[j]);else{w.chainLastId!==void 0&&(w.buffer.push({type:"cleared"}),w.buffer.push({type:"session",sessionId:w.sessionId}),w.latest={in:0,out:0,cached:0,cacheCreate:0});let j=new Set(D.map(Y=>r.idOf(Y))),ie=h(w.entries);for(let Y=D.length-1;Y>=0;Y--)A(D[Y]),y(r.idOf(D[Y]),ie,j)}w.chainLastId=N}function h(w){let E=new Map;for(let O of w.values()){let N=r.parentOf(O);if(!N)continue;let M=E.get(N);M?M.push(O):E.set(N,[O])}return E}function y(w,E,O){if(!w)return;let N=E.get(w);if(!N)return;let M=N.filter(j=>!r.isSidechain(j));if(M.length<2)return;let D=M.filter(j=>!O.has(r.idOf(j)));if(!D.length)return;let I=[],F=0;for(let j of D){let ie=x(j,E);I.push(...ie.events),F+=ie.count}F>0&&e.buffer.push({type:"fork",atId:w,count:F,events:I})}function x(w,E){let O=[],N=[w];for(;N.length;){let I=N.pop();if(r.isSidechain(I))continue;O.push(I);let F=E.get(r.idOf(I)??"");if(F)for(let j of F)N.push(j)}O.sort((I,F)=>(Date.parse(r.timestampOf(I)??"")||0)-(Date.parse(r.timestampOf(F)??"")||0));let M=[];for(let I of O)r.isRecoveryNoise(I)||M.push(...r.apply(I,e.sessionStartMs).events);return{count:M.reduce((I,F)=>I+(F.type==="user"||F.type==="assistant"?1:0),0),events:M}}function A(w){try{let{events:E,usage:O,model:N}=r.apply(w,e.sessionStartMs);for(let M of E)e.buffer.push(M);N&&(e.latestModel=N),O&&(e.latest=O,e.buffer.push({type:"usage",...e.latest}))}catch(E){console.error("[mirror] skipped malformed entry:",ye(E))}}async function g(){return{cwd:e.cwd,pid:process.pid}}let b=new mi;async function v(w,E){b.accept(w,E)&&console.log(E)}function S(){let w=r.sessionAlive(e.sessionId,e.cwd);if(w!==void 0)return w;if(!e.file)return!1;try{return Date.now()-zt(e.file).mtimeMs<1e4}catch{return!1}}async function P(w){let E=e;return l(),{events:E.buffer.slice(w),cursor:E.buffer.length,working:r.chainWorking([...E.entries.values()])&&S(),latestModel:E.latestModel}}async function k(){return r.listSessionFiles(e.cwd).sort((w,E)=>E.mtime-w.mtime).map(({sessionId:w,file:E,mtime:O})=>({sessionId:w,mtime:O,preview:r.readPreview(E)}))}let L=new Map;function Q(w,E){let O=L.get(w);if(O&&O.mtime===E)return O.turns;let N=[],M="";try{M=pc(w,"utf8")}catch{return[]}for(let D of M.split(`
|
|
395
|
+
`)){if(!D.trim())continue;let I=r.parseEntry(D);if(!I)continue;let F=r.searchText(I);F&&N.push({text:F,lower:F.toLowerCase()})}return L.set(w,{mtime:E,turns:N}),N}async function V(w){let E=w.toLowerCase(),O=[];for(let{sessionId:N,file:M,mtime:D}of r.listSessionFiles(e.cwd).sort((I,F)=>F.mtime-I.mtime)){let{hitCount:I,snippet:F}=gi(Q(M,D),E);if(I&&(O.push({sessionId:N,mtime:D,preview:r.readPreview(M),hitCount:I,snippet:F}),O.length>=Jx))break}return O}async function B(w){let E=e,O=r.listSessionFiles(E.cwd).find(N=>N.sessionId===w);return O?O.file===E.file?{ok:!0}:(p(O),{ok:!0}):{ok:!1,error:"session not found"}}return o(e.cwd),a(e.cwd),l(),{info:g,poll:P,logEmbedStatus:v,listSessions:k,searchSessions:V,attach:B}}var Fx,qx,Gp,Ux,Jx,hc=C(()=>{hi();Wp();dc();Fx=".typebulb",qx=`${Fx}/locks`,Gp=5e3,Ux=6e4,Jx=50});function bi(r){let e=/^---[^\n]*\n([\s\S]*?)\n---/.exec(r),t=e?/^\s*name:\s*(.+?)\s*$/m.exec(e[1]):null;return t?t[1].replace(/^["']|["']$/g,""):void 0}function mc(r){return(bi(r)??"bulb").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"bulb"}var gc=C(()=>{});import{readdirSync as Kx,readFileSync as Wx,statSync as Hx}from"fs";import{join as zp,basename as Vx}from"path";function Qp(r,e,t){if(e>8)return t;let n;try{n=Kx(r,{withFileTypes:!0})}catch{return t}for(let s of n)if(s.isDirectory()){if(s.name.startsWith(".")||s.name==="node_modules")continue;Qp(zp(r,s.name),e+1,t)}else s.isFile()&&s.name.endsWith(".bulb.md")&&t.push(zp(r,s.name));return t}function wi(r){return Qp(r,0,[]).map(e=>{let t=0;try{t=Hx(e).mtimeMs}catch{}let n;try{n=bi(Wx(e,"utf8").slice(0,1024))}catch{}return{path:e,name:n??Vx(e).replace(/\.bulb\.md$/,""),mtime:t}})}var Xp=C(()=>{gc()});import{readFile as Yx}from"fs/promises";async function yc(r){try{let e=Qe(await Yx(r,"utf-8"));return e?Ut(ms(e)):void 0}catch{return}}var Zp=C(()=>{ba();Bs()});function bc(r){let e=Qe(r);if(!e)return r;let t=e.files.get("code.tsx");if(!t)return r;let n=td(t);if(!n.length)return r;let s=e.files.get("config.json"),i={};if(s)try{let l=JSON.parse(s);l&&typeof l=="object"&&(i=l)}catch{}let o=i.dependencies&&typeof i.dependencies=="object"?{...i.dependencies}:{},a=n.filter(l=>!(l in o));if(!a.length)return r;for(let l of a)o[l]="latest";i.dependencies=o;let c={name:e.frontmatter.name};for(let[l,f]of e.files){let u=Uc(l);u&&(c[u]=f)}return c.config=JSON.stringify(i,null,2),zc(c)}var eh=C(()=>{Ir();gs()});import{spawn as th}from"child_process";import{basename as Gx}from"path";function zx(){return process.env.TYPEBULB_EDITOR||"code"}function Xx(r,e,t){return t==null?[e]:Qx.test(Gx(r))?["-g",`${e}:${t}`]:[`+${t}`,e]}function Zx(r,e){let t=zx();return{command:t,args:Xx(t,r,e)}}function wc(r,e){let{command:t,args:n}=Zx(r,e),s=process.platform==="win32"?th("cmd.exe",["/d","/s","/c",t,...n],{detached:!0,stdio:"ignore",windowsHide:!0}):th(t,n,{detached:!0,stdio:"ignore"});s.on("error",i=>console.error("[typebulb] editor launch failed:",i?.message??i)),s.unref()}var Qx,rh=C(()=>{Qx=/^(code|code-insiders|codium|vscodium|cursor|windsurf)(\.cmd|\.exe)?$/i});var vc=C(()=>{xe();Xp();Zp();gc();eh();rh();Xr();ei()});import{existsSync as Sc,mkdirSync as ek,readFileSync as nh,writeFileSync as tk}from"fs";import{join as Xt,isAbsolute as rk}from"path";async function sh(r,e){let t=rk(r)?r:Xt(G,r);return Sc(t)?(wc(t,e),{ok:!0}):{ok:!1,error:"file not found"}}async function ih(r){let e=G,t=bc(r),n=Xt(e,"typebulbs");ek(n,{recursive:!0});let s=mc(t),i=`${s}.bulb.md`;for(let l=2;Sc(Xt(n,i))&&nh(Xt(n,i),"utf8")!==t;l++)i=`${s}-${l}.bulb.md`;let o=Xt(n,i);Sc(o)||tk(o,t);let a=Xt("typebulbs",i),c=await Ws(a,{cwd:e,open:!1});return{ok:!0,file:a,pid:c.pid,url:c.url}}async function oh(){return K(G)}async function ah(r){return await ft(r),{ok:!0}}async function ch(){return wi(G).map(r=>({...r,trusted:lt(r.path)}))}async function lh(r){let e=r.toLowerCase(),t=[];for(let n of wi(G).sort((s,i)=>i.mtime-s.mtime)){let s="";try{s=nh(n.path,"utf8")}catch{continue}let i=[];for(let c of s.split(`
|
|
396
|
+
`)){let l=c.replace(/\s+/g," ").trim();l&&i.push({text:l,lower:l.toLowerCase()})}let{hitCount:o,snippet:a}=gi(i,e);o&&t.push({path:n.path,hitCount:o,snippet:a})}return t}async function uh(r,e){let t=G;e!=null&&jt(r,e);let n=await Ws(r,{cwd:t,open:!1,trust:e});return{ok:!0,file:n.file,pid:n.pid,url:n.url,trust:!!n.trust}}async function fh(r){return{cap:await yc(r)}}async function dh(r,e){return jt(r,e),{ok:!0}}async function ph(r,e){return Se(r,e)}var xc=C(()=>{vc();hi();dc()});import{readFileSync as Ac,writeFileSync as mh,mkdirSync as nk,appendFileSync as gh,rmSync as hh}from"fs";import{join as xi,dirname as sk}from"path";import{createServer as ik}from"http";function ze(r){try{return JSON.parse(Ac(r,"utf8"))}catch{return null}}function Si(r,e){nk(sk(r),{recursive:!0}),mh(r,JSON.stringify(e,null,2)+`
|
|
397
397
|
`)}function bh(r,e,t){let n=xi(r,".gitignore"),s="";try{s=Ac(n,"utf8")}catch{}let i=new Set(s.split(/\r?\n/).map(c=>c.trim())),o=e.filter(c=>!i.has(c));if(!o.length)return;let a=s&&!s.endsWith(`
|
|
398
398
|
`)?`
|
|
399
399
|
`:"";try{gh(n,a+t+`
|
|
@@ -407,10 +407,10 @@ data: ${JSON.stringify(a)}
|
|
|
407
407
|
|
|
408
408
|
`)}default:return i}};return i=>{r+=i;let o="",a;for(;(a=r.indexOf(`
|
|
409
409
|
|
|
410
|
-
`))!==-1;){let c=r.slice(0,a);if(r=r.slice(a+2),!c.trim())continue;let l=s(c);l!==null&&(o+=l)}return o}}function pk(r){return new Promise(e=>{let t=[];r.on("data",n=>t.push(n)),r.on("end",()=>e(Buffer.concat(t).toString("utf8"))),r.on("error",()=>e(Buffer.concat(t).toString("utf8")))})}function un(r,e,t,n){r.writableEnded||(r.writeHead(e,{"content-type":"application/json"}),r.end(JSON.stringify({type:"error",error:{type:t,message:n}})))}async function hk(r,e,t){if(!Ae){un(e,400,"invalid_request_error",ck);return}let n=process.env.OPENROUTER_API_KEY;if(!n){un(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(Tc,{method:"POST",headers:vh(r,n),body:Sh(t),signal:s.signal})}catch(u){un(e,502,"api_error",`proxy upstream failed: ${ye(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"),c=i.body.getReader(),l=new TextDecoder,f=a?dk():null;try{for(;;){let{done:u,value:d}=await c.read();if(u)break;if(d)if(f){let p=l.decode(d,{stream:!0});uk(p);let m=f(p);m&&e.write(m)}else e.write(Buffer.from(d))}}catch{}finally{e.writableEnded||e.end()}}async function mk(r,e,t){let n=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(!Ae||!n)return s();try{let i=await fetch(`${Tc}/count_tokens`,{method:"POST",headers:vh(r,n),body:Sh(t)});if(!i.ok)return s();let o=await i.text();e.writeHead(200,{"content-type":"application/json"}),e.end(o)}catch{s()}}function gk(r,e){let t=r.url||"/";if(r.method==="HEAD"){e.writeHead(200),e.end();return}if(r.method!=="POST"){un(e,404,"not_found_error",t);return}pk(r).then(n=>{if(t.includes("count_tokens"))return mk(r,e,n);if(t.includes("/v1/messages"))return hk(r,e,n);un(e,404,"not_found_error",t)})}function yk(){return Zt&>?Promise.resolve(gt):new Promise((r,e)=>{let t=ik(gk);t.on("error",e),t.listen(0,"127.0.0.1",()=>{Zt=t,gt=t.address().port,console.log(`[switcher] wire proxy listening on ${vi(gt)}`),r(gt)})})}function bk(){try{Zt?.close()}catch{}Zt=null,gt=null}function wk(r,e){let t=ki(r),n=ze(t),s=n||{};if((!s.env||typeof s.env!="object")&&(s.env={}),s.env.ANTHROPIC_BASE_URL===vi(e)&&s.env.ANTHROPIC_AUTH_TOKEN)return;let i=Ei(r);if(!ze(i)){let a={};for(let c of yh)a[c]=c in s.env?s.env[c]:null;Si(i,{managedBy:"agent-switcher",fileExisted:n!==null,snapshot:a,active:null})}s.env.ANTHROPIC_BASE_URL=vi(e),s.env.ANTHROPIC_AUTH_TOKEN=ak,Si(t,s),bh(r,[".claude/settings.local.json",".claude/.cc-switcher.json"],"# agent switcher (local Claude Code model override)")}function vk(r,e,t){let n=Ei(r),s=ze(n)||{managedBy:"agent-switcher",fileExisted:!1,snapshot:{}};s.active={model:e,provider:t},Si(n,s)}function xh(r){let e=ki(r),t=Ei(r),n=ze(t),s=ze(e);if(s?.env){let i=n?.snapshot||{};for(let o of yh){let a=i[o];a==null?delete s.env[o]:s.env[o]=a}if(Object.keys(s.env).length===0&&delete s.env,n?.fileExisted===!1&&Object.keys(s).length===0)try{hh(e,{force:!0})}catch{}else Si(e,s)}try{hh(t,{force:!0})}catch{}}async function Sk(){let r=!!process.env.OPENROUTER_API_KEY,e=[];try{e=(await pt()).filter(t=>t.provider==="openrouter"&&!Pc(t.name)).map(t=>({id:t.name,label:t.friendlyName||t.name}))}catch(t){console.error("[switcher] model list failed",ye(t))}return{hasKey:r,models:e}}async function xk(){if(Zt&&Ae)return{active:!0,managed:!0,model:Ae,port:gt,provider:yt,routedModel:fn,caching:dn,reasoning:pn,externalBaseUrl:null};let r=ze(ki(
|
|
410
|
+
`))!==-1;){let c=r.slice(0,a);if(r=r.slice(a+2),!c.trim())continue;let l=s(c);l!==null&&(o+=l)}return o}}function pk(r){return new Promise(e=>{let t=[];r.on("data",n=>t.push(n)),r.on("end",()=>e(Buffer.concat(t).toString("utf8"))),r.on("error",()=>e(Buffer.concat(t).toString("utf8")))})}function un(r,e,t,n){r.writableEnded||(r.writeHead(e,{"content-type":"application/json"}),r.end(JSON.stringify({type:"error",error:{type:t,message:n}})))}async function hk(r,e,t){if(!Ae){un(e,400,"invalid_request_error",ck);return}let n=process.env.OPENROUTER_API_KEY;if(!n){un(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(Tc,{method:"POST",headers:vh(r,n),body:Sh(t),signal:s.signal})}catch(u){un(e,502,"api_error",`proxy upstream failed: ${ye(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"),c=i.body.getReader(),l=new TextDecoder,f=a?dk():null;try{for(;;){let{done:u,value:d}=await c.read();if(u)break;if(d)if(f){let p=l.decode(d,{stream:!0});uk(p);let m=f(p);m&&e.write(m)}else e.write(Buffer.from(d))}}catch{}finally{e.writableEnded||e.end()}}async function mk(r,e,t){let n=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(!Ae||!n)return s();try{let i=await fetch(`${Tc}/count_tokens`,{method:"POST",headers:vh(r,n),body:Sh(t)});if(!i.ok)return s();let o=await i.text();e.writeHead(200,{"content-type":"application/json"}),e.end(o)}catch{s()}}function gk(r,e){let t=r.url||"/";if(r.method==="HEAD"){e.writeHead(200),e.end();return}if(r.method!=="POST"){un(e,404,"not_found_error",t);return}pk(r).then(n=>{if(t.includes("count_tokens"))return mk(r,e,n);if(t.includes("/v1/messages"))return hk(r,e,n);un(e,404,"not_found_error",t)})}function yk(){return Zt&>?Promise.resolve(gt):new Promise((r,e)=>{let t=ik(gk);t.on("error",e),t.listen(0,"127.0.0.1",()=>{Zt=t,gt=t.address().port,console.log(`[switcher] wire proxy listening on ${vi(gt)}`),r(gt)})})}function bk(){try{Zt?.close()}catch{}Zt=null,gt=null}function wk(r,e){let t=ki(r),n=ze(t),s=n||{};if((!s.env||typeof s.env!="object")&&(s.env={}),s.env.ANTHROPIC_BASE_URL===vi(e)&&s.env.ANTHROPIC_AUTH_TOKEN)return;let i=Ei(r);if(!ze(i)){let a={};for(let c of yh)a[c]=c in s.env?s.env[c]:null;Si(i,{managedBy:"agent-switcher",fileExisted:n!==null,snapshot:a,active:null})}s.env.ANTHROPIC_BASE_URL=vi(e),s.env.ANTHROPIC_AUTH_TOKEN=ak,Si(t,s),bh(r,[".claude/settings.local.json",".claude/.cc-switcher.json"],"# agent switcher (local Claude Code model override)")}function vk(r,e,t){let n=Ei(r),s=ze(n)||{managedBy:"agent-switcher",fileExisted:!1,snapshot:{}};s.active={model:e,provider:t},Si(n,s)}function xh(r){let e=ki(r),t=Ei(r),n=ze(t),s=ze(e);if(s?.env){let i=n?.snapshot||{};for(let o of yh){let a=i[o];a==null?delete s.env[o]:s.env[o]=a}if(Object.keys(s.env).length===0&&delete s.env,n?.fileExisted===!1&&Object.keys(s).length===0)try{hh(e,{force:!0})}catch{}else Si(e,s)}try{hh(t,{force:!0})}catch{}}async function Sk(){let r=!!process.env.OPENROUTER_API_KEY,e=[];try{e=(await pt()).filter(t=>t.provider==="openrouter"&&!Pc(t.name)).map(t=>({id:t.name,label:t.friendlyName||t.name}))}catch(t){console.error("[switcher] model list failed",ye(t))}return{hasKey:r,models:e}}async function xk(){if(Zt&&Ae)return{active:!0,managed:!0,model:Ae,port:gt,provider:yt,routedModel:fn,caching:dn,reasoning:pn,externalBaseUrl:null};let r=ze(ki(G))?.env||{};return{active:!1,managed:!1,model:null,port:null,provider:null,routedModel:null,caching:"unknown",reasoning:pn,externalBaseUrl:r.ANTHROPIC_BASE_URL||null}}async function kh(r,e){let t=await yk();return Ae=r,yt=e,wk(G,t),t}async function kk({model:r}){if(!process.env.OPENROUTER_API_KEY)return{ok:!1,error:"OPENROUTER_API_KEY not set \u2014 add a key first"};if(!r)return{ok:!1,error:"no model given"};if(Pc(r))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 kh(r,Oc[r]??null),fn=null,dn="unknown",vk(G,r,yt)}catch(e){return{ok:!1,error:`failed to start the wire proxy: ${ye(e)}`}}return{ok:!0}}async function Ek({level:r}){return r!=null&&(!Number.isInteger(r)||r<0||r>=kc.length)?{ok:!1,error:`reasoning level must be 0\u2013${kc.length-1} or null`}:(pn=r,{ok:!0,level:r})}async function Ak(){return xh(G),Ae=null,yt=null,fn=null,dn="unknown",{ok:!0}}async function Tk({key:r}){let e=(r||"").trim();if(!e)return{ok:!1,error:"empty key"};let t=G,n=xi(t,".env"),s="";try{s=Ac(n,"utf8")}catch{}try{if(/^\s*OPENROUTER_API_KEY\s*=/m.test(s))mh(n,s.replace(/^\s*OPENROUTER_API_KEY\s*=.*$/m,`OPENROUTER_API_KEY=${e}`));else{let i=s&&!s.endsWith(`
|
|
411
411
|
`)?`
|
|
412
412
|
`:"";gh(n,i+`OPENROUTER_API_KEY=${e}
|
|
413
|
-
`)}}catch(i){return{ok:!1,error:ye(i)}}return process.env.OPENROUTER_API_KEY=e,bh(t,[".env"],"# secrets"),{ok:!0}}function Pk(){if(!(!Zt&&!Ae)){try{xh(Y)}catch{}bk()}}function Ok(r,e){return Eh.test(e)?"blocked by your OpenRouter data policy":r===401||r===403||/unauthor|invalid api key|no auth|forbidden/i.test(e)?"auth rejected \u2014 check your OpenRouter key":r===404||/not a valid model|no such model|unknown model|model not found/i.test(e)?"model not found on this route":r===429||/rate limit/i.test(e)?"rate limited":r===402||/insufficient|credit|quota|balance/i.test(e)?"out of credits / quota":e.slice(0,160)}function Ck(r){if(Eh.test(r))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 Rk(r,e,t){if(!r)return{works:null,read:0,note:t?`couldn't re-test on ${t} \u2014 caching unconfirmed`:"caching unconfirmed"};let n=Ec(e?.cache_read_input_tokens)||Ec(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 n>0?{works:!0,read:n,note:`${n} tokens read from cache on the 2nd call`}:s?{works:!1,read:n,note:"no cache reads after a warm call \u2014 every turn re-bills the full context"}:{works:null,read:n,note:"route doesn't report cache usage \u2014 caching almost certainly not honored"}}async function Nk({model:r}){let e=process.env.OPENROUTER_API_KEY;if(!e)return{ok:!1,error:"OPENROUTER_API_KEY not set \u2014 add a key first"};if(!r)return{ok:!1,error:"no model given"};if(Pc(r))return{ok:!1,error:"Anthropic model \u2014 not offered or probed via OpenRouter"};let t=Date.now(),n=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:r,max_tokens:8,system:[{type:"text",text:n,cache_control:{type:"ephemeral"}}],messages:[{role:"user",content:"Reply with exactly: ok"}]},o=async a=>{let c=new AbortController,l=setTimeout(()=>c.abort(),2e4);try{let f=JSON.stringify(a?{...i,provider:wh(a)}:i),u=await fetch(Tc,{method:"POST",signal:c.signal,headers:s,body:f}),d=await u.json().catch(()=>({}));return{r:u,j:d}}finally{clearTimeout(l)}};try{let{r:a,j:c}=await o();if(!a.ok){let S=c?.error?.message||c?.message||JSON.stringify(c).slice(0,300);return{ok:!0,callable:!1,status:a.status,ms:Date.now()-t,error:Ok(a.status,S),restriction:Ck(S)}}let l=typeof c?.provider=="string"?c.provider:void 0,f=c?.content?.find?.(S=>S.type==="text")?.text??c?.content?.[0]?.text??"ok",u=Ec(c?.usage?.cache_creation_input_tokens),{r:d,j:p}=await o(l),{works:m,read:h,note:y}=Rk(d.ok,p?.usage,l);return m===!0&&l&&(Oc[r]=l,Ae===r&&(yt=l)),{ok:!0,callable:!0,status:a.status,ms:Date.now()-t,provider:l,sample:String(f).trim().slice(0,60),cache:{works:m,created:u,read:h,note:y}}}catch(a){let c=ye(a);return{ok:!0,callable:!1,ms:Date.now()-t,error:/abort/i.test(c)?"timed out (20s)":c}}}var ok,Tc,ak,ck,yh,lk,kc,ki,Ei,vi,Pc,Zt,gt,Ae,yt,fn,dn,pn,Oc,Ec,wh,Eh,Ah=C(()=>{vc();hi();ok="https://openrouter.ai/api",Tc=`${ok}/v1/messages`,ak="typebulb-proxy-managed",ck="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.",yh=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN"],lk=5e3,kc=["low","medium","high"],ki=r=>xi(r,".claude","settings.local.json"),Ei=r=>xi(r,".claude",".cc-switcher.json"),vi=r=>`http://127.0.0.1:${r}`;Pc=r=>/^anthropic\//i.test(r)||/claude/i.test(r),Zt=null,gt=null,Ae=null,yt=null,fn=null,dn="unknown",pn=1,Oc={},Ec=r=>typeof r=="number"?r:0,wh=r=>({order:[r],allow_fallbacks:!1});Eh=/data policy|no endpoints|no allowed providers|privacy|requires.*(training|logging|data)/i;(async function(){try{let e=ze(Ei(Y)),t=e?.active?.model;if(!t)return;let s=(ze(ki(Y))?.env||{}).ANTHROPIC_BASE_URL||"";if(!/127\.0\.0\.1|localhost/.test(s))return;let i=await kh(t,e.active.provider??Oc[t]??null);console.log(`[switcher] re-adopted override after restart: ${t} via ${vi(i)}`)}catch(e){console.error("[switcher] boot reconcile failed",ye(e))}})()});var Ph={};Nc(Ph,{attach:()=>Bk,blockToMarkdown:()=>zs,breakout:()=>ih,capText:()=>ke,cleanUserText:()=>Ye,clearSwitchModel:()=>Ak,displayName:()=>_k,info:()=>Ik,isHiddenTurn:()=>rn,launchBulb:()=>uh,listBreakouts:()=>oh,listBulbFiles:()=>ch,listSessions:()=>Mk,listSwitchModels:()=>Sk,logEmbedStatus:()=>$k,openFile:()=>sh,poll:()=>Lk,predictTrustOf:()=>fh,probeModel:()=>Nk,readBulbLog:()=>ph,saveOpenRouterKey:()=>Tk,searchBulbs:()=>lh,searchSessions:()=>Dk,setBulbTrust:()=>dh,setReasoning:()=>Ek,setSwitchModel:()=>kk,shutdownSwitcher:()=>Pk,stopBreakout:()=>ah,switchState:()=>xk});var Th,_k,Ik,Lk,$k,Mk,Dk,Bk,Oh=C(()=>{hc();Qs();xc();Ah();Qs();Vs();Th=new Wt,_k=Th.displayName,{info:Ik,poll:Lk,logEmbedStatus:$k,listSessions:Mk,searchSessions:Dk,attach:Bk}=yi(Th)});var Rh={};Nc(Rh,{attach:()=>Wk,breakout:()=>ih,displayName:()=>jk,info:()=>Fk,launchBulb:()=>uh,listBreakouts:()=>oh,listBulbFiles:()=>ch,listSessions:()=>Jk,logEmbedStatus:()=>Uk,openFile:()=>sh,poll:()=>qk,predictTrustOf:()=>fh,readBulbLog:()=>ph,searchBulbs:()=>lh,searchSessions:()=>Kk,setBulbTrust:()=>dh,stopBreakout:()=>ah});var Ch,jk,Fk,qk,Uk,Jk,Kk,Wk,Nh=C(()=>{hc();Ga();xc();Ch=new Ht,jk=Ch.displayName,{info:Fk,poll:qk,logEmbedStatus:Uk,listSessions:Jk,searchSessions:Kk,attach:Wk}=yi(Ch)});import*as Fh from"fs/promises";import*as _e from"path";import*as Ic from"fs/promises";import{existsSync as bt,readFileSync as Yh}from"fs";import*as W from"path";import{pathToFileURL as Gh}from"url";import{resolve as Pi}from"resolve.exports";import{init as Lc,parse as $c}from"es-module-lexer";function Mc(r,e){let t=W.join(r,"package.json");try{return JSON.parse(Yh(t,"utf8"))}catch{throw new Error(`--replace package '${e}' has no readable package.json at ${t}`)}}var Ti=["browser","import","default"],_c=["node","import","default"];function Dc(r){let e=r.indexOf("=");if(e===-1)throw new Error(`--replace must be <name>=<path> (got '${r}')`);let t=r.slice(0,e).trim(),n=r.slice(e+1).trim();if(!t)throw new Error(`--replace missing package name (got '${r}')`);if(!n)throw new Error(`--replace missing path for '${t}'`);if(t.startsWith("@"))throw new Error(`--replace does not support scoped names yet; '${t}' is scoped`);return{name:t,dir:W.resolve(n)}}async function Bc(r){let{name:e,dir:t}=r;if(!bt(t))throw new Error(`--replace path for '${e}' does not exist: ${t}`);let n=Mc(t,e),s=zh(n,e),i=W.resolve(t,s);if(!bt(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=W.dirname(i),a=`/local/${e}/${W.basename(i)}`,c=Qh(n,t);return await Xh(e,i,o),{name:e,dir:t,entryAbs:i,serveDir:o,entryUrl:a,typesAbs:c}}function zh(r,e){if(r.exports!==void 0){let n;try{n=Pi(r,".",{browser:!0,conditions:Ti})}catch(i){throw new Error(`--replace package '${e}' "exports" does not resolve a browser entry (conditions: ${Ti.join(", ")}): ${i instanceof Error?i.message:i}`)}let s=Oi(n);if(!s)throw new Error(`--replace package '${e}' "exports" did not resolve "." to a single file (conditions: ${Ti.join(", ")}); too complex to override.`);return s}let t=r.module??r.main;if(!t)throw new Error(`--replace package '${e}' has no "exports", "module", or "main" entry to resolve.`);return t}function Qh(r,e){if(r.exports!==void 0)try{let n=Pi(r,".",{conditions:["types"]}),s=Oi(n);if(s){let i=W.resolve(e,s);if(bt(i))return i}}catch{}let t=r.types??r.typings;if(t){let n=W.resolve(e,t);if(bt(n))return n}}function Oi(r){if(typeof r=="string")return r;if(Array.isArray(r))return r.find(e=>typeof e=="string")}async function Xh(r,e,t){await Lc;let n=W.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 Ic.readFile(o,"utf8")}catch{continue}let c,l;try{[c,,,l]=$c(a,o)}catch{continue}if(o===e&&!l)throw new Error(`override package '${r}' entry is not an ES module (no import/export syntax); CommonJS or non-module entries aren't supported (esm.sh would have to transform it).`);for(let f of c){if(f.d===-2)continue;let u=f.n;if(u&&!u.startsWith("node:")){if(u.startsWith("./")||u.startsWith("../")||u.startsWith("/")){let d=Zh(o,u,n);d&&!s.has(d)&&i.push(d);continue}throw new Error(`override package must ship self-contained (bundle its dependencies); ${r} externalizes '${u}'`)}}}}function Zh(r,e,t){let n=e.replace(/[?#].*$/,""),s=W.resolve(W.dirname(r),n),i=[s,s+".js",s+".mjs",W.join(s,"index.js"),W.join(s,"index.mjs")];for(let o of i)if(W.normalize(o).startsWith(t)&&bt(o))return o}function em(r,e,t){let n=Mc(r,e),s;if(n.exports!==void 0)try{s=Oi(Pi(n,t,{conditions:_c}))}catch(o){throw new Error(`--replace package '${e}' "exports" does not resolve a node entry for '${t}' (conditions: ${_c.join(", ")}): ${o instanceof Error?o.message:o}`)}else t==="."&&(s=n.main??n.module);if(!s)throw new Error(`--replace package '${e}' has no node export for '${t}'.`);let i=W.resolve(r,s);if(!bt(i))throw new Error(`--replace package '${e}' built file not found: ${i} \u2014 did you build it (e.g. \`pnpm run build\`)?`);return Gh(i).href}async function jc(r,e){await Lc;let t;try{[t]=$c(r)}catch{return r}let n="",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),c=em(e.dir,e.name,a);n+=r.slice(s,i.s)+c,s=i.e}return n+r.slice(s)}var tm=5e3;function Fc(r){let t={subcommand:"run",file:"",port:3e3,watch:!0,open:!(process.env.TERM_PROGRAM==="vscode"),server:!1,trust:!1,noTrust:!1,follow:!1,clear:!1,help:!1,version:!1,callArgs:[],hasArgsFlag:!1},n=["call","check","predict","logs","wait","stop","trust","untrust","skill","models","send"],s=r[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)}r=r.slice(1)}else s&&n.includes(s)&&(t.subcommand=s,r=r.slice(1));let i=[];for(let o=0;o<r.length;o++){let a=r[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==="--mode"){let c=r[++o];(!c||c.startsWith("-"))&&(console.error("Missing value for --mode (e.g. --mode staging)"),process.exit(1)),t.mode=c}else if(a==="--follow"||a==="-f")t.follow=!0;else if(a==="--clear")t.clear=!0;else if(a==="--run"){let c=r[++o];if(c==="latest")t.run="latest";else{let l=parseInt(c,10);(isNaN(l)||l<1)&&(console.error(`Invalid --run value: ${c} (a run number, or 'latest')`),process.exit(1)),t.run=l}}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 c=r[++o];c===void 0&&(console.error("Missing value for --match (a literal substring new log lines must contain)"),process.exit(1)),t.match=c}else if(a==="--timeout"){let c=parseInt(r[++o],10);(isNaN(c)||c<=0)&&(console.error(`Invalid --timeout value: ${r[o]} (seconds)`),process.exit(1)),t.timeoutSec=c}else if(a==="--wait"||a.startsWith("--wait="))if(a.startsWith("--wait=")){let c=parseInt(a.slice(7),10);(isNaN(c)||c<=0)&&(console.error(`Invalid --wait value: ${a.slice(7)} (milliseconds)`),process.exit(1)),t.sendWaitMs=c}else t.sendWaitMs=tm;else if(a==="--lines"||a==="-n"){let c=parseInt(r[++o],10);(isNaN(c)||c<0)&&(console.error(`Invalid --lines value: ${r[o]}`),process.exit(1)),t.lines=c}else if(a==="--port"||a==="-p"){let c=r[++o],l=parseInt(c,10);isNaN(l)&&(console.error(`Invalid port: ${c}`),process.exit(1)),t.port=l}else if(a==="--replace"||a.startsWith("--replace=")){let c=a.startsWith("--replace=")?a.slice(10):r[++o]??"";try{let l=Dc(c);if(t.local)throw new Error(`--replace can only be used once (got '${t.local.name}' and '${l.name}')`);t.local=l}catch(l){console.error(l instanceof Error?l.message:String(l)),process.exit(1)}}else if(a==="--args"||a.startsWith("--args=")){t.hasArgsFlag=!0;let c=a.startsWith("--args=")?a.slice(7):r[++o];c===void 0&&(console.error("Missing value for --args (a JSON array, or - to read it from stdin)"),process.exit(1)),t.argsJson=c}else a.startsWith("-")||(t.subcommand==="call"||t.subcommand==="send"?i.push(a):t.file=a)}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}function qc(){console.log(`
|
|
413
|
+
`)}}catch(i){return{ok:!1,error:ye(i)}}return process.env.OPENROUTER_API_KEY=e,bh(t,[".env"],"# secrets"),{ok:!0}}function Pk(){if(!(!Zt&&!Ae)){try{xh(G)}catch{}bk()}}function Ok(r,e){return Eh.test(e)?"blocked by your OpenRouter data policy":r===401||r===403||/unauthor|invalid api key|no auth|forbidden/i.test(e)?"auth rejected \u2014 check your OpenRouter key":r===404||/not a valid model|no such model|unknown model|model not found/i.test(e)?"model not found on this route":r===429||/rate limit/i.test(e)?"rate limited":r===402||/insufficient|credit|quota|balance/i.test(e)?"out of credits / quota":e.slice(0,160)}function Ck(r){if(Eh.test(r))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 Rk(r,e,t){if(!r)return{works:null,read:0,note:t?`couldn't re-test on ${t} \u2014 caching unconfirmed`:"caching unconfirmed"};let n=Ec(e?.cache_read_input_tokens)||Ec(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 n>0?{works:!0,read:n,note:`${n} tokens read from cache on the 2nd call`}:s?{works:!1,read:n,note:"no cache reads after a warm call \u2014 every turn re-bills the full context"}:{works:null,read:n,note:"route doesn't report cache usage \u2014 caching almost certainly not honored"}}async function Nk({model:r}){let e=process.env.OPENROUTER_API_KEY;if(!e)return{ok:!1,error:"OPENROUTER_API_KEY not set \u2014 add a key first"};if(!r)return{ok:!1,error:"no model given"};if(Pc(r))return{ok:!1,error:"Anthropic model \u2014 not offered or probed via OpenRouter"};let t=Date.now(),n=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:r,max_tokens:8,system:[{type:"text",text:n,cache_control:{type:"ephemeral"}}],messages:[{role:"user",content:"Reply with exactly: ok"}]},o=async a=>{let c=new AbortController,l=setTimeout(()=>c.abort(),2e4);try{let f=JSON.stringify(a?{...i,provider:wh(a)}:i),u=await fetch(Tc,{method:"POST",signal:c.signal,headers:s,body:f}),d=await u.json().catch(()=>({}));return{r:u,j:d}}finally{clearTimeout(l)}};try{let{r:a,j:c}=await o();if(!a.ok){let x=c?.error?.message||c?.message||JSON.stringify(c).slice(0,300);return{ok:!0,callable:!1,status:a.status,ms:Date.now()-t,error:Ok(a.status,x),restriction:Ck(x)}}let l=typeof c?.provider=="string"?c.provider:void 0,f=c?.content?.find?.(x=>x.type==="text")?.text??c?.content?.[0]?.text??"ok",u=Ec(c?.usage?.cache_creation_input_tokens),{r:d,j:p}=await o(l),{works:m,read:h,note:y}=Rk(d.ok,p?.usage,l);return m===!0&&l&&(Oc[r]=l,Ae===r&&(yt=l)),{ok:!0,callable:!0,status:a.status,ms:Date.now()-t,provider:l,sample:String(f).trim().slice(0,60),cache:{works:m,created:u,read:h,note:y}}}catch(a){let c=ye(a);return{ok:!0,callable:!1,ms:Date.now()-t,error:/abort/i.test(c)?"timed out (20s)":c}}}var ok,Tc,ak,ck,yh,lk,kc,ki,Ei,vi,Pc,Zt,gt,Ae,yt,fn,dn,pn,Oc,Ec,wh,Eh,Ah=C(()=>{vc();hi();ok="https://openrouter.ai/api",Tc=`${ok}/v1/messages`,ak="typebulb-proxy-managed",ck="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.",yh=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN"],lk=5e3,kc=["low","medium","high"],ki=r=>xi(r,".claude","settings.local.json"),Ei=r=>xi(r,".claude",".cc-switcher.json"),vi=r=>`http://127.0.0.1:${r}`;Pc=r=>/^anthropic\//i.test(r)||/claude/i.test(r),Zt=null,gt=null,Ae=null,yt=null,fn=null,dn="unknown",pn=1,Oc={},Ec=r=>typeof r=="number"?r:0,wh=r=>({order:[r],allow_fallbacks:!1});Eh=/data policy|no endpoints|no allowed providers|privacy|requires.*(training|logging|data)/i;(async function(){try{let e=ze(Ei(G)),t=e?.active?.model;if(!t)return;let s=(ze(ki(G))?.env||{}).ANTHROPIC_BASE_URL||"";if(!/127\.0\.0\.1|localhost/.test(s))return;let i=await kh(t,e.active.provider??Oc[t]??null);console.log(`[switcher] re-adopted override after restart: ${t} via ${vi(i)}`)}catch(e){console.error("[switcher] boot reconcile failed",ye(e))}})()});var Ph={};Nc(Ph,{attach:()=>Bk,blockToMarkdown:()=>zs,breakout:()=>ih,capText:()=>ke,cleanUserText:()=>Ye,clearSwitchModel:()=>Ak,displayName:()=>_k,info:()=>Ik,isHiddenTurn:()=>rn,launchBulb:()=>uh,listBreakouts:()=>oh,listBulbFiles:()=>ch,listSessions:()=>Mk,listSwitchModels:()=>Sk,logEmbedStatus:()=>$k,openFile:()=>sh,poll:()=>Lk,predictTrustOf:()=>fh,probeModel:()=>Nk,readBulbLog:()=>ph,saveOpenRouterKey:()=>Tk,searchBulbs:()=>lh,searchSessions:()=>Dk,setBulbTrust:()=>dh,setReasoning:()=>Ek,setSwitchModel:()=>kk,shutdownSwitcher:()=>Pk,stopBreakout:()=>ah,switchState:()=>xk});var Th,_k,Ik,Lk,$k,Mk,Dk,Bk,Oh=C(()=>{hc();Qs();xc();Ah();Qs();Vs();Th=new Wt,_k=Th.displayName,{info:Ik,poll:Lk,logEmbedStatus:$k,listSessions:Mk,searchSessions:Dk,attach:Bk}=yi(Th)});var Rh={};Nc(Rh,{attach:()=>Wk,breakout:()=>ih,displayName:()=>jk,info:()=>Fk,launchBulb:()=>uh,listBreakouts:()=>oh,listBulbFiles:()=>ch,listSessions:()=>Jk,logEmbedStatus:()=>Uk,openFile:()=>sh,poll:()=>qk,predictTrustOf:()=>fh,readBulbLog:()=>ph,searchBulbs:()=>lh,searchSessions:()=>Kk,setBulbTrust:()=>dh,stopBreakout:()=>ah});var Ch,jk,Fk,qk,Uk,Jk,Kk,Wk,Nh=C(()=>{hc();Ga();xc();Ch=new Ht,jk=Ch.displayName,{info:Fk,poll:qk,logEmbedStatus:Uk,listSessions:Jk,searchSessions:Kk,attach:Wk}=yi(Ch)});import*as Fh from"fs/promises";import*as _e from"path";import*as Ic from"fs/promises";import{existsSync as bt,readFileSync as Yh}from"fs";import*as W from"path";import{pathToFileURL as Gh}from"url";import{resolve as Pi}from"resolve.exports";import{init as Lc,parse as $c}from"es-module-lexer";function Mc(r,e){let t=W.join(r,"package.json");try{return JSON.parse(Yh(t,"utf8"))}catch{throw new Error(`--replace package '${e}' has no readable package.json at ${t}`)}}var Ti=["browser","import","default"],_c=["node","import","default"];function Dc(r){let e=r.indexOf("=");if(e===-1)throw new Error(`--replace must be <name>=<path> (got '${r}')`);let t=r.slice(0,e).trim(),n=r.slice(e+1).trim();if(!t)throw new Error(`--replace missing package name (got '${r}')`);if(!n)throw new Error(`--replace missing path for '${t}'`);if(t.startsWith("@"))throw new Error(`--replace does not support scoped names yet; '${t}' is scoped`);return{name:t,dir:W.resolve(n)}}async function Bc(r){let{name:e,dir:t}=r;if(!bt(t))throw new Error(`--replace path for '${e}' does not exist: ${t}`);let n=Mc(t,e),s=zh(n,e),i=W.resolve(t,s);if(!bt(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=W.dirname(i),a=`/local/${e}/${W.basename(i)}`,c=Qh(n,t);return await Xh(e,i,o),{name:e,dir:t,entryAbs:i,serveDir:o,entryUrl:a,typesAbs:c}}function zh(r,e){if(r.exports!==void 0){let n;try{n=Pi(r,".",{browser:!0,conditions:Ti})}catch(i){throw new Error(`--replace package '${e}' "exports" does not resolve a browser entry (conditions: ${Ti.join(", ")}): ${i instanceof Error?i.message:i}`)}let s=Oi(n);if(!s)throw new Error(`--replace package '${e}' "exports" did not resolve "." to a single file (conditions: ${Ti.join(", ")}); too complex to override.`);return s}let t=r.module??r.main;if(!t)throw new Error(`--replace package '${e}' has no "exports", "module", or "main" entry to resolve.`);return t}function Qh(r,e){if(r.exports!==void 0)try{let n=Pi(r,".",{conditions:["types"]}),s=Oi(n);if(s){let i=W.resolve(e,s);if(bt(i))return i}}catch{}let t=r.types??r.typings;if(t){let n=W.resolve(e,t);if(bt(n))return n}}function Oi(r){if(typeof r=="string")return r;if(Array.isArray(r))return r.find(e=>typeof e=="string")}async function Xh(r,e,t){await Lc;let n=W.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 Ic.readFile(o,"utf8")}catch{continue}let c,l;try{[c,,,l]=$c(a,o)}catch{continue}if(o===e&&!l)throw new Error(`override package '${r}' entry is not an ES module (no import/export syntax); CommonJS or non-module entries aren't supported (esm.sh would have to transform it).`);for(let f of c){if(f.d===-2)continue;let u=f.n;if(u&&!u.startsWith("node:")){if(u.startsWith("./")||u.startsWith("../")||u.startsWith("/")){let d=Zh(o,u,n);d&&!s.has(d)&&i.push(d);continue}throw new Error(`override package must ship self-contained (bundle its dependencies); ${r} externalizes '${u}'`)}}}}function Zh(r,e,t){let n=e.replace(/[?#].*$/,""),s=W.resolve(W.dirname(r),n),i=[s,s+".js",s+".mjs",W.join(s,"index.js"),W.join(s,"index.mjs")];for(let o of i)if(W.normalize(o).startsWith(t)&&bt(o))return o}function em(r,e,t){let n=Mc(r,e),s;if(n.exports!==void 0)try{s=Oi(Pi(n,t,{conditions:_c}))}catch(o){throw new Error(`--replace package '${e}' "exports" does not resolve a node entry for '${t}' (conditions: ${_c.join(", ")}): ${o instanceof Error?o.message:o}`)}else t==="."&&(s=n.main??n.module);if(!s)throw new Error(`--replace package '${e}' has no node export for '${t}'.`);let i=W.resolve(r,s);if(!bt(i))throw new Error(`--replace package '${e}' built file not found: ${i} \u2014 did you build it (e.g. \`pnpm run build\`)?`);return Gh(i).href}async function jc(r,e){await Lc;let t;try{[t]=$c(r)}catch{return r}let n="",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),c=em(e.dir,e.name,a);n+=r.slice(s,i.s)+c,s=i.e}return n+r.slice(s)}var tm=5e3;function Fc(r){let t={subcommand:"run",file:"",port:3e3,watch:!0,open:!(process.env.TERM_PROGRAM==="vscode"),server:!1,trust:!1,noTrust:!1,follow:!1,clear:!1,help:!1,version:!1,callArgs:[],hasArgsFlag:!1},n=["call","check","predict","logs","wait","stop","trust","untrust","skill","models","send"],s=r[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)}r=r.slice(1)}else s&&n.includes(s)&&(t.subcommand=s,r=r.slice(1));let i=[];for(let o=0;o<r.length;o++){let a=r[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==="--mode"){let c=r[++o];(!c||c.startsWith("-"))&&(console.error("Missing value for --mode (e.g. --mode staging)"),process.exit(1)),t.mode=c}else if(a==="--follow"||a==="-f")t.follow=!0;else if(a==="--clear")t.clear=!0;else if(a==="--run"){let c=r[++o];if(c==="latest")t.run="latest";else{let l=parseInt(c,10);(isNaN(l)||l<1)&&(console.error(`Invalid --run value: ${c} (a run number, or 'latest')`),process.exit(1)),t.run=l}}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 c=r[++o];c===void 0&&(console.error("Missing value for --match (a literal substring new log lines must contain)"),process.exit(1)),t.match=c}else if(a==="--timeout"){let c=parseInt(r[++o],10);(isNaN(c)||c<=0)&&(console.error(`Invalid --timeout value: ${r[o]} (seconds)`),process.exit(1)),t.timeoutSec=c}else if(a==="--wait"||a.startsWith("--wait="))if(a.startsWith("--wait=")){let c=parseInt(a.slice(7),10);(isNaN(c)||c<=0)&&(console.error(`Invalid --wait value: ${a.slice(7)} (milliseconds)`),process.exit(1)),t.sendWaitMs=c}else t.sendWaitMs=tm;else if(a==="--lines"||a==="-n"){let c=parseInt(r[++o],10);(isNaN(c)||c<0)&&(console.error(`Invalid --lines value: ${r[o]}`),process.exit(1)),t.lines=c}else if(a==="--port"||a==="-p"){let c=r[++o],l=parseInt(c,10);isNaN(l)&&(console.error(`Invalid port: ${c}`),process.exit(1)),t.port=l}else if(a==="--replace"||a.startsWith("--replace=")){let c=a.startsWith("--replace=")?a.slice(10):r[++o]??"";try{let l=Dc(c);if(t.local)throw new Error(`--replace can only be used once (got '${t.local.name}' and '${l.name}')`);t.local=l}catch(l){console.error(l instanceof Error?l.message:String(l)),process.exit(1)}}else if(a==="--args"||a.startsWith("--args=")){t.hasArgsFlag=!0;let c=a.startsWith("--args=")?a.slice(7):r[++o];c===void 0&&(console.error("Missing value for --args (a JSON array, or - to read it from stdin)"),process.exit(1)),t.argsJson=c}else a.startsWith("-")||(t.subcommand==="call"||t.subcommand==="send"?i.push(a):t.file=a)}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}function qc(){console.log(`
|
|
414
414
|
typebulb - Local bulb runner for Typebulb
|
|
415
415
|
|
|
416
416
|
Usage:
|
|
@@ -542,7 +542,7 @@ Examples:
|
|
|
542
542
|
`)}ba();import*as He from"fs/promises";import*as Is from"path";import{pathToFileURL as Ov}from"url";import{transform as qw}from"sucrase";function wa(r,e={}){let t=e.serverOnly?["typescript"]:["typescript","jsx"];try{let{code:n}=qw(r,{transforms:t,jsxRuntime:"automatic",jsxImportSource:e.jsxImportSource||"react",production:!0});return{code:n}}catch(n){return{code:"",error:String(n)}}}gs();function Hw(r){return r.map(e=>`${e.type} (line ${e.lineNumber}): ${e.message.split(`
|
|
543
543
|
`)[0]}`).join(`
|
|
544
544
|
`)}function rd(r,e){let t=Lr(r,{target:"client",dependencies:e}).filter(n=>n.type==="UNDECLARED_IMPORT");if(t.length)throw new Error(`Lint failed:
|
|
545
|
-
${Hw(t)}`)}var $r="https://esm.sh",Mr="https://cdn.jsdelivr.net/npm/",va="https://data.jsdelivr.com/v1/package/npm/";function nd(r){let e=(r||"").replace(/^\/+/,"").replace(/\/+$/,"");return e?e.split("/"):[]}var N=class r{constructor(e,t,n){let s=typeof e=="string"?r.parse(e):e;this.name=s.name,this.version=_t(t??s.version),this.subpath=_t(n??s.subpath)}static parse(e){let t=nd(e||"");if(!t.length)return new r({name:""});if(t[0].startsWith("@")){let s=t[0],[i,o]=sd(t[1]??""),a=_t(t.slice(2).join("/"));return new r({name:`${s}/${i}`,version:o,subpath:a})}else{let[s,i]=sd(t[0]),o=_t(t.slice(1).join("/"));return new r({name:s,version:i,subpath:o})}}static fromUrl(e){try{let t=new URL(e),n=new URL($r).host,s=new URL(Mr).host;if(t.host===n){let i=nd(t.pathname.replace(/^\/v\d+\//,"/"));if(!i.length)return;let o=i[0].startsWith("@")?`${i[0]}/${i[1]??""}`:i[0];return r.parse(o)}if(t.host===s){let i=t.pathname.split("/npm/")[1];if(!i)return;let o=i.split("/")[0]||"";return r.parse(o)}return}catch{return}}static versionFromUrl(e){return r.fromUrl(e)?.version}format(){let e=this.version?`${this.name}@${this.version}`:this.name;return this.subpath?`${e}/${this.subpath}`:e}root(){return this.name}static rootOf(e){return r.parse(e).name}withVersion(e){return new r({name:this.name,version:_t(e),subpath:this.subpath})}withPreferredVersion(e,t){let n=e||t;return n?this.withVersion(n):this}static isBare(e){if(!e||e.startsWith(".")||e.startsWith("/"))return!1;let t=e.toLowerCase();return!t.startsWith("http://")&&!t.startsWith("https://")}},_t=r=>r&&r.length?r:void 0,sd=r=>{let e=r.indexOf("@");return e<0?[r,void 0]:[r.slice(0,e),_t(r.slice(e+1))]};async function re(r){try{return await r()}catch{return}}var Dr=class{constructor(e,t){this.cache=e,this.http=t,this.esmHost=$r,this.jsDelivrBase=Mr,this.jsDelivrMeta=va,this.pinMs=1e4,this.versionsIndexMs=1440*60*1e3,this.metaTtlMs=10080*60*1e3,this.pinCache=new Map}normalizeRelative(e){let t=e||"";return t.startsWith("./")?t.slice(2):t.replace(/^\/+/,"")}ensureLeadingDotSlash(e){return e.startsWith("./")?e:`./${e}`}baseDir(e){let t=typeof e=="string"?new N(e):e;return`${this.jsDelivrBase}${t.name}${t.version?`@${t.version}`:""}/`}file(e,t){return new URL(this.normalizeRelative(t),this.baseDir(e)).toString()}packageJson(e){return this.file(e,"package.json")}buildEsmUrl(e,t={}){let{target:n="es2022",bundle:s=!1,external:i}=t,o=new URLSearchParams({target:n});return s&&o.append("bundle",""),i?.length&&o.append("external",i.join(",")),`${this.esmHost}/${e}?${o.toString()}`}async pinEsmUrl(e,t="es2022"){let n=this.buildEsmUrl(e,{target:t}),s=await re(()=>this.http.head(n));return s?.ok?s.url||n:void 0}async resolveExactVersion(e){let t=Date.now(),n=this.pinCache.get(e);if(n&&t-n.ts<this.pinMs)return n.value;let s=await this.tryResolveFromUrls([this.buildEsmUrl(e),`${this.esmHost}/${e}`]);return this.pinCache.set(e,{value:s,ts:t}),s}async tryResolveFromUrls(e){for(let t of e){let n=await re(()=>this.http.head(t)),s=this.parseVersionFromUrl(n?.url||t);if(s)return s}}async fetchVersionsIndex(e){if(await this.cache.isNegative(e))return;let t=await this.cache.getIndex(e);if(t&&Date.now()-t.updatedAt<this.versionsIndexMs)return{versions:t.versions,distTags:t.distTags};let n=await re(()=>this.http.getJson(`${this.jsDelivrMeta}${encodeURIComponent(e)}`));if(!n?.versions?.length){await this.cache.recordNegative(e);return}await this.cache.clearNegative(e);let s=n.distTags&&Object.keys(n.distTags).length?n.distTags:void 0;return await this.cache.setIndex(e,n.versions,s),n}parseVersionFromUrl(e){let t=N.fromUrl(e)?.version;return t&&/\d+\.\d+\.\d+/.test(t)?t:void 0}async fetchPackageMeta(e,t){let n=await this.cache.getMeta(e,t);if(n&&Date.now()-n.updatedAt<this.metaTtlMs){let{dependencies:f,peerDependencies:u,peerDependenciesMeta:d}=n;return{name:e,version:t,dependencies:f,peerDependencies:u,peerDependenciesMeta:d}}let s=this.packageJson(new N(`${e}@${t}`)),i=await re(()=>this.http.getJson(s));if(!i)return;let o=f=>f&&Object.keys(f).length?f:void 0,a=o(i.dependencies),c=o(i.peerDependencies),l=o(i.peerDependenciesMeta);return await this.cache.setMeta(e,t,a,c,l),{name:e,version:t,dependencies:a,peerDependencies:c,peerDependenciesMeta:l}}};var id=r=>r.startsWith("@types/"),Br=r=>Object.keys(r?.peerDependencies||{}).filter(e=>!id(e)),Sa=r=>Object.keys(r?.dependencies||{}).filter(e=>!id(e)),Vw=r=>Br(r).filter(e=>!r?.peerDependenciesMeta?.[e]?.optional),jr=class{constructor(e){this.cdn=e}async resolve(e,t){let n=await this.fetchMeta(e),{allRoots:s,autoAddedPeers:i}=await this.expandWithPeers(n,t),o=this.computeFlags(s);return{allRoots:s,flags:o,autoAddedPeers:i}}async fetchMeta(e){return Promise.all(e.map(async({name:t,version:n})=>({name:t,version:n,meta:await this.cdn.fetchPackageMeta(t,n)})))}async expandWithPeers(e,t){let n=new Map(e.map(i=>[i.name,i])),s=[];for(let i of e)for(let o of Vw(i.meta))!n.has(o)&&!s.some(a=>a.name===o)&&s.push({name:o,requiredBy:i.name});for(let{name:i,requiredBy:o}of s)try{let a=await t(i),c=await this.cdn.fetchPackageMeta(i,a);n.set(i,{name:i,version:a,meta:c})}catch(a){console.warn(`[typebulb] Failed to resolve peer "${i}" for "${o}":`,a)}return{allRoots:[...n.values()],autoAddedPeers:s.filter(i=>n.has(i.name))}}computeFlags(e){let t=new Set(e.flatMap(i=>Br(i.meta))),n=new Map;for(let i of e)for(let o of Sa(i.meta))n.set(o,(n.get(o)||0)+1);let s=new Set([...n.entries()].filter(([,i])=>i>=2).map(([i])=>i));return new Map(e.map(i=>[i.name,{isPeerRoot:t.has(i.name),hasPeers:Br(i.meta).length>0,isSharedDep:s.has(i.name)}]))}};var Fr=class{constructor(e,t,n){this.cache=e,this.cdn=t,this.semver=n}selectVersionFromIndex(e,t,n){return this.semver.selectBestVersion(e,{range:t,distTags:n})}async learnExactVersion(e){let t=await re(()=>this.cdn.fetchVersionsIndex(e));if(t?.versions?.length){let n=this.semver.selectBestVersion(t.versions,{distTags:t.distTags});if(n)return n}return this.cdn.resolveExactVersion(e)}async resolveExactForRoot(e,t){if(!t)return this.learnExactVersion(e);let n=await this.cache.getPinnedExact(e,t);if(n){if(this.semver.isExactVersion(n))return n;console.debug("[typebulb] cached version for",e,"is not exact (",n,"); re-resolving from registry")}let s=await re(()=>this.cdn.fetchVersionsIndex(e));if(s?.versions?.length){let o=this.selectVersionFromIndex(s.versions,t,s.distTags);if(o){if(this.semver.isExactVersion(o))return await this.cache.setPinnedExact(e,t,o),o}else{console.debug("[typebulb] refreshing version cache for",e,"(",t,"not in cached set \u2014 likely a new release)"),await this.cache.invalidateVersionsCache(e);let a=await re(()=>this.cdn.fetchVersionsIndex(e));if(a?.versions?.length){let c=this.selectVersionFromIndex(a.versions,t,a.distTags);if(c&&this.semver.isExactVersion(c))return await this.cache.setPinnedExact(e,t,c),c}}}let i=await this.cdn.resolveExactVersion(`${e}@${t}`);if(i&&this.semver.isExactVersion(i))return await this.cache.setPinnedExact(e,t,i),i}async effectivePackage(e,t){let n=new N(e),s=n.root(),i=t[s],o=i?await re(()=>this.cache.getPinnedExact(s,i))??await re(()=>this.resolveExactForRoot(s,i)):void 0;return{effectivePackage:o?n.withVersion(o).format():e,root:s,range:i,pinned:o}}};import{init as Yw,parse as Gw}from"es-module-lexer";var It=class r{constructor(e,t,n,s){this.version=e,this.cdn=t,this.peer=n,this.cache=s}extractImportsSync(e){let t=new Set;for(let n of r.importPatterns){n.lastIndex=0;for(let s of e.matchAll(n))N.isBare(s[1])&&t.add(s[1])}return Array.from(t)}async extractImports(e){let t=new Set,n=s=>{N.isBare(s)&&t.add(s)};try{await Yw;let[s]=Gw(e);s.forEach(i=>n(e.slice(i.s,i.e).trim()))}catch{return this.extractImportsSync(e)}return Array.from(t)}async buildImportMap(e,t,n){let s=(await this.extractImports(e)).filter(u=>!n?.has(N.rootOf(u))),i=[...new Set(s.map(N.rootOf))],o=await Promise.all(i.map(async u=>({name:u,version:await this.resolveVersion(u,t)}))),{allRoots:a,flags:c,autoAddedPeers:l}=await this.peer.resolve(o,u=>this.resolveVersion(u,t)),f=this.buildEntries([...s,...l.map(u=>u.name)],a,c,t);return{importMap:{imports:Object.fromEntries(f)},prefetchUrls:f.map(([,u])=>u)}}async resolveVersion(e,t){let n=t[e],s=n?`${e}@${n}`:e,i=await this.version.resolveExactForRoot(e,n);if(!i){let o=await re(()=>this.cdn.pinEsmUrl(s));if(!o)throw new Error(`Cannot resolve ${s}: no matching version is published (the package or version may not exist, or the registry was unreachable).`);i=N.versionFromUrl(o),i&&n&&await re(()=>this.cache.setPinnedExact(e,n,i))}if(!i)throw new Error(`Cannot resolve ${s}: no concrete version found.`);return i}buildEntries(e,t,n,s){let i=new Map(t.map(m=>[m.name,m])),o=m=>{let h=i.get(N.rootOf(m));return new N(m).withPreferredVersion(h.version,s[h.name]).format()},a=new Set([...n.entries()].filter(([,m])=>m.isPeerRoot||m.isSharedDep).map(([m])=>m)),c=new Set(e.filter(m=>m!==N.rootOf(m)).map(N.rootOf)),l=[],f=new Set,u=new Set(e.filter(m=>m===N.rootOf(m))),d=new Set;for(let m of e){let h=N.rootOf(m),y=i.get(h),{isPeerRoot:S,hasPeers:A,isSharedDep:g}=n.get(h),b=c.has(h),v=m!==h,P=!(S||g)&&(b||!A),E=this.singletonDepsOf(y,a),$=v&&u.has(h);$&&d.add(h);let z=$?[...E,h]:E.length?E:void 0;l.push([m,this.cdn.buildEsmUrl(o(m),{bundle:P,external:z})]),f.add(m)}let p=new Set([...a,...d]);for(let m of p)i.has(m)&&(f.has(m)||l.push([m,this.cdn.buildEsmUrl(o(m),{})]),l.push([`${m}/`,`${this.cdn.esmHost}/${o(m)}/`]));return l}singletonDepsOf(e,t){return[...new Set([...Br(e.meta),...Sa(e.meta)])].filter(n=>t.has(n))}};It.importPatterns=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g];import{gt as od,satisfies as zw,maxSatisfying as xa,major as Qw,prerelease as Xw,rsort as Zw,valid as ev}from"semver";var ys=class{cmp(e,t){return e===t?0:od(e,t)?1:od(t,e)?-1:0}satisfies(e,t){return!e||!e.trim()?!0:!!zw(t,e,{includePrerelease:!0})}pickMaxSatisfying(e,t){if(!e?.length)return;let n=xa(e,t,{includePrerelease:!0});return n===null?void 0:n}pickLatest(e){return e?.length?Zw(e)[0]:void 0}selectBestVersion(e,t){if(!e?.length)return;let n=t?.range?.trim()||"*",s=t?.preferStable??!0,i=t?.distTags?.latest;if(i&&e.includes(i)&&this.satisfies(n,i))return i;if(s){let a=xa(e,n,{includePrerelease:!1});if(a)return a}return xa(e,n,{includePrerelease:!0})??void 0}majorOf(e){return Qw(e)}isPrerelease(e){return Xw(e)!==null}isExactVersion(e){return ev(e)!==null}},ot=new ys;function ad(r,e){let t=new Dr(r,e),n=new jr(t),s=new Fr(r,t,ot);return{packageService:new It(s,t,n,r),versionResolver:s,cdnClient:t,peerResolver:n}}import*as Ed from"fs/promises";import*as he from"path";var ka=[{name:"es5"},{name:"es2015.core"},{name:"es2015.collection"},{name:"es2015.promise"},{name:"es2015.iterable"},{name:"es2015.symbol"},{name:"es2015.symbol.wellknown"},{name:"es2015.generator"},{name:"es2015.proxy"},{name:"es2015.reflect"},{name:"es2016.array.include"},{name:"es2016.intl"},{name:"es2017.object"},{name:"es2017.string"},{name:"es2017.sharedmemory"},{name:"es2017.typedarrays"},{name:"es2017.date"},{name:"es2017.intl"},{name:"es2018.asynciterable"},{name:"es2018.asyncgenerator"},{name:"es2018.promise"},{name:"es2018.regexp"},{name:"es2018.intl"},{name:"es2019.array"},{name:"es2019.object"},{name:"es2019.string"},{name:"es2019.symbol"},{name:"es2019.intl"},{name:"es2020.bigint"},{name:"es2020.promise"},{name:"es2020.string"},{name:"es2020.sharedmemory"},{name:"es2020.date"},{name:"es2020.number"},{name:"es2020.symbol.wellknown"},{name:"es2020.intl"},{name:"es2021.promise"},{name:"es2021.string"},{name:"es2021.weakref"},{name:"es2021.intl"},{name:"es2022.array"},{name:"es2022.object"},{name:"es2022.error"},{name:"es2022.string"},{name:"es2022.regexp"},{name:"es2022.intl"},{name:"es2023.array"},{name:"es2023.collection"},{name:"es2023.intl",since:"5.5"},{name:"es2024.arraybuffer",since:"5.5"},{name:"es2024.collection",since:"5.5"},{name:"es2024.object",since:"5.5"},{name:"es2024.promise",since:"5.5"},{name:"es2024.regexp",since:"5.5"},{name:"es2024.sharedmemory",since:"5.5"},{name:"es2024.string",since:"5.5"},{name:"esnext.array",since:"5.5"},{name:"esnext.collection"},{name:"esnext.decorators"},{name:"esnext.disposable"},{name:"esnext.error",since:"5.5"},{name:"esnext.float16",since:"5.5"},{name:"esnext.iterator",since:"5.5"},{name:"esnext.object"},{name:"esnext.promise"},{name:"esnext.sharedmemory",since:"5.5"},{name:"esnext.intl"}],Ea=[{name:"dom"},{name:"dom.iterable"},{name:"dom.asynciterable"}];var ld=`
|
|
545
|
+
${Hw(t)}`)}var $r="https://esm.sh",Mr="https://cdn.jsdelivr.net/npm/",va="https://data.jsdelivr.com/v1/package/npm/";function nd(r){let e=(r||"").replace(/^\/+/,"").replace(/\/+$/,"");return e?e.split("/"):[]}var R=class r{constructor(e,t,n){let s=typeof e=="string"?r.parse(e):e;this.name=s.name,this.version=_t(t??s.version),this.subpath=_t(n??s.subpath)}static parse(e){let t=nd(e||"");if(!t.length)return new r({name:""});if(t[0].startsWith("@")){let s=t[0],[i,o]=sd(t[1]??""),a=_t(t.slice(2).join("/"));return new r({name:`${s}/${i}`,version:o,subpath:a})}else{let[s,i]=sd(t[0]),o=_t(t.slice(1).join("/"));return new r({name:s,version:i,subpath:o})}}static fromUrl(e){try{let t=new URL(e),n=new URL($r).host,s=new URL(Mr).host;if(t.host===n){let i=nd(t.pathname.replace(/^\/v\d+\//,"/"));if(!i.length)return;let o=i[0].startsWith("@")?`${i[0]}/${i[1]??""}`:i[0];return r.parse(o)}if(t.host===s){let i=t.pathname.split("/npm/")[1];if(!i)return;let o=i.split("/")[0]||"";return r.parse(o)}return}catch{return}}static versionFromUrl(e){return r.fromUrl(e)?.version}format(){let e=this.version?`${this.name}@${this.version}`:this.name;return this.subpath?`${e}/${this.subpath}`:e}root(){return this.name}static rootOf(e){return r.parse(e).name}withVersion(e){return new r({name:this.name,version:_t(e),subpath:this.subpath})}withPreferredVersion(e,t){let n=e||t;return n?this.withVersion(n):this}static isBare(e){if(!e||e.startsWith(".")||e.startsWith("/"))return!1;let t=e.toLowerCase();return!t.startsWith("http://")&&!t.startsWith("https://")}},_t=r=>r&&r.length?r:void 0,sd=r=>{let e=r.indexOf("@");return e<0?[r,void 0]:[r.slice(0,e),_t(r.slice(e+1))]};async function ne(r){try{return await r()}catch{return}}var Dr=class{constructor(e,t){this.cache=e,this.http=t,this.esmHost=$r,this.jsDelivrBase=Mr,this.jsDelivrMeta=va,this.pinMs=1e4,this.versionsIndexMs=1440*60*1e3,this.metaTtlMs=10080*60*1e3,this.pinCache=new Map}normalizeRelative(e){let t=e||"";return t.startsWith("./")?t.slice(2):t.replace(/^\/+/,"")}ensureLeadingDotSlash(e){return e.startsWith("./")?e:`./${e}`}baseDir(e){let t=typeof e=="string"?new R(e):e;return`${this.jsDelivrBase}${t.name}${t.version?`@${t.version}`:""}/`}file(e,t){return new URL(this.normalizeRelative(t),this.baseDir(e)).toString()}packageJson(e){return this.file(e,"package.json")}buildEsmUrl(e,t={}){let{target:n="es2022",bundle:s=!1,external:i}=t,o=new URLSearchParams({target:n});return s&&o.append("bundle",""),i?.length&&o.append("external",i.join(",")),`${this.esmHost}/${e}?${o.toString()}`}async pinEsmUrl(e,t="es2022"){let n=this.buildEsmUrl(e,{target:t}),s=await ne(()=>this.http.head(n));return s?.ok?s.url||n:void 0}async resolveExactVersion(e){let t=Date.now(),n=this.pinCache.get(e);if(n&&t-n.ts<this.pinMs)return n.value;let s=await this.tryResolveFromUrls([this.buildEsmUrl(e),`${this.esmHost}/${e}`]);return this.pinCache.set(e,{value:s,ts:t}),s}async tryResolveFromUrls(e){for(let t of e){let n=await ne(()=>this.http.head(t)),s=this.parseVersionFromUrl(n?.url||t);if(s)return s}}async fetchVersionsIndex(e){if(await this.cache.isNegative(e))return;let t=await this.cache.getIndex(e);if(t&&Date.now()-t.updatedAt<this.versionsIndexMs)return{versions:t.versions,distTags:t.distTags};let n=await ne(()=>this.http.getJson(`${this.jsDelivrMeta}${encodeURIComponent(e)}`));if(!n?.versions?.length){await this.cache.recordNegative(e);return}await this.cache.clearNegative(e);let s=n.distTags&&Object.keys(n.distTags).length?n.distTags:void 0;return await this.cache.setIndex(e,n.versions,s),n}parseVersionFromUrl(e){let t=R.fromUrl(e)?.version;return t&&/\d+\.\d+\.\d+/.test(t)?t:void 0}async fetchPackageMeta(e,t){let n=await this.cache.getMeta(e,t);if(n&&Date.now()-n.updatedAt<this.metaTtlMs){let{dependencies:f,peerDependencies:u,peerDependenciesMeta:d}=n;return{name:e,version:t,dependencies:f,peerDependencies:u,peerDependenciesMeta:d}}let s=this.packageJson(new R(`${e}@${t}`)),i=await ne(()=>this.http.getJson(s));if(!i)return;let o=f=>f&&Object.keys(f).length?f:void 0,a=o(i.dependencies),c=o(i.peerDependencies),l=o(i.peerDependenciesMeta);return await this.cache.setMeta(e,t,a,c,l),{name:e,version:t,dependencies:a,peerDependencies:c,peerDependenciesMeta:l}}};var id=r=>r.startsWith("@types/"),Br=r=>Object.keys(r?.peerDependencies||{}).filter(e=>!id(e)),Sa=r=>Object.keys(r?.dependencies||{}).filter(e=>!id(e)),Vw=r=>Br(r).filter(e=>!r?.peerDependenciesMeta?.[e]?.optional),jr=class{constructor(e){this.cdn=e}async resolve(e,t){let n=await this.fetchMeta(e),{allRoots:s,autoAddedPeers:i}=await this.expandWithPeers(n,t),o=this.computeFlags(s);return{allRoots:s,flags:o,autoAddedPeers:i}}async fetchMeta(e){return Promise.all(e.map(async({name:t,version:n})=>({name:t,version:n,meta:await this.cdn.fetchPackageMeta(t,n)})))}async expandWithPeers(e,t){let n=new Map(e.map(i=>[i.name,i])),s=[];for(let i of e)for(let o of Vw(i.meta))!n.has(o)&&!s.some(a=>a.name===o)&&s.push({name:o,requiredBy:i.name});for(let{name:i,requiredBy:o}of s)try{let a=await t(i),c=await this.cdn.fetchPackageMeta(i,a);n.set(i,{name:i,version:a,meta:c})}catch(a){console.warn(`[typebulb] Failed to resolve peer "${i}" for "${o}":`,a)}return{allRoots:[...n.values()],autoAddedPeers:s.filter(i=>n.has(i.name))}}computeFlags(e){let t=new Set(e.flatMap(i=>Br(i.meta))),n=new Map;for(let i of e)for(let o of Sa(i.meta))n.set(o,(n.get(o)||0)+1);let s=new Set([...n.entries()].filter(([,i])=>i>=2).map(([i])=>i));return new Map(e.map(i=>[i.name,{isPeerRoot:t.has(i.name),hasPeers:Br(i.meta).length>0,isSharedDep:s.has(i.name)}]))}};var Fr=class{constructor(e,t,n){this.cache=e,this.cdn=t,this.semver=n}selectVersionFromIndex(e,t,n){return this.semver.selectBestVersion(e,{range:t,distTags:n})}async learnExactVersion(e){let t=await ne(()=>this.cdn.fetchVersionsIndex(e));if(t?.versions?.length){let n=this.semver.selectBestVersion(t.versions,{distTags:t.distTags});if(n)return n}return this.cdn.resolveExactVersion(e)}async resolveExactForRoot(e,t){if(!t)return this.learnExactVersion(e);let n=await this.cache.getPinnedExact(e,t);if(n){if(this.semver.isExactVersion(n))return n;console.debug("[typebulb] cached version for",e,"is not exact (",n,"); re-resolving from registry")}let s=await ne(()=>this.cdn.fetchVersionsIndex(e));if(s?.versions?.length){let o=this.selectVersionFromIndex(s.versions,t,s.distTags);if(o){if(this.semver.isExactVersion(o))return await this.cache.setPinnedExact(e,t,o),o}else{console.debug("[typebulb] refreshing version cache for",e,"(",t,"not in cached set \u2014 likely a new release)"),await this.cache.invalidateVersionsCache(e);let a=await ne(()=>this.cdn.fetchVersionsIndex(e));if(a?.versions?.length){let c=this.selectVersionFromIndex(a.versions,t,a.distTags);if(c&&this.semver.isExactVersion(c))return await this.cache.setPinnedExact(e,t,c),c}}}let i=await this.cdn.resolveExactVersion(`${e}@${t}`);if(i&&this.semver.isExactVersion(i))return await this.cache.setPinnedExact(e,t,i),i}async effectivePackage(e,t){let n=new R(e),s=n.root(),i=t[s],o=i?await ne(()=>this.cache.getPinnedExact(s,i))??await ne(()=>this.resolveExactForRoot(s,i)):void 0;return{effectivePackage:o?n.withVersion(o).format():e,root:s,range:i,pinned:o}}};import{init as Yw,parse as Gw}from"es-module-lexer";var It=class r{constructor(e,t,n,s){this.version=e,this.cdn=t,this.peer=n,this.cache=s}extractImportsSync(e){let t=new Set;for(let n of r.importPatterns){n.lastIndex=0;for(let s of e.matchAll(n))R.isBare(s[1])&&t.add(s[1])}return Array.from(t)}async extractImports(e){let t=new Set,n=s=>{R.isBare(s)&&t.add(s)};try{await Yw;let[s]=Gw(e);s.forEach(i=>n(e.slice(i.s,i.e).trim()))}catch{return this.extractImportsSync(e)}return Array.from(t)}async buildImportMap(e,t,n){let s=(await this.extractImports(e)).filter(u=>!n?.has(R.rootOf(u))),i=[...new Set(s.map(R.rootOf))],o=await Promise.all(i.map(async u=>({name:u,version:await this.resolveVersion(u,t)}))),{allRoots:a,flags:c,autoAddedPeers:l}=await this.peer.resolve(o,u=>this.resolveVersion(u,t)),f=this.buildEntries([...s,...l.map(u=>u.name)],a,c,t);return{importMap:{imports:Object.fromEntries(f)},prefetchUrls:f.map(([,u])=>u)}}async resolveVersion(e,t){let n=t[e],s=n?`${e}@${n}`:e,i=await this.version.resolveExactForRoot(e,n);if(!i){let o=await ne(()=>this.cdn.pinEsmUrl(s));if(!o)throw new Error(`Cannot resolve ${s}: no matching version is published (the package or version may not exist, or the registry was unreachable).`);i=R.versionFromUrl(o),i&&n&&await ne(()=>this.cache.setPinnedExact(e,n,i))}if(!i)throw new Error(`Cannot resolve ${s}: no concrete version found.`);return i}buildEntries(e,t,n,s){let i=new Map(t.map(m=>[m.name,m])),o=m=>{let h=i.get(R.rootOf(m));return new R(m).withPreferredVersion(h.version,s[h.name]).format()},a=new Set([...n.entries()].filter(([,m])=>m.isPeerRoot||m.isSharedDep).map(([m])=>m)),c=new Set(e.filter(m=>m!==R.rootOf(m)).map(R.rootOf)),l=[],f=new Set,u=new Set(e.filter(m=>m===R.rootOf(m))),d=new Set;for(let m of e){let h=R.rootOf(m),y=i.get(h),{isPeerRoot:x,hasPeers:A,isSharedDep:g}=n.get(h),b=c.has(h),v=m!==h,P=!(x||g)&&(b||!A),k=this.singletonDepsOf(y,a),L=v&&u.has(h);L&&d.add(h);let Q=L?[...k,h]:k.length?k:void 0;l.push([m,this.cdn.buildEsmUrl(o(m),{bundle:P,external:Q})]),f.add(m)}let p=new Set([...a,...d]);for(let m of p)i.has(m)&&(f.has(m)||l.push([m,this.cdn.buildEsmUrl(o(m),{})]),l.push([`${m}/`,`${this.cdn.esmHost}/${o(m)}/`]));return l}singletonDepsOf(e,t){return[...new Set([...Br(e.meta),...Sa(e.meta)])].filter(n=>t.has(n))}};It.importPatterns=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g];import{gt as od,satisfies as zw,maxSatisfying as xa,major as Qw,prerelease as Xw,rsort as Zw,valid as ev}from"semver";var ys=class{cmp(e,t){return e===t?0:od(e,t)?1:od(t,e)?-1:0}satisfies(e,t){return!e||!e.trim()?!0:!!zw(t,e,{includePrerelease:!0})}pickMaxSatisfying(e,t){if(!e?.length)return;let n=xa(e,t,{includePrerelease:!0});return n===null?void 0:n}pickLatest(e){return e?.length?Zw(e)[0]:void 0}selectBestVersion(e,t){if(!e?.length)return;let n=t?.range?.trim()||"*",s=t?.preferStable??!0,i=t?.distTags?.latest;if(i&&e.includes(i)&&this.satisfies(n,i))return i;if(s){let a=xa(e,n,{includePrerelease:!1});if(a)return a}return xa(e,n,{includePrerelease:!0})??void 0}majorOf(e){return Qw(e)}isPrerelease(e){return Xw(e)!==null}isExactVersion(e){return ev(e)!==null}},ot=new ys;function ad(r,e){let t=new Dr(r,e),n=new jr(t),s=new Fr(r,t,ot);return{packageService:new It(s,t,n,r),versionResolver:s,cdnClient:t,peerResolver:n}}import*as Ed from"fs/promises";import*as he from"path";var ka=[{name:"es5"},{name:"es2015.core"},{name:"es2015.collection"},{name:"es2015.promise"},{name:"es2015.iterable"},{name:"es2015.symbol"},{name:"es2015.symbol.wellknown"},{name:"es2015.generator"},{name:"es2015.proxy"},{name:"es2015.reflect"},{name:"es2016.array.include"},{name:"es2016.intl"},{name:"es2017.object"},{name:"es2017.string"},{name:"es2017.sharedmemory"},{name:"es2017.typedarrays"},{name:"es2017.date"},{name:"es2017.intl"},{name:"es2018.asynciterable"},{name:"es2018.asyncgenerator"},{name:"es2018.promise"},{name:"es2018.regexp"},{name:"es2018.intl"},{name:"es2019.array"},{name:"es2019.object"},{name:"es2019.string"},{name:"es2019.symbol"},{name:"es2019.intl"},{name:"es2020.bigint"},{name:"es2020.promise"},{name:"es2020.string"},{name:"es2020.sharedmemory"},{name:"es2020.date"},{name:"es2020.number"},{name:"es2020.symbol.wellknown"},{name:"es2020.intl"},{name:"es2021.promise"},{name:"es2021.string"},{name:"es2021.weakref"},{name:"es2021.intl"},{name:"es2022.array"},{name:"es2022.object"},{name:"es2022.error"},{name:"es2022.string"},{name:"es2022.regexp"},{name:"es2022.intl"},{name:"es2023.array"},{name:"es2023.collection"},{name:"es2023.intl",since:"5.5"},{name:"es2024.arraybuffer",since:"5.5"},{name:"es2024.collection",since:"5.5"},{name:"es2024.object",since:"5.5"},{name:"es2024.promise",since:"5.5"},{name:"es2024.regexp",since:"5.5"},{name:"es2024.sharedmemory",since:"5.5"},{name:"es2024.string",since:"5.5"},{name:"esnext.array",since:"5.5"},{name:"esnext.collection"},{name:"esnext.decorators"},{name:"esnext.disposable"},{name:"esnext.error",since:"5.5"},{name:"esnext.float16",since:"5.5"},{name:"esnext.iterator",since:"5.5"},{name:"esnext.object"},{name:"esnext.promise"},{name:"esnext.sharedmemory",since:"5.5"},{name:"esnext.intl"}],Ea=[{name:"dom"},{name:"dom.iterable"},{name:"dom.asynciterable"}];var ld=`
|
|
546
546
|
/**
|
|
547
547
|
* Get raw data chunk from the Data tab.
|
|
548
548
|
* @param index - Chunk index (0-based). Separate chunks with 2 blank lines.
|
|
@@ -567,8 +567,6 @@ ${Hw(t)}`)}var $r="https://esm.sh",Mr="https://cdn.jsdelivr.net/npm/",va="https:
|
|
|
567
567
|
system?: string;
|
|
568
568
|
/** Extended-thinking effort hint (1=low, 2=med, 3=high). Mapped to each provider's native mechanism (e.g. Anthropic adaptive thinking, OpenAI reasoning effort). Omit for the model's native default; use a non-reasoning model to avoid thinking entirely. */
|
|
569
569
|
effort?: 1 | 2 | 3;
|
|
570
|
-
/** @deprecated Renamed to \`effort\`. Still accepted; a \`0\` is treated as omitted. */
|
|
571
|
-
reasoning?: 0 | 1 | 2 | 3;
|
|
572
570
|
provider?: string;
|
|
573
571
|
model?: string;
|
|
574
572
|
/** Enable/disable web search. Default: on for BYOK, always off for free model. */
|
|
@@ -748,8 +746,8 @@ declare const tb: {${ld}${nv}${ud}${iv}${sv}${dd}${md}${pd}${tv}${hd}
|
|
|
748
746
|
*/
|
|
749
747
|
declare const tb: {${ld}${ud}${dd}${md}${rv}${pd}${hd}
|
|
750
748
|
};
|
|
751
|
-
`;var at=class{constructor(e){this.store=e}async isNegative(e){let t=await bs(()=>this.store.get(e));return!!t&&t.until>Date.now()}async recordNegative(e){let n=((await bs(()=>this.store.get(e)))?.attempts||0)+1;await bs(()=>this.store.set(e,{until:Date.now()+ov(n),attempts:n}))}async clearNegative(e){await bs(()=>this.store.delete(e))}};function ov(r){return Math.min(9e5*Math.pow(2,Math.max(0,r-1)),864e5)}async function bs(r){try{return await r()}catch{return}}import dv from"p-limit";import{resolve as gd}from"resolve.exports";var Lt=class{constructor(e){this.fetchDts=e}fetchDtsText(e){return this.tryUrls([e])}async tryUrls(e){for(let t of e){let n=await this.fetchDts(t);if(n&&(this.looksLikeDts(n.dts)||/\.(d\.ts|d\.mts)(?:[?#].*)?$/i.test(n.url)||/[?&]dts(?:[&#]|$)/i.test(n.url)))return n}}looksLikeDts(e){return/^\s*export\s*\{\s*\}\s*;?\s*$/m.test(e)?!0:/declare\s+(module|namespace|class|interface|function|const|var|let)/.test(e)||/interface\s+\w+/.test(e)||/type\s+\w+\s*=/.test(e)}};var Je={maxRelativeTypeRefs:500,maxBareDeps:8,maxBareDepth:3,prefetchConcurrency:4,negativeTtlMs:1e4},qr=["index.d.ts","index.d.mts"],Ur=/\.d\.(ts|mts)$/i;function Pa(r){if(Ur.test(r))return!0;try{return new URL(r,"file://").search.includes("dts")}catch{return r.includes("?")&&r.includes("dts")}}function $t(r){return[`${r}.d.ts`,`${r}.d.mts`]}async function Jr(r,{retries:e=2,timeoutMs:t=15e3,init:n}={}){for(let s=0;s<=e;s++){let i=new AbortController,o=setTimeout(()=>i.abort(),t);try{let a=await fetch(r,{...n,signal:i.signal});if(av(a.status)&&s<e)continue;return a}catch{if(s<e)continue;return}finally{clearTimeout(o)}}}function av(r){return r===408||r===429||r>=500&&r<600}var Kr=class extends Lt{constructor(e,t){super(e),this.cdnClient=t}async loadPackageAtVersionedRoot(e,t){let n=this.cdnClient.packageJson(new N({name:e,version:t})),s=await Jr(n);if(!s?.ok)return;let i;try{i=await s.json()}catch{return}if(i)return{pkg:i,baseDir:this.cdnClient.baseDir(new N({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 n of e){let s=await t(n);if(s)return s}}async resolveFromSelected(e,t){if(e.kind==="types"){let s=this.cdnClient.normalizeRelative(e.path);if(!s||s==="/"||s===".")return this.tryUntilSuccess([...qr],t);if(!Ur.test(s)){let i=await this.tryUntilSuccess(this.declarationCandidatesFor(s),t);if(i)return i}return t(s)}let n=this.declarationCandidatesFor(e.path);return this.tryUntilSuccess([...qr,...n],t)}toResolutionResult(e){return{kind:Ur.test(e)?"types":"probe",path:e}}resolveExportsPath(e,t){let n=t||".",s=e;try{let i=this.extractPathFromResult(gd(s,n,{conditions:["types"]}));if(i)return i}catch{}try{return this.extractPathFromResult(gd(s,n,{browser:!0,conditions:["import","default","module","browser","node"]}))}catch{return}}async resolve(e){try{let t=N.parse(e),{pkg:n,baseDir:s}=await this.loadPackageAtVersionedRoot(t.name,t.version)||{};if(!n||!s)return;let i={name:t.name,version:t.version},o=new N(i).format(),a=new N({...i,subpath:t.subpath}).format(),c=u=>this.fetchCandidateFrom(s,t.name,u);if(t.subpath){let u=this.cdnClient.ensureLeadingDotSlash(t.subpath),d=this.resolveExportsPath(n,u);if(d){let m=await this.resolveFromSelected(this.toResolutionResult(d),c);if(m)return{...m,resolvedPkg:a}}let p=await this.tryUntilSuccess(this.declarationCandidatesFor(u),c);if(p)return{...p,resolvedPkg:a}}let l=n.types??n.typings;if(l){let u=await this.resolveFromSelected({kind:"types",path:l},c);if(u)return{...u,resolvedPkg:o}}let f=this.resolveExportsPath(n,".");if(f){let u=await this.resolveFromSelected(this.toResolutionResult(f),c);if(u)return{...u,resolvedPkg:o}}return}catch{return}}async fetchCandidateFrom(e,t,n){let s=this.cdnClient.normalizeRelative(n),i=new URL(s,e).toString(),o=await this.fetchDtsText(i);return o?{dts:o.dts,url:o.url,resolvedPkg:t}:void 0}declarationCandidatesFor(e){if(!e||e==="./"||e==="/")return[...qr];let t=e.replace(/\.(mjs|cjs|js|mts|cts|ts)$/i,""),n=$t(t),s=t.endsWith("/")?t:`${t}/`;return n.push(...$t(`${s}index`)),n}};import{gunzipSync as cv}from"fflate";var Mt=class{async fetchAndExtract(e,t){let n=this.getTarballUrl(e,t),s=await Jr(n,{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\//,""),n=t.indexOf("/");return n>0?t.substring(n+1):t}extractDtsFiles(e){let t=new Map;try{let n=cv(e),s=new TextDecoder("utf-8"),i=0;for(;i<n.length-512;){let o=n.slice(i,i+512);if(o[0]===0)break;let a=o.slice(0,100),c=a.indexOf(0),l=s.decode(a.slice(0,c>0?c:100)).trim(),f=o.slice(124,136),u=s.decode(f).trim().replace(/\0/g,""),d=parseInt(u,8)||0,p=String.fromCharCode(o[156]);if(i+=512,(p==="0"||p==="\0")&&(l.endsWith(".d.ts")||l.endsWith(".d.mts"))){let m=n.slice(i,i+d);t.set(this.normalizeTarPath(l),s.decode(m))}i+=Math.ceil(d/512)*512}}catch{}return t}},lv=new Mt;var Wr=class extends Lt{constructor(e,t,n,s=new Mt){super(e),this.cdnClient=t,this.cache=n,this.tarballFetcher=s}typesNameCandidates(e){let t=e.startsWith("@")?e.slice(1).replace("/","__"):e;return t.includes(".")?[t,t.split(".").join("-"),t.split(".").join("")]:[t]}selectTypesVersion(e,t,n){try{if(n){let i=ot.majorOf(n),o=e.filter(a=>ot.majorOf(a)===i);if(o.length)return o.sort((a,c)=>ot.cmp(c,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,""),n=[...$t(t),`${t}/index.d.ts`,`${t}/index.d.mts`];return t!==e&&n.push(`${e}.d.ts`,`${e}/index.d.ts`),n}async fetchFromVersionedRoot(e,t){let n=new N(e),s=n.version;if(!s)return;let i;try{i=await this.tarballFetcher.fetchAndExtract(n.name,s)}catch{return}if(!i||i.size===0)return;for(let[a,c]of i.entries()){let l=this.cdnClient.file(e,a);try{await this.cache.setCachedFile(l,c)}catch{}}let o=t.subpath?this.subpathCandidates(t.subpath):["index.d.ts"];for(let a of o){let c=i.get(a);if(c)return{dts:c,url:this.cdnClient.file(e,a),resolvedPkg:t.subpath?new N(t).format():t.name}}}async resolve(e){let t=N.parse(e);if(t.name)for(let n of this.typesNameCandidates(t.name)){let s=`@types/${n}`,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 Hr=class{collectRelativeTypeRefs(e){return this.collectRefs(e).filter(t=>t.startsWith("./")||t.startsWith("../"))}collectBareModuleRefs(e){return this.collectRefs(e).filter(t=>this.isBare(t))}collectRefs(e){let t=new Set,n=(s,i)=>(t.add(s[i]),null);return this.matchAll(e,/(import|export)\s+[^'"\n]*from\s*['"]([^'"\n]+)['"]/,s=>n(s,2)),this.matchAll(e,/export\s*\*\s*from\s*['"]([^'"\n]+)['"]/,s=>n(s,1)),Array.from(t)}matchAll(e,t,n){let s=[];try{let i=new RegExp(t.source,"g"),o;for(;o=i.exec(e);){let a=n(o);a!==null&&s.push(a)}}catch{}return s}isBare(e){return!(e.startsWith("./")||e.startsWith("../")||e.startsWith("file:")||e.startsWith("http://")||e.startsWith("https://"))}};var yd="file:///node_modules",Vr=class{constructor(){this.epoch=0,this.listeners=new Set}getEpoch(){return this.epoch}bumpEpoch(){this.epoch+=1;for(let e of this.listeners)try{e(this.epoch)}catch{}return this.epoch}onEpochChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}epochDir(){return`__tsepoch_${this.epoch}`}pathForMain(e){return`${yd}/${this.epochDir()}/${e}/index.d.ts`}pathFor(e,t){let n=uv(t);return`${yd}/${this.epochDir()}/${e}/${n}`}};function uv(r){let e=r||"";return e.startsWith("./")?e.slice(2):e.replace(/^\/+/,"")}import{LRUCache as fv}from"lru-cache";function Oa(r){let e=new fv({ttl:1e4,max:500}),t=new Map;return async function(s){try{if(await r.isNegative(s))return;let i=e.get(s);if(i&&Date.now()-i<1e4)return;let o=await r.getCachedFile(s);if(o)return{dts:o,url:s};let a=t.get(s);if(a)return a;let c=(async()=>{let l=await fetch(s,{cache:"no-store"});if(!l.ok){l.status===404&&(e.set(s,Date.now()),await r.recordNegative(s));return}let f=await l.text(),u=l.url||s;return await r.clearNegative(s),await r.setCachedFile(u,f),{dts:f,url:u}})();return t.set(s,c),await c.finally(()=>t.delete(s))}catch{return}}}var ws=class{constructor(e){this.inFlight=new Map,this.scanner=new Hr,this.cache=e.cache,this.cdnClient=e.cdnClient,this.versionResolver=e.versionResolver,this.packageService=e.packageService,this.fetchDts=Oa(e.cache),this.typescriptProvider=new Kr(this.fetchDts,e.cdnClient),this.definitelyTypedProvider=new Wr(this.fetchDts,e.cdnClient,e.cache),this.virtualFs=new Vr}withInFlight(e,t){let n=this.inFlight.get(e);if(n)return n;let s=t().finally(()=>this.inFlight.delete(e));return this.inFlight.set(e,s),s}invalidate(){this.virtualFs.bumpEpoch(),this.inFlight.clear()}capArray(e,t){return e.length<=t?e:e.slice(0,t)}pushFileIfNew(e,t,n){e.some(s=>s.path===t)||e.push({path:t,content:n})}createStubDef(e){let t=this.virtualFs.pathForMain(e);return{pkg:e,mainPath:t,files:[{path:t,content:"export const _shim: any; export default _shim;"}],shims:[{module:e,path:t}]}}async trySubpathWithRootFallback(e,t){let n=new N(e);return n.subpath?this.fetchRootDts(n.name,t):void 0}async fetchViaProviders(e){for(let t of[this.typescriptProvider,this.definitelyTypedProvider])try{let n=await t.resolve(e);if(n?.dts)return n}catch{}}subpathsMatch(e,t){return new N(e).subpath===new N(t).subpath}async fetchRootDts(e,t){let{effectivePackage:n,root:s,pinned:i}=await this.versionResolver.effectivePackage(e,t),o=await this.cache.getCachedDts(n);if(o?.content){let c=o.url??this.cdnClient.file(i?`${s}@${i}`:s,"index.d.ts");return{dts:o.content,url:c,resolvedPkg:n}}let a;try{a=await this.fetchViaProviders(n)}catch{return}if(!(!a?.dts||!a.url)){try{await this.cache.setCachedFile(a.url,a.dts)}catch{}if(this.subpathsMatch(n,a.resolvedPkg||n)){try{await this.cache.setCachedDts(n,a.dts,a.url)}catch{}return a}}}extractPackageRootUrl(e){let t=e.pathname.match(/^(.+@[^/]+\/)/);return t?new URL(t[1],e.origin):new URL("./",e)}toVirtualPath(e,t,n){let s=t.pathname.startsWith(e.pathname)?t.pathname.slice(e.pathname.length):`__deps__/${encodeURIComponent(t.toString()).replace(/%/g,"_")}.d.ts`;return this.virtualFs.pathFor(n,s)}computeEntryPath(e,t){if(!e)return{mainPath:this.virtualFs.pathForMain(t),packageRootUrl:void 0};let n=new URL(e),s=this.extractPackageRootUrl(n);return{mainPath:this.toVirtualPath(s,n,t),packageRootUrl:s}}async expandRelativeRefs(e,t,n,s,i=new Set,o){if(!i.has(t)&&(i.add(t),!(i.size>Je.maxRelativeTypeRefs)))try{let a=new URL(t),c=new URL("./",a);o??(o=this.extractPackageRootUrl(a));let l=this.capArray(this.scanner.collectRelativeTypeRefs(e),Je.maxRelativeTypeRefs);for(let f of l)await this.tryRelativeRef(f,c,o,n,s,i)}catch{}}async tryRelativeRef(e,t,n,s,i,o){try{let a=new URL(e,t),c=a.pathname+a.search,l=Pa(c)?[c]:this.typescriptProvider.declarationCandidatesFor(c);for(let f of l){let d=new URL(f,a).toString();if(o.has(d))return;let p=await this.fetchDts(d);if(p?.dts){let m=this.toVirtualPath(n,new URL(p.url),s);this.pushFileIfNew(i,m,p.dts),await this.expandRelativeRefs(p.dts,p.url,s,i,o,n);return}}}catch{}}isDifferentPackage(e,t){return e===t?!1:new N(e).name!==new N(t).name}ambientlyDeclares(e,t){for(let n of e.matchAll(/declare\s+module\s+['"]([^'"]+)['"]/g)){let s=n[1];if(s===t||s.endsWith("/*")&&t.startsWith(s.slice(0,-1)))return!0}return!1}markFileAmbient(e,t){let n=e.find(s=>s.path===t);n&&(n.ambient=!0)}async prefetchBareDeps(e,t,n,s,i){try{let o=this.capArray(this.scanner.collectBareModuleRefs(e),Je.maxBareDeps).filter(l=>this.isDifferentPackage(l,t));if(!o.length)return;let a=new Set([t]),c=dv(Je.prefetchConcurrency);await Promise.all(o.map(l=>c(()=>this.prefetchBareDepsRecursive(l,n,s,Je.maxBareDepth,a,i).catch(()=>{}))))}catch{}}async prefetchBareDepsRecursive(e,t,n,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 c=a.resolvedPkg||e,l=this.virtualFs.pathForMain(c);this.pushFileIfNew(t,l,a.dts),this.ambientlyDeclares(a.dts,e)?this.markFileAmbient(t,l):n.push({module:e,path:l}),a.url&&await this.expandRelativeRefs(a.dts,a.url,c,t);let f=this.capArray(this.scanner.collectBareModuleRefs(a.dts),Je.maxBareDeps).filter(u=>!i.has(u));for(let u of f)await this.prefetchBareDepsRecursive(u,t,n,s-1,i,o)}async resolve(e,t,n){let s=await this.packageService.extractImports(e),i=n?[...s,...n]:s;return(await Promise.all(i.map(a=>this.resolveOne(a,t)))).filter(a=>!!a)}async resolveOne(e,t){let{effectivePackage:n}=await this.versionResolver.effectivePackage(e,t);return this.withInFlight(n,async()=>{let s=await this.fetchRootDts(e,t)??await this.trySubpathWithRootFallback(e,t);return s?this.buildDefFromContent(e,s,s.resolvedPkg||e,t):this.createStubDef(e)})}async buildDefFromContent(e,t,n,s){let{dts:i,url:o,resolvedPkg:a}=t,c=new N(a||n),l=c.version?`${c.name}@${c.version}`:c.name,{mainPath:f,packageRootUrl:u}=this.computeEntryPath(o,l),d=[{path:f,content:i}],p=[];o&&await this.expandRelativeRefs(i,o,l,d,void 0,u);let m=d.map(A=>A.content).join(`
|
|
752
|
-
`);await this.prefetchBareDeps(m,l,d,p,s);let h=c.format(),y=e===h?[e]:[e,h],
|
|
749
|
+
`;var at=class{constructor(e){this.store=e}async isNegative(e){let t=await bs(()=>this.store.get(e));return!!t&&t.until>Date.now()}async recordNegative(e){let n=((await bs(()=>this.store.get(e)))?.attempts||0)+1;await bs(()=>this.store.set(e,{until:Date.now()+ov(n),attempts:n}))}async clearNegative(e){await bs(()=>this.store.delete(e))}};function ov(r){return Math.min(9e5*Math.pow(2,Math.max(0,r-1)),864e5)}async function bs(r){try{return await r()}catch{return}}import dv from"p-limit";import{resolve as gd}from"resolve.exports";var Lt=class{constructor(e){this.fetchDts=e}fetchDtsText(e){return this.tryUrls([e])}async tryUrls(e){for(let t of e){let n=await this.fetchDts(t);if(n&&(this.looksLikeDts(n.dts)||/\.(d\.ts|d\.mts)(?:[?#].*)?$/i.test(n.url)||/[?&]dts(?:[&#]|$)/i.test(n.url)))return n}}looksLikeDts(e){return/^\s*export\s*\{\s*\}\s*;?\s*$/m.test(e)?!0:/declare\s+(module|namespace|class|interface|function|const|var|let)/.test(e)||/interface\s+\w+/.test(e)||/type\s+\w+\s*=/.test(e)}};var Je={maxRelativeTypeRefs:500,maxBareDeps:8,maxBareDepth:3,prefetchConcurrency:4,negativeTtlMs:1e4},qr=["index.d.ts","index.d.mts"],Ur=/\.d\.(ts|mts)$/i;function Pa(r){if(Ur.test(r))return!0;try{return new URL(r,"file://").search.includes("dts")}catch{return r.includes("?")&&r.includes("dts")}}function $t(r){return[`${r}.d.ts`,`${r}.d.mts`]}async function Jr(r,{retries:e=2,timeoutMs:t=15e3,init:n}={}){for(let s=0;s<=e;s++){let i=new AbortController,o=setTimeout(()=>i.abort(),t);try{let a=await fetch(r,{...n,signal:i.signal});if(av(a.status)&&s<e)continue;return a}catch{if(s<e)continue;return}finally{clearTimeout(o)}}}function av(r){return r===408||r===429||r>=500&&r<600}var Kr=class extends Lt{constructor(e,t){super(e),this.cdnClient=t}async loadPackageAtVersionedRoot(e,t){let n=this.cdnClient.packageJson(new R({name:e,version:t})),s=await Jr(n);if(!s?.ok)return;let i;try{i=await s.json()}catch{return}if(i)return{pkg:i,baseDir:this.cdnClient.baseDir(new R({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 n of e){let s=await t(n);if(s)return s}}async resolveFromSelected(e,t){if(e.kind==="types"){let s=this.cdnClient.normalizeRelative(e.path);if(!s||s==="/"||s===".")return this.tryUntilSuccess([...qr],t);if(!Ur.test(s)){let i=await this.tryUntilSuccess(this.declarationCandidatesFor(s),t);if(i)return i}return t(s)}let n=this.declarationCandidatesFor(e.path);return this.tryUntilSuccess([...qr,...n],t)}toResolutionResult(e){return{kind:Ur.test(e)?"types":"probe",path:e}}resolveExportsPath(e,t){let n=t||".",s=e;try{let i=this.extractPathFromResult(gd(s,n,{conditions:["types"]}));if(i)return i}catch{}try{return this.extractPathFromResult(gd(s,n,{browser:!0,conditions:["import","default","module","browser","node"]}))}catch{return}}async resolve(e){try{let t=R.parse(e),{pkg:n,baseDir:s}=await this.loadPackageAtVersionedRoot(t.name,t.version)||{};if(!n||!s)return;let i={name:t.name,version:t.version},o=new R(i).format(),a=new R({...i,subpath:t.subpath}).format(),c=u=>this.fetchCandidateFrom(s,t.name,u);if(t.subpath){let u=this.cdnClient.ensureLeadingDotSlash(t.subpath),d=this.resolveExportsPath(n,u);if(d){let m=await this.resolveFromSelected(this.toResolutionResult(d),c);if(m)return{...m,resolvedPkg:a}}let p=await this.tryUntilSuccess(this.declarationCandidatesFor(u),c);if(p)return{...p,resolvedPkg:a}}let l=n.types??n.typings;if(l){let u=await this.resolveFromSelected({kind:"types",path:l},c);if(u)return{...u,resolvedPkg:o}}let f=this.resolveExportsPath(n,".");if(f){let u=await this.resolveFromSelected(this.toResolutionResult(f),c);if(u)return{...u,resolvedPkg:o}}return}catch{return}}async fetchCandidateFrom(e,t,n){let s=this.cdnClient.normalizeRelative(n),i=new URL(s,e).toString(),o=await this.fetchDtsText(i);return o?{dts:o.dts,url:o.url,resolvedPkg:t}:void 0}declarationCandidatesFor(e){if(!e||e==="./"||e==="/")return[...qr];let t=e.replace(/\.(mjs|cjs|js|mts|cts|ts)$/i,""),n=$t(t),s=t.endsWith("/")?t:`${t}/`;return n.push(...$t(`${s}index`)),n}};import{gunzipSync as cv}from"fflate";var Mt=class{async fetchAndExtract(e,t){let n=this.getTarballUrl(e,t),s=await Jr(n,{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\//,""),n=t.indexOf("/");return n>0?t.substring(n+1):t}extractDtsFiles(e){let t=new Map;try{let n=cv(e),s=new TextDecoder("utf-8"),i=0;for(;i<n.length-512;){let o=n.slice(i,i+512);if(o[0]===0)break;let a=o.slice(0,100),c=a.indexOf(0),l=s.decode(a.slice(0,c>0?c:100)).trim(),f=o.slice(124,136),u=s.decode(f).trim().replace(/\0/g,""),d=parseInt(u,8)||0,p=String.fromCharCode(o[156]);if(i+=512,(p==="0"||p==="\0")&&(l.endsWith(".d.ts")||l.endsWith(".d.mts"))){let m=n.slice(i,i+d);t.set(this.normalizeTarPath(l),s.decode(m))}i+=Math.ceil(d/512)*512}}catch{}return t}},lv=new Mt;var Wr=class extends Lt{constructor(e,t,n,s=new Mt){super(e),this.cdnClient=t,this.cache=n,this.tarballFetcher=s}typesNameCandidates(e){let t=e.startsWith("@")?e.slice(1).replace("/","__"):e;return t.includes(".")?[t,t.split(".").join("-"),t.split(".").join("")]:[t]}selectTypesVersion(e,t,n){try{if(n){let i=ot.majorOf(n),o=e.filter(a=>ot.majorOf(a)===i);if(o.length)return o.sort((a,c)=>ot.cmp(c,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,""),n=[...$t(t),`${t}/index.d.ts`,`${t}/index.d.mts`];return t!==e&&n.push(`${e}.d.ts`,`${e}/index.d.ts`),n}async fetchFromVersionedRoot(e,t){let n=new R(e),s=n.version;if(!s)return;let i;try{i=await this.tarballFetcher.fetchAndExtract(n.name,s)}catch{return}if(!i||i.size===0)return;for(let[a,c]of i.entries()){let l=this.cdnClient.file(e,a);try{await this.cache.setCachedFile(l,c)}catch{}}let o=t.subpath?this.subpathCandidates(t.subpath):["index.d.ts"];for(let a of o){let c=i.get(a);if(c)return{dts:c,url:this.cdnClient.file(e,a),resolvedPkg:t.subpath?new R(t).format():t.name}}}async resolve(e){let t=R.parse(e);if(t.name)for(let n of this.typesNameCandidates(t.name)){let s=`@types/${n}`,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 Hr=class{collectRelativeTypeRefs(e){return this.collectRefs(e).filter(t=>t.startsWith("./")||t.startsWith("../"))}collectBareModuleRefs(e){return this.collectRefs(e).filter(t=>this.isBare(t))}collectRefs(e){let t=new Set,n=(s,i)=>(t.add(s[i]),null);return this.matchAll(e,/(import|export)\s+[^'"\n]*from\s*['"]([^'"\n]+)['"]/,s=>n(s,2)),this.matchAll(e,/export\s*\*\s*from\s*['"]([^'"\n]+)['"]/,s=>n(s,1)),Array.from(t)}matchAll(e,t,n){let s=[];try{let i=new RegExp(t.source,"g"),o;for(;o=i.exec(e);){let a=n(o);a!==null&&s.push(a)}}catch{}return s}isBare(e){return!(e.startsWith("./")||e.startsWith("../")||e.startsWith("file:")||e.startsWith("http://")||e.startsWith("https://"))}};var yd="file:///node_modules",Vr=class{constructor(){this.epoch=0,this.listeners=new Set}getEpoch(){return this.epoch}bumpEpoch(){this.epoch+=1;for(let e of this.listeners)try{e(this.epoch)}catch{}return this.epoch}onEpochChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}epochDir(){return`__tsepoch_${this.epoch}`}pathForMain(e){return`${yd}/${this.epochDir()}/${e}/index.d.ts`}pathFor(e,t){let n=uv(t);return`${yd}/${this.epochDir()}/${e}/${n}`}};function uv(r){let e=r||"";return e.startsWith("./")?e.slice(2):e.replace(/^\/+/,"")}import{LRUCache as fv}from"lru-cache";function Oa(r){let e=new fv({ttl:1e4,max:500}),t=new Map;return async function(s){try{if(await r.isNegative(s))return;let i=e.get(s);if(i&&Date.now()-i<1e4)return;let o=await r.getCachedFile(s);if(o)return{dts:o,url:s};let a=t.get(s);if(a)return a;let c=(async()=>{let l=await fetch(s,{cache:"no-store"});if(!l.ok){l.status===404&&(e.set(s,Date.now()),await r.recordNegative(s));return}let f=await l.text(),u=l.url||s;return await r.clearNegative(s),await r.setCachedFile(u,f),{dts:f,url:u}})();return t.set(s,c),await c.finally(()=>t.delete(s))}catch{return}}}var ws=class{constructor(e){this.inFlight=new Map,this.scanner=new Hr,this.cache=e.cache,this.cdnClient=e.cdnClient,this.versionResolver=e.versionResolver,this.packageService=e.packageService,this.fetchDts=Oa(e.cache),this.typescriptProvider=new Kr(this.fetchDts,e.cdnClient),this.definitelyTypedProvider=new Wr(this.fetchDts,e.cdnClient,e.cache),this.virtualFs=new Vr}withInFlight(e,t){let n=this.inFlight.get(e);if(n)return n;let s=t().finally(()=>this.inFlight.delete(e));return this.inFlight.set(e,s),s}invalidate(){this.virtualFs.bumpEpoch(),this.inFlight.clear()}capArray(e,t){return e.length<=t?e:e.slice(0,t)}pushFileIfNew(e,t,n){e.some(s=>s.path===t)||e.push({path:t,content:n})}createStubDef(e){let t=this.virtualFs.pathForMain(e);return{pkg:e,mainPath:t,files:[{path:t,content:"export const _shim: any; export default _shim;"}],shims:[{module:e,path:t}]}}async trySubpathWithRootFallback(e,t){let n=new R(e);return n.subpath?this.fetchRootDts(n.name,t):void 0}async fetchViaProviders(e){for(let t of[this.typescriptProvider,this.definitelyTypedProvider])try{let n=await t.resolve(e);if(n?.dts)return n}catch{}}subpathsMatch(e,t){return new R(e).subpath===new R(t).subpath}async fetchRootDts(e,t){let{effectivePackage:n,root:s,pinned:i}=await this.versionResolver.effectivePackage(e,t),o=await this.cache.getCachedDts(n);if(o?.content){let c=o.url??this.cdnClient.file(i?`${s}@${i}`:s,"index.d.ts");return{dts:o.content,url:c,resolvedPkg:n}}let a;try{a=await this.fetchViaProviders(n)}catch{return}if(!(!a?.dts||!a.url)){try{await this.cache.setCachedFile(a.url,a.dts)}catch{}if(this.subpathsMatch(n,a.resolvedPkg||n)){try{await this.cache.setCachedDts(n,a.dts,a.url)}catch{}return a}}}extractPackageRootUrl(e){let t=e.pathname.match(/^(.+@[^/]+\/)/);return t?new URL(t[1],e.origin):new URL("./",e)}toVirtualPath(e,t,n){let s=t.pathname.startsWith(e.pathname)?t.pathname.slice(e.pathname.length):`__deps__/${encodeURIComponent(t.toString()).replace(/%/g,"_")}.d.ts`;return this.virtualFs.pathFor(n,s)}computeEntryPath(e,t){if(!e)return{mainPath:this.virtualFs.pathForMain(t),packageRootUrl:void 0};let n=new URL(e),s=this.extractPackageRootUrl(n);return{mainPath:this.toVirtualPath(s,n,t),packageRootUrl:s}}async expandRelativeRefs(e,t,n,s,i=new Set,o){if(!i.has(t)&&(i.add(t),!(i.size>Je.maxRelativeTypeRefs)))try{let a=new URL(t),c=new URL("./",a);o??(o=this.extractPackageRootUrl(a));let l=this.capArray(this.scanner.collectRelativeTypeRefs(e),Je.maxRelativeTypeRefs);for(let f of l)await this.tryRelativeRef(f,c,o,n,s,i)}catch{}}async tryRelativeRef(e,t,n,s,i,o){try{let a=new URL(e,t),c=a.pathname+a.search,l=Pa(c)?[c]:this.typescriptProvider.declarationCandidatesFor(c);for(let f of l){let d=new URL(f,a).toString();if(o.has(d))return;let p=await this.fetchDts(d);if(p?.dts){let m=this.toVirtualPath(n,new URL(p.url),s);this.pushFileIfNew(i,m,p.dts),await this.expandRelativeRefs(p.dts,p.url,s,i,o,n);return}}}catch{}}isDifferentPackage(e,t){return e===t?!1:new R(e).name!==new R(t).name}ambientlyDeclares(e,t){for(let n of e.matchAll(/declare\s+module\s+['"]([^'"]+)['"]/g)){let s=n[1];if(s===t||s.endsWith("/*")&&t.startsWith(s.slice(0,-1)))return!0}return!1}markFileAmbient(e,t){let n=e.find(s=>s.path===t);n&&(n.ambient=!0)}async prefetchBareDeps(e,t,n,s,i){try{let o=this.capArray(this.scanner.collectBareModuleRefs(e),Je.maxBareDeps).filter(l=>this.isDifferentPackage(l,t));if(!o.length)return;let a=new Set([t]),c=dv(Je.prefetchConcurrency);await Promise.all(o.map(l=>c(()=>this.prefetchBareDepsRecursive(l,n,s,Je.maxBareDepth,a,i).catch(()=>{}))))}catch{}}async prefetchBareDepsRecursive(e,t,n,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 c=a.resolvedPkg||e,l=this.virtualFs.pathForMain(c);this.pushFileIfNew(t,l,a.dts),this.ambientlyDeclares(a.dts,e)?this.markFileAmbient(t,l):n.push({module:e,path:l}),a.url&&await this.expandRelativeRefs(a.dts,a.url,c,t);let f=this.capArray(this.scanner.collectBareModuleRefs(a.dts),Je.maxBareDeps).filter(u=>!i.has(u));for(let u of f)await this.prefetchBareDepsRecursive(u,t,n,s-1,i,o)}async resolve(e,t,n){let s=await this.packageService.extractImports(e),i=n?[...s,...n]:s;return(await Promise.all(i.map(a=>this.resolveOne(a,t)))).filter(a=>!!a)}async resolveOne(e,t){let{effectivePackage:n}=await this.versionResolver.effectivePackage(e,t);return this.withInFlight(n,async()=>{let s=await this.fetchRootDts(e,t)??await this.trySubpathWithRootFallback(e,t);return s?this.buildDefFromContent(e,s,s.resolvedPkg||e,t):this.createStubDef(e)})}async buildDefFromContent(e,t,n,s){let{dts:i,url:o,resolvedPkg:a}=t,c=new R(a||n),l=c.version?`${c.name}@${c.version}`:c.name,{mainPath:f,packageRootUrl:u}=this.computeEntryPath(o,l),d=[{path:f,content:i}],p=[];o&&await this.expandRelativeRefs(i,o,l,d,void 0,u);let m=d.map(A=>A.content).join(`
|
|
750
|
+
`);await this.prefetchBareDeps(m,l,d,p,s);let h=c.format(),y=e===h?[e]:[e,h],x=y.some(A=>this.ambientlyDeclares(i,A));return x?this.markFileAmbient(d,f):p.push(...y.map(A=>({module:A,path:f}))),{pkg:e,mainPath:f,files:d,shims:p,ambient:x}}};function Ca(r){return new ws(r)}import*as ve from"fs/promises";import*as Oe from"path";import*as vd from"os";import*as Ra from"fs/promises";import*as bd from"crypto";function pe(r){return bd.createHash("sha1").update(r).digest("hex")}async function ct(r){try{return JSON.parse(await Ra.readFile(r,"utf8"))}catch{return}}async function vs(r){try{return await Ra.readFile(r,"utf8")}catch{return}}var wd=1,Ke=Oe.join(vd.homedir(),".typebulb","cache"),Yr=Oe.join(Ke,"packages"),Gr=Oe.join(Ke,"proxy"),Ss=Oe.join(Ke,"dts"),pv=Oe.join(Ke,"emit"),Na;function q(){return Na||(Na=hv()),Na}function xs(r,e){return Oe.join(pv,pe(r),e)}async function hv(){await ve.mkdir(Ke,{recursive:!0});let r=Oe.join(Ke,"version.json");if((await mv(r))?.version===wd)return;let t=await ve.readdir(Ke).catch(()=>[]);await Promise.all(t.map(n=>ve.rm(Oe.join(Ke,n),{recursive:!0,force:!0}))),await ve.writeFile(r,JSON.stringify({version:wd})+`
|
|
753
751
|
`,"utf8")}async function mv(r){try{let e=await ve.readFile(r,"utf8");return JSON.parse(e)}catch{return}}import*as We from"fs/promises";import*as Sd from"path";async function ce(r,e){await We.mkdir(Sd.dirname(r),{recursive:!0});let t=`${r}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;await We.writeFile(t,e,"utf8"),await We.rename(t,r).catch(async n=>{throw await We.rm(t,{force:!0}).catch(()=>{}),n})}var Dt=class{constructor(e){this.filePath=e}mem;loadPromise;load(){return this.mem?Promise.resolve(this.mem):(this.loadPromise||(this.loadPromise=ct(this.filePath).then(e=>(this.mem=new Map(Object.entries(e??{})),this.mem))),this.loadPromise)}async get(e){return(await this.load()).get(e)}async set(e,t){let n=await this.load();n.set(e,t),await this.persist(n)}async delete(e){let t=await this.load();t.delete(e)&&await this.persist(t)}async persist(e){await ce(this.filePath,JSON.stringify(Object.fromEntries(e)))}};var _a=he.join(Yr,"indexes"),xd=he.join(Yr,"pinned"),gv=he.join(Yr,"meta"),yv=he.join(Yr,"negative.json"),Bt=Symbol("missing"),Es=class{pinnedMem=new Map;indexMem=new Map;metaMem=new Map;negativeCache=new at(new Dt(yv));async getPinnedExact(e,t){let n=`${e}@${t}`,s=this.pinnedMem.get(n);if(s!==void 0)return s===Bt?void 0:s;await q();let i=await vs(he.join(xd,pe(n)+".txt"));return this.pinnedMem.set(n,i??Bt),i}async setPinnedExact(e,t,n){let s=`${e}@${t}`;this.pinnedMem.set(s,n),await q(),await ce(he.join(xd,pe(s)+".txt"),n)}async getIndex(e){let t=this.indexMem.get(e);if(t!==void 0)return t===Bt?void 0:t;await q();let n=await ct(he.join(_a,ks(e)+".json"));return this.indexMem.set(e,n??Bt),n}async setIndex(e,t,n){let s={versions:t,distTags:n,updatedAt:Date.now()};this.indexMem.set(e,s),await q(),await ce(he.join(_a,ks(e)+".json"),JSON.stringify(s))}async invalidateVersionsCache(e){this.indexMem.delete(e),await Ed.rm(he.join(_a,ks(e)+".json"),{force:!0})}async isNegative(e){return await q(),this.negativeCache.isNegative(e)}async recordNegative(e){await q(),await this.negativeCache.recordNegative(e)}async clearNegative(e){await this.negativeCache.clearNegative(e)}async getMeta(e,t){let n=`${e}@${t}`,s=this.metaMem.get(n);if(s!==void 0)return s===Bt?void 0:s;await q();let i=await ct(kd(e,t));return this.metaMem.set(n,i??Bt),i}async setMeta(e,t,n,s,i){let o={dependencies:n,peerDependencies:s,peerDependenciesMeta:i,updatedAt:Date.now()};this.metaMem.set(`${e}@${t}`,o),await q(),await ce(kd(e,t),JSON.stringify(o))}};function kd(r,e){return he.join(gv,ks(r),encodeURIComponent(e)+".json")}function ks(r){return r.replace(/\//g,"__")}var Ad={async getJson(r){try{let e=await fetch(r,{redirect:"follow"});return e.ok?await e.json():void 0}catch{return}},async head(r){try{let e=await fetch(r,{method:"HEAD",redirect:"follow"});return{ok:e.ok,url:e.url}}catch{return}}};var bv=new Es,{packageService:As,versionResolver:Td,cdnClient:Pd,peerResolver:xP}=ad(bv,Ad);var Od=`
|
|
754
752
|
(() => {
|
|
755
753
|
// Embedded (bulb-in-a-bulb): runs inside a sandboxed iframe with no parent
|
|
@@ -895,13 +893,12 @@ declare const tb: {${ld}${ud}${dd}${md}${rv}${pd}${hd}
|
|
|
895
893
|
}
|
|
896
894
|
|
|
897
895
|
// tb.ai(): non-streaming, resolves with the full { text } (unchanged 90% path).
|
|
898
|
-
const aiCall = async ({ messages, system, effort,
|
|
896
|
+
const aiCall = async ({ messages, system, effort, provider, model, webSearch, signal } = {}) => {
|
|
899
897
|
if (isEmbedded) throw embedErr('tb.ai()');
|
|
900
898
|
const resp = await fetch('/__ai', {
|
|
901
899
|
method: 'POST',
|
|
902
900
|
headers: { 'Content-Type': 'application/json' },
|
|
903
|
-
|
|
904
|
-
body: JSON.stringify({ messages, system, effort: effort ?? reasoning, provider, model, webSearch }),
|
|
901
|
+
body: JSON.stringify({ messages, system, effort, provider, model, webSearch }),
|
|
905
902
|
signal
|
|
906
903
|
});
|
|
907
904
|
if (resp.status === 403) throw new Error((await resp.text().catch(() => '')) || 'tb.ai() is blocked \u2014 re-run with --trust');
|
|
@@ -918,12 +915,11 @@ declare const tb: {${ld}${ud}${dd}${md}${rv}${pd}${hd}
|
|
|
918
915
|
// streaming tb.server.<gen>(). Break the loop (or abort the signal) to cancel.
|
|
919
916
|
const aiStream = (opts = {}) => (async function* () {
|
|
920
917
|
if (isEmbedded) throw embedErr('tb.ai.stream()');
|
|
921
|
-
const { messages, system, effort,
|
|
918
|
+
const { messages, system, effort, provider, model, webSearch, signal } = opts;
|
|
922
919
|
const resp = await fetch('/__ai', {
|
|
923
920
|
method: 'POST',
|
|
924
921
|
headers: { 'Content-Type': 'application/json' },
|
|
925
|
-
|
|
926
|
-
body: JSON.stringify({ messages, system, effort: effort ?? reasoning, provider, model, webSearch, stream: true }),
|
|
922
|
+
body: JSON.stringify({ messages, system, effort, provider, model, webSearch, stream: true }),
|
|
927
923
|
signal
|
|
928
924
|
});
|
|
929
925
|
if (resp.status === 403) throw new Error((await resp.text().catch(() => '')) || 'tb.ai() is blocked \u2014 re-run with --trust');
|
|
@@ -1256,8 +1252,8 @@ globalThis.__tbEntryRan = true; /* load-failure backstop \u2014 see embedProtoco
|
|
|
1256
1252
|
}
|
|
1257
1253
|
});
|
|
1258
1254
|
})();
|
|
1259
|
-
</script>`;function vv(r){let e={};for(let[t,n]of Object.entries(r))e[t]=n.startsWith("https://")?"/proxy/"+n:n;return e}import*as Rs from"fs/promises";import*as Cs from"path";import{existsSync as Rd,readFileSync as Sv}from"fs";import{execFile as xv}from"child_process";import{promisify as kv}from"util";import{satisfies as Ev}from"semver";var Av=kv(xv);async function Ns(r,e,t){let s=r.map(o=>Tv(o,t)).filter(o=>!Pv(o,e));if(s.length===0)return;await Rs.mkdir(e,{recursive:!0});let i=Cs.join(e,"package.json");Rd(i)||await Rs.writeFile(i,JSON.stringify({name:"typebulb-server",private:!0})),console.log(` Installing: ${s.join(", ")}`),await Av("npm",["install","--no-audit","--no-fund",...s],{cwd:e,shell:!0})}function Tv(r,e){if(!e||_d(r))return r;let t=e[r];return t?`${r}@${t}`:r}function Pv(r,e){let t=Cs.join(e,"node_modules",Nd(r));if(!Rd(t))return!1;let n=_d(r);if(!n)return!0;try{let s=JSON.parse(Sv(Cs.join(t,"package.json"),"utf-8")).version;return Ev(s,n)}catch{return!1}}function _s(r){let e=new Set,t=/\bimport\s+(?:[\s\S]*?\s+from\s+)?['"]([^./][^'"]*)['"]/g,n;for(;n=t.exec(r);){let s=n[1];if(s.includes(":"))continue;let i=s.startsWith("@")?s.split("/").slice(0,2).join("/"):s.split("/")[0];e.add(i)}return[...e]}function Nd(r){if(r.startsWith("@")){let t=r.indexOf("/");if(t<0)return r;let n=r.indexOf("@",t+1);return n<0?r:r.slice(0,n)}let e=r.indexOf("@");return e<0?r:r.slice(0,e)}function _d(r){let e=Nd(r);return r.length>e.length?r.slice(e.length+1):""}async function Id(r){let t=(await He.readdir(r)).find(n=>n.endsWith(".bulb.md"));return t?Is.join(r,t):null}async function me(r){let e=await He.readFile(r,"utf-8"),t=Qe(e);if(!t)throw new Error("Invalid .bulb.md file format");let n=ms(t);return{bulb:n,config:Xc(n.config),warnings:Vc(e)}}async function zr(r,e,t,n){let s=wa(r,{serverOnly:!0});if(s.error)throw new Error(`Server compilation error: ${s.error}`);let i=s.code;t&&(i=await jc(i,t));let o=Is.join(e,".typebulb");await He.mkdir(o,{recursive:!0});let a=_s(i);a.length>0&&await Ns(a,o,n);let c=Is.join(o,"server.mjs");return await He.writeFile(c,i,"utf-8"),await import(`${Ov(c).href}?t=${Date.now()}`)}async function Ia(r,e,t,n,s){let{bulb:i,config:o}=await me(r),a=ya(i.data);rd(i.code,o.dependencies??{});let c=wa(i.code,{jsxImportSource:o.ts?.jsxImportSource});c.error&&console.error("Compilation error:",c.error);let{importMap:l}=await As.buildImportMap(c.code,o.dependencies??{},n?new Set([n.name]):void 0);n&&(l.imports[n.name]=n.entryUrl);let f=Cd({name:i.name,code:c.code,css:i.css,html:i.html,data:a,insight:i.insight,importMap:l,watch:e}),u=null;return i.server&&t&&(u=await zr(i.server,s,n,o.dependencies)),{html:f,bulb:i,serverExports:u}}Xr();import Dv from"open";async function Ft(r){await Dv(r)}var Md=new Set(["claude","pi"]);function Dd(r){return Md.has(r)}function Zr(){return[...Md]}import*as Ve from"path";import{spawn as Xv,execSync as Zv}from"child_process";import{createRequire as eS}from"module";import{existsSync as tS}from"fs";import*as
|
|
1260
|
-
`,"utf8"),await
|
|
1255
|
+
</script>`;function vv(r){let e={};for(let[t,n]of Object.entries(r))e[t]=n.startsWith("https://")?"/proxy/"+n:n;return e}import*as Rs from"fs/promises";import*as Cs from"path";import{existsSync as Rd,readFileSync as Sv}from"fs";import{execFile as xv}from"child_process";import{promisify as kv}from"util";import{satisfies as Ev}from"semver";var Av=kv(xv);async function Ns(r,e,t){let s=r.map(o=>Tv(o,t)).filter(o=>!Pv(o,e));if(s.length===0)return;await Rs.mkdir(e,{recursive:!0});let i=Cs.join(e,"package.json");Rd(i)||await Rs.writeFile(i,JSON.stringify({name:"typebulb-server",private:!0})),console.log(` Installing: ${s.join(", ")}`),await Av("npm",["install","--no-audit","--no-fund",...s],{cwd:e,shell:!0})}function Tv(r,e){if(!e||_d(r))return r;let t=e[r];return t?`${r}@${t}`:r}function Pv(r,e){let t=Cs.join(e,"node_modules",Nd(r));if(!Rd(t))return!1;let n=_d(r);if(!n)return!0;try{let s=JSON.parse(Sv(Cs.join(t,"package.json"),"utf-8")).version;return Ev(s,n)}catch{return!1}}function _s(r){let e=new Set,t=/\bimport\s+(?:[\s\S]*?\s+from\s+)?['"]([^./][^'"]*)['"]/g,n;for(;n=t.exec(r);){let s=n[1];if(s.includes(":"))continue;let i=s.startsWith("@")?s.split("/").slice(0,2).join("/"):s.split("/")[0];e.add(i)}return[...e]}function Nd(r){if(r.startsWith("@")){let t=r.indexOf("/");if(t<0)return r;let n=r.indexOf("@",t+1);return n<0?r:r.slice(0,n)}let e=r.indexOf("@");return e<0?r:r.slice(0,e)}function _d(r){let e=Nd(r);return r.length>e.length?r.slice(e.length+1):""}async function Id(r){let t=(await He.readdir(r)).find(n=>n.endsWith(".bulb.md"));return t?Is.join(r,t):null}async function me(r){let e=await He.readFile(r,"utf-8"),t=Qe(e);if(!t)throw new Error("Invalid .bulb.md file format");let n=ms(t);return{bulb:n,config:Xc(n.config),warnings:Vc(e)}}async function zr(r,e,t,n){let s=wa(r,{serverOnly:!0});if(s.error)throw new Error(`Server compilation error: ${s.error}`);let i=s.code;t&&(i=await jc(i,t));let o=Is.join(e,".typebulb");await He.mkdir(o,{recursive:!0});let a=_s(i);a.length>0&&await Ns(a,o,n);let c=Is.join(o,"server.mjs");return await He.writeFile(c,i,"utf-8"),await import(`${Ov(c).href}?t=${Date.now()}`)}async function Ia(r,e,t,n,s){let{bulb:i,config:o}=await me(r),a=ya(i.data);rd(i.code,o.dependencies??{});let c=wa(i.code,{jsxImportSource:o.ts?.jsxImportSource});c.error&&console.error("Compilation error:",c.error);let{importMap:l}=await As.buildImportMap(c.code,o.dependencies??{},n?new Set([n.name]):void 0);n&&(l.imports[n.name]=n.entryUrl);let f=Cd({name:i.name,code:c.code,css:i.css,html:i.html,data:a,insight:i.insight,importMap:l,watch:e}),u=null;return i.server&&t&&(u=await zr(i.server,s,n,o.dependencies)),{html:f,bulb:i,serverExports:u}}Xr();import Dv from"open";async function Ft(r){await Dv(r)}var Md=new Set(["claude","pi"]);function Dd(r){return Md.has(r)}function Zr(){return[...Md]}import*as Ve from"path";import{spawn as Xv,execSync as Zv}from"child_process";import{createRequire as eS}from"module";import{existsSync as tS}from"fs";import*as ee from"fs/promises";import*as X from"path";import*as qt from"path";var Bv=qt.join(Ss,"pkg"),jv=qt.join(Ss,"files"),Fv=qt.join(Ss,"negative.json"),Ms=class{pkgMem=new Map;fileMem=new Map;negativeCache=new at(new Dt(Fv));async getCachedDts(e){if(this.pkgMem.has(e))return this.pkgMem.get(e);await q();let t=await ct(Bd(e));return this.pkgMem.set(e,t),t}async setCachedDts(e,t,n){let s={content:t,url:n};this.pkgMem.set(e,s),await $s(async()=>{await q(),await ce(Bd(e),JSON.stringify(s))})}async getCachedFile(e){if(this.fileMem.has(e))return this.fileMem.get(e);await q();let t=await vs(jd(e));return this.fileMem.set(e,t),t}async setCachedFile(e,t){this.fileMem.set(e,t),await $s(async()=>{await q(),await ce(jd(e),t)})}isNegative(e){return this.negativeCache.isNegative(e)}async recordNegative(e){await $s(async()=>{await q(),await this.negativeCache.recordNegative(e)})}clearNegative(e){return $s(()=>this.negativeCache.clearNegative(e))}};async function $s(r){try{await r()}catch{}}function Bd(r){return qt.join(Bv,pe(r)+".json")}function jd(r){return qt.join(jv,pe(r)+".txt")}var Da;function qv(){return Da||(Da=Ca({cache:new Ms,cdnClient:Pd,packageService:As,versionResolver:Td})),Da}var Fd="file:///node_modules/";async function qd(r){let e=xs(r.emitKey,"typecheck");await q(),await ee.rm(e,{recursive:!0,force:!0}),await ee.mkdir(e,{recursive:!0});let t=Wv(r.jsxImportSource,r.dependencies),n=await qv().resolve(r.code,r.dependencies,t),s=r.local?.name,i=s?n.filter(f=>f.pkg!==s):n,o=new Set;for(let f of i)for(let u of f.files){let d=Ds(u.path);if(!d||o.has(d))continue;o.add(d);let p=X.join(e,"node_modules",d);await ee.mkdir(X.dirname(p),{recursive:!0}),await ee.writeFile(p,u.content,"utf8")}let a={};for(let f of i)for(let u of f.shims){let d=Ds(u.path);d&&(a[u.module]=[`./node_modules/${d}`])}for(let f of i){if(f.ambient)continue;let u=Ds(f.mainPath);u&&(a[f.pkg]=[`./node_modules/${u}`])}let c=new Set;for(let f of i)for(let u of f.files){if(!u.ambient)continue;let d=Ds(u.path);d&&c.add(`node_modules/${d}`)}if(r.local){delete a[r.local.name];let f=await Hv(r.local,e);f?a[r.local.name]=[`./node_modules/${r.local.name}/${f}`]:console.warn(` local: '${r.local.name}' ships no type defs; check cannot type against it.`)}let l=Uv(r.jsxImportSource,a,[...c]);return await ee.writeFile(X.join(e,"tsconfig.json"),JSON.stringify(l,null,2)+`
|
|
1256
|
+
`,"utf8"),await ee.writeFile(X.join(e,"code.tsx"),r.code,"utf8"),await ee.writeFile(X.join(e,"tb.d.ts"),Aa,"utf8"),{dir:e}}function Uv(r,e,t=[]){return{compilerOptions:{target:"es2023",module:"esnext",moduleResolution:"bundler",lib:Jv([...ka,...Ea]),jsx:"react-jsx",jsxImportSource:r??"react",strict:!0,noEmit:!0,skipLibCheck:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0,paths:e},include:["code.tsx","tb.d.ts",...t]}}function Jv(r){return r.filter(e=>!e.since).map(e=>Kv(e.name))}function Kv(r){return r.split(".").map(e=>/^es\d+$/i.test(e)?e.toUpperCase():e==="dom"?"DOM":e==="esnext"?"ESNext":e.charAt(0).toUpperCase()+e.slice(1)).join(".")}function Wv(r,e){let t=r??("react"in e?"react":void 0);return t?[`${t}/jsx-runtime`,`${t}/jsx-dev-runtime`]:[]}function Ds(r){if(!r.startsWith(Fd))return;let e=r.slice(Fd.length),t=e.indexOf("/");if(!(t<0))return e.slice(t+1)}async function Hv(r,e){if(!r.typesAbs)return;let t=X.dirname(r.typesAbs),n=X.join(e,"node_modules",r.name);for(let s of await Vv(t)){let i=X.join(n,X.relative(t,s));await ee.mkdir(X.dirname(i),{recursive:!0}),await ee.copyFile(s,i)}return X.basename(r.typesAbs)}async function Vv(r){let e=[];async function t(n){let s=await ee.readdir(n,{withFileTypes:!0});for(let i of s){let o=X.join(n,i.name);i.isDirectory()?await t(o):/\.d\.ts(\.map)?$/.test(i.name)&&e.push(o)}}return await t(r),e}import*as le from"fs/promises";import*as Re from"path";import{existsSync as Yv}from"fs";var Gv="^22";async function Ud(r){let e=xs(r.emitKey,"typecheck-server");await q(),await le.rm(e,{recursive:!0,force:!0}),await le.mkdir(e,{recursive:!0});let t=Re.join(r.bulbDir,".typebulb"),n=_s(r.server).filter(o=>o!==r.local?.name);await Ns([`@types/node@${Gv}`,...n],t,r.dependencies);let s=Re.join(t,"node_modules"),i=Re.join(e,"node_modules");return await Qv(s,i),await le.writeFile(Re.join(e,"server.ts"),r.server,"utf8"),await le.writeFile(Re.join(e,"tb.d.ts"),Ta,"utf8"),await le.writeFile(Re.join(e,"tsconfig.json"),JSON.stringify(zv(r.local),null,2)+`
|
|
1261
1257
|
`,"utf8"),{dir:e}}function zv(r){let e={target:"es2023",module:"esnext",moduleResolution:"bundler",lib:["ES2023"],types:["node"],strict:!0,noEmit:!0,skipLibCheck:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0};if(r?.typesAbs){let t=i=>i.replace(/\\/g,"/"),n=t(Re.dirname(r.typesAbs)),s=t(r.typesAbs).replace(/\.d\.ts$/,"");e.paths={[r.name]:[s],[`${r.name}/*`]:[`${n}/*`]}}return{compilerOptions:e,include:["server.ts","tb.d.ts"]}}async function Qv(r,e){if(!Yv(r)){await le.mkdir(e,{recursive:!0});return}await le.rm(e,{recursive:!0,force:!0});let t=process.platform==="win32"?"junction":"dir";await le.symlink(r,e,t)}gs();async function Kd(r,e){let{bulb:t,config:n,warnings:s}=await me(r);!t.code&&!t.server&&(console.error("Bulb has neither **code.tsx** nor **server.ts**; nothing to check."),process.exit(1));let i=!1;for(let l of s)console.log(`structure ${l}`);s.length&&(i=!0),t.code&&(i=Jd(Lr(t.code,{target:"client",dependencies:n.dependencies??{}}),"client")||i),t.server&&(i=Jd(Lr(t.server,{target:"server"}),"server")||i);let o=sS([process.cwd(),Ve.dirname(r)]);if(!o){let l=Ve.relative(process.cwd(),r)||r;console.error("check: TypeScript not found \u2014 install it once, then re-run:"),console.error(" npm i -g typescript"),console.error(` typebulb check ${l}`),process.exit(2)}let a=[];if(t.code){let{dir:l}=await qd({code:t.code,dependencies:n.dependencies??{},jsxImportSource:n.ts?.jsxImportSource,emitKey:r,local:e});a.push({role:"client",dir:l})}if(t.server){let{dir:l}=await Ud({server:t.server,bulbDir:Ve.dirname(r),emitKey:r,local:e?{name:e.name,typesAbs:e.typesAbs}:void 0,dependencies:n.dependencies});a.push({role:"server",dir:l})}for(let{role:l,dir:f}of a){let{stdout:u,exitCode:d}=await rS(o,f);for(let p of u.split(/\r?\n/))p.trim()&&console.log(`${l} ${p}`);d!==0&&(i=!0)}i&&process.exit(1);let c=[t.code&&"code.tsx",t.server&&"server.ts"].filter(Boolean).join(", ");console.error(`\u2713 no issues (${c})`)}function Jd(r,e){for(let t of r)for(let n of t.message.split(`
|
|
1262
1258
|
`))console.log(`${e} ${n}`);return r.length>0}function rS(r,e){return new Promise(t=>{let n=Xv(process.execPath,[r,"--noEmit"],{cwd:e}),s="";n.stdout?.on("data",i=>{s+=i.toString()}),n.stderr?.on("data",i=>{s+=i.toString()}),n.on("close",i=>t({stdout:s,exitCode:i??1}))})}var nS=eS(import.meta.url);function sS(r){let e=n=>{try{let s=nS.resolve("typescript/package.json",{paths:n}),i=Ve.join(Ve.dirname(s),"lib","tsc.js");return tS(i)?i:void 0}catch{return}},t=e(r);if(t)return t;try{let n=Zv("npm root -g",{encoding:"utf8"}).trim();return e([n])}catch{return}}Bs();Xr();async function Wd(r,e){let{bulb:t}=await me(r),n=Ut(t);if(lt(r)){console.log("remembered-trusted \u2014 runs with filesystem / AI / server.ts automatically (`typebulb untrust` to revoke)."),n&&console.log(` (it uses ${n})`);return}n?(console.log(`This bulb appears to use ${n}; it runs Restricted unless you grant trust:`),console.log(` ${e}`)):console.log("No privileged capability detected \u2014 runs Restricted by default. (A clean scan is a hint, not a guarantee.)")}Xr();import*as en from"path";async function Hd(r,e){if(!r){e||(console.error("Usage: typebulb untrust <file.bulb.md>"),process.exit(1));let n=Ma();if(!n.length){console.log("No bulbs are remembered as trusted.");return}console.log("Trusted bulbs (run with fs/AI/server.ts without --trust):");for(let s of n)console.log(` ${s}`);return}let t=en.resolve(r);t.endsWith(".bulb.md")||(console.error("File must have .bulb.md extension"),process.exit(1)),jt(t,e),console.log(e?`Trusted ${en.basename(t)} \u2014 runs with fs / AI / server.ts (no --trust needed).`:`Untrusted ${en.basename(t)} \u2014 runs Restricted.`),console.log(` ${t}`)}xe();import*as wp from"readline";Qs();Ga();var sn={claude:()=>new Wt,pi:()=>new Ht};function hp(){for(let r of Object.values(sn))try{r().ensureWaitSupport()}catch{}}function on(){for(let r of Object.keys(sn))try{if(sn[r]().detectsSelf())return r}catch{}}function mp(r){let e=Zr(),t=new Map(e.filter(s=>sn[s]).map(s=>[s,sn[s]()]));for(let[s,i]of t)if(i.detectsSelf())return{name:s};let n=[...t].filter(([,s])=>s.listSessionFiles(r).length>0).map(([s])=>s);return n.length===1?{name:n[0]}:n.length===0?{name:e[0]}:{ambiguous:n}}import{readFileSync as YS,existsSync as GS}from"fs";import*as dt from"path";import{fileURLToPath as zS}from"url";function gp(){let r=dt.dirname(zS(import.meta.url));for(;!GS(dt.join(r,"package.json"));){let e=dt.dirname(r);if(e===r)break;r=e}return r}function Xs(){return dt.join(gp(),"README.md")}function za(){return dt.join(gp(),"description.md")}function QS(r){return`---
|
|
1263
1259
|
name: typebulb
|
|
@@ -1280,31 +1276,31 @@ ${r.trim()}
|
|
|
1280
1276
|
`);i.length&&i[i.length-1]===""&&i.pop(),s=i.slice(-e.lines).join(`
|
|
1281
1277
|
`)}if(process.stdout.write(s),s&&!s.endsWith(`
|
|
1282
1278
|
`)&&process.stdout.write(`
|
|
1283
|
-
`),e.follow&&e.run===void 0){let i=n.offset,o=setInterval(()=>{let c=Se(t.pid,i);i=c.offset,c.text&&process.stdout.write(c.text)},500),a=()=>{clearInterval(o),process.exit(0)};process.on("SIGINT",a),process.on("SIGTERM",a),await new Promise(()=>{})}}var px=r=>new Promise(e=>setTimeout(e,r));async function Cp(r,e){if(!r){Za(await K(process.cwd()),"Run `typebulb wait <file|pid>` to block until one logs a new line.");return}let t=ec(await K(),r,"wait",process.cwd(),on()),n=t.agent!=null,i=process.env.TYPEBULB_WAIT_SHIM==="1",o=n?30:e.timeoutSec??1800,a=e.match??"",c=Se(t.pid).offset,l=Fa(t.pid,a)??(a?Fa(t.pid):void 0),f=l!==void 0&&l<=c?l:a?0:c,u=Date.now()+o*1e3,d=n?1e4:1e3,p,m=!1,h="",y=0;for(;;){let
|
|
1284
|
-
`);h=A.pop()??"";for(let g of A)g.trim()&&(e.match&&!g.includes(e.match)||(console.log(g),p??=Date.now()+d,n&&(g.includes("] compile error")||g.includes("] runtime error"))&&(m=!0)))}if(m||p&&Date.now()>=p)break;if(!i&&!p&&Date.now()>=u){console.error(`timeout: no ${e.match?`line matching '${e.match}'`:"new output"} from ${an(t)} within ${o}s`),y=2;break}if(!Ua(t.pid)){p||(console.error(`server ${an(t)} (pid ${t.pid}) exited while waiting`),process.exit(3));break}await px(400)}qs(t.pid,f,a),process.exit(y)}async function Rp(r){if(!r){Za(await K(process.cwd()),"Run `typebulb stop <file|pid>` to stop one.");return}let e=ec(await K(),r,"stop",process.cwd(),on());await ft(e.pid),console.log(`Stopped ${an(e)} (pid ${e.pid}, ${e.url}).`)}async function Np(r){let e=process.cwd(),t=r==="agent"?on():void 0,n=r==="global"?await K():r==="bulbs"?await K(e):(await K()).filter(i=>i.agent!=null&&i.cwd!=null&&J(i.cwd)===J(e)&&(!t||i.agent===t)),s=r==="global"?"server":r==="agent"?"mirror":"bulb";if(!n.length){console.log(r==="global"?"No running bulb servers.":`No running ${s}s for this project.`);return}await Promise.all(n.map(i=>ft(i.pid))),console.log(`Stopped ${n.length} ${s}${n.length===1?"":"s"}:`);for(let i of n)console.log(` ${i.url} pid ${i.pid} ${an(i)}`)}xe();import*as _p from"path";async function Ip(r,e,t=0){let n=_p.resolve(r),s=Ks(await K(),n)[0];s||(console.error(`No running server for '${r}'. Start it first: npx typebulb ${r}`),process.exit(1));let i=async()=>{let a=await fetch(`${s.url}/__send`,{method:"POST",headers:{"Content-Type":"text/plain"},body:e??""});return a.ok||(console.error(`send failed: HTTP ${a.status} from ${s.url}/__send`),process.exit(1)),(await a.json().catch(()=>({}))).clients??0},o=0;try{let a=Date.now()+t;do{if(o=await i(),o>0||Date.now()>=a)break;await new Promise(c=>setTimeout(c,150))}while(!0)}catch(a){console.error(`send failed: ${a instanceof Error?a.message:String(a)}`),process.exit(1)}o>0?console.log(`Sent to ${o} page${o===1?"":"s"}.`):t>0?console.log(`No page connected after ${t/1e3}s \u2014 is the bulb open?`):console.log("Sent, but no page is connected yet \u2014 open the bulb and retry.")}xe();import*as Up from"fs/promises";import*as Gt from"path";import{EventEmitter as uc}from"events";Bs();import{Hono as xx}from"hono";import{serve as kx}from"@hono/node-server";import{streamSSE as Ex}from"hono/streaming";import*as mt from"fs/promises";import*as ge from"path";var
|
|
1279
|
+
`),e.follow&&e.run===void 0){let i=n.offset,o=setInterval(()=>{let c=Se(t.pid,i);i=c.offset,c.text&&process.stdout.write(c.text)},500),a=()=>{clearInterval(o),process.exit(0)};process.on("SIGINT",a),process.on("SIGTERM",a),await new Promise(()=>{})}}var px=r=>new Promise(e=>setTimeout(e,r));async function Cp(r,e){if(!r){Za(await K(process.cwd()),"Run `typebulb wait <file|pid>` to block until one logs a new line.");return}let t=ec(await K(),r,"wait",process.cwd(),on()),n=t.agent!=null,i=process.env.TYPEBULB_WAIT_SHIM==="1",o=n?30:e.timeoutSec??1800,a=e.match??"",c=Se(t.pid).offset,l=Fa(t.pid,a)??(a?Fa(t.pid):void 0),f=l!==void 0&&l<=c?l:a?0:c,u=Date.now()+o*1e3,d=n?1e4:1e3,p,m=!1,h="",y=0;for(;;){let x=Se(t.pid,f);if(f=x.offset,x.text){h+=x.text;let A=h.split(`
|
|
1280
|
+
`);h=A.pop()??"";for(let g of A)g.trim()&&(e.match&&!g.includes(e.match)||(console.log(g),p??=Date.now()+d,n&&(g.includes("] compile error")||g.includes("] runtime error"))&&(m=!0)))}if(m||p&&Date.now()>=p)break;if(!i&&!p&&Date.now()>=u){console.error(`timeout: no ${e.match?`line matching '${e.match}'`:"new output"} from ${an(t)} within ${o}s`),y=2;break}if(!Ua(t.pid)){p||(console.error(`server ${an(t)} (pid ${t.pid}) exited while waiting`),process.exit(3));break}await px(400)}qs(t.pid,f,a),process.exit(y)}async function Rp(r){if(!r){Za(await K(process.cwd()),"Run `typebulb stop <file|pid>` to stop one.");return}let e=ec(await K(),r,"stop",process.cwd(),on());await ft(e.pid),console.log(`Stopped ${an(e)} (pid ${e.pid}, ${e.url}).`)}async function Np(r){let e=process.cwd(),t=r==="agent"?on():void 0,n=r==="global"?await K():r==="bulbs"?await K(e):(await K()).filter(i=>i.agent!=null&&i.cwd!=null&&J(i.cwd)===J(e)&&(!t||i.agent===t)),s=r==="global"?"server":r==="agent"?"mirror":"bulb";if(!n.length){console.log(r==="global"?"No running bulb servers.":`No running ${s}s for this project.`);return}await Promise.all(n.map(i=>ft(i.pid))),console.log(`Stopped ${n.length} ${s}${n.length===1?"":"s"}:`);for(let i of n)console.log(` ${i.url} pid ${i.pid} ${an(i)}`)}xe();import*as _p from"path";async function Ip(r,e,t=0){let n=_p.resolve(r),s=Ks(await K(),n)[0];s||(console.error(`No running server for '${r}'. Start it first: npx typebulb ${r}`),process.exit(1));let i=async()=>{let a=await fetch(`${s.url}/__send`,{method:"POST",headers:{"Content-Type":"text/plain"},body:e??""});return a.ok||(console.error(`send failed: HTTP ${a.status} from ${s.url}/__send`),process.exit(1)),(await a.json().catch(()=>({}))).clients??0},o=0;try{let a=Date.now()+t;do{if(o=await i(),o>0||Date.now()>=a)break;await new Promise(c=>setTimeout(c,150))}while(!0)}catch(a){console.error(`send failed: ${a instanceof Error?a.message:String(a)}`),process.exit(1)}o>0?console.log(`Sent to ${o} page${o===1?"":"s"}.`):t>0?console.log(`No page connected after ${t/1e3}s \u2014 is the bulb open?`):console.log("Sent, but no page is connected yet \u2014 open the bulb and retry.")}xe();import*as Up from"fs/promises";import*as Gt from"path";import{EventEmitter as uc}from"events";Bs();import{Hono as xx}from"hono";import{serve as kx}from"@hono/node-server";import{streamSSE as Ex}from"hono/streaming";import*as mt from"fs/promises";import*as ge from"path";var se=class extends Error{constructor(e,t="unknown",n=!1){super(e),this.code=t,this.retryable=n}},oe=class{getPath(e,t){return this.path}parseStreamChunk(e){return this.checkAndThrowError(e),this.parseProviderStreamChunk(e)}isReasoningEnabled(e){return e?.effort!==void 0}extractSystemMessages(e,t=`
|
|
1285
1281
|
|
|
1286
|
-
`){let n=e.filter(s=>s.role==="system").map(s=>s.content);return{system:n.length?n.join(t):void 0,conversationMessages:e.filter(s=>s.role!=="system")}}parseJsonError(e,t,n=!1){if(!e)return{message:`HTTP ${t}`};try{let s=JSON.parse(e);if(s.error&&typeof s.error=="object"){let i={message:s.error.message||`HTTP ${t}`,type:s.error.type};return n&&(i.code=s.error.code),i}return s.message?{message:s.message}:{message:e}}catch{return{message:e}}}checkAndThrowError(e){if(typeof e!="object"||e===null)return;let t=e;if(t.type==="error"&&"message"in t){let n=t.code||"unknown";throw new
|
|
1287
|
-
`)),!t&&s.type==="message"&&s.content&&(t=s.content.filter(i=>i.type==="output_text").map(i=>i.text).join(""));return{text:t,reasoning:n}}parseProviderStreamChunk(e){if(!this.isResponsesApiEvent(e))return null;switch(e.type){case"error":return null;case"response.failed":{let s=e.response?.error,i=s?.message||"Response failed",o=s?.code==="insufficient_quota"||s?.code==="rate_limit_exceeded";throw new
|
|
1282
|
+
`){let n=e.filter(s=>s.role==="system").map(s=>s.content);return{system:n.length?n.join(t):void 0,conversationMessages:e.filter(s=>s.role!=="system")}}parseJsonError(e,t,n=!1){if(!e)return{message:`HTTP ${t}`};try{let s=JSON.parse(e);if(s.error&&typeof s.error=="object"){let i={message:s.error.message||`HTTP ${t}`,type:s.error.type};return n&&(i.code=s.error.code),i}return s.message?{message:s.message}:{message:e}}catch{return{message:e}}}checkAndThrowError(e){if(typeof e!="object"||e===null)return;let t=e;if(t.type==="error"&&"message"in t){let n=t.code||"unknown";throw new se(t.message,n,!!t.retryable)}if(t.error)throw new se(this.extractErrorMessage(t.error))}extractErrorMessage(e){if(typeof e=="string")try{let t=JSON.parse(e);return t.error?.message||t.message||e}catch{return e}return typeof e=="object"&&e!==null?e.message||JSON.stringify(e):`${this.providerName} returned an error`}};var ti=class extends oe{constructor(){super(...arguments),this.providerName="OpenAI",this.defaultBaseUrl="https://api.openai.com",this.path="/v1/responses",this.effortMap={1:"low",2:"medium",3:"high"}}buildHeaders(e){return{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"}}buildPayload(e,t,n,s){let i=this.convertMessagesToInput(e),o={model:t,input:i,stream:s};return n?.webSearch!==!1&&(o.tools=[{type:"web_search"}]),this.isReasoningEnabled(n)&&(o.reasoning={effort:this.effortMap[n.effort],summary:"auto"}),o}parseError(e,t){return this.parseJsonError(e,t,!0)}parseNonStreamingResponse(e){if(!this.isResponsesApiResponse(e))return{text:""};let t=e.output_text||"",n;if(e.output&&Array.isArray(e.output))for(let s of e.output)s.type==="reasoning"&&s.summary&&(n=s.summary.map(i=>i.text).join(`
|
|
1283
|
+
`)),!t&&s.type==="message"&&s.content&&(t=s.content.filter(i=>i.type==="output_text").map(i=>i.text).join(""));return{text:t,reasoning:n}}parseProviderStreamChunk(e){if(!this.isResponsesApiEvent(e))return null;switch(e.type){case"error":return null;case"response.failed":{let s=e.response?.error,i=s?.message||"Response failed",o=s?.code==="insufficient_quota"||s?.code==="rate_limit_exceeded";throw new se(i,o?"rate_limit":"unknown",o)}case"response.output_text.delta":return{text:e.delta};case"response.reasoning_summary_text.delta":return{reasoning:e.delta};case"response.created":case"response.in_progress":case"response.output_item.added":case"response.output_item.done":case"response.content_part.added":case"response.content_part.done":case"response.output_text.done":case"response.output_text.annotation.added":case"response.reasoning_summary_text.done":case"response.completed":case"response.web_search_call.in_progress":case"response.web_search_call.searching":case"response.web_search_call.completed":return null;default:return null}}convertMessagesToInput(e){return e.map(t=>t.role==="system"?`System: ${t.content}`:t.role==="user"?`User: ${t.content}`:t.role==="assistant"?`Assistant: ${t.content}`:t.content).join(`
|
|
1288
1284
|
|
|
1289
|
-
`)}isResponsesApiEvent(e){return typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string"}isResponsesApiResponse(e){return typeof e=="object"&&e!==null&&e.object==="response"}};var ri=class extends
|
|
1285
|
+
`)}isResponsesApiEvent(e){return typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string"}isResponsesApiResponse(e){return typeof e=="object"&&e!==null&&e.object==="response"}};var ri=class extends oe{constructor(){super(...arguments),this.providerName="OpenRouter",this.defaultBaseUrl="https://openrouter.ai",this.path="/api/v1/chat/completions",this.effortMap={1:"low",2:"medium",3:"high"}}buildHeaders(e,t){let n={Authorization:`Bearer ${e}`,"x-api-key":e,"Content-Type":"application/json",Accept:"application/json","X-Title":"Typebulb"};return t&&(n["HTTP-Referer"]=t,n.Referer=t,n.Origin=t),n}buildPayload(e,t,n,s){let i={model:t,messages:e,stream:s};return n?.webSearch===!0&&(i.plugins=[{id:"web"}]),this.isReasoningEnabled(n)&&(i.reasoning={effort:this.effortMap[n.effort]}),i}parseError(e,t){return this.parseJsonError(e,t,!0)}parseNonStreamingResponse(e){if(!this.hasChoices(e))return{text:""};let t=e,n=t.choices[0],s=n?.message?.content??n?.text??"",i=n?.message?.reasoning??t.reasoning;return{text:s,reasoning:i}}parseProviderStreamChunk(e){if(!this.hasChoices(e))return null;let t=e.choices[0];if(!t)return null;let n=t.delta||t.message;if(!n)return null;let s=n.content||void 0,i=n.reasoning||void 0;return!s&&!i?null:{text:s,reasoning:i}}hasChoices(e){return typeof e=="object"&&e!==null&&"choices"in e&&Array.isArray(e.choices)}};var ni=class extends oe{constructor(){super(...arguments),this.providerName="Anthropic",this.defaultBaseUrl="https://api.anthropic.com",this.path="/v1/messages"}buildHeaders(e){return{"x-api-key":e,"anthropic-version":"2023-06-01","Content-Type":"application/json",Accept:"application/json"}}buildPayload(e,t,n,s){let{system:i,conversationMessages:o}=this.extractSystemMessages(e),a={model:t,max_tokens:this.getMaxTokens(t),messages:this.withLastMessageCached(o),stream:s};if(n?.webSearch!==!1&&(a.tools=[{type:"web_search_20250305",name:"web_search"}]),i&&(a.system=[{type:"text",text:i,cache_control:{type:"ephemeral"}}]),this.isReasoningEnabled(n)){let c=n.effort;if(this.isModernModel(t)){let l={1:"low",2:"medium",3:"high"};a.thinking={type:"adaptive",display:"summarized"},a.output_config={effort:l[c]}}else{let l={1:2048,2:4096,3:8192};a.thinking={type:"enabled",budget_tokens:l[c]}}}return a}parseError(e,t){return this.parseJsonError(e,t)}parseNonStreamingResponse(e){if(!this.isAnthropicResponse(e))return{text:""};let t=e.content.filter(s=>s.type==="text").map(s=>s.text).join(""),n=e.content.filter(s=>s.type==="thinking").map(s=>s.thinking).join(`
|
|
1290
1286
|
|
|
1291
|
-
`);return{text:t,reasoning:n||void 0}}parseProviderStreamChunk(e){if(!this.isAnthropicEvent(e))return null;switch(e.type){case"content_block_delta":return e.delta.type==="text_delta"?{text:e.delta.text||""}:e.delta.type==="thinking_delta"?{reasoning:e.delta.thinking||""}:null;case"message_start":case"content_block_start":case"content_block_stop":case"message_delta":case"message_stop":case"ping":return null;default:return null}}withLastMessageCached(e){let t=e.length-1;return e.map((n,s)=>s===t?{role:n.role,content:[{type:"text",text:n.content,cache_control:{type:"ephemeral"}}]}:n)}isAnthropicResponse(e){return typeof e=="object"&&e!==null&&e.type==="message"&&Array.isArray(e.content)}isAnthropicEvent(e){return typeof e=="object"&&e!==null&&"type"in e}isModernModel(e){let t=e.match(/^claude-[a-z]+-(\d+)(?:-(\d+))?/i);if(!t)return!1;let n=+t[1],s=t[2]?+t[2]:0;return n>4||n===4&&s>=6}getMaxTokens(e){return this.isModernModel(e)?64e3:32e3}};var si=class extends
|
|
1287
|
+
`);return{text:t,reasoning:n||void 0}}parseProviderStreamChunk(e){if(!this.isAnthropicEvent(e))return null;switch(e.type){case"content_block_delta":return e.delta.type==="text_delta"?{text:e.delta.text||""}:e.delta.type==="thinking_delta"?{reasoning:e.delta.thinking||""}:null;case"message_start":case"content_block_start":case"content_block_stop":case"message_delta":case"message_stop":case"ping":return null;default:return null}}withLastMessageCached(e){let t=e.length-1;return e.map((n,s)=>s===t?{role:n.role,content:[{type:"text",text:n.content,cache_control:{type:"ephemeral"}}]}:n)}isAnthropicResponse(e){return typeof e=="object"&&e!==null&&e.type==="message"&&Array.isArray(e.content)}isAnthropicEvent(e){return typeof e=="object"&&e!==null&&"type"in e}isModernModel(e){let t=e.match(/^claude-[a-z]+-(\d+)(?:-(\d+))?/i);if(!t)return!1;let n=+t[1],s=t[2]?+t[2]:0;return n>4||n===4&&s>=6}getMaxTokens(e){return this.isModernModel(e)?64e3:32e3}};var si=class extends oe{constructor(){super(...arguments),this.providerName="Gemini",this.defaultBaseUrl="https://generativelanguage.googleapis.com",this.path="/v1beta/models"}getPath(e,t){return`/v1beta/models/${e}:${t?"streamGenerateContent":"generateContent"}${t?"?alt=sse":""}`}buildHeaders(e){return{"Content-Type":"application/json","x-goog-api-key":e}}buildPayload(e,t,n,s){let{system:i,conversationMessages:o}=this.extractSystemMessages(e,`
|
|
1292
1288
|
`),c={contents:o.map(l=>({role:l.role==="assistant"?"model":"user",parts:[{text:l.content}]}))};if(n?.webSearch!==!1&&(c.tools=[{google_search:{}}]),i&&(c.systemInstruction={role:"system",parts:[{text:i}]}),this.isReasoningEnabled(n)){let l={1:1024,2:8192,3:-1};c.generationConfig={thinkingConfig:{includeThoughts:!0,thinkingBudget:l[n.effort]}}}return c}parseError(e,t){if(!e)return{message:`HTTP ${t}`};try{let n=JSON.parse(e),s=Array.isArray(n)?n[0]?.error:n?.error;return s&&typeof s=="object"?{message:(s.message||`HTTP ${t}`).split(`
|
|
1293
|
-
`)[0],type:s.status,code:s.code?.toString()}:n.message?{message:n.message}:{message:e}}catch{return{message:e}}}parseNonStreamingResponse(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return{text:"",status:"failed",error:"Invalid response format"};let t=this.extractParts(e).text||"",n=e.candidates?.[0]?.finishReason,s="complete";return n==="MAX_TOKENS"?s="interrupted":(n==="SAFETY"||n==="RECITATION")&&(s="failed"),{text:t,status:s}}parseProviderStreamChunk(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return null;let t=this.extractParts(e);return t.text||t.reasoning?t:null}isGeminiResponse(e){return typeof e=="object"&&e!==null&&"candidates"in e&&Array.isArray(e.candidates)}extractParts(e){let t=e.candidates?.[0]?.content?.parts;if(!t)return{};let n="",s="";for(let i of t)i.text&&(i.thought?s+=i.text:n+=i.text);return{text:n||void 0,reasoning:s||void 0}}checkGeminiError(e){if(typeof e=="object"&&e!==null&&"error"in e){let t=e.error,n;if(typeof t=="string")n=t;else if(typeof t=="object"&&t!==null){let s=t;n=s.message||s.status||"Gemini returned an error"}else n="Gemini returned an error";throw new
|
|
1289
|
+
`)[0],type:s.status,code:s.code?.toString()}:n.message?{message:n.message}:{message:e}}catch{return{message:e}}}parseNonStreamingResponse(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return{text:"",status:"failed",error:"Invalid response format"};let t=this.extractParts(e).text||"",n=e.candidates?.[0]?.finishReason,s="complete";return n==="MAX_TOKENS"?s="interrupted":(n==="SAFETY"||n==="RECITATION")&&(s="failed"),{text:t,status:s}}parseProviderStreamChunk(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return null;let t=this.extractParts(e);return t.text||t.reasoning?t:null}isGeminiResponse(e){return typeof e=="object"&&e!==null&&"candidates"in e&&Array.isArray(e.candidates)}extractParts(e){let t=e.candidates?.[0]?.content?.parts;if(!t)return{};let n="",s="";for(let i of t)i.text&&(i.thought?s+=i.text:n+=i.text);return{text:n||void 0,reasoning:s||void 0}}checkGeminiError(e){if(typeof e=="object"&&e!==null&&"error"in e){let t=e.error,n;if(typeof t=="string")n=t;else if(typeof t=="object"&&t!==null){let s=t;n=s.message||s.status||"Gemini returned an error"}else n="Gemini returned an error";throw new se(n)}if(this.isGeminiResponse(e)&&e.promptFeedback?.blockReason){let t=e.promptFeedback.blockReason;throw new se(`Prompt blocked: ${t}`)}}};var ii=class extends oe{constructor(){super(...arguments),this.providerName="Ollama",this.defaultBaseUrl="http://localhost:11434",this.path="/chat/completions"}buildHeaders(e){let t={"Content-Type":"application/json",Accept:"application/json"};return e&&(t.Authorization=`Bearer ${e}`),t}buildPayload(e,t,n,s){return{model:t,messages:e,stream:s}}parseError(e,t){return this.parseJsonError(e,t,!0)}parseNonStreamingResponse(e){if(!this.hasChoices(e))return{text:""};let n=e.choices[0]?.message,s=n?.content??"",i=n?.reasoning??n?.reasoning_content;return{text:s,reasoning:i}}parseProviderStreamChunk(e){if(!this.hasChoices(e))return null;let t=e.choices[0];if(!t)return null;let n=t.delta||t.message;if(!n)return null;let s=n.content||void 0,i=n.reasoning||n.reasoning_content||void 0;return!s&&!i?null:{text:s,reasoning:i}}hasChoices(e){return typeof e=="object"&&e!==null&&"choices"in e&&Array.isArray(e.choices)}};var Lp=new ii,hx=new Map([["openai",new ti],["openrouter",new ri],["anthropic",new ni],["gemini",new si],["ollama",Lp],["openai-compat",Lp]]);function ht(r){let e=hx.get(r);if(!e)throw new Error(`Unsupported protocol: ${r}`);return e}function mx(r,e){return r.replace(/\/+$/,"")+(e.startsWith("/")?e:`/${e}`)}async function tc(r,e){let t=ht(r.protocol),n=t.getPath(e.model,e.stream),s=mx(r.baseUrl,n),i=t.buildHeaders(r.apiKey,e.origin),o=t.buildPayload(e.messages,e.model,{effort:e.effort,webSearch:e.webSearch},e.stream);return e.modifyPayload?.(o),fetch(s,{method:"POST",headers:i,body:JSON.stringify(o),signal:e.signal})}async function rc(r,e){let t=ht(e),n=await r.text().catch(()=>""),{message:s}=t.parseError(n,r.status),i=r.status,o="unknown";return i===429?o="rate_limit":i===413&&(o="context_exceeded"),{code:o,message:s,retryable:i===429}}function $p(r){let e=r.indexOf(`\r
|
|
1294
1290
|
\r
|
|
1295
1291
|
`),t=r.indexOf(`
|
|
1296
1292
|
|
|
1297
1293
|
`);return e!==-1&&(t===-1||e<t)?{pos:e,len:4}:t!==-1?{pos:t,len:2}:{pos:-1,len:0}}function nc(r){let t=r.split(/\r?\n/).filter(s=>s.startsWith("data:"));if(!t.length)return null;let n=t.map(s=>s.replace(/^data:\s?/,"")).join(`
|
|
1298
|
-
`).trim();if(!n)return null;if(n==="[DONE]")return"done";try{return JSON.parse(n)}catch{return null}}async function*Mp(r,e){let t=new TextDecoder,n="";try{for(;;){if(e?.aborted)return;let{done:s,value:i}=await r.read();if(s){if(n.trim()){let c=nc(n);c!==null&&c!=="done"&&(yield c)}return}n+=t.decode(i,{stream:!0});let{pos:o,len:a}=$p(n);for(;o!==-1;){let c=n.slice(0,o);n=n.slice(o+a);let l=nc(c);if(l==="done")return;l!==null&&(yield l),{pos:o,len:a}=$p(n)}}}finally{try{await r.cancel()}catch{}}}async function sc(r,e){if(!r.body)throw new Error("Response body is missing");let t="";for await(let n of oi(r,e))n.kind==="text"&&(t+=n.text);return t}async function*oi(r,e){let t=e??(r.headers.get("X-Provider-Protocol")||"openai"),n=ht(t);if(!r.body)return;let s=r.body.getReader();for await(let i of Mp(s)){let o=n.parseStreamChunk(i);o?.reasoning&&(yield{kind:"reasoning",text:o.reasoning}),o?.text&&(yield{kind:"text",text:o.text})}}import*as ic from"fs/promises";import*as cn from"path";var ai=class{async get(e){let t=pe(e),n=cn.join(Gr,t+".bin"),s=cn.join(Gr,t+".json");try{let[i,o]=await Promise.all([ic.readFile(n),ic.readFile(s,"utf8")]),a=JSON.parse(o);return{body:i,contentType:a.contentType,cacheControl:a.cacheControl}}catch{return}}async set(e,t){await q();let n=pe(e),s=cn.join(Gr,n+".bin"),i=cn.join(Gr,n+".json"),o={url:e,contentType:t.contentType,cacheControl:t.cacheControl};await Promise.all([ce(s,t.body),ce(i,JSON.stringify(o))])}};xe();ei();import{stream as gx}from"hono/streaming";var yx="X-TB-Stream";function bx(r){return r instanceof
|
|
1299
|
-
${l}`:"";return g.text(`Forbidden: this capability requires --trust.${P}`,403)}await b()},m=async(g,b)=>{let v=g.req.header("sec-fetch-site");if(v){if(v!=="same-origin")return g.text(`Forbidden: ${v} request`,403)}else{let
|
|
1300
|
-
${p.name}`),console.log(` ${
|
|
1294
|
+
`).trim();if(!n)return null;if(n==="[DONE]")return"done";try{return JSON.parse(n)}catch{return null}}async function*Mp(r,e){let t=new TextDecoder,n="";try{for(;;){if(e?.aborted)return;let{done:s,value:i}=await r.read();if(s){if(n.trim()){let c=nc(n);c!==null&&c!=="done"&&(yield c)}return}n+=t.decode(i,{stream:!0});let{pos:o,len:a}=$p(n);for(;o!==-1;){let c=n.slice(0,o);n=n.slice(o+a);let l=nc(c);if(l==="done")return;l!==null&&(yield l),{pos:o,len:a}=$p(n)}}}finally{try{await r.cancel()}catch{}}}async function sc(r,e){if(!r.body)throw new Error("Response body is missing");let t="";for await(let n of oi(r,e))n.kind==="text"&&(t+=n.text);return t}async function*oi(r,e){let t=e??(r.headers.get("X-Provider-Protocol")||"openai"),n=ht(t);if(!r.body)return;let s=r.body.getReader();for await(let i of Mp(s)){let o=n.parseStreamChunk(i);o?.reasoning&&(yield{kind:"reasoning",text:o.reasoning}),o?.text&&(yield{kind:"text",text:o.text})}}import*as ic from"fs/promises";import*as cn from"path";var ai=class{async get(e){let t=pe(e),n=cn.join(Gr,t+".bin"),s=cn.join(Gr,t+".json");try{let[i,o]=await Promise.all([ic.readFile(n),ic.readFile(s,"utf8")]),a=JSON.parse(o);return{body:i,contentType:a.contentType,cacheControl:a.cacheControl}}catch{return}}async set(e,t){await q();let n=pe(e),s=cn.join(Gr,n+".bin"),i=cn.join(Gr,n+".json"),o={url:e,contentType:t.contentType,cacheControl:t.cacheControl};await Promise.all([ce(s,t.body),ce(i,JSON.stringify(o))])}};xe();ei();import{stream as gx}from"hono/streaming";var yx="X-TB-Stream";function bx(r){return r instanceof se?{message:r.message,code:r.code,retryable:r.retryable}:{message:r instanceof Error?r.message:"Unknown error",code:"unknown",retryable:!1}}function oc(r,e){return r.header("Content-Type","application/x-ndjson; charset=utf-8"),r.header("Cache-Control","no-cache"),r.header(yx,"1"),gx(r,async t=>{let n=e[Symbol.asyncIterator]();t.onAbort(()=>{n.return?.()});try{for(;;){let{done:s,value:i}=await n.next();if(s)break;await t.writeln(JSON.stringify({type:"chunk",value:i}))}}catch(s){await t.writeln(JSON.stringify({type:"error",error:bx(s)}))}finally{try{await n.return?.()}catch{}}})}var ac={log:(...r)=>console.log(...r)};function ci(r,e){let t=r?.[e]??ac[e];return typeof t=="function"?t:void 0}function li(r){return r.constructor?.name==="AsyncGeneratorFunction"}var wx=/^\/(v\d+\/|stable\/|node\/|gh\/|@[^/]+\/[^@/]+@|[^@/]+@)/,vx=/[?&]target=/,Sx=/^\/(?:@[^/]+\/)?[^/@]+\/[^/]+/;function Dp(r,e=""){return wx.test(r)?!0:Sx.test(r)&&vx.test(e)}var jp="127.0.0.1",Ax=new Set(["localhost","127.0.0.1","::1"]);function Tx(r){if(r)try{return new URL(r.includes("://")?r:`http://${r}`).hostname}catch{return}}function Px(r){let e=Tx(r);return!!e&&Ax.has(e)}function Ox(r,e){if(!e)return!1;try{return new URL(r).host===e}catch{return!1}}function ui(r){return r instanceof Error?r.message:"Unknown error"}async function fi(r){let{getHtml:e,basePath:t,port:n,reloadEmitter:s,messageEmitter:i,getServerExports:o,localOverride:a,trusted:c=!1,trustHint:l,staticAssets:f}=r,u=new xx;u.use("*",async(g,b)=>{if(!Px(g.req.header("host")))return g.text("Forbidden: untrusted Host",403);await b()}),u.use("*",async(g,b)=>{await b(),g.res.headers.set("Cross-Origin-Opener-Policy","same-origin"),g.res.headers.set("Cross-Origin-Embedder-Policy","credentialless")});let d=["/__fs/*","/__api/*","/__ai"],p=async(g,b)=>{if(!c){let v=new URL(g.req.url).pathname,S=v.startsWith("/__fs")?"the filesystem":v==="/__ai"?"AI (your API keys)":"server-side code (server.ts)";tp(process.pid,S);let P=l?`
|
|
1295
|
+
${l}`:"";return g.text(`Forbidden: this capability requires --trust.${P}`,403)}await b()},m=async(g,b)=>{let v=g.req.header("sec-fetch-site");if(v){if(v!=="same-origin")return g.text(`Forbidden: ${v} request`,403)}else{let S=g.req.header("origin");if(S&&!Ox(S,g.req.header("host")))return g.text("Forbidden: cross-origin request",403)}await b()};for(let g of d)u.use(g,p),u.use(g,m);u.use("/__log",m),u.post("/__log",async g=>{try{let{args:b}=await g.req.json();console.log(...b||[])}catch{}return g.json({ok:!0})}),i&&(u.use("/__send",m),u.post("/__send",async g=>{let b="";try{b=await g.req.text()}catch{}let v=i.listenerCount("message");return i.emit("message",b),g.json({clients:v})})),u.get("/",g=>g.html(e())),u.post("/__fs/read",async g=>{try{let{path:b}=await g.req.json(),v=lc(b,t),S=await mt.readFile(v);return new Response(new Uint8Array(S),{headers:{"Content-Type":"application/octet-stream"}})}catch(b){let v=ui(b);return g.json({error:v},400)}}),u.post("/__fs/write",async g=>{try{let b=g.req.query("path");if(!b)return g.json({error:"Missing path"},400);let v=lc(b,t);return await mt.mkdir(ge.dirname(v),{recursive:!0}),await mt.writeFile(v,Buffer.from(await g.req.arrayBuffer())),g.json({success:!0})}catch(b){let v=ui(b);return g.json({error:v},400)}}),u.post("/__api/:name",async g=>{try{let b=g.req.param("name"),v=ci(o?.(),b);if(!v)return g.json({error:`API function '${b}' not found`},404);let{args:S}=await g.req.json();if(li(v))return oc(g,v(...S||[]));let P=await v(...S||[]);return g.json({result:P})}catch(b){let v=ui(b);return g.json({error:v},500)}}),u.post("/__ai",async g=>{try{let{messages:b,system:v,effort:S,provider:P,model:k,webSearch:L,stream:Q}=await g.req.json();if(!b||!Array.isArray(b)||b.length===0)return g.json({message:"messages array is required",code:"unknown",retryable:!1},400);let V=Cx(P,k);if(typeof V=="string")return g.json({message:V,code:"unknown",retryable:!1},400);let B=[...v?[{role:"system",content:v}]:[],...b.map(O=>({role:O.role,content:O.content}))],w=await tc(V,{model:V.model,messages:B,stream:!0,effort:S&&S>0?S:void 0,webSearch:L??!0});if(!w.ok){let O=await rc(w,V.protocol);return g.json(O,w.status)}if(Q)return oc(g,oi(w,V.protocol));let E=await sc(w,V.protocol);return E||console.warn("[tb.ai] Empty response from provider"),g.json({text:E})}catch(b){if(b instanceof se)return g.json({message:b.message,code:b.code,retryable:b.retryable},500);let v=ui(b);return g.json({message:v,code:"unknown",retryable:!1},500)}}),u.get("/__models",async g=>{try{let b=await pt();return g.json(b)}catch{return g.json([],200)}});let h=["esm.sh","unpkg.com","cdn.jsdelivr.net","cdnjs.cloudflare.com"],y=new ai;u.get("/proxy/*",async g=>{let b=new URL(g.req.url),S=(b.pathname+b.search).slice(7),P=S.lastIndexOf("https://");return P===-1?g.text("Invalid proxy URL",400):x(g,S.slice(P))}),a&&Bp(u,`/local/${a.name}/`,a.serveDir),f&&Bp(u,f.mount,f.dir);async function x(g,b){let v;try{v=new URL(b)}catch{return g.text("Invalid URL",400)}if(v.protocol!=="https:")return g.text("HTTPS only",400);if(!h.includes(v.hostname))return g.text("Host not allowed",403);let S=await y.get(b);if(S)return new Response(S.body,{status:200,headers:cc(S.contentType,S.cacheControl)});try{let P=await fetch(b,{headers:{Accept:g.req.header("Accept")||"*/*"},redirect:"follow"});if(!P.ok)return g.text(`Upstream ${P.status}`,P.status);let k=P.headers.get("Content-Type")||void 0,L=P.headers.get("Cache-Control")||void 0;if(P.body){let[Q,V]=P.body.tee();return(async()=>{try{let B=await new Response(V).arrayBuffer();await y.set(b,{body:Buffer.from(B),contentType:k,cacheControl:L})}catch{}})(),new Response(Q,{status:P.status,headers:cc(k,L)})}return new Response(null,{status:P.status,headers:cc(k,L)})}catch(P){return g.text(`Proxy fetch failed: ${P instanceof Error?P.message:P}`,502)}}(s||i)&&u.get("/__reload",g=>Ex(g,async b=>{let v=()=>{b.writeSSE({event:"reload",data:""})},S=P=>{b.writeSSE({event:"message",data:JSON.stringify(P)})};for(s?.on("reload",v),i?.on("message",S),b.onAbort(()=>{s?.removeListener("reload",v),i?.removeListener("message",S)});;)await b.sleep(3e4)})),u.notFound(async g=>{if(g.req.method!=="GET")return g.text("Not Found",404);let b=new URL(g.req.url);return Dp(b.pathname,b.search)?x(g,"https://esm.sh"+b.pathname+b.search):g.text("Not Found",404)});let A=kx({fetch:u.fetch,port:n,hostname:jp});return{port:n,close:()=>A.close()}}function Cx(r,e){let t=r??process.env.TB_AI_PROVIDER,n=e??process.env.TB_AI_MODEL;if(!t)return"No provider specified. Set TB_AI_PROVIDER in your .env file or pass provider in the tb.ai() call.";if(!n)return"No model specified. Set TB_AI_MODEL in your .env file or pass model in the tb.ai() call.";let s;try{s=ht(t)}catch{return`Unknown provider '${t}'.`}if(t==="ollama")return{apiKey:"",baseUrl:`${Xa(process.env.OLLAMA_HOST??s.defaultBaseUrl)}/v1`,protocol:t,model:n,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:n,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=Yt[t];if(!i)return`Unknown provider '${t}'.`;let o=process.env[i];return o?{apiKey:o,baseUrl:s.defaultBaseUrl,protocol:t,model:n,isFreeModel:!1}:`No API key for '${t}'. Set ${i} in your .env file.`}function cc(r,e){let t=new Headers;return r&&t.set("Content-Type",r),e&&t.set("Cache-Control",e),t.set("Access-Control-Allow-Origin","*"),t.set("Cross-Origin-Resource-Policy","cross-origin"),t}function Bp(r,e,t){r.get(`${e}*`,async n=>{let{pathname:s}=new URL(n.req.url);if(!s.startsWith(e))return n.text("Not Found",404);let i=decodeURIComponent(s.slice(e.length));try{let o=lc(i,t),a=await mt.readFile(o);return new Response(a,{headers:{"Content-Type":Rx(o)}})}catch{return n.text("Not Found",404)}})}function Rx(r){switch(ge.extname(r).toLowerCase()){case".js":case".mjs":return"text/javascript";case".wasm":return"application/wasm";case".json":case".map":return"application/json";default:return"application/octet-stream"}}function lc(r,e){let t=ge.resolve(e,r),n=ge.normalize(e),s=ge.normalize(t);if(s!==n&&!s.startsWith(n+ge.sep))throw new Error("Path traversal detected - access denied");return t}async function ln(r){let e=await import("net");return new Promise(t=>{let n=e.createServer();n.listen(r,jp,()=>{let s=n.address(),i=typeof s=="object"&&s?s.port:r;n.close(()=>t(i))}),n.on("error",()=>{t(ln(r+1))})})}import Fp from"chokidar";var qp={persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50}};function di(r){let{bulbPath:e,emitter:t,debounceMs:n=150}=r,s,i=Fp.watch(e,qp);return i.on("change",()=>{s&&clearTimeout(s),s=setTimeout(()=>t.emit("reload"),n)}),()=>{s&&clearTimeout(s),i.close()}}function pi(r){let{dir:e,onChange:t,debounceMs:n=150}=r,s,i=Fp.watch(e,qp);return i.on("all",()=>{s&&clearTimeout(s),s=setTimeout(t,n)}),()=>{s&&clearTimeout(s),i.close()}}xe();async function Jp(r,e,t,n,s){let i=process.cwd(),o=Us(process.pid),a=e.watch?new uc:void 0,c=new uc;c.setMaxListeners(0);let l=Ee(e.mode),f=await Ka(r);f.length&&console.log(`Replacing the running server for this bulb (pid ${f.map(S=>S.pid).join(", ")})`);let u=1;console.log(qa(u)),console.log(`Loading ${Gt.basename(r)}...`);let{html:d,bulb:p,serverExports:m}=await Ia(r,e.watch,e.trust,n,s);Ge(l,r,p.server);let h=await ln(e.port),y=await fi({getHtml:()=>d,basePath:i,port:h,reloadEmitter:a,messageEmitter:c,getServerExports:()=>m,localOverride:n?{name:n.name,serveDir:n.serveDir}:void 0,trusted:e.trust,trustHint:t}),x=`http://localhost:${h}`,A=e.trust?void 0:Ut(p);await Js({pid:process.pid,port:h,url:x,file:r,cwd:process.cwd(),startedAt:Date.now(),trust:e.trust,predicted:A}),console.log(`
|
|
1296
|
+
${p.name}`),console.log(` ${x}`),h!==e.port&&console.log(` (port ${e.port} was busy)`),e.trust?console.log(" trust: granted (filesystem, AI, server.ts enabled)"):console.log(A?` trust: restricted \u2014 this bulb appears to use ${A}; re-run with --trust to enable it:
|
|
1301
1297
|
${t}
|
|
1302
1298
|
`:` trust: restricted \u2014 re-run with --trust to enable filesystem / AI / server.ts
|
|
1303
1299
|
`),e.watch&&console.log(` Watching for changes...
|
|
1304
|
-
`);let g,b;if(e.watch&&a){let
|
|
1305
|
-
`),a.emit("reload")}})}}e.open&&(f.some(
|
|
1306
|
-
`):await Ft(
|
|
1307
|
-
Shutting down...`),y.close(),g?.(),b?.(),o(),await tn(process.pid);let
|
|
1300
|
+
`);let g,b;if(e.watch&&a){let S=new uc;if(S.on("reload",async()=>{try{console.log("Recompiling...");let P=await Ia(r,!0,e.trust,n,s);d=P.html,m=P.serverExports,u++,console.log(qa(u)),a.emit("reload")}catch(P){console.error("Compile error:",P)}}),g=di({bulbPath:r,emitter:S}),n){let{name:P,serveDir:k}=n;b=pi({dir:k,onChange:()=>{console.log(`Local package '${P}' changed. Browser reloading...
|
|
1301
|
+
`),a.emit("reload")}})}}e.open&&(f.some(S=>S.port===h)?console.log(` Reusing the open browser tab.
|
|
1302
|
+
`):await Ft(x));let v=async()=>{console.log(`
|
|
1303
|
+
Shutting down...`),y.close(),g?.(),b?.(),o(),await tn(process.pid);let S=Gt.join(Gt.dirname(r),".typebulb","server.mjs");await Up.rm(S,{force:!0}).catch(()=>{}),process.exit(0)};process.on("SIGINT",v),process.on("SIGTERM",v)}import{readFileSync as _h,copyFileSync as Hk,existsSync as Vk}from"fs";import*as Z from"path";import{fileURLToPath as Yk}from"url";import{EventEmitter as Gk}from"events";xe();var fc=r=>`/agents/${r}/client.js`,Nx=`
|
|
1308
1304
|
(() => {
|
|
1309
1305
|
const api = async (name, ...args) => {
|
|
1310
1306
|
const resp = await fetch('/__api/' + name, {
|
|
@@ -1364,14 +1360,14 @@ ${Nx}
|
|
|
1364
1360
|
|
|
1365
1361
|
<script type="module" src="${a}"></script>
|
|
1366
1362
|
</body>
|
|
1367
|
-
</html>`}var zk={claude:()=>Promise.resolve().then(()=>(Oh(),Ph)),pi:()=>Promise.resolve().then(()=>(Nh(),Rh))};async function Ih(r){let e=process.cwd(),t=r.agentTarget,n=Us(process.pid),s=r.watch?new Gk:void 0,i=Ee(r.mode),o=await zk[t](),a=o.displayName||`${t} mirror`;Ge(i,
|
|
1363
|
+
</html>`}var zk={claude:()=>Promise.resolve().then(()=>(Oh(),Ph)),pi:()=>Promise.resolve().then(()=>(Nh(),Rh))};async function Ih(r){let e=process.cwd(),t=r.agentTarget,n=Us(process.pid),s=r.watch?new Gk:void 0,i=Ee(r.mode),o=await zk[t](),a=o.displayName||`${t} mirror`;Ge(i,Z.join(e,"mirror"));let c=Z.dirname(Yk(import.meta.url)),l=Z.join(c,"agents",t),f=Z.join(c,"..","cli","agents"),u=Z.join(l,"styles.css"),d=Z.join(l,"index.html"),p=()=>Kp({name:a,agent:t,styles:_h(u,"utf8"),mountHtml:_h(d,"utf8"),watch:r.watch}),m=await ln(r.port),h=await fi({getHtml:p,basePath:e,port:m,reloadEmitter:s,getServerExports:()=>o,trusted:!0,staticAssets:{mount:`${Z.posix.dirname(fc(t))}/`,dir:l}}),y=`http://localhost:${m}`;await Js({pid:process.pid,port:m,url:y,file:`agent:${t}`,cwd:e,startedAt:Date.now(),trust:!0,agent:t}),console.log(`
|
|
1368
1364
|
${a}`),console.log(` ${y}`),m!==r.port&&console.log(` (port ${r.port} was busy)`),r.watch&&console.log(` Watching for changes...
|
|
1369
|
-
`);let
|
|
1370
|
-
`),s.emit("reload")}catch(
|
|
1365
|
+
`);let x=Z.join(f,t,"client"),A=Z.join(f,"core","client");async function g(){await(await import("esbuild")).build({entryPoints:[Z.join(x,"index.ts")],bundle:!0,platform:"browser",format:"esm",outfile:Z.join(l,"client.js")});for(let P of["styles.css","index.html"])Hk(Z.join(A,P),Z.join(l,P))}let b;if(r.watch&&s){let S=Vk(x),P=!1;b=pi({dir:S?f:l,onChange:async()=>{if(!P){P=!0;try{S&&await g(),console.log(`Mirror rebuilt. Browser reloading...
|
|
1366
|
+
`),s.emit("reload")}catch(k){console.error("Mirror rebuild failed:",k instanceof Error?k.message:k)}finally{P=!1}}}})}r.open&&await Ft(y);let v=async()=>{console.log(`
|
|
1371
1367
|
Shutting down...`);try{o.shutdownSwitcher?.()}catch{}h.close(),b?.(),n(),await tn(process.pid),process.exit(0)};process.on("SIGINT",v),process.on("SIGTERM",v)}import*as Lh from"path";import{EventEmitter as Qk}from"events";async function $h(r,e,t,n,s){let i=Ee(t),o=!1,a=async()=>{let{bulb:c,config:l}=await me(r);o||(Ge(i,r,c.server),o=!0),await zr(c.server,s,n,l.dependencies)};if(console.log(`Running ${Lh.basename(r)}...`),await a(),e){console.log(`Watching for changes...
|
|
1372
1368
|
`);let c=new Qk;c.on("reload",async()=>{try{console.log("Re-running..."),await a()}catch(l){console.error("Error:",l)}}),di({bulbPath:r,emitter:c})}}import{Console as Xk}from"node:console";xe();Qr();async function Dh(r,e,t,n,s){n0();try{let p=J(r),m=(await K()).find(h=>J(h.file)===p);m&&qs(m.pid,Se(m.pid).offset)}catch{}let i=Ee(t),{bulb:o,config:a}=await me(r);o.server||hn("This bulb has no **server.ts** block; nothing to call."),Ge(i,r,o.server);let c;try{c=await zr(o.server,s,n,a.dependencies)}catch(p){hn(p instanceof Error?p.message:String(p))}let l=ci(c,e.fn);if(!l){let p=[...Object.keys(c).filter(m=>typeof c[m]=="function"),...Object.keys(ac)];hn(`Function '${e.fn}' not found. Available: ${p.length?p.join(", "):"(none)"}.`)}let f=await Zk(e);if(li(l)){try{for await(let p of l(...f))await Mh(JSON.stringify(p,Bh)+`
|
|
1373
1369
|
`)}catch(p){hn(p instanceof Error?p.stack??p.message:String(p))}process.exit(0)}let u;try{u=await l(...f)}catch(p){hn(p instanceof Error?p.stack??p.message:String(p))}let d=r0(u);d!==void 0&&await Mh(d+`
|
|
1374
1370
|
`),process.exit(0)}async function Zk(r){if(r.hasArgsFlag){let e=r.argsJson??"";return e==="-"&&(e=await s0()),t0(e)}return e0(r.positional)}function e0(r){return r.map(e=>{try{return JSON.parse(e)}catch{return e}})}function t0(r){let e;try{e=JSON.parse(r)}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 r0(r){if(r!==void 0)return JSON.stringify(r,Bh,2)}function Bh(r,e){return typeof e=="bigint"?e.toString():e}function hn(r){process.stderr.write(r+`
|
|
1375
|
-
`),process.exit(1)}function n0(){let r=new Xk(process.stderr,process.stderr);console.log=r.log.bind(r),console.info=r.info.bind(r),console.debug=r.debug.bind(r),console.dir=r.dir.bind(r)}function Mh(r){return new Promise((e,t)=>{process.stdout.write(r,n=>n?t(n):e())})}async function s0(){let r=[];for await(let e of process.stdin)r.push(e);return Buffer.concat(r).toString("utf-8")}var Cc="0.19.
|
|
1371
|
+
`),process.exit(1)}function n0(){let r=new Xk(process.stderr,process.stderr);console.log=r.log.bind(r),console.info=r.info.bind(r),console.debug=r.debug.bind(r),console.dir=r.dir.bind(r)}function Mh(r){return new Promise((e,t)=>{process.stdout.write(r,n=>n?t(n):e())})}async function s0(){let r=[];for await(let e of process.stdin)r.push(e);return Buffer.concat(r).toString("utf-8")}var Cc="0.19.1";function jh(r,e){r||(console.error(`This bulb runs server-side Node code (server.ts), which --trust must authorize:
|
|
1376
1372
|
${e}`),process.exit(1))}async function i0(){let r=Fc(process.argv.slice(2));if(r.version&&(console.log(`typebulb ${Cc}`),process.exit(0)),r.help&&(qc(),process.exit(0)),hp(),r.subcommand==="logs"){await Op(r.file||void 0,{follow:r.follow,clear:r.clear,run:r.run,lines:r.lines});return}if(r.subcommand==="wait"){await Cp(r.file||void 0,{match:r.match,timeoutSec:r.timeoutSec});return}if(r.subcommand==="stop"){r.stopScope?await Np(r.stopScope):await Rp(r.file||void 0);return}if(r.subcommand==="send"){await Ip(r.file,r.sendMessage,r.sendWaitMs??0);return}if(r.subcommand==="skill"){await Ap(Cc);return}if(r.subcommand==="models"){await kp(r.mode);return}if(r.subcommand==="agent"){if(!r.agentTarget){await vp(Cc);return}Dd(r.agentTarget)||(console.error(`Unknown agent '${r.agentTarget}'. Known: ${Zr().join(", ")}.`),process.exit(1));let l=await Ja(process.cwd(),r.agentTarget);if(l){console.log(`Mirror '${r.agentTarget}' is already running for this project:
|
|
1377
1373
|
${l.url}`),r.open&&await Ft(l.url);return}await Ih(r);return}if(r.subcommand==="trust"||r.subcommand==="untrust"){await Hd(r.file||void 0,r.subcommand==="trust");return}let e;if(!r.file||r.file==="."){let l=await Id(process.cwd());l||(console.error("No .bulb.md file found in current directory"),process.exit(1)),e=l}else e=_e.resolve(r.file);await Fh.access(e).then(()=>!0,()=>!1)||(Zr().includes(r.file)&&(console.error(`To open the ${r.file} agent mirror, run: npx typebulb agent:${r.file}`),process.exit(1)),console.error(`File not found: ${e}`),process.exit(1)),e.endsWith(".bulb.md")||(console.error("File must have .bulb.md extension"),process.exit(1));let n=r.file&&r.file!=="."?r.file:_e.relative(process.cwd(),e)||_e.basename(e),s=`npx typebulb --trust ${n.includes(" ")?`"${n}"`:n}`;if(r.subcommand==="predict"){await Wd(e,s);return}let i=!r.noTrust&<(e);i&&!r.trust&&console.log("trust: granted from memory (run `typebulb untrust` to revoke)"),r.trust=r.noTrust?!1:r.trust||i;let o;try{o=await me(e)}catch{}let a;if(r.local){o&&!(r.local.name in(o.config.dependencies??{}))&&(console.error(`--replace: '${r.local.name}' is not a dependency in this bulb's config.json; nothing to replace.`),process.exit(1)),o&&r.subcommand!=="call"&&(!o.bulb.code||r.server)&&console.warn("warning: --replace has no effect in server mode (the override is client-only).");try{a=await Bc(r.local)}catch(l){console.error(l instanceof Error?l.message:String(l)),process.exit(1)}console.log(`replace: ${a.name} \u2192 ${_e.relative(process.cwd(),a.dir)||"."}`)}if(r.subcommand==="check"){await Kd(e,a);return}let c=_e.dirname(e);if(r.subcommand==="call"){jh(r.trust,s),await Dh(e,{fn:r.fn,positional:r.callArgs,argsJson:r.argsJson,hasArgsFlag:r.hasArgsFlag},r.mode,a,c);return}if(o&&o.bulb.server&&(!o.bulb.code||r.server)){jh(r.trust,s),await $h(e,r.watch,r.mode,a,c);return}await Jp(e,r,s,a,c)}i0().catch(r=>{console.error("Error:",r.message),process.exit(1)});
|