typebulb 0.49.3 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -12
- package/SKILL.md +23 -14
- package/dist/agents/claude/client.js +196 -168
- package/dist/agents/codex/client.js +196 -168
- package/dist/agents/pi/client.js +197 -169
- package/dist/ai/aiProvider.d.ts +5 -1
- package/dist/ai/aiProvider.d.ts.map +1 -1
- package/dist/ai/aiProvider.js.map +1 -1
- package/dist/ai/aiProviders.d.ts +4 -1
- package/dist/ai/aiProviders.d.ts.map +1 -1
- package/dist/ai/aiProviders.js +1 -2
- package/dist/ai/aiProviders.js.map +1 -1
- package/dist/ai/protocol.d.ts +5 -3
- package/dist/ai/protocol.d.ts.map +1 -1
- package/dist/ai/protocol.js +2 -2
- package/dist/ai/protocol.js.map +1 -1
- package/dist/ai/providers/anthropic.d.ts.map +1 -1
- package/dist/ai/providers/anthropic.js +9 -6
- package/dist/ai/providers/anthropic.js.map +1 -1
- package/dist/ai/providers/gemini.d.ts +3 -2
- package/dist/ai/providers/gemini.d.ts.map +1 -1
- package/dist/ai/providers/gemini.js +13 -6
- package/dist/ai/providers/gemini.js.map +1 -1
- package/dist/ai/providers/openAI.d.ts +2 -1
- package/dist/ai/providers/openAI.d.ts.map +1 -1
- package/dist/ai/providers/openAI.js +6 -3
- package/dist/ai/providers/openAI.js.map +1 -1
- package/dist/ai/providers/openRouter.d.ts +2 -1
- package/dist/ai/providers/openRouter.d.ts.map +1 -1
- package/dist/ai/providers/openRouter.js +16 -3
- package/dist/ai/providers/openRouter.js.map +1 -1
- package/dist/dts/tbTypings.js +4 -4
- package/dist/index.js +67 -37
- package/dist/render.js +114 -86
- package/dist/resolver/packageRef.d.ts.map +1 -1
- package/dist/resolver/packageRef.js +3 -2
- package/dist/resolver/packageRef.js.map +1 -1
- package/dist/servers.js +27 -9
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageRef.d.ts","sourceRoot":"","sources":["../../resolver/src/packageRef.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAOD,qBAAa,UAAW,YAAW,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;gBAEb,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAO3E,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAiBvC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IA0BnD,MAAM,IAAI,MAAM;IAKhB,IAAI,IAAI,MAAM;IAEd,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIlC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU;IAM9C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"packageRef.d.ts","sourceRoot":"","sources":["../../resolver/src/packageRef.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAOD,qBAAa,UAAW,YAAW,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;gBAEb,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAO3E,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAiBvC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IA0BnD,MAAM,IAAI,MAAM;IAKhB,IAAI,IAAI,MAAM;IAEd,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIlC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU;IAM9C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM;CAM1B"}
|
|
@@ -69,8 +69,9 @@ export class PackageRef {
|
|
|
69
69
|
static isBare(pkg) {
|
|
70
70
|
if (!pkg || pkg.startsWith('.') || pkg.startsWith('/'))
|
|
71
71
|
return false;
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
// Any scheme is not a package — `node:` builtins as much as `http(s):`, `data:`, `blob:`.
|
|
73
|
+
// Same rule as the lint's importRoot, which this is meant to stay in step with.
|
|
74
|
+
return !/^[a-z][a-z0-9+.-]*:/i.test(pkg);
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
const undefIfEmpty = (s) => (s && s.length ? s : undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageRef.js","sourceRoot":"","sources":["../../resolver/src/packageRef.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"packageRef.js","sourceRoot":"","sources":["../../resolver/src/packageRef.ts"],"names":[],"mappings":"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"}
|
package/dist/servers.js
CHANGED
|
@@ -284,7 +284,7 @@ ${s}`}function Wd(t){let e=ur.filter(n=>t[n]).map(n=>p0(n,t[n]));return["---",`f
|
|
|
284
284
|
`;)a++;n(r,a),r=a}else if(o==="/"&&i==="*"){let a=r+2;for(;a<t.length&&!(t[a]==="*"&&t[a+1]==="/");)a++;n(r,Math.min(a+2,t.length)),r=a+2}else if(o==="/"&&dO.has(s)){let a=r+1,l=!1;for(;a<t.length&&t[a]!==`
|
|
285
285
|
`;){let c=t[a];if(c==="\\")a++;else if(c==="[")l=!0;else if(c==="]")l=!1;else if(c==="/"&&!l)break;a++}r=a+1,s="/"}else if(o==='"'||o==="'"){let a=r+1;for(;a<t.length&&t[a]!==o&&t[a]!==`
|
|
286
286
|
`;)t[a]==="\\"&&a++,a++;r=a+1,s=o}else if(o==="`"){let a=XT(t,r);n(r,a),r=a,s="`"}else/\s/.test(o)||(s=o),r++}return e.join("")}function XT(t,e){let n=e+1,r=0;for(;n<t.length;){let s=t[n];if(s==="\\"){n+=2;continue}if(s==="`"){if(r===0)return n+1;n=XT(t,n);continue}if(s==="$"&&t[n+1]==="{"){r++,n+=2;continue}if(s==="}"&&r>0){r--,n++;continue}n++}return t.length}var fO=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g];function hO(t){if(/^[./]/.test(t)||/^[a-z][a-z0-9+.-]*:/i.test(t))return null;let e=t.split("/");return t.startsWith("@")?e.slice(0,2).join("/"):e[0]}function mO(t){let e=[];for(let s of fO)for(let o of t.matchAll(s)){let i=hO(o[1]);i&&e.push({root:i,index:o.index??0})}e.sort((s,o)=>s.index-o.index);let n=new Set,r=[];for(let{root:s,index:o}of e)n.has(s)||(n.add(s),r.push({root:s,lineIndex:t.slice(0,o).split(`
|
|
287
|
-
`).length-1}));return r}function zT(t){return mO(WT(t)).map(e=>e.root)}var Or="https://esm.sh",Xo="https://cdn.jsdelivr.net/npm/",rd="https://data.jsdelivr.com/v1/package/npm/";function ZT(t){let e=(t||"").replace(/^\/+/,"").replace(/\/+$/,"");return e?e.split("/"):[]}var kt=class t{constructor(e,n,r){let s=typeof e=="string"?t.parse(e):e;this.name=s.name,this.version=Qs(n??s.version),this.subpath=Qs(r??s.subpath)}static parse(e){let n=ZT(e||"");if(!n.length)return new t({name:""});if(n[0].startsWith("@")){let s=n[0],[o,i]=ek(n[1]??""),a=Qs(n.slice(2).join("/"));return new t({name:`${s}/${o}`,version:i,subpath:a})}else{let[s,o]=ek(n[0]),i=Qs(n.slice(1).join("/"));return new t({name:s,version:o,subpath:i})}}static fromUrl(e){try{let n=new URL(e),r=new URL(Or).host,s=new URL(Xo).host;if(n.host===r){let o=ZT(n.pathname.replace(/^\/v\d+\//,"/"));if(!o.length)return;let i=o[0].startsWith("@")?`${o[0]}/${o[1]??""}`:o[0];return t.parse(i)}if(n.host===s){let o=n.pathname.split("/npm/")[1];if(!o)return;let i=o.split("/")[0]||"";return t.parse(i)}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 t.parse(e).name}withVersion(e){return new t({name:this.name,version:Qs(e),subpath:this.subpath})}static isBare(e){
|
|
287
|
+
`).length-1}));return r}function zT(t){return mO(WT(t)).map(e=>e.root)}var Or="https://esm.sh",Xo="https://cdn.jsdelivr.net/npm/",rd="https://data.jsdelivr.com/v1/package/npm/";function ZT(t){let e=(t||"").replace(/^\/+/,"").replace(/\/+$/,"");return e?e.split("/"):[]}var kt=class t{constructor(e,n,r){let s=typeof e=="string"?t.parse(e):e;this.name=s.name,this.version=Qs(n??s.version),this.subpath=Qs(r??s.subpath)}static parse(e){let n=ZT(e||"");if(!n.length)return new t({name:""});if(n[0].startsWith("@")){let s=n[0],[o,i]=ek(n[1]??""),a=Qs(n.slice(2).join("/"));return new t({name:`${s}/${o}`,version:i,subpath:a})}else{let[s,o]=ek(n[0]),i=Qs(n.slice(1).join("/"));return new t({name:s,version:o,subpath:i})}}static fromUrl(e){try{let n=new URL(e),r=new URL(Or).host,s=new URL(Xo).host;if(n.host===r){let o=ZT(n.pathname.replace(/^\/v\d+\//,"/"));if(!o.length)return;let i=o[0].startsWith("@")?`${o[0]}/${o[1]??""}`:o[0];return t.parse(i)}if(n.host===s){let o=n.pathname.split("/npm/")[1];if(!o)return;let i=o.split("/")[0]||"";return t.parse(i)}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 t.parse(e).name}withVersion(e){return new t({name:this.name,version:Qs(e),subpath:this.subpath})}static isBare(e){return!e||e.startsWith(".")||e.startsWith("/")?!1:!/^[a-z][a-z0-9+.-]*:/i.test(e)}},Qs=t=>t&&t.length?t:void 0,ek=t=>{let e=t.indexOf("@");return e<0?[t,void 0]:[t.slice(0,e),Qs(t.slice(e+1))]};async function Xt(t){try{return await t()}catch{return}}function tk(t){let e=t||"";return e.startsWith("./")?e.slice(2):e.replace(/^\/+/,"")}var zo=class{constructor(e,n){this.cache=e,this.http=n,this.pinMs=1e4,this.versionsIndexMs=1440*60*1e3,this.metaTtlMs=10080*60*1e3,this.pinCache=new Map}baseDir(e){let n=typeof e=="string"?new kt(e):e;return`${Xo}${n.name}${n.version?`@${n.version}`:""}/`}file(e,n){return new URL(tk(n),this.baseDir(e)).toString()}packageJson(e){return this.file(e,"package.json")}buildEsmUrl(e,n={}){let{target:r="es2022",bundle:s=!1,external:o}=n,i=new URLSearchParams({target:r});return s&&i.append("bundle",""),o?.length&&i.append("external",o.join(",")),`${Or}/${e}?${i.toString()}`}async resolveExactVersion(e){let n=Date.now(),r=this.pinCache.get(e);if(r&&n-r.ts<this.pinMs)return r.value;let s=await this.tryResolveFromUrls([this.buildEsmUrl(e),`${Or}/${e}`]);return this.pinCache.set(e,{value:s,ts:n}),s}async tryResolveFromUrls(e){for(let n of e){let r=await Xt(()=>this.http.head(n)),s=this.parseVersionFromUrl(r?.url||n);if(s)return s}}async fetchVersionsIndex(e){if(await this.cache.isNegative(e))return;let n=await this.cache.getIndex(e);if(n&&Date.now()-n.updatedAt<this.versionsIndexMs)return{versions:n.versions,distTags:n.distTags};let r=await Xt(()=>this.http.getJson(`${rd}${encodeURIComponent(e)}`));if(!r?.versions?.length){await this.cache.recordNegative(e);return}await this.cache.clearNegative(e);let s=r.tags&&Object.keys(r.tags).length?r.tags:void 0;return await this.cache.setIndex(e,r.versions,s),{versions:r.versions,distTags:s}}parseVersionFromUrl(e){let n=kt.fromUrl(e)?.version;return n&&/\d+\.\d+\.\d+/.test(n)?n:void 0}async fetchPackageMeta(e,n){let r=await this.cache.getMeta(e,n);if(r&&Date.now()-r.updatedAt<this.metaTtlMs){let{dependencies:h,peerDependencies:u,peerDependenciesMeta:p}=r;return{name:e,version:n,dependencies:h,peerDependencies:u,peerDependenciesMeta:p}}let s=this.packageJson(new kt(`${e}@${n}`)),o=await Xt(()=>this.http.getJson(s));if(!o)return;let i=h=>h&&Object.keys(h).length?h:void 0,a=i(o.dependencies),l=i(o.peerDependencies),c=i(o.peerDependenciesMeta);return await this.cache.setMeta(e,n,a,l,c),{name:e,version:n,dependencies:a,peerDependencies:l,peerDependenciesMeta:c}}};var nk=t=>t.startsWith("@types/"),Zo=t=>Object.keys(t?.peerDependencies||{}).filter(e=>!nk(e)),sd=t=>Object.keys(t?.dependencies||{}).filter(e=>!nk(e)),yO=t=>Zo(t).filter(e=>!t?.peerDependenciesMeta?.[e]?.optional),ei=class{constructor(e){this.cdn=e}async resolve(e,n){let r=await this.fetchMeta(e),{allRoots:s,autoAddedPeers:o}=await this.expandWithPeers(r,n),i=this.computeFlags(s);return{allRoots:s,flags:i,autoAddedPeers:o}}async fetchMeta(e){return Promise.all(e.map(async({name:n,version:r})=>({name:n,version:r,meta:await this.cdn.fetchPackageMeta(n,r)})))}async expandWithPeers(e,n){let r=new Map(e.map(o=>[o.name,o])),s=[];for(let o of e)for(let i of yO(o.meta))!r.has(i)&&!s.some(a=>a.name===i)&&s.push({name:i,requiredBy:o.name});for(let{name:o,requiredBy:i}of s)try{let a=await n(o),l=await this.cdn.fetchPackageMeta(o,a);r.set(o,{name:o,version:a,meta:l})}catch(a){console.warn(`[typebulb] Failed to resolve peer "${o}" for "${i}":`,a)}return{allRoots:[...r.values()],autoAddedPeers:s.filter(o=>r.has(o.name))}}computeFlags(e){let n=new Set(e.flatMap(o=>Zo(o.meta))),r=new Map;for(let o of e)for(let i of sd(o.meta))r.set(i,(r.get(i)||0)+1);let s=new Set([...r.entries()].filter(([,o])=>o>=2).map(([o])=>o));return new Map(e.map(o=>[o.name,{isPeerRoot:n.has(o.name),hasPeers:Zo(o.meta).length>0,isSharedDep:s.has(o.name)}]))}};var ti=class{constructor(e,n,r){this.cache=e,this.cdn=n,this.semver=r}async learnExactVersion(e){let n=await Xt(()=>this.cdn.fetchVersionsIndex(e));if(n?.versions?.length){let r=this.semver.selectBestVersion(n.versions,{distTags:n.distTags});if(r)return r}return this.cdn.resolveExactVersion(e)}async resolveExactForRoot(e,n){if(!n)return this.learnExactVersion(e);let r=await this.cache.getPinnedExact(e,n);if(r){if(this.semver.isExactVersion(r))return r;console.debug("[typebulb] cached version for",e,"is not exact (",r,"); re-resolving from registry")}let s=async i=>{if(i&&this.semver.isExactVersion(i))return await this.cache.setPinnedExact(e,n,i),i},o=await Xt(()=>this.cdn.fetchVersionsIndex(e));if(o?.versions?.length){let i=this.semver.selectBestVersion(o.versions,{range:n,distTags:o.distTags});if(i){let a=await s(i);if(a)return a}else{console.debug("[typebulb] refreshing version cache for",e,"(",n,"not in cached set \u2014 likely a new release)"),await this.cache.invalidateVersionsCache(e);let a=await Xt(()=>this.cdn.fetchVersionsIndex(e));if(a?.versions?.length){let l=await s(this.semver.selectBestVersion(a.versions,{range:n,distTags:a.distTags}));if(l)return l}}}return s(await this.cdn.resolveExactVersion(`${e}@${n}`))}async effectivePackage(e,n){let r=new kt(e),s=r.root(),o=n[s],i=o?await Xt(()=>this.resolveExactForRoot(s,o)):void 0;return{effectivePackage:i?r.withVersion(i).format():e,root:s,range:o,pinned:i}}};var rk;(function(t){t[t.Static=1]="Static",t[t.Dynamic=2]="Dynamic",t[t.ImportMeta=3]="ImportMeta",t[t.StaticSourcePhase=4]="StaticSourcePhase",t[t.DynamicSourcePhase=5]="DynamicSourcePhase",t[t.StaticDeferPhase=6]="StaticDeferPhase",t[t.DynamicDeferPhase=7]="DynamicDeferPhase"})(rk||(rk={}));var gO=new Uint8Array(new Uint16Array([1]).buffer)[0]===1;function dl(t,e="@"){if(!Xe)return fl.then((()=>dl(t)));let n=t.length+1,r=(Xe.__heap_base.value||Xe.__heap_base)+4*n-Xe.memory.buffer.byteLength;r>0&&Xe.memory.grow(Math.ceil(r/65536));let s=Xe.sa(n-1);if((gO?kO:TO)(t,new Uint16Array(Xe.memory.buffer,s,n)),!Xe.parse())throw Object.assign(new Error(`Parse error ${e}:${t.slice(0,Xe.e()).split(`
|
|
288
288
|
`).length}:${Xe.e()-t.lastIndexOf(`
|
|
289
289
|
`,Xe.e()-1)}`),{idx:Xe.e()});let o=[],i=[];for(;Xe.ri();){let l=Xe.is(),c=Xe.ie(),h=Xe.it(),u=Xe.ai(),p=Xe.id(),m=Xe.ss(),b=Xe.se(),k;Xe.ip()&&(k=a(t.slice(p===-1?l-1:l,p===-1?c+1:c))),o.push({n:k,t:h,s:l,e:c,ss:m,se:b,d:p,a:u})}for(;Xe.re();){let l=Xe.es(),c=Xe.ee(),h=Xe.els(),u=Xe.ele(),p=t.slice(l,c),m=p[0],b=h<0?void 0:t.slice(h,u),k=b?b[0]:"";i.push({s:l,e:c,ls:h,le:u,n:m==='"'||m==="'"?a(p):p,ln:k==='"'||k==="'"?a(b):b})}function a(l){try{return(0,eval)(l)}catch{}}return[o,i,!!Xe.f(),!!Xe.ms()]}function TO(t,e){let n=t.length,r=0;for(;r<n;){let s=t.charCodeAt(r);e[r++]=(255&s)<<8|s>>>8}}function kO(t,e){let n=t.length,r=0;for(;r<n;)e[r]=t.charCodeAt(r++)}var Xe,AO=()=>{return t="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GzYCHAtBAEEAKAKwCkECajYCsAoCQAJAAkACQEEAECkiAUHhAEYNACABQfcARg0BQQAoArAKIQEMAgtBACgCsAoiAUECakHACEEKEC8NAUEGIQIMAgtBACgCsAoiAS8BAkHpAEcNACABLwEEQfQARw0AQQQhAiABLwEGQegARg0BC0EAIAFBfmo2ArAKDwtBACABIAJBAXRqNgKwCgJAQQEQKUH7AEYNAEEAIAE2ArAKDwtBACgCsAoiACECA0BBACACQQJqNgKwCgJAAkACQEEBECkiAkEiRg0AIAJBJ0cNAUEnEBpBAEEAKAKwCkECajYCsApBARApIQIMAgtBIhAaQQBBACgCsApBAmo2ArAKQQEQKSECDAELIAIQLCECCwJAIAJBOkYNAEEAIAE2ArAKDwtBAEEAKAKwCkECajYCsAoCQEEBECkiAkEiRg0AIAJBJ0YNAEEAIAE2ArAKDwsgAhAaQQBBACgCsApBAmo2ArAKAkACQEEBECkiAkEsRg0AIAJB/QBGDQFBACABNgKwCg8LQQBBACgCsApBAmo2ArAKQQEQKUH9AEYNAEEAKAKwCiECDAELC0EAKALwCSIBIAA2AhAgAUEAKAKwCkECajYCDAttAQJ/AkACQANAAkAgAEH//wNxIgFBd2oiAkEXSw0AQQEgAnRBn4CABHENAgsgAUGgAUYNASAAIQIgARAoDQJBACECQQBBACgCsAoiAEECajYCsAogAC8BAiIADQAMAgsLIAAhAgsgAkH//wNxC6sBAQR/AkACQEEAKAKwCiICLwEAIgNB4QBGDQAgASEEIAAhBQwBC0EAIAJBBGo2ArAKQQEQKSECQQAoArAKIQUCQAJAIAJBIkYNACACQSdGDQAgAhAsGkEAKAKwCiEEDAELIAIQGkEAQQAoArAKQQJqIgQ2ArAKC0EBECkhA0EAKAKwCiECCwJAIAIgBUYNACAFIARBACAAIAAgAUYiAhtBACABIAIbEAILIAMLcgEEf0EAKAKwCiEAQQAoArQKIQECQAJAA0AgAEECaiECIAAgAU8NAQJAAkAgAi8BACIDQaR/ag4CAQQACyACIQAgA0F2ag4EAgEBAgELIABBBGohAAwACwtBACACNgKwChAlQQAPC0EAIAI2ArAKQd0AC0kBA39BACEDAkAgAkUNAAJAA0AgAC0AACIEIAEtAAAiBUcNASABQQFqIQEgAEEBaiEAIAJBf2oiAg0ADAILCyAEIAVrIQMLIAMLC+wBAgBBgAgLzgEAAHgAcABvAHIAdABtAHAAbwByAHQAZgBvAHIAZQB0AGEAbwB1AHIAYwBlAHIAbwBtAHUAbgBjAHQAaQBvAG4AcwBzAGUAcgB0AHYAbwB5AGkAZQBkAGUAbABlAGMAbwBuAHQAaQBuAGkAbgBzAHQAYQBuAHQAeQBiAHIAZQBhAHIAZQB0AHUAcgBkAGUAYgB1AGcAZwBlAGEAdwBhAGkAdABoAHIAdwBoAGkAbABlAGkAZgBjAGEAdABjAGYAaQBuAGEAbABsAGUAbABzAABB0AkLEAEAAAACAAAAAAQAAEA5AAA=",typeof Buffer<"u"?Buffer.from(t,"base64"):Uint8Array.from(atob(t),(e=>e.charCodeAt(0)));var t},fl=WebAssembly.compile(AO()).then(WebAssembly.instantiate).then((({exports:t})=>{Xe=t}));var qs=class t{constructor(e,n,r){this.version=e,this.cdn=n,this.peer=r}extractImportsSync(e){let n=new Set;for(let r of t.importPatterns){r.lastIndex=0;for(let s of e.matchAll(r))kt.isBare(s[1])&&n.add(s[1])}return Array.from(n)}async extractImports(e){let n=new Set,r=s=>{kt.isBare(s)&&n.add(s)};try{await fl;let[s]=dl(e);s.forEach(o=>r(e.slice(o.s,o.e).trim()))}catch{return this.extractImportsSync(e)}return Array.from(n)}async buildImportMap(e,n,r){let s=(await this.extractImports(e)).filter(u=>!r?.has(kt.rootOf(u))),o=[...new Set(s.map(kt.rootOf))],i=await Promise.all(o.map(async u=>({name:u,version:await this.resolveVersion(u,n)}))),{allRoots:a,flags:l,autoAddedPeers:c}=await this.peer.resolve(i,u=>this.resolveVersion(u,n)),h=this.buildEntries([...s,...c.map(u=>u.name)],a,l);return{importMap:{imports:Object.fromEntries(h)},prefetchUrls:h.map(([,u])=>u)}}async resolveVersion(e,n){let r=n[e],s=await this.version.resolveExactForRoot(e,r);if(!s)throw new Error(`Cannot resolve ${r?`${e}@${r}`:e}: no matching version is published (the package or version may not exist, or the registry was unreachable).`);return s}buildEntries(e,n,r){let s=new Map(n.map(m=>[m.name,m])),o=m=>{let b=s.get(kt.rootOf(m));return new kt(m).withVersion(b.version).format()},i=new Set([...r.entries()].filter(([,m])=>m.isPeerRoot||m.isSharedDep).map(([m])=>m)),a=new Set(e.filter(m=>m!==kt.rootOf(m)).map(kt.rootOf)),l=[],c=new Set,h=new Set(e.filter(m=>m===kt.rootOf(m))),u=new Set;for(let m of e){let b=kt.rootOf(m),k=s.get(b),{isPeerRoot:v,hasPeers:R,isSharedDep:q}=r.get(b),V=a.has(b),H=m!==b,Z=!(v||q)&&(V||!R),pe=this.singletonDepsOf(k,i),J=H&&h.has(b);J&&u.add(b);let ke=J?[...pe,b]:pe.length?pe:void 0;l.push([m,this.cdn.buildEsmUrl(o(m),{bundle:Z,external:ke})]),c.add(m)}let p=new Set([...i,...u]);for(let m of p)s.has(m)&&(c.has(m)||l.push([m,this.cdn.buildEsmUrl(o(m),{})]),l.push([`${m}/`,`${Or}/${o(m)}/`]));return l}singletonDepsOf(e,n){return[...new Set([...Zo(e.meta),...sd(e.meta)])].filter(r=>n.has(r))}};qs.importPatterns=[/\bimport\s+(?:[^'";]*?from\s*)?['"]([^'"]+)['"]/g,/\bexport\s+[^'";]*?from\s*['"]([^'"]+)['"]/g];var vn=gi(xd(),1),Cl=class{cmp(e,n){return e===n?0:(0,vn.gt)(e,n)?1:(0,vn.gt)(n,e)?-1:0}satisfies(e,n){return!e||!e.trim()?!0:!!(0,vn.satisfies)(n,e,{includePrerelease:!0})}selectBestVersion(e,n){if(!e?.length)return;let r=n?.range?.trim()||"*",s=n?.preferStable??!0,o=n?.distTags?.latest;if(o&&e.includes(o)&&this.satisfies(r,o))return o;if(s){let a=(0,vn.maxSatisfying)(e,r,{includePrerelease:!1});if(a)return a}return(0,vn.maxSatisfying)(e,r,{includePrerelease:!0})??void 0}majorOf(e){return(0,vn.major)(e)}isExactVersion(e){return(0,vn.valid)(e)!==null}},Ed=new Cl;var ci=class{constructor(e){this.store=e}async isNegative(e){let n=await Xt(()=>this.store.get(e));return!!n&&n.until>Date.now()}async recordNegative(e){let r=((await Xt(()=>this.store.get(e)))?.attempts||0)+1;await Xt(()=>this.store.set(e,{until:Date.now()+yQ(r),attempts:r}))}async clearNegative(e){await Xt(()=>this.store.delete(e))}};function yQ(t){return Math.min(9e5*Math.pow(2,Math.max(0,t-1)),864e5)}function HA(t,e){let n=new zo(t,e),r=new ei(n),s=new ti(t,n,Ed);return{packageService:new qs(s,n,r),versionResolver:s,cdnClient:n,peerResolver:r}}import*as ev from"fs/promises";import*as Ln from"path";import*as Qr from"fs/promises";import*as Dr from"path";import*as WA from"os";import*as Cd from"fs/promises";import*as GA from"crypto";function Il(t){return GA.createHash("sha1").update(t).digest("hex")}async function ts(t){try{return JSON.parse(await Cd.readFile(t,"utf8"))}catch{return}}async function VA(t){try{return await Cd.readFile(t,"utf8")}catch{return}}var YA=1,Lr=Dr.join(WA.homedir(),".typebulb","cache"),ui=Dr.join(Lr,"packages"),BK=Dr.join(Lr,"proxy"),RK=Dr.join(Lr,"dts"),OK=Dr.join(Lr,"emit"),Id;function ar(){return Id||(Id=gQ().catch(()=>ls())),Id}async function gQ(){await Qr.mkdir(Lr,{recursive:!0});let t=Dr.join(Lr,"version.json");if((await ts(t))?.version===YA)return;let n=await Qr.readdir(Lr).catch(()=>[]);await Promise.all(n.map(r=>Qr.rm(Dr.join(Lr,r),{recursive:!0,force:!0}))),await Qr.writeFile(t,JSON.stringify({version:YA})+`
|
|
290
290
|
`,"utf8")}import*as qr from"fs/promises";import*as XA from"path";async function $s(t,e){let n=`${t}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;try{await qr.mkdir(XA.dirname(t),{recursive:!0}),await qr.writeFile(n,e,"utf8")}catch{ls();return}await qr.rename(n,t).catch(async()=>{await qr.rm(n,{force:!0}).catch(()=>{})})}var Sl=class{constructor(e){this.filePath=e}mem;loadPromise;load(){return this.mem?Promise.resolve(this.mem):(this.loadPromise||(this.loadPromise=ts(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,n){let r=await this.load();r.set(e,n),await this.persist(r)}async delete(e){let n=await this.load();n.delete(e)&&await this.persist(n)}async persist(e){await $s(this.filePath,JSON.stringify(Object.fromEntries(e)))}};var Sd=Ln.join(ui,"indexes"),zA=Ln.join(ui,"pinned"),TQ=Ln.join(ui,"meta"),kQ=Ln.join(ui,"negative.json"),Nl=class{pinnedMem=new Map;indexMem=new Map;metaMem=new Map;negativeCache=new ci(new Sl(kQ));async getPinnedExact(e,n){let r=`${e}@${n}`;if(this.pinnedMem.has(r))return this.pinnedMem.get(r);await ar();let s=await VA(Ln.join(zA,Il(r)+".txt"));return this.pinnedMem.set(r,s),s}async setPinnedExact(e,n,r){let s=`${e}@${n}`;this.pinnedMem.set(s,r),await ar(),await $s(Ln.join(zA,Il(s)+".txt"),r)}async getIndex(e){if(this.indexMem.has(e))return this.indexMem.get(e);await ar();let n=await ts(Ln.join(Sd,_l(e)+".json"));return this.indexMem.set(e,n),n}async setIndex(e,n,r){let s={versions:n,distTags:r,updatedAt:Date.now()};this.indexMem.set(e,s),await ar(),await $s(Ln.join(Sd,_l(e)+".json"),JSON.stringify(s))}async invalidateVersionsCache(e){this.indexMem.delete(e),await ev.rm(Ln.join(Sd,_l(e)+".json"),{force:!0}).catch(()=>{})}async isNegative(e){return await ar(),this.negativeCache.isNegative(e)}async recordNegative(e){await ar(),await this.negativeCache.recordNegative(e)}async clearNegative(e){await this.negativeCache.clearNegative(e)}async getMeta(e,n){let r=`${e}@${n}`;if(this.metaMem.has(r))return this.metaMem.get(r);await ar();let s=await ts(ZA(e,n));return this.metaMem.set(r,s),s}async setMeta(e,n,r,s,o){let i={dependencies:r,peerDependencies:s,peerDependenciesMeta:o,updatedAt:Date.now()};this.metaMem.set(`${e}@${n}`,i),await ar(),await $s(ZA(e,n),JSON.stringify(i))}};function ZA(t,e){return Ln.join(TQ,_l(t),encodeURIComponent(e)+".json")}function _l(t){return t.replace(/\//g,"__")}var tv={async getJson(t){try{let e=await fetch(t,{redirect:"follow"});return e.ok?await e.json():void 0}catch{return}},async head(t){try{let e=await fetch(t,{method:"HEAD",redirect:"follow"});return{ok:e.ok,url:e.url}}catch{return}}};var AQ=new Nl,{packageService:vQ,versionResolver:XK,cdnClient:zK,peerResolver:ZK}=HA(AQ,tv);var nv=`
|
|
@@ -1084,6 +1084,23 @@ ${s}`}function Wd(t){let e=ur.filter(n=>t[n]).map(n=>p0(n,t[n]));return["---",`f
|
|
|
1084
1084
|
});
|
|
1085
1085
|
};
|
|
1086
1086
|
|
|
1087
|
+
// tb:theme (Specs/Theme.md) \u2014 flip the page's theme so an agent can read the other render back
|
|
1088
|
+
// with tb:png / tb:snapshot. TRANSIENT by design, and the one place the durable rule is wrong:
|
|
1089
|
+
// it calls apply(), never set(), so it never writes the per-bulb localStorage key and a reload
|
|
1090
|
+
// restores whatever the user was looking at. The reply says so, because a probe with a visible
|
|
1091
|
+
// after-effect has to state it.
|
|
1092
|
+
const actTheme = (rest) => {
|
|
1093
|
+
const m = /^\\s*(dark|light)?\\s*$/.exec(rest);
|
|
1094
|
+
if (!m) throw new Error('usage: tb:theme [dark|light] (bare clears the probe)');
|
|
1095
|
+
const engine = window.__tbTheme;
|
|
1096
|
+
if (!engine || !engine.apply) throw new Error('this page has no theme engine');
|
|
1097
|
+
const resting = engine.effective();
|
|
1098
|
+
const want = m[1] || resting;
|
|
1099
|
+
engine.apply(want);
|
|
1100
|
+
return postFrameSnapshot().then((s) =>
|
|
1101
|
+
'theme: ' + want + ' \u2014 transient, not saved (a reload restores ' + resting + ')\\n' + s);
|
|
1102
|
+
};
|
|
1103
|
+
|
|
1087
1104
|
// Events channel (dev server only): 'reload' drives hot reload (only emitted when watching),
|
|
1088
1105
|
// 'message' delivers \`typebulb send\` pushes to tb.onMessage. Connect for a CLI-served page (http
|
|
1089
1106
|
// origin, not an inline bulb); a srcdoc inline bulb or a file:// static export has no server, so onMessage just
|
|
@@ -1118,7 +1135,8 @@ ${nv}
|
|
|
1118
1135
|
if (p === 'tb:set' || p.indexOf('tb:set ') === 0) return actSet(p.slice(7));
|
|
1119
1136
|
if (p === 'tb:rect' || p.indexOf('tb:rect ') === 0) return readRect(p.slice(8));
|
|
1120
1137
|
if (p === 'tb:png' || p.indexOf('tb:png ') === 0) return readPng(p.slice(7));
|
|
1121
|
-
|
|
1138
|
+
if (p === 'tb:theme' || p.indexOf('tb:theme ') === 0) return actTheme(p.slice(9));
|
|
1139
|
+
throw new Error('unknown reserved message: ' + p + ' (known: tb:snapshot, tb:rect, tb:png, tb:click, tb:set, tb:theme)');
|
|
1122
1140
|
};
|
|
1123
1141
|
const value = parseMsg(env.payload);
|
|
1124
1142
|
const calls = typeof env.payload === 'string' && env.payload.indexOf('tb:') === 0
|
|
@@ -1134,17 +1152,17 @@ ${nv}
|
|
|
1134
1152
|
});
|
|
1135
1153
|
}
|
|
1136
1154
|
})();
|
|
1137
|
-
`;var SQ=gi(xd(),1);import{execFile as EQ}from"child_process";import{promisify as CQ}from"util";import{builtinModules as IQ}from"node:module";var yU=CQ(EQ),gU=new Set(IQ);var rv=t=>t!=null&&t>=0&&t<=
|
|
1155
|
+
`;var SQ=gi(xd(),1);import{execFile as EQ}from"child_process";import{promisify as CQ}from"util";import{builtinModules as IQ}from"node:module";var yU=CQ(EQ),gU=new Set(IQ);var rv=t=>t!=null&&t>=0&&t<=4?t:void 0;var lr=class extends Error{constructor(e,n="unknown",r=!1){super(e),this.code=n,this.retryable=r}},Dn=class{getPath(e,n){return this.path}parseError(e,n){return this.parseJsonError(e,n)}parseStreamChunk(e){return this.checkAndThrowError(e),this.parseProviderStreamChunk(e)}extractSystemMessages(e,n=`
|
|
1138
1156
|
|
|
1139
|
-
`){let r=e.filter(s=>s.role==="system").map(s=>s.content);return{system:r.length?r.join(n):void 0,conversationMessages:e.filter(s=>s.role!=="system")}}parseJsonError(e,n){if(!e)return{message:`HTTP ${n}`};try{let r=JSON.parse(e);return r.error&&typeof r.error=="object"?{message:r.error.message||`HTTP ${n}`,type:r.error.type}:r.message?{message:r.message}:{message:e}}catch{return{message:e}}}checkAndThrowError(e){if(typeof e!="object"||e===null)return;let n=e;if(n.type==="error"&&"message"in n){let r=n.code||"unknown";throw new lr(n.message,r,!!n.retryable)}if(n.error){let r=n.error,s=typeof r=="object"&&r!==null?String(r.type??r.code??""):"",o=/rate_limit|too_many_requests/i.test(s),i=/overloaded|server_error|unavailable/i.test(s),a=/context_length/i.test(s);throw new lr(this.extractErrorMessage(n.error),o?"rate_limit":a?"context_exceeded":"unknown",o||i)}}extractErrorMessage(e){if(typeof e=="string")try{let n=JSON.parse(e);return n.error?.message||n.message||e}catch{return e}return typeof e=="object"&&e!==null?e.message||JSON.stringify(e):`${this.providerName} returned an error`}};var Pl=class extends Dn{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,n,r,s){let o=this.convertMessagesToInput(e),i={model:n,input:o,stream:s};if(r?.webSearch
|
|
1157
|
+
`){let r=e.filter(s=>s.role==="system").map(s=>s.content);return{system:r.length?r.join(n):void 0,conversationMessages:e.filter(s=>s.role!=="system")}}parseJsonError(e,n){if(!e)return{message:`HTTP ${n}`};try{let r=JSON.parse(e);return r.error&&typeof r.error=="object"?{message:r.error.message||`HTTP ${n}`,type:r.error.type}:r.message?{message:r.message}:{message:e}}catch{return{message:e}}}checkAndThrowError(e){if(typeof e!="object"||e===null)return;let n=e;if(n.type==="error"&&"message"in n){let r=n.code||"unknown";throw new lr(n.message,r,!!n.retryable)}if(n.error){let r=n.error,s=typeof r=="object"&&r!==null?String(r.type??r.code??""):"",o=/rate_limit|too_many_requests/i.test(s),i=/overloaded|server_error|unavailable/i.test(s),a=/context_length/i.test(s);throw new lr(this.extractErrorMessage(n.error),o?"rate_limit":a?"context_exceeded":"unknown",o||i)}}extractErrorMessage(e){if(typeof e=="string")try{let n=JSON.parse(e);return n.error?.message||n.message||e}catch{return e}return typeof e=="object"&&e!==null?e.message||JSON.stringify(e):`${this.providerName} returned an error`}};var Pl=class extends Dn{constructor(){super(...arguments),this.providerName="OpenAI",this.defaultBaseUrl="https://api.openai.com",this.path="/v1/responses",this.effortMap={0:"none",1:"low",2:"medium",3:"high",4:"xhigh"}}buildHeaders(e){return{Authorization:`Bearer ${e}`,"Content-Type":"application/json",Accept:"application/json"}}buildPayload(e,n,r,s){let o=this.convertMessagesToInput(e),i={model:n,input:o,stream:s};if(r?.webSearch===!0&&(i.tools=[{type:"web_search"}]),r?.effort!==void 0){let a=this.effortMap[r.effort];i.reasoning=a==="none"?{effort:a}:{effort:a,summary:"auto"}}return r?.maxOutputTokens!==void 0&&(i.max_output_tokens=r.maxOutputTokens),i}parseNonStreamingResponse(e){if(!this.isResponsesApiResponse(e))return{text:""};let n=e.output_text||"",r;if(e.output&&Array.isArray(e.output))for(let s of e.output)s.type==="reasoning"&&s.summary&&(r=s.summary.map(o=>o.text).join(`
|
|
1140
1158
|
`)),!n&&s.type==="message"&&s.content&&(n=s.content.filter(o=>o.type==="output_text").map(o=>o.text).join(""));return{text:n,reasoning:r}}parseProviderStreamChunk(e){if(!this.isResponsesApiEvent(e))return null;switch(e.type){case"response.failed":{let r=e.response?.error,s=r?.message||"Response failed",o=r?.code==="insufficient_quota"||r?.code==="rate_limit_exceeded";throw new lr(s,o?"rate_limit":"unknown",o)}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(n=>n.role==="system"?`System: ${n.content}`:n.role==="user"?`User: ${n.content}`:n.role==="assistant"?`Assistant: ${n.content}`:n.content).join(`
|
|
1141
1159
|
|
|
1142
|
-
`)}isResponsesApiEvent(e){return typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string"}isResponsesApiResponse(e){return typeof e=="object"&&e!==null&&e.object==="response"}};var Fs=class extends Dn{parseNonStreamingResponse(e){if(!this.hasChoices(e))return{text:""};let n=e,r=n.choices[0],s=r?.message,o=s?.content??r?.text??"",i=s?.reasoning??s?.reasoning_content??n.reasoning;return{text:o,reasoning:i}}parseProviderStreamChunk(e){if(!this.hasChoices(e))return null;let n=e.choices[0];if(!n)return null;let r=n.delta||n.message;if(!r)return null;let s=r.content||void 0,o=r.reasoning||r.reasoning_content||void 0;return!s&&!o?null:{text:s,reasoning:o}}hasChoices(e){return typeof e=="object"&&e!==null&&"choices"in e&&Array.isArray(e.choices)}};var Bl=class extends Fs{constructor(){super(...arguments),this.providerName="OpenRouter",this.defaultBaseUrl="https://openrouter.ai",this.path="/api/v1/chat/completions",this.effortMap={0:"none",1:"low",2:"medium",3:"high"}}buildHeaders(e,n){let r={Authorization:`Bearer ${e}`,"x-api-key":e,"Content-Type":"application/json",Accept:"application/json","X-Title":"Typebulb"};return n&&(r["HTTP-Referer"]=n,r.Referer=n,r.Origin=n),r}buildPayload(e,n,r,s){let o={model:n,messages:e,stream:s};r?.webSearch===!0&&(o.plugins=[{id:"web"}]);let i=r?.effort;return i!==void 0&&(o.reasoning={effort:this.effortMap[i]}),o}};var Rl=class extends Dn{constructor(){super(...arguments),this.providerName="Anthropic",this.defaultBaseUrl="https://api.anthropic.com",this.path="/v1/messages"}buildHeaders(e){return{"x-api-key":e,"anthropic-version":"2023-06-01","Content-Type":"application/json",Accept:"application/json"}}buildPayload(e,n,r,s){let{system:o,conversationMessages:i}=this.extractSystemMessages(e),a={model:n,max_tokens:this.getMaxTokens(n),messages:this.withTailMessagesCached(i),stream:s};r?.webSearch
|
|
1160
|
+
`)}isResponsesApiEvent(e){return typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string"}isResponsesApiResponse(e){return typeof e=="object"&&e!==null&&e.object==="response"}};var Fs=class extends Dn{parseNonStreamingResponse(e){if(!this.hasChoices(e))return{text:""};let n=e,r=n.choices[0],s=r?.message,o=s?.content??r?.text??"",i=s?.reasoning??s?.reasoning_content??n.reasoning;return{text:o,reasoning:i}}parseProviderStreamChunk(e){if(!this.hasChoices(e))return null;let n=e.choices[0];if(!n)return null;let r=n.delta||n.message;if(!r)return null;let s=r.content||void 0,o=r.reasoning||r.reasoning_content||void 0;return!s&&!o?null:{text:s,reasoning:o}}hasChoices(e){return typeof e=="object"&&e!==null&&"choices"in e&&Array.isArray(e.choices)}};var Bl=class extends Fs{constructor(){super(...arguments),this.providerName="OpenRouter",this.defaultBaseUrl="https://openrouter.ai",this.path="/api/v1/chat/completions",this.effortMap={0:"none",1:"low",2:"medium",3:"high",4:"xhigh"}}buildHeaders(e,n){let r={Authorization:`Bearer ${e}`,"x-api-key":e,"Content-Type":"application/json",Accept:"application/json","X-Title":"Typebulb"};return n&&(r["HTTP-Referer"]=n,r.Referer=n,r.Origin=n),r}buildPayload(e,n,r,s){let o={model:n,messages:e,stream:s};r?.webSearch===!0&&(o.plugins=[{id:"web"}]);let i=r?.effort;return i!==void 0&&(o.reasoning={effort:this.effortMap[i]}),r?.maxOutputTokens!==void 0&&(o.max_tokens=r.maxOutputTokens),o}};var Rl=class extends Dn{constructor(){super(...arguments),this.providerName="Anthropic",this.defaultBaseUrl="https://api.anthropic.com",this.path="/v1/messages"}buildHeaders(e){return{"x-api-key":e,"anthropic-version":"2023-06-01","Content-Type":"application/json",Accept:"application/json"}}buildPayload(e,n,r,s){let{system:o,conversationMessages:i}=this.extractSystemMessages(e),a={model:n,max_tokens:Math.min(this.getMaxTokens(n),r?.maxOutputTokens??1/0),messages:this.withTailMessagesCached(i),stream:s};r?.webSearch===!0&&(a.tools=[{type:"web_search_20250305",name:"web_search"}]),o&&(a.system=[{type:"text",text:o,cache_control:{type:"ephemeral"}}]);let l=r?.effort;if(l!==void 0){if(this.isModernModel(n))if(l===0)this.alwaysThinks(n)||(a.thinking={type:"disabled"}),a.output_config={effort:"low"};else{let c={1:"low",2:"medium",3:"high",4:"max"};a.thinking={type:"adaptive",display:"summarized"},a.output_config={effort:c[l]}}else if(l!==0){let c={1:2048,2:4096,3:8192,4:16384};a.thinking={type:"enabled",budget_tokens:c[l]}}}return a}parseNonStreamingResponse(e){if(!this.isAnthropicResponse(e))return{text:""};let n=e.content.filter(s=>s.type==="text").map(s=>s.text).join(""),r=e.content.filter(s=>s.type==="thinking").map(s=>s.thinking).join(`
|
|
1143
1161
|
|
|
1144
|
-
`);return{text:n,reasoning:r||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}withTailMessagesCached(e){let n=Math.max(0,e.length-2);return e.map((r,s)=>s>=n?{role:r.role,content:[{type:"text",text:r.content,cache_control:{type:"ephemeral"}}]}:r)}isAnthropicResponse(e){return typeof e=="object"&&e!==null&&e.type==="message"&&Array.isArray(e.content)}isAnthropicEvent(e){return typeof e=="object"&&e!==null&&"type"in e}isModernModel(e){let n=e.match(/^claude-[a-z]+-(\d+)(?:-(\d+))?/i);if(!n)return!1;let r=+n[1],s=n[2]?+n[2]:0;return r>4||r===4&&s>=6}alwaysThinks(e){return/^claude-(fable|mythos)\b/i.test(e)}getMaxTokens(e){return this.isModernModel(e)?64e3:32e3}};var Ol=class extends Dn{constructor(){super(...arguments),this.providerName="Gemini",this.defaultBaseUrl="https://generativelanguage.googleapis.com",this.path="/v1beta/models",this.budgetMap={0:0,1:1024,2:8192,3:-1}}getPath(e,n){return`/v1beta/models/${e}:${n?"streamGenerateContent":"generateContent"}${n?"?alt=sse":""}`}buildHeaders(e){return{"Content-Type":"application/json","x-goog-api-key":e}}buildPayload(e,n,r,s){let{system:o,conversationMessages:i}=this.extractSystemMessages(e,`
|
|
1145
|
-
`),l={contents:i.map(h=>({role:h.role==="assistant"?"model":"user",parts:[{text:h.content}]}))};r?.webSearch
|
|
1146
|
-
`)[0],type:s.status,code:s.code?.toString()}:r.message?{message:r.message}:{message:e}}catch{return{message:e}}}parseNonStreamingResponse(e){if(this.checkAndThrowError(e),this.checkGeminiError(e),!this.isGeminiResponse(e))return{text:"",status:"failed",error:"Invalid response format"};let n=this.extractParts(e).text||"",r=e.candidates?.[0]?.finishReason,s="complete";return r==="MAX_TOKENS"?s="interrupted":(r==="SAFETY"||r==="RECITATION")&&(s="failed"),{text:n,status:s}}parseProviderStreamChunk(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return null;let n=this.extractParts(e);return n.text||n.reasoning?n:null}geminiVersion(e){let n=e.match(/^gemini-(\d+(?:\.\d+)?)/);return n?Number(n[1]):null}thinkingLevelFor(e,n){let r=["minimal","low","medium","high"][n];return r==="minimal"&&e<3.5?"low":r}isGeminiResponse(e){return typeof e=="object"&&e!==null&&"candidates"in e&&Array.isArray(e.candidates)}extractParts(e){let n=e.candidates?.[0]?.content?.parts;if(!n)return{};let r="",s="";for(let o of n)o.text&&(o.thought?s+=o.text:r+=o.text);return{text:r||void 0,reasoning:s||void 0}}checkGeminiError(e){if(this.isGeminiResponse(e)&&e.promptFeedback?.blockReason){let n=e.promptFeedback.blockReason;throw new lr(`Prompt blocked: ${n}`)}}};var Ll=class extends Fs{constructor(){super(...arguments),this.providerName="Ollama",this.defaultBaseUrl="http://localhost:11434",this.path="/chat/completions"}buildHeaders(e){let n={"Content-Type":"application/json",Accept:"application/json"};return e&&(n.Authorization=`Bearer ${e}`),n}buildPayload(e,n,r,s){return{model:n,messages:e,stream:s}}};var sv=new Ll,_Q=new Map([["openai",new Pl],["openrouter",new Bl],["anthropic",new Rl],["gemini",new Ol],["ollama",sv],["openai-compat",sv]]);function pi(t){let e=_Q.get(t);if(!e)throw new Error(`Unsupported protocol: ${t}`);return e}function NQ(t,e){return t.replace(/\/+$/,"")+(e.startsWith("/")?e:`/${e}`)}async function _d(t,e){let n=pi(t.protocol),r=n.getPath(t.model,e.stream),s=NQ(t.baseUrl,r),o=n.buildHeaders(t.apiKey,e.origin),i=n.buildPayload(e.messages,t.model,{effort:e.effort,webSearch:e.webSearch},e.stream);return
|
|
1147
|
-
`)){let n=e.trim();if(!n||n.startsWith("#"))continue;let r=n.indexOf("=");if(r===-1)continue;let s=n.slice(0,r).trim(),o=n.slice(r+1).trim();(o.startsWith('"')&&o.endsWith('"')||o.startsWith("'")&&o.endsWith("'"))&&(o=o.slice(1,-1)),yield[s,o]}}function QQ(t,e=process.cwd()){for(let n of LQ()){let r;try{r=OQ(Dl.resolve(e,n),"utf-8")}catch{continue}for(let[s,o]of DQ(r))if(s===t)return o}return process.env[t]}function ov(){return`.env loads from ${process.cwd()} (the directory you ran from, not the bulb's)`}var Nd={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"};function ql(t){return(t.includes("://")?t:`http://${t}`).replace(/\/+$/,"")}var qQ="https://api.typebulb.com/api/models",MQ=1440*60*1e3,$Q=5e3,FQ=60*1e3,di=null,Ql=null,fi=null;function jQ(){return fi}async function av(){let[t,e]=await Promise.all([JQ(),UQ()]);return KQ([...HQ(e),...t],process.env.TB_AI_PROVIDER,process.env.TB_AI_MODEL)}function KQ(t,e,n){return!e||!n?t:t.map(r=>r.provider===e&&r.name===n?{...r,default:!0}:r)}async function iv(){let t;try{t=await fetch(qQ,{signal:AbortSignal.timeout($Q)})}catch(e){return fi=`catalog fetch failed: ${e?.message??e}`,null}if(!t.ok)return fi=`catalog fetch failed: HTTP ${t.status}`,null;try{return await t.json()}catch(e){return fi=`catalog returned an unreadable body: ${e?.message??e}`,null}}async function UQ(){if(di&&Date.now()-di.fetchedAt<=MQ)return di.models;let t=await iv()??await iv();return t?(di={models:t,fetchedAt:Date.now()},fi=null,t):di?.models??[]}async function JQ(){if(Ql&&Date.now()-Ql.fetchedAt<=FQ)return Ql.models;let t=ql(process.env.OLLAMA_HOST??"http://localhost:11434"),e=[];try{let n=await fetch(new URL("/api/tags",t).toString());n.ok&&(e=((await n.json()).models??[]).map(s=>s.name).filter(s=>!!s).map(s=>({provider:"ollama",name:s,friendlyName:s,providerName:"Ollama"})))}catch{}return Ql={models:e,fetchedAt:Date.now()},e}function HQ(t){let e=new Set(Object.entries(Nd).filter(([,n])=>!!process.env[n]).map(([n])=>n));return t.filter(n=>e.has(n.provider))}function lv(t,e){let n=t??process.env.TB_AI_PROVIDER,r=e??process.env.TB_AI_MODEL;if(!n)return"No provider specified. Set TB_AI_PROVIDER in your .env file or pass provider in the tb.ai() call.";if(!r)return"No model specified. Set TB_AI_MODEL in your .env file or pass model in the tb.ai() call.";let s;try{s=pi(n)}catch{return`Unknown provider '${n}'.`}if(n==="ollama")return{apiKey:"",baseUrl:`${ql(process.env.OLLAMA_HOST??s.defaultBaseUrl)}/v1`,protocol:n,model:r,isFreeModel:!1};if(n==="openai-compat"){let a=process.env.TB_AI_BASE_URL;return a?{apiKey:process.env.TB_AI_API_KEY??"",baseUrl:a,protocol:n,model:r,isFreeModel:!1}:"No base URL for openai-compat. Set TB_AI_BASE_URL (the OpenAI-style base ending in /v1, e.g. http://localhost:1234/v1) in your .env file."}let o=Nd[n];if(!o)return`Unknown provider '${n}'.`;let i=process.env[o];return i?{apiKey:i,baseUrl:s.defaultBaseUrl,protocol:n,model:r,isFreeModel:!1}:`No API key for '${n}'. Set ${o} \u2014 ${ov()}.`}function cv(t,e){let n=[...e.system?[{role:"system",content:e.system}]:[],...e.messages.map(r=>({role:r.role,content:r.content}))];return _d(t,{messages:n,stream:!0,effort:rv(e.effort),webSearch:e.webSearch
|
|
1162
|
+
`);return{text:n,reasoning:r||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}withTailMessagesCached(e){let n=Math.max(0,e.length-2);return e.map((r,s)=>s>=n?{role:r.role,content:[{type:"text",text:r.content,cache_control:{type:"ephemeral"}}]}:r)}isAnthropicResponse(e){return typeof e=="object"&&e!==null&&e.type==="message"&&Array.isArray(e.content)}isAnthropicEvent(e){return typeof e=="object"&&e!==null&&"type"in e}isModernModel(e){let n=e.match(/^claude-[a-z]+-(\d+)(?:-(\d+))?/i);if(!n)return!1;let r=+n[1],s=n[2]?+n[2]:0;return r>4||r===4&&s>=6}alwaysThinks(e){return/^claude-(fable|mythos)\b/i.test(e)}getMaxTokens(e){return this.isModernModel(e)?64e3:32e3}};var Ol=class extends Dn{constructor(){super(...arguments),this.providerName="Gemini",this.defaultBaseUrl="https://generativelanguage.googleapis.com",this.path="/v1beta/models",this.budgetMap={0:0,1:1024,2:8192,3:-1,4:-1}}getPath(e,n){return`/v1beta/models/${e}:${n?"streamGenerateContent":"generateContent"}${n?"?alt=sse":""}`}buildHeaders(e){return{"Content-Type":"application/json","x-goog-api-key":e}}buildPayload(e,n,r,s){let{system:o,conversationMessages:i}=this.extractSystemMessages(e,`
|
|
1163
|
+
`),l={contents:i.map(h=>({role:h.role==="assistant"?"model":"user",parts:[{text:h.content}]}))};r?.webSearch===!0&&(l.tools=[{google_search:{}}]),o&&(l.systemInstruction={role:"system",parts:[{text:o}]});let c=r?.effort;if(c!==void 0){let h=this.geminiVersion(n),u=h!==null&&h>=3?{thinkingLevel:this.thinkingLevelFor(h,c)}:{thinkingBudget:this.budgetMap[c]};l.generationConfig={thinkingConfig:c===0?u:{includeThoughts:!0,...u}}}return r?.maxOutputTokens!==void 0&&(l.generationConfig={...l.generationConfig,maxOutputTokens:r.maxOutputTokens}),l}parseError(e,n){if(!e)return{message:`HTTP ${n}`};try{let r=JSON.parse(e),s=Array.isArray(r)?r[0]?.error:r?.error;return s&&typeof s=="object"?{message:(s.message||`HTTP ${n}`).split(`
|
|
1164
|
+
`)[0],type:s.status,code:s.code?.toString()}:r.message?{message:r.message}:{message:e}}catch{return{message:e}}}parseNonStreamingResponse(e){if(this.checkAndThrowError(e),this.checkGeminiError(e),!this.isGeminiResponse(e))return{text:"",status:"failed",error:"Invalid response format"};let n=this.extractParts(e).text||"",r=e.candidates?.[0]?.finishReason,s="complete";return r==="MAX_TOKENS"?s="interrupted":(r==="SAFETY"||r==="RECITATION")&&(s="failed"),{text:n,status:s}}parseProviderStreamChunk(e){if(this.checkGeminiError(e),!this.isGeminiResponse(e))return null;let n=this.extractParts(e);return n.text||n.reasoning?n:null}geminiVersion(e){let n=e.match(/^gemini-(\d+(?:\.\d+)?)/);return n?Number(n[1]):null}thinkingLevelFor(e,n){let r=["minimal","low","medium","high","high"][n];return r==="minimal"&&e<3.5?"low":r}isGeminiResponse(e){return typeof e=="object"&&e!==null&&"candidates"in e&&Array.isArray(e.candidates)}extractParts(e){let n=e.candidates?.[0]?.content?.parts;if(!n)return{};let r="",s="";for(let o of n)o.text&&(o.thought?s+=o.text:r+=o.text);return{text:r||void 0,reasoning:s||void 0}}checkGeminiError(e){if(this.isGeminiResponse(e)&&e.promptFeedback?.blockReason){let n=e.promptFeedback.blockReason;throw new lr(`Prompt blocked: ${n}`)}}};var Ll=class extends Fs{constructor(){super(...arguments),this.providerName="Ollama",this.defaultBaseUrl="http://localhost:11434",this.path="/chat/completions"}buildHeaders(e){let n={"Content-Type":"application/json",Accept:"application/json"};return e&&(n.Authorization=`Bearer ${e}`),n}buildPayload(e,n,r,s){return{model:n,messages:e,stream:s}}};var sv=new Ll,_Q=new Map([["openai",new Pl],["openrouter",new Bl],["anthropic",new Rl],["gemini",new Ol],["ollama",sv],["openai-compat",sv]]);function pi(t){let e=_Q.get(t);if(!e)throw new Error(`Unsupported protocol: ${t}`);return e}function NQ(t,e){return t.replace(/\/+$/,"")+(e.startsWith("/")?e:`/${e}`)}async function _d(t,e){let n=pi(t.protocol),r=n.getPath(t.model,e.stream),s=NQ(t.baseUrl,r),o=n.buildHeaders(t.apiKey,e.origin),i=n.buildPayload(e.messages,t.model,{effort:e.effort,webSearch:e.webSearch,maxOutputTokens:e.maxOutputTokens},e.stream);return fetch(s,{method:"POST",headers:o,body:JSON.stringify(i),signal:e.signal})}import{readFileSync as OQ,existsSync as hJ}from"fs";import*as Dl from"path";function LQ(t){return[...t?[`.env.${t}.local`,`.env.${t}`]:[],".env.local",".env"]}function*DQ(t){for(let e of t.split(`
|
|
1165
|
+
`)){let n=e.trim();if(!n||n.startsWith("#"))continue;let r=n.indexOf("=");if(r===-1)continue;let s=n.slice(0,r).trim(),o=n.slice(r+1).trim();(o.startsWith('"')&&o.endsWith('"')||o.startsWith("'")&&o.endsWith("'"))&&(o=o.slice(1,-1)),yield[s,o]}}function QQ(t,e=process.cwd()){for(let n of LQ()){let r;try{r=OQ(Dl.resolve(e,n),"utf-8")}catch{continue}for(let[s,o]of DQ(r))if(s===t)return o}return process.env[t]}function ov(){return`.env loads from ${process.cwd()} (the directory you ran from, not the bulb's)`}var Nd={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY",gemini:"GOOGLE_API_KEY",openrouter:"OPENROUTER_API_KEY"};function ql(t){return(t.includes("://")?t:`http://${t}`).replace(/\/+$/,"")}var qQ="https://api.typebulb.com/api/models",MQ=1440*60*1e3,$Q=5e3,FQ=60*1e3,di=null,Ql=null,fi=null;function jQ(){return fi}async function av(){let[t,e]=await Promise.all([JQ(),UQ()]);return KQ([...HQ(e),...t],process.env.TB_AI_PROVIDER,process.env.TB_AI_MODEL)}function KQ(t,e,n){return!e||!n?t:t.map(r=>r.provider===e&&r.name===n?{...r,default:!0}:r)}async function iv(){let t;try{t=await fetch(qQ,{signal:AbortSignal.timeout($Q)})}catch(e){return fi=`catalog fetch failed: ${e?.message??e}`,null}if(!t.ok)return fi=`catalog fetch failed: HTTP ${t.status}`,null;try{return await t.json()}catch(e){return fi=`catalog returned an unreadable body: ${e?.message??e}`,null}}async function UQ(){if(di&&Date.now()-di.fetchedAt<=MQ)return di.models;let t=await iv()??await iv();return t?(di={models:t,fetchedAt:Date.now()},fi=null,t):di?.models??[]}async function JQ(){if(Ql&&Date.now()-Ql.fetchedAt<=FQ)return Ql.models;let t=ql(process.env.OLLAMA_HOST??"http://localhost:11434"),e=[];try{let n=await fetch(new URL("/api/tags",t).toString());n.ok&&(e=((await n.json()).models??[]).map(s=>s.name).filter(s=>!!s).map(s=>({provider:"ollama",name:s,friendlyName:s,providerName:"Ollama"})))}catch{}return Ql={models:e,fetchedAt:Date.now()},e}function HQ(t){let e=new Set(Object.entries(Nd).filter(([,n])=>!!process.env[n]).map(([n])=>n));return t.filter(n=>e.has(n.provider))}function lv(t,e){let n=t??process.env.TB_AI_PROVIDER,r=e??process.env.TB_AI_MODEL;if(!n)return"No provider specified. Set TB_AI_PROVIDER in your .env file or pass provider in the tb.ai() call.";if(!r)return"No model specified. Set TB_AI_MODEL in your .env file or pass model in the tb.ai() call.";let s;try{s=pi(n)}catch{return`Unknown provider '${n}'.`}if(n==="ollama")return{apiKey:"",baseUrl:`${ql(process.env.OLLAMA_HOST??s.defaultBaseUrl)}/v1`,protocol:n,model:r,isFreeModel:!1};if(n==="openai-compat"){let a=process.env.TB_AI_BASE_URL;return a?{apiKey:process.env.TB_AI_API_KEY??"",baseUrl:a,protocol:n,model:r,isFreeModel:!1}:"No base URL for openai-compat. Set TB_AI_BASE_URL (the OpenAI-style base ending in /v1, e.g. http://localhost:1234/v1) in your .env file."}let o=Nd[n];if(!o)return`Unknown provider '${n}'.`;let i=process.env[o];return i?{apiKey:i,baseUrl:s.defaultBaseUrl,protocol:n,model:r,isFreeModel:!1}:`No API key for '${n}'. Set ${o} \u2014 ${ov()}.`}function cv(t,e){let n=[...e.system?[{role:"system",content:e.system}]:[],...e.messages.map(r=>({role:r.role,content:r.content}))];return _d(t,{messages:n,stream:!0,effort:rv(e.effort),webSearch:e.webSearch,signal:e.signal})}function Pd(t,e){let n=wn.resolve(t),r=wn.join(wn.dirname(n),wn.basename(n).replace(/\.bulb\.md$/,""));return e?wn.join(r,"batches",e):r}var hi=(t,e)=>wn.join(Pd(t,e),"assets");function uv(t){let[e,n,r,s]=t.split(wn.sep).slice(-4);if(!(e!=="typebulbs"||n!=="u"||!r||!s?.endsWith(".bulb.md")))return{userSlug:r,slug:s.slice(0,-8)}}function fv(t,e,n){if(e>8)return n;let r;try{r=pv(t,{withFileTypes:!0})}catch{return n}for(let s of r)if(s.isDirectory()){if(s.name.startsWith(".")||s.name==="node_modules")continue;fv(Ml(t,s.name),e+1,n)}else s.isFile()&&s.name.endsWith(".bulb.md")&&n.push(Ml(t,s.name));return n}function YQ(t){let e=Ml(Pd(t),"batches"),n;try{n=pv(e,{withFileTypes:!0})}catch{return[]}return n.filter(r=>r.isDirectory()).map(r=>{let s=0;try{s=dv(Ml(e,r.name)).mtimeMs}catch{}return{name:r.name,mtime:s}}).sort((r,s)=>s.mtime-r.mtime).map(r=>r.name)}function WQ(t){return fv(t,0,[]).map(e=>{let n=0;try{n=dv(e).mtimeMs}catch{}let r,s=!1;try{let o=GQ(e,"utf8");r=ga(o.slice(0,1024));let i=$n(o);s=!!i&&Jm(Eo(i))}catch{}return{path:e,name:r??VQ(e).replace(/\.bulb\.md$/,""),mtime:n,serverOnly:s}})}import{mkdir as o3,readFile as XQ,writeFile as i3}from"fs/promises";import{join as hv}from"path";var zQ=20100,mv=100,ZQ=19;var u3=mv-1;function eq(){return hv(jr(),"blocks")}function tq(t){return hv(eq(),`${t}.json`)}async function nq(t){try{let e=JSON.parse(await XQ(tq(t),"utf8"));return e&&typeof e.cwd=="string"?{cwd:e.cwd,slots:e.slots??{},mirrors:e.mirrors??{}}:void 0}catch{return}}async function rq(t){let e=Sn(t);for(let n=0;n<ZQ;n++){let r=await nq(zQ+n*mv);if(r?.cwd===e)return s=>r.slots[Sn(s)]?.usedAt??0}return()=>0}import{readFile as sq}from"fs/promises";function yv(t){if(t.server.trim())return"server-side code (server.ts)";let e=t.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")||t.infer.trim()||/\btb\s*\.\s*infer\b/.test(e))return"AI (your API keys)";if(/\btb\s*\.\s*server\s*\.\s*\w/.test(e)||e.includes("/__api"))return"server-side code (server.ts)"}async function oq(t){try{let e=$n(await sq(t,"utf-8"));return e?yv(Eo(e)):void 0}catch{return}}function iq(t){let e=$n(t);if(!e)return t;let n=e.files.get("code.tsx");if(!n)return t;let r=zT(n);if(!r.length)return t;let s=e.files.get("config.json"),o={};if(s)try{let c=JSON.parse(s);c&&typeof c=="object"&&(o=c)}catch{}let i=o.dependencies&&typeof o.dependencies=="object"?{...o.dependencies}:{},a=r.filter(c=>!(c in i));if(!a.length)return t;for(let c of a)i[c]="latest";o.dependencies=i;let l={name:e.frontmatter.name};for(let[c,h]of e.files){let u=Ud(c);u&&(l[u]=h)}return l.config=JSON.stringify(o,null,2),Wd(l)}import{spawn as gv}from"child_process";import{basename as aq}from"path";function lq(){return process.env.TYPEBULB_EDITOR||"code"}var cq=/^(code|code-insiders|codium|vscodium|cursor|windsurf)(\.cmd|\.exe)?$/i;function uq(t,e,n){return n==null?[e]:cq.test(aq(t))?["-g",`${e}:${n}`]:[`+${n}`,e]}function pq(t,e){let n=lq();return{command:n,args:uq(n,t,e)}}function dq(t,e){let{command:n,args:r}=pq(t,e),s=process.platform==="win32"?gv("cmd.exe",["/d","/s","/c",n,...r],{detached:!0,stdio:"ignore",windowsHide:!0}):gv(n,r,{detached:!0,stdio:"ignore"});s.on("error",o=>console.error("[typebulb] editor launch failed:",o?.message??o)),s.unref()}import{readFileSync as fq,writeFileSync as hq,mkdirSync as mq}from"fs";import{join as yq}from"path";function Bd(){return yq(jr(),"trust.json")}function Rd(){try{let t=JSON.parse(fq(Bd(),"utf8"));return new Set(Array.isArray(t)?t:[])}catch{return new Set}}function gq(t){try{mq(jr(),{recursive:!0}),hq(Bd(),JSON.stringify([...t]))}catch(e){throw new Error(`can't write ${Bd()} \u2014 trust not remembered (unwritable home; sandboxed shell?): ${e.message}`)}}function Tq(t){return Rd().has(Sn(t))}function kq(t,e){let n=Rd(),r=Sn(t);(e?n.has(r):!n.has(r))||(e?n.add(r):n.delete(r),gq(n))}function Aq(){return[...Rd()]}import{readFileSync as S3,existsSync as vq}from"fs";import*as js from"path";import{fileURLToPath as wq}from"url";function bq(){let t=js.dirname(wq(import.meta.url));for(;!vq(js.join(t,"package.json"));){let e=js.dirname(t);if(e===t)break;t=e}return t}function xq(){return js.join(bq(),"SKILL.md")}import*as pn from"fs/promises";import*as Qn from"path";import{createHash as Eq}from"crypto";var Tv=(t,e)=>Qn.join("typebulbs","u",t,`${e}.bulb.md`),Od=t=>`${t.origin}/u/${encodeURIComponent(t.userSlug)}/${encodeURIComponent(t.slug)}.md`,$l=t=>t.split("/").map(encodeURIComponent).join("/"),mi=t=>`${t.origin}/u/${encodeURIComponent(t.userSlug)}/${encodeURIComponent(t.slug)}/assets`;async function Ld(t,e,n){let r=[...t],s=async()=>{for(let o=r.shift();o!==void 0;o=r.shift())await n(o)};await Promise.all(Array.from({length:Math.min(e,t.length)},s))}var Dd=t=>Eq("md5").update(t).digest("hex");function Ks(t){try{return JSON.parse(t).error||t}catch{return t}}async function Qd(t,e){try{let n=await fetch(mi(t),{headers:e.token?{Authorization:`Bearer ${e.token}`}:{},signal:e.timeoutMs?AbortSignal.timeout(e.timeoutMs):void 0});return n.ok?n.headers.get("content-type")?.includes("json")?{entries:await n.json()}:{error:"manifest response is not JSON \u2014 wrong origin?"}:{error:`manifest request failed (${n.status}): ${Ks(await n.text())}`}}catch(n){return{error:n instanceof Error?n.message:String(n)}}}function Cq(t,e,n){if(/^https?:\/\//i.test(t)){let o=new URL(t),i=o.pathname.split("/").filter(Boolean).map(decodeURIComponent),a=i[0]==="api"&&i[1]==="scripts"?i.slice(2):i;if(a[0]!=="u"||!a[1]||!a[2])throw new Error(`Not a bulb URL: ${t}
|
|
1148
1166
|
Expected <origin>/u/<user>/<slug>`);let l=a[1],c=a[2].replace(/(\.bulb)?\.md$/,"");return{origin:o.origin,userSlug:l,slug:c,dest:Qn.join(e,Tv(l,c))}}let r=Qn.resolve(e,t),s=uv(r);if(!s)throw new Error(`Not a conventional bulb path: ${t}
|
|
1149
1167
|
A pull target must be a bulb URL, or a local file at typebulbs/u/<user>/<slug>.bulb.md \u2014 the path is its remote identity.`);return{origin:n,...s,dest:r}}async function Iq(t,e){let n=await Qd(t,e);if("error"in n||!n.entries.length)return{kind:"none"};let r=n.entries,s=hi(t.dest),o=[],i=[],a=0;for(let l of r){let c=await pn.readFile(Qn.join(s,...l.path.split("/"))).catch(()=>{});c===void 0?o.push(l.path):Dd(c)===l.md5?a++:e.force?o.push(l.path):i.push(l.path)}return i.length?{kind:"conflict",paths:i}:{kind:"plan",toGet:o,unchanged:a}}async function Sq(t,e,n){let r=hi(t.dest),s=[],o=0;return await Ld(e.toGet,4,async i=>{try{let a=await fetch(`${mi(t)}/${$l(i)}`,{headers:n.token?{Authorization:`Bearer ${n.token}`}:{},signal:AbortSignal.timeout(n.timeoutMs??3e4)});if(!a.ok){s.push(`${i}: HTTP ${a.status}`);return}let l=Qn.join(r,...i.split("/"));await pn.mkdir(Qn.dirname(l),{recursive:!0}),await pn.writeFile(l,new Uint8Array(await a.arrayBuffer())),o++}catch(a){s.push(`${i}: ${a instanceof Error?a.message:String(a)}`)}}),{downloaded:o,unchanged:e.unchanged,errors:s}}async function _q(t,e={}){let n=await fetch(Od(t),{headers:e.token?{Authorization:`Bearer ${e.token}`}:{},signal:e.timeoutMs?AbortSignal.timeout(e.timeoutMs):void 0});if(!n.ok)return{kind:"http-error",status:n.status};let r=n.headers.get("content-type");if(!r?.includes("text/markdown"))return{kind:"not-markdown",contentType:r};let s=await n.text(),o;try{o=await pn.readFile(t.dest,"utf-8")}catch{}let i=o!==void 0&&Nq(o,s);if(o!==void 0&&!i&&!e.force){let{mtime:c}=await pn.stat(t.dest);return{kind:"conflict",dest:t.dest,localMtime:c,remoteLastModified:n.headers.get("last-modified")}}let a=await Iq(t,e);if(a.kind==="conflict")return{kind:"asset-conflict",dest:t.dest,paths:a.paths};if(!i){await pn.mkdir(Qn.dirname(t.dest),{recursive:!0}),await pn.writeFile(t.dest,s);let c=new Date(n.headers.get("last-modified")??"");isNaN(c.getTime())||await pn.utimes(t.dest,new Date,c)}let l=a.kind==="plan"?await Sq(t,a,e):void 0;return i?{kind:"up-to-date",dest:t.dest,assets:l}:{kind:"written",dest:t.dest,created:o===void 0,assets:l}}function Nq(t,e){let n=o=>o.replace(/\r\n/g,`
|
|
1150
1168
|
`),r=$n(n(t)),s=$n(n(e));return!r||!s?n(t)===n(e):r.frontmatter.name===s.frontmatter.name&&ur.every(o=>(r.files.get(zn[o].path)||"")===(s.files.get(zn[o].path)||""))}import*as Wn from"fs/promises";import*as Fl from"path";async function kv(t,e=""){let n=await Wn.readdir(t,{withFileTypes:!0}).catch(()=>[]),r=[];for(let s of n)s.isDirectory()?r.push(...await kv(Fl.join(t,s.name),`${e}${s.name}/`)):s.isFile()&&r.push(e+s.name);return r}async function Pq(t,e){let n=e.timeoutMs??3e4,r=mi(t),s={Authorization:`Bearer ${e.token}`},o=hi(t.dest);if(!await Wn.stat(o).then(b=>b.isDirectory()).catch(()=>!1))return{kind:"skipped"};let i=await kv(o),a=await Qd(t,{token:e.token,timeoutMs:n});if("error"in a)return{kind:"sync-error",message:a.error};let l=a.entries;if(!i.length&&!l.length)return{kind:"skipped"};let c=new Map(l.map(b=>[b.path,b.md5])),h=new Set(i),u=l.map(b=>b.path).filter(b=>!h.has(b)),p=0,m=0;try{await Ld(i,4,async b=>{let k=await Wn.readFile(Fl.join(o,...b.split("/")));if(c.get(b)===Dd(k)){m++;return}let v=await fetch(`${r}/${$l(b)}`,{method:"PUT",body:new Uint8Array(k),headers:s,signal:AbortSignal.timeout(n)});if(!v.ok)throw new Error(`upload of '${b}' refused (${v.status}): ${Ks(await v.text())}`);p++})}catch(b){return{kind:"sync-error",message:b instanceof Error?b.message:String(b)}}return{kind:"synced",uploaded:p,unchanged:m,toDelete:u,base:Xd(t.userSlug,t.slug)}}async function Bq(t,e,n){let r=n.timeoutMs??3e4,s=mi(t),o=[];for(let i of e)try{let a=await fetch(`${s}/${$l(i)}`,{method:"DELETE",headers:{Authorization:`Bearer ${n.token}`},signal:AbortSignal.timeout(r)});if(!a.ok)return{deleted:o,error:`delete of '${i}' refused (${a.status}): ${Ks(await a.text())}`};o.push(i)}catch(a){return{deleted:o,error:a instanceof Error?a.message:String(a)}}return{deleted:o}}async function Rq(t,e){let n=await Wn.readFile(t.dest,"utf-8"),{mtime:r}=await Wn.stat(t.dest),s=await Pq(t,{token:e.token,timeoutMs:e.timeoutMs});if(s.kind==="sync-error")return{kind:"asset-error",message:s.message};let o=s.kind==="synced"?{uploaded:s.uploaded,unchanged:s.unchanged,deleted:[],base:s.base}:void 0,i={Authorization:`Bearer ${e.token}`,"Content-Type":"text/markdown; charset=utf-8"};e.force||(i["If-Unmodified-Since"]=r.toUTCString());let a=await fetch(Od(t),{method:"PUT",body:n,headers:i,signal:e.timeoutMs?AbortSignal.timeout(e.timeoutMs):void 0}),l=await a.text();if(a.status===409)return{kind:"conflict",message:Ks(l),assets:o};if(!a.ok)return{kind:"http-error",status:a.status,message:Ks(l),assets:o};let c=JSON.parse(l);if(await Wn.utimes(t.dest,new Date,new Date(c.updatedAt)),o&&s.kind==="synced"&&s.toDelete.length){let h=await Bq(t,s.toDelete,{token:e.token,timeoutMs:e.timeoutMs});o.deleted=h.deleted,h.error&&(o.pruneError=h.error)}return{kind:"pushed",created:c.created,serverStripped:c.serverStripped,updatedAt:c.updatedAt,assets:o}}export{ga as bulbName,Tv as bulbRelPath,xq as bundledSkillPath,jQ as catalogFetchError,iq as ensureDeclaredDependencies,av as getFilteredModels,Tq as isBulbTrusted,rq as lastRunTimes,o0 as launchBulbServer,YQ as listBulbBatches,WQ as listBulbFiles,Ti as listBulbServers,Aq as listTrustedBulbs,ql as normalizeOllamaHost,dq as openInEditor,Cq as parsePullTarget,oq as predictBulbTrust,_q as pullBulb,Rq as pushBulb,QQ as readEnvVar,Xv as readServerLog,lv as resolveLocalProvider,cv as sendTbAi,Yl as serverLogPath,kq as setBulbTrusted,XE as slugifyBulbName,jd as stopBulbServer,zE as stripFrontmatter};
|