typebulb 0.19.4 → 0.19.6
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/README.md +2 -0
- package/dist/agents/claude/client.js +8 -0
- package/dist/agents/pi/client.js +8 -0
- package/dist/dts/dtsResolver.d.ts.map +1 -1
- package/dist/dts/dtsResolver.js +6 -0
- package/dist/dts/dtsResolver.js.map +1 -1
- package/dist/dts/tbTypings.d.ts +2 -2
- package/dist/dts/tbTypings.d.ts.map +1 -1
- package/dist/dts/tbTypings.js +8 -1
- package/dist/dts/tbTypings.js.map +1 -1
- package/dist/index.js +160 -145
- package/dist/render.js +40 -32
- package/dist/servers.js +35 -35
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __cr } from 'module'; const require = __cr(import.meta.url);
|
|
3
|
-
var
|
|
4
|
-
`),t=0;if(e[t]?.trim()!=="---")return null;t++;let n=[];for(;t<e.length&&e[t]?.trim()!=="---";)n.push(e[t]),t++;if(e[t]?.trim()!=="---")return null;t++;let s=
|
|
5
|
-
`)),a=t}else t++}return{frontmatter:s,files:i,warnings:o,bodyEndLine:a}}catch{return null}}function
|
|
3
|
+
var Wm=Object.create;var Pi=Object.defineProperty;var Hm=Object.getOwnPropertyDescriptor;var Vm=Object.getOwnPropertyNames;var Ym=Object.getPrototypeOf,Gm=Object.prototype.hasOwnProperty;var mn=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var R=(r,e)=>()=>(r&&(e=r(r=0)),e);var T=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Lc=(r,e)=>{for(var t in e)Pi(r,t,{get:e[t],enumerable:!0})},zm=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Vm(e))!Gm.call(r,s)&&s!==t&&Pi(r,s,{get:()=>e[s],enumerable:!(n=Hm(e,s))||n.enumerable});return r};var Qm=(r,e,t)=>(t=r!=null?Wm(Ym(r)):{},zm(e||!r||!r.__esModule?Pi(t,"default",{value:r,enumerable:!0}):t,r));function Wc(r){return Et.find(e=>xt[e].path===r)}function Vc(r){return!!r?.startsWith("typebulb")}var xt,Et,Hc,hn=R(()=>{xt={code:{path:"code.tsx",language:"typescript"},css:{path:"styles.css",language:"css"},html:{path:"index.html",language:"html"},config:{path:"config.json",language:"json"},notes:{path:"notes.md",language:"markdown"},data:{path:"data.txt",language:"text"},infer:{path:"infer.md",language:"markdown"},insight:{path:"insight.json",language:"json"}},Et=["code","css","html","data","infer","insight","config","notes"];Hc="typebulb/v1"});function _i(r){return/[:\n"']/.test(r)||r.startsWith(" ")||r.endsWith(" ")?`"${r.replace(/"/g,'\\"')}"`:r}function Ii(r){return r.startsWith('"')&&r.endsWith('"')?r.slice(1,-1).replace(/\\"/g,'"'):r.startsWith("'")&&r.endsWith("'")?r.slice(1,-1):r}var gn=R(()=>{});function xe(r){try{let e=r.split(`
|
|
4
|
+
`),t=0;if(e[t]?.trim()!=="---")return null;t++;let n=[];for(;t<e.length&&e[t]?.trim()!=="---";)n.push(e[t]),t++;if(e[t]?.trim()!=="---")return null;t++;let s=lh(n);if(!s)return null;let i=new Map,o=[],a=t;for(;t<e.length;){let l=e[t]?.trim()?.match(Yc);if(l){let f=l[1].trim();for(t++;t<e.length&&e[t]?.trim()==="";)t++;let u=e[t]?.match(Gc);if(!u){t++;continue}let d=u[1];t++;let p=[];for(;t<e.length&&!e[t]?.match(new RegExp(`^${d}\\s*$`));)p.push(e[t]),t++;let y=t<e.length;t++,o.push(...ah(f,p,y)),i.set(f,p.join(`
|
|
5
|
+
`)),a=t}else t++}return{frontmatter:s,files:i,warnings:o,bodyEndLine:a}}catch{return null}}function ah(r,e,t){let n=[];for(let s=0;s<e.length;s++){let i=e[s]?.trim().match(Yc);i&&oh.has(i[1].trim())&&ch(e,s)&&n.push(i[1].trim())}return n.length?n.map(s=>`**${r}** block has an unterminated code fence \u2014 it swallowed the **${s}** block.`):t?[]:[`**${r}** block has an unterminated code fence (it runs to the end of the file).`]}function ch(r,e){let t=e+1;for(;t<r.length&&r[t]?.trim()==="";)t++;return!!r[t]?.match(Gc)}function lh(r){let e={};for(let t of r){let n=t.indexOf(":");if(n===-1)continue;let s=t.slice(0,n).trim(),i=t.slice(n+1).trim();switch(s){case"format":e.format=i;break;case"name":e.name=Ii(i);break}}return!Vc(e.format)||!e.name?null:e}function zc(r){return xe(r)?.warnings??[]}function Qc(r){let e=Object.fromEntries(Et.map(t=>[t,r.files.get(xt[t].path)||""]));return{name:r.frontmatter.name,...e}}var Yc,Gc,oh,Xc=R(()=>{hn();gn();Yc=/^\*\*(.+)\*\*$/,Gc=/^(`{3,})(\w*)\s*$/,oh=new Set(Et.map(r=>xt[r].path))});function uh(r){let e=r.match(/^`{3,}/gm),t=e?Math.max(...e.map(n=>n.length)):0;return"`".repeat(Math.max(3,t+1))}function Zc(r){let e=Et.filter(t=>r[t]).map(t=>{let{path:n}=xt[t],s=r[t],i=n.split(".").pop(),o=uh(s);return`**${n}**
|
|
6
6
|
|
|
7
7
|
${o}${i}
|
|
8
8
|
${s}
|
|
9
|
-
${o}`});return["---",`format: ${
|
|
10
|
-
`)}var
|
|
9
|
+
${o}`});return["---",`format: ${Hc}`,`name: ${_i(r.name)}`,"---","",...e].join(`
|
|
10
|
+
`)}var el=R(()=>{hn();gn()});function tl(r){if(!r.trim())return{};try{return JSON.parse(r)}catch{return{}}}var rl=R(()=>{});var nl=R(()=>{});function Li(r,e,t){let s=new RegExp(e).exec(r.slice(t));return s?t+s.index:-1}var sl=R(()=>{});function ir(r,e,t){let s=new RegExp(e).exec(r.slice(t));return s?t+s.index+s[0].length-1:-1}var il=R(()=>{});function yn(r,e){let t=new RegExp(e,"g"),n=r.match(t);return n?n.length:0}var ol=R(()=>{});function or(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=Li(r,`<${e}[
|
|
11
11
|
>/]`,i);if(n&&console.log("[xml-utils] start:",o),o===-1)return;let a=r.slice(o+e.length),c=ir(a,"^[^<]*[ /]>",0),l=c!==-1&&a[c-1]==="/";if(n&&console.log("[xml-utils] selfClosing:",l),l===!1)if(s){let p=0,y=1,m=0;for(;(c=ir(a,"[ /]"+e+">",p))!==-1;){let g=a.substring(p,c+1);if(y+=yn(g,"<"+e+`[
|
|
12
|
-
>]`),m+=yn(g,"</"+e+">"),m>=y)break;p=c}}else c=ir(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
|
|
13
|
-
`)}};cr.defaultYaml={explicit:!1,version:"1.2"};cr.defaultTags={"!!":"tag:yaml.org,2002:"};
|
|
14
|
-
`)?
|
|
12
|
+
>]`),m+=yn(g,"</"+e+">"),m>=y)break;p=c}}else c=ir(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=R(()=>{sl();il();ol()});var Mi=R(()=>{$i()});var Di=R(()=>{Mi()});var al=R(()=>{Di()});var cl=R(()=>{});var ll=R(()=>{nl();$i();Mi();al();Di();cl()});var I=T(G=>{"use strict";var Bi=Symbol.for("yaml.alias"),ul=Symbol.for("yaml.document"),bn=Symbol.for("yaml.map"),fl=Symbol.for("yaml.pair"),ji=Symbol.for("yaml.scalar"),wn=Symbol.for("yaml.seq"),Ee=Symbol.for("yaml.node.type"),ph=r=>!!r&&typeof r=="object"&&r[Ee]===Bi,mh=r=>!!r&&typeof r=="object"&&r[Ee]===ul,hh=r=>!!r&&typeof r=="object"&&r[Ee]===bn,gh=r=>!!r&&typeof r=="object"&&r[Ee]===fl,dl=r=>!!r&&typeof r=="object"&&r[Ee]===ji,yh=r=>!!r&&typeof r=="object"&&r[Ee]===wn;function pl(r){if(r&&typeof r=="object")switch(r[Ee]){case bn:case wn:return!0}return!1}function bh(r){if(r&&typeof r=="object")switch(r[Ee]){case Bi:case bn:case ji:case wn:return!0}return!1}var wh=r=>(dl(r)||pl(r))&&!!r.anchor;G.ALIAS=Bi;G.DOC=ul;G.MAP=bn;G.NODE_TYPE=Ee;G.PAIR=fl;G.SCALAR=ji;G.SEQ=wn;G.hasAnchor=wh;G.isAlias=ph;G.isCollection=pl;G.isDocument=mh;G.isMap=hh;G.isNode=bh;G.isPair=gh;G.isScalar=dl;G.isSeq=yh});var ar=T(qi=>{"use strict";var W=I(),te=Symbol("break visit"),ml=Symbol("skip children"),ye=Symbol("remove node");function vn(r,e){let t=hl(e);W.isDocument(r)?At(null,r.contents,t,Object.freeze([r]))===ye&&(r.contents=null):At(null,r,t,Object.freeze([]))}vn.BREAK=te;vn.SKIP=ml;vn.REMOVE=ye;function At(r,e,t,n){let s=gl(r,e,t,n);if(W.isNode(s)||W.isPair(s))return yl(r,n,s),At(r,s,t,n);if(typeof s!="symbol"){if(W.isCollection(e)){n=Object.freeze(n.concat(e));for(let i=0;i<e.items.length;++i){let o=At(i,e.items[i],t,n);if(typeof o=="number")i=o-1;else{if(o===te)return te;o===ye&&(e.items.splice(i,1),i-=1)}}}else if(W.isPair(e)){n=Object.freeze(n.concat(e));let i=At("key",e.key,t,n);if(i===te)return te;i===ye&&(e.key=null);let o=At("value",e.value,t,n);if(o===te)return te;o===ye&&(e.value=null)}}return s}async function Sn(r,e){let t=hl(e);W.isDocument(r)?await Tt(null,r.contents,t,Object.freeze([r]))===ye&&(r.contents=null):await Tt(null,r,t,Object.freeze([]))}Sn.BREAK=te;Sn.SKIP=ml;Sn.REMOVE=ye;async function Tt(r,e,t,n){let s=await gl(r,e,t,n);if(W.isNode(s)||W.isPair(s))return yl(r,n,s),Tt(r,s,t,n);if(typeof s!="symbol"){if(W.isCollection(e)){n=Object.freeze(n.concat(e));for(let i=0;i<e.items.length;++i){let o=await Tt(i,e.items[i],t,n);if(typeof o=="number")i=o-1;else{if(o===te)return te;o===ye&&(e.items.splice(i,1),i-=1)}}}else if(W.isPair(e)){n=Object.freeze(n.concat(e));let i=await Tt("key",e.key,t,n);if(i===te)return te;i===ye&&(e.key=null);let o=await Tt("value",e.value,t,n);if(o===te)return te;o===ye&&(e.value=null)}}return s}function hl(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 gl(r,e,t,n){if(typeof t=="function")return t(r,e,n);if(W.isMap(e))return t.Map?.(r,e,n);if(W.isSeq(e))return t.Seq?.(r,e,n);if(W.isPair(e))return t.Pair?.(r,e,n);if(W.isScalar(e))return t.Scalar?.(r,e,n);if(W.isAlias(e))return t.Alias?.(r,e,n)}function yl(r,e,t){let n=e[e.length-1];if(W.isCollection(n))n.items[r]=t;else if(W.isPair(n))r==="key"?n.key=t:n.value=t;else if(W.isDocument(n))n.contents=t;else{let s=W.isAlias(n)?"alias":"scalar";throw new Error(`Cannot replace node with ${s} parent`)}}qi.visit=vn;qi.visitAsync=Sn});var Fi=T(wl=>{"use strict";var bl=I(),vh=ar(),Sh={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},kh=r=>r.replace(/[!,[\]{}]/g,e=>Sh[e]),cr=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+kh(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&&bl.isNode(e.contents)){let i={};vh.visit(e.contents,(o,a)=>{bl.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
|
+
`)}};cr.defaultYaml={explicit:!1,version:"1.2"};cr.defaultTags={"!!":"tag:yaml.org,2002:"};wl.Directives=cr});var kn=T(lr=>{"use strict";var vl=I(),xh=ar();function Eh(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 Sl(r){let e=new Set;return xh.visit(r,{Value(t,n){n.anchor&&e.add(n.anchor)}}),e}function kl(r,e){for(let t=1;;++t){let n=`${r}${t}`;if(!e.has(n))return n}}function Ah(r,e){let t=[],n=new Map,s=null;return{onAnchor:i=>{t.push(i),s??(s=Sl(r));let o=kl(e,s);return s.add(o),o},setAnchors:()=>{for(let i of t){let o=n.get(i);if(typeof o=="object"&&o.anchor&&(vl.isScalar(o.node)||vl.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}}lr.anchorIsValid=Eh;lr.anchorNames=Sl;lr.createNodeAnchors=Ah;lr.findNewAnchor=kl});var Ui=T(xl=>{"use strict";function ur(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=ur(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=ur(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=ur(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=ur(r,n,s,i);o===void 0?delete n[s]:o!==i&&(n[s]=o)}return r.call(e,t,n)}xl.applyReviver=ur});var Me=T(Al=>{"use strict";var Th=I();function El(r,e,t){if(Array.isArray(r))return r.map((n,s)=>El(n,String(s),t));if(r&&typeof r.toJSON=="function"){if(!t||!Th.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}Al.toJS=El});var xn=T(Ol=>{"use strict";var Oh=Ui(),Tl=I(),Ph=Me(),Ji=class{constructor(e){Object.defineProperty(this,Tl.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(!Tl.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=Ph.toJS(this,"",o);if(typeof s=="function")for(let{count:c,res:l}of o.anchors.values())s(l,c);return typeof i=="function"?Oh.applyReviver(i,{"":a},"",a):a}};Ol.NodeBase=Ji});var fr=T(Pl=>{"use strict";var Rh=kn(),Ch=ar(),Ot=I(),Nh=xn(),_h=Me(),Ki=class extends Nh.NodeBase{constructor(e){super(Ot.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=[],Ch.visit(e,{Node:(i,o)=>{(Ot.isAlias(o)||Ot.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||(_h.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=En(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(Rh.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 En(r,e,t){if(Ot.isAlias(e)){let n=e.resolve(r),s=t&&n&&t.get(n);return s?s.count*s.aliasCount:0}else if(Ot.isCollection(e)){let n=0;for(let s of e.items){let i=En(r,s,t);i>n&&(n=i)}return n}else if(Ot.isPair(e)){let n=En(r,e.key,t),s=En(r,e.value,t);return Math.max(n,s)}return 1}Pl.Alias=Ki});var U=T(Wi=>{"use strict";var Ih=I(),Lh=xn(),$h=Me(),Mh=r=>!r||typeof r!="function"&&typeof r!="object",De=class extends Lh.NodeBase{constructor(e){super(Ih.SCALAR),this.value=e}toJSON(e,t){return t?.keep?this.value:$h.toJS(this.value,e,t)}toString(){return String(this.value)}};De.BLOCK_FOLDED="BLOCK_FOLDED";De.BLOCK_LITERAL="BLOCK_LITERAL";De.PLAIN="PLAIN";De.QUOTE_DOUBLE="QUOTE_DOUBLE";De.QUOTE_SINGLE="QUOTE_SINGLE";Wi.Scalar=De;Wi.isScalarValue=Mh});var dr=T(Cl=>{"use strict";var Dh=fr(),rt=I(),Rl=U(),Bh="tag:yaml.org,2002:";function jh(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 qh(r,e,t){if(rt.isDocument(r)&&(r=r.contents),rt.isNode(r))return r;if(rt.isPair(r)){let u=t.schema[rt.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 Dh.Alias(c.anchor);c={anchor:null,node:null},a.set(r,c)}e?.startsWith("!!")&&(e=Bh+e.slice(2));let l=jh(r,e,o.tags);if(!l){if(r&&typeof r.toJSON=="function"&&(r=r.toJSON()),!r||typeof r!="object"){let u=new Rl.Scalar(r);return c&&(c.node=u),u}l=r instanceof Map?o[rt.MAP]:Symbol.iterator in Object(r)?o[rt.SEQ]:o[rt.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 Rl.Scalar(r);return e?f.tag=e:l.default||(f.tag=l.tag),c&&(c.node=f),f}Cl.createNode=qh});var Tn=T(An=>{"use strict";var Fh=dr(),be=I(),Uh=xn();function Hi(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 Fh.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 Nl=r=>r==null||typeof r=="object"&&!!r[Symbol.iterator]().next().done,Vi=class extends Uh.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=>be.isNode(n)||be.isPair(n)?n.clone(e):n),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Nl(e))this.add(t);else{let[n,...s]=e,i=this.get(n,!0);if(be.isCollection(i))i.addIn(s,t);else if(i===void 0&&this.schema)this.set(n,Hi(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(be.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&&be.isScalar(i)?i.value:i:be.isCollection(i)?i.getIn(s,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!be.isPair(t))return!1;let n=t.value;return n==null||e&&be.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 be.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(be.isCollection(i))i.setIn(s,t);else if(i===void 0&&this.schema)this.set(n,Hi(this.schema,s,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${s}`)}}};An.Collection=Vi;An.collectionFromPath=Hi;An.isEmptyPath=Nl});var pr=T(On=>{"use strict";var Jh=r=>r.replace(/^(?!$)(?: $)?/gm,"#");function Yi(r,e){return/^\n+$/.test(r)?r.substring(1):e?r.replace(/^(?! *$)/gm,e):r}var Kh=(r,e,t)=>r.endsWith(`
|
|
14
|
+
`)?Yi(t,e):t.includes(`
|
|
15
15
|
`)?`
|
|
16
|
-
`+
|
|
17
|
-
`)t===
|
|
16
|
+
`+Yi(t,e):(r.endsWith(" ")?"":" ")+t;On.indentComment=Yi;On.lineComment=Kh;On.stringifyComment=Jh});var Il=T(mr=>{"use strict";var Wh="flow",Gi="block",Pn="quoted";function Hh(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,y=!1,m=-1,g=-1,k=-1;t===Gi&&(m=_l(r,m,e.length),m!==-1&&(u=m+c));for(let h;h=r[m+=1];){if(t===Pn&&h==="\\"){switch(g=m,r[m+1]){case"x":m+=3;break;case"u":m+=5;break;case"U":m+=9;break;default:m+=1}k=m}if(h===`
|
|
17
|
+
`)t===Gi&&(m=_l(r,m,e.length)),u=m+e.length+c,d=void 0;else{if(h===" "&&p&&p!==" "&&p!==`
|
|
18
18
|
`&&p!==" "){let b=r[m+1];b&&b!==" "&&b!==`
|
|
19
19
|
`&&b!==" "&&(d=m)}if(m>=u)if(d)l.push(d),u=d+c,d=void 0;else if(t===Pn){for(;p===" "||p===" ";)p=h,h=r[m+=1],y=!0;let b=m>k+1?m-2:g-1;if(f[b])return r;l.push(b),f[b]=!0,u=b+c,d=void 0}else y=!0}p=h}if(y&&a&&a(),l.length===0)return r;o&&o();let x=r.slice(0,l[0]);for(let h=0;h<l.length;++h){let b=l[h],v=l[h+1]||r.length;b===0?x=`
|
|
20
20
|
${e}${r.slice(0,v)}`:(t===Pn&&f[b]&&(x+=`${r[b]}\\`),x+=`
|
|
21
|
-
${e}${r.slice(b+1,v)}`)}return x}function
|
|
22
|
-
`);n=e,s=e+1,i=r[s]}return n}mr.FOLD_BLOCK=
|
|
21
|
+
${e}${r.slice(b+1,v)}`)}return x}function _l(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
|
+
`);n=e,s=e+1,i=r[s]}return n}mr.FOLD_BLOCK=Gi;mr.FOLD_FLOW=Wh;mr.FOLD_QUOTED=Pn;mr.foldFlowLines=Hh});var gr=T(Ll=>{"use strict";var ce=U(),Be=Il(),Cn=(r,e)=>({indentAtStart:e?r.indent.length:r.indentAtStart,lineWidth:r.options.lineWidth,minContentWidth:r.options.minContentWidth}),Nn=r=>/^(%|---|\.\.\.)/m.test(r);function Vh(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]===`
|
|
23
23
|
`){if(i-o>n)return!0;if(o=i+1,s-o<=n)return!1}return!0}function hr(r,e){let t=JSON.stringify(r);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:n}=e,s=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(Nn(r)?" ":""),o="",a=0;for(let c=0,l=t[c];l;l=t[++c])if(l===" "&&t[c+1]==="\\"&&t[c+2]==="n"&&(o+=t.slice(a,c)+"\\ ",c+=1,a=c,l="\\"),l==="\\")switch(t[c+1]){case"u":{o+=t.slice(a,c);let f=t.substr(c+2,4);switch(f){case"0000":o+="\\0";break;case"0007":o+="\\a";break;case"000b":o+="\\v";break;case"001b":o+="\\e";break;case"0085":o+="\\N";break;case"00a0":o+="\\_";break;case"2028":o+="\\L";break;case"2029":o+="\\P";break;default:f.substr(0,2)==="00"?o+="\\x"+f.substr(2):o+=t.substr(c,6)}c+=5,a=c+1}break;case"n":if(n||t[c+2]==='"'||t.length<s)c+=1;else{for(o+=t.slice(a,c)+`
|
|
24
24
|
|
|
25
25
|
`;t[c+2]==="\\"&&t[c+3]==="n"&&t[c+4]!=='"';)o+=`
|
|
26
|
-
`,c+=2;o+=i,t[c+2]===" "&&(o+="\\"),c+=1,a=c+1}break;default:c+=1}return o=a?o+t.slice(a):t,n?o:Be.foldFlowLines(o,i,Be.FOLD_QUOTED,Cn(e,!1))}function
|
|
26
|
+
`,c+=2;o+=i,t[c+2]===" "&&(o+="\\"),c+=1,a=c+1}break;default:c+=1}return o=a?o+t.slice(a):t,n?o:Be.foldFlowLines(o,i,Be.FOLD_QUOTED,Cn(e,!1))}function zi(r,e){if(e.options.singleQuote===!1||e.implicitKey&&r.includes(`
|
|
27
27
|
`)||/[ \t]\n|\n[ \t]/.test(r))return hr(r,e);let t=e.indent||(Nn(r)?" ":""),n="'"+r.replace(/'/g,"''").replace(/\n+/g,`$&
|
|
28
|
-
${t}`)+"'";return e.implicitKey?n:Be.foldFlowLines(n,t,Be.FOLD_FLOW,Cn(e,!1))}function Pt(r,e){let{singleQuote:t}=e.options,n;if(t===!1)n=hr;else{let s=r.includes('"'),i=r.includes("'");s&&!i?n=
|
|
28
|
+
${t}`)+"'";return e.implicitKey?n:Be.foldFlowLines(n,t,Be.FOLD_FLOW,Cn(e,!1))}function Pt(r,e){let{singleQuote:t}=e.options,n;if(t===!1)n=hr;else{let s=r.includes('"'),i=r.includes("'");s&&!i?n=zi:i&&!s?n=hr:n=t?zi:hr}return n(r,e)}var Qi;try{Qi=new RegExp(`(^|(?<!
|
|
29
29
|
))
|
|
30
30
|
+(?!
|
|
31
|
-
|$)`,"g")}catch{
|
|
31
|
+
|$)`,"g")}catch{Qi=/\n+(?!\n|$)/g}function Rn({comment:r,type:e,value:t},n,s,i){let{blockQuote:o,commentString:a,lineWidth:c}=n.options;if(!o||/\n[\t ]+$/.test(t))return Pt(t,n);let l=n.indent||(n.forceBlockIndent||Nn(t)?" ":""),f=o==="literal"?!0:o==="folded"||e===ce.Scalar.BLOCK_FOLDED?!1:e===ce.Scalar.BLOCK_LITERAL?!0:!Vh(t,c,l.length);if(!t)return f?`|
|
|
32
32
|
`:`>
|
|
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),y=p.indexOf(`
|
|
35
35
|
`);y===-1?u="-":t===p||y!==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(
|
|
36
|
+
`&&(p=p.slice(0,-1)),p=p.replace(Qi,`$&${l}`));let m=!1,g,k=-1;for(g=0;g<t.length;++g){let v=t[g];if(v===" ")m=!0;else if(v===`
|
|
37
37
|
`)k=g;else break}let x=t.substring(0,k<g?k+1:g);x&&(t=t.substring(x.length),x=x.replace(/\n+/g,`$&${l}`));let b=(m?l?"2":"1":"")+u;if(r&&(b+=" "+a(r.replace(/ ?[\r\n]+/g," ")),s&&s()),!f){let v=t.replace(/\n+/g,`
|
|
38
38
|
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${l}`),S=!1,O=Cn(n,!0);o!=="folded"&&e!==ce.Scalar.BLOCK_FOLDED&&(O.onOverflow=()=>{S=!0});let E=Be.foldFlowLines(`${x}${v}${p}`,l,Be.FOLD_BLOCK,O);if(!S)return`>${b}
|
|
39
39
|
${l}${E}`}return t=t.replace(/\n+/g,`$&${l}`),`|${b}
|
|
40
|
-
${l}${x}${t}${p}`}function
|
|
40
|
+
${l}${x}${t}${p}`}function Yh(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 Pt(i,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(i))return a||f||!i.includes(`
|
|
42
42
|
`)?Pt(i,e):Rn(r,e,t,n);if(!a&&!f&&s!==ce.Scalar.PLAIN&&i.includes(`
|
|
43
43
|
`))return Rn(r,e,t,n);if(Nn(i)){if(c==="")return e.forceBlockIndent=!0,Rn(r,e,t,n);if(a&&c===l)return Pt(i,e)}let u=i.replace(/\n+/g,`$&
|
|
44
|
-
${c}`);if(o){let d=m=>m.default&&m.tag!=="tag:yaml.org,2002:str"&&m.test?.test(u),{compat:p,tags:y}=e.doc.schema;if(y.some(d)||p?.some(d))return Pt(i,e)}return a?u:Be.foldFlowLines(u,c,Be.FOLD_FLOW,Cn(e,!1))}function
|
|
45
|
-
${e.indent}${a}`:a}
|
|
46
|
-
${a}:`):(g=`${g}:`,d&&(g+=br.lineComment(g,t.indent,l(d))));let k,x,h;Ae.isNode(e)?(k=!!e.spaceBefore,x=e.commentBefore,h=e.comment):(k=!1,x=null,h=null,e&&typeof e=="object"&&(e=o.createNode(e))),t.implicitKey=!1,!p&&!d&&Ae.isScalar(e)&&(t.indentAtStart=g.length+1),m=!1,!f&&c.length>=2&&!t.inFlow&&!p&&Ae.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let b=!1,v=
|
|
44
|
+
${c}`);if(o){let d=m=>m.default&&m.tag!=="tag:yaml.org,2002:str"&&m.test?.test(u),{compat:p,tags:y}=e.doc.schema;if(y.some(d)||p?.some(d))return Pt(i,e)}return a?u:Be.foldFlowLines(u,c,Be.FOLD_FLOW,Cn(e,!1))}function Gh(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!==ce.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(a=ce.Scalar.QUOTE_DOUBLE);let c=f=>{switch(f){case ce.Scalar.BLOCK_FOLDED:case ce.Scalar.BLOCK_LITERAL:return s||i?Pt(o.value,e):Rn(o,e,t,n);case ce.Scalar.QUOTE_DOUBLE:return hr(o.value,e);case ce.Scalar.QUOTE_SINGLE:return zi(o.value,e);case ce.Scalar.PLAIN:return Yh(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}Ll.stringifyString=Gh});var yr=T(Xi=>{"use strict";var zh=kn(),je=I(),Qh=pr(),Xh=gr();function Zh(r,e){let t=Object.assign({blockQuote:!0,commentString:Qh.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 eg(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(je.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 tg(r,e,{anchors:t,doc:n}){if(!n.directives)return"";let s=[],i=(je.isScalar(r)||je.isCollection(r))&&r.anchor;i&&zh.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 rg(r,e,t,n){if(je.isPair(r))return r.toString(e,t,n);if(je.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=je.isNode(r)?r:e.doc.createNode(r,{onTagObj:c=>s=c});s??(s=eg(e.doc.schema.tags,i));let o=tg(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):je.isScalar(i)?Xh.stringifyString(i,e,t,n):i.toString(e,t,n);return o?je.isScalar(i)||a[0]==="{"||a[0]==="["?`${o} ${a}`:`${o}
|
|
45
|
+
${e.indent}${a}`:a}Xi.createStringifyContext=Zh;Xi.stringify=rg});var Bl=T(Dl=>{"use strict";var Ae=I(),$l=U(),Ml=yr(),br=pr();function ng({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=Ae.isNode(r)&&r.comment||null;if(u){if(d)throw new Error("With simple keys, key nodes cannot have comments");if(Ae.isCollection(r)||!Ae.isNode(r)&&typeof r=="object"){let O="With simple keys, collection cannot be used as a key value";throw new Error(O)}}let p=!u&&(!r||d&&e==null&&!t.inFlow||Ae.isCollection(r)||(Ae.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 y=!1,m=!1,g=Ml.stringify(r,t,()=>y=!0,()=>m=!0);if(!p&&!t.inFlow&&g.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 y&&n&&n(),g===""?"?":p?`? ${g}`:g}else if(i&&!u||e==null&&p)return g=`? ${g}`,d&&!y?g+=br.lineComment(g,t.indent,l(d)):m&&s&&s(),g;y&&(d=null),p?(d&&(g+=br.lineComment(g,t.indent,l(d))),g=`? ${g}
|
|
46
|
+
${a}:`):(g=`${g}:`,d&&(g+=br.lineComment(g,t.indent,l(d))));let k,x,h;Ae.isNode(e)?(k=!!e.spaceBefore,x=e.commentBefore,h=e.comment):(k=!1,x=null,h=null,e&&typeof e=="object"&&(e=o.createNode(e))),t.implicitKey=!1,!p&&!d&&Ae.isScalar(e)&&(t.indentAtStart=g.length+1),m=!1,!f&&c.length>=2&&!t.inFlow&&!p&&Ae.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let b=!1,v=Ml.stringify(e,t,()=>b=!0,()=>m=!0),S=" ";if(d||k||x){if(S=k?`
|
|
47
47
|
`:"",x){let O=l(x);S+=`
|
|
48
48
|
${br.indentComment(O,t.indent)}`}v===""&&!t.inFlow?S===`
|
|
49
49
|
`&&h&&(S=`
|
|
@@ -52,34 +52,34 @@ ${br.indentComment(O,t.indent)}`}v===""&&!t.inFlow?S===`
|
|
|
52
52
|
${t.indent}`}else if(!p&&Ae.isCollection(e)){let O=v[0],E=v.indexOf(`
|
|
53
53
|
`),_=E!==-1,ee=t.inFlow??e.flow??e.items.length===0;if(_||!ee){let Y=!1;if(_&&(O==="&"||O==="!")){let M=v.indexOf(" ");O==="&"&&M!==-1&&M<E&&v[M+1]==="!"&&(M=v.indexOf(" ",M+1)),(M===-1||E<M)&&(Y=!0)}Y||(S=`
|
|
54
54
|
${t.indent}`)}}else(v===""||v[0]===`
|
|
55
|
-
`)&&(S="");return g+=S+v,t.inFlow?b&&n&&n():h&&!b?g+=br.lineComment(g,t.indent,l(h)):m&&s&&s(),g}
|
|
55
|
+
`)&&(S="");return g+=S+v,t.inFlow?b&&n&&n():h&&!b?g+=br.lineComment(g,t.indent,l(h)):m&&s&&s(),g}Dl.stringifyPair=ng});var eo=T(Zi=>{"use strict";var jl=mn("process");function sg(r,...e){r==="debug"&&console.log(...e)}function ig(r,e){(r==="debug"||r==="warn")&&(typeof jl.emitWarning=="function"?jl.emitWarning(e):console.warn(e))}Zi.debug=sg;Zi.warn=ig});var $n=T(Ln=>{"use strict";var wr=I(),ql=U(),_n="<<",In={identify:r=>r===_n||typeof r=="symbol"&&r.description===_n,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new ql.Scalar(Symbol(_n)),{addToJSMap:Fl}),stringify:()=>_n},og=(r,e)=>(In.identify(e)||wr.isScalar(e)&&(!e.type||e.type===ql.Scalar.PLAIN)&&In.identify(e.value))&&r?.doc.schema.tags.some(t=>t.tag===In.tag&&t.default);function Fl(r,e,t){if(t=r&&wr.isAlias(t)?t.resolve(r.doc):t,wr.isSeq(t))for(let n of t.items)to(r,e,n);else if(Array.isArray(t))for(let n of t)to(r,e,n);else to(r,e,t)}function to(r,e,t){let n=r&&wr.isAlias(t)?t.resolve(r.doc):t;if(!wr.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}Ln.addMergeToJSMap=Fl;Ln.isMergeKey=og;Ln.merge=In});var no=T(Kl=>{"use strict";var ag=eo(),Ul=$n(),cg=yr(),Jl=I(),ro=Me();function lg(r,e,{key:t,value:n}){if(Jl.isNode(t)&&t.addToJSMap)t.addToJSMap(r,e,n);else if(Ul.isMergeKey(r,t))Ul.addMergeToJSMap(r,e,n);else{let s=ro.toJS(t,"",r);if(e instanceof Map)e.set(s,ro.toJS(n,s,r));else if(e instanceof Set)e.add(s);else{let i=ug(t,s,r),o=ro.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 ug(r,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(Jl.isNode(r)&&t?.doc){let n=cg.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)+'..."'),ag.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)}Kl.addPairToJSMap=lg});var qe=T(so=>{"use strict";var Wl=dr(),fg=Bl(),dg=no(),Mn=I();function pg(r,e,t){let n=Wl.createNode(r,void 0,t),s=Wl.createNode(e,void 0,t);return new Dn(n,s)}var Dn=class r{constructor(e,t=null){Object.defineProperty(this,Mn.NODE_TYPE,{value:Mn.PAIR}),this.key=e,this.value=t}clone(e){let{key:t,value:n}=this;return Mn.isNode(t)&&(t=t.clone(e)),Mn.isNode(n)&&(n=n.clone(e)),new r(t,n)}toJSON(e,t){let n=t?.mapAsMap?new Map:{};return dg.addPairToJSMap(t,n,this)}toString(e,t,n){return e?.doc?fg.stringifyPair(this,e,t,n):JSON.stringify(this)}};so.Pair=Dn;so.createPair=pg});var io=T(Vl=>{"use strict";var nt=I(),Hl=yr(),Bn=pr();function mg(r,e,t){return(e.inFlow??r.flow?gg:hg)(r,e,t)}function hg({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 y=0;y<e.length;++y){let m=e[y],g=null;if(nt.isNode(m))!u&&m.spaceBefore&&d.push(""),jn(t,d,m.commentBefore,u),m.comment&&(g=m.comment);else if(nt.isPair(m)){let x=nt.isNode(m.key)?m.key:null;x&&(!u&&x.spaceBefore&&d.push(""),jn(t,d,x.commentBefore,u))}u=!1;let k=Hl.stringify(m,f,()=>g=null,()=>u=!0);g&&(k+=Bn.lineComment(k,i,l(g))),u&&g&&(u=!1),d.push(n+k)}let p;if(d.length===0)p=s.start+s.end;else{p=d[0];for(let y=1;y<d.length;++y){let m=d[y];p+=m?`
|
|
56
56
|
${c}${m}`:`
|
|
57
57
|
`}}return r?(p+=`
|
|
58
|
-
`+Bn.indentComment(l(r),c),a&&a()):u&&o&&o(),p}function
|
|
58
|
+
`+Bn.indentComment(l(r),c),a&&a()):u&&o&&o(),p}function gg({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 y=0;y<r.length;++y){let m=r[y],g=null;if(nt.isNode(m))m.spaceBefore&&u.push(""),jn(e,u,m.commentBefore,!1),m.comment&&(g=m.comment);else if(nt.isPair(m)){let x=nt.isNode(m.key)?m.key:null;x&&(x.spaceBefore&&u.push(""),jn(e,u,x.commentBefore,!1),x.comment&&(l=!0));let h=nt.isNode(m.value)?m.value:null;h?(h.comment&&(g=h.comment),h.commentBefore&&(l=!0)):m.value==null&&x?.comment&&(g=x.comment)}g&&(l=!0);let k=Hl.stringify(m,c,()=>g=null);y<r.length-1&&(k+=","),g&&(k+=Bn.lineComment(k,n,a(g))),!l&&(u.length>f||k.includes(`
|
|
59
59
|
`))&&(l=!0),u.push(k),f=u.length}let{start:d,end:p}=t;if(u.length===0)return d+p;if(!l){let y=u.reduce((m,g)=>m+g.length+2,2);l=e.options.lineWidth>0&&y>e.options.lineWidth}if(l){let y=d;for(let m of u)y+=m?`
|
|
60
60
|
${i}${s}${m}`:`
|
|
61
61
|
`;return`${y}
|
|
62
|
-
${s}${p}`}else return`${d}${o}${u.join(" ")}${o}${p}`}function jn({indent:r,options:{commentString:e}},t,n,s){if(n&&s&&(n=n.replace(/^\n+/,"")),n){let i=Bn.indentComment(e(n),r);t.push(i.trimStart())}}
|
|
63
|
-
`:" ")}return
|
|
62
|
+
${s}${p}`}else return`${d}${o}${u.join(" ")}${o}${p}`}function jn({indent:r,options:{commentString:e}},t,n,s){if(n&&s&&(n=n.replace(/^\n+/,"")),n){let i=Bn.indentComment(e(n),r);t.push(i.trimStart())}}Vl.stringifyCollection=mg});var Ue=T(ao=>{"use strict";var yg=io(),bg=no(),wg=Tn(),Fe=I(),qn=qe(),vg=U();function vr(r,e){let t=Fe.isScalar(e)?e.value:e;for(let n of r)if(Fe.isPair(n)&&(n.key===e||n.key===t||Fe.isScalar(n.key)&&n.key.value===t))return n}var oo=class extends wg.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Fe.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;Fe.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=vr(this.items,n.key),i=this.schema?.sortMapEntries;if(s){if(!t)throw new Error(`Key ${n.key} already set`);Fe.isScalar(s.value)&&vg.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=vr(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let s=vr(this.items,e)?.value;return(!t&&Fe.isScalar(s)?s.value:s)??void 0}has(e){return!!vr(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)bg.addPairToJSMap(t,s,i);return s}toString(e,t,n){if(!e)return JSON.stringify(this);for(let s of this.items)if(!Fe.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})),yg.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:n,onComment:t})}};ao.YAMLMap=oo;ao.findPair=vr});var Rt=T(Gl=>{"use strict";var Sg=I(),Yl=Ue(),kg={collection:"map",default:!0,nodeClass:Yl.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(r,e){return Sg.isMap(r)||e("Expected a mapping for this tag"),r},createNode:(r,e,t)=>Yl.YAMLMap.from(r,e,t)};Gl.map=kg});var Je=T(zl=>{"use strict";var xg=dr(),Eg=io(),Ag=Tn(),Un=I(),Tg=U(),Og=Me(),co=class extends Ag.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(Un.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=Fn(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let n=Fn(e);if(typeof n!="number")return;let s=this.items[n];return!t&&Un.isScalar(s)?s.value:s}has(e){let t=Fn(e);return typeof t=="number"&&t<this.items.length}set(e,t){let n=Fn(e);if(typeof n!="number")throw new Error(`Expected a valid index, not ${e}.`);let s=this.items[n];Un.isScalar(s)&&Tg.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(Og.toJS(i,String(s++),t));return n}toString(e,t,n){return e?Eg.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(xg.createNode(a,void 0,n))}}return i}};function Fn(r){let e=Un.isScalar(r)?r.value:r;return e&&typeof e=="string"&&(e=Number(e)),typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}zl.YAMLSeq=co});var Ct=T(Xl=>{"use strict";var Pg=I(),Ql=Je(),Rg={collection:"seq",default:!0,nodeClass:Ql.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(r,e){return Pg.isSeq(r)||e("Expected a sequence for this tag"),r},createNode:(r,e,t)=>Ql.YAMLSeq.from(r,e,t)};Xl.seq=Rg});var Sr=T(Zl=>{"use strict";var Cg=gr(),Ng={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),Cg.stringifyString(r,e,t,n)}};Zl.string=Ng});var Jn=T(ru=>{"use strict";var eu=U(),tu={identify:r=>r==null,createNode:()=>new eu.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new eu.Scalar(null),stringify:({source:r},e)=>typeof r=="string"&&tu.test.test(r)?r:e.options.nullStr};ru.nullTag=tu});var lo=T(su=>{"use strict";var _g=U(),nu={identify:r=>typeof r=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:r=>new _g.Scalar(r[0]==="t"||r[0]==="T"),stringify({source:r,value:e},t){if(r&&nu.test.test(r)){let n=r[0]==="t"||r[0]==="T";if(e===n)return r}return e?t.options.trueStr:t.options.falseStr}};su.boolTag=nu});var Nt=T(iu=>{"use strict";function Ig({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}iu.stringifyNumber=Ig});var fo=T(Kn=>{"use strict";var Lg=U(),uo=Nt(),$g={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:uo.stringifyNumber},Mg={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():uo.stringifyNumber(r)}},Dg={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 Lg.Scalar(parseFloat(r)),t=r.indexOf(".");return t!==-1&&r[r.length-1]==="0"&&(e.minFractionDigits=r.length-t-1),e},stringify:uo.stringifyNumber};Kn.float=Dg;Kn.floatExp=Mg;Kn.floatNaN=$g});var mo=T(Hn=>{"use strict";var ou=Nt(),Wn=r=>typeof r=="bigint"||Number.isInteger(r),po=(r,e,t,{intAsBigInt:n})=>n?BigInt(r):parseInt(r.substring(e),t);function au(r,e,t){let{value:n}=r;return Wn(n)&&n>=0?t+n.toString(e):ou.stringifyNumber(r)}var Bg={identify:r=>Wn(r)&&r>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(r,e,t)=>po(r,2,8,t),stringify:r=>au(r,8,"0o")},jg={identify:Wn,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(r,e,t)=>po(r,0,10,t),stringify:ou.stringifyNumber},qg={identify:r=>Wn(r)&&r>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(r,e,t)=>po(r,2,16,t),stringify:r=>au(r,16,"0x")};Hn.int=jg;Hn.intHex=qg;Hn.intOct=Bg});var lu=T(cu=>{"use strict";var Fg=Rt(),Ug=Jn(),Jg=Ct(),Kg=Sr(),Wg=lo(),ho=fo(),go=mo(),Hg=[Fg.map,Jg.seq,Kg.string,Ug.nullTag,Wg.boolTag,go.intOct,go.int,go.intHex,ho.floatNaN,ho.floatExp,ho.float];cu.schema=Hg});var du=T(fu=>{"use strict";var Vg=U(),Yg=Rt(),Gg=Ct();function uu(r){return typeof r=="bigint"||Number.isInteger(r)}var Vn=({value:r})=>JSON.stringify(r),zg=[{identify:r=>typeof r=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:r=>r,stringify:Vn},{identify:r=>r==null,createNode:()=>new Vg.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:Vn},{identify:r=>typeof r=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:r=>r==="true",stringify:Vn},{identify:uu,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})=>uu(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:Vn}],Qg={default:!0,tag:"",test:/^/,resolve(r,e){return e(`Unresolved plain scalar ${JSON.stringify(r)}`),r}},Xg=[Yg.map,Gg.seq].concat(zg,Qg);fu.schema=Xg});var bo=T(pu=>{"use strict";var kr=mn("buffer"),yo=U(),Zg=gr(),ey={identify:r=>r instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(r,e){if(typeof kr.Buffer=="function")return kr.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 kr.Buffer=="function")a=o instanceof kr.Buffer?o.toString("base64"):kr.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=yo.Scalar.BLOCK_LITERAL),e!==yo.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===yo.Scalar.BLOCK_LITERAL?`
|
|
63
|
+
`:" ")}return Zg.stringifyString({comment:r,type:e,value:a},n,s,i)}};pu.binary=ey});var zn=T(Gn=>{"use strict";var Yn=I(),wo=qe(),ty=U(),ry=Je();function mu(r,e){if(Yn.isSeq(r))for(let t=0;t<r.items.length;++t){let n=r.items[t];if(!Yn.isPair(n)){if(Yn.isMap(n)){n.items.length>1&&e("Each pair must have its own sequence indicator");let s=n.items[0]||new wo.Pair(new ty.Scalar(null));if(n.commentBefore&&(s.key.commentBefore=s.key.commentBefore?`${n.commentBefore}
|
|
64
64
|
${s.key.commentBefore}`:n.commentBefore),n.comment){let i=s.value??s.key;i.comment=i.comment?`${n.comment}
|
|
65
|
-
${i.comment}`:n.comment}n=s}r.items[t]=Yn.isPair(n)?n:new bo.Pair(n)}}else e("Expected a sequence for this tag");return r}function pu(r,e,t){let{replacer:n}=t,s=new ey.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(bo.createPair(a,c,t))}return s}var ty={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:du,createNode:pu};Gn.createPairs=pu;Gn.pairs=ty;Gn.resolvePairs=du});var So=T(vo=>{"use strict";var mu=I(),wo=Me(),xr=Ue(),ry=Je(),hu=zn(),st=class r extends ry.YAMLSeq{constructor(){super(),this.add=xr.YAMLMap.prototype.add.bind(this),this.delete=xr.YAMLMap.prototype.delete.bind(this),this.get=xr.YAMLMap.prototype.get.bind(this),this.has=xr.YAMLMap.prototype.has.bind(this),this.set=xr.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(mu.isPair(s)?(i=wo.toJS(s.key,"",t),o=wo.toJS(s.value,i,t)):i=wo.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}};st.tag="tag:yaml.org,2002:omap";var ny={collection:"seq",identify:r=>r instanceof Map,nodeClass:st,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)mu.isScalar(s)&&(n.includes(s.value)?e(`Ordered maps must not include duplicate keys: ${s.value}`):n.push(s.value));return Object.assign(new st,t)},createNode:(r,e,t)=>st.from(r,e,t)};vo.YAMLOMap=st;vo.omap=ny});var vu=T(ko=>{"use strict";var gu=U();function yu({value:r,source:e},t){return e&&(r?bu:wu).test.test(e)?e:r?t.options.trueStr:t.options.falseStr}var bu={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 gu.Scalar(!0),stringify:yu},wu={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 gu.Scalar(!1),stringify:yu};ko.falseTag=wu;ko.trueTag=bu});var Su=T(Qn=>{"use strict";var sy=U(),xo=Nt(),iy={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:xo.stringifyNumber},oy={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():xo.stringifyNumber(r)}},ay={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 sy.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:xo.stringifyNumber};Qn.float=ay;Qn.floatExp=oy;Qn.floatNaN=iy});var xu=T(Ar=>{"use strict";var ku=Nt(),Er=r=>typeof r=="bigint"||Number.isInteger(r);function Xn(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 Eo(r,e,t){let{value:n}=r;if(Er(n)){let s=n.toString(e);return n<0?"-"+t+s.substr(1):t+s}return ku.stringifyNumber(r)}var cy={identify:Er,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(r,e,t)=>Xn(r,2,2,t),stringify:r=>Eo(r,2,"0b")},ly={identify:Er,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(r,e,t)=>Xn(r,1,8,t),stringify:r=>Eo(r,8,"0")},uy={identify:Er,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(r,e,t)=>Xn(r,0,10,t),stringify:ku.stringifyNumber},fy={identify:Er,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(r,e,t)=>Xn(r,2,16,t),stringify:r=>Eo(r,16,"0x")};Ar.int=uy;Ar.intBin=cy;Ar.intHex=fy;Ar.intOct=ly});var To=T(Ao=>{"use strict";var ts=I(),Zn=qe(),es=Ue(),it=class r extends es.YAMLMap{constructor(e){super(e),this.tag=r.tag}add(e){let t;ts.isPair(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new Zn.Pair(e.key,null):t=new Zn.Pair(e,null),es.findPair(this.items,t.key)||this.items.push(t)}get(e,t){let n=es.findPair(this.items,e);return!t&&ts.isPair(n)?ts.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=es.findPair(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new Zn.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(Zn.createPair(o,null,n));return i}};it.tag="tag:yaml.org,2002:set";var dy={collection:"map",identify:r=>r instanceof Set,nodeClass:it,default:!1,tag:"tag:yaml.org,2002:set",createNode:(r,e,t)=>it.from(r,e,t),resolve(r,e){if(ts.isMap(r)){if(r.hasAllNullValues(!0))return Object.assign(new it,r);e("Set items must all have null values")}else e("Expected a mapping for this tag");return r}};Ao.YAMLSet=it;Ao.set=dy});var Po=T(rs=>{"use strict";var py=Nt();function Oo(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 Eu(r){let{value:e}=r,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return py.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 my={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})=>Oo(r,t),stringify:Eu},hy={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=>Oo(r,!1),stringify:Eu},Au={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(Au.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=Oo(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$/,"")??""};rs.floatTime=hy;rs.intTime=my;rs.timestamp=Au});var Pu=T(Ou=>{"use strict";var gy=Rt(),yy=Jn(),by=Ct(),wy=Sr(),vy=yo(),Tu=vu(),Ro=Su(),ns=xu(),Sy=$n(),ky=So(),xy=zn(),Ey=To(),Co=Po(),Ay=[gy.map,by.seq,wy.string,yy.nullTag,Tu.trueTag,Tu.falseTag,ns.intBin,ns.intOct,ns.int,ns.intHex,Ro.floatNaN,Ro.floatExp,Ro.float,vy.binary,Sy.merge,ky.omap,xy.pairs,Ey.set,Co.intTime,Co.floatTime,Co.timestamp];Ou.schema=Ay});var Bu=T(Io=>{"use strict";var _u=Rt(),Ty=Jn(),Iu=Ct(),Oy=Sr(),Py=co(),No=uo(),_o=po(),Ry=au(),Cy=uu(),Lu=yo(),Tr=$n(),$u=So(),Mu=zn(),Ru=Pu(),Du=To(),ss=Po(),Cu=new Map([["core",Ry.schema],["failsafe",[_u.map,Iu.seq,Oy.string]],["json",Cy.schema],["yaml11",Ru.schema],["yaml-1.1",Ru.schema]]),Nu={binary:Lu.binary,bool:Py.boolTag,float:No.float,floatExp:No.floatExp,floatNaN:No.floatNaN,floatTime:ss.floatTime,int:_o.int,intHex:_o.intHex,intOct:_o.intOct,intTime:ss.intTime,map:_u.map,merge:Tr.merge,null:Ty.nullTag,omap:$u.omap,pairs:Mu.pairs,seq:Iu.seq,set:Du.set,timestamp:ss.timestamp},Ny={"tag:yaml.org,2002:binary":Lu.binary,"tag:yaml.org,2002:merge":Tr.merge,"tag:yaml.org,2002:omap":$u.omap,"tag:yaml.org,2002:pairs":Mu.pairs,"tag:yaml.org,2002:set":Du.set,"tag:yaml.org,2002:timestamp":ss.timestamp};function _y(r,e,t){let n=Cu.get(e);if(n&&!r)return t&&!n.includes(Tr.merge)?n.concat(Tr.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(Tr.merge)),s.reduce((i,o)=>{let a=typeof o=="string"?Nu[o]:o;if(!a){let c=JSON.stringify(o),l=Object.keys(Nu).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},[])}Io.coreKnownTags=Ny;Io.getTags=_y});var Mo=T(ju=>{"use strict";var Lo=I(),Iy=Rt(),Ly=Ct(),$y=Sr(),is=Bu(),My=(r,e)=>r.key<e.key?-1:r.key>e.key?1:0,$o=class r{constructor({compat:e,customTags:t,merge:n,resolveKnownTags:s,schema:i,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?is.getTags(e,"compat"):e?is.getTags(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=s?is.coreKnownTags:{},this.tags=is.getTags(t,this.name,n),this.toStringOptions=a??null,Object.defineProperty(this,Lo.MAP,{value:Iy.map}),Object.defineProperty(this,Lo.SCALAR,{value:$y.string}),Object.defineProperty(this,Lo.SEQ,{value:Ly.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?My:null}clone(){let e=Object.create(r.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};ju.Schema=$o});var Fu=T(qu=>{"use strict";var Dy=I(),Do=yr(),Or=pr();function By(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=Do.createStringifyContext(r,e),{commentString:i}=s.options;if(r.commentBefore){t.length!==1&&t.unshift("");let c=i(r.commentBefore);t.unshift(Or.indentComment(c,""))}let o=!1,a=null;if(r.contents){if(Dy.isNode(r.contents)){if(r.contents.spaceBefore&&n&&t.push(""),r.contents.commentBefore){let f=i(r.contents.commentBefore);t.push(Or.indentComment(f,""))}s.forceBlockIndent=!!r.comment,a=r.contents.comment}let c=a?void 0:()=>o=!0,l=Do.stringify(r.contents,s,()=>a=null,c);a&&(l+=Or.lineComment(l,"",i(a))),(l[0]==="|"||l[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${l}`:t.push(l)}else t.push(Do.stringify(r.contents,s));if(r.directives?.docEnd)if(r.comment){let c=i(r.comment);c.includes(`
|
|
65
|
+
${i.comment}`:n.comment}n=s}r.items[t]=Yn.isPair(n)?n:new wo.Pair(n)}}else e("Expected a sequence for this tag");return r}function hu(r,e,t){let{replacer:n}=t,s=new ry.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(wo.createPair(a,c,t))}return s}var ny={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:mu,createNode:hu};Gn.createPairs=hu;Gn.pairs=ny;Gn.resolvePairs=mu});var ko=T(So=>{"use strict";var gu=I(),vo=Me(),xr=Ue(),sy=Je(),yu=zn(),st=class r extends sy.YAMLSeq{constructor(){super(),this.add=xr.YAMLMap.prototype.add.bind(this),this.delete=xr.YAMLMap.prototype.delete.bind(this),this.get=xr.YAMLMap.prototype.get.bind(this),this.has=xr.YAMLMap.prototype.has.bind(this),this.set=xr.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(gu.isPair(s)?(i=vo.toJS(s.key,"",t),o=vo.toJS(s.value,i,t)):i=vo.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=yu.createPairs(e,t,n),i=new this;return i.items=s.items,i}};st.tag="tag:yaml.org,2002:omap";var iy={collection:"seq",identify:r=>r instanceof Map,nodeClass:st,default:!1,tag:"tag:yaml.org,2002:omap",resolve(r,e){let t=yu.resolvePairs(r,e),n=[];for(let{key:s}of t.items)gu.isScalar(s)&&(n.includes(s.value)?e(`Ordered maps must not include duplicate keys: ${s.value}`):n.push(s.value));return Object.assign(new st,t)},createNode:(r,e,t)=>st.from(r,e,t)};So.YAMLOMap=st;So.omap=iy});var ku=T(xo=>{"use strict";var bu=U();function wu({value:r,source:e},t){return e&&(r?vu:Su).test.test(e)?e:r?t.options.trueStr:t.options.falseStr}var vu={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 bu.Scalar(!0),stringify:wu},Su={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 bu.Scalar(!1),stringify:wu};xo.falseTag=Su;xo.trueTag=vu});var xu=T(Qn=>{"use strict";var oy=U(),Eo=Nt(),ay={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:Eo.stringifyNumber},cy={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():Eo.stringifyNumber(r)}},ly={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 oy.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:Eo.stringifyNumber};Qn.float=ly;Qn.floatExp=cy;Qn.floatNaN=ay});var Au=T(Ar=>{"use strict";var Eu=Nt(),Er=r=>typeof r=="bigint"||Number.isInteger(r);function Xn(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 Ao(r,e,t){let{value:n}=r;if(Er(n)){let s=n.toString(e);return n<0?"-"+t+s.substr(1):t+s}return Eu.stringifyNumber(r)}var uy={identify:Er,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(r,e,t)=>Xn(r,2,2,t),stringify:r=>Ao(r,2,"0b")},fy={identify:Er,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(r,e,t)=>Xn(r,1,8,t),stringify:r=>Ao(r,8,"0")},dy={identify:Er,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(r,e,t)=>Xn(r,0,10,t),stringify:Eu.stringifyNumber},py={identify:Er,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(r,e,t)=>Xn(r,2,16,t),stringify:r=>Ao(r,16,"0x")};Ar.int=dy;Ar.intBin=uy;Ar.intHex=py;Ar.intOct=fy});var Oo=T(To=>{"use strict";var ts=I(),Zn=qe(),es=Ue(),it=class r extends es.YAMLMap{constructor(e){super(e),this.tag=r.tag}add(e){let t;ts.isPair(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new Zn.Pair(e.key,null):t=new Zn.Pair(e,null),es.findPair(this.items,t.key)||this.items.push(t)}get(e,t){let n=es.findPair(this.items,e);return!t&&ts.isPair(n)?ts.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=es.findPair(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new Zn.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(Zn.createPair(o,null,n));return i}};it.tag="tag:yaml.org,2002:set";var my={collection:"map",identify:r=>r instanceof Set,nodeClass:it,default:!1,tag:"tag:yaml.org,2002:set",createNode:(r,e,t)=>it.from(r,e,t),resolve(r,e){if(ts.isMap(r)){if(r.hasAllNullValues(!0))return Object.assign(new it,r);e("Set items must all have null values")}else e("Expected a mapping for this tag");return r}};To.YAMLSet=it;To.set=my});var Ro=T(rs=>{"use strict";var hy=Nt();function Po(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 Tu(r){let{value:e}=r,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return hy.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 gy={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})=>Po(r,t),stringify:Tu},yy={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=>Po(r,!1),stringify:Tu},Ou={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(Ou.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=Po(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$/,"")??""};rs.floatTime=yy;rs.intTime=gy;rs.timestamp=Ou});var Cu=T(Ru=>{"use strict";var by=Rt(),wy=Jn(),vy=Ct(),Sy=Sr(),ky=bo(),Pu=ku(),Co=xu(),ns=Au(),xy=$n(),Ey=ko(),Ay=zn(),Ty=Oo(),No=Ro(),Oy=[by.map,vy.seq,Sy.string,wy.nullTag,Pu.trueTag,Pu.falseTag,ns.intBin,ns.intOct,ns.int,ns.intHex,Co.floatNaN,Co.floatExp,Co.float,ky.binary,xy.merge,Ey.omap,Ay.pairs,Ty.set,No.intTime,No.floatTime,No.timestamp];Ru.schema=Oy});var qu=T(Lo=>{"use strict";var Lu=Rt(),Py=Jn(),$u=Ct(),Ry=Sr(),Cy=lo(),_o=fo(),Io=mo(),Ny=lu(),_y=du(),Mu=bo(),Tr=$n(),Du=ko(),Bu=zn(),Nu=Cu(),ju=Oo(),ss=Ro(),_u=new Map([["core",Ny.schema],["failsafe",[Lu.map,$u.seq,Ry.string]],["json",_y.schema],["yaml11",Nu.schema],["yaml-1.1",Nu.schema]]),Iu={binary:Mu.binary,bool:Cy.boolTag,float:_o.float,floatExp:_o.floatExp,floatNaN:_o.floatNaN,floatTime:ss.floatTime,int:Io.int,intHex:Io.intHex,intOct:Io.intOct,intTime:ss.intTime,map:Lu.map,merge:Tr.merge,null:Py.nullTag,omap:Du.omap,pairs:Bu.pairs,seq:$u.seq,set:ju.set,timestamp:ss.timestamp},Iy={"tag:yaml.org,2002:binary":Mu.binary,"tag:yaml.org,2002:merge":Tr.merge,"tag:yaml.org,2002:omap":Du.omap,"tag:yaml.org,2002:pairs":Bu.pairs,"tag:yaml.org,2002:set":ju.set,"tag:yaml.org,2002:timestamp":ss.timestamp};function Ly(r,e,t){let n=_u.get(e);if(n&&!r)return t&&!n.includes(Tr.merge)?n.concat(Tr.merge):n.slice();let s=n;if(!s)if(Array.isArray(r))s=[];else{let i=Array.from(_u.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(Tr.merge)),s.reduce((i,o)=>{let a=typeof o=="string"?Iu[o]:o;if(!a){let c=JSON.stringify(o),l=Object.keys(Iu).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},[])}Lo.coreKnownTags=Iy;Lo.getTags=Ly});var Do=T(Fu=>{"use strict";var $o=I(),$y=Rt(),My=Ct(),Dy=Sr(),is=qu(),By=(r,e)=>r.key<e.key?-1:r.key>e.key?1:0,Mo=class r{constructor({compat:e,customTags:t,merge:n,resolveKnownTags:s,schema:i,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?is.getTags(e,"compat"):e?is.getTags(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=s?is.coreKnownTags:{},this.tags=is.getTags(t,this.name,n),this.toStringOptions=a??null,Object.defineProperty(this,$o.MAP,{value:$y.map}),Object.defineProperty(this,$o.SCALAR,{value:Dy.string}),Object.defineProperty(this,$o.SEQ,{value:My.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?By:null}clone(){let e=Object.create(r.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};Fu.Schema=Mo});var Ju=T(Uu=>{"use strict";var jy=I(),Bo=yr(),Or=pr();function qy(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=Bo.createStringifyContext(r,e),{commentString:i}=s.options;if(r.commentBefore){t.length!==1&&t.unshift("");let c=i(r.commentBefore);t.unshift(Or.indentComment(c,""))}let o=!1,a=null;if(r.contents){if(jy.isNode(r.contents)){if(r.contents.spaceBefore&&n&&t.push(""),r.contents.commentBefore){let f=i(r.contents.commentBefore);t.push(Or.indentComment(f,""))}s.forceBlockIndent=!!r.comment,a=r.contents.comment}let c=a?void 0:()=>o=!0,l=Bo.stringify(r.contents,s,()=>a=null,c);a&&(l+=Or.lineComment(l,"",i(a))),(l[0]==="|"||l[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${l}`:t.push(l)}else t.push(Bo.stringify(r.contents,s));if(r.directives?.docEnd)if(r.comment){let c=i(r.comment);c.includes(`
|
|
66
66
|
`)?(t.push("..."),t.push(Or.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(Or.indentComment(i(c),"")))}return t.join(`
|
|
67
67
|
`)+`
|
|
68
|
-
`}
|
|
68
|
+
`}Uu.stringifyDocument=qy});var Pr=T(Ku=>{"use strict";var Fy=fr(),_t=Tn(),se=I(),Uy=qe(),Jy=Me(),Ky=Do(),Wy=Ju(),jo=kn(),Hy=Ui(),Vy=dr(),qo=Fi(),Fo=class r{constructor(e,t,n){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,se.NODE_TYPE,{value:se.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 qo.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,{[se.NODE_TYPE]:{value:se.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=se.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){It(this.contents)&&this.contents.add(e)}addIn(e,t){It(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let n=jo.anchorNames(this);e.anchor=!t||n.has(t)?jo.findNewAnchor(t||"a",n):t}return new Fy.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 g=x=>typeof x=="number"||x instanceof String||x instanceof Number,k=t.filter(g).map(String);k.length>0&&(t=t.concat(k)),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}=jo.createNodeAnchors(this,o||"a"),y={aliasDuplicateObjects:i??!0,keepUndefined:c??!1,onAnchor:u,onTagObj:l,replacer:s,schema:this.schema,sourceObjects:p},m=Vy.createNode(e,f,y);return a&&se.isCollection(m)&&(m.flow=!0),d(),m}createPair(e,t,n={}){let s=this.createNode(e,null,n),i=this.createNode(t,null,n);return new Uy.Pair(s,i)}delete(e){return It(this.contents)?this.contents.delete(e):!1}deleteIn(e){return _t.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):It(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return se.isCollection(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return _t.isEmptyPath(e)?!t&&se.isScalar(this.contents)?this.contents.value:this.contents:se.isCollection(this.contents)?this.contents.getIn(e,t):void 0}has(e){return se.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return _t.isEmptyPath(e)?this.contents!==void 0:se.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=_t.collectionFromPath(this.schema,[e],t):It(this.contents)&&this.contents.set(e,t)}setIn(e,t){_t.isEmptyPath(e)?this.contents=t:this.contents==null?this.contents=_t.collectionFromPath(this.schema,Array.from(e),t):It(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let n;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new qo.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 qo.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 Ky.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"?Hy.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 Wy.stringifyDocument(this,e)}};function It(r){if(se.isCollection(r))return!0;throw new Error("Expected a YAML collection as document contents")}Ku.Document=Fo});var Nr=T(Cr=>{"use strict";var Rr=class extends Error{constructor(e,t,n,s){super(),this.name=e,this.code=n,this.message=s,this.pos=t}},Uo=class extends Rr{constructor(e,t,n){super("YAMLParseError",e,t,n)}},Jo=class extends Rr{constructor(e,t,n){super("YAMLWarning",e,t,n)}},Yy=(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
|
-
`}};Cr.YAMLError=Rr;Cr.YAMLParseError=
|
|
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(
|
|
75
|
-
`+m.comment:a.comment=m.comment);continue}(m.newlineAfterProp||
|
|
76
|
-
`+h.comment:x.comment=h.comment);let b=new
|
|
77
|
-
`+S.comment:l.comment=S.comment),u=S.end;continue}!o&&t.options.strict&&
|
|
78
|
-
`+O:E.comment=O,S.comment=S.comment.substring(O.length+1)}}if(!o&&!b&&!S.found){let O=v?r(t,v,S,s):e(t,S.end,b,null,S,s);l.items.push(O),u=O.range[2],
|
|
79
|
-
`+_.comment:E.comment=_.comment);let Y=new
|
|
80
|
-
`+g.comment:l.comment=g.comment),l.range=[n.offset,m,g.offset]}else l.range=[n.offset,m,m];return l}
|
|
73
|
+
`}};Cr.YAMLError=Rr;Cr.YAMLParseError=Uo;Cr.YAMLWarning=Jo;Cr.prettifyError=Yy});var _r=T(Wu=>{"use strict";function Gy(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,y=!1,m=null,g=null,k=null,x=null,h=null,b=null,v=null;for(let E of r)switch(y&&(E.type!=="space"&&E.type!=="newline"&&E.type!=="comma"&&i(E.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),y=!1),m&&(l&&E.type!=="comment"&&E.type!=="newline"&&i(m,"TAB_AS_INDENT","Tabs are not allowed as indentation"),m=null),E.type){case"space":!e&&(t!=="doc-start"||n?.type!=="flow-collection")&&E.source.includes(" ")&&(m=E),f=!0;break;case"comment":{f||i(E,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let _=E.source.substring(1)||" ";u?u+=d+_:u=_,d="",l=!1;break}case"newline":l?u?u+=E.source:(!b||t!=="seq-item-ind")&&(c=!0):d+=E.source,l=!0,p=!0,(g||k)&&(x=E),f=!0;break;case"anchor":g&&i(E,"MULTIPLE_ANCHORS","A node can have at most one anchor"),E.source.endsWith(":")&&i(E.offset+E.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),g=E,v??(v=E.offset),l=!1,f=!1,y=!0;break;case"tag":{k&&i(E,"MULTIPLE_TAGS","A node can have at most one tag"),k=E,v??(v=E.offset),l=!1,f=!1,y=!0;break}case t:(g||k)&&i(E,"BAD_PROP_ORDER",`Anchors and tags must be after the ${E.source} indicator`),b&&i(E,"UNEXPECTED_TOKEN",`Unexpected ${E.source} in ${e??"collection"}`),b=E,l=t==="seq-item-ind"||t==="explicit-key-ind",f=!1;break;case"comma":if(e){h&&i(E,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),h=E,l=!1,f=!1;break}default:i(E,"UNEXPECTED_TOKEN",`Unexpected ${E.type} token`),l=!1,f=!1}let S=r[r.length-1],O=S?S.offset+S.source.length:s;return y&&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"),m&&(l&&m.indent<=o||n?.type==="block-map"||n?.type==="block-seq")&&i(m,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:h,found:b,spaceBefore:c,comment:u,hasNewline:p,anchor:g,tag:k,newlineAfterProp:x,end:O,start:v??O}}Wu.resolveProps=Gy});var os=T(Hu=>{"use strict";function Ko(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
|
+
`))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(Ko(e.key)||Ko(e.value))return!0}return!1;default:return!0}}Hu.containsNewline=Ko});var Wo=T(Vu=>{"use strict";var zy=os();function Qy(r,e,t){if(e?.type==="flow-collection"){let n=e.end[0];n.indent===r&&(n.source==="]"||n.source==="}")&&zy.containsNewline(e)&&t(n,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}Vu.flowIndentCheck=Qy});var Ho=T(Gu=>{"use strict";var Yu=I();function Xy(r,e,t){let{uniqueKeys:n}=r.options;if(n===!1)return!1;let s=typeof n=="function"?n:(i,o)=>i===o||Yu.isScalar(i)&&Yu.isScalar(o)&&i.value===o.value;return e.some(i=>s(i.key,t))}Gu.mapIncludes=Xy});var tf=T(ef=>{"use strict";var zu=qe(),Zy=Ue(),Qu=_r(),eb=os(),Xu=Wo(),tb=Ho(),Zu="All mapping items must start at the same column";function rb({composeNode:r,composeEmptyNode:e},t,n,s,i){let o=i?.nodeClass??Zy.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:y}=f,m=Qu.resolveProps(u,{indicator:"explicit-key-ind",next:d??p?.[0],offset:c,onError:s,parentIndent:n.indent,startOnNewline:!0}),g=!m.found;if(g){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)),!m.anchor&&!m.tag&&!p){l=m.end,m.comment&&(a.comment?a.comment+=`
|
|
75
|
+
`+m.comment:a.comment=m.comment);continue}(m.newlineAfterProp||eb.containsNewline(d))&&s(d??u[u.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else m.found?.indent!==n.indent&&s(c,"BAD_INDENT",Zu);t.atKey=!0;let k=m.end,x=d?r(t,d,m,s):e(t,k,u,null,m,s);t.schema.compat&&Xu.flowIndentCheck(n.indent,d,s),t.atKey=!1,tb.mapIncludes(t,a.items,x)&&s(k,"DUPLICATE_KEY","Map keys must be unique");let h=Qu.resolveProps(p??[],{indicator:"map-value-ind",next:y,offset:x.range[2],onError:s,parentIndent:n.indent,startOnNewline:!d||d.type==="block-scalar"});if(c=h.end,h.found){g&&(y?.type==="block-map"&&!h.hasNewline&&s(c,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&m.start<h.found.offset-1024&&s(x.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));let b=y?r(t,y,h,s):e(t,c,p,null,h,s);t.schema.compat&&Xu.flowIndentCheck(n.indent,y,s),c=b.range[2];let v=new zu.Pair(x,b);t.options.keepSourceTokens&&(v.srcToken=f),a.items.push(v)}else{g&&s(x.range,"MISSING_CHAR","Implicit map keys need to be followed by map values"),h.comment&&(x.comment?x.comment+=`
|
|
76
|
+
`+h.comment:x.comment=h.comment);let b=new zu.Pair(x);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}ef.resolveBlockMap=rb});var nf=T(rf=>{"use strict";var nb=Je(),sb=_r(),ib=Wo();function ob({composeNode:r,composeEmptyNode:e},t,n,s,i){let o=i?.nodeClass??nb.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=sb.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&&ib.flowIndentCheck(n.indent,u,s),c=p.range[2],a.items.push(p)}return a.range=[n.offset,c,l??c],a}rf.resolveBlockSeq=ob});var Lt=T(sf=>{"use strict";function ab(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}}sf.resolveEnd=ab});var lf=T(cf=>{"use strict";var cb=I(),lb=qe(),of=Ue(),ub=Je(),fb=Lt(),af=_r(),db=os(),pb=Ho(),Vo="Block collections are not allowed within flow collections",Yo=r=>r&&(r.type==="block-map"||r.type==="block-seq");function mb({composeNode:r,composeEmptyNode:e},t,n,s,i){let o=n.start.source==="{",a=o?"flow map":"flow sequence",c=i?.nodeClass??(o?of.YAMLMap:ub.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 g=0;g<n.items.length;++g){let k=n.items[g],{start:x,key:h,sep:b,value:v}=k,S=af.resolveProps(x,{flow:a,indicator:"explicit-key-ind",next:h??b?.[0],offset:u,onError:s,parentIndent:n.indent,startOnNewline:!1});if(!S.found){if(!S.anchor&&!S.tag&&!b&&!v){g===0&&S.comma?s(S.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${a}`):g<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&&db.containsNewline(h)&&s(h,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(g===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 O="";e:for(let E of x)switch(E.type){case"comma":case"space":break;case"comment":O=E.source.substring(1);break e;default:break e}if(O){let E=l.items[l.items.length-1];cb.isPair(E)&&(E=E.value??E.key),E.comment?E.comment+=`
|
|
78
|
+
`+O:E.comment=O,S.comment=S.comment.substring(O.length+1)}}if(!o&&!b&&!S.found){let O=v?r(t,v,S,s):e(t,S.end,b,null,S,s);l.items.push(O),u=O.range[2],Yo(v)&&s(O.range,"BLOCK_IN_FLOW",Vo)}else{t.atKey=!0;let O=S.end,E=h?r(t,h,S,s):e(t,O,x,null,S,s);Yo(h)&&s(E.range,"BLOCK_IN_FLOW",Vo),t.atKey=!1;let _=af.resolveProps(b??[],{flow:a,indicator:"map-value-ind",next:v,offset:E.range[2],onError:s,parentIndent:n.indent,startOnNewline:!1});if(_.found){if(!o&&!S.found&&t.options.strict){if(b)for(let M of b){if(M===_.found)break;if(M.type==="newline"){s(M,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}S.start<_.found.offset-1024&&s(_.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(_.start,"MISSING_CHAR",`Missing , or : between ${a} items`));let ee=v?r(t,v,_,s):_.found?e(t,_.end,b,null,_,s):null;ee?Yo(v)&&s(ee.range,"BLOCK_IN_FLOW",Vo):_.comment&&(E.comment?E.comment+=`
|
|
79
|
+
`+_.comment:E.comment=_.comment);let Y=new lb.Pair(E,ee);if(t.options.keepSourceTokens&&(Y.srcToken=k),o){let M=l;pb.mapIncludes(t,M.items,E)&&s(O,"DUPLICATE_KEY","Map keys must be unique"),M.items.push(Y)}else{let M=new of.YAMLMap(t.schema);M.flow=!0,M.items.push(Y);let w=(ee??E).range;M.range=[E.range[0],w[1],w[2]],l.items.push(M)}u=ee?ee.range[2]:_.end}}let d=o?"}":"]",[p,...y]=n.end,m=u;if(p?.source===d)m=p.offset+p.source.length;else{let g=a[0].toUpperCase()+a.substring(1),k=f?`${g} must end with a ${d}`:`${g} in block collection must be sufficiently indented and end with a ${d}`;s(u,f?"MISSING_CHAR":"BAD_INDENT",k),p&&p.source.length!==1&&y.unshift(p)}if(y.length>0){let g=fb.resolveEnd(y,m,t.options.strict,s);g.comment&&(l.comment?l.comment+=`
|
|
80
|
+
`+g.comment:l.comment=g.comment),l.range=[n.offset,m,g.offset]}else l.range=[n.offset,m,m];return l}cf.resolveFlowCollection=mb});var ff=T(uf=>{"use strict";var hb=I(),gb=U(),yb=Ue(),bb=Je(),wb=tf(),vb=nf(),Sb=lf();function Go(r,e,t,n,s,i){let o=t.type==="block-map"?wb.resolveBlockMap(r,e,t,n,i):t.type==="block-seq"?vb.resolveBlockSeq(r,e,t,n,i):Sb.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 kb(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,y=d&&i?d.offset>i.offset?d:i:d??i;y&&(!p||p.offset<y.offset)&&s(y,"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===yb.YAMLMap.tagName&&a==="map"||o===bb.YAMLSeq.tagName&&a==="seq")return Go(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),Go(r,e,t,s,o)}let l=Go(r,e,t,s,o,c),f=c.resolve?.(l,d=>s(i,"TAG_RESOLVE_FAILED",d),e.options)??l,u=hb.isNode(f)?f:new gb.Scalar(f);return u.range=l.range,u.tag=o,c?.format&&(u.format=c.format),u}uf.composeCollection=kb});var Qo=T(df=>{"use strict";var zo=U();function xb(r,e,t){let n=e.offset,s=Eb(e,r.options.strict,t);if(!s)return{value:"",type:null,comment:"",range:[n,n,n]};let i=s.mode===">"?zo.Scalar.BLOCK_FOLDED:zo.Scalar.BLOCK_LITERAL,o=e.source?Ab(e.source):[],a=o.length;for(let m=o.length-1;m>=0;--m){let g=o[m][1];if(g===""||g==="\r")a=m;else break}if(a===0){let m=s.chomp==="+"&&o.length>0?`
|
|
81
81
|
`.repeat(Math.max(1,o.length-1)):"",g=n+s.length;return e.source&&(g+=e.source.length),{value:m,type:i,comment:s.comment,range:[n,g,g]}}let c=e.indent+s.indent,l=e.offset+s.length,f=0;for(let m=0;m<a;++m){let[g,k]=o[m];if(k===""||k==="\r")s.indent===0&&g.length>c&&(c=g.length);else{g.length<c&&t(l+g.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator"),s.indent===0&&(c=g.length),f=m,c===0&&!r.atRoot&&t(l,"BAD_INDENT","Block scalar values in collections must be indented");break}l+=g.length+k.length+1}for(let m=o.length-1;m>=a;--m)o[m][0].length>c&&(a=m+1);let u="",d="",p=!1;for(let m=0;m<f;++m)u+=o[m][0].slice(c)+`
|
|
82
|
-
`;for(let m=f;m<a;++m){let[g,k]=o[m];l+=g.length+k.length+1;let x=k[k.length-1]==="\r";if(x&&(k=k.slice(0,-1)),k&&g.length<c){let b=`Block scalar lines must not be less indented than their ${s.indent?"explicit indentation indicator":"first line"}`;t(l-k.length-(x?2:1),"BAD_INDENT",b),g=""}i===
|
|
82
|
+
`;for(let m=f;m<a;++m){let[g,k]=o[m];l+=g.length+k.length+1;let x=k[k.length-1]==="\r";if(x&&(k=k.slice(0,-1)),k&&g.length<c){let b=`Block scalar lines must not be less indented than their ${s.indent?"explicit indentation indicator":"first line"}`;t(l-k.length-(x?2:1),"BAD_INDENT",b),g=""}i===zo.Scalar.BLOCK_LITERAL?(u+=d+g.slice(c)+k,d=`
|
|
83
83
|
`):g.length>c||k[0]===" "?(d===" "?d=`
|
|
84
84
|
`:!p&&d===`
|
|
85
85
|
`&&(d=`
|
|
@@ -92,46 +92,46 @@ ${l}
|
|
|
92
92
|
`+o[m][0].slice(c);u[u.length-1]!==`
|
|
93
93
|
`&&(u+=`
|
|
94
94
|
`);break;default:u+=`
|
|
95
|
-
`}let y=n+s.length+e.source.length;return{value:u,type:i,comment:s.comment,range:[n,y,y]}}function
|
|
95
|
+
`}let y=n+s.length+e.source.length;return{value:u,type:i,comment:s.comment,range:[n,y,y]}}function Eb({offset:r,props:e},t,n){if(e[0].type!=="block-scalar-header")return n(e[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:s}=e[0],i=s[0],o=0,a="",c=-1;for(let d=1;d<s.length;++d){let p=s[d];if(!a&&(p==="-"||p==="+"))a=p;else{let y=Number(p);!o&&y?o=y:c===-1&&(c=r+d)}}c!==-1&&n(c,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${s}`);let l=!1,f="",u=s.length;for(let d=1;d<e.length;++d){let p=e[d];switch(p.type){case"space":l=!0;case"newline":u+=p.source.length;break;case"comment":t&&!l&&n(p,"MISSING_CHAR","Comments must be separated from other tokens by white space characters"),u+=p.source.length,f=p.source.substring(1);break;case"error":n(p,"UNEXPECTED_TOKEN",p.message),u+=p.source.length;break;default:{let y=`Unexpected token in block scalar header: ${p.type}`;n(p,"UNEXPECTED_TOKEN",y);let m=p.source;m&&typeof m=="string"&&(u+=m.length)}}}return{mode:i,indent:o,chomp:a,comment:f,length:u}}function Ab(r){let e=r.split(/\n( *)/),t=e[0],n=t.match(/^( *)/),i=[n?.[1]?[n[1],t.slice(n[1].length)]:["",t]];for(let o=1;o<e.length;o+=2)i.push([e[o],e[o+1]]);return i}df.resolveBlockScalar=xb});var Zo=T(mf=>{"use strict";var Xo=U(),Tb=Lt();function Ob(r,e,t){let{offset:n,type:s,source:i,end:o}=r,a,c,l=(d,p,y)=>t(n+d,p,y);switch(s){case"scalar":a=Xo.Scalar.PLAIN,c=Pb(i,l);break;case"single-quoted-scalar":a=Xo.Scalar.QUOTE_SINGLE,c=Rb(i,l);break;case"double-quoted-scalar":a=Xo.Scalar.QUOTE_DOUBLE,c=Cb(i,l);break;default:return t(r,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${s}`),{value:"",type:null,comment:"",range:[n,n+i.length,n+i.length]}}let f=n+i.length,u=Tb.resolveEnd(o,f,e,t);return{value:c,type:a,comment:u.comment,range:[n,f,u.offset]}}function Pb(r,e){let t="";switch(r[0]){case" ":t="a tab character";break;case",":t="flow indicator character ,";break;case"%":t="directive indicator character %";break;case"|":case">":{t=`block scalar indicator ${r[0]}`;break}case"@":case"`":{t=`reserved character ${r[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),pf(r)}function Rb(r,e){return(r[r.length-1]!=="'"||r.length===1)&&e(r.length,"MISSING_CHAR","Missing closing 'quote"),pf(r.slice(1,-1)).replace(/''/g,"'")}function pf(r){let e,t;try{e=new RegExp(`(.*?)(?<![ ])[ ]*\r?
|
|
96
96
|
`,"sy"),t=new RegExp(`[ ]*(.*?)(?:(?<![ ])[ ]*)?\r?
|
|
97
97
|
`,"sy")}catch{e=/(.*?)[ \t]*\r?\n/sy,t=/[ \t]*(.*?)[ \t]*\r?\n/sy}let n=e.exec(r);if(!n)return r;let s=n[1],i=" ",o=e.lastIndex;for(t.lastIndex=o;n=t.exec(r);)n[1]===""?i===`
|
|
98
98
|
`?s+=i:i=`
|
|
99
|
-
`:(s+=i+n[1],i=" "),o=t.lastIndex;let a=/[ \t]*(.*)/sy;return a.lastIndex=o,n=a.exec(r),s+i+(n?.[1]??"")}function
|
|
99
|
+
`:(s+=i+n[1],i=" "),o=t.lastIndex;let a=/[ \t]*(.*)/sy;return a.lastIndex=o,n=a.exec(r),s+i+(n?.[1]??"")}function Cb(r,e){let t="";for(let n=1;n<r.length-1;++n){let s=r[n];if(!(s==="\r"&&r[n+1]===`
|
|
100
100
|
`))if(s===`
|
|
101
|
-
`){let{fold:i,offset:o}=
|
|
101
|
+
`){let{fold:i,offset:o}=Nb(r,n);t+=i,n=o}else if(s==="\\"){let i=r[++n],o=_b[i];if(o)t+=o;else if(i===`
|
|
102
102
|
`)for(i=r[n+1];i===" "||i===" ";)i=r[++n+1];else if(i==="\r"&&r[n+1]===`
|
|
103
|
-
`)for(i=r[++n+1];i===" "||i===" ";)i=r[++n+1];else if(i==="x"||i==="u"||i==="U"){let a={x:2,u:4,U:8}[i];t+=
|
|
103
|
+
`)for(i=r[++n+1];i===" "||i===" ";)i=r[++n+1];else if(i==="x"||i==="u"||i==="U"){let a={x:2,u:4,U:8}[i];t+=Ib(r,n+1,a,e),n+=a}else{let a=r.substr(n-1,2);e(n-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),t+=a}}else if(s===" "||s===" "){let i=n,o=r[n+1];for(;o===" "||o===" ";)o=r[++n+1];o!==`
|
|
104
104
|
`&&!(o==="\r"&&r[n+2]===`
|
|
105
|
-
`)&&(t+=n>i?r.slice(i,n+1):s)}else t+=s}return(r[r.length-1]!=='"'||r.length===1)&&e(r.length,"MISSING_CHAR",'Missing closing "quote'),t}function
|
|
105
|
+
`)&&(t+=n>i?r.slice(i,n+1):s)}else t+=s}return(r[r.length-1]!=='"'||r.length===1)&&e(r.length,"MISSING_CHAR",'Missing closing "quote'),t}function Nb(r,e){let t="",n=r[e+1];for(;(n===" "||n===" "||n===`
|
|
106
106
|
`||n==="\r")&&!(n==="\r"&&r[e+2]!==`
|
|
107
107
|
`);)n===`
|
|
108
108
|
`&&(t+=`
|
|
109
|
-
`),e+=1,n=r[e+1];return t||(t=" "),{fold:t,offset:e}}var
|
|
110
|
-
`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function
|
|
109
|
+
`),e+=1,n=r[e+1];return t||(t=" "),{fold:t,offset:e}}var _b={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
|
|
110
|
+
`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function Ib(r,e,t,n){let s=r.substr(e,t),o=s.length===t&&/^[0-9a-fA-F]+$/.test(s)?parseInt(s,16):NaN;if(isNaN(o)){let a=r.substr(e-2,t+2);return n(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),a}return String.fromCodePoint(o)}mf.resolveFlowScalar=Ob});var yf=T(gf=>{"use strict";var ot=I(),hf=U(),Lb=Qo(),$b=Zo();function Mb(r,e,t,n){let{value:s,type:i,comment:o,range:a}=e.type==="block-scalar"?Lb.resolveBlockScalar(r,e,n):$b.resolveFlowScalar(e,r.options.strict,n),c=t?r.directives.tagName(t.source,u=>n(t,"TAG_RESOLVE_FAILED",u)):null,l;r.options.stringKeys&&r.atKey?l=r.schema[ot.SCALAR]:c?l=Db(r.schema,s,c,t,n):e.type==="scalar"?l=Bb(r,s,e,n):l=r.schema[ot.SCALAR];let f;try{let u=l.resolve(s,d=>n(t??e,"TAG_RESOLVE_FAILED",d),r.options);f=ot.isScalar(u)?u:new hf.Scalar(u)}catch(u){let d=u instanceof Error?u.message:String(u);n(t??e,"TAG_RESOLVE_FAILED",d),f=new hf.Scalar(s)}return f.range=a,f.source=s,i&&(f.type=i),c&&(f.tag=c),l.format&&(f.format=l.format),o&&(f.comment=o),f}function Db(r,e,t,n,s){if(t==="!")return r[ot.SCALAR];let i=[];for(let a of r.tags)if(!a.collection&&a.tag===t)if(a.default&&a.test)i.push(a);else return a;for(let a of i)if(a.test?.test(e))return a;let o=r.knownTags[t];return o&&!o.collection?(r.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(s(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),r[ot.SCALAR])}function Bb({atKey:r,directives:e,schema:t},n,s,i){let o=t.tags.find(a=>(a.default===!0||r&&a.default==="key")&&a.test?.test(n))||t[ot.SCALAR];if(t.compat){let a=t.compat.find(c=>c.default&&c.test?.test(n))??t[ot.SCALAR];if(o.tag!==a.tag){let c=e.tagString(o.tag),l=e.tagString(a.tag),f=`Value may be parsed as either ${c} or ${l}`;i(s,"TAG_RESOLVE_FAILED",f,!0)}}return o}gf.composeScalar=Mb});var wf=T(bf=>{"use strict";function jb(r,e,t){if(e){t??(t=e.length);for(let n=t-1;n>=0;--n){let s=e[n];switch(s.type){case"space":case"comment":case"newline":r-=s.source.length;continue}for(s=e[++n];s?.type==="space";)r+=s.source.length,s=e[++n];break}}return r}bf.emptyScalarPosition=jb});var kf=T(ta=>{"use strict";var qb=fr(),Fb=I(),Ub=ff(),vf=yf(),Jb=Lt(),Kb=wf(),Wb={composeNode:Sf,composeEmptyNode:ea};function Sf(r,e,t,n){let s=r.atKey,{spaceBefore:i,comment:o,anchor:a,tag:c}=t,l,f=!0;switch(e.type){case"alias":l=Hb(r,e,n),(a||c)&&n(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":l=vf.composeScalar(r,e,c,n),a&&(l.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":l=Ub.composeCollection(Wb,r,e,t,n),a&&(l.anchor=a.source.substring(1));break;default:{let u=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;n(e,"UNEXPECTED_TOKEN",u),l=ea(r,e.offset,void 0,null,t,n),f=!1}}return a&&l.anchor===""&&n(a,"BAD_ALIAS","Anchor cannot be an empty string"),s&&r.options.stringKeys&&(!Fb.isScalar(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&n(c??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),i&&(l.spaceBefore=!0),o&&(e.type==="scalar"&&e.source===""?l.comment=o:l.commentBefore=o),r.options.keepSourceTokens&&f&&(l.srcToken=e),l}function ea(r,e,t,n,{spaceBefore:s,comment:i,anchor:o,tag:a,end:c},l){let f={type:"scalar",offset:Kb.emptyScalarPosition(e,t,n),indent:-1,source:""},u=vf.composeScalar(r,f,a,l);return o&&(u.anchor=o.source.substring(1),u.anchor===""&&l(o,"BAD_ALIAS","Anchor cannot be an empty string")),s&&(u.spaceBefore=!0),i&&(u.comment=i,u.range[2]=c),u}function Hb({options:r},{offset:e,source:t,end:n},s){let i=new qb.Alias(t.substring(1));i.source===""&&s(e,"BAD_ALIAS","Alias cannot be an empty string"),i.source.endsWith(":")&&s(e+t.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let o=e+t.length,a=Jb.resolveEnd(n,o,r.strict,s);return i.range=[e,o,a.offset],a.comment&&(i.comment=a.comment),i}ta.composeEmptyNode=ea;ta.composeNode=Sf});var Af=T(Ef=>{"use strict";var Vb=Pr(),xf=kf(),Yb=Lt(),Gb=_r();function zb(r,e,{offset:t,start:n,value:s,end:i},o){let a=Object.assign({_directives:e},r),c=new Vb.Document(void 0,a),l={atKey:!1,atRoot:!0,directives:c.directives,options:c.options,schema:c.schema},f=Gb.resolveProps(n,{indicator:"doc-start",next:s??i?.[0],offset:t,onError:o,parentIndent:0,startOnNewline:!0});f.found&&(c.directives.docStart=!0,s&&(s.type==="block-map"||s.type==="block-seq")&&!f.hasNewline&&o(f.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),c.contents=s?xf.composeNode(l,s,f,o):xf.composeEmptyNode(l,f.end,n,null,f,o);let u=c.contents.range[2],d=Yb.resolveEnd(i,u,!1,o);return d.comment&&(c.comment=d.comment),c.range=[t,u,d.offset],c}Ef.composeDoc=zb});var na=T(Pf=>{"use strict";var Qb=mn("process"),Xb=Fi(),Zb=Pr(),Ir=Nr(),Tf=I(),ew=Af(),tw=Lt();function Lr(r){if(typeof r=="number")return[r,r+1];if(Array.isArray(r))return r.length===2?r:[r[0],r[1]];let{offset:e,source:t}=r;return[e,e+(typeof t=="string"?t.length:1)]}function Of(r){let e="",t=!1,n=!1;for(let s=0;s<r.length;++s){let i=r[s];switch(i[0]){case"#":e+=(e===""?"":n?`
|
|
111
111
|
|
|
112
112
|
`:`
|
|
113
|
-
`)+(i.substring(1)||" "),t=!0,n=!1;break;case"%":r[s+1]?.[0]!=="#"&&(s+=1),t=!1;break;default:t||(n=!0),t=!1}}return{comment:e,afterEmptyLine:n}}var
|
|
114
|
-
${n}`:n;else if(s||e.directives.docStart||!i)e.commentBefore=n;else if(
|
|
113
|
+
`)+(i.substring(1)||" "),t=!0,n=!1;break;case"%":r[s+1]?.[0]!=="#"&&(s+=1),t=!1;break;default:t||(n=!0),t=!1}}return{comment:e,afterEmptyLine:n}}var ra=class{constructor(e={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(t,n,s,i)=>{let o=Lr(t);i?this.warnings.push(new Ir.YAMLWarning(o,n,s)):this.errors.push(new Ir.YAMLParseError(o,n,s))},this.directives=new Xb.Directives({version:e.version||"1.2"}),this.options=e}decorate(e,t){let{comment:n,afterEmptyLine:s}=Of(this.prelude);if(n){let i=e.contents;if(t)e.comment=e.comment?`${e.comment}
|
|
114
|
+
${n}`:n;else if(s||e.directives.docStart||!i)e.commentBefore=n;else if(Tf.isCollection(i)&&!i.flow&&i.items.length>0){let o=i.items[0];Tf.isPair(o)&&(o=o.key);let a=o.commentBefore;o.commentBefore=a?`${n}
|
|
115
115
|
${a}`:n}else{let o=i.commentBefore;i.commentBefore=o?`${n}
|
|
116
|
-
${o}`:n}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:
|
|
117
|
-
${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new Ir.YAMLParseError(Lr(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let n=Object.assign({_directives:this.directives},this.options),s=new
|
|
116
|
+
${o}`:n}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:Of(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,n=-1){for(let s of e)yield*this.next(s);yield*this.end(t,n)}*next(e){switch(Qb.env.LOG_STREAM&&console.dir(e,{depth:null}),e.type){case"directive":this.directives.add(e.source,(t,n,s)=>{let i=Lr(e);i[0]+=t,this.onError(i,"BAD_DIRECTIVE",n,s)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let t=ew.composeDoc(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,n=new Ir.YAMLParseError(Lr(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(n):this.doc.errors.push(n);break}case"doc-end":{if(!this.doc){let n="Unexpected doc-end without preceding document";this.errors.push(new Ir.YAMLParseError(Lr(e),"UNEXPECTED_TOKEN",n));break}this.doc.directives.docEnd=!0;let t=tw.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let n=this.doc.comment;this.doc.comment=n?`${n}
|
|
117
|
+
${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new Ir.YAMLParseError(Lr(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let n=Object.assign({_directives:this.directives},this.options),s=new Zb.Document(void 0,n);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),s.range=[0,t,t],this.decorate(s,!1),yield s}}};Pf.Composer=ra});var Nf=T(as=>{"use strict";var rw=Qo(),nw=Zo(),sw=Nr(),Rf=gr();function iw(r,e=!0,t){if(r){let n=(s,i,o)=>{let a=typeof s=="number"?s:Array.isArray(s)?s[0]:s.offset;if(t)t(a,i,o);else throw new sw.YAMLParseError([a,a+1],i,o)};switch(r.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return nw.resolveFlowScalar(r,e,n);case"block-scalar":return rw.resolveBlockScalar({options:{strict:e}},r,n)}}return null}function ow(r,e){let{implicitKey:t=!1,indent:n,inFlow:s=!1,offset:i=-1,type:o="PLAIN"}=e,a=Rf.stringifyString({type:o,value:r},{implicitKey:t,indent:n>0?" ".repeat(n):"",inFlow:s,options:{blockQuote:!0,lineWidth:-1}}),c=e.end??[{type:"newline",offset:-1,indent:n,source:`
|
|
118
118
|
`}];switch(a[0]){case"|":case">":{let l=a.indexOf(`
|
|
119
119
|
`),f=a.substring(0,l),u=a.substring(l+1)+`
|
|
120
|
-
`,d=[{type:"block-scalar-header",offset:i,indent:n,source:f}];return
|
|
121
|
-
`}),{type:"block-scalar",offset:i,indent:n,props:d,source:u}}case'"':return{type:"double-quoted-scalar",offset:i,indent:n,source:a,end:c};case"'":return{type:"single-quoted-scalar",offset:i,indent:n,source:a,end:c};default:return{type:"scalar",offset:i,indent:n,source:a,end:c}}}function
|
|
120
|
+
`,d=[{type:"block-scalar-header",offset:i,indent:n,source:f}];return Cf(d,c)||d.push({type:"newline",offset:-1,indent:n,source:`
|
|
121
|
+
`}),{type:"block-scalar",offset:i,indent:n,props:d,source:u}}case'"':return{type:"double-quoted-scalar",offset:i,indent:n,source:a,end:c};case"'":return{type:"single-quoted-scalar",offset:i,indent:n,source:a,end:c};default:return{type:"scalar",offset:i,indent:n,source:a,end:c}}}function aw(r,e,t={}){let{afterKey:n=!1,implicitKey:s=!1,inFlow:i=!1,type:o}=t,a="indent"in r?r.indent:null;if(n&&typeof a=="number"&&(a+=2),!o)switch(r.type){case"single-quoted-scalar":o="QUOTE_SINGLE";break;case"double-quoted-scalar":o="QUOTE_DOUBLE";break;case"block-scalar":{let l=r.props[0];if(l.type!=="block-scalar-header")throw new Error("Invalid block scalar header");o=l.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:o="PLAIN"}let c=Rf.stringifyString({type:o,value:e},{implicitKey:s||a===null,indent:a!==null&&a>0?" ".repeat(a):"",inFlow:i,options:{blockQuote:!0,lineWidth:-1}});switch(c[0]){case"|":case">":cw(r,c);break;case'"':sa(r,c,"double-quoted-scalar");break;case"'":sa(r,c,"single-quoted-scalar");break;default:sa(r,c,"scalar")}}function cw(r,e){let t=e.indexOf(`
|
|
122
122
|
`),n=e.substring(0,t),s=e.substring(t+1)+`
|
|
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}];
|
|
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
|
|
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})}}}as.createScalarToken=
|
|
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}];Cf(a,"end"in r?r.end:void 0)||a.push({type:"newline",offset:-1,indent:o,source:`
|
|
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 Cf(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 sa(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})}}}as.createScalarToken=ow;as.resolveAsScalar=iw;as.setScalarValue=aw});var If=T(_f=>{"use strict";var lw=r=>"type"in r?ls(r):cs(r);function ls(r){switch(r.type){case"block-scalar":{let e="";for(let t of r.props)e+=ls(t);return e+r.source}case"block-map":case"block-seq":{let e="";for(let t of r.items)e+=cs(t);return e}case"flow-collection":{let e=r.start.source;for(let t of r.items)e+=cs(t);for(let t of r.end)e+=t.source;return e}case"document":{let e=cs(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 cs({start:r,key:e,sep:t,value:n}){let s="";for(let i of r)s+=i.source;if(e&&(s+=ls(e)),t)for(let i of t)s+=i.source;return n&&(s+=ls(n)),s}_f.stringify=lw});var Df=T(Mf=>{"use strict";var ia=Symbol("break visit"),uw=Symbol("skip children"),Lf=Symbol("remove item");function at(r,e){"type"in r&&r.type==="document"&&(r={start:r.start,value:r.value}),$f(Object.freeze([]),r,e)}at.BREAK=ia;at.SKIP=uw;at.REMOVE=Lf;at.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};at.parentCollection=(r,e)=>{let t=at.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===ia)return ia;a===Lf&&(i.items.splice(o,1),o-=1)}}typeof n=="function"&&s==="key"&&(n=n(e,r))}}return typeof n=="function"?n(e,r):n}Mf.visit=at});var us=T(re=>{"use strict";var oa=Nf(),fw=If(),dw=Df(),aa="\uFEFF",ca="",la="",ua="",pw=r=>!!r&&"items"in r,mw=r=>!!r&&(r.type==="scalar"||r.type==="single-quoted-scalar"||r.type==="double-quoted-scalar"||r.type==="block-scalar");function hw(r){switch(r){case aa:return"<BOM>";case ca:return"<DOC>";case la:return"<FLOW_END>";case ua:return"<SCALAR>";default:return JSON.stringify(r)}}function gw(r){switch(r){case aa:return"byte-order-mark";case ca:return"doc-mode";case la:return"flow-error-end";case ua: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}re.createScalarToken=
|
|
128
|
-
`:case"\r":case" ":return!0;default:return!1}}var
|
|
129
|
-
\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}re.createScalarToken=oa.createScalarToken;re.resolveAsScalar=oa.resolveAsScalar;re.setScalarValue=oa.setScalarValue;re.stringify=fw.stringify;re.visit=dw.visit;re.BOM=aa;re.DOCUMENT=ca;re.FLOW_END=la;re.SCALAR=ua;re.isCollection=pw;re.isScalar=mw;re.prettyToken=hw;re.tokenType=gw});var pa=T(jf=>{"use strict";var $r=us();function le(r){switch(r){case void 0:case" ":case`
|
|
128
|
+
`:case"\r":case" ":return!0;default:return!1}}var Bf=new Set("0123456789ABCDEFabcdef"),yw=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),fs=new Set(",[]{}"),bw=new Set(` ,[]{}
|
|
129
|
+
\r `),fa=r=>!r||bw.has(r),da=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]===`
|
|
131
131
|
`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let n=0;for(;t===" ";)t=this.buffer[++n+e];if(t==="\r"){let s=this.buffer[n+e+1];if(s===`
|
|
132
132
|
`||!s&&!this.atEnd)return e+n+1}return t===`
|
|
133
133
|
`||n>=this.indentNext||!t&&!this.atEnd?e+n:-1}if(t==="-"||t==="."){let n=this.buffer.substr(e,3);if((n==="---"||n==="...")&&le(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&e<this.pos)&&(e=this.buffer.indexOf(`
|
|
134
|
-
`,this.pos),this.lineEndPos=e),e===-1?this.atEnd?this.buffer.substring(this.pos):null:(this.buffer[e-1]==="\r"&&(e-=1),this.buffer.substring(this.pos,e))}hasChars(e){return this.pos+e<=this.buffer.length}setNext(e){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=e,null}peek(e){return this.buffer.substr(this.pos,e)}*parseNext(e){switch(e){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let e=this.getLine();if(e===null)return this.setNext("stream");if(e[0]===$r.BOM&&(yield*this.pushCount(1),e=e.substring(1)),e[0]==="%"){let t=e.length,n=e.indexOf("#");for(;n!==-1;){let i=e[n-1];if(i===" "||i===" "){t=n-1;break}else n=e.indexOf("#",n+1)}for(;;){let i=e[t-1];if(i===" "||i===" ")t-=1;else break}let s=(yield*this.pushCount(t))+(yield*this.pushSpaces(!0));return yield*this.pushCount(e.length-s),this.pushNewline(),"stream"}if(this.atLineEnd()){let t=yield*this.pushSpaces(!0);return yield*this.pushCount(e.length-t),yield*this.pushNewline(),"stream"}return yield $r.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let e=this.charAt(0);if(!e&&!this.atEnd)return this.setNext("line-start");if(e==="-"||e==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let t=this.peek(3);if((t==="---"||t==="...")&&le(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,t==="---"?"doc":"stream"}return this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!le(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&le(t)){let n=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=n,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*this.pushIndicators();switch(e[t]){case"#":yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(
|
|
134
|
+
`,this.pos),this.lineEndPos=e),e===-1?this.atEnd?this.buffer.substring(this.pos):null:(this.buffer[e-1]==="\r"&&(e-=1),this.buffer.substring(this.pos,e))}hasChars(e){return this.pos+e<=this.buffer.length}setNext(e){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=e,null}peek(e){return this.buffer.substr(this.pos,e)}*parseNext(e){switch(e){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let e=this.getLine();if(e===null)return this.setNext("stream");if(e[0]===$r.BOM&&(yield*this.pushCount(1),e=e.substring(1)),e[0]==="%"){let t=e.length,n=e.indexOf("#");for(;n!==-1;){let i=e[n-1];if(i===" "||i===" "){t=n-1;break}else n=e.indexOf("#",n+1)}for(;;){let i=e[t-1];if(i===" "||i===" ")t-=1;else break}let s=(yield*this.pushCount(t))+(yield*this.pushSpaces(!0));return yield*this.pushCount(e.length-s),this.pushNewline(),"stream"}if(this.atLineEnd()){let t=yield*this.pushSpaces(!0);return yield*this.pushCount(e.length-t),yield*this.pushNewline(),"stream"}return yield $r.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let e=this.charAt(0);if(!e&&!this.atEnd)return this.setNext("line-start");if(e==="-"||e==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let t=this.peek(3);if((t==="---"||t==="...")&&le(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,t==="---"?"doc":"stream"}return this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!le(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&le(t)){let n=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=n,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*this.pushIndicators();switch(e[t]){case"#":yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(fa),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return t+=yield*this.parseBlockScalarHeader(),t+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-t),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,t,n=-1;do e=yield*this.pushNewline(),e>0?(t=yield*this.pushSpaces(!1),this.indentValue=n=t):t=0,t+=yield*this.pushSpaces(!0);while(e+t>0);let s=this.getLine();if(s===null)return this.setNext("flow");if((n!==-1&&n<this.indentNext&&s[0]!=="#"||n===0&&(s.startsWith("---")||s.startsWith("..."))&&le(s[3]))&&!(n===this.indentNext-1&&this.flowLevel===1&&(s[0]==="]"||s[0]==="}")))return this.flowLevel=0,yield $r.FLOW_END,yield*this.parseLineStart();let i=0;for(;s[i]===",";)i+=yield*this.pushCount(1),i+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(i+=yield*this.pushIndicators(),s[i]){case void 0:return"flow";case"#":return yield*this.pushCount(s.length-i),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(fa),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let o=this.charAt(1);if(this.flowKey||le(o)||o===",")return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){let e=this.charAt(0),t=this.buffer.indexOf(e,this.pos+1);if(e==="'")for(;t!==-1&&this.buffer[t+1]==="'";)t=this.buffer.indexOf("'",t+2);else for(;t!==-1;){let i=0;for(;this.buffer[t-1-i]==="\\";)i+=1;if(i%2===0)break;t=this.buffer.indexOf('"',t+1)}let n=this.buffer.substring(0,t),s=n.indexOf(`
|
|
135
135
|
`,this.pos);if(s!==-1){for(;s!==-1;){let i=this.continueScalar(s+1);if(i===-1)break;s=n.indexOf(`
|
|
136
136
|
`,i)}s!==-1&&(t=s-(n[s-1]==="\r"?2:1))}if(t===-1){if(!this.atEnd)return this.setNext("quoted-scalar");t=this.buffer.length}return yield*this.pushToIndex(t+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let e=this.pos;for(;;){let t=this.buffer[++e];if(t==="+")this.blockScalarKeep=!0;else if(t>"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if(t!=="-")break}return yield*this.pushUntil(t=>le(t)||t==="#")}*parseBlockScalar(){let e=this.pos-1,t=0,n;e:for(let i=this.pos;n=this.buffer[i];++i)switch(n){case" ":t+=1;break;case`
|
|
137
137
|
`:e=i,t=0;break;case"\r":{let o=this.buffer[i+1];if(!o&&!this.atEnd)return this.setNext("block-scalar");if(o===`
|
|
@@ -141,19 +141,19 @@ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.pus
|
|
|
141
141
|
`&&i>=this.pos&&i+1+t>a)e=i;else break}while(!0);return yield $r.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,t=this.pos-1,n=this.pos-1,s;for(;s=this.buffer[++n];)if(s===":"){let i=this.buffer[n+1];if(le(i)||e&&fs.has(i))break;t=n}else if(le(s)){let i=this.buffer[n+1];if(s==="\r"&&(i===`
|
|
142
142
|
`?(n+=1,s=`
|
|
143
143
|
`,i=this.buffer[n+1]):t=n),i==="#"||e&&fs.has(i))break;if(s===`
|
|
144
|
-
`){let o=this.continueScalar(n+1);if(o===-1)break;n=Math.max(n,o-2)}}else{if(e&&fs.has(s))break;t=n}return!s&&!this.atEnd?this.setNext("plain-scalar"):(yield $r.SCALAR,yield*this.pushToIndex(t+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let n=this.buffer.slice(this.pos,e);return n?(yield n,this.pos+=n.length,n.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(
|
|
144
|
+
`){let o=this.continueScalar(n+1);if(o===-1)break;n=Math.max(n,o-2)}}else{if(e&&fs.has(s))break;t=n}return!s&&!this.atEnd?this.setNext("plain-scalar"):(yield $r.SCALAR,yield*this.pushToIndex(t+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let n=this.buffer.slice(this.pos,e);return n?(yield n,this.pos+=n.length,n.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(fa))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let e=this.flowLevel>0,t=this.charAt(1);if(le(t)||e&&fs.has(t))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,t=this.buffer[e];for(;!le(t)&&t!==">";)t=this.buffer[++e];return yield*this.pushToIndex(t===">"?e+1:e,!1)}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(yw.has(t))t=this.buffer[++e];else if(t==="%"&&Bf.has(this.buffer[e+1])&&Bf.has(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===`
|
|
145
145
|
`?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===`
|
|
146
|
-
`?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,n;do n=this.buffer[++t];while(n===" "||e&&n===" ");let s=t-this.pos;return s>0&&(yield this.buffer.substr(this.pos,s),this.pos=t),s}*pushUntil(e){let t=this.pos,n=this.buffer[t];for(;!e(n);)n=this.buffer[++t];return yield*this.pushToIndex(t,!1)}};
|
|
146
|
+
`?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,n;do n=this.buffer[++t];while(n===" "||e&&n===" ");let s=t-this.pos;return s>0&&(yield this.buffer.substr(this.pos,s),this.pos=t),s}*pushUntil(e){let t=this.pos,n=this.buffer[t];for(;!e(n);)n=this.buffer[++t];return yield*this.pushToIndex(t,!1)}};jf.Lexer=da});var ha=T(qf=>{"use strict";var ma=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,n=this.lineStarts.length;for(;t<n;){let i=t+n>>1;this.lineStarts[i]<e?t=i+1:n=i}if(this.lineStarts[t]===e)return{line:t+1,col:1};if(t===0)return{line:0,col:e};let s=this.lineStarts[t-1];return{line:t,col:e-s+1}}}};qf.LineCounter=ma});var ya=T(Wf=>{"use strict";var ww=mn("process"),Ff=us(),vw=pa();function Ke(r,e){for(let t=0;t<r.length;++t)if(r[t].type===e)return!0;return!1}function Uf(r){for(let e=0;e<r.length;++e)switch(r[e].type){case"space":case"comment":case"newline":break;default:return e}return-1}function Kf(r){switch(r?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function ds(r){switch(r.type){case"document":return r.start;case"block-map":{let e=r.items[r.items.length-1];return e.sep??e.start}case"block-seq":return r.items[r.items.length-1].start;default:return[]}}function $t(r){if(r.length===0)return[];let e=r.length;e:for(;--e>=0;)switch(r[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;r[++e]?.type==="space";);return r.splice(e,r.length)}function Jf(r){if(r.start.type==="flow-seq-start")for(let e of r.items)e.sep&&!e.value&&!Ke(e.start,"explicit-key-ind")&&!Ke(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,Kf(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}var ga=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new vw.Lexer,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let n of this.lexer.lex(e,t))yield*this.next(n);t||(yield*this.end())}*next(e){if(this.source=e,ww.env.LOG_TOKENS&&console.log("|",Ff.prettyToken(e)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let t=Ff.tokenType(e);if(t)if(t==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=t,yield*this.step(),t){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let n=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:n,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&e?.type!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e??this.stack.pop();if(!t)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield t;else{let n=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in n?n.indent:0:t.type==="flow-collection"&&n.type==="document"&&(t.indent=0),t.type==="flow-collection"&&Jf(t),n.type){case"document":n.value=t;break;case"block-scalar":n.props.push(t);break;case"block-map":{let s=n.items[n.items.length-1];if(s.value){n.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(s.sep)s.value=t;else{Object.assign(s,{key:t,sep:[]}),this.onKeyLine=!s.explicitKey;return}break}case"block-seq":{let s=n.items[n.items.length-1];s.value?n.items.push({start:[],value:t}):s.value=t;break}case"flow-collection":{let s=n.items[n.items.length-1];!s||s.value?n.items.push({start:[],key:t,sep:[]}):s.sep?s.value=t:Object.assign(s,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if((n.type==="document"||n.type==="block-map"||n.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){let s=t.items[t.items.length-1];s&&!s.sep&&!s.value&&s.start.length>0&&Uf(s.start)===-1&&(t.indent===0||s.start.every(i=>i.type!=="comment"||i.indent<t.indent))&&(n.type==="document"?n.end=s.start:n.items.push({start:s.start}),t.items.splice(-1,1))}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let e={type:"document",offset:this.offset,start:[]};this.type==="doc-start"&&e.start.push(this.sourceToken),this.stack.push(e);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document(e){if(e.value)return yield*this.lineEnd(e);switch(this.type){case"doc-start":{Uf(e.start)!==-1?(yield*this.pop(),yield*this.step()):e.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":e.start.push(this.sourceToken);return}let t=this.startBlockValue(e);t?this.stack.push(t):yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar(e){if(this.type==="map-value-ind"){let t=ds(this.peek(2)),n=$t(t),s;e.end?(s=e.end,s.push(this.sourceToken),delete e.end):s=[this.sourceToken];let i={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:n,key:e,sep:s}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=i}else yield*this.lineEnd(e)}*blockScalar(e){switch(this.type){case"space":case"comment":case"newline":e.props.push(this.sourceToken);return;case"scalar":if(e.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let t=this.source.indexOf(`
|
|
147
147
|
`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`
|
|
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(Ke(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(
|
|
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(Ke(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(Kf(t.key)&&!Ke(t.sep,"newline")){let o=$t(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(Ke(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let o=$t(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]}):Ke(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&&!Ke(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||Ke(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=ds(n),i=$t(s);Jf(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=ds(e),n=$t(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=ds(e),n=$t(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())}}};
|
|
151
|
-
`),t=e.trim();if(
|
|
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=ds(e),n=$t(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=ds(e),n=$t(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())}}};Wf.Parser=ga});var zf=T(Dr=>{"use strict";var Hf=na(),Sw=Pr(),Mr=Nr(),kw=eo(),xw=I(),Ew=ha(),Vf=ya();function Yf(r){let e=r.prettyErrors!==!1;return{lineCounter:r.lineCounter||e&&new Ew.LineCounter||null,prettyErrors:e}}function Aw(r,e={}){let{lineCounter:t,prettyErrors:n}=Yf(e),s=new Vf.Parser(t?.addNewLine),i=new Hf.Composer(e),o=Array.from(i.compose(s.parse(r)));if(n&&t)for(let a of o)a.errors.forEach(Mr.prettifyError(r,t)),a.warnings.forEach(Mr.prettifyError(r,t));return o.length>0?o:Object.assign([],{empty:!0},i.streamInfo())}function Gf(r,e={}){let{lineCounter:t,prettyErrors:n}=Yf(e),s=new Vf.Parser(t?.addNewLine),i=new Hf.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 Mr.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return n&&t&&(o.errors.forEach(Mr.prettifyError(r,t)),o.warnings.forEach(Mr.prettifyError(r,t))),o}function Tw(r,e,t){let n;typeof e=="function"?n=e:t===void 0&&e&&typeof e=="object"&&(t=e);let s=Gf(r,t);if(!s)return null;if(s.warnings.forEach(i=>kw.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 Ow(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 xw.isDocument(r)&&!n?r.toString(t):new Sw.Document(r,n,t).toString(t)}Dr.parse=Tw;Dr.parseAllDocuments=Aw;Dr.parseDocument=Gf;Dr.stringify=Ow});var Xf=T($=>{"use strict";var Pw=na(),Rw=Pr(),Cw=Do(),ba=Nr(),Nw=fr(),We=I(),_w=qe(),Iw=U(),Lw=Ue(),$w=Je(),Mw=us(),Dw=pa(),Bw=ha(),jw=ya(),ps=zf(),Qf=ar();$.Composer=Pw.Composer;$.Document=Rw.Document;$.Schema=Cw.Schema;$.YAMLError=ba.YAMLError;$.YAMLParseError=ba.YAMLParseError;$.YAMLWarning=ba.YAMLWarning;$.Alias=Nw.Alias;$.isAlias=We.isAlias;$.isCollection=We.isCollection;$.isDocument=We.isDocument;$.isMap=We.isMap;$.isNode=We.isNode;$.isPair=We.isPair;$.isScalar=We.isScalar;$.isSeq=We.isSeq;$.Pair=_w.Pair;$.Scalar=Iw.Scalar;$.YAMLMap=Lw.YAMLMap;$.YAMLSeq=$w.YAMLSeq;$.CST=Mw;$.Lexer=Dw.Lexer;$.LineCounter=Bw.LineCounter;$.Parser=jw.Parser;$.parse=ps.parse;$.parseAllDocuments=ps.parseAllDocuments;$.parseDocument=ps.parseDocument;$.stringify=ps.stringify;$.visit=Qf.visit;$.visitAsync=Qf.visitAsync});function Fw(r){try{return JSON.parse(r.trim()),!0}catch{return!1}}function Uw(r){let e=r.trim();if(!e.startsWith("<"))return!1;let t=e.match(qw);return t?or(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 ed(r){return Fw(r)||Uw(r)||Jw(r)}var Zf,qw,wa=R(()=>{ll();Zf=Qm(Xf(),1),qw=/<([a-zA-Z_][\w.-]*)/});function Kw(r){if(!r?.trim())return[];let e=r.replace(/\r\n/g,`
|
|
151
|
+
`),t=e.trim();if(ed(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(`
|
|
154
|
-
`).trim();l&&s.push({text:l,startLine:i+1,endLine:o+1})}};for(let l=0;l<n.length;l++)n[l].trim()?(a>=2&&o>=i&&(c(),i=l),a=0,o=l):a++;return c(),s}function
|
|
154
|
+
`).trim();l&&s.push({text:l,startLine:i+1,endLine:o+1})}};for(let l=0;l<n.length;l++)n[l].trim()?(a>=2&&o>=i&&(c(),i=l),a=0,o=l):a++;return c(),s}function td(r){return Kw(r).map(e=>e.text)}var rd=R(()=>{wa()});var Br=R(()=>{hn();Xc();el();rl();wa();rd();gn()});function Mt(r){return{...Qc(r),server:r.files.get("server.ts")??""}}function ms(r){return!!r.server&&!r.code}var jr=R(()=>{Br();Br()});function Yw(r){if(/^[./]/.test(r)||/^[a-z][a-z0-9+.-]*:/i.test(r))return null;let e=r.split("/");return r.startsWith("@")?e.slice(0,2).join("/"):e[0]}function nd(r){let e=[],t=new Set;for(let n=0;n<r.length;n++)for(let s of Vw)for(let i of r[n].matchAll(s)){let o=Yw(i[1]);o&&!t.has(o)&&(t.add(o),e.push({root:o,lineIndex:n}))}return e}function sd(r){return nd(r.split(`
|
|
155
155
|
`)).map(e=>e.root)}function qr(r,e){if(!r)return[];let{target:t,dependencies:n}=e,s=[],i=r.split(`
|
|
156
|
-
`);for(let o=0;o<i.length;o++){let a=i[o],c=o+1;for(let l of
|
|
156
|
+
`);for(let o=0;o<i.length;o++){let a=i[o],c=o+1;for(let l of Hw)l.targets.includes(t)&&l.pattern.test(a)&&s.push({type:l.type,severity:"error",message:Qw(l.type,c),lineNumber:c,lineContent:a})}return t==="client"&&n&&s.push(...Gw(i,n)),s}function Gw(r,e){let t=new Set(Object.keys(e));return nd(r).filter(({root:n})=>!t.has(n)).map(({root:n,lineIndex:s})=>({type:"UNDECLARED_IMPORT",severity:"error",message:zw(n,s+1),lineNumber:s+1,lineContent:r[s]}))}function zw(r,e){return`Import "${r}" is not declared in config.json dependencies! Found on line ${e}.
|
|
157
157
|
|
|
158
158
|
**CRITICAL**: Every bare import in code.tsx must be declared in the **config.json** "dependencies" block. A bulb that imports a package it doesn't declare is incomplete \u2014 it won't type-check, its versions aren't pinned, and it can't be reliably re-run or ported to typebulb.com.
|
|
159
159
|
|
|
@@ -167,7 +167,7 @@ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.pus
|
|
|
167
167
|
}
|
|
168
168
|
\`\`\`
|
|
169
169
|
|
|
170
|
-
**Fix:** Add a **config.json** block (or extend the existing one) with a "dependencies" entry for "${r}" \u2014 and for every other bare import in code.tsx. Pin a real version where you can (e.g. "react": "^19.2.7").`}function
|
|
170
|
+
**Fix:** Add a **config.json** block (or extend the existing one) with a "dependencies" entry for "${r}" \u2014 and for every other bare import in code.tsx. Pin a real version where you can (e.g. "react": "^19.2.7").`}function Qw(r,e){return r==="URL_IMPORT"?`Direct URL imports are not supported! Found on line ${e}.
|
|
171
171
|
|
|
172
172
|
**CRITICAL**: Import packages by name only. Do NOT use CDN URLs:
|
|
173
173
|
|
|
@@ -321,15 +321,15 @@ import { something } from 'module-name'
|
|
|
321
321
|
const something = require('module-name') // NOT SUPPORTED!
|
|
322
322
|
\`\`\`
|
|
323
323
|
|
|
324
|
-
**Fix:** Replace all \`require()\` calls with ES6 \`import\` statements at the top of the file.`}var ct,lt,
|
|
325
|
-
`)}var Kt,
|
|
326
|
-
`),n=[];if(t.forEach((o,a)=>{let c=
|
|
327
|
-
`)}function
|
|
328
|
-
\u2026[${r.length-5e4} more characters truncated]`:r}var
|
|
329
|
-
`):r==null?"":ve(JSON.stringify(r))}function
|
|
324
|
+
**Fix:** Replace all \`require()\` calls with ES6 \`import\` statements at the top of the file.`}var ct,lt,Hw,Vw,hs=R(()=>{ct=["client"],lt=["client","server"],Hw=[{type:"DYNAMIC_IMPORT",pattern:/\bimport\s*\(\s*['"`]/,targets:ct},{type:"COMMONJS_REQUIRE",pattern:/\brequire\s*\(\s*['"`]/,targets:lt},{type:"JS_EXTENSION_IMPORT",pattern:/from\s+['"][^'"]*\/[^'"]*\.js['"]/,targets:ct},{type:"URL_IMPORT",pattern:/from\s+['"]https?:\/\//,targets:ct},{type:"VERSION_SPECIFIER_IMPORT",pattern:/from\s+['"][^'"]*@[\d^~]/,targets:ct},{type:"REDUNDANT_TB_DECLARATION",pattern:/declare\s+(const|var|let)\s+tb\b/,targets:lt},{type:"CONST_ENUM",pattern:/\bconst\s+enum\b/,targets:lt},{type:"NAMESPACE_DECLARATION",pattern:/\bnamespace\s+\w+/,targets:lt},{type:"COMMONJS_EXPORT_EQUALS",pattern:/\bexport\s*=/,targets:lt},{type:"COMMONJS_IMPORT_EQUALS",pattern:/\bimport\s+\w+\s*=/,targets:lt},{type:"MODULE_DECLARATION",pattern:/\bmodule\s+\w+\s*\{/,targets:lt},{type:"CSS_FILE_IMPORT",pattern:/(?:from|import)\s+['"][^'"]*\.css['"]/,targets:ct},{type:"NAVIGATION",pattern:/window\.(location\.(reload|assign|replace)\s*\(|open\s*\()/,targets:ct},{type:"NAVIGATION",pattern:/window\.location(\.href)?\s*=[^=]/,targets:ct}],Vw=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g]});function $a(r){return(r.includes("://")?r:`http://${r}`).replace(/\/+$/,"")}async function Ce(){let[r,e]=await Promise.all([Dd(),Mv()]);return[...Dv(e),...r]}async function Mv(){if(Jt&&Date.now()-Jt.fetchedAt<=Lv)return Jt.models;let r=await fetch(Iv).catch(()=>null);return!r||!r.ok?Jt?.models??[]:(Jt={models:await r.json(),fetchedAt:Date.now()},Jt.models)}async function Dd(){if(Ks&&Date.now()-Ks.fetchedAt<=$v)return Ks.models;let r=$a(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 Ks={models:e,fetchedAt:Date.now()},e}function Dv(r){let e=new Set(Object.entries(Kt).filter(([,t])=>!!process.env[t]).map(([t])=>t));return r.filter(t=>e.has(t.provider))}function Ma(){return Object.values(Kt).some(r=>!!process.env[r])}async function Ws(){return Ma()||process.env.TB_AI_BASE_URL?!0:(await Dd()).length>0}function Bd(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(`
|
|
325
|
+
`)}var Kt,Iv,Lv,$v,Jt,Ks,Wt=R(()=>{Kt={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"};Iv="https://api.typebulb.com/api/models",Lv=1440*60*1e3,$v=60*1e3,Jt=null,Ks=null});import{realpathSync as Fv}from"fs";import{join as Ba,resolve as Uv}from"path";import{homedir as Jv}from"os";function Gs(){let r=process.env.TYPEBULB_SERVERS_DIR;return r?Ba(r,".."):Ba(Jv(),".typebulb")}function Ne(){return process.env.TYPEBULB_SERVERS_DIR||Ba(Gs(),"servers")}function z(r){let e=Uv(r),t=e;try{t=Fv.native(e)}catch{}return(process.platform==="win32"?t.toLowerCase():t).replace(/\\/g,"/")}function Ud(r,e){let t=z(r),n=z(e);return t.startsWith(n.endsWith("/")?n:n+"/")?!t.includes("/node_modules/"):!1}var zs=R(()=>{});import{readFileSync as Kv,writeFileSync as Wv,mkdirSync as Hv}from"fs";import{join as Vv}from"path";function Jd(){return Vv(Gs(),"trust.json")}function ja(){try{let r=JSON.parse(Kv(Jd(),"utf8"));return new Set(Array.isArray(r)?r:[])}catch{return new Set}}function Yv(r){Hv(Gs(),{recursive:!0}),Wv(Jd(),JSON.stringify([...r]))}function mt(r){return ja().has(z(r))}function Ht(r,e){let t=ja(),n=z(r);(e?t.has(n):!t.has(n))||(e?t.add(n):t.delete(n),Yv(t))}function qa(){return[...ja()]}var Xr=R(()=>{zs()});function Gt(r){if(r.server.trim())return"server-side code (server.ts)";let e=r.code;if(/\btb\s*\.\s*fs\b/.test(e)||e.includes("/__fs"))return"the filesystem";if(/\btb\s*\.\s*ai\b/.test(e)||e.includes("/__ai"))return"AI (your API keys)";if(/\btb\s*\.\s*server\s*\.\s*(?!log\b)\w/.test(e)||e.includes("/__api"))return"server-side code (server.ts)"}var ei=R(()=>{});import{spawn as tp}from"child_process";import{readdir as gS,readFile as np,writeFile as sp,unlink as Ja,mkdir as yS}from"fs/promises";import{mkdirSync as ip,writeFileSync as ti,appendFileSync as bS,readFileSync as Ka}from"fs";import*as ae from"path";import{fileURLToPath as wS}from"url";function Wa(r){return ae.join(Ne(),`${r}.json`)}function en(r){return ae.join(Ne(),`${r}.log`)}function Ha(r){return ae.join(Ne(),`${r}.wait.json`)}function op(r){try{let e=JSON.parse(Ka(Ha(r),"utf8"));return e.cursors&&typeof e.cursors=="object"?e.cursors:{}}catch{return{}}}function Va(r,e=""){let t=op(r)[e];return typeof t=="number"&&Number.isFinite(t)&&t>=0?t:void 0}function ri(r,e,t=""){try{ip(Ne(),{recursive:!0});let n=op(r);n[t]=e,ti(Ha(r),JSON.stringify({cursors:n}))}catch{}}function ni(r){let e=en(r);try{ip(Ne(),{recursive:!0}),ti(e,"")}catch{return()=>{}}let t=process.stdout.write.bind(process.stdout),n=process.stderr.write.bind(process.stderr),s=0,i=!1,o=a=>{if(!i)try{let c=typeof a=="string"?Buffer.from(a,"utf8"):Buffer.from(a);if(bS(e,c),s+=c.length,s>2*rp){let l=Ka(e),f=l.subarray(Math.max(0,l.length-rp));ti(e,f),s=f.length}}catch{i=!0}};return process.stdout.write=((a,...c)=>(o(a),t(a,...c))),process.stderr.write=((a,...c)=>(o(a),n(a,...c))),()=>{process.stdout.write=t,process.stderr.write=n}}function ap(r){try{ti(en(r),"")}catch{}}function we(r,e=0){try{let t=Ka(en(r)),n=e>=0&&e<=t.length?e:0;return{text:t.subarray(n).toString("utf8"),offset:t.length}}catch{return{text:"",offset:0}}}function Ya(r){return`\u2500\u2500 run ${r} \u2500\u2500 ${new Date().toTimeString().slice(0,8)}`}function SS(r){let e=vS.exec(r);return e?Number(e[1]):void 0}function cp(r,e){let t=r.split(`
|
|
326
|
+
`),n=[];if(t.forEach((o,a)=>{let c=SS(o);c!==void 0&&n.push({id:c,idx:a})}),!n.length)return e==="latest"?r:"";let s=e==="latest"?n[n.length-1]:n.find(o=>o.id===e);if(!s)return"";let i=n.find(o=>o.idx>s.idx);return t.slice(s.idx,i?i.idx:t.length).join(`
|
|
327
|
+
`)}function Ga(r){try{return process.kill(r,0),!0}catch(e){return e.code==="EPERM"}}async function si(r){await yS(Ne(),{recursive:!0}),await sp(Wa(r.pid),JSON.stringify(r))}async function lp(r,e){let t=Wa(r);try{let n=JSON.parse(await np(t,"utf8"));if(n.denied===e)return;n.denied=e,await sp(t,JSON.stringify(n))}catch{}}async function ht(r){await Ja(Wa(r)).catch(()=>{}),await Ja(en(r)).catch(()=>{}),await Ja(Ha(r)).catch(()=>{})}async function J(r){let e;try{e=await gS(Ne())}catch{return[]}let t=[];return await Promise.all(e.map(async s=>{if(!/^\d+\.json$/.test(s))return;let i=parseInt(s,10),o;try{o=JSON.parse(await np(ae.join(Ne(),s),"utf8"))}catch{await ht(i);return}o&&typeof o.pid=="number"&&Ga(o.pid)?t.push(o):await ht(i)})),(r?t.filter(s=>s.agent==null&&Ud(s.file,r)):t).sort((s,i)=>s.startedAt-i.startedAt)}async function za(r,e){let t=z(r);return(await J()).find(n=>n.cwd!=null&&z(n.cwd)===t&&(e?n.agent===e:n.agent!=null))}async function gt(r){try{process.kill(r,"SIGTERM")}catch{}await ht(r)}function zt(r,e){let t=z(e);return r.filter(n=>n.agent==null&&n.pid!==process.pid&&z(n.file)===t)}async function Qa(r){let e=zt(await J(),r);for(let t of e)await gt(t.pid);return e}function xS(r,e,t){(process.platform==="win32"?tp("cmd",["/c","start","","/b",r,...e],{cwd:t,stdio:"ignore",windowsHide:!0}):tp(r,e,{cwd:t,detached:!0,stdio:"ignore"})).unref()}function up(){return ae.join(ae.dirname(wS(import.meta.url)),"index.js")}function ES(r,e={}){return{command:process.execPath,args:[up(),...e.trust?["--trust"]:[],r,...e.open===!1?["--no-open"]:[]]}}function AS(r){return{command:process.execPath,args:[up(),`agent:${r}`,"--no-open"]}}async function fp(r,e,t,n){let s=await r();if(s)return s;xS(e.command,e.args,t);let i=Date.now()+2e4;for(;Date.now()<i;){await kS(150);let o=await r();if(o)return o}throw new Error(`Launched ${n} but it did not register within 20s.`)}async function ii(r,e={}){let t=e.cwd??process.cwd(),n=ae.resolve(t,r);return await Qa(n),fp(async()=>zt(await J(),n)[0],ES(r,e),t,ae.basename(r))}async function dp(r,e=process.cwd()){return fp(()=>za(e,r),AS(r),e,`the ${r} mirror`)}var rp,vS,kS,Ie=R(()=>{zs();rp=1e6;vS=/^── run (\d+) ── /;kS=r=>new Promise(e=>setTimeout(e,r))});function ve(r){return r.length>5e4?r.slice(0,5e4)+`
|
|
328
|
+
\u2026[${r.length-5e4} more characters truncated]`:r}var oi,ai=R(()=>{oi=(r,e)=>``});import{existsSync as TS,readdirSync as OS,statSync as PS}from"fs";import{join as RS}from"path";function ci(r){if(!TS(r))return[];let e;try{e=OS(r)}catch{return[]}let t=[];for(let n of e){if(!n.endsWith(".jsonl"))continue;let s=RS(r,n);try{let i=PS(s);i.isFile()&&t.push({sessionId:n.slice(0,-6),file:s,mtime:i.mtimeMs})}catch{}}return t}var Xa=R(()=>{});var Qt,Za=R(()=>{Qt=class{ensureWaitSupport(){}}});import{openSync as CS,readSync as NS,closeSync as _S,statSync as IS,readdirSync as LS,readFileSync as $S}from"fs";import{join as li}from"path";import{homedir as hp}from"os";function MS(r){return r.replace(/[^a-zA-Z0-9]/g,"-")}function ui(r){let e=r?.type==="image"?r.source:void 0;return e?.type==="base64"&&e.data?oi(e.data,e.media_type):""}function ec(r){return typeof r=="string"?ve(r):Array.isArray(r)?r.map(e=>{if(typeof e=="string")return ve(e);let t=e;return typeof t?.text=="string"?ve(t.text):t?.content!=null?ec(t.content):ui(t)}).join(`
|
|
329
|
+
`):r==null?"":ve(JSON.stringify(r))}function BS(r){let e=r.trim();return!!e&&gp.some(t=>t.test(e))}function jS(r){let e=r.trim();return e?gp.some(t=>{let n=t.exec(e);return!!n&&n.index===0}):!0}function FS(r){return r.replace(qS,"")}function US(r){let e=/^<command-name>([\s\S]*?)<\/command-name>/.exec(r)?.[1]?.trim();if(!e)return;let t=/<command-args>([\s\S]*?)<\/command-args>/.exec(r)?.[1]?.trim();return t?`${e} ${t}`:e}function Ze(r){let e=FS(r).trim();return e?US(e)??(BS(e)?"":e):""}function tc(r){return r?.type==="text"&&typeof r.text=="string"?Ze(r.text):""}function tn(r){return!!r.isSidechain||!!r.isMeta}function JS(r){let e;try{e=CS(r,"r")}catch{return""}try{let n=65536;try{n=IS(r).size}catch{}let s=(l,f)=>{if(f<=0)return"";let u=Buffer.alloc(f),d=NS(e,u,0,f,l);return u.subarray(0,d).toString("utf8")},i=(l,f,u)=>{let d="";for(let p of l.split(`
|
|
330
330
|
`)){if(!p.includes(`"${f}"`))continue;let y;try{y=JSON.parse(p)}catch{continue}let m=y?.[u];y?.type===f&&typeof m=="string"&&m&&(d=m)}return d},o=s(0,Math.min(65536,n)),a=n>65536?s(n-65536,65536):"",c=i(a,"custom-title","customTitle")||i(o,"custom-title","customTitle")||i(a,"ai-title","aiTitle")||i(o,"ai-title","aiTitle");if(c)return c.replace(/\s+/g," ").trim().slice(0,200);for(let l of o.split(`
|
|
331
|
-
`)){if(!l.trim())continue;let f;try{f=JSON.parse(l)}catch{continue}if(!f||tn(f)||f.type!=="user")continue;let u=f.message?.content,d="";typeof u=="string"?d=Ze(u):Array.isArray(u)&&(d=u.map(
|
|
332
|
-
`),c=i.filter(u=>u.type==="tool_use").map(u=>({id:u.id??"",name:u.name??"",input:u.input??{}}));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=e.message?.usage??e.usage,f=l&&{in:l.input_tokens??0,out:l.output_tokens??0,cached:l.cache_read_input_tokens??0,cacheCreate:l.cache_creation_input_tokens??0};return{events:n,usage:f,model:e.message?.model}}return{events:n}}chainWorking(e){let t;for(let o of e)(o.type==="user"||o.type==="assistant")&&(t=o);if(!t)return!1;if(t.type==="user"){try{let o=t.message?.content,a=typeof o=="string"?o:Array.isArray(o)?o.filter(l=>l&&l.type==="text").map(l=>l.text??"").join(""):"";if(!(Array.isArray(o)&&o.some(l=>l&&l.type==="tool_result"))&&a.trim()&&Ze(a)==="")return!1}catch{}return!0}let s=(Array.isArray(t.message?.content)?t.message.content:[]).filter(o=>o.type==="tool_use").map(o=>o.id);if(s.length===0)return!1;let i=new Set;for(let o of e){let a=o.message?.content;if(Array.isArray(a))for(let c of a)c.type==="tool_result"&&c.tool_use_id&&i.add(c.tool_use_id)}return s.some(o=>o&&!i.has(o))}sessionAlive(e){return
|
|
331
|
+
`)){if(!l.trim())continue;let f;try{f=JSON.parse(l)}catch{continue}if(!f||tn(f)||f.type!=="user")continue;let u=f.message?.content,d="";typeof u=="string"?d=Ze(u):Array.isArray(u)&&(d=u.map(tc).filter(Boolean).join(" "));let p=d.replace(/\s+/g," ").trim();if(p)return(p.replace(/^Continuing from a prior session\. Here is the summary of our work so far:\s*/i,"").trim()||p).slice(0,200)}return""}finally{_S(e)}}function KS(r){let e;try{e=LS(mp)}catch{return!1}for(let t of e)if(t.endsWith(".json"))try{let n=JSON.parse($S(li(mp,t),"utf8"));if(n?.sessionId!==r)continue;return process.kill(n.pid,0),!0}catch{}return!1}var DS,pp,gp,qS,mp,Xt,fi=R(()=>{ai();Xa();Za();DS=li(hp(),".claude","projects"),pp=r=>li(DS,MS(r));gp=[/\[Request interrupted by user\b/i,/\[Tool use was interrupted\]/i,/Claude Code returned an error/i,/\[ede_diagnostic\]/i,/^No response requested\.?$/i,/^<task-notification\b/i,/^<system-reminder\b/i,/^<local-command-stdout\b/i,/^<local-command-stderr\b/i];qS=/<ide_[a-z_]+>[\s\S]*?<\/ide_[a-z_]+>/gi;mp=li(hp(),".claude","sessions");Xt=class extends Qt{displayName="Claude Mirror";detectsSelf(){return process.env.CLAUDECODE==="1"}sessionsDir(e){return pp(e)}listSessionFiles(e){return ci(pp(e))}parseEntry(e){try{return JSON.parse(e)}catch{return null}}idOf(e){return e.uuid}parentOf(e){return e.parentUuid}timestampOf(e){return e.timestamp}isSidechain(e){return!!e.isSidechain}isLeafType(e){return e.type==="user"||e.type==="assistant"}isRecoveryNoise(e){return!!e.isApiErrorMessage}apply(e,t){if(tn(e))return{events:[]};let n=[];if(e.type==="user"){let s=e.message?.content;if(typeof s=="string"){let i=Ze(s);i&&n.push({type:"user",text:i})}else if(Array.isArray(s))for(let i of s)if(i?.type==="tool_result")n.push({type:"tool_result",id:i.tool_use_id??"",content:ec(i.content),isError:!!i.is_error});else{let o=tc(i)||ui(i);o&&n.push({type:"user",text:o})}return{events:n}}if(e.type==="attachment"&&e.attachment?.type==="queued_command"){let s=Ze(ec(e.attachment.prompt));return s&&n.push({type:"user",text:s}),{events:n}}if(e.type==="assistant"){let s=e.message?.content,i=Array.isArray(s)?s:[],o=i.filter(u=>u.type==="text").map(u=>u.text??"").filter(u=>!jS(u)).join(""),a=i.filter(u=>u.type==="thinking").map(u=>u.thinking??"").join(`
|
|
332
|
+
`),c=i.filter(u=>u.type==="tool_use").map(u=>({id:u.id??"",name:u.name??"",input:u.input??{}}));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=e.message?.usage??e.usage,f=l&&{in:l.input_tokens??0,out:l.output_tokens??0,cached:l.cache_read_input_tokens??0,cacheCreate:l.cache_creation_input_tokens??0};return{events:n,usage:f,model:e.message?.model}}return{events:n}}chainWorking(e){let t;for(let o of e)(o.type==="user"||o.type==="assistant")&&(t=o);if(!t)return!1;if(t.type==="user"){try{let o=t.message?.content,a=typeof o=="string"?o:Array.isArray(o)?o.filter(l=>l&&l.type==="text").map(l=>l.text??"").join(""):"";if(!(Array.isArray(o)&&o.some(l=>l&&l.type==="tool_result"))&&a.trim()&&Ze(a)==="")return!1}catch{}return!0}let s=(Array.isArray(t.message?.content)?t.message.content:[]).filter(o=>o.type==="tool_use").map(o=>o.id);if(s.length===0)return!1;let i=new Set;for(let o of e){let a=o.message?.content;if(Array.isArray(a))for(let c of a)c.type==="tool_result"&&c.tool_use_id&&i.add(c.tool_use_id)}return s.some(o=>o&&!i.has(o))}sessionAlive(e){return KS(e)}readPreview(e){return JS(e)}searchText(e){if(!e||tn(e)||e.type!=="user"&&e.type!=="assistant")return"";let t=e.message?.content,n="";if(typeof t=="string")n=Ze(t);else if(Array.isArray(t)){let s=t;n=e.type==="user"?s.map(tc).filter(Boolean).join(" "):s.filter(i=>i.type==="text"&&typeof i.text=="string").map(i=>i.text).join(" ")}return n.replace(/\s+/g," ").trim()}}});import{existsSync as WS,mkdirSync as HS,writeFileSync as VS}from"fs";import{homedir as YS}from"os";import*as rn from"path";function bp(){try{if(!WS(yp()))return;let r=GS();HS(rn.dirname(r),{recursive:!0}),VS(r,zS)}catch{}}var yp,GS,zS,wp=R(()=>{yp=()=>rn.join(YS(),".pi","agent"),GS=()=>rn.join(yp(),"extensions","typebulb-wait.ts"),zS=String.raw`// Generated by typebulb — do not edit; overwritten on each run.
|
|
333
333
|
import { spawn } from "node:child_process";
|
|
334
334
|
|
|
335
335
|
function logErr(...a) { try { console.error("[typebulb-wait]", ...a); } catch (e) {} }
|
|
@@ -387,19 +387,19 @@ export default function (pi) {
|
|
|
387
387
|
try { pi.on("session_shutdown", () => { for (const c of pending) { try { c.kill(); } catch (e) {} } pending.clear(); }); } catch (e) {}
|
|
388
388
|
} catch (e) { logErr("load", e && e.message); }
|
|
389
389
|
}
|
|
390
|
-
`});import{statSync as
|
|
391
|
-
`),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)
|
|
392
|
-
`)){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{
|
|
393
|
-
`):""}}});function ge(r){return r?.message??String(r)}var V,
|
|
394
|
-
`))>=0;){let j=w.partial.slice(0,D);if(w.partial=w.partial.slice(D+1),!j.trim())continue;let ne=r.parseEntry(j);if(!ne)continue;let H=r.idOf(ne);H&&(w.entries.set(H,ne),!r.isSidechain(ne)&&r.isLeafType(ne)&&(N=H))}if(!N)return;let B=[],L=w.entries.get(N),q=!1;for(;L;){if(B.push(L),r.idOf(L)===w.chainLastId){q=!0;break}let j=r.parentOf(L);L=j?w.entries.get(j):void 0}if(q)for(let j=B.length-2;j>=0;j--)x(B[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(B.map(H=>r.idOf(H))),ne=m(w.entries);for(let H=B.length-1;H>=0;H--)x(B[H]),g(r.idOf(B[H]),ne,j)}w.chainLastId=N}function m(w){let A=new Map;for(let P of w.values()){let N=r.parentOf(P);if(!N)continue;let D=A.get(N);D?D.push(P):A.set(N,[P])}return A}function g(w,A,P){if(!w)return;let N=A.get(w);if(!N)return;let D=N.filter(j=>!r.isSidechain(j));if(D.length<2)return;let B=D.filter(j=>!P.has(r.idOf(j)));if(!B.length)return;let L=[],q=0;for(let j of B){let ne=k(j,A);L.push(...ne.events),q+=ne.count}q>0&&e.buffer.push({type:"fork",atId:w,count:q,events:L})}function k(w,A){let P=[],N=[w];for(;N.length;){let L=N.pop();if(r.isSidechain(L))continue;P.push(L);let q=A.get(r.idOf(L)??"");if(q)for(let j of q)N.push(j)}P.sort((L,q)=>(Date.parse(r.timestampOf(L)??"")||0)-(Date.parse(r.timestampOf(q)??"")||0));let D=[];for(let L of P)r.isRecoveryNoise(L)||D.push(...r.apply(L,e.sessionStartMs).events);return{count:D.reduce((L,q)=>L+(q.type==="user"||q.type==="assistant"?1:0),0),events:D}}function x(w){try{let{events:A,usage:P,model:N}=r.apply(w,e.sessionStartMs);for(let D of A)e.buffer.push(D);N&&(e.latestModel=N),P&&(e.latest=P,e.buffer.push({type:"usage",...e.latest}))}catch(A){console.error("[mirror] skipped malformed entry:",ge(A))}}async function h(){return{cwd:e.cwd,pid:process.pid}}let b=new
|
|
395
|
-
`)){if(!B.trim())continue;let L=r.parseEntry(B);if(!L)continue;let q=r.searchText(L);q&&N.push({text:q,lower:q.toLowerCase()})}return _.set(w,{mtime:A,turns:N}),N}async function Y(w){let A=w.toLowerCase(),P=[];for(let{sessionId:N,file:D,mtime:B}of r.listSessionFiles(e.cwd).sort((L,q)=>q.mtime-L.mtime)){let{hitCount:L,snippet:q}=
|
|
396
|
-
`)){let l=c.replace(/\s+/g," ").trim();l&&i.push({text:l,lower:l.toLowerCase()})}let{hitCount:o,snippet:a}=
|
|
397
|
-
`)}function
|
|
390
|
+
`});import{statSync as QS,openSync as XS,readSync as ZS,closeSync as ek}from"fs";import{join as Sp}from"path";import{homedir as tk}from"os";function nk(r){return`--${r.replace(/^[/\\]/,"").replace(/[/\\:]/g,"-")}--`}function vp(r){return r.type==="message"?sk(r.message?.role):r.type==="custom_message"?r.display!==!1:!1}var rk,sk,Zt,rc=R(()=>{ai();Xa();Za();wp();rk=Sp(tk(),".pi","agent","sessions");sk=r=>r==="user"||r==="assistant"||r==="toolResult"||r==="bashExecution";Zt=class extends Qt{displayName="Pi Mirror";detectsSelf(){return process.env.PI_CODING_AGENT==="true"}ensureWaitSupport(){bp()}sessionsDir(e){return Sp(rk,nk(e))}listSessionFiles(e){return ci(this.sessionsDir(e))}parseEntry(e){let t;try{t=JSON.parse(e)}catch{return null}return!t||t.type==="session"||!t.id?null:t}idOf(e){return e.id}parentOf(e){return e.parentId??void 0}timestampOf(e){return e.timestamp}isSidechain(e){return!1}isLeafType(e){return vp(e)}isRecoveryNoise(e){return!1}apply(e,t){let n=[];if(e.type==="custom_message"){if(e.display===!1)return{events:n};let i=this.contentText(e.content).trim();return i&&n.push({type:"user",text:i}),{events:n}}if(e.type!=="message"||!e.message)return{events:n};let s=e.message;if(s.role==="user"){let i=this.contentText(s.content).trim();return i&&n.push({type:"user",text:i}),{events:n}}if(s.role==="toolResult")return n.push({type:"tool_result",id:s.toolCallId??"",content:this.contentText(s.content),isError:!!s.isError}),{events:n};if(s.role==="bashExecution")return s.command&&!s.excludeFromContext&&n.push({type:"user",text:`$ ${s.command}`}),{events:n};if(s.role==="assistant"){let i=Array.isArray(s.content)?s.content:[],o=i.filter(u=>u.type==="text").map(u=>u.text??"").join(""),a=i.filter(u=>u.type==="thinking").map(u=>u.thinking??"").join(`
|
|
391
|
+
`),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)vp(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=XS(e,"r")}catch{return""}try{let s=65536;try{s=QS(e).size}catch{}let i=Buffer.alloc(Math.min(65536,s)),o=ZS(t,i,0,i.length,0),a=i.subarray(0,o).toString("utf8"),c="",l="";for(let u of a.split(`
|
|
392
|
+
`)){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{ek(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"?ve(e):Array.isArray(e)?e.map(t=>typeof t?.text=="string"?ve(t.text):t?.type==="image"&&t.data?oi(t.data,t.mimeType):"").filter(Boolean).join(`
|
|
393
|
+
`):""}}});function ge(r){return r?.message??String(r)}var V,yi=R(()=>{V=process.cwd()});var bi,Vp=R(()=>{bi=class{#e=new Map;accept(e,t){return this.#e.get(e)===t?!1:(this.#e.set(e,t),!0)}}});function wi(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 hc=R(()=>{});import{existsSync as Yp,openSync as Mk,readSync as Dk,closeSync as Bk,statSync as tr,readdirSync as Gp,watchFile as jk,unwatchFile as zp,mkdirSync as qk,writeFileSync as Fk,readFileSync as gc,unlinkSync as Uk,rmSync as Jk}from"fs";import{join as rr}from"path";function vi(r){let e={cwd:V,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=>rr(w,Wk),n=(w,A)=>rr(t(w),`${A}.lock`);function s(w,A){try{let P=n(w,A);if(Date.now()-tr(P).mtimeMs>=Qp)return!1;try{if(parseInt(gc(P,"utf8").trim(),10)===process.pid)return!1}catch{}return!0}catch{return!1}}function i(w,A){if(A)try{qk(t(w),{recursive:!0}),Fk(n(w,A),String(process.pid))}catch(P){console.error("[lock] claim failed:",ge(P))}}function o(w){try{Jk(rr(w,".claude-bulb"),{recursive:!0,force:!0})}catch{}}function a(w){let A=t(w);if(!Yp(A))return;let P;try{P=Gp(A)}catch{return}let N=Date.now();for(let D of P){if(!D.endsWith(".lock"))continue;let B=rr(A,D);try{let L=tr(B);N-L.mtimeMs>Hk&&Uk(B)}catch{}}}function c(w){try{return tr(w),!1}catch(A){return A.code==="ENOENT"}}function l(){let w=e;if(w.file&&!c(w.file)){i(w.cwd,w.sessionId);return}let A=f(w);A&&p(A)}function f(w){if(!w.everAttached)return u(w.cwd)??d(w.cwd,()=>!0)}function u(w){let A=t(w);if(!Yp(A))return;let P;try{P=Gp(A)}catch{return}let N;for(let B of P)if(B.endsWith(".lock"))try{let L=tr(rr(A,B));if(Date.now()-L.mtimeMs>=Qp||parseInt(gc(rr(A,B),"utf8").trim(),10)!==process.pid)continue;(!N||L.mtimeMs>N.mtime)&&(N={sessionId:B.slice(0,-5),mtime:L.mtimeMs})}catch{}if(!N)return;let D=r.listSessionFiles(w).find(B=>B.sessionId===N.sessionId);if(!(!D||c(D.file)))return D}function d(w,A){return r.listSessionFiles(w).sort((P,N)=>N.mtime-P.mtime).find(P=>!s(w,P.sessionId)&&A(P))}function p(w){let A=e;if(A.file)try{zp(A.file)}catch{}A.file=w.file,A.sessionId=w.sessionId,A.everAttached=!0,A.partial="",A.offset=0,A.latest={in:0,out:0,cached:0,cacheCreate:0},A.latestModel=null,A.entries=new Map,A.chainLastId=void 0,A.buffer.push({type:"cleared"}),A.buffer.push({type:"session",sessionId:w.sessionId}),i(A.cwd,w.sessionId),y();try{zp(w.file)}catch{}jk(w.file,{interval:200},()=>y())}function y(){let w=e;if(!w.file)return;let A;try{A=tr(w.file).size}catch{return}if(A<=w.offset)return;let P;try{P=Mk(w.file,"r")}catch{return}try{let j=A-w.offset,ne=Buffer.alloc(j),H=0;for(;H<j;){let Ic=Dk(P,ne,H,j-H,w.offset+H);if(!Ic)break;H+=Ic}w.offset+=H,w.partial+=ne.subarray(0,H).toString("utf8")}finally{Bk(P)}let N,D;for(;(D=w.partial.indexOf(`
|
|
394
|
+
`))>=0;){let j=w.partial.slice(0,D);if(w.partial=w.partial.slice(D+1),!j.trim())continue;let ne=r.parseEntry(j);if(!ne)continue;let H=r.idOf(ne);H&&(w.entries.set(H,ne),!r.isSidechain(ne)&&r.isLeafType(ne)&&(N=H))}if(!N)return;let B=[],L=w.entries.get(N),q=!1;for(;L;){if(B.push(L),r.idOf(L)===w.chainLastId){q=!0;break}let j=r.parentOf(L);L=j?w.entries.get(j):void 0}if(q)for(let j=B.length-2;j>=0;j--)x(B[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(B.map(H=>r.idOf(H))),ne=m(w.entries);for(let H=B.length-1;H>=0;H--)x(B[H]),g(r.idOf(B[H]),ne,j)}w.chainLastId=N}function m(w){let A=new Map;for(let P of w.values()){let N=r.parentOf(P);if(!N)continue;let D=A.get(N);D?D.push(P):A.set(N,[P])}return A}function g(w,A,P){if(!w)return;let N=A.get(w);if(!N)return;let D=N.filter(j=>!r.isSidechain(j));if(D.length<2)return;let B=D.filter(j=>!P.has(r.idOf(j)));if(!B.length)return;let L=[],q=0;for(let j of B){let ne=k(j,A);L.push(...ne.events),q+=ne.count}q>0&&e.buffer.push({type:"fork",atId:w,count:q,events:L})}function k(w,A){let P=[],N=[w];for(;N.length;){let L=N.pop();if(r.isSidechain(L))continue;P.push(L);let q=A.get(r.idOf(L)??"");if(q)for(let j of q)N.push(j)}P.sort((L,q)=>(Date.parse(r.timestampOf(L)??"")||0)-(Date.parse(r.timestampOf(q)??"")||0));let D=[];for(let L of P)r.isRecoveryNoise(L)||D.push(...r.apply(L,e.sessionStartMs).events);return{count:D.reduce((L,q)=>L+(q.type==="user"||q.type==="assistant"?1:0),0),events:D}}function x(w){try{let{events:A,usage:P,model:N}=r.apply(w,e.sessionStartMs);for(let D of A)e.buffer.push(D);N&&(e.latestModel=N),P&&(e.latest=P,e.buffer.push({type:"usage",...e.latest}))}catch(A){console.error("[mirror] skipped malformed entry:",ge(A))}}async function h(){return{cwd:e.cwd,pid:process.pid}}let b=new bi;async function v(w,A){b.accept(w,A)&&console.log(A)}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()-tr(e.file).mtimeMs<1e4}catch{return!1}}async function O(w){let A=e;return l(),{events:A.buffer.slice(w),cursor:A.buffer.length,working:r.chainWorking([...A.entries.values()])&&S(),latestModel:A.latestModel}}async function E(){return r.listSessionFiles(e.cwd).sort((w,A)=>A.mtime-w.mtime).map(({sessionId:w,file:A,mtime:P})=>({sessionId:w,mtime:P,preview:r.readPreview(A)}))}let _=new Map;function ee(w,A){let P=_.get(w);if(P&&P.mtime===A)return P.turns;let N=[],D="";try{D=gc(w,"utf8")}catch{return[]}for(let B of D.split(`
|
|
395
|
+
`)){if(!B.trim())continue;let L=r.parseEntry(B);if(!L)continue;let q=r.searchText(L);q&&N.push({text:q,lower:q.toLowerCase()})}return _.set(w,{mtime:A,turns:N}),N}async function Y(w){let A=w.toLowerCase(),P=[];for(let{sessionId:N,file:D,mtime:B}of r.listSessionFiles(e.cwd).sort((L,q)=>q.mtime-L.mtime)){let{hitCount:L,snippet:q}=wi(ee(D,B),A);if(L&&(P.push({sessionId:N,mtime:B,preview:r.readPreview(D),hitCount:L,snippet:q}),P.length>=Vk))break}return P}async function M(w){let A=e,P=r.listSessionFiles(A.cwd).find(N=>N.sessionId===w);return P?P.file===A.file?{ok:!0}:(p(P),{ok:!0}):{ok:!1,error:"session not found"}}return o(e.cwd),a(e.cwd),l(),{info:h,poll:O,logEmbedStatus:v,listSessions:E,searchSessions:Y,attach:M}}var Kk,Wk,Qp,Hk,Vk,yc=R(()=>{yi();Vp();hc();Kk=".typebulb",Wk=`${Kk}/locks`,Qp=5e3,Hk=6e4,Vk=50});function Si(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 bc(r){return(Si(r)??"bulb").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"bulb"}var wc=R(()=>{});import{readdirSync as Yk,readFileSync as Gk,statSync as zk}from"fs";import{join as Xp,basename as Qk}from"path";function Zp(r,e,t){if(e>8)return t;let n;try{n=Yk(r,{withFileTypes:!0})}catch{return t}for(let s of n)if(s.isDirectory()){if(s.name.startsWith(".")||s.name==="node_modules")continue;Zp(Xp(r,s.name),e+1,t)}else s.isFile()&&s.name.endsWith(".bulb.md")&&t.push(Xp(r,s.name));return t}function ki(r){return Zp(r,0,[]).map(e=>{let t=0;try{t=zk(e).mtimeMs}catch{}let n,s=!1;try{let i=Gk(e,"utf8");n=Si(i.slice(0,1024));let o=xe(i);s=!!o&&ms(Mt(o))}catch{}return{path:e,name:n??Qk(e).replace(/\.bulb\.md$/,""),mtime:t,serverOnly:s}})}var em=R(()=>{Br();jr();wc()});import{readFile as Xk}from"fs/promises";async function vc(r){try{let e=xe(await Xk(r,"utf-8"));return e?Gt(Mt(e)):void 0}catch{return}}var tm=R(()=>{jr();ei()});function Sc(r){let e=xe(r);if(!e)return r;let t=e.files.get("code.tsx");if(!t)return r;let n=sd(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=Wc(l);u&&(c[u]=f)}return c.config=JSON.stringify(i,null,2),Zc(c)}var rm=R(()=>{Br();hs()});import{spawn as nm}from"child_process";import{basename as Zk}from"path";function ex(){return process.env.TYPEBULB_EDITOR||"code"}function rx(r,e,t){return t==null?[e]:tx.test(Zk(r))?["-g",`${e}:${t}`]:[`+${t}`,e]}function nx(r,e){let t=ex();return{command:t,args:rx(t,r,e)}}function kc(r,e){let{command:t,args:n}=nx(r,e),s=process.platform==="win32"?nm("cmd.exe",["/d","/s","/c",t,...n],{detached:!0,stdio:"ignore",windowsHide:!0}):nm(t,n,{detached:!0,stdio:"ignore"});s.on("error",i=>console.error("[typebulb] editor launch failed:",i?.message??i)),s.unref()}var tx,sm=R(()=>{tx=/^(code|code-insiders|codium|vscodium|cursor|windsurf)(\.cmd|\.exe)?$/i});var xc=R(()=>{Ie();em();tm();wc();rm();sm();Xr();Wt()});import{existsSync as Ec,mkdirSync as sx,readFileSync as im,writeFileSync as ix}from"fs";import{join as nr,isAbsolute as ox}from"path";async function om(r,e){let t=ox(r)?r:nr(V,r);return Ec(t)?(kc(t,e),{ok:!0}):{ok:!1,error:"file not found"}}async function am(r){let e=V,t=Sc(r),n=nr(e,"typebulbs");sx(n,{recursive:!0});let s=bc(t),i=`${s}.bulb.md`;for(let l=2;Ec(nr(n,i))&&im(nr(n,i),"utf8")!==t;l++)i=`${s}-${l}.bulb.md`;let o=nr(n,i);Ec(o)||ix(o,t);let a=nr("typebulbs",i),c=await ii(a,{cwd:e,open:!1});return{ok:!0,file:a,pid:c.pid,url:c.url}}async function cm(){return J(V)}async function lm(r){return await gt(r),{ok:!0}}async function um(){return ki(V).filter(r=>!r.serverOnly).map(r=>({...r,trusted:mt(r.path)}))}async function fm(r){let e=r.toLowerCase(),t=[];for(let n of ki(V).filter(s=>!s.serverOnly).sort((s,i)=>i.mtime-s.mtime)){let s="";try{s=im(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}=wi(i,e);o&&t.push({path:n.path,hitCount:o,snippet:a})}return t}async function dm(r,e){let t=V;e!=null&&Ht(r,e);let n=await ii(r,{cwd:t,open:!1,trust:e});return{ok:!0,file:n.file,pid:n.pid,url:n.url,trust:!!n.trust}}async function pm(r){return{cap:await vc(r)}}async function mm(r,e){return Ht(r,e),{ok:!0}}async function hm(r,e){return we(r,e)}var Ac=R(()=>{xc();yi();hc()});import{readFileSync as Pc,writeFileSync as ym,mkdirSync as ax,appendFileSync as bm,rmSync as gm}from"fs";import{join as Ai,dirname as cx}from"path";import{createServer as lx}from"http";function tt(r){try{return JSON.parse(Pc(r,"utf8"))}catch{return null}}function Ei(r,e){ax(cx(r),{recursive:!0}),ym(r,JSON.stringify(e,null,2)+`
|
|
397
|
+
`)}function vm(r,e,t){let n=Ai(r,".gitignore"),s="";try{s=Pc(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
|
-
`:"";try{
|
|
399
|
+
`:"";try{bm(n,a+t+`
|
|
400
400
|
`+o.join(`
|
|
401
401
|
`)+`
|
|
402
|
-
`)}catch(c){console.error("[switcher] .gitignore update failed",ge(c))}}function
|
|
402
|
+
`)}catch(c){console.error("[switcher] .gitignore update failed",ge(c))}}function mx(r){let e=i=>{let o=i.exec(r);return o?Number(o[1]):0},t=e(/"cache_read_input_tokens":\s*(\d+)/),n=e(/"cache_creation_input_tokens":\s*(\d+)/),s=e(/"input_tokens":\s*(\d+)/);t>0||n>0?fn="live":s>px&&(fn="uncached")}function km(r,e){let t={"content-type":"application/json",authorization:`Bearer ${e}`,"anthropic-version":r.headers["anthropic-version"]||"2023-06-01"},n=r.headers["anthropic-beta"];return typeof n=="string"&&(t["anthropic-beta"]=n),t}function hx(r){if(Array.isArray(r?.messages))for(let e of r.messages){if(!Array.isArray(e?.content))continue;let t=e.content.filter(n=>n?.type!=="thinking"&&n?.type!=="redacted_thinking");t.length&&t.length!==e.content.length&&(e.content=t)}}function xm(r){let e;try{e=JSON.parse(r)}catch{return r}un=typeof e?.model=="string"?e.model:null,ke&&(e.model=ke),St&&(e.provider=Sm(St));let t=/haiku/i.test(un||"");return dn!=null&&!t&&(e.reasoning={effort:Tc[dn]}),delete e.thinking,e.output_config&&delete e.output_config.effort,hx(e),JSON.stringify(e)}function gx(){let r="",e=0,t=new Map,n=new Set(["thinking","redacted_thinking"]),s=i=>{let o=/^data: (.*)$/m.exec(i);if(!o)return i;let a;try{a=JSON.parse(o[1])}catch{return i}switch(a.type){case"message_start":return t.clear(),e=0,i;case"content_block_start":{if(n.has(a.content_block?.type))return t.set(a.index,null),null;let c=e++;return t.set(a.index,c),a.index=c,`event: ${a.type}
|
|
403
403
|
data: ${JSON.stringify(a)}
|
|
404
404
|
|
|
405
405
|
`}case"content_block_delta":case"content_block_stop":{let c=t.get(a.index);return c==null?null:(a.index=c,`event: ${a.type}
|
|
@@ -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
|
|
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 yx(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 ln(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 bx(r,e,t){if(!ke){ln(e,400,"invalid_request_error",dx);return}let n=process.env.OPENROUTER_API_KEY;if(!n){ln(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(Rc,{method:"POST",headers:km(r,n),body:xm(t),signal:s.signal})}catch(u){ln(e,502,"api_error",`proxy upstream failed: ${ge(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?gx():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});mx(p);let y=f(p);y&&e.write(y)}else e.write(Buffer.from(d))}}catch{}finally{e.writableEnded||e.end()}}async function wx(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(!ke||!n)return s();try{let i=await fetch(`${Rc}/count_tokens`,{method:"POST",headers:km(r,n),body:xm(t)});if(!i.ok)return s();let o=await i.text();e.writeHead(200,{"content-type":"application/json"}),e.end(o)}catch{s()}}function vx(r,e){let t=r.url||"/";if(r.method==="HEAD"){e.writeHead(200),e.end();return}if(r.method!=="POST"){ln(e,404,"not_found_error",t);return}yx(r).then(n=>{if(t.includes("count_tokens"))return wx(r,e,n);if(t.includes("/v1/messages"))return bx(r,e,n);ln(e,404,"not_found_error",t)})}function Sx(){return sr&&vt?Promise.resolve(vt):new Promise((r,e)=>{let t=lx(vx);t.on("error",e),t.listen(0,"127.0.0.1",()=>{sr=t,vt=t.address().port,console.log(`[switcher] wire proxy listening on ${xi(vt)}`),r(vt)})})}function kx(){try{sr?.close()}catch{}sr=null,vt=null}function xx(r,e){let t=Ti(r),n=tt(t),s=n||{};if((!s.env||typeof s.env!="object")&&(s.env={}),s.env.ANTHROPIC_BASE_URL===xi(e)&&s.env.ANTHROPIC_AUTH_TOKEN)return;let i=Oi(r);if(!tt(i)){let a={};for(let c of wm)a[c]=c in s.env?s.env[c]:null;Ei(i,{managedBy:"agent-switcher",fileExisted:n!==null,snapshot:a,active:null})}s.env.ANTHROPIC_BASE_URL=xi(e),s.env.ANTHROPIC_AUTH_TOKEN=fx,Ei(t,s),vm(r,[".claude/settings.local.json",".claude/.cc-switcher.json"],"# agent switcher (local Claude Code model override)")}function Ex(r,e,t){let n=Oi(r),s=tt(n)||{managedBy:"agent-switcher",fileExisted:!1,snapshot:{}};s.active={model:e,provider:t},Ei(n,s)}function Em(r){let e=Ti(r),t=Oi(r),n=tt(t),s=tt(e);if(s?.env){let i=n?.snapshot||{};for(let o of wm){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{gm(e,{force:!0})}catch{}else Ei(e,s)}try{gm(t,{force:!0})}catch{}}async function Ax(){let r=!!process.env.OPENROUTER_API_KEY,e=[];try{e=(await Ce()).filter(t=>t.provider==="openrouter"&&!Cc(t.name)).map(t=>({id:t.name,label:t.friendlyName||t.name}))}catch(t){console.error("[switcher] model list failed",ge(t))}return{hasKey:r,models:e}}async function Tx(){if(sr&&ke)return{active:!0,managed:!0,model:ke,port:vt,provider:St,routedModel:un,caching:fn,reasoning:dn,externalBaseUrl:null};let r=tt(Ti(V))?.env||{};return{active:!1,managed:!1,model:null,port:null,provider:null,routedModel:null,caching:"unknown",reasoning:dn,externalBaseUrl:r.ANTHROPIC_BASE_URL||null}}async function Am(r,e){let t=await Sx();return ke=r,St=e,xx(V,t),t}async function Ox({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(Cc(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 Am(r,Nc[r]??null),un=null,fn="unknown",Ex(V,r,St)}catch(e){return{ok:!1,error:`failed to start the wire proxy: ${ge(e)}`}}return{ok:!0}}async function Px({level:r}){return r!=null&&(!Number.isInteger(r)||r<0||r>=Tc.length)?{ok:!1,error:`reasoning level must be 0\u2013${Tc.length-1} or null`}:(dn=r,{ok:!0,level:r})}async function Rx(){return Em(V),ke=null,St=null,un=null,fn="unknown",{ok:!0}}async function Cx({key:r}){let e=(r||"").trim();if(!e)return{ok:!1,error:"empty key"};let t=V,n=Ai(t,".env"),s="";try{s=Pc(n,"utf8")}catch{}try{if(/^\s*OPENROUTER_API_KEY\s*=/m.test(s))ym(n,s.replace(/^\s*OPENROUTER_API_KEY\s*=.*$/m,`OPENROUTER_API_KEY=${e}`));else{let i=s&&!s.endsWith(`
|
|
411
411
|
`)?`
|
|
412
|
-
`:"";
|
|
413
|
-
`)}}catch(i){return{ok:!1,error:ge(i)}}return process.env.OPENROUTER_API_KEY=e,bm(t,[".env"],"# secrets"),{ok:!0}}function Cx(){if(!(!sr&&!ke)){try{km(V)}catch{}Sx()}}function Nx(r,e){return Em.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 _x(r){if(Em.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 Ix(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=Ac(e?.cache_read_input_tokens)||Ac(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 Lx({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:wm(a)}:i),u=await fetch(Oc,{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 k=c?.error?.message||c?.message||JSON.stringify(c).slice(0,300);return{ok:!0,callable:!1,status:a.status,ms:Date.now()-t,error:Nx(a.status,k),restriction:_x(k)}}let l=typeof c?.provider=="string"?c.provider:void 0,f=c?.content?.find?.(k=>k.type==="text")?.text??c?.content?.[0]?.text??"ok",u=Ac(c?.usage?.cache_creation_input_tokens),{r:d,j:p}=await o(l),{works:y,read:m,note:g}=Ix(d.ok,p?.usage,l);return y===!0&&l&&(Rc[r]=l,ke===r&&(St=l)),{ok:!0,callable:!0,status:a.status,ms:Date.now()-t,provider:l,sample:String(f).trim().slice(0,60),cache:{works:y,created:u,read:m,note:g}}}catch(a){let c=ge(a);return{ok:!0,callable:!1,ms:Date.now()-t,error:/abort/i.test(c)?"timed out (20s)":c}}}var lx,Oc,ux,fx,ym,dx,Ec,Ai,Ti,ki,Pc,sr,vt,ke,St,un,fn,dn,Rc,Ac,wm,Em,Am=R(()=>{Sc();gi();lx="https://openrouter.ai/api",Oc=`${lx}/v1/messages`,ux="typebulb-proxy-managed",fx="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.",ym=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN"],dx=5e3,Ec=["low","medium","high"],Ai=r=>Ei(r,".claude","settings.local.json"),Ti=r=>Ei(r,".claude",".cc-switcher.json"),ki=r=>`http://127.0.0.1:${r}`;Pc=r=>/^anthropic\//i.test(r)||/claude/i.test(r),sr=null,vt=null,ke=null,St=null,un=null,fn="unknown",dn=1,Rc={},Ac=r=>typeof r=="number"?r:0,wm=r=>({order:[r],allow_fallbacks:!1});Em=/data policy|no endpoints|no allowed providers|privacy|requires.*(training|logging|data)/i;(async function(){try{let e=tt(Ti(V)),t=e?.active?.model;if(!t)return;let s=(tt(Ai(V))?.env||{}).ANTHROPIC_BASE_URL||"";if(!/127\.0\.0\.1|localhost/.test(s))return;let i=await xm(t,e.active.provider??Rc[t]??null);console.log(`[switcher] re-adopted override after restart: ${t} via ${ki(i)}`)}catch(e){console.error("[switcher] boot reconcile failed",ge(e))}})()});var Om={};_c(Om,{attach:()=>Fx,blockToMarkdown:()=>li,breakout:()=>im,capText:()=>ve,cleanUserText:()=>Ze,clearSwitchModel:()=>Px,displayName:()=>$x,info:()=>Mx,isHiddenTurn:()=>tn,launchBulb:()=>um,listBreakouts:()=>om,listBulbFiles:()=>cm,listSessions:()=>jx,listSwitchModels:()=>Ex,logEmbedStatus:()=>Bx,openFile:()=>sm,poll:()=>Dx,predictTrustOf:()=>fm,probeModel:()=>Lx,readBulbLog:()=>pm,saveOpenRouterKey:()=>Rx,searchBulbs:()=>lm,searchSessions:()=>qx,setBulbTrust:()=>dm,setReasoning:()=>Ox,setSwitchModel:()=>Tx,shutdownSwitcher:()=>Cx,stopBreakout:()=>am,switchState:()=>Ax});var Tm,$x,Mx,Dx,Bx,jx,qx,Fx,Pm=R(()=>{hc();ui();xc();Am();ui();oi();Tm=new Xt,$x=Tm.displayName,{info:Mx,poll:Dx,logEmbedStatus:Bx,listSessions:jx,searchSessions:qx,attach:Fx}=wi(Tm)});var Cm={};_c(Cm,{attach:()=>Yx,breakout:()=>im,displayName:()=>Ux,info:()=>Jx,launchBulb:()=>um,listBreakouts:()=>om,listBulbFiles:()=>cm,listSessions:()=>Hx,logEmbedStatus:()=>Wx,openFile:()=>sm,poll:()=>Kx,predictTrustOf:()=>fm,readBulbLog:()=>pm,searchBulbs:()=>lm,searchSessions:()=>Vx,setBulbTrust:()=>dm,stopBreakout:()=>am});var Rm,Ux,Jx,Kx,Wx,Hx,Vx,Yx,Nm=R(()=>{hc();ec();xc();Rm=new Zt,Ux=Rm.displayName,{info:Jx,poll:Kx,logEmbedStatus:Wx,listSessions:Hx,searchSessions:Vx,attach:Yx}=wi(Rm)});import*as Um from"fs/promises";import*as $e from"path";import*as Lc from"fs/promises";import{existsSync as kt,readFileSync as zm}from"fs";import*as K from"path";import{pathToFileURL as Qm}from"url";import{resolve as Ri}from"resolve.exports";import{init as $c,parse as Mc}from"es-module-lexer";function Dc(r,e){let t=K.join(r,"package.json");try{return JSON.parse(zm(t,"utf8"))}catch{throw new Error(`--replace package '${e}' has no readable package.json at ${t}`)}}var Pi=["browser","import","default"],Ic=["node","import","default"];function Bc(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:K.resolve(n)}}async function jc(r){let{name:e,dir:t}=r;if(!kt(t))throw new Error(`--replace path for '${e}' does not exist: ${t}`);let n=Dc(t,e),s=Xm(n,e),i=K.resolve(t,s);if(!kt(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=K.dirname(i),a=`/local/${e}/${K.basename(i)}`,c=Zm(n,t);return await eh(e,i,o),{name:e,dir:t,entryAbs:i,serveDir:o,entryUrl:a,typesAbs:c}}function Xm(r,e){if(r.exports!==void 0){let n;try{n=Ri(r,".",{browser:!0,conditions:Pi})}catch(i){throw new Error(`--replace package '${e}' "exports" does not resolve a browser entry (conditions: ${Pi.join(", ")}): ${i instanceof Error?i.message:i}`)}let s=Ci(n);if(!s)throw new Error(`--replace package '${e}' "exports" did not resolve "." to a single file (conditions: ${Pi.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 Zm(r,e){if(r.exports!==void 0)try{let n=Ri(r,".",{conditions:["types"]}),s=Ci(n);if(s){let i=K.resolve(e,s);if(kt(i))return i}}catch{}let t=r.types??r.typings;if(t){let n=K.resolve(e,t);if(kt(n))return n}}function Ci(r){if(typeof r=="string")return r;if(Array.isArray(r))return r.find(e=>typeof e=="string")}async function eh(r,e,t){await $c;let n=K.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 Lc.readFile(o,"utf8")}catch{continue}let c,l;try{[c,,,l]=Mc(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=th(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 th(r,e,t){let n=e.replace(/[?#].*$/,""),s=K.resolve(K.dirname(r),n),i=[s,s+".js",s+".mjs",K.join(s,"index.js"),K.join(s,"index.mjs")];for(let o of i)if(K.normalize(o).startsWith(t)&&kt(o))return o}function rh(r,e,t){let n=Dc(r,e),s;if(n.exports!==void 0)try{s=Ci(Ri(n,t,{conditions:Ic}))}catch(o){throw new Error(`--replace package '${e}' "exports" does not resolve a node entry for '${t}' (conditions: ${Ic.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=K.resolve(r,s);if(!kt(i))throw new Error(`--replace package '${e}' built file not found: ${i} \u2014 did you build it (e.g. \`pnpm run build\`)?`);return Qm(i).href}async function qc(r,e){await $c;let t;try{[t]=Mc(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=rh(e.dir,e.name,a);n+=r.slice(s,i.s)+c,s=i.e}return n+r.slice(s)}var nh=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=nh;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=Bc(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 Uc(){console.log(`
|
|
412
|
+
`:"";bm(n,i+`OPENROUTER_API_KEY=${e}
|
|
413
|
+
`)}}catch(i){return{ok:!1,error:ge(i)}}return process.env.OPENROUTER_API_KEY=e,vm(t,[".env"],"# secrets"),{ok:!0}}function Nx(){if(!(!sr&&!ke)){try{Em(V)}catch{}kx()}}function _x(r,e){return Tm.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 Ix(r){if(Tm.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 Lx(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=Oc(e?.cache_read_input_tokens)||Oc(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 $x({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(Cc(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:Sm(a)}:i),u=await fetch(Rc,{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 k=c?.error?.message||c?.message||JSON.stringify(c).slice(0,300);return{ok:!0,callable:!1,status:a.status,ms:Date.now()-t,error:_x(a.status,k),restriction:Ix(k)}}let l=typeof c?.provider=="string"?c.provider:void 0,f=c?.content?.find?.(k=>k.type==="text")?.text??c?.content?.[0]?.text??"ok",u=Oc(c?.usage?.cache_creation_input_tokens),{r:d,j:p}=await o(l),{works:y,read:m,note:g}=Lx(d.ok,p?.usage,l);return y===!0&&l&&(Nc[r]=l,ke===r&&(St=l)),{ok:!0,callable:!0,status:a.status,ms:Date.now()-t,provider:l,sample:String(f).trim().slice(0,60),cache:{works:y,created:u,read:m,note:g}}}catch(a){let c=ge(a);return{ok:!0,callable:!1,ms:Date.now()-t,error:/abort/i.test(c)?"timed out (20s)":c}}}var ux,Rc,fx,dx,wm,px,Tc,Ti,Oi,xi,Cc,sr,vt,ke,St,un,fn,dn,Nc,Oc,Sm,Tm,Om=R(()=>{xc();yi();ux="https://openrouter.ai/api",Rc=`${ux}/v1/messages`,fx="typebulb-proxy-managed",dx="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.",wm=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN"],px=5e3,Tc=["low","medium","high"],Ti=r=>Ai(r,".claude","settings.local.json"),Oi=r=>Ai(r,".claude",".cc-switcher.json"),xi=r=>`http://127.0.0.1:${r}`;Cc=r=>/^anthropic\//i.test(r)||/claude/i.test(r),sr=null,vt=null,ke=null,St=null,un=null,fn="unknown",dn=1,Nc={},Oc=r=>typeof r=="number"?r:0,Sm=r=>({order:[r],allow_fallbacks:!1});Tm=/data policy|no endpoints|no allowed providers|privacy|requires.*(training|logging|data)/i;(async function(){try{let e=tt(Oi(V)),t=e?.active?.model;if(!t)return;let s=(tt(Ti(V))?.env||{}).ANTHROPIC_BASE_URL||"";if(!/127\.0\.0\.1|localhost/.test(s))return;let i=await Am(t,e.active.provider??Nc[t]??null);console.log(`[switcher] re-adopted override after restart: ${t} via ${xi(i)}`)}catch(e){console.error("[switcher] boot reconcile failed",ge(e))}})()});var Rm={};Lc(Rm,{attach:()=>Ux,blockToMarkdown:()=>ui,breakout:()=>am,capText:()=>ve,cleanUserText:()=>Ze,clearSwitchModel:()=>Rx,displayName:()=>Mx,info:()=>Dx,isHiddenTurn:()=>tn,launchBulb:()=>dm,listBreakouts:()=>cm,listBulbFiles:()=>um,listSessions:()=>qx,listSwitchModels:()=>Ax,logEmbedStatus:()=>jx,openFile:()=>om,poll:()=>Bx,predictTrustOf:()=>pm,probeModel:()=>$x,readBulbLog:()=>hm,saveOpenRouterKey:()=>Cx,searchBulbs:()=>fm,searchSessions:()=>Fx,setBulbTrust:()=>mm,setReasoning:()=>Px,setSwitchModel:()=>Ox,shutdownSwitcher:()=>Nx,stopBreakout:()=>lm,switchState:()=>Tx});var Pm,Mx,Dx,Bx,jx,qx,Fx,Ux,Cm=R(()=>{yc();fi();Ac();Om();fi();ai();Pm=new Xt,Mx=Pm.displayName,{info:Dx,poll:Bx,logEmbedStatus:jx,listSessions:qx,searchSessions:Fx,attach:Ux}=vi(Pm)});var _m={};Lc(_m,{attach:()=>Gx,breakout:()=>am,displayName:()=>Jx,info:()=>Kx,launchBulb:()=>dm,listBreakouts:()=>cm,listBulbFiles:()=>um,listSessions:()=>Vx,logEmbedStatus:()=>Hx,openFile:()=>om,poll:()=>Wx,predictTrustOf:()=>pm,readBulbLog:()=>hm,searchBulbs:()=>fm,searchSessions:()=>Yx,setBulbTrust:()=>mm,stopBreakout:()=>lm});var Nm,Jx,Kx,Wx,Hx,Vx,Yx,Gx,Im=R(()=>{yc();rc();Ac();Nm=new Zt,Jx=Nm.displayName,{info:Kx,poll:Wx,logEmbedStatus:Hx,listSessions:Vx,searchSessions:Yx,attach:Gx}=vi(Nm)});import*as Km from"fs/promises";import*as $e from"path";import*as Mc from"fs/promises";import{existsSync as kt,readFileSync as Xm}from"fs";import*as K from"path";import{pathToFileURL as Zm}from"url";import{resolve as Ci}from"resolve.exports";import{init as Dc,parse as Bc}from"es-module-lexer";function jc(r,e){let t=K.join(r,"package.json");try{return JSON.parse(Xm(t,"utf8"))}catch{throw new Error(`--replace package '${e}' has no readable package.json at ${t}`)}}var Ri=["browser","import","default"],$c=["node","import","default"];function qc(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:K.resolve(n)}}async function Fc(r){let{name:e,dir:t}=r;if(!kt(t))throw new Error(`--replace path for '${e}' does not exist: ${t}`);let n=jc(t,e),s=eh(n,e),i=K.resolve(t,s);if(!kt(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=K.dirname(i),a=`/local/${e}/${K.basename(i)}`,c=th(n,t);return await rh(e,i,o),{name:e,dir:t,entryAbs:i,serveDir:o,entryUrl:a,typesAbs:c}}function eh(r,e){if(r.exports!==void 0){let n;try{n=Ci(r,".",{browser:!0,conditions:Ri})}catch(i){throw new Error(`--replace package '${e}' "exports" does not resolve a browser entry (conditions: ${Ri.join(", ")}): ${i instanceof Error?i.message:i}`)}let s=Ni(n);if(!s)throw new Error(`--replace package '${e}' "exports" did not resolve "." to a single file (conditions: ${Ri.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 th(r,e){if(r.exports!==void 0)try{let n=Ci(r,".",{conditions:["types"]}),s=Ni(n);if(s){let i=K.resolve(e,s);if(kt(i))return i}}catch{}let t=r.types??r.typings;if(t){let n=K.resolve(e,t);if(kt(n))return n}}function Ni(r){if(typeof r=="string")return r;if(Array.isArray(r))return r.find(e=>typeof e=="string")}async function rh(r,e,t){await Dc;let n=K.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 Mc.readFile(o,"utf8")}catch{continue}let c,l;try{[c,,,l]=Bc(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=nh(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 nh(r,e,t){let n=e.replace(/[?#].*$/,""),s=K.resolve(K.dirname(r),n),i=[s,s+".js",s+".mjs",K.join(s,"index.js"),K.join(s,"index.mjs")];for(let o of i)if(K.normalize(o).startsWith(t)&&kt(o))return o}function sh(r,e,t){let n=jc(r,e),s;if(n.exports!==void 0)try{s=Ni(Ci(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=K.resolve(r,s);if(!kt(i))throw new Error(`--replace package '${e}' built file not found: ${i} \u2014 did you build it (e.g. \`pnpm run build\`)?`);return Zm(i).href}async function Uc(r,e){await Dc;let t;try{[t]=Bc(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=sh(e.dir,e.name,a);n+=r.slice(s,i.s)+c,s=i.e}return n+r.slice(s)}var ih=5e3;function Jc(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=ih;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=qc(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 Kc(){console.log(`
|
|
414
414
|
typebulb - Local bulb runner for Typebulb
|
|
415
415
|
|
|
416
416
|
Usage:
|
|
@@ -539,10 +539,10 @@ Examples:
|
|
|
539
539
|
typebulb my-editor.bulb.md
|
|
540
540
|
typebulb --no-watch --port 8080 my-editor.bulb.md
|
|
541
541
|
typebulb .
|
|
542
|
-
`)}jr();import*as Qe from"fs/promises";import*as
|
|
542
|
+
`)}jr();import*as Qe from"fs/promises";import*as Ys from"path";import{pathToFileURL as qv}from"url";import{transform as Ww}from"sucrase";function va(r,e={}){let t=e.serverOnly?["typescript"]:["typescript","jsx"];try{let{code:n}=Ww(r,{transforms:t,jsxRuntime:"automatic",jsxImportSource:e.jsxImportSource||"react",production:!0});return{code:n}}catch(n){return{code:"",error:String(n)}}}hs();function Xw(r){return r.map(e=>`${e.type} (line ${e.lineNumber}): ${e.message.split(`
|
|
543
543
|
`)[0]}`).join(`
|
|
544
|
-
`)}function
|
|
545
|
-
${zw(t)}`)}var He="https://esm.sh",Fr="https://cdn.jsdelivr.net/npm/",va="https://data.jsdelivr.com/v1/package/npm/";function sd(r){let e=(r||"").replace(/^\/+/,"").replace(/\/+$/,"");return e?e.split("/"):[]}var C=class r{constructor(e,t,n){let s=typeof e=="string"?r.parse(e):e;this.name=s.name,this.version=Dt(t??s.version),this.subpath=Dt(n??s.subpath)}static parse(e){let t=sd(e||"");if(!t.length)return new r({name:""});if(t[0].startsWith("@")){let s=t[0],[i,o]=id(t[1]??""),a=Dt(t.slice(2).join("/"));return new r({name:`${s}/${i}`,version:o,subpath:a})}else{let[s,i]=id(t[0]),o=Dt(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(He).host,s=new URL(Fr).host;if(t.host===n){let i=sd(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}}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:Dt(e),subpath:this.subpath})}static isBare(e){if(!e||e.startsWith(".")||e.startsWith("/"))return!1;let t=e.toLowerCase();return!t.startsWith("http://")&&!t.startsWith("https://")}},Dt=r=>r&&r.length?r:void 0,id=r=>{let e=r.indexOf("@");return e<0?[r,void 0]:[r.slice(0,e),Dt(r.slice(e+1))]};async function Te(r){try{return await r()}catch{return}}function ut(r){let e=r||"";return e.startsWith("./")?e.slice(2):e.replace(/^\/+/,"")}function Sa(r){return r.startsWith("./")?r:`./${r}`}var Ur=class{constructor(e,t){this.cache=e,this.http=t,this.pinMs=1e4,this.versionsIndexMs=1440*60*1e3,this.metaTtlMs=10080*60*1e3,this.pinCache=new Map}baseDir(e){let t=typeof e=="string"?new C(e):e;return`${Fr}${t.name}${t.version?`@${t.version}`:""}/`}file(e,t){return new URL(ut(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(",")),`${He}/${e}?${o.toString()}`}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),`${He}/${e}`]);return this.pinCache.set(e,{value:s,ts:t}),s}async tryResolveFromUrls(e){for(let t of e){let n=await Te(()=>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 Te(()=>this.http.getJson(`${va}${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=C.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 C(`${e}@${t}`)),i=await Te(()=>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 od=r=>r.startsWith("@types/"),Jr=r=>Object.keys(r?.peerDependencies||{}).filter(e=>!od(e)),ka=r=>Object.keys(r?.dependencies||{}).filter(e=>!od(e)),Qw=r=>Jr(r).filter(e=>!r?.peerDependenciesMeta?.[e]?.optional),Kr=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 Qw(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=>Jr(i.meta))),n=new Map;for(let i of e)for(let o of ka(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:Jr(i.meta).length>0,isSharedDep:s.has(i.name)}]))}};var Wr=class{constructor(e,t,n){this.cache=e,this.cdn=t,this.semver=n}async learnExactVersion(e){let t=await Te(()=>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=async o=>{if(o&&this.semver.isExactVersion(o))return await this.cache.setPinnedExact(e,t,o),o},i=await Te(()=>this.cdn.fetchVersionsIndex(e));if(i?.versions?.length){let o=this.semver.selectBestVersion(i.versions,{range:t,distTags:i.distTags});if(o){let a=await s(o);if(a)return a}else{console.debug("[typebulb] refreshing version cache for",e,"(",t,"not in cached set \u2014 likely a new release)"),await this.cache.invalidateVersionsCache(e);let a=await Te(()=>this.cdn.fetchVersionsIndex(e));if(a?.versions?.length){let c=await s(this.semver.selectBestVersion(a.versions,{range:t,distTags:a.distTags}));if(c)return c}}}return s(await this.cdn.resolveExactVersion(`${e}@${t}`))}async effectivePackage(e,t){let n=new C(e),s=n.root(),i=t[s],o=i?await Te(()=>this.resolveExactForRoot(s,i)):void 0;return{effectivePackage:o?n.withVersion(o).format():e,root:s,range:i,pinned:o}}};import{init as Xw,parse as Zw}from"es-module-lexer";var Bt=class r{constructor(e,t,n){this.version=e,this.cdn=t,this.peer=n}extractImportsSync(e){let t=new Set;for(let n of r.importPatterns){n.lastIndex=0;for(let s of e.matchAll(n))C.isBare(s[1])&&t.add(s[1])}return Array.from(t)}async extractImports(e){let t=new Set,n=s=>{C.isBare(s)&&t.add(s)};try{await Xw;let[s]=Zw(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(C.rootOf(u))),i=[...new Set(s.map(C.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);return{importMap:{imports:Object.fromEntries(f)},prefetchUrls:f.map(([,u])=>u)}}async resolveVersion(e,t){let n=t[e],s=await this.version.resolveExactForRoot(e,n);if(!s)throw new Error(`Cannot resolve ${n?`${e}@${n}`:e}: no matching version is published (the package or version may not exist, or the registry was unreachable).`);return s}buildEntries(e,t,n){let s=new Map(t.map(p=>[p.name,p])),i=p=>{let y=s.get(C.rootOf(p));return new C(p).withVersion(y.version).format()},o=new Set([...n.entries()].filter(([,p])=>p.isPeerRoot||p.isSharedDep).map(([p])=>p)),a=new Set(e.filter(p=>p!==C.rootOf(p)).map(C.rootOf)),c=[],l=new Set,f=new Set(e.filter(p=>p===C.rootOf(p))),u=new Set;for(let p of e){let y=C.rootOf(p),m=s.get(y),{isPeerRoot:g,hasPeers:k,isSharedDep:x}=n.get(y),h=a.has(y),b=p!==y,S=!(g||x)&&(h||!k),O=this.singletonDepsOf(m,o),E=b&&f.has(y);E&&u.add(y);let _=E?[...O,y]:O.length?O:void 0;c.push([p,this.cdn.buildEsmUrl(i(p),{bundle:S,external:_})]),l.add(p)}let d=new Set([...o,...u]);for(let p of d)s.has(p)&&(l.has(p)||c.push([p,this.cdn.buildEsmUrl(i(p),{})]),c.push([`${p}/`,`${He}/${i(p)}/`]));return c}singletonDepsOf(e,t){return[...new Set([...Jr(e.meta),...ka(e.meta)])].filter(n=>t.has(n))}};Bt.importPatterns=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g];import{gt as ad,satisfies as ev,maxSatisfying as cd,major as tv,valid as rv}from"semver";var gs=class{cmp(e,t){return e===t?0:ad(e,t)?1:ad(t,e)?-1:0}satisfies(e,t){return!e||!e.trim()?!0:!!ev(t,e,{includePrerelease:!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=cd(e,n,{includePrerelease:!1});if(a)return a}return cd(e,n,{includePrerelease:!0})??void 0}majorOf(e){return tv(e)}isExactVersion(e){return rv(e)!==null}},ft=new gs;function ld(r,e){let t=new Ur(r,e),n=new Kr(t),s=new Wr(r,t,ft);return{packageService:new Bt(s,t,n),versionResolver:s,cdnClient:t,peerResolver:n}}import*as Ad from"fs/promises";import*as fe from"path";var xa=[{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"}];function Aa(r,e){if(!e)return r.filter(s=>!s.since);let t={"5.0":0,"5.5":1},n=t[e];return r.filter(s=>!s.since||t[s.since]<=n)}var nv=`
|
|
544
|
+
`)}function id(r,e){let t=qr(r,{target:"client",dependencies:e}).filter(n=>n.type==="UNDECLARED_IMPORT");if(t.length)throw new Error(`Lint failed:
|
|
545
|
+
${Xw(t)}`)}var He="https://esm.sh",Fr="https://cdn.jsdelivr.net/npm/",Sa="https://data.jsdelivr.com/v1/package/npm/";function od(r){let e=(r||"").replace(/^\/+/,"").replace(/\/+$/,"");return e?e.split("/"):[]}var C=class r{constructor(e,t,n){let s=typeof e=="string"?r.parse(e):e;this.name=s.name,this.version=Dt(t??s.version),this.subpath=Dt(n??s.subpath)}static parse(e){let t=od(e||"");if(!t.length)return new r({name:""});if(t[0].startsWith("@")){let s=t[0],[i,o]=ad(t[1]??""),a=Dt(t.slice(2).join("/"));return new r({name:`${s}/${i}`,version:o,subpath:a})}else{let[s,i]=ad(t[0]),o=Dt(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(He).host,s=new URL(Fr).host;if(t.host===n){let i=od(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}}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:Dt(e),subpath:this.subpath})}static isBare(e){if(!e||e.startsWith(".")||e.startsWith("/"))return!1;let t=e.toLowerCase();return!t.startsWith("http://")&&!t.startsWith("https://")}},Dt=r=>r&&r.length?r:void 0,ad=r=>{let e=r.indexOf("@");return e<0?[r,void 0]:[r.slice(0,e),Dt(r.slice(e+1))]};async function Te(r){try{return await r()}catch{return}}function ut(r){let e=r||"";return e.startsWith("./")?e.slice(2):e.replace(/^\/+/,"")}function ka(r){return r.startsWith("./")?r:`./${r}`}var Ur=class{constructor(e,t){this.cache=e,this.http=t,this.pinMs=1e4,this.versionsIndexMs=1440*60*1e3,this.metaTtlMs=10080*60*1e3,this.pinCache=new Map}baseDir(e){let t=typeof e=="string"?new C(e):e;return`${Fr}${t.name}${t.version?`@${t.version}`:""}/`}file(e,t){return new URL(ut(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(",")),`${He}/${e}?${o.toString()}`}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),`${He}/${e}`]);return this.pinCache.set(e,{value:s,ts:t}),s}async tryResolveFromUrls(e){for(let t of e){let n=await Te(()=>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 Te(()=>this.http.getJson(`${Sa}${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=C.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 C(`${e}@${t}`)),i=await Te(()=>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 cd=r=>r.startsWith("@types/"),Jr=r=>Object.keys(r?.peerDependencies||{}).filter(e=>!cd(e)),xa=r=>Object.keys(r?.dependencies||{}).filter(e=>!cd(e)),Zw=r=>Jr(r).filter(e=>!r?.peerDependenciesMeta?.[e]?.optional),Kr=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 Zw(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=>Jr(i.meta))),n=new Map;for(let i of e)for(let o of xa(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:Jr(i.meta).length>0,isSharedDep:s.has(i.name)}]))}};var Wr=class{constructor(e,t,n){this.cache=e,this.cdn=t,this.semver=n}async learnExactVersion(e){let t=await Te(()=>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=async o=>{if(o&&this.semver.isExactVersion(o))return await this.cache.setPinnedExact(e,t,o),o},i=await Te(()=>this.cdn.fetchVersionsIndex(e));if(i?.versions?.length){let o=this.semver.selectBestVersion(i.versions,{range:t,distTags:i.distTags});if(o){let a=await s(o);if(a)return a}else{console.debug("[typebulb] refreshing version cache for",e,"(",t,"not in cached set \u2014 likely a new release)"),await this.cache.invalidateVersionsCache(e);let a=await Te(()=>this.cdn.fetchVersionsIndex(e));if(a?.versions?.length){let c=await s(this.semver.selectBestVersion(a.versions,{range:t,distTags:a.distTags}));if(c)return c}}}return s(await this.cdn.resolveExactVersion(`${e}@${t}`))}async effectivePackage(e,t){let n=new C(e),s=n.root(),i=t[s],o=i?await Te(()=>this.resolveExactForRoot(s,i)):void 0;return{effectivePackage:o?n.withVersion(o).format():e,root:s,range:i,pinned:o}}};import{init as ev,parse as tv}from"es-module-lexer";var Bt=class r{constructor(e,t,n){this.version=e,this.cdn=t,this.peer=n}extractImportsSync(e){let t=new Set;for(let n of r.importPatterns){n.lastIndex=0;for(let s of e.matchAll(n))C.isBare(s[1])&&t.add(s[1])}return Array.from(t)}async extractImports(e){let t=new Set,n=s=>{C.isBare(s)&&t.add(s)};try{await ev;let[s]=tv(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(C.rootOf(u))),i=[...new Set(s.map(C.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);return{importMap:{imports:Object.fromEntries(f)},prefetchUrls:f.map(([,u])=>u)}}async resolveVersion(e,t){let n=t[e],s=await this.version.resolveExactForRoot(e,n);if(!s)throw new Error(`Cannot resolve ${n?`${e}@${n}`:e}: no matching version is published (the package or version may not exist, or the registry was unreachable).`);return s}buildEntries(e,t,n){let s=new Map(t.map(p=>[p.name,p])),i=p=>{let y=s.get(C.rootOf(p));return new C(p).withVersion(y.version).format()},o=new Set([...n.entries()].filter(([,p])=>p.isPeerRoot||p.isSharedDep).map(([p])=>p)),a=new Set(e.filter(p=>p!==C.rootOf(p)).map(C.rootOf)),c=[],l=new Set,f=new Set(e.filter(p=>p===C.rootOf(p))),u=new Set;for(let p of e){let y=C.rootOf(p),m=s.get(y),{isPeerRoot:g,hasPeers:k,isSharedDep:x}=n.get(y),h=a.has(y),b=p!==y,S=!(g||x)&&(h||!k),O=this.singletonDepsOf(m,o),E=b&&f.has(y);E&&u.add(y);let _=E?[...O,y]:O.length?O:void 0;c.push([p,this.cdn.buildEsmUrl(i(p),{bundle:S,external:_})]),l.add(p)}let d=new Set([...o,...u]);for(let p of d)s.has(p)&&(l.has(p)||c.push([p,this.cdn.buildEsmUrl(i(p),{})]),c.push([`${p}/`,`${He}/${i(p)}/`]));return c}singletonDepsOf(e,t){return[...new Set([...Jr(e.meta),...xa(e.meta)])].filter(n=>t.has(n))}};Bt.importPatterns=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g];import{gt as ld,satisfies as rv,maxSatisfying as ud,major as nv,valid as sv}from"semver";var gs=class{cmp(e,t){return e===t?0:ld(e,t)?1:ld(t,e)?-1:0}satisfies(e,t){return!e||!e.trim()?!0:!!rv(t,e,{includePrerelease:!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=ud(e,n,{includePrerelease:!1});if(a)return a}return ud(e,n,{includePrerelease:!0})??void 0}majorOf(e){return nv(e)}isExactVersion(e){return sv(e)!==null}},ft=new gs;function fd(r,e){let t=new Ur(r,e),n=new Kr(t),s=new Wr(r,t,ft);return{packageService:new Bt(s,t,n),versionResolver:s,cdnClient:t,peerResolver:n}}import*as Od from"fs/promises";import*as fe from"path";var Ea=[{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"}],Aa=[{name:"dom"},{name:"dom.iterable"},{name:"dom.asynciterable"}];function Ta(r,e){if(!e)return r.filter(s=>!s.since);let t={"5.0":0,"5.5":1},n=t[e];return r.filter(s=>!s.since||t[s.since]<=n)}var iv=`
|
|
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.
|
|
@@ -553,7 +553,7 @@ ${zw(t)}`)}var He="https://esm.sh",Fr="https://cdn.jsdelivr.net/npm/",va="https:
|
|
|
553
553
|
* @param index - Chunk index (0-based)
|
|
554
554
|
* @throws If chunk is not valid JSON/JSON-ish
|
|
555
555
|
*/
|
|
556
|
-
json<T = unknown>(index: number): T;`,
|
|
556
|
+
json<T = unknown>(index: number): T;`,ov=`
|
|
557
557
|
/**
|
|
558
558
|
* Get the insight data produced by the inference layer.
|
|
559
559
|
*
|
|
@@ -562,7 +562,7 @@ ${zw(t)}`)}var He="https://esm.sh",Fr="https://cdn.jsdelivr.net/npm/",va="https:
|
|
|
562
562
|
*
|
|
563
563
|
* @returns The parsed insight JSON, or undefined if no insight is available
|
|
564
564
|
*/
|
|
565
|
-
insight<T = unknown>(): T | undefined;`,
|
|
565
|
+
insight<T = unknown>(): T | undefined;`,dd=`options: {
|
|
566
566
|
messages: Array<{ role: "user" | "assistant"; content: string }>;
|
|
567
567
|
system?: string;
|
|
568
568
|
/** Reasoning effort hint: 0=minimal, 1=low, 2=med, 3=high. Mapped to each provider's native mechanism (OpenAI/OpenRouter reasoning effort, Gemini thinking budget, Anthropic adaptive thinking). 0 minimizes reasoning \u2014 a floor, not a guaranteed "off": some models still think a little at 0, and adaptive models already self-skip at 1 (low). Level 1 (low) is the sensible default for most work; reach for 0 only when you truly want minimal deliberation. Omit for the model's own default. */
|
|
@@ -573,12 +573,12 @@ ${zw(t)}`)}var He="https://esm.sh",Fr="https://cdn.jsdelivr.net/npm/",va="https:
|
|
|
573
573
|
webSearch?: boolean;
|
|
574
574
|
/** Abort the request. On abort the promise rejects / the stream ends. */
|
|
575
575
|
signal?: AbortSignal;
|
|
576
|
-
}`,
|
|
576
|
+
}`,pd=`
|
|
577
577
|
/** A single streamed delta from \`tb.ai.stream()\`. Discriminated by \`kind\`. */
|
|
578
578
|
type AiChunk =
|
|
579
579
|
| { kind: "text"; text: string }
|
|
580
580
|
| { kind: "reasoning"; text: string };
|
|
581
|
-
`,
|
|
581
|
+
`,md=`
|
|
582
582
|
/**
|
|
583
583
|
* General-purpose AI call. \`tb.ai(opts)\` resolves with the full text; \`tb.ai.stream(opts)\`
|
|
584
584
|
* returns an async iterable of {@link AiChunk} deltas you consume with \`for await\`.
|
|
@@ -587,7 +587,7 @@ type AiChunk =
|
|
|
587
587
|
* @throws On rate limit, network error, or provider error
|
|
588
588
|
*/
|
|
589
589
|
ai: {
|
|
590
|
-
(${
|
|
590
|
+
(${dd}): Promise<{ text: string }>;
|
|
591
591
|
/**
|
|
592
592
|
* Streaming counterpart of \`tb.ai()\`. Yields \`{ kind: "text" | "reasoning", text }\` deltas
|
|
593
593
|
* as they arrive; break the loop (or abort \`signal\`) to cancel and stop the upstream.
|
|
@@ -601,8 +601,8 @@ type AiChunk =
|
|
|
601
601
|
* if (c.kind === "text") answer += c.text;
|
|
602
602
|
* }
|
|
603
603
|
*/
|
|
604
|
-
stream(${
|
|
605
|
-
};`,
|
|
604
|
+
stream(${dd}): AsyncIterable<AiChunk>;
|
|
605
|
+
};`,hd=`
|
|
606
606
|
/**
|
|
607
607
|
* Returns AI models available to the current user.
|
|
608
608
|
* Models are filtered by the user's configured API keys.
|
|
@@ -617,7 +617,14 @@ type AiChunk =
|
|
|
617
617
|
friendlyName: string;
|
|
618
618
|
/** Provider display name, e.g. "Anthropic" */
|
|
619
619
|
providerName: string;
|
|
620
|
-
}
|
|
620
|
+
}>>;
|
|
621
|
+
/**
|
|
622
|
+
* Whether the user's own AI keys back \`tb.ai\`. False means only the
|
|
623
|
+
* quota-limited courtesy model is available (or no AI at all) \u2014 a bulb
|
|
624
|
+
* making many AI calls should check this and show a "use your own keys"
|
|
625
|
+
* notice instead of running.
|
|
626
|
+
*/
|
|
627
|
+
hasOwnKeys(): Promise<boolean>;`,av="\n /**\n * The bulb's theme override (`<html data-theme>`).\n *\n * - Get: the current override \u2014 `'dark'` | `'light'`, or `undefined` when\n * following the OS preference.\n * - Set `'dark'`/`'light'` to force and persist it (per-bulb); set\n * `undefined` to clear the override and follow the OS again.\n *\n * Drives `<html data-theme>`, so render off `html[data-theme=\"\u2026\"]` selectors\n * (or observe the attribute) rather than reading `tb.theme`.\n */\n theme: 'light' | 'dark' | undefined;",gd=`
|
|
621
628
|
/**
|
|
622
629
|
* The mode this bulb is running in.
|
|
623
630
|
*
|
|
@@ -627,7 +634,7 @@ type AiChunk =
|
|
|
627
634
|
* - \`'embedded'\` \u2014 Running as a bulb embedded inside another bulb (sandboxed,
|
|
628
635
|
* client-only: AI, filesystem, and server RPC are unavailable)
|
|
629
636
|
*/
|
|
630
|
-
mode: 'local' | 'editor' | 'published' | 'embedded';`,
|
|
637
|
+
mode: 'local' | 'editor' | 'published' | 'embedded';`,cv=`
|
|
631
638
|
/**
|
|
632
639
|
* Local filesystem access (CLI only).
|
|
633
640
|
*
|
|
@@ -642,7 +649,7 @@ type AiChunk =
|
|
|
642
649
|
readBytes(path: string): Promise<Uint8Array>;
|
|
643
650
|
/** Write text or raw bytes to a file. Creates parent directories if needed. */
|
|
644
651
|
write(path: string, content: string | Uint8Array): Promise<boolean>;
|
|
645
|
-
};`,
|
|
652
|
+
};`,lv=`
|
|
646
653
|
/**
|
|
647
654
|
* Async value inspector for tensor-like objects.
|
|
648
655
|
*
|
|
@@ -709,7 +716,7 @@ type AiChunk =
|
|
|
709
716
|
*
|
|
710
717
|
* @returns The full canonical URL
|
|
711
718
|
*/
|
|
712
|
-
url(): Promise<string>;`,
|
|
719
|
+
url(): Promise<string>;`,uv=`
|
|
713
720
|
/**
|
|
714
721
|
* Subscribe to a value pushed from the terminal via \`typebulb send <file> [message]\`.
|
|
715
722
|
*
|
|
@@ -724,25 +731,25 @@ type AiChunk =
|
|
|
724
731
|
* @param handler - Called with each pushed message.
|
|
725
732
|
* @returns An unsubscribe function.
|
|
726
733
|
*/
|
|
727
|
-
onMessage(handler: (message: any) => void): () => void;`,
|
|
734
|
+
onMessage(handler: (message: any) => void): () => void;`,fv="\n /**\n * Server-side function proxy.\n *\n * In the CLI, calls exported functions from the `**server.ts**` section.\n * `tb.server.log(...)` is a built-in that prints to CLI stdout (falls back to console.log on web).\n * User exports override built-ins of the same name.\n *\n * A normal export is awaited for its result (`await tb.server.fn()`). An `async function*`\n * export streams: `for await (const chunk of tb.server.gen())`. The call object supports both;\n * break the `for await` to cancel and tear down the server generator.\n */\n server: Record<string, (...args: any[]) => Promise<any> & AsyncIterable<any>>;",Oa=`${pd}
|
|
728
735
|
/**
|
|
729
736
|
* Typebulb utilities namespace.
|
|
730
737
|
* Type \`tb.\` to discover available helpers.
|
|
731
738
|
*/
|
|
732
|
-
declare const tb: {${
|
|
739
|
+
declare const tb: {${iv}${lv}${ov}${fv}${uv}${md}${cv}${hd}${av}${gd}
|
|
733
740
|
};
|
|
734
|
-
`,
|
|
741
|
+
`,Pa=`${pd}
|
|
735
742
|
/**
|
|
736
743
|
* Typebulb utilities namespace (server-side).
|
|
737
744
|
* Type \`tb.\` to discover available helpers.
|
|
738
745
|
*/
|
|
739
|
-
declare const tb: {${
|
|
746
|
+
declare const tb: {${md}${hd}${gd}
|
|
740
747
|
};
|
|
741
|
-
`;var dt=class{constructor(e){this.store=e}async isNegative(e){let t=await ys(()=>this.store.get(e));return!!t&&t.until>Date.now()}async recordNegative(e){let n=((await ys(()=>this.store.get(e)))?.attempts||0)+1;await ys(()=>this.store.set(e,{until:Date.now()+
|
|
748
|
+
`;var dt=class{constructor(e){this.store=e}async isNegative(e){let t=await ys(()=>this.store.get(e));return!!t&&t.until>Date.now()}async recordNegative(e){let n=((await ys(()=>this.store.get(e)))?.attempts||0)+1;await ys(()=>this.store.set(e,{until:Date.now()+dv(n),attempts:n}))}async clearNegative(e){await ys(()=>this.store.delete(e))}};function dv(r){return Math.min(9e5*Math.pow(2,Math.max(0,r-1)),864e5)}async function ys(r){try{return await r()}catch{return}}import gv from"p-limit";import{resolve as bd}from"resolve.exports";var Oe={maxRelativeTypeRefs:500,maxBareDeps:8,maxBareDepth:3,prefetchConcurrency:4,negativeTtlMs:1e4},bs=["index.d.ts","index.d.mts"],Ra=/\.d\.(ts|mts|cts)$/i;function ws(r){return/\.d\.(ts|mts|cts)(?:[?#].*)?$/i.test(r)||/[?&]dts(?:[&#]|$)/i.test(r)}function yd(r){return[`${r}.d.ts`,`${r}.d.mts`]}function Ve(r){if(!r||r==="./"||r==="/")return[...bs];let e=r.replace(/\.(mjs|cjs|js|mts|cts|ts)$/i,""),t=yd(e),n=e.endsWith("/")?e:`${e}/`;return t.push(...yd(`${n}index`)),t}async function vs(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(pv(a.status)&&s<e)continue;return a}catch{if(s<e)continue;return}finally{clearTimeout(o)}}}function pv(r){return r===408||r===429||r>=500&&r<600}var Ss=class{constructor(e,t){this.fetchDts=e,this.cdnClient=t}async tryUrls(e){for(let t of e){let n=await this.fetchDts(t);if(n&&(this.looksLikeDts(n.dts)||ws(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)}async loadPackageAtVersionedRoot(e,t){let n=this.cdnClient.packageJson(new C({name:e,version:t})),s=await vs(n);if(!s?.ok)return;let i;try{i=await s.json()}catch{return}if(i)return{pkg:i,baseDir:this.cdnClient.baseDir(new C({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=ut(e.path);if(!s||s==="/"||s===".")return this.tryUntilSuccess([...bs],t);if(!Ra.test(s)){let i=await this.tryUntilSuccess(Ve(s),t);if(i)return i}return t(s)}let n=Ve(e.path);return this.tryUntilSuccess([...bs,...n],t)}toResolutionResult(e){return{kind:Ra.test(e)?"types":"probe",path:e}}resolveExportsPath(e,t){let n=t||".",s=e;try{let i=this.extractPathFromResult(bd(s,n,{conditions:["types"]}));if(i)return i}catch{}try{return this.extractPathFromResult(bd(s,n,{browser:!0,conditions:["import","default","module","browser","node"]}))}catch{return}}async resolve(e){try{let t=C.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 C(i).format(),a=new C({...i,subpath:t.subpath}).format(),c=u=>this.fetchCandidateFrom(s,t.name,u);if(t.subpath){let u=ka(t.subpath),d=this.resolveExportsPath(n,u);if(d){let y=await this.resolveFromSelected(this.toResolutionResult(d),c);if(y)return{...y,resolvedPkg:a}}let p=await this.tryUntilSuccess(Ve(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=ut(n),i=new URL(s,e).toString(),o=await this.tryUrls([i]);return o?{dts:o.dts,url:o.url,resolvedPkg:t}:void 0}};import{gunzipSync as mv}from"fflate";var ks=class{async fetchAndExtract(e,t){let n=this.getTarballUrl(e,t),s=await vs(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=mv(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 y=n.slice(i,i+d);t.set(this.normalizeTarPath(l),s.decode(y))}i+=Math.ceil(d/512)*512}}catch{}return t}};var xs=class{constructor(e,t,n=new ks){this.cdnClient=e,this.cache=t,this.tarballFetcher=n}typesNameCandidates(e){let t=e.startsWith("@")?e.slice(1).replace("/","__"):e;return t.includes(".")?[t,t.split(".").join("-"),t.split(".").join("")]:[t]}selectTypesVersion(e,t,n){try{if(n){let i=ft.majorOf(n),o=e.filter(a=>ft.majorOf(a)===i);if(o.length)return o.sort((a,c)=>ft.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=Ve(e);return t!==e&&n.push(`${e}.d.ts`,`${e}/index.d.ts`),n}async fetchFromVersionedRoot(e,t){let n=new C(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 C(t).format():t.name}}}async resolve(e){let t=C.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 Es=class{collectRelativeTypeRefs(e){return this.collectRefs(e).filter(t=>t.startsWith("./")||t.startsWith("../"))}collectBareModuleRefs(e){return this.collectRefs(e).filter(t=>this.isBare(t))}collectRefs(e){let t=e.split(`
|
|
742
749
|
`).filter(s=>{let i=s.trimStart();return!(i.startsWith("*")||i.startsWith("//")||i.startsWith("/*"))}).join(`
|
|
743
|
-
`),n=new Set;for(let s of t.matchAll(/(import|export)\s+[^'"\n]*from\s*['"]([^'"\n]+)['"]/g))n.add(s[2]);for(let s of t.matchAll(/export\s*\*\s*from\s*['"]([^'"\n]+)['"]/g))n.add(s[1]);return Array.from(n)}isBare(e){return!(e.startsWith("./")||e.startsWith("../")||e.startsWith("file:")||e.startsWith("http://")||e.startsWith("https://"))}};var
|
|
744
|
-
`);await this.prefetchBareDeps(y,l,d,p,s);let m=c.format(),g=e===m?[e]:[e,m],k=g.some(x=>this.ambientlyDeclares(i,x));return k?this.markFileAmbient(d,f):p.push(...g.map(x=>({module:x,path:f}))),{pkg:e,mainPath:f,files:d,shims:p,ambient:k}}};import*as Ge from"fs/promises";import*as Re from"path";import*as
|
|
745
|
-
`,"utf8")}import*as ze from"fs/promises";import*as
|
|
750
|
+
`),n=new Set;for(let s of t.matchAll(/(import|export)\s+[^'"\n]*from\s*['"]([^'"\n]+)['"]/g))n.add(s[2]);for(let s of t.matchAll(/export\s*\*\s*from\s*['"]([^'"\n]+)['"]/g))n.add(s[1]);return Array.from(n)}isBare(e){return!(e.startsWith("./")||e.startsWith("../")||e.startsWith("file:")||e.startsWith("http://")||e.startsWith("https://"))}};var wd="file:///node_modules",As=class{constructor(){this.epoch=0}bumpEpoch(){this.epoch+=1}epochDir(){return`__tsepoch_${this.epoch}`}pathForMain(e){return`${wd}/${this.epochDir()}/${e}/index.d.ts`}pathFor(e,t){let n=ut(t);return`${wd}/${this.epochDir()}/${e}/${n}`}};import{LRUCache as hv}from"lru-cache";function vd(r){let e=new hv({ttl:Oe.negativeTtlMs,max:500}),t=new Map;return async function(s){try{if(await r.isNegative(s)||e.has(s))return;let i=await r.getCachedFile(s);if(i)return{dts:i,url:s};let o=t.get(s);if(o)return o;let a=(async()=>{let c=await fetch(s,{cache:"no-store"});if(!c.ok){c.status===404&&(e.set(s,!0),await r.recordNegative(s));return}let l=await c.text(),f=c.url||s;return await r.clearNegative(s),await r.setCachedFile(f,l),{dts:l,url:f}})();return t.set(s,a),await a.finally(()=>t.delete(s))}catch{return}}}var Hr=class{constructor(e){this.inFlight=new Map,this.scanner=new Es,this.cache=e.cache,this.cdnClient=e.cdnClient,this.versionResolver=e.versionResolver,this.packageService=e.packageService,this.fetchDts=vd(e.cache),this.typescriptProvider=new Ss(this.fetchDts,e.cdnClient),this.definitelyTypedProvider=new xs(e.cdnClient,e.cache),this.virtualFs=new As}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()}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 fetchViaProviders(e){for(let t of[this.typescriptProvider,this.definitelyTypedProvider])try{let n=await t.resolve(e);if(n?.dts)return n}catch{}}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)&&new C(n).subpath===new C(a.resolvedPkg||n).subpath){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>Oe.maxRelativeTypeRefs)))try{let a=new URL(t),c=new URL("./",a);o??(o=this.extractPackageRootUrl(a));let l=this.scanner.collectRelativeTypeRefs(e).slice(0,Oe.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=ws(c)?[c]:Ve(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 y=this.toVirtualPath(n,new URL(p.url),s);this.pushFileIfNew(i,y,p.dts),await this.expandRelativeRefs(p.dts,p.url,s,i,o,n);return}}}catch{}}isDifferentPackage(e,t){return e===t?!1:new C(e).name!==new C(t).name}ambientlyDeclares(e,t){if(/^(?:import|export)\b/m.test(e))return!1;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.scanner.collectBareModuleRefs(e).slice(0,Oe.maxBareDeps).filter(l=>this.isDifferentPackage(l,t));if(!o.length)return;let a=new Set([t]),c=gv(Oe.prefetchConcurrency);await Promise.all(o.map(l=>c(()=>this.prefetchBareDepsRecursive(l,n,s,Oe.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.scanner.collectBareModuleRefs(a.dts).slice(0,Oe.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=new C(e),i=await this.fetchRootDts(e,t)??(s.subpath?await this.fetchRootDts(s.name,t):void 0);return i?this.buildDefFromContent(e,i,i.resolvedPkg||e,t):this.createStubDef(e)})}async buildDefFromContent(e,t,n,s){let{dts:i,url:o,resolvedPkg:a}=t,c=new C(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 y=d.map(x=>x.content).join(`
|
|
751
|
+
`);await this.prefetchBareDeps(y,l,d,p,s);let m=c.format(),g=e===m?[e]:[e,m],k=g.some(x=>this.ambientlyDeclares(i,x));return k?this.markFileAmbient(d,f):p.push(...g.map(x=>({module:x,path:f}))),{pkg:e,mainPath:f,files:d,shims:p,ambient:k}}};import*as Ge from"fs/promises";import*as Re from"path";import*as xd from"os";import*as Ca from"fs/promises";import*as Sd from"crypto";function ue(r){return Sd.createHash("sha1").update(r).digest("hex")}async function Pe(r){try{return JSON.parse(await Ca.readFile(r,"utf8"))}catch{return}}async function Ts(r){try{return await Ca.readFile(r,"utf8")}catch{return}}var kd=1,Ye=Re.join(xd.homedir(),".typebulb","cache"),Vr=Re.join(Ye,"packages"),Yr=Re.join(Ye,"proxy"),Os=Re.join(Ye,"dts"),yv=Re.join(Ye,"emit"),Na;function F(){return Na||(Na=bv()),Na}function Ps(r,e){return Re.join(yv,ue(r),e)}async function bv(){await Ge.mkdir(Ye,{recursive:!0});let r=Re.join(Ye,"version.json");if((await Pe(r))?.version===kd)return;let t=await Ge.readdir(Ye).catch(()=>[]);await Promise.all(t.map(n=>Ge.rm(Re.join(Ye,n),{recursive:!0,force:!0}))),await Ge.writeFile(r,JSON.stringify({version:kd})+`
|
|
752
|
+
`,"utf8")}import*as ze from"fs/promises";import*as Ed from"path";async function ie(r,e){await ze.mkdir(Ed.dirname(r),{recursive:!0});let t=`${r}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;await ze.writeFile(t,e,"utf8"),await ze.rename(t,r).catch(async n=>{throw await ze.rm(t,{force:!0}).catch(()=>{}),n})}var jt=class{constructor(e){this.filePath=e}mem;loadPromise;load(){return this.mem?Promise.resolve(this.mem):(this.loadPromise||(this.loadPromise=Pe(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 ie(this.filePath,JSON.stringify(Object.fromEntries(e)))}};var _a=fe.join(Vr,"indexes"),Ad=fe.join(Vr,"pinned"),wv=fe.join(Vr,"meta"),vv=fe.join(Vr,"negative.json"),Cs=class{pinnedMem=new Map;indexMem=new Map;metaMem=new Map;negativeCache=new dt(new jt(vv));async getPinnedExact(e,t){let n=`${e}@${t}`;if(this.pinnedMem.has(n))return this.pinnedMem.get(n);await F();let s=await Ts(fe.join(Ad,ue(n)+".txt"));return this.pinnedMem.set(n,s),s}async setPinnedExact(e,t,n){let s=`${e}@${t}`;this.pinnedMem.set(s,n),await F(),await ie(fe.join(Ad,ue(s)+".txt"),n)}async getIndex(e){if(this.indexMem.has(e))return this.indexMem.get(e);await F();let t=await Pe(fe.join(_a,Rs(e)+".json"));return this.indexMem.set(e,t),t}async setIndex(e,t,n){let s={versions:t,distTags:n,updatedAt:Date.now()};this.indexMem.set(e,s),await F(),await ie(fe.join(_a,Rs(e)+".json"),JSON.stringify(s))}async invalidateVersionsCache(e){this.indexMem.delete(e),await Od.rm(fe.join(_a,Rs(e)+".json"),{force:!0})}async isNegative(e){return await F(),this.negativeCache.isNegative(e)}async recordNegative(e){await F(),await this.negativeCache.recordNegative(e)}async clearNegative(e){await this.negativeCache.clearNegative(e)}async getMeta(e,t){let n=`${e}@${t}`;if(this.metaMem.has(n))return this.metaMem.get(n);await F();let s=await Pe(Td(e,t));return this.metaMem.set(n,s),s}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 F(),await ie(Td(e,t),JSON.stringify(o))}};function Td(r,e){return fe.join(wv,Rs(r),encodeURIComponent(e)+".json")}function Rs(r){return r.replace(/\//g,"__")}var Pd={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 Sv=new Cs,{packageService:Ns,versionResolver:Rd,cdnClient:Cd,peerResolver:pO}=fd(Sv,Pd);var Nd=`
|
|
746
753
|
(() => {
|
|
747
754
|
// Embedded (bulb-in-a-bulb): runs inside a sandboxed iframe with no parent
|
|
748
755
|
// bridge, so privileged tb.* (AI, fs, server RPC) can't reach a host and would
|
|
@@ -989,6 +996,14 @@ declare const tb: {${dd}${pd}${md}
|
|
|
989
996
|
return resp.json();
|
|
990
997
|
},
|
|
991
998
|
|
|
999
|
+
// Own-keys check - true when the user's own AI backs tb.ai (env keys, compat endpoint, or Ollama)
|
|
1000
|
+
hasOwnKeys: async () => {
|
|
1001
|
+
if (isEmbedded) return false;
|
|
1002
|
+
const resp = await fetch('/__has-own-keys');
|
|
1003
|
+
if (!resp.ok) return false;
|
|
1004
|
+
return (await resp.json()) === true;
|
|
1005
|
+
},
|
|
1006
|
+
|
|
992
1007
|
// Dump just logs to console in local mode
|
|
993
1008
|
dump: async (...args) => console.log('[tb.dump]', ...args),
|
|
994
1009
|
|
|
@@ -1110,8 +1125,8 @@ declare const tb: {${dd}${pd}${md}
|
|
|
1110
1125
|
});
|
|
1111
1126
|
} catch (e) {}
|
|
1112
1127
|
})();
|
|
1113
|
-
</script>`}function
|
|
1114
|
-
html, body { height: 100%; }`,d={imports:
|
|
1128
|
+
</script>`}function _d(r){let{name:e,code:t,css:n,html:s,data:i,insight:o,importMap:a,theme:c,embedded:l}=r,f=s.trim()||'<div id="app"></div>',u=l?"":`
|
|
1129
|
+
html, body { height: 100%; }`,d={imports:xv(a.imports)};return`<!DOCTYPE html>
|
|
1115
1130
|
<html>
|
|
1116
1131
|
<head>
|
|
1117
1132
|
<meta charset="utf-8">
|
|
@@ -1135,17 +1150,17 @@ ${i.length>0?`<script>window.__TB_DATA__ = ${qt(JSON.stringify(i))};</script>`:"
|
|
|
1135
1150
|
${o?`<script>window.__TB_INSIGHT__ = ${qt(JSON.stringify(o))};</script>`:""}
|
|
1136
1151
|
|
|
1137
1152
|
<script>
|
|
1138
|
-
${
|
|
1153
|
+
${Nd}
|
|
1139
1154
|
</script>
|
|
1140
1155
|
|
|
1141
|
-
${
|
|
1156
|
+
${kv}
|
|
1142
1157
|
|
|
1143
1158
|
<script type="module">
|
|
1144
1159
|
${qt(t)}
|
|
1145
1160
|
globalThis.__tbEntryRan = true; /* load-failure backstop \u2014 see embedProtocol */
|
|
1146
1161
|
</script>
|
|
1147
1162
|
</body>
|
|
1148
|
-
</html>`}var
|
|
1163
|
+
</html>`}var kv=`<script>
|
|
1149
1164
|
(function () {
|
|
1150
1165
|
var framed = window.parent !== window;
|
|
1151
1166
|
var post = function (m) { try { parent.postMessage(m, '*'); } catch (e) {} }; /* framed only */
|
|
@@ -1241,7 +1256,7 @@ globalThis.__tbEntryRan = true; /* load-failure backstop \u2014 see embedProtoco
|
|
|
1241
1256
|
}
|
|
1242
1257
|
});
|
|
1243
1258
|
})();
|
|
1244
|
-
</script>`;function
|
|
1259
|
+
</script>`;function xv(r){let e={};for(let[t,n]of Object.entries(r))e[t]=n.startsWith("https://")?"/proxy/"+n:n;return e}import*as Ms from"fs/promises";import*as $s from"path";import{existsSync as Id,readFileSync as Ev}from"fs";import{execFile as Av}from"child_process";import{promisify as Tv}from"util";import{satisfies as Ov}from"semver";var Pv=Tv(Av);async function Ds(r,e,t){let s=r.map(o=>Rv(o,t)).filter(o=>!Cv(o,e));if(s.length===0)return;await Ms.mkdir(e,{recursive:!0});let i=$s.join(e,"package.json");Id(i)||await Ms.writeFile(i,JSON.stringify({name:"typebulb-server",private:!0})),console.log(` Installing: ${s.join(", ")}`),await Pv("npm",["install","--no-audit","--no-fund",...s],{cwd:e,shell:!0})}function Rv(r,e){if(!e||C.parse(r).version)return r;let t=e[r];return t?`${r}@${t}`:r}function Cv(r,e){let{name:t,version:n}=C.parse(r),s=$s.join(e,"node_modules",t);if(!Id(s))return!1;if(!n)return!0;try{let i=JSON.parse(Ev($s.join(s,"package.json"),"utf-8")).version;return Ov(i,n)}catch{return!1}}function Bs(r){let e=new Set,t=/\bimport\s+(?:[\s\S]*?\s+from\s+)?['"]([^./][^'"]*)['"]/g,n;for(;n=t.exec(r);){let s=n[1];s.includes(":")||e.add(C.rootOf(s))}return[...e]}var de=class extends Error{constructor(e,t="unknown",n=!1){super(e),this.code=t,this.retryable=n}},pe=class{getPath(e,t){return this.path}parseError(e,t){return this.parseJsonError(e,t)}parseStreamChunk(e){return this.checkAndThrowError(e),this.parseProviderStreamChunk(e)}extractSystemMessages(e,t=`
|
|
1245
1260
|
|
|
1246
1261
|
`){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){if(!e)return{message:`HTTP ${t}`};try{let n=JSON.parse(e);return n.error&&typeof n.error=="object"?{message:n.error.message||`HTTP ${t}`,type:n.error.type}:n.message?{message:n.message}:{message:e}}catch{return{message:e}}}checkAndThrowError(e){if(typeof e!="object"||e===null)return;let t=e;if(t.type==="error"&&"message"in t){let n=t.code||"unknown";throw new de(t.message,n,!!t.retryable)}if(t.error)throw new de(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 js=class extends pe{constructor(){super(...arguments),this.providerName="OpenAI",this.defaultBaseUrl="https://api.openai.com",this.path="/v1/responses",this.effortMap={0:"none",1:"low",2:"medium",3:"high"}}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};if(n?.webSearch!==!1&&(o.tools=[{type:"web_search"}]),n?.effort!==void 0){let a=this.effortMap[n.effort];o.reasoning=a==="none"?{effort:a}:{effort:a,summary:"auto"}}return o}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(`
|
|
1247
1262
|
`)),!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"response.failed":{let n=e.response?.error,s=n?.message||"Response failed",i=n?.code==="insufficient_quota"||n?.code==="rate_limit_exceeded";throw new de(s,i?"rate_limit":"unknown",i)}case"response.output_text.delta":return{text:e.delta};case"response.reasoning_summary_text.delta":return{reasoning:e.delta};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(`
|
|
@@ -1250,46 +1265,46 @@ globalThis.__tbEntryRan = true; /* load-failure backstop \u2014 see embedProtoco
|
|
|
1250
1265
|
|
|
1251
1266
|
`);return{text:t,reasoning:n||void 0}}parseProviderStreamChunk(e){return this.isAnthropicEvent(e)&&e.type==="content_block_delta"?e.delta.type==="text_delta"?{text:e.delta.text||""}:e.delta.type==="thinking_delta"?{reasoning:e.delta.thinking||""}:null: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 Us=class extends pe{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,`
|
|
1252
1267
|
`),c={contents:o.map(f=>({role:f.role==="assistant"?"model":"user",parts:[{text:f.content}]}))};n?.webSearch!==!1&&(c.tools=[{google_search:{}}]),i&&(c.systemInstruction={role:"system",parts:[{text:i}]});let l=n?.effort;if(l!==void 0){let u={0:0,1:1024,2:8192,3:-1}[l];c.generationConfig={thinkingConfig:u===0?{thinkingBudget:0}:{includeThoughts:!0,thinkingBudget:u}}}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(`
|
|
1253
|
-
`)[0],type:s.status,code:s.code?.toString()}:n.message?{message:n.message}:{message:e}}catch{return{message:e}}}parseNonStreamingResponse(e){if(this.checkAndThrowError(e),this.checkGeminiError(e),!this.isGeminiResponse(e))return{text:"",status:"failed",error:"Invalid response format"};let t=this.extractParts(e).text||"",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(this.isGeminiResponse(e)&&e.promptFeedback?.blockReason){let t=e.promptFeedback.blockReason;throw new de(`Prompt blocked: ${t}`)}}};var Js=class extends Ft{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}}};var
|
|
1268
|
+
`)[0],type:s.status,code:s.code?.toString()}:n.message?{message:n.message}:{message:e}}catch{return{message:e}}}parseNonStreamingResponse(e){if(this.checkAndThrowError(e),this.checkGeminiError(e),!this.isGeminiResponse(e))return{text:"",status:"failed",error:"Invalid response format"};let t=this.extractParts(e).text||"",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(this.isGeminiResponse(e)&&e.promptFeedback?.blockReason){let t=e.promptFeedback.blockReason;throw new de(`Prompt blocked: ${t}`)}}};var Js=class extends Ft{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}}};var Ld=new Js,Nv=new Map([["openai",new js],["openrouter",new qs],["anthropic",new Fs],["gemini",new Us],["ollama",Ld],["openai-compat",Ld]]);function pt(r){let e=Nv.get(r);if(!e)throw new Error(`Unsupported protocol: ${r}`);return e}function _v(r,e){return r.replace(/\/+$/,"")+(e.startsWith("/")?e:`/${e}`)}async function Ia(r,e){let t=pt(r.protocol),n=t.getPath(r.model,e.stream),s=_v(r.baseUrl,n),i=t.buildHeaders(r.apiKey,e.origin),o=t.buildPayload(e.messages,r.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 Gr(r,e){let t=pt(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 $d(r){let e=r.indexOf(`\r
|
|
1254
1269
|
\r
|
|
1255
1270
|
`),t=r.indexOf(`
|
|
1256
1271
|
|
|
1257
|
-
`);return e!==-1&&(t===-1||e<t)?{pos:e,len:4}:t!==-1?{pos:t,len:2}:{pos:-1,len:0}}function
|
|
1258
|
-
`).trim();if(!n)return null;if(n==="[DONE]")return"done";try{return JSON.parse(n)}catch{return null}}async function*
|
|
1259
|
-
`,"utf8"),await Z.writeFile(Q.join(e,"code.tsx"),r.code,"utf8"),await Z.writeFile(Q.join(e,"tb.d.ts"),
|
|
1260
|
-
`,"utf8"),{dir:e}}function
|
|
1261
|
-
`))console.log(`${e} ${n}`);return r.length>0}function
|
|
1272
|
+
`);return e!==-1&&(t===-1||e<t)?{pos:e,len:4}:t!==-1?{pos:t,len:2}:{pos:-1,len:0}}function La(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(`
|
|
1273
|
+
`).trim();if(!n)return null;if(n==="[DONE]")return"done";try{return JSON.parse(n)}catch{return null}}async function*Md(r,e,t){let n=new TextDecoder,s="",i=e?new Promise((o,a)=>{e.aborted&&a(new Error("Aborted")),e.addEventListener("abort",()=>a(new Error("Aborted")),{once:!0})}):null;try{for(;;){let{done:o,value:a}=i?await Promise.race([r.read(),i]):await r.read();if(o){if(s.trim()){let f=La(s);f!==null&&f!=="done"&&(yield f)}return}t?.(),s+=n.decode(a,{stream:!0});let{pos:c,len:l}=$d(s);for(;c!==-1;){let f=s.slice(0,c);s=s.slice(c+l);let u=La(f);if(u==="done")return;u!==null&&(yield u),{pos:c,len:l}=$d(s)}}}finally{try{await r.cancel()}catch{}}}async function zr(r,e){if(!r.body)throw new Error("Response body is missing");let t="";for await(let n of Ut(r,e))n.kind==="text"&&(t+=n.text);return t}async function*Ut(r,e){let t=e??(r.headers.get("X-Provider-Protocol")||"openai"),n=pt(t);if(!r.body)return;let s=r.body.getReader();for await(let i of Md(s)){let o=n.parseStreamChunk(i);o?.reasoning&&(yield{kind:"reasoning",text:o.reasoning}),o?.text&&(yield{kind:"text",text:o.text})}}Wt();function Hs(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=pt(t)}catch{return`Unknown provider '${t}'.`}if(t==="ollama")return{apiKey:"",baseUrl:`${$a(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=Kt[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 Vs(r,e){let t=[...e.system?[{role:"system",content:e.system}]:[],...e.messages.map(s=>({role:s.role,content:s.content}))],n=e.effort;return Ia(r,{messages:t,stream:!0,effort:n!=null&&n>=0&&n<=3?n:void 0,webSearch:e.webSearch??!0,signal:e.signal})}Wt();async function jd(r){let e=Hs(r.provider,r.model);if(typeof e=="string")throw new Error(e);let t=await Vs(e,r);if(!t.ok){let n=await Gr(t,e.protocol);throw new Error(n.message)}return{response:t,protocol:e.protocol}}async function Bv(r){let{response:e,protocol:t}=await jd(r);return{text:await zr(e,t)}}async function*jv(r){let{response:e,protocol:t}=await jd(r);yield*Ut(e,t)}function qd(){let r=Object.assign(Bv,{stream:jv});globalThis.tb=Object.freeze({ai:r,models:()=>Ce(),hasOwnKeys:Ws,mode:"local"})}async function Fd(r){let t=(await Qe.readdir(r)).find(n=>n.endsWith(".bulb.md"));return t?Ys.join(r,t):null}async function me(r){let e=await Qe.readFile(r,"utf-8"),t=xe(e);if(!t)throw new Error("Invalid .bulb.md file format");let n=Mt(t);return{bulb:n,config:tl(n.config),warnings:zc(e)}}async function Qr(r,e,t,n){let s=va(r,{serverOnly:!0});if(s.error)throw new Error(`Server compilation error: ${s.error}`);let i=s.code;t&&(i=await Uc(i,t));let o=Ys.join(e,".typebulb");await Qe.mkdir(o,{recursive:!0});let a=Bs(i);a.length>0&&await Ds(a,o,n);let c=Ys.join(o,"server.mjs");return await Qe.writeFile(c,i,"utf-8"),qd(),await import(`${qv(c).href}?t=${Date.now()}`)}async function Da(r,e,t,n,s){let{bulb:i,config:o}=await me(r),a=td(i.data);id(i.code,o.dependencies??{});let c=va(i.code,{jsxImportSource:o.ts?.jsxImportSource});c.error&&console.error("Compilation error:",c.error);let{importMap:l}=await Ns.buildImportMap(c.code,o.dependencies??{},n?new Set([n.name]):void 0);n&&(l.imports[n.name]=n.entryUrl);let f=_d({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 Qr(i.server,s,n,o.dependencies)),{html:f,bulb:i,serverExports:u}}jr();Xr();var Kd=new Set(["claude","pi"]);function Wd(r){return Kd.has(r)}function Vt(){return[...Kd]}import*as Xe from"path";import{spawn as lS,execSync as uS}from"child_process";import{createRequire as fS}from"module";import{existsSync as dS}from"fs";import*as Z from"fs/promises";import*as Q from"path";import*as Yt from"path";var Gv=Yt.join(Os,"pkg"),zv=Yt.join(Os,"files"),Qv=Yt.join(Os,"negative.json"),Xs=class{pkgMem=new Map;fileMem=new Map;negativeCache=new dt(new jt(Qv));async getCachedDts(e){if(this.pkgMem.has(e))return this.pkgMem.get(e);await F();let t=await Pe(Hd(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 Qs(async()=>{await F(),await ie(Hd(e),JSON.stringify(s))})}async getCachedFile(e){if(this.fileMem.has(e))return this.fileMem.get(e);await F();let t=await Ts(Vd(e));return this.fileMem.set(e,t),t}async setCachedFile(e,t){this.fileMem.set(e,t),await Qs(async()=>{await F(),await ie(Vd(e),t)})}isNegative(e){return this.negativeCache.isNegative(e)}async recordNegative(e){await Qs(async()=>{await F(),await this.negativeCache.recordNegative(e)})}clearNegative(e){return Qs(()=>this.negativeCache.clearNegative(e))}};async function Qs(r){try{await r()}catch{}}function Hd(r){return Yt.join(Gv,ue(r)+".json")}function Vd(r){return Yt.join(zv,ue(r)+".txt")}var Fa;function Xv(){return Fa||(Fa=new Hr({cache:new Xs,cdnClient:Cd,packageService:Ns,versionResolver:Rd})),Fa}var Yd="file:///node_modules/";async function Gd(r){let e=Ps(r.emitKey,"typecheck");await F(),await Z.rm(e,{recursive:!0,force:!0}),await Z.mkdir(e,{recursive:!0});let t=rS(r.jsxImportSource,r.dependencies),n=await Xv().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=Zs(u.path);if(!d||o.has(d))continue;o.add(d);let p=Q.join(e,"node_modules",d);await Z.mkdir(Q.dirname(p),{recursive:!0}),await Z.writeFile(p,u.content,"utf8")}let a={};for(let f of i)for(let u of f.shims){let d=Zs(u.path);d&&(a[u.module]=[`./node_modules/${d}`])}for(let f of i){if(f.ambient)continue;let u=Zs(f.mainPath);u&&(a[f.pkg]=[`./node_modules/${u}`])}let c=new Set;for(let f of i)for(let u of f.files){if(!u.ambient)continue;let d=Zs(u.path);d&&c.add(`node_modules/${d}`)}if(r.local){delete a[r.local.name];let f=await nS(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=Zv(r.jsxImportSource,a,[...c]);return await Z.writeFile(Q.join(e,"tsconfig.json"),JSON.stringify(l,null,2)+`
|
|
1274
|
+
`,"utf8"),await Z.writeFile(Q.join(e,"code.tsx"),r.code,"utf8"),await Z.writeFile(Q.join(e,"tb.d.ts"),Oa,"utf8"),{dir:e}}var Ua={target:"es2023",module:"esnext",moduleResolution:"bundler",strict:!0,noEmit:!0,skipLibCheck:!0,esModuleInterop:!0,allowSyntheticDefaultImports:!0,forceConsistentCasingInFileNames:!0};function Zv(r,e,t=[]){return{compilerOptions:{...Ua,lib:eS([...Ea,...Aa]),jsx:"react-jsx",jsxImportSource:r??"react",paths:e},include:["code.tsx","tb.d.ts",...t]}}function eS(r){return Ta(r).map(e=>tS(e.name))}function tS(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 rS(r,e){let t=r??("react"in e?"react":void 0);return t?[`${t}/jsx-runtime`,`${t}/jsx-dev-runtime`]:[]}function Zs(r){if(!r.startsWith(Yd))return;let e=r.slice(Yd.length),t=e.indexOf("/");if(!(t<0))return e.slice(t+1)}async function nS(r,e){if(!r.typesAbs)return;let t=Q.dirname(r.typesAbs),n=Q.join(e,"node_modules",r.name);for(let s of await sS(t)){let i=Q.join(n,Q.relative(t,s));await Z.mkdir(Q.dirname(i),{recursive:!0}),await Z.copyFile(s,i)}return Q.basename(r.typesAbs)}async function sS(r){let e=[];async function t(n){let s=await Z.readdir(n,{withFileTypes:!0});for(let i of s){let o=Q.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 oe from"fs/promises";import*as _e from"path";import{existsSync as iS}from"fs";var oS="^22";async function zd(r){let e=Ps(r.emitKey,"typecheck-server");await F(),await oe.rm(e,{recursive:!0,force:!0}),await oe.mkdir(e,{recursive:!0});let t=_e.join(r.bulbDir,".typebulb"),n=Bs(r.server).filter(o=>o!==r.local?.name);await Ds([`@types/node@${oS}`,...n],t,r.dependencies);let s=_e.join(t,"node_modules"),i=_e.join(e,"node_modules");return await cS(s,i),await oe.writeFile(_e.join(e,"server.ts"),r.server,"utf8"),await oe.writeFile(_e.join(e,"tb.d.ts"),Pa,"utf8"),await oe.writeFile(_e.join(e,"tsconfig.json"),JSON.stringify(aS(r.local),null,2)+`
|
|
1275
|
+
`,"utf8"),{dir:e}}function aS(r){let e={...Ua,lib:["ES2023"],types:["node"]};if(r?.typesAbs){let t=i=>i.replace(/\\/g,"/"),n=t(_e.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 cS(r,e){if(!iS(r)){await oe.mkdir(e,{recursive:!0});return}await oe.rm(e,{recursive:!0,force:!0});let t=process.platform==="win32"?"junction":"dir";await oe.symlink(r,e,t)}hs();async function Xd(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=Qd(qr(t.code,{target:"client",dependencies:n.dependencies??{}}),"client")||i),t.server&&(i=Qd(qr(t.server,{target:"server"}),"server")||i);let o=hS([process.cwd(),Xe.dirname(r)]);if(!o){let l=Xe.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 Gd({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 zd({server:t.server,bulbDir:Xe.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 pS(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 Qd(r,e){for(let t of r)for(let n of t.message.split(`
|
|
1276
|
+
`))console.log(`${e} ${n}`);return r.length>0}function pS(r,e){return new Promise(t=>{let n=lS(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 mS=fS(import.meta.url);function hS(r){let e=n=>{try{let s=mS.resolve("typescript/package.json",{paths:n}),i=Xe.join(Xe.dirname(s),"lib","tsc.js");return dS(i)?i:void 0}catch{return}},t=e(r);if(t)return t;try{let n=uS("npm root -g",{encoding:"utf8"}).trim();return e([n])}catch{return}}ei();Xr();async function Zd(r,e){let{bulb:t}=await me(r),n=Gt(t);if(mt(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 Zr from"path";async function ep(r,e){if(!r){e||(console.error("Usage: typebulb untrust <file.bulb.md>"),process.exit(1));let n=qa();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=Zr.resolve(r);t.endsWith(".bulb.md")||(console.error("File must have .bulb.md extension"),process.exit(1)),Ht(t,e),console.log(e?`Trusted ${Zr.basename(t)} \u2014 runs with fs / AI / server.ts (no --trust needed).`:`Untrusted ${Zr.basename(t)} \u2014 runs Restricted.`),console.log(` ${t}`)}Ie();import*as Op from"readline";fi();rc();var nn={claude:()=>new Xt,pi:()=>new Zt};function kp(){for(let r of Object.values(nn))try{r().ensureWaitSupport()}catch{}}function sn(){for(let r of Object.keys(nn))try{if(nn[r]().detectsSelf())return r}catch{}}function xp(r){let e=Vt(),t=new Map(e.filter(s=>nn[s]).map(s=>[s,nn[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 ik,existsSync as ok}from"fs";import*as yt from"path";import{fileURLToPath as ak}from"url";function Ep(){let r=yt.dirname(ak(import.meta.url));for(;!ok(yt.join(r,"package.json"));){let e=yt.dirname(r);if(e===r)break;r=e}return r}function di(){return yt.join(Ep(),"README.md")}function nc(){return yt.join(Ep(),"description.md")}function ck(r){return`---
|
|
1262
1277
|
name: typebulb
|
|
1263
|
-
description: ${
|
|
1278
|
+
description: ${ik(nc(),"utf8").trim().replace(/\s+/g," ")}
|
|
1264
1279
|
version: ${r}
|
|
1265
|
-
---`}function
|
|
1280
|
+
---`}function lk(r){return`> Generated from typebulb v${r}. If \`npx typebulb --version\` reports a newer version, re-run \`npx typebulb skill\` to refresh this file.`}function Ap(r,e){return`${ck(e)}
|
|
1266
1281
|
|
|
1267
|
-
${
|
|
1282
|
+
${lk(e)}
|
|
1268
1283
|
|
|
1269
1284
|
${r.trim()}
|
|
1270
|
-
`}function
|
|
1285
|
+
`}function sc(r){let e=t=>n=>r?`\x1B[${t}m${n}\x1B[0m`:n;return{lit:e("38;5;70"),litLink:e("4;38;5;70"),brand:e("38;5;135")}}async function Pp(r){let e=xp(process.cwd());if("ambiguous"in e){let t=await uk(r,e.ambiguous);return t?Tp(r,t):fk(r,e.ambiguous)}return Tp(r,e.name)}async function Tp(r,e){let t,n;try{t=await dp(e)}catch(f){n=f instanceof Error?f.message:String(f)}let{lit:s,litLink:i,brand:o}=sc(process.stdout.isTTY===!0),a=[" Read the authoring skill before writing a bulb:",` \u2022 ${s("npx typebulb skill")} \u2014 assembles one SKILL.md`," \u2022 or, open its parts:",` ${s(nc())}`,` ${s(di())}`],c=t?[" Agent mirror is live\u{1F4A1}",` ${s("\u25CF")} ${i(t.url)}`," Embedded bulbs render live here."," Agents:",` Reusable app/tool \u2192 write a ${s(".bulb.md")}`," Show something inline \u2192 embed a bulb"," background a wait for its render verdict (before or after emitting):",` \u2022 ${s('typebulb wait agent --match "[embed <name>"')}`,...a," End your reply with the mirror link above"," \u2022 easy to miss the link mid-message"]:[` The mirror did not start (${n})`,` \u25CF Start it manually: ${s(`npx typebulb agent:${e}`)}`," Agents:",...a],l=[` ${o(`typebulb v${r}`)}`,...c,""];process.stdout.write(l.join(`
|
|
1271
1286
|
`)+`
|
|
1272
|
-
`)}async function
|
|
1287
|
+
`)}async function uk(r,e){if(!process.stdin.isTTY||!process.stdout.isTTY)return;let{lit:t,brand:n}=sc(!0),s=[` ${n(`typebulb v${r}`)}`," This project has sessions for more than one agent harness.",...e.map((o,a)=>` ${t(String(a+1))}) ${o}`),""];process.stdout.write(s.join(`
|
|
1273
1288
|
`)+`
|
|
1274
|
-
`);let i=
|
|
1289
|
+
`);let i=Op.createInterface({input:process.stdin,output:process.stdout});try{let o=(await new Promise(c=>i.question(" Open which? [1]: ",c))).trim();if(o==="")return e[0];let a=Number(o);return Number.isInteger(a)&&a>=1&&a<=e.length?e[a-1]:e.find(c=>c===o.toLowerCase())}finally{i.close()}}function fk(r,e){let{lit:t,brand:n}=sc(process.stdout.isTTY===!0),s=[` ${n(`typebulb v${r}`)}`," This project has sessions for more than one agent harness."," Open the mirror for the one you want:",...e.map(i=>` \u2022 ${t(`npx typebulb agent:${i}`)}`),""];process.stdout.write(s.join(`
|
|
1275
1290
|
`)+`
|
|
1276
|
-
`)}import{readFileSync as
|
|
1277
|
-
`)){let t=e.trim();if(!t||t.startsWith("#"))continue;let n=t.indexOf("=");if(n===-1)continue;let s=t.slice(0,n).trim(),i=t.slice(n+1).trim();(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),yield[s,i]}}function
|
|
1278
|
-
`+e)}function
|
|
1291
|
+
`)}import{readFileSync as dk,existsSync as pk}from"fs";import*as Le from"path";function mk(r){return[...r?[`.env.${r}.local`,`.env.${r}`]:[],".env.local",".env"]}function Se(r,e=process.cwd()){let t={},n=[];for(let s of mk(r)){let i;try{i=dk(Le.resolve(e,s),"utf-8")}catch{continue}n.push(s);for(let[o,a]of hk(i))process.env[o]===void 0&&(process.env[o]=a,t[o]=s)}return{mode:r,sources:t,loaded:n}}function*hk(r){for(let e of r.split(`
|
|
1292
|
+
`)){let t=e.trim();if(!t||t.startsWith("#"))continue;let n=t.indexOf("=");if(n===-1)continue;let s=t.slice(0,n).trim(),i=t.slice(n+1).trim();(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),yield[s,i]}}function gk(r){let e=new Set,t=/process\.env\.([A-Za-z_$][\w$]*)|process\.env\[\s*['"]([^'"]+)['"]\s*\]/g;for(let n;n=t.exec(r);)e.add(n[1]??n[2]);return[...e]}function et(r,e,t){let{sources:n,mode:s,loaded:i}=r,o=process.cwd(),a=Le.dirname(e),c=`(mode: ${s??"none"})`,l=t?gk(t):[],f=l.filter(p=>n[p]).map(p=>`${p} \u2190 ${n[p]}`);f.length?console.log(`env: ${f.join(", ")} ${c}`):i.length&&console.log(`env: loaded ${i.join(", ")} ${c}`),s&&!i.some(p=>p===`.env.${s}`||p===`.env.${s}.local`)&&console.log(`env: mode=${s} \u2014 no .env.${s} found; using .env`);let u=Le.resolve(a)!==Le.resolve(o);if(u)for(let p of[".env.local",".env"])pk(Le.join(a,p))&&console.log(`env: ${Le.join(a,p)} present but not loaded (cwd is ${o})`);let d=l.filter(p=>process.env[p]===void 0);if(d.length){let p=u?` \u2014 try running from ${a}`:"";console.log(`env: server.ts reads ${d.join(", ")} but ${d.length>1?"they are":"it's"} unset${p}`)}}Wt();async function Rp(r){Se(r);let e=await Ce();if(e.length>0){console.log(Bd(e,process.env.TB_AI_PROVIDER,process.env.TB_AI_MODEL));return}if(!Ma()){console.log("No AI provider keys found in this directory's .env, and no local Ollama server detected."),console.log("Set one of these to use a cloud model with tb.ai:");for(let[t,n]of Object.entries(Kt))console.log(` ${n.padEnd(20)} (${t})`);console.log("\u2026or start Ollama (http://localhost:11434, or set OLLAMA_HOST) for local models. Then re-run `typebulb models`.");return}console.log("Couldn't fetch the model catalog (offline?). tb.ai still works with any valid provider/model id for your keys.")}import*as Cp from"fs/promises";async function Np(r){let e=di(),t;try{t=await Cp.readFile(e,"utf8")}catch{console.error(`Could not read the bundled README (expected at ${e}).`),process.exit(1)}process.stdout.write(Ap(t,r))}zs();import*as _p from"path";Ie();function yk(r,e,t,n){if(/^\d+$/.test(e))return r.find(i=>i.pid===parseInt(e,10));let s=e==="agent"?r.filter(i=>i.agent!=null):r.filter(i=>i.agent===e);if(s.length){if(!t)return s[0];let i=s.filter(o=>o.cwd&&z(o.cwd)===z(t));return n&&i.find(o=>o.agent===n)||i[0]}return r.find(i=>z(i.file)===z(e))}var on=r=>r.agent??_p.basename(r.file);function Ip(r,e){for(let t of r)e(` ${t.url} pid ${t.pid} ${t.trust?"trusted":"restricted"} ${t.file}`)}function ic(r,e){if(!r.length){console.log("No running bulb servers.");return}console.log("Running bulb servers:"),Ip(r,t=>console.log(t)),console.log(`
|
|
1293
|
+
`+e)}function oc(r,e,t,n,s){let i=yk(r,e,n,s);if(i)return i;console.error(`No running server for '${e}'.`),r.length?(console.error(`Running servers (try \`typebulb ${t} <file|pid>\`):`),Ip(r,o=>console.error(o))):console.error("No bulb servers are running."),process.exit(1)}async function Lp(r,e){if(!r){e.clear&&(console.error("Specify which server to clear: typebulb logs --clear <file|pid>"),process.exit(1)),ic(await J(process.cwd()),"Run `typebulb logs <file|pid>` to print one server's console.");return}let t=oc(await J(),r,"logs",process.cwd(),sn());if(e.clear){ap(t.pid),console.log(`Cleared log for ${on(t)} (pid ${t.pid}).`);return}let n=we(t.pid),s=n.text;if(e.run!==void 0&&(s=cp(s,e.run),!s&&e.run!=="latest"&&console.error(`No output for run ${e.run} (it hasn't started, or was trimmed from the log).`)),e.lines&&e.lines>0){let i=s.split(`
|
|
1279
1294
|
`);i.length&&i[i.length-1]===""&&i.pop(),s=i.slice(-e.lines).join(`
|
|
1280
1295
|
`)}if(process.stdout.write(s),s&&!s.endsWith(`
|
|
1281
1296
|
`)&&process.stdout.write(`
|
|
1282
|
-
`),e.follow&&e.run===void 0){let i=n.offset,o=setInterval(()=>{let c=we(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
|
|
1283
|
-
`);m=x.pop()??"";for(let h of x)h.trim()&&(e.match&&!h.includes(e.match)||(console.log(h),p??=Date.now()+d,n&&(h.includes("] compile error")||h.includes("] runtime error"))&&(y=!0)))}if(y||p&&Date.now()>=p)break;if(!i&&!p&&Date.now()>=u){console.error(`timeout: no ${e.match?`line matching '${e.match}'`:"new output"} from ${on(t)} within ${o}s`),g=2;break}if(!
|
|
1284
|
-
${l}`:"";return h.text(`Forbidden: this capability requires --trust.${O}`,403)}await b()},y=async(h,b)=>{let v=h.req.header("sec-fetch-site");if(v){if(v!=="same-origin")return h.text(`Forbidden: ${v} request`,403)}else{let S=h.req.header("origin");if(S&&!
|
|
1297
|
+
`),e.follow&&e.run===void 0){let i=n.offset,o=setInterval(()=>{let c=we(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 bk=r=>new Promise(e=>setTimeout(e,r));async function $p(r,e){if(!r){ic(await J(process.cwd()),"Run `typebulb wait <file|pid>` to block until one logs a new line.");return}let t=oc(await J(),r,"wait",process.cwd(),sn()),n=t.agent!=null,i=process.env.TYPEBULB_WAIT_SHIM==="1",o=e.timeoutSec??1800,a=e.match??"",c=we(t.pid).offset,l=Va(t.pid,a)??(a?Va(t.pid):void 0),f=l!==void 0&&l<=c?l:a?0:c,u=Date.now()+o*1e3,d=n?1e4:1e3,p,y=!1,m="",g=0;for(;;){let k=we(t.pid,f);if(f=k.offset,k.text){m+=k.text;let x=m.split(`
|
|
1298
|
+
`);m=x.pop()??"";for(let h of x)h.trim()&&(e.match&&!h.includes(e.match)||(console.log(h),p??=Date.now()+d,n&&(h.includes("] compile error")||h.includes("] runtime error"))&&(y=!0)))}if(y||p&&Date.now()>=p)break;if(!i&&!p&&Date.now()>=u){console.error(`timeout: no ${e.match?`line matching '${e.match}'`:"new output"} from ${on(t)} within ${o}s`),g=2;break}if(!Ga(t.pid)){p||(console.error(`server ${on(t)} (pid ${t.pid}) exited while waiting`),process.exit(3));break}await bk(400)}ri(t.pid,f,a),process.exit(g)}async function Mp(r){if(!r){ic(await J(process.cwd()),"Run `typebulb stop <file|pid>` to stop one.");return}let e=oc(await J(),r,"stop",process.cwd(),sn());await gt(e.pid),console.log(`Stopped ${on(e)} (pid ${e.pid}, ${e.url}).`)}async function Dp(r){let e=process.cwd(),t=r==="agent"?sn():void 0,n=r==="global"?await J():r==="bulbs"?await J(e):(await J()).filter(i=>i.agent!=null&&i.cwd!=null&&z(i.cwd)===z(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=>gt(i.pid))),console.log(`Stopped ${n.length} ${s}${n.length===1?"":"s"}:`);for(let i of n)console.log(` ${i.url} pid ${i.pid} ${on(i)}`)}Ie();import*as Bp from"path";async function jp(r,e,t=0){let n=Bp.resolve(r),s=zt(await J(),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.")}import*as Kp from"fs/promises";import*as er from"path";import{EventEmitter as Jp}from"events";ei();import Lk from"open";import{Hono as Ek}from"hono";import{serve as Ak}from"@hono/node-server";import{streamSSE as Tk}from"hono/streaming";import*as bt from"fs/promises";import*as he from"path";import*as ac from"fs/promises";import*as an from"path";var pi=class{async get(e){let t=ue(e),n=an.join(Yr,t+".bin"),s=an.join(Yr,t+".json");try{let[i,o]=await Promise.all([ac.readFile(n),ac.readFile(s,"utf8")]),a=JSON.parse(o);return{body:i,contentType:a.contentType,cacheControl:a.cacheControl}}catch{return}}async set(e,t){await F();let n=ue(e),s=an.join(Yr,n+".bin"),i=an.join(Yr,n+".json"),o={url:e,contentType:t.contentType,cacheControl:t.cacheControl};await Promise.all([ie(s,t.body),ie(i,JSON.stringify(o))])}};Ie();Wt();import{stream as wk}from"hono/streaming";var vk="X-TB-Stream";function cc(r){return r instanceof de?{message:r.message,code:r.code,retryable:r.retryable}:{message:r instanceof Error?r.message:"Unknown error",code:"unknown",retryable:!1}}function lc(r,e){return r.header("Content-Type","application/x-ndjson; charset=utf-8"),r.header("Cache-Control","no-cache"),r.header(vk,"1"),wk(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:cc(s)}))}finally{try{await n.return?.()}catch{}}})}var uc={log:(...r)=>console.log(...r)};function mi(r,e){let t=r?.[e]??uc[e];return typeof t=="function"?t:void 0}function hi(r){return r.constructor?.name==="AsyncGeneratorFunction"}var Sk=/^\/(v\d+\/|stable\/|node\/|gh\/|@[^/]+\/[^@/]+@|[^@/]+@)/,kk=/[?&]target=/,xk=/^\/(?:@[^/]+\/)?[^/@]+\/[^/]+/;function qp(r,e=""){return Sk.test(r)?!0:xk.test(r)&&kk.test(e)}var Up="127.0.0.1",Ok=new Set(["localhost","127.0.0.1","::1"]);function Pk(r){if(r)try{return new URL(r.includes("://")?r:`http://${r}`).hostname}catch{return}}function Rk(r){let e=Pk(r);return!!e&&Ok.has(e)}function Ck(r,e){if(!e)return!1;try{return new URL(r).host===e}catch{return!1}}function fc(r){return r instanceof Error?r.message:"Unknown error"}async function gi(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 Ek;u.use("*",async(h,b)=>{if(!Rk(h.req.header("host")))return h.text("Forbidden: untrusted Host",403);await b()}),u.use("*",async(h,b)=>{await b(),h.res.headers.set("Cross-Origin-Opener-Policy","same-origin"),h.res.headers.set("Cross-Origin-Embedder-Policy","credentialless")});let d=["/__fs/*","/__api/*","/__ai"],p=async(h,b)=>{if(!c){let v=new URL(h.req.url).pathname,S=v.startsWith("/__fs")?"the filesystem":v==="/__ai"?"AI (your API keys)":"server-side code (server.ts)";lp(process.pid,S);let O=l?`
|
|
1299
|
+
${l}`:"";return h.text(`Forbidden: this capability requires --trust.${O}`,403)}await b()},y=async(h,b)=>{let v=h.req.header("sec-fetch-site");if(v){if(v!=="same-origin")return h.text(`Forbidden: ${v} request`,403)}else{let S=h.req.header("origin");if(S&&!Ck(S,h.req.header("host")))return h.text("Forbidden: cross-origin request",403)}await b()};for(let h of d)u.use(h,p),u.use(h,y);u.use("/__log",y),u.post("/__log",async h=>{try{let{args:b}=await h.req.json();console.log(...b||[])}catch{}return h.json({ok:!0})}),i&&(u.use("/__send",y),u.post("/__send",async h=>{let b="";try{b=await h.req.text()}catch{}let v=i.listenerCount("message");return i.emit("message",b),h.json({clients:v})})),u.get("/",h=>h.html(e())),u.post("/__fs/read",async h=>{try{let{path:b}=await h.req.json(),v=pc(b,t),S=await bt.readFile(v);return new Response(new Uint8Array(S),{headers:{"Content-Type":"application/octet-stream"}})}catch(b){let v=fc(b);return h.json({error:v},400)}}),u.post("/__fs/write",async h=>{try{let b=h.req.query("path");if(!b)return h.json({error:"Missing path"},400);let v=pc(b,t);return await bt.mkdir(he.dirname(v),{recursive:!0}),await bt.writeFile(v,Buffer.from(await h.req.arrayBuffer())),h.json({success:!0})}catch(b){let v=fc(b);return h.json({error:v},400)}}),u.post("/__api/:name",async h=>{try{let b=h.req.param("name"),v=mi(o?.(),b);if(!v)return h.json({error:`API function '${b}' not found`},404);let{args:S}=await h.req.json();if(hi(v))return lc(h,v(...S||[]));let O=await v(...S||[]);return h.json({result:O})}catch(b){let v=fc(b);return h.json({error:v},500)}}),u.post("/__ai",async h=>{try{let{messages:b,system:v,effort:S,provider:O,model:E,webSearch:_,stream:ee}=await h.req.json();if(!b||!Array.isArray(b)||b.length===0)return h.json({message:"messages array is required",code:"unknown",retryable:!1},400);let Y=Hs(O,E);if(typeof Y=="string")return h.json({message:Y,code:"unknown",retryable:!1},400);let M=await Vs(Y,{messages:b,system:v,effort:S,webSearch:_});if(!M.ok){let A=await Gr(M,Y.protocol);return h.json(A,M.status)}if(ee)return lc(h,Ut(M,Y.protocol));let w=await zr(M,Y.protocol);return w||console.warn("[tb.ai] Empty response from provider"),h.json({text:w})}catch(b){return h.json(cc(b),500)}}),u.get("/__models",async h=>{try{let b=await Ce();return h.json(b)}catch{return h.json([],200)}}),u.get("/__has-own-keys",async h=>{try{return h.json(await Ws())}catch{return h.json(!1,200)}});let m=["esm.sh","unpkg.com","cdn.jsdelivr.net","cdnjs.cloudflare.com"],g=new pi;u.get("/proxy/*",async h=>{let b=new URL(h.req.url),S=(b.pathname+b.search).slice(7),O=S.lastIndexOf("https://");return O===-1?h.text("Invalid proxy URL",400):k(h,S.slice(O))}),a&&Fp(u,`/local/${a.name}/`,a.serveDir),f&&Fp(u,f.mount,f.dir);async function k(h,b){let v;try{v=new URL(b)}catch{return h.text("Invalid URL",400)}if(v.protocol!=="https:")return h.text("HTTPS only",400);if(!m.includes(v.hostname))return h.text("Host not allowed",403);let S=await g.get(b);if(S)return new Response(S.body,{status:200,headers:dc(S.contentType,S.cacheControl)});try{let O=await fetch(b,{headers:{Accept:h.req.header("Accept")||"*/*"},redirect:"follow"});if(!O.ok)return h.text(`Upstream ${O.status}`,O.status);let E=O.headers.get("Content-Type")||void 0,_=O.headers.get("Cache-Control")||void 0;if(O.body){let[ee,Y]=O.body.tee();return(async()=>{try{let M=await new Response(Y).arrayBuffer();await g.set(b,{body:Buffer.from(M),contentType:E,cacheControl:_})}catch{}})(),new Response(ee,{status:O.status,headers:dc(E,_)})}return new Response(null,{status:O.status,headers:dc(E,_)})}catch(O){return h.text(`Proxy fetch failed: ${O instanceof Error?O.message:O}`,502)}}(s||i)&&u.get("/__reload",h=>Tk(h,async b=>{let v=()=>{b.writeSSE({event:"reload",data:""})},S=O=>{b.writeSSE({event:"message",data:JSON.stringify(O)})};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 h=>{if(h.req.method!=="GET")return h.text("Not Found",404);let b=new URL(h.req.url);return qp(b.pathname,b.search)?k(h,"https://esm.sh"+b.pathname+b.search):h.text("Not Found",404)});let x=Ak({fetch:u.fetch,port:n,hostname:Up});return{port:n,close:()=>x.close()}}function dc(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 Fp(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=pc(i,t),a=await bt.readFile(o);return new Response(a,{headers:{"Content-Type":Nk(o)}})}catch{return n.text("Not Found",404)}})}function Nk(r){switch(he.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 pc(r,e){let t=he.resolve(e,r),n=he.normalize(e),s=he.normalize(t);if(s!==n&&!s.startsWith(n+he.sep))throw new Error("Path traversal detected - access denied");return t}async function cn(r){let e=await import("net");return new Promise(t=>{let n=e.createServer();n.listen(r,Up,()=>{let s=n.address(),i=typeof s=="object"&&s?s.port:r;n.close(()=>t(i))}),n.on("error",()=>{t(cn(r+1))})})}import _k from"chokidar";var Ik={persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50}};function wt(r){let{target:e,onChange:t,events:n="change",debounceMs:s=150}=r,i,o=_k.watch(e,Ik),a=()=>{i&&clearTimeout(i),i=setTimeout(t,s)};return n==="all"?o.on("all",a):o.on("change",a),()=>{i&&clearTimeout(i),o.close()}}Ie();async function Wp(r,e,t,n,s){let i=process.cwd(),o=ni(process.pid),a=e.watch?new Jp:void 0,c=new Jp;c.setMaxListeners(0);let l=Se(e.mode),f=await Qa(r);f.length&&console.log(`Replacing the running server for this bulb (pid ${f.map(S=>S.pid).join(", ")})`);let u=1;console.log(Ya(u)),console.log(`Loading ${er.basename(r)}...`);let{html:d,bulb:p,serverExports:y}=await Da(r,e.watch,e.trust,n,s);et(l,r,p.server);let m=await cn(e.port),g=await gi({getHtml:()=>d,basePath:i,port:m,reloadEmitter:a,messageEmitter:c,getServerExports:()=>y,localOverride:n?{name:n.name,serveDir:n.serveDir}:void 0,trusted:e.trust,trustHint:t}),k=`http://localhost:${m}`,x=e.trust?void 0:Gt(p);await si({pid:process.pid,port:m,url:k,file:r,cwd:process.cwd(),startedAt:Date.now(),trust:e.trust,predicted:x}),console.log(`
|
|
1285
1300
|
${p.name}`),console.log(` ${k}`),m!==e.port&&console.log(` (port ${e.port} was busy)`),e.trust?console.log(" trust: granted (filesystem, AI, server.ts enabled)"):console.log(x?` trust: restricted \u2014 this bulb appears to use ${x}; re-run with --trust to enable it:
|
|
1286
1301
|
${t}
|
|
1287
1302
|
`:` trust: restricted \u2014 re-run with --trust to enable filesystem / AI / server.ts
|
|
1288
1303
|
`),e.watch&&console.log(` Watching for changes...
|
|
1289
|
-
`);let h,b;if(e.watch&&a&&(h=wt({target:r,onChange:async()=>{try{console.log("Recompiling...");let S=await
|
|
1304
|
+
`);let h,b;if(e.watch&&a&&(h=wt({target:r,onChange:async()=>{try{console.log("Recompiling...");let S=await Da(r,!0,e.trust,n,s);d=S.html,y=S.serverExports,u++,console.log(Ya(u)),a.emit("reload")}catch(S){console.error("Compile error:",S)}}}),n)){let{name:S,serveDir:O}=n;b=wt({target:O,events:"all",onChange:()=>{console.log(`Local package '${S}' changed. Browser reloading...
|
|
1290
1305
|
`),a.emit("reload")}})}e.open&&(f.some(S=>S.port===m)?console.log(` Reusing the open browser tab.
|
|
1291
|
-
`):await
|
|
1292
|
-
Shutting down...`),g.close(),h?.(),b?.(),o(),await ht(process.pid);let S=er.join(er.dirname(r),".typebulb","server.mjs");await
|
|
1306
|
+
`):await Lk(k));let v=async()=>{console.log(`
|
|
1307
|
+
Shutting down...`),g.close(),h?.(),b?.(),o(),await ht(process.pid);let S=er.join(er.dirname(r),".typebulb","server.mjs");await Kp.rm(S,{force:!0}).catch(()=>{}),process.exit(0)};process.on("SIGINT",v),process.on("SIGTERM",v)}import{readFileSync as Lm,copyFileSync as zx,existsSync as Qx}from"fs";import*as X from"path";import{fileURLToPath as Xx}from"url";import{EventEmitter as Zx}from"events";import $m from"open";Ie();var mc=r=>`/agents/${r}/client.js`,$k=`
|
|
1293
1308
|
(() => {
|
|
1294
1309
|
const api = async (name, ...args) => {
|
|
1295
1310
|
const resp = await fetch('/__api/' + name, {
|
|
@@ -1324,7 +1339,7 @@ Shutting down...`),g.close(),h?.(),b?.(),o(),await ht(process.pid);let S=er.join
|
|
|
1324
1339
|
es.onerror = () => { es.close(); };
|
|
1325
1340
|
}
|
|
1326
1341
|
})();
|
|
1327
|
-
`;function
|
|
1342
|
+
`;function Hp(r){let{name:e,agent:t,styles:n,mountHtml:s,watch:i,theme:o}=r,a=mc(t);return`<!DOCTYPE html>
|
|
1328
1343
|
<html>
|
|
1329
1344
|
<head>
|
|
1330
1345
|
<meta charset="utf-8">
|
|
@@ -1344,19 +1359,19 @@ ${s}
|
|
|
1344
1359
|
${i?"<script>window.__TYPEBULB_WATCH__ = true;</script>":""}
|
|
1345
1360
|
|
|
1346
1361
|
<script>
|
|
1347
|
-
${
|
|
1362
|
+
${$k}
|
|
1348
1363
|
</script>
|
|
1349
1364
|
|
|
1350
1365
|
<script type="module" src="${a}"></script>
|
|
1351
1366
|
</body>
|
|
1352
|
-
</html>`}var
|
|
1353
|
-
${n.url}`),r.open&&await
|
|
1367
|
+
</html>`}var e0={claude:()=>Promise.resolve().then(()=>(Cm(),Rm)),pi:()=>Promise.resolve().then(()=>(Im(),_m))};async function Mm(r){let e=process.cwd(),t=r.agentTarget;Wd(t)||(console.error(`Unknown agent '${t}'. Known: ${Vt().join(", ")}.`),process.exit(1));let n=await za(e,t);if(n){console.log(`Mirror '${t}' is already running for this project:
|
|
1368
|
+
${n.url}`),r.open&&await $m(n.url);return}let s=ni(process.pid),i=r.watch?new Zx:void 0,o=Se(r.mode),a=await e0[t](),c=a.displayName||`${t} mirror`;et(o,X.join(e,"mirror"));let l=X.dirname(Xx(import.meta.url)),f=X.join(l,"agents",t),u=X.join(l,"..","cli","agents"),d=X.join(f,"styles.css"),p=X.join(f,"index.html"),y=()=>Hp({name:c,agent:t,styles:Lm(d,"utf8"),mountHtml:Lm(p,"utf8"),watch:r.watch}),m=await cn(r.port),g=await gi({getHtml:y,basePath:e,port:m,reloadEmitter:i,getServerExports:()=>a,trusted:!0,staticAssets:{mount:`${X.posix.dirname(mc(t))}/`,dir:f}}),k=`http://localhost:${m}`;await si({pid:process.pid,port:m,url:k,file:`agent:${t}`,cwd:e,startedAt:Date.now(),trust:!0,agent:t}),console.log(`
|
|
1354
1369
|
${c}`),console.log(` ${k}`),m!==r.port&&console.log(` (port ${r.port} was busy)`),r.watch&&console.log(` Watching for changes...
|
|
1355
|
-
`);let x=X.join(u,t,"client"),h=X.join(u,"core","client");async function b(){await(await import("esbuild")).build({entryPoints:[X.join(x,"index.ts")],bundle:!0,platform:"browser",format:"esm",outfile:X.join(f,"client.js")});for(let E of["styles.css","index.html"])
|
|
1356
|
-
`),i.emit("reload")}catch(_){console.error("Mirror rebuild failed:",_ instanceof Error?_.message:_)}finally{E=!1}}}})}r.open&&await
|
|
1357
|
-
Shutting down...`);try{a.shutdownSwitcher?.()}catch{}g.close(),v?.(),s(),await ht(process.pid),process.exit(0)};process.on("SIGINT",S),process.on("SIGTERM",S)}import*as
|
|
1358
|
-
`),wt({target:r,onChange:async()=>{try{console.log("Re-running..."),await a()}catch(c){console.error("Error:",c)}}}))}import{Console as
|
|
1359
|
-
`)}catch(p){pn(p instanceof Error?p.stack??p.message:String(p))}return
|
|
1360
|
-
`),
|
|
1361
|
-
`),process.exit(1)}function
|
|
1362
|
-
${e}`),process.exit(1))}async function
|
|
1370
|
+
`);let x=X.join(u,t,"client"),h=X.join(u,"core","client");async function b(){await(await import("esbuild")).build({entryPoints:[X.join(x,"index.ts")],bundle:!0,platform:"browser",format:"esm",outfile:X.join(f,"client.js")});for(let E of["styles.css","index.html"])zx(X.join(h,E),X.join(f,E))}let v;if(r.watch&&i){let O=Qx(x),E=!1;v=wt({target:O?u:f,events:"all",onChange:async()=>{if(!E){E=!0;try{O&&await b(),console.log(`Mirror rebuilt. Browser reloading...
|
|
1371
|
+
`),i.emit("reload")}catch(_){console.error("Mirror rebuild failed:",_ instanceof Error?_.message:_)}finally{E=!1}}}})}r.open&&await $m(k);let S=async()=>{console.log(`
|
|
1372
|
+
Shutting down...`);try{a.shutdownSwitcher?.()}catch{}g.close(),v?.(),s(),await ht(process.pid),process.exit(0)};process.on("SIGINT",S),process.on("SIGTERM",S)}import*as Dm from"path";async function Bm(r,e,t,n,s){let i=Se(t),o=!1,a=async()=>{let{bulb:c,config:l}=await me(r);o||(et(i,r,c.server),o=!0),await Qr(c.server,s,n,l.dependencies)};console.log(`Running ${Dm.basename(r)}...`),await a(),e&&(console.log(`Watching for changes...
|
|
1373
|
+
`),wt({target:r,onChange:async()=>{try{console.log("Re-running..."),await a()}catch(c){console.error("Error:",c)}}}))}import{Console as t0}from"node:console";Ie();async function Fm(r,e,t,n,s){o0();try{let p=zt(await J(),r)[0];p&&ri(p.pid,we(p.pid).offset)}catch{}let i=Se(t),{bulb:o,config:a}=await me(r);o.server||pn("This bulb has no **server.ts** block; nothing to call."),et(i,r,o.server);let c;try{c=await Qr(o.server,s,n,a.dependencies)}catch(p){pn(p instanceof Error?p.message:String(p))}let l=mi(c,e.fn);if(!l){let p=[...Object.keys(c).filter(y=>typeof c[y]=="function"),...Object.keys(uc)];pn(`Function '${e.fn}' not found. Available: ${p.length?p.join(", "):"(none)"}.`)}let f=await r0(e);if(hi(l)){try{for await(let p of l(...f))await qm(JSON.stringify(p,Um)+`
|
|
1374
|
+
`)}catch(p){pn(p instanceof Error?p.stack??p.message:String(p))}return jm(0)}let u;try{u=await l(...f)}catch(p){pn(p instanceof Error?p.stack??p.message:String(p))}let d=i0(u);d!==void 0&&await qm(d+`
|
|
1375
|
+
`),jm(0)}function jm(r){process.exitCode=r,setTimeout(()=>process.exit(r),2e3).unref?.()}async function r0(r){if(r.hasArgsFlag){let e=r.argsJson??"";return e==="-"&&(e=await a0()),s0(e)}return n0(r.positional)}function n0(r){return r.map(e=>{try{return JSON.parse(e)}catch{return e}})}function s0(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 i0(r){if(r!==void 0)return JSON.stringify(r,Um,2)}function Um(r,e){return typeof e=="bigint"?e.toString():e}function pn(r){process.stderr.write(r+`
|
|
1376
|
+
`),process.exit(1)}function o0(){let r=new t0(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 qm(r){return new Promise((e,t)=>{process.stdout.write(r,n=>n?t(n):e())})}async function a0(){let r=[];for await(let e of process.stdin)r.push(e);return Buffer.concat(r).toString("utf-8")}var _c="0.19.6";function Jm(r,e){r||(console.error(`This bulb runs server-side Node code (server.ts), which --trust must authorize:
|
|
1377
|
+
${e}`),process.exit(1))}async function c0(){let r=Jc(process.argv.slice(2));if(r.version&&(console.log(`typebulb ${_c}`),process.exit(0)),r.help&&(Kc(),process.exit(0)),kp(),r.subcommand==="logs"){await Lp(r.file||void 0,{follow:r.follow,clear:r.clear,run:r.run,lines:r.lines});return}if(r.subcommand==="wait"){await $p(r.file||void 0,{match:r.match,timeoutSec:r.timeoutSec});return}if(r.subcommand==="stop"){r.stopScope?await Dp(r.stopScope):await Mp(r.file||void 0);return}if(r.subcommand==="send"){await jp(r.file,r.sendMessage,r.sendWaitMs??0);return}if(r.subcommand==="skill"){await Np(_c);return}if(r.subcommand==="models"){await Rp(r.mode);return}if(r.subcommand==="agent"){await(r.agentTarget?Mm(r):Pp(_c));return}if(r.subcommand==="trust"||r.subcommand==="untrust"){await ep(r.file||void 0,r.subcommand==="trust");return}let e;if(!r.file||r.file==="."){let l=await Fd(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 Km.access(e).then(()=>!0,()=>!1)||(Vt().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 Zd(e,s);return}let i=!r.noTrust&&mt(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 Fc(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 Xd(e,a);return}let c=$e.dirname(e);if(r.subcommand==="call"){Jm(r.trust,s),await Fm(e,{fn:r.fn,positional:r.callArgs,argsJson:r.argsJson,hasArgsFlag:r.hasArgsFlag},r.mode,a,c);return}if(o&&o.bulb.server&&(ms(o.bulb)||r.server)){Jm(r.trust,s),await Bm(e,r.watch,r.mode,a,c);return}await Wp(e,r,s,a,c)}c0().catch(r=>{console.error("Error:",r.message),process.exit(1)});
|