@swifty.js/swifty 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{agent-MPIDW5VX.js → agent-RLJIJPPZ.js} +1 -1
- package/dist/{anthropic-25O6Y2EC.js → anthropic-GAI75HYJ.js} +1 -1
- package/dist/{checker-FDJ2Q62T.js → checker-AVYJSHE3.js} +1 -1
- package/dist/{chunk-IZ23BHLA.js → chunk-A6H62GTA.js} +55 -55
- package/dist/chunk-BDSARQW3.js +351 -0
- package/dist/{chunk-4KVSJNS6.js → chunk-ISXLT3QN.js} +17 -17
- package/dist/chunk-LVLDD2BE.js +4 -0
- package/dist/{chunk-DCI5RJC7.js → chunk-OXEMDMZF.js} +5 -5
- package/dist/{chunk-S2DPVNBA.js → chunk-ZSJ2I5WM.js} +1 -1
- package/dist/glob_addon.node +0 -0
- package/dist/main.js +235 -227
- package/dist/{openai-2MX6GD45.js → openai-SMJX34AX.js} +2 -2
- package/dist/{server-5MLD4AUW.js → server-LIBUDDHX.js} +10 -10
- package/package.json +2 -1
- package/dist/chunk-HU7ELU2V.js +0 -4
- package/dist/chunk-PAJWEPH7.js +0 -351
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __swiftyCreateRequire } from "node:module";
|
|
3
3
|
const require = __swiftyCreateRequire(import.meta.url);
|
|
4
|
-
import{g as Zs,h as en}from"./chunk-HU7ELU2V.js";import{b as Ys,c as Xn,d as gs,e as Gn,f as Qn,g as Yn}from"./chunk-FZPTNGTU.js";import"./chunk-7MHXMDYC.js";import{J as Dr,K as Gs,L as ys,M as Qs,R as Vn,e as Jn}from"./chunk-4KVSJNS6.js";import"./chunk-MQ5XOYLD.js";import"./chunk-X3UA5OZL.js";function x(s,e,t,r,n){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?s!==e||!n:!e.has(s))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?n.call(s,t):n?n.value=t:e.set(s,t),t}function c(s,e,t,r){if(t==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?s!==e||!r:!e.has(s))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?r:t==="a"?r.call(s):r?r.value:e.get(s)}var He=function(){let{crypto:s}=globalThis;if(s?.randomUUID)return He=s.randomUUID.bind(s),s.randomUUID();let e=new Uint8Array(1),t=s?()=>s.getRandomValues(e)[0]:()=>Math.random()*255&255;return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,r=>(+r^t()&15>>+r/4).toString(16))};function zr(s){return typeof s=="object"&&s!==null&&("name"in s&&s.name==="AbortError"||"message"in s&&String(s.message).includes("FetchRequestCanceledException"))}var qr=s=>{if(s instanceof Error)return s;if(typeof s=="object"&&s!==null){try{if(Object.prototype.toString.call(s)==="[object Error]"){let e=new Error(s.message,s.cause?{cause:s.cause}:{});return s.stack&&(e.stack=s.stack),s.cause&&!e.cause&&(e.cause=s.cause),s.name&&(e.name=s.name),e}}catch{}try{return new Error(JSON.stringify(s))}catch{}}return new Error(s)};var g=class extends Error{},F=class s extends g{constructor(e,t,r,n){super(`${s.makeMessage(e,t,r)}`),this.status=e,this.headers=n,this.requestID=n?.get("x-request-id"),this.error=t;let o=t;this.code=o?.code,this.param=o?.param,this.type=o?.type}static makeMessage(e,t,r){let n=t?.message?typeof t.message=="string"?t.message:JSON.stringify(t.message):t?JSON.stringify(t):r;return e&&n?`${e} ${n}`:e?`${e} status code (no body)`:n||"(no status code or body)"}static generate(e,t,r,n){if(!e||!n)return new Se({message:r,cause:qr(t)});let o=t?.error;return e===400?new Pt(e,o,r,n):e===401?new xt(e,o,r,n):e===403?new Rt(e,o,r,n):e===404?new St(e,o,r,n):e===409?new Ct(e,o,r,n):e===422?new kt(e,o,r,n):e===429?new $t(e,o,r,n):e>=500?new Et(e,o,r,n):new s(e,o,r,n)}},M=class extends F{constructor({message:e}={}){super(void 0,void 0,e||"Request was aborted.",void 0)}},Se=class extends F{constructor({message:e,cause:t}){super(void 0,void 0,e||"Connection error.",void 0),t&&(this.cause=t)}},Ce=class extends Se{constructor({message:e}={}){super({message:e??"Request timed out."})}},Pt=class extends F{},xt=class extends F{},Rt=class extends F{},St=class extends F{},Ct=class extends F{},kt=class extends F{},$t=class extends F{},Et=class extends F{},Ot=class extends g{constructor(){super("Could not parse response content as the length limit was reached")}},vt=class extends g{constructor(){super("Could not parse response content as the request was rejected by the content filter")}},pe=class extends Error{constructor(e){super(e)}},We=class extends F{constructor(e,t,r){let n="OAuth2 authentication error",o;if(t&&typeof t=="object"){let a=t;o=a.error;let l=a.error_description;l&&typeof l=="string"?n=l:o&&(n=o)}super(e,t,n,r),this.error_code=o}},Hr=class extends g{constructor(e,t,r){super(e),this.provider=t,this.cause=r}};var _i=/^[a-z][a-z0-9+.-]*:/i,Zn=s=>_i.test(s),X=s=>(X=Array.isArray,X(s)),tn=X;function As(s){return typeof s!="object"?{}:s??{}}function rn(s){if(!s)return!0;for(let e in s)return!1;return!0}function eo(s,e){return Object.prototype.hasOwnProperty.call(s,e)}function Wr(s){return s!=null&&typeof s=="object"&&!Array.isArray(s)}var to=(s,e)=>{if(typeof e!="number"||!Number.isInteger(e))throw new g(`${s} must be an integer`);if(e<0)throw new g(`${s} must be a positive integer`);return e};var ro=s=>{try{return JSON.parse(s)}catch{return}};var de=s=>new Promise(e=>setTimeout(e,s));var ke="6.49.0";var io=()=>typeof window<"u"&&typeof window.document<"u"&&typeof navigator<"u";function yi(){return typeof Deno<"u"&&Deno.build!=null?"deno":typeof EdgeRuntime<"u"?"edge":Object.prototype.toString.call(typeof globalThis.process<"u"?globalThis.process:0)==="[object process]"?"node":"unknown"}var gi=()=>{let s=yi();if(s==="deno")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":ke,"X-Stainless-OS":no(Deno.build.os),"X-Stainless-Arch":so(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":typeof Deno.version=="string"?Deno.version:Deno.version?.deno??"unknown"};if(typeof EdgeRuntime<"u")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":ke,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":globalThis.process.version};if(s==="node")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":ke,"X-Stainless-OS":no(globalThis.process.platform??"unknown"),"X-Stainless-Arch":so(globalThis.process.arch??"unknown"),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":globalThis.process.version??"unknown"};let e=Ai();return e?{"X-Stainless-Lang":"js","X-Stainless-Package-Version":ke,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":`browser:${e.browser}`,"X-Stainless-Runtime-Version":e.version}:{"X-Stainless-Lang":"js","X-Stainless-Package-Version":ke,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}};function Ai(){if(typeof navigator>"u"||!navigator)return null;let s=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(let{key:e,pattern:t}of s){let r=t.exec(navigator.userAgent);if(r){let n=r[1]||0,o=r[2]||0,a=r[3]||0;return{browser:e,version:`${n}.${o}.${a}`}}}return null}var so=s=>s==="x32"?"x32":s==="x86_64"||s==="x64"?"x64":s==="arm"?"arm":s==="aarch64"||s==="arm64"?"arm64":s?`other:${s}`:"unknown",no=s=>(s=s.toLowerCase(),s.includes("ios")?"iOS":s==="android"?"Android":s==="darwin"?"MacOS":s==="win32"?"Windows":s==="freebsd"?"FreeBSD":s==="openbsd"?"OpenBSD":s==="linux"?"Linux":s?`Other:${s}`:"Unknown"),oo,ao=()=>oo??(oo=gi());function bs(){if(typeof fetch<"u")return fetch;throw new Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function sn(...s){let e=globalThis.ReadableStream;if(typeof e>"u")throw new Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new e(...s)}function Jr(s){let e=Symbol.asyncIterator in s?s[Symbol.asyncIterator]():s[Symbol.iterator]();return sn({start(){},async pull(t){let{done:r,value:n}=await e.next();r?t.close():t.enqueue(n)},async cancel(){await e.return?.()}})}function ws(s){if(s[Symbol.asyncIterator])return s;let e=s.getReader();return{async next(){try{let t=await e.read();return t?.done&&e.releaseLock(),t}catch(t){throw e.releaseLock(),t}},async return(){let t=e.cancel();return e.releaseLock(),await t,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function nn(s){if(s===null||typeof s!="object")return;if(s[Symbol.asyncIterator]){await s[Symbol.asyncIterator]().return?.();return}let e=s.getReader(),t=e.cancel();e.releaseLock(),await t}var co=({headers:s,body:e})=>({bodyHeaders:{"content-type":"application/json"},body:JSON.stringify(e)});var on="RFC3986",an=s=>String(s),un={RFC1738:s=>String(s).replace(/%20/g,"+"),RFC3986:an},lo="RFC1738";var Is=(s,e)=>(Is=Object.hasOwn??Function.prototype.call.bind(Object.prototype.hasOwnProperty),Is(s,e)),me=(()=>{let s=[];for(let e=0;e<256;++e)s.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return s})();var cn=1024,po=(s,e,t,r,n)=>{if(s.length===0)return s;let o=s;if(typeof s=="symbol"?o=Symbol.prototype.toString.call(s):typeof s!="string"&&(o=String(s)),t==="iso-8859-1")return escape(o).replace(/%u[0-9a-f]{4}/gi,function(l){return"%26%23"+parseInt(l.slice(2),16)+"%3B"});let a="";for(let l=0;l<o.length;l+=cn){let m=o.length>=cn?o.slice(l,l+cn):o,p=[];for(let _=0;_<m.length;++_){let f=m.charCodeAt(_);if(f===45||f===46||f===95||f===126||f>=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||n===lo&&(f===40||f===41)){p[p.length]=m.charAt(_);continue}if(f<128){p[p.length]=me[f];continue}if(f<2048){p[p.length]=me[192|f>>6]+me[128|f&63];continue}if(f<55296||f>=57344){p[p.length]=me[224|f>>12]+me[128|f>>6&63]+me[128|f&63];continue}_+=1,f=65536+((f&1023)<<10|m.charCodeAt(_)&1023),p[p.length]=me[240|f>>18]+me[128|f>>12&63]+me[128|f>>6&63]+me[128|f&63]}a+=p.join("")}return a};function mo(s){return!s||typeof s!="object"?!1:!!(s.constructor&&s.constructor.isBuffer&&s.constructor.isBuffer(s))}function ln(s,e){if(X(s)){let t=[];for(let r=0;r<s.length;r+=1)t.push(e(s[r]));return t}return e(s)}var fo={brackets(s){return String(s)+"[]"},comma:"comma",indices(s,e){return String(s)+"["+e+"]"},repeat(s){return String(s)}},_o=function(s,e){Array.prototype.push.apply(s,X(e)?e:[e])},ho,D={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:po,encodeValuesOnly:!1,format:on,formatter:an,indices:!1,serializeDate(s){return(ho??(ho=Function.prototype.call.bind(Date.prototype.toISOString)))(s)},skipNulls:!1,strictNullHandling:!1};function wi(s){return typeof s=="string"||typeof s=="number"||typeof s=="boolean"||typeof s=="symbol"||typeof s=="bigint"}var pn={};function yo(s,e,t,r,n,o,a,l,m,p,_,f,d,b,I,A,w,k){let y=s,P=k,R=0,v=!1;for(;(P=P.get(pn))!==void 0&&!v;){let T=P.get(s);if(R+=1,typeof T<"u"){if(T===R)throw new RangeError("Cyclic object value");v=!0}typeof P.get(pn)>"u"&&(R=0)}if(typeof p=="function"?y=p(e,y):y instanceof Date?y=d?.(y):t==="comma"&&X(y)&&(y=ln(y,function(T){return T instanceof Date?d?.(T):T})),y===null){if(o)return m&&!A?m(e,D.encoder,w,"key",b):e;y=""}if(wi(y)||mo(y)){if(m){let T=A?e:m(e,D.encoder,w,"key",b);return[I?.(T)+"="+I?.(m(y,D.encoder,w,"value",b))]}return[I?.(e)+"="+I?.(String(y))]}let $=[];if(typeof y>"u")return $;let L;if(t==="comma"&&X(y))A&&m&&(y=ln(y,m)),L=[{value:y.length>0?y.join(",")||null:void 0}];else if(X(p))L=p;else{let T=Object.keys(y);L=_?T.sort(_):T}let j=l?String(e).replace(/\./g,"%2E"):String(e),N=r&&X(y)&&y.length===1?j+"[]":j;if(n&&X(y)&&y.length===0)return N+"[]";for(let T=0;T<L.length;++T){let W=L[T],It=typeof W=="object"&&typeof W.value<"u"?W.value:y[W];if(a&&It===null)continue;let J=f&&l?W.replace(/\./g,"%2E"):W,fs=X(y)?typeof t=="function"?t(N,J):N:N+(f?"."+J:"["+J+"]");k.set(s,R);let _s=new WeakMap;_s.set(pn,k),_o($,yo(It,fs,t,r,n,o,a,l,t==="comma"&&A&&X(y)?null:m,p,_,f,d,b,I,A,w,_s))}return $}function Ii(s=D){if(typeof s.allowEmptyArrays<"u"&&typeof s.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof s.encodeDotInKeys<"u"&&typeof s.encodeDotInKeys!="boolean")throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(s.encoder!==null&&typeof s.encoder<"u"&&typeof s.encoder!="function")throw new TypeError("Encoder has to be a function.");let e=s.charset||D.charset;if(typeof s.charset<"u"&&s.charset!=="utf-8"&&s.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");let t=on;if(typeof s.format<"u"){if(!Is(un,s.format))throw new TypeError("Unknown format option provided.");t=s.format}let r=un[t],n=D.filter;(typeof s.filter=="function"||X(s.filter))&&(n=s.filter);let o;if(s.arrayFormat&&s.arrayFormat in fo?o=s.arrayFormat:"indices"in s?o=s.indices?"indices":"repeat":o=D.arrayFormat,"commaRoundTrip"in s&&typeof s.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");let a=typeof s.allowDots>"u"?s.encodeDotInKeys?!0:D.allowDots:!!s.allowDots;return{addQueryPrefix:typeof s.addQueryPrefix=="boolean"?s.addQueryPrefix:D.addQueryPrefix,allowDots:a,allowEmptyArrays:typeof s.allowEmptyArrays=="boolean"?!!s.allowEmptyArrays:D.allowEmptyArrays,arrayFormat:o,charset:e,charsetSentinel:typeof s.charsetSentinel=="boolean"?s.charsetSentinel:D.charsetSentinel,commaRoundTrip:!!s.commaRoundTrip,delimiter:typeof s.delimiter>"u"?D.delimiter:s.delimiter,encode:typeof s.encode=="boolean"?s.encode:D.encode,encodeDotInKeys:typeof s.encodeDotInKeys=="boolean"?s.encodeDotInKeys:D.encodeDotInKeys,encoder:typeof s.encoder=="function"?s.encoder:D.encoder,encodeValuesOnly:typeof s.encodeValuesOnly=="boolean"?s.encodeValuesOnly:D.encodeValuesOnly,filter:n,format:t,formatter:r,serializeDate:typeof s.serializeDate=="function"?s.serializeDate:D.serializeDate,skipNulls:typeof s.skipNulls=="boolean"?s.skipNulls:D.skipNulls,sort:typeof s.sort=="function"?s.sort:null,strictNullHandling:typeof s.strictNullHandling=="boolean"?s.strictNullHandling:D.strictNullHandling}}function go(s,e={}){let t=s,r=Ii(e),n,o;typeof r.filter=="function"?(o=r.filter,t=o("",t)):X(r.filter)&&(o=r.filter,n=o);let a=[];if(typeof t!="object"||t===null)return"";let l=fo[r.arrayFormat],m=l==="comma"&&r.commaRoundTrip;n||(n=Object.keys(t)),r.sort&&n.sort(r.sort);let p=new WeakMap;for(let d=0;d<n.length;++d){let b=n[d];r.skipNulls&&t[b]===null||_o(a,yo(t[b],b,l,m,r.allowEmptyArrays,r.strictNullHandling,r.skipNulls,r.encodeDotInKeys,r.encode?r.encoder:null,r.filter,r.sort,r.allowDots,r.serializeDate,r.format,r.formatter,r.encodeValuesOnly,r.charset,p))}let _=a.join(r.delimiter),f=r.addQueryPrefix===!0?"?":"";return r.charsetSentinel&&(r.charset==="iso-8859-1"?f+="utf8=%26%2310003%3B&":f+="utf8=%E2%9C%93&"),_.length>0?f+_:""}function Ao(s){return go(s,{arrayFormat:"brackets"})}function Io(s){let e=0;for(let n of s)e+=n.length;let t=new Uint8Array(e),r=0;for(let n of s)t.set(n,r),r+=n.length;return t}var bo;function ee(s){let e;return(bo??(e=new globalThis.TextEncoder,bo=e.encode.bind(e)))(s)}var wo;function dn(s){let e;return(wo??(e=new globalThis.TextDecoder,wo=e.decode.bind(e)))(s)}var te,re,Je=class{constructor(){te.set(this,void 0),re.set(this,void 0),x(this,te,new Uint8Array,"f"),x(this,re,null,"f")}decode(e){if(e==null)return[];let t=e instanceof ArrayBuffer?new Uint8Array(e):typeof e=="string"?ee(e):e;x(this,te,Io([c(this,te,"f"),t]),"f");let r=[],n;for(;(n=xi(c(this,te,"f"),c(this,re,"f")))!=null;){if(n.carriage&&c(this,re,"f")==null){x(this,re,n.index,"f");continue}if(c(this,re,"f")!=null&&(n.index!==c(this,re,"f")+1||n.carriage)){r.push(dn(c(this,te,"f").subarray(0,c(this,re,"f")-1))),x(this,te,c(this,te,"f").subarray(c(this,re,"f")),"f"),x(this,re,null,"f");continue}let o=c(this,re,"f")!==null?n.preceding-1:n.preceding,a=dn(c(this,te,"f").subarray(0,o));r.push(a),x(this,te,c(this,te,"f").subarray(n.index),"f"),x(this,re,null,"f")}return r}flush(){return c(this,te,"f").length?this.decode(`
|
|
4
|
+
import{g as Zs,h as en}from"./chunk-LVLDD2BE.js";import{b as Gs,c as Xn,d as gs,e as Gn,f as Qn,g as Yn}from"./chunk-FZPTNGTU.js";import"./chunk-7MHXMDYC.js";import{I as Jn,J as Dr,K as Qs,L as ys,M as Ys,R as Vn}from"./chunk-ISXLT3QN.js";import"./chunk-MQ5XOYLD.js";import"./chunk-X3UA5OZL.js";function x(s,e,t,r,n){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?s!==e||!n:!e.has(s))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?n.call(s,t):n?n.value=t:e.set(s,t),t}function c(s,e,t,r){if(t==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?s!==e||!r:!e.has(s))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?r:t==="a"?r.call(s):r?r.value:e.get(s)}var He=function(){let{crypto:s}=globalThis;if(s?.randomUUID)return He=s.randomUUID.bind(s),s.randomUUID();let e=new Uint8Array(1),t=s?()=>s.getRandomValues(e)[0]:()=>Math.random()*255&255;return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,r=>(+r^t()&15>>+r/4).toString(16))};function zr(s){return typeof s=="object"&&s!==null&&("name"in s&&s.name==="AbortError"||"message"in s&&String(s.message).includes("FetchRequestCanceledException"))}var qr=s=>{if(s instanceof Error)return s;if(typeof s=="object"&&s!==null){try{if(Object.prototype.toString.call(s)==="[object Error]"){let e=new Error(s.message,s.cause?{cause:s.cause}:{});return s.stack&&(e.stack=s.stack),s.cause&&!e.cause&&(e.cause=s.cause),s.name&&(e.name=s.name),e}}catch{}try{return new Error(JSON.stringify(s))}catch{}}return new Error(s)};var g=class extends Error{},F=class s extends g{constructor(e,t,r,n){super(`${s.makeMessage(e,t,r)}`),this.status=e,this.headers=n,this.requestID=n?.get("x-request-id"),this.error=t;let o=t;this.code=o?.code,this.param=o?.param,this.type=o?.type}static makeMessage(e,t,r){let n=t?.message?typeof t.message=="string"?t.message:JSON.stringify(t.message):t?JSON.stringify(t):r;return e&&n?`${e} ${n}`:e?`${e} status code (no body)`:n||"(no status code or body)"}static generate(e,t,r,n){if(!e||!n)return new Se({message:r,cause:qr(t)});let o=t?.error;return e===400?new Pt(e,o,r,n):e===401?new xt(e,o,r,n):e===403?new Rt(e,o,r,n):e===404?new St(e,o,r,n):e===409?new Ct(e,o,r,n):e===422?new kt(e,o,r,n):e===429?new $t(e,o,r,n):e>=500?new Et(e,o,r,n):new s(e,o,r,n)}},M=class extends F{constructor({message:e}={}){super(void 0,void 0,e||"Request was aborted.",void 0)}},Se=class extends F{constructor({message:e,cause:t}){super(void 0,void 0,e||"Connection error.",void 0),t&&(this.cause=t)}},Ce=class extends Se{constructor({message:e}={}){super({message:e??"Request timed out."})}},Pt=class extends F{},xt=class extends F{},Rt=class extends F{},St=class extends F{},Ct=class extends F{},kt=class extends F{},$t=class extends F{},Et=class extends F{},Ot=class extends g{constructor(){super("Could not parse response content as the length limit was reached")}},vt=class extends g{constructor(){super("Could not parse response content as the request was rejected by the content filter")}},pe=class extends Error{constructor(e){super(e)}},We=class extends F{constructor(e,t,r){let n="OAuth2 authentication error",o;if(t&&typeof t=="object"){let a=t;o=a.error;let l=a.error_description;l&&typeof l=="string"?n=l:o&&(n=o)}super(e,t,n,r),this.error_code=o}},Hr=class extends g{constructor(e,t,r){super(e),this.provider=t,this.cause=r}};var _i=/^[a-z][a-z0-9+.-]*:/i,Zn=s=>_i.test(s),X=s=>(X=Array.isArray,X(s)),tn=X;function As(s){return typeof s!="object"?{}:s??{}}function rn(s){if(!s)return!0;for(let e in s)return!1;return!0}function eo(s,e){return Object.prototype.hasOwnProperty.call(s,e)}function Wr(s){return s!=null&&typeof s=="object"&&!Array.isArray(s)}var to=(s,e)=>{if(typeof e!="number"||!Number.isInteger(e))throw new g(`${s} must be an integer`);if(e<0)throw new g(`${s} must be a positive integer`);return e};var ro=s=>{try{return JSON.parse(s)}catch{return}};var de=s=>new Promise(e=>setTimeout(e,s));var ke="6.49.0";var io=()=>typeof window<"u"&&typeof window.document<"u"&&typeof navigator<"u";function yi(){return typeof Deno<"u"&&Deno.build!=null?"deno":typeof EdgeRuntime<"u"?"edge":Object.prototype.toString.call(typeof globalThis.process<"u"?globalThis.process:0)==="[object process]"?"node":"unknown"}var gi=()=>{let s=yi();if(s==="deno")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":ke,"X-Stainless-OS":no(Deno.build.os),"X-Stainless-Arch":so(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":typeof Deno.version=="string"?Deno.version:Deno.version?.deno??"unknown"};if(typeof EdgeRuntime<"u")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":ke,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":globalThis.process.version};if(s==="node")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":ke,"X-Stainless-OS":no(globalThis.process.platform??"unknown"),"X-Stainless-Arch":so(globalThis.process.arch??"unknown"),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":globalThis.process.version??"unknown"};let e=Ai();return e?{"X-Stainless-Lang":"js","X-Stainless-Package-Version":ke,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":`browser:${e.browser}`,"X-Stainless-Runtime-Version":e.version}:{"X-Stainless-Lang":"js","X-Stainless-Package-Version":ke,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}};function Ai(){if(typeof navigator>"u"||!navigator)return null;let s=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(let{key:e,pattern:t}of s){let r=t.exec(navigator.userAgent);if(r){let n=r[1]||0,o=r[2]||0,a=r[3]||0;return{browser:e,version:`${n}.${o}.${a}`}}}return null}var so=s=>s==="x32"?"x32":s==="x86_64"||s==="x64"?"x64":s==="arm"?"arm":s==="aarch64"||s==="arm64"?"arm64":s?`other:${s}`:"unknown",no=s=>(s=s.toLowerCase(),s.includes("ios")?"iOS":s==="android"?"Android":s==="darwin"?"MacOS":s==="win32"?"Windows":s==="freebsd"?"FreeBSD":s==="openbsd"?"OpenBSD":s==="linux"?"Linux":s?`Other:${s}`:"Unknown"),oo,ao=()=>oo??(oo=gi());function bs(){if(typeof fetch<"u")return fetch;throw new Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function sn(...s){let e=globalThis.ReadableStream;if(typeof e>"u")throw new Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new e(...s)}function Jr(s){let e=Symbol.asyncIterator in s?s[Symbol.asyncIterator]():s[Symbol.iterator]();return sn({start(){},async pull(t){let{done:r,value:n}=await e.next();r?t.close():t.enqueue(n)},async cancel(){await e.return?.()}})}function ws(s){if(s[Symbol.asyncIterator])return s;let e=s.getReader();return{async next(){try{let t=await e.read();return t?.done&&e.releaseLock(),t}catch(t){throw e.releaseLock(),t}},async return(){let t=e.cancel();return e.releaseLock(),await t,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function nn(s){if(s===null||typeof s!="object")return;if(s[Symbol.asyncIterator]){await s[Symbol.asyncIterator]().return?.();return}let e=s.getReader(),t=e.cancel();e.releaseLock(),await t}var co=({headers:s,body:e})=>({bodyHeaders:{"content-type":"application/json"},body:JSON.stringify(e)});var on="RFC3986",an=s=>String(s),un={RFC1738:s=>String(s).replace(/%20/g,"+"),RFC3986:an},lo="RFC1738";var Is=(s,e)=>(Is=Object.hasOwn??Function.prototype.call.bind(Object.prototype.hasOwnProperty),Is(s,e)),me=(()=>{let s=[];for(let e=0;e<256;++e)s.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return s})();var cn=1024,po=(s,e,t,r,n)=>{if(s.length===0)return s;let o=s;if(typeof s=="symbol"?o=Symbol.prototype.toString.call(s):typeof s!="string"&&(o=String(s)),t==="iso-8859-1")return escape(o).replace(/%u[0-9a-f]{4}/gi,function(l){return"%26%23"+parseInt(l.slice(2),16)+"%3B"});let a="";for(let l=0;l<o.length;l+=cn){let m=o.length>=cn?o.slice(l,l+cn):o,p=[];for(let _=0;_<m.length;++_){let f=m.charCodeAt(_);if(f===45||f===46||f===95||f===126||f>=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||n===lo&&(f===40||f===41)){p[p.length]=m.charAt(_);continue}if(f<128){p[p.length]=me[f];continue}if(f<2048){p[p.length]=me[192|f>>6]+me[128|f&63];continue}if(f<55296||f>=57344){p[p.length]=me[224|f>>12]+me[128|f>>6&63]+me[128|f&63];continue}_+=1,f=65536+((f&1023)<<10|m.charCodeAt(_)&1023),p[p.length]=me[240|f>>18]+me[128|f>>12&63]+me[128|f>>6&63]+me[128|f&63]}a+=p.join("")}return a};function mo(s){return!s||typeof s!="object"?!1:!!(s.constructor&&s.constructor.isBuffer&&s.constructor.isBuffer(s))}function ln(s,e){if(X(s)){let t=[];for(let r=0;r<s.length;r+=1)t.push(e(s[r]));return t}return e(s)}var fo={brackets(s){return String(s)+"[]"},comma:"comma",indices(s,e){return String(s)+"["+e+"]"},repeat(s){return String(s)}},_o=function(s,e){Array.prototype.push.apply(s,X(e)?e:[e])},ho,D={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:po,encodeValuesOnly:!1,format:on,formatter:an,indices:!1,serializeDate(s){return(ho??(ho=Function.prototype.call.bind(Date.prototype.toISOString)))(s)},skipNulls:!1,strictNullHandling:!1};function wi(s){return typeof s=="string"||typeof s=="number"||typeof s=="boolean"||typeof s=="symbol"||typeof s=="bigint"}var pn={};function yo(s,e,t,r,n,o,a,l,m,p,_,f,d,b,I,A,w,k){let y=s,P=k,R=0,v=!1;for(;(P=P.get(pn))!==void 0&&!v;){let T=P.get(s);if(R+=1,typeof T<"u"){if(T===R)throw new RangeError("Cyclic object value");v=!0}typeof P.get(pn)>"u"&&(R=0)}if(typeof p=="function"?y=p(e,y):y instanceof Date?y=d?.(y):t==="comma"&&X(y)&&(y=ln(y,function(T){return T instanceof Date?d?.(T):T})),y===null){if(o)return m&&!A?m(e,D.encoder,w,"key",b):e;y=""}if(wi(y)||mo(y)){if(m){let T=A?e:m(e,D.encoder,w,"key",b);return[I?.(T)+"="+I?.(m(y,D.encoder,w,"value",b))]}return[I?.(e)+"="+I?.(String(y))]}let $=[];if(typeof y>"u")return $;let L;if(t==="comma"&&X(y))A&&m&&(y=ln(y,m)),L=[{value:y.length>0?y.join(",")||null:void 0}];else if(X(p))L=p;else{let T=Object.keys(y);L=_?T.sort(_):T}let j=l?String(e).replace(/\./g,"%2E"):String(e),N=r&&X(y)&&y.length===1?j+"[]":j;if(n&&X(y)&&y.length===0)return N+"[]";for(let T=0;T<L.length;++T){let W=L[T],It=typeof W=="object"&&typeof W.value<"u"?W.value:y[W];if(a&&It===null)continue;let J=f&&l?W.replace(/\./g,"%2E"):W,fs=X(y)?typeof t=="function"?t(N,J):N:N+(f?"."+J:"["+J+"]");k.set(s,R);let _s=new WeakMap;_s.set(pn,k),_o($,yo(It,fs,t,r,n,o,a,l,t==="comma"&&A&&X(y)?null:m,p,_,f,d,b,I,A,w,_s))}return $}function Ii(s=D){if(typeof s.allowEmptyArrays<"u"&&typeof s.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof s.encodeDotInKeys<"u"&&typeof s.encodeDotInKeys!="boolean")throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(s.encoder!==null&&typeof s.encoder<"u"&&typeof s.encoder!="function")throw new TypeError("Encoder has to be a function.");let e=s.charset||D.charset;if(typeof s.charset<"u"&&s.charset!=="utf-8"&&s.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");let t=on;if(typeof s.format<"u"){if(!Is(un,s.format))throw new TypeError("Unknown format option provided.");t=s.format}let r=un[t],n=D.filter;(typeof s.filter=="function"||X(s.filter))&&(n=s.filter);let o;if(s.arrayFormat&&s.arrayFormat in fo?o=s.arrayFormat:"indices"in s?o=s.indices?"indices":"repeat":o=D.arrayFormat,"commaRoundTrip"in s&&typeof s.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");let a=typeof s.allowDots>"u"?s.encodeDotInKeys?!0:D.allowDots:!!s.allowDots;return{addQueryPrefix:typeof s.addQueryPrefix=="boolean"?s.addQueryPrefix:D.addQueryPrefix,allowDots:a,allowEmptyArrays:typeof s.allowEmptyArrays=="boolean"?!!s.allowEmptyArrays:D.allowEmptyArrays,arrayFormat:o,charset:e,charsetSentinel:typeof s.charsetSentinel=="boolean"?s.charsetSentinel:D.charsetSentinel,commaRoundTrip:!!s.commaRoundTrip,delimiter:typeof s.delimiter>"u"?D.delimiter:s.delimiter,encode:typeof s.encode=="boolean"?s.encode:D.encode,encodeDotInKeys:typeof s.encodeDotInKeys=="boolean"?s.encodeDotInKeys:D.encodeDotInKeys,encoder:typeof s.encoder=="function"?s.encoder:D.encoder,encodeValuesOnly:typeof s.encodeValuesOnly=="boolean"?s.encodeValuesOnly:D.encodeValuesOnly,filter:n,format:t,formatter:r,serializeDate:typeof s.serializeDate=="function"?s.serializeDate:D.serializeDate,skipNulls:typeof s.skipNulls=="boolean"?s.skipNulls:D.skipNulls,sort:typeof s.sort=="function"?s.sort:null,strictNullHandling:typeof s.strictNullHandling=="boolean"?s.strictNullHandling:D.strictNullHandling}}function go(s,e={}){let t=s,r=Ii(e),n,o;typeof r.filter=="function"?(o=r.filter,t=o("",t)):X(r.filter)&&(o=r.filter,n=o);let a=[];if(typeof t!="object"||t===null)return"";let l=fo[r.arrayFormat],m=l==="comma"&&r.commaRoundTrip;n||(n=Object.keys(t)),r.sort&&n.sort(r.sort);let p=new WeakMap;for(let d=0;d<n.length;++d){let b=n[d];r.skipNulls&&t[b]===null||_o(a,yo(t[b],b,l,m,r.allowEmptyArrays,r.strictNullHandling,r.skipNulls,r.encodeDotInKeys,r.encode?r.encoder:null,r.filter,r.sort,r.allowDots,r.serializeDate,r.format,r.formatter,r.encodeValuesOnly,r.charset,p))}let _=a.join(r.delimiter),f=r.addQueryPrefix===!0?"?":"";return r.charsetSentinel&&(r.charset==="iso-8859-1"?f+="utf8=%26%2310003%3B&":f+="utf8=%E2%9C%93&"),_.length>0?f+_:""}function Ao(s){return go(s,{arrayFormat:"brackets"})}function Io(s){let e=0;for(let n of s)e+=n.length;let t=new Uint8Array(e),r=0;for(let n of s)t.set(n,r),r+=n.length;return t}var bo;function ee(s){let e;return(bo??(e=new globalThis.TextEncoder,bo=e.encode.bind(e)))(s)}var wo;function dn(s){let e;return(wo??(e=new globalThis.TextDecoder,wo=e.decode.bind(e)))(s)}var te,re,Je=class{constructor(){te.set(this,void 0),re.set(this,void 0),x(this,te,new Uint8Array,"f"),x(this,re,null,"f")}decode(e){if(e==null)return[];let t=e instanceof ArrayBuffer?new Uint8Array(e):typeof e=="string"?ee(e):e;x(this,te,Io([c(this,te,"f"),t]),"f");let r=[],n;for(;(n=xi(c(this,te,"f"),c(this,re,"f")))!=null;){if(n.carriage&&c(this,re,"f")==null){x(this,re,n.index,"f");continue}if(c(this,re,"f")!=null&&(n.index!==c(this,re,"f")+1||n.carriage)){r.push(dn(c(this,te,"f").subarray(0,c(this,re,"f")-1))),x(this,te,c(this,te,"f").subarray(c(this,re,"f")),"f"),x(this,re,null,"f");continue}let o=c(this,re,"f")!==null?n.preceding-1:n.preceding,a=dn(c(this,te,"f").subarray(0,o));r.push(a),x(this,te,c(this,te,"f").subarray(n.index),"f"),x(this,re,null,"f")}return r}flush(){return c(this,te,"f").length?this.decode(`
|
|
5
5
|
`):[]}};te=new WeakMap,re=new WeakMap;Je.NEWLINE_CHARS=new Set([`
|
|
6
6
|
`,"\r"]);Je.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function xi(s,e){for(let n=e??0;n<s.length;n++){if(s[n]===10)return{preceding:n,index:n+1,carriage:!1};if(s[n]===13)return{preceding:n,index:n+1,carriage:!0}}return null}function Po(s){for(let r=0;r<s.length-1;r++){if(s[r]===10&&s[r+1]===10||s[r]===13&&s[r+1]===13)return r+2;if(s[r]===13&&s[r+1]===10&&r+3<s.length&&s[r+2]===13&&s[r+3]===10)return r+4}return-1}var xs={off:0,error:200,warn:300,info:400,debug:500},mn=(s,e,t)=>{if(s){if(eo(xs,s))return s;K(t).warn(`${e} was set to ${JSON.stringify(s)}, expected one of ${JSON.stringify(Object.keys(xs))}`)}};function Vr(){}function Ps(s,e,t){return!e||xs[s]>xs[t]?Vr:e[s].bind(e)}var Ri={error:Vr,warn:Vr,info:Vr,debug:Vr},xo=new WeakMap;function K(s){let e=s.logger,t=s.logLevel??"off";if(!e)return Ri;let r=xo.get(e);if(r&&r[0]===t)return r[1];let n={error:Ps("error",e,t),warn:Ps("warn",e,t),info:Ps("info",e,t),debug:Ps("debug",e,t)};return xo.set(e,[t,n]),n}var ye=s=>(s.options&&(s.options={...s.options},delete s.options.headers),s.headers&&(s.headers=Object.fromEntries((s.headers instanceof Headers?[...s.headers]:Object.entries(s.headers)).map(([e,t])=>[e,e.toLowerCase()==="authorization"||e.toLowerCase()==="api-key"||e.toLowerCase()==="x-api-key"||e.toLowerCase()==="x-amz-security-token"||e.toLowerCase()==="cookie"||e.toLowerCase()==="set-cookie"?"***":t]))),"retryOfRequestLogID"in s&&(s.retryOfRequestLogID&&(s.retryOf=s.retryOfRequestLogID),delete s.retryOfRequestLogID),s);var Xr,Z=class s{constructor(e,t,r){this.iterator=e,Xr.set(this,void 0),this.controller=t,x(this,Xr,r,"f")}static fromSSEResponse(e,t,r,n){let o=!1,a=r?K(r):console;async function*l(){if(o)throw new g("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");o=!0;let m=!1;try{for await(let p of Si(e,t))if(!m){if(p.data.startsWith("[DONE]")){m=!0;continue}if(p.event===null||!p.event.startsWith("thread.")){let _;try{_=JSON.parse(p.data)}catch(f){throw a.error("Could not parse message into JSON:",p.data),a.error("From chunk:",p.raw),f}if(_&&_.error)throw new F(void 0,_.error,void 0,e.headers);yield n?{event:p.event,data:_}:_}else{let _;try{_=JSON.parse(p.data)}catch(f){throw console.error("Could not parse message into JSON:",p.data),console.error("From chunk:",p.raw),f}if(p.event=="error")throw new F(void 0,_.error,_.message,void 0);yield{event:p.event,data:_}}}m=!0}catch(p){if(zr(p))return;throw p}finally{m||t.abort()}}return new s(l,t,r)}static fromReadableStream(e,t,r){let n=!1;async function*o(){let l=new Je,m=e.getReader(),p=!1,_,f=()=>{_??(_=m.cancel()),_.catch(()=>{})};t.signal.addEventListener("abort",f,{once:!0});try{if(t.signal.aborted){f();return}for(;;){let{value:d,done:b}=await m.read();if(b){p=!0;break}if(t.signal.aborted)return;for(let I of l.decode(d)){if(t.signal.aborted)return;yield I}}if(t.signal.aborted)return;for(let d of l.flush()){if(t.signal.aborted)return;yield d}}finally{t.signal.removeEventListener("abort",f),p||f(),m.releaseLock()}}async function*a(){if(n)throw new g("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");n=!0;let l=!1;try{for await(let m of o())l||m&&(yield JSON.parse(m));l=!0}catch(m){if(t.signal.aborted||zr(m))return;throw m}finally{l||t.abort()}}return new s(a,t,r)}[(Xr=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let e=[],t=[],r=this.iterator(),n=o=>({next:()=>{if(o.length===0){let a=r.next();e.push(a),t.push(a)}return o.shift()}});return[new s(()=>n(e),this.controller,c(this,Xr,"f")),new s(()=>n(t),this.controller,c(this,Xr,"f"))]}toReadableStream(){let e=this,t;return sn({async start(){t=e[Symbol.asyncIterator]()},async pull(r){try{let{value:n,done:o}=await t.next();if(o)return r.close();let a=ee(JSON.stringify(n)+`
|
|
7
7
|
`);r.enqueue(a)}catch(n){r.error(n)}},async cancel(){await t.return?.()}})}};async function*Si(s,e){if(!s.body)throw e.abort(),typeof globalThis.navigator<"u"&&globalThis.navigator.product==="ReactNative"?new g("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api"):new g("Attempted to iterate over a response with no body");let t=new hn,r=new Je,n=ws(s.body);for await(let o of Ci(n))for(let a of r.decode(o)){let l=t.decode(a);l&&(yield l)}for(let o of r.flush()){let a=t.decode(o);a&&(yield a)}}async function*Ci(s){let e=new Uint8Array;for await(let t of s){if(t==null)continue;let r=t instanceof ArrayBuffer?new Uint8Array(t):typeof t=="string"?ee(t):t,n=new Uint8Array(e.length+r.length);n.set(e),n.set(r,e.length),e=n;let o;for(;(o=Po(e))!==-1;)yield e.slice(0,o),e=e.slice(o)}e.length>0&&(yield e)}var hn=class{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){if(e.endsWith("\r")&&(e=e.substring(0,e.length-1)),!e){if(!this.event&&!this.data.length)return null;let o={event:this.event,data:this.data.join(`
|
|
@@ -31,4 +31,4 @@ new OpenAI({ apiKey, dangerouslyAllowBrowser: true });
|
|
|
31
31
|
|
|
32
32
|
https://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety
|
|
33
33
|
`);this.baseURL=d.baseURL,this.timeout=d.timeout??Wn.DEFAULT_TIMEOUT,this.logger=d.logger??console;let b="warn";this.logLevel=b,this.logLevel=mn(d.logLevel,"ClientOptions.logLevel",this)??mn(ue("OPENAI_LOG"),"process.env['OPENAI_LOG']",this)??b,this.fetchOptions=d.fetchOptions,this.maxRetries=d.maxRetries??2,this.fetch=d.fetch??bs(),x(this,hs,co,"f");let I=t?void 0:ue("OPENAI_CUSTOM_HEADERS");if(I){let A={};for(let w of I.split(`
|
|
34
|
-
`)){let k=w.indexOf(":");k>=0&&(A[w.substring(0,k).trim()]=w.substring(k+1).trim())}d.defaultHeaders=h([A,d.defaultHeaders])}this._options=d,this._provider=f,p&&(this._workloadIdentityAuth=new Cs(p,this.fetch)),this.apiKey=typeof n=="string"?n:null,this.adminAPIKey=o,this.organization=a,this.project=l,this.webhookSecret=m}withOptions(e){let t=this._options.provider,r=e.provider??t,n={...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this._options.apiKey,adminAPIKey:this.adminAPIKey,workloadIdentity:this._options.workloadIdentity,organization:this.organization,project:this.project,webhookSecret:this.webhookSecret};return r&&(delete n.apiKey,delete n.adminAPIKey,delete n.workloadIdentity,delete n.baseURL,r!==t&&(delete n.organization,delete n.project,delete n.defaultHeaders)),new this.constructor({...n,...e,provider:r})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:e,nulls:t},r={bearerAuth:!0,adminAPIKeyAuth:!0}){if(!(e.get("authorization")||e.get("api-key"))&&!(t.has("authorization")||t.has("api-key"))&&!(this._workloadIdentityAuth&&r.bearerAuth))throw new Error('Could not resolve authentication method. Expected either apiKey or adminAPIKey to be set. Or for one of the "Authorization" or "api-key" headers to be explicitly omitted')}async authHeaders(e,t={bearerAuth:!0,adminAPIKeyAuth:!0}){return h([t.bearerAuth?await this.bearerAuth(e):null,t.adminAPIKeyAuth?await this.adminAPIKeyAuth(e):null])}async bearerAuth(e){if(this._workloadIdentityAuth)return h([{Authorization:`Bearer ${await this._workloadIdentityAuth.getToken()}`}]);if(this.apiKey!=null)return h([{Authorization:`Bearer ${this.apiKey}`}])}async adminAPIKeyAuth(e){if(this.adminAPIKey!=null)return h([{Authorization:`Bearer ${this.adminAPIKey}`}])}stringifyQuery(e){return Ao(e)}getUserAgent(){return`${this.constructor.name}/JS ${ke}`}defaultIdempotencyKey(){return`stainless-node-retry-${He()}`}makeStatusError(e,t,r,n){return F.generate(e,t,r,n)}async _callApiKey(){if(this._provider)return!1;let e=this._options.apiKey;if(typeof e!="function")return!1;let t;try{t=await e()}catch(r){throw r instanceof g?r:new g(`Failed to get token from 'apiKey' function: ${r.message}`,{cause:r})}if(typeof t!="string"||!t)throw new g(`Expected 'apiKey' function argument to return a string but it returned ${t}`);return this.apiKey=t,!0}buildURL(e,t,r){let n=!c(this,Hn,"m",pi).call(this)&&r||this.baseURL,o=Zn(e)?new URL(e):new URL(n+(n.endsWith("/")&&e.startsWith("/")?e.slice(1):e)),a=this.defaultQuery(),l=Object.fromEntries(o.searchParams);return(!rn(a)||!rn(l))&&(t={...l,...a,...t}),typeof t=="object"&&t&&!Array.isArray(t)&&(o.search=this.stringifyQuery(t)),o.toString()}async prepareOptions(e){if(this._provider)return;(e.__security??{bearerAuth:!0}).bearerAuth&&await this._callApiKey()}async prepareRequest(e,{url:t,options:r}){}get(e,t){return this.methodRequest("get",e,t)}post(e,t){return this.methodRequest("post",e,t)}patch(e,t){return this.methodRequest("patch",e,t)}put(e,t){return this.methodRequest("put",e,t)}delete(e,t){return this.methodRequest("delete",e,t)}methodRequest(e,t,r){return this.request(Promise.resolve(r).then(n=>({method:e,path:t,...n})))}request(e,t=null){return new Ve(this,this.makeRequest(e,t,void 0))}async makeRequest(e,t,r){let n=await e,o=n.maxRetries??this.maxRetries;t==null&&(t=o),await this.prepareOptions(n);let{req:a,url:l,timeout:m}=await this.buildRequest(n,{retryCount:o-t}),p=n.__metadata?.hasStreamingBody===!0;await this.prepareRequest(a,{url:l,options:n}),await this._provider?.prepareRequest?.(a,{url:l,options:n});let _="log_"+(Math.random()*(1<<24)|0).toString(16).padStart(6,"0"),f=r===void 0?"":`, retryOf: ${r}`,d=Date.now();if(K(this).debug(`[${_}] sending request`,ye({retryOfRequestLogID:r,method:n.method,url:l,options:n,headers:a.headers})),n.signal?.aborted)throw new M;let b=n.__security??{bearerAuth:!0},I=new AbortController,A=await this.fetchWithAuth(l,a,m,I,b).catch(qr),w=Date.now();if(A instanceof globalThis.Error){let P=`retrying, ${t} attempts remaining`;if(n.signal?.aborted)throw new M;let R=zr(A)||/timed? ?out/i.test(String(A)+("cause"in A?String(A.cause):""));if(t&&!p)return K(this).info(`[${_}] connection ${R?"timed out":"failed"} - ${P}`),K(this).debug(`[${_}] connection ${R?"timed out":"failed"} (${P})`,ye({retryOfRequestLogID:r,url:l,durationMs:w-d,message:A.message})),this.retryRequest(n,t,r??_);let v=p?"error; streaming body cannot be retried":"error; no more retries left";throw K(this).info(`[${_}] connection ${R?"timed out":"failed"} - ${v}`),K(this).debug(`[${_}] connection ${R?"timed out":"failed"} (${v})`,ye({retryOfRequestLogID:r,url:l,durationMs:w-d,message:A.message})),A instanceof We||A instanceof Hr?A:R?new Ce:new Se({message:ku(A),cause:A})}let k=[...A.headers.entries()].filter(([P])=>P==="x-request-id").map(([P,R])=>", "+P+": "+JSON.stringify(R)).join(""),y=`[${_}${f}${k}] ${a.method} ${l} ${A.ok?"succeeded":"failed"} with status ${A.status} in ${w-d}ms`;if(!A.ok){if(A.status===401&&this._workloadIdentityAuth&&b.bearerAuth&&!n.__metadata?.hasStreamingBody&&!n.__metadata?.workloadIdentityTokenRefreshed)return await nn(A.body),this._workloadIdentityAuth.invalidateToken(),this.makeRequest({...n,__metadata:{...n.__metadata,workloadIdentityTokenRefreshed:!0}},t,r??_);let P=await this.shouldRetry(A);if(t&&P&&!p){let N=`retrying, ${t} attempts remaining`;return await nn(A.body),K(this).info(`${y} - ${N}`),K(this).debug(`[${_}] response error (${N})`,ye({retryOfRequestLogID:r,url:A.url,status:A.status,headers:A.headers,durationMs:w-d})),this.retryRequest(n,t,r??_,A.headers)}let R=P?p?"error; streaming body cannot be retried":"error; no more retries left":"error; not retryable";K(this).info(`${y} - ${R}`);let v=await A.text().catch(N=>qr(N).message),$=ro(v),L=$?void 0:v;throw K(this).debug(`[${_}] response error (${R})`,ye({retryOfRequestLogID:r,url:A.url,status:A.status,headers:A.headers,message:L,durationMs:Date.now()-d})),this.makeStatusError(A.status,$,L,A.headers)}return K(this).info(y),K(this).debug(`[${_}] response start`,ye({retryOfRequestLogID:r,url:A.url,status:A.status,headers:A.headers,durationMs:w-d})),{response:A,options:n,controller:I,requestLogID:_,retryOfRequestLogID:r,startTime:d}}getAPIList(e,t,r){return this.requestAPIList(t,r&&"then"in r?r.then(n=>({method:"get",path:e,...n})):{method:"get",path:e,...r})}requestAPIList(e,t){let r=this.makeRequest(t,null,void 0);return new Qr(this,r,e)}async fetchWithAuth(e,t,r,n,o={bearerAuth:!0,adminAPIKeyAuth:!0}){if(this._workloadIdentityAuth&&o.bearerAuth){let l=t.headers,m=l.get("Authorization");if(!m||m===`Bearer ${Cu}`){let p=await this._workloadIdentityAuth.getToken();l.set("Authorization",`Bearer ${p}`)}}return await this.fetchWithTimeout(e,t,r,n)}async fetchWithTimeout(e,t,r,n){let{signal:o,method:a,...l}=t||{},m=this._makeAbort(n);o&&o.addEventListener("abort",m,{once:!0});let p=setTimeout(m,r),_=globalThis.ReadableStream&&l.body instanceof globalThis.ReadableStream||typeof l.body=="object"&&l.body!==null&&Symbol.asyncIterator in l.body,f={signal:n.signal,..._?{duplex:"half"}:{},method:"GET",...l};a&&(f.method=a.toUpperCase());try{return await this.fetch.call(void 0,e,f)}finally{clearTimeout(p)}}async shouldRetry(e){let t=e.headers.get("x-should-retry");return t==="true"?!0:t==="false"?!1:e.status===408||e.status===409||e.status===429||e.status>=500}async retryRequest(e,t,r,n){let o,a=n?.get("retry-after-ms");if(a){let m=parseFloat(a);Number.isNaN(m)||(o=m)}let l=n?.get("retry-after");if(l&&!o){let m=parseFloat(l);Number.isNaN(m)?o=Date.parse(l)-Date.now():o=m*1e3}if(o===void 0){let m=e.maxRetries??this.maxRetries;o=this.calculateDefaultRetryTimeoutMillis(t,m)}return await de(o),this.makeRequest(e,t-1,r)}calculateDefaultRetryTimeoutMillis(e,t){let o=t-e,a=Math.min(.5*Math.pow(2,o),8),l=1-Math.random()*.25;return a*l*1e3}async buildRequest(e,{retryCount:t=0}={}){let r={...e},{method:n,path:o,query:a,defaultBaseURL:l}=r,m=this.buildURL(o,a,l);"timeout"in r&&to("timeout",r.timeout),r.timeout=r.timeout??this.timeout;let{bodyHeaders:p,body:_,isStreamingBody:f}=this.buildBody({options:r});f&&(e.__metadata={...e.__metadata,hasStreamingBody:!0});let d=await this.buildHeaders({options:e,method:n,bodyHeaders:p,retryCount:t});return{req:{method:n,headers:d,...r.signal&&{signal:r.signal},...globalThis.ReadableStream&&_ instanceof globalThis.ReadableStream&&{duplex:"half"},..._&&{body:_},...this.fetchOptions??{},...r.fetchOptions??{}},url:m,timeout:r.timeout}}async buildHeaders({options:e,method:t,bodyHeaders:r,retryCount:n}){let o={};this.idempotencyHeader&&t!=="get"&&(e.idempotencyKey||(e.idempotencyKey=this.defaultIdempotencyKey()),o[this.idempotencyHeader]=e.idempotencyKey);let a=h([o,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(n),...e.timeout?{"X-Stainless-Timeout":String(Math.trunc(e.timeout/1e3))}:{},...ao(),"OpenAI-Organization":this.organization,"OpenAI-Project":this.project},this._provider?void 0:await this.authHeaders(e,e.__security??{bearerAuth:!0}),this._options.defaultHeaders,r,e.headers]);return this._provider||this.validateHeaders(a,e.__security??{bearerAuth:!0}),a.values}_makeAbort(e){return()=>e.abort()}buildBody({options:e}){let{body:t,headers:r}=e;if(!t)return t===void 0&&"body"in e?{...c(this,hs,"f").call(this,{body:t,headers:h([r])}),isStreamingBody:!1}:{bodyHeaders:void 0,body:void 0,isStreamingBody:!1};let n=h([r]),o=typeof globalThis.ReadableStream<"u"&&t instanceof globalThis.ReadableStream,a=!o&&(typeof t=="string"||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||typeof globalThis.Blob<"u"&&t instanceof globalThis.Blob||t instanceof URLSearchParams||t instanceof FormData);return ArrayBuffer.isView(t)||t instanceof ArrayBuffer||t instanceof DataView||typeof t=="string"&&n.values.has("content-type")||globalThis.Blob&&t instanceof globalThis.Blob||t instanceof FormData||t instanceof URLSearchParams||o?{bodyHeaders:void 0,body:t,isStreamingBody:!a}:typeof t=="object"&&(Symbol.asyncIterator in t||Symbol.iterator in t&&"next"in t&&typeof t.next=="function")?{bodyHeaders:void 0,body:Jr(t),isStreamingBody:!0}:typeof t=="object"&&n.values.get("content-type")==="application/x-www-form-urlencoded"?{bodyHeaders:{"content-type":"application/x-www-form-urlencoded"},body:this.stringifyQuery(t),isStreamingBody:!1}:{...c(this,hs,"f").call(this,{body:t,headers:n}),isStreamingBody:!1}}};Wn=S,hs=new WeakMap,Hn=new WeakSet,pi=function(){return this._provider!==void 0||this.baseURL!=="https://api.openai.com/v1"};S.OpenAI=Wn;S.DEFAULT_TIMEOUT=6e5;S.OpenAIError=g;S.APIError=F;S.APIConnectionError=Se;S.APIConnectionTimeoutError=Ce;S.APIUserAbortError=M;S.NotFoundError=St;S.ConflictError=Ct;S.RateLimitError=$t;S.BadRequestError=Pt;S.AuthenticationError=xt;S.InternalServerError=Et;S.PermissionDeniedError=Rt;S.UnprocessableEntityError=kt;S.InvalidWebhookSignatureError=pe;S.toFile=Os;S.toStreamingFile=$s;S.Completions=at;S.Chat=ve;S.Embeddings=ct;S.Files=pt;S.Images=ft;S.Audio=he;S.Moderations=yt;S.Models=_t;S.FineTuning=le;S.Graders=De;S.VectorStores=Re;S.Webhooks=wt;S.Beta=oe;S.Batches=rt;S.Uploads=qe;S.Admin=je;S.Responses=_e;S.Realtime=Pe;S.Conversations=Ue;S.Evals=Be;S.Containers=Ke;S.Skills=xe;S.Videos=bt;function ku(s){if($u(s))return"Connection error. This may be caused by passing an undici dispatcher, such as ProxyAgent, that is incompatible with the fetch implementation. If you are using undici's ProxyAgent, pass the fetch implementation from the same undici package: import { fetch, ProxyAgent } from 'undici'; new OpenAI({ fetch, fetchOptions: { dispatcher: new ProxyAgent(...) } });"}function $u(s){let e=s;for(let t=0;t<8&&e&&typeof e=="object";t++){let r=e;if(r.code==="UND_ERR_INVALID_ARG"&&typeof r.message=="string"&&r.message.includes("invalid onRequestStart method"))return!0;e=r.cause}return!1}var Vs=Jn({module:"llm"});var di=class{client;model;systemPrompt;maxOutputTokens;constructor(e,t){let r=en(e);if(!r)throw new gs("OpenAI API key not found, set OPENAI_API_KEY in .swifty/config.y(a)ml, or via OPENAI_API_KEY env variable.");this.client=new S({apiKey:r,baseURL:e.base_url}),this.model=e.model,this.systemPrompt=t,this.maxOutputTokens=Zs(e)}async*stream(e,t,r){let n=Eu(Ys(e.getMessages())),o=[];o.push({role:"system",content:this.systemPrompt});for(let d of n)o.push(d);let a=t.map(d=>{let b=d.input_schema;return{type:"function",name:d.name,description:d.description,parameters:b,strict:!1}}),l={model:this.model,input:o,stream:!0,max_output_tokens:this.maxOutputTokens,...a.length>0?{tools:a}:{}},m=0,p=0,_=0,f=0;try{let d=await this.client.responses.create(l,{...r?{signal:r}:{}}),b="",I="",A="",w="",k="";for await(let y of d)if(y.type==="response.output_text.delta")yield{type:"text_delta",text:y.delta};else if(y.type==="response.reasoning_summary_text.delta")k+=y.delta,yield{type:"thinking_delta",text:y.delta};else if(y.type==="response.reasoning_summary_text.done")yield{type:"thinking_complete",thinking:k,signature:w};else if(y.type==="response.function_call_arguments.delta")A+=y.delta,yield{type:"tool_call_delta",text:y.delta};else if(y.type==="response.output_item.added")y.item.type==="function_call"?(b=y.item.name,I=y.item.call_id,A="",yield{type:"tool_call_start",toolName:b,toolId:I}):y.item.type==="reasoning"&&(w=y.item.id??"",k="");else if(y.type==="response.output_item.done"){if(y.item.type==="function_call"&&b){let P={};if(A)try{let R=JSON.parse(A);P=Gs(R)?ys(R):{[Dr]:A}}catch(R){Vs.error({err:R},"llm operation failed"),P={[Dr]:A}}yield{type:"tool_call_complete",toolId:I,toolName:b,arguments:P},b="",I="",A=""}}else if(y.type==="response.completed"){let P=y.response.usage;P&&(p=P.output_tokens,_=P.input_tokens_details.cached_tokens,m=Math.max(0,P.input_tokens-_));let R="end_turn",v=y.response;v.status==="incomplete"&&v.incomplete_details?.reason==="max_output_tokens"&&(R="max_tokens"),yield{type:"stream_end",stopReason:R,usage:{inputTokens:m,outputTokens:p,cacheReadInputTokens:_,cacheCreationInputTokens:f}}}}catch(d){throw Vs.error({err:d},"llm operation failed"),hi(d)}}setSystemPrompt(e){this.systemPrompt=e}setMaxOutputTokens(e){this.maxOutputTokens=e}};function Xs(s){return`data:${s.mediaType};base64,${s.data}`}function Eu(s){let e=[];for(let t of s){if(t.thinkingBlocks)for(let r of t.thinkingBlocks)e.push({type:"reasoning",id:r.signature,summary:[{type:"summary_text",text:r.thinking}]});if(t.toolUses&&t.toolUses.length>0){t.content&&e.push({role:"assistant",content:t.content});for(let r of t.toolUses)e.push({type:"function_call",name:r.toolName,call_id:r.toolUseId,arguments:JSON.stringify(r.arguments)})}else if(t.toolResults&&t.toolResults.length>0){let r=[];for(let n of t.toolResults)if(e.push({type:"function_call_output",call_id:n.toolUseId,output:n.content}),n.images?.length){r.push({type:"input_text",text:`[Image(s) returned by tool call ${n.toolUseId}]`});for(let o of n.images)r.push({type:"input_image",image_url:Xs(o),detail:"auto"})}r.length>0&&e.push({role:"user",content:r})}else t.role==="user"&&t.images?.length?e.push({role:"user",content:[{type:"input_text",text:t.content},...t.images.map(r=>({type:"input_image",image_url:Xs(r),detail:"auto"}))]}):e.push({role:t.role,content:t.content})}return e}function Ou(s){return/context_length_exceeded/i.test(s)||/maximum\scontext\slength/i.test(s)||/prompts?\s+too\s+long/i.test(s)}function TA(s){let e=[];for(let t of s)if(t.toolUses&&t.toolUses.length>0)e.push({role:"assistant",content:t.content||null,tool_calls:t.toolUses.map(r=>({id:r.toolUseId,type:"function",function:{name:r.toolName,arguments:JSON.stringify(r.arguments)}}))});else if(t.toolResults&&t.toolResults.length>0)for(let r of t.toolResults)e.push({role:"tool",tool_call_id:r.toolUseId,content:r.content});else t.role==="assistant"?e.push({role:"assistant",content:t.content}):e.push({role:t.role==="system"?"system":"user",content:t.content});return e}var mi=class{client;model;systemPrompt;maxOutputTokens;constructor(e,t){let r=en(e);if(!r)throw new gs("OpenAI API key not found. Set OPENAI_API_KEY in .swifty/config.y(a)ml, or via OPENAI_API_KEY env variable.");this.client=new S({apiKey:r,baseURL:e.base_url}),this.model=e.model,this.systemPrompt=t,this.maxOutputTokens=Zs(e)}setSystemPrompt(e){this.systemPrompt=e}setMaxOutputTokens(e){this.maxOutputTokens=e}async*stream(e,t,r){let n=[{role:"system",content:this.systemPrompt},...vu(Ys(e.getMessages()))],o=t.map(f=>({type:"function",function:{name:f.name,description:f.description,arguments:f.input_schema}})),a={model:this.model,messages:n,stream:!0,stream_options:{include_usage:!0},max_tokens:this.maxOutputTokens,...o.length>0?{tools:o}:{}},l=0,m=0,p=0,_=0;try{let f=await this.client.chat.completions.create(a,{...r?{signal:r}:{}}),d=new Map,b=null,I="";for await(let w of f){if(w.usage&&(m=w.usage.completion_tokens??0,p=w.usage.prompt_tokens_details?.cached_tokens??0,l=Math.max(0,(w.usage.prompt_tokens??0)-p)),w.choices.length===0)continue;let k=w.choices[0].delta;k.content&&(yield{type:"text_delta",text:k.content});let y=Vn(ys(k),"reasoning_content");if(y&&(I+=y,yield{type:"thinking_delta",text:y}),k.tool_calls)for(let P of k.tool_calls){d.has(P.index)||(d.set(P.index,{id:P.id??"",name:P.function?.name??"",args:""}),P.id&&(yield{type:"tool_call_start",toolName:P.function?.name??"",toolId:P.id??""}));let R=d.get(P.index);R&&(P.id&&(R.id=P.id),P.function?.name&&(R.name=P.function.name),P.function?.arguments&&(R.args+=P.function.arguments,yield{type:"tool_call_delta",text:P.function.arguments}))}if(w.choices[0].finish_reason){b=w.choices[0].finish_reason,I&&(yield{type:"thinking_complete",thinking:I,signature:""},I="");for(let P of d.values()){let R={},v=P.args;if(v){try{let $=JSON.parse(v);R=Gs($)?ys($):{[Dr]:v}}catch($){Vs.error({err:$},"llm operation failed"),R={[Dr]:v}}yield{type:"tool_call_complete",toolName:P.name,toolId:P.id,arguments:R}}}}}let A;b==="length"?A="max_tokens":b==="tool_calls"||d.size>0?A="tool_use":A="end_turn",yield{type:"stream_end",stopReason:A,usage:{inputTokens:l,outputTokens:m,cacheReadInputTokens:p,cacheCreationInputTokens:_}}}catch(f){throw Vs.error({err:f},"llm operation failed"),hi(f)}}};function hi(s){return s instanceof S.APIError?s.status===413||s.status===400&&Ou(s.message)?new Yn(`Context Too Long: ${s.message}`):s.status===401?new gs(`Invalid API key: ${s.message}`):s.status===429?new Gn("Rate limit error, please wait."):new Xn(`OpenAI API error (${Qs(s.status)}): ${s.message}`):new Qn(`Network error: ${s instanceof Error?s.message:Qs(s)}`)}function vu(s){let e=[];for(let t of s){let r=t.thinkingBlocks?.map(n=>n.thinking).join("")??"";if(t.toolUses&&t.toolUses.length>0)e.push({role:"assistant",content:t.content||null,tool_calls:t.toolUses.map(n=>({id:n.toolUseId,type:"function",function:{name:n.toolName,arguments:JSON.stringify(n.arguments)},...r?{reasoning_content:r}:{}}))});else if(t.toolResults&&t.toolResults.length>0){let n=[];for(let o of t.toolResults)if(e.push({role:"tool",tool_call_id:o.toolUseId,content:o.content}),o.images?.length){n.push({type:"text",text:`[Image(s) returned by tool call ${o.toolUseId}]`});for(let a of o.images)n.push({type:"image_url",image_url:{url:Xs(a)}})}n.length>0&&e.push({role:"user",content:n})}else t.role==="assistant"?e.push({role:"assistant",content:t.content,...r?{reasoning_content:r}:{}}):t.role==="user"&&t.images?.length?e.push({role:"user",content:[{type:"text",text:t.content},...t.images.map(n=>({type:"image_url",image_url:{url:Xs(n)}}))]}):e.push({role:t.role==="system"?"system":"user",content:t.content})}return e}export{di as OpenAIClient,mi as OpenAICompatClient,TA as buildChatCompletionMessage,vu as buildChatCompletionMessages,Eu as buildOpenAIInput};
|
|
34
|
+
`)){let k=w.indexOf(":");k>=0&&(A[w.substring(0,k).trim()]=w.substring(k+1).trim())}d.defaultHeaders=h([A,d.defaultHeaders])}this._options=d,this._provider=f,p&&(this._workloadIdentityAuth=new Cs(p,this.fetch)),this.apiKey=typeof n=="string"?n:null,this.adminAPIKey=o,this.organization=a,this.project=l,this.webhookSecret=m}withOptions(e){let t=this._options.provider,r=e.provider??t,n={...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this._options.apiKey,adminAPIKey:this.adminAPIKey,workloadIdentity:this._options.workloadIdentity,organization:this.organization,project:this.project,webhookSecret:this.webhookSecret};return r&&(delete n.apiKey,delete n.adminAPIKey,delete n.workloadIdentity,delete n.baseURL,r!==t&&(delete n.organization,delete n.project,delete n.defaultHeaders)),new this.constructor({...n,...e,provider:r})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:e,nulls:t},r={bearerAuth:!0,adminAPIKeyAuth:!0}){if(!(e.get("authorization")||e.get("api-key"))&&!(t.has("authorization")||t.has("api-key"))&&!(this._workloadIdentityAuth&&r.bearerAuth))throw new Error('Could not resolve authentication method. Expected either apiKey or adminAPIKey to be set. Or for one of the "Authorization" or "api-key" headers to be explicitly omitted')}async authHeaders(e,t={bearerAuth:!0,adminAPIKeyAuth:!0}){return h([t.bearerAuth?await this.bearerAuth(e):null,t.adminAPIKeyAuth?await this.adminAPIKeyAuth(e):null])}async bearerAuth(e){if(this._workloadIdentityAuth)return h([{Authorization:`Bearer ${await this._workloadIdentityAuth.getToken()}`}]);if(this.apiKey!=null)return h([{Authorization:`Bearer ${this.apiKey}`}])}async adminAPIKeyAuth(e){if(this.adminAPIKey!=null)return h([{Authorization:`Bearer ${this.adminAPIKey}`}])}stringifyQuery(e){return Ao(e)}getUserAgent(){return`${this.constructor.name}/JS ${ke}`}defaultIdempotencyKey(){return`stainless-node-retry-${He()}`}makeStatusError(e,t,r,n){return F.generate(e,t,r,n)}async _callApiKey(){if(this._provider)return!1;let e=this._options.apiKey;if(typeof e!="function")return!1;let t;try{t=await e()}catch(r){throw r instanceof g?r:new g(`Failed to get token from 'apiKey' function: ${r.message}`,{cause:r})}if(typeof t!="string"||!t)throw new g(`Expected 'apiKey' function argument to return a string but it returned ${t}`);return this.apiKey=t,!0}buildURL(e,t,r){let n=!c(this,Hn,"m",pi).call(this)&&r||this.baseURL,o=Zn(e)?new URL(e):new URL(n+(n.endsWith("/")&&e.startsWith("/")?e.slice(1):e)),a=this.defaultQuery(),l=Object.fromEntries(o.searchParams);return(!rn(a)||!rn(l))&&(t={...l,...a,...t}),typeof t=="object"&&t&&!Array.isArray(t)&&(o.search=this.stringifyQuery(t)),o.toString()}async prepareOptions(e){if(this._provider)return;(e.__security??{bearerAuth:!0}).bearerAuth&&await this._callApiKey()}async prepareRequest(e,{url:t,options:r}){}get(e,t){return this.methodRequest("get",e,t)}post(e,t){return this.methodRequest("post",e,t)}patch(e,t){return this.methodRequest("patch",e,t)}put(e,t){return this.methodRequest("put",e,t)}delete(e,t){return this.methodRequest("delete",e,t)}methodRequest(e,t,r){return this.request(Promise.resolve(r).then(n=>({method:e,path:t,...n})))}request(e,t=null){return new Ve(this,this.makeRequest(e,t,void 0))}async makeRequest(e,t,r){let n=await e,o=n.maxRetries??this.maxRetries;t==null&&(t=o),await this.prepareOptions(n);let{req:a,url:l,timeout:m}=await this.buildRequest(n,{retryCount:o-t}),p=n.__metadata?.hasStreamingBody===!0;await this.prepareRequest(a,{url:l,options:n}),await this._provider?.prepareRequest?.(a,{url:l,options:n});let _="log_"+(Math.random()*(1<<24)|0).toString(16).padStart(6,"0"),f=r===void 0?"":`, retryOf: ${r}`,d=Date.now();if(K(this).debug(`[${_}] sending request`,ye({retryOfRequestLogID:r,method:n.method,url:l,options:n,headers:a.headers})),n.signal?.aborted)throw new M;let b=n.__security??{bearerAuth:!0},I=new AbortController,A=await this.fetchWithAuth(l,a,m,I,b).catch(qr),w=Date.now();if(A instanceof globalThis.Error){let P=`retrying, ${t} attempts remaining`;if(n.signal?.aborted)throw new M;let R=zr(A)||/timed? ?out/i.test(String(A)+("cause"in A?String(A.cause):""));if(t&&!p)return K(this).info(`[${_}] connection ${R?"timed out":"failed"} - ${P}`),K(this).debug(`[${_}] connection ${R?"timed out":"failed"} (${P})`,ye({retryOfRequestLogID:r,url:l,durationMs:w-d,message:A.message})),this.retryRequest(n,t,r??_);let v=p?"error; streaming body cannot be retried":"error; no more retries left";throw K(this).info(`[${_}] connection ${R?"timed out":"failed"} - ${v}`),K(this).debug(`[${_}] connection ${R?"timed out":"failed"} (${v})`,ye({retryOfRequestLogID:r,url:l,durationMs:w-d,message:A.message})),A instanceof We||A instanceof Hr?A:R?new Ce:new Se({message:ku(A),cause:A})}let k=[...A.headers.entries()].filter(([P])=>P==="x-request-id").map(([P,R])=>", "+P+": "+JSON.stringify(R)).join(""),y=`[${_}${f}${k}] ${a.method} ${l} ${A.ok?"succeeded":"failed"} with status ${A.status} in ${w-d}ms`;if(!A.ok){if(A.status===401&&this._workloadIdentityAuth&&b.bearerAuth&&!n.__metadata?.hasStreamingBody&&!n.__metadata?.workloadIdentityTokenRefreshed)return await nn(A.body),this._workloadIdentityAuth.invalidateToken(),this.makeRequest({...n,__metadata:{...n.__metadata,workloadIdentityTokenRefreshed:!0}},t,r??_);let P=await this.shouldRetry(A);if(t&&P&&!p){let N=`retrying, ${t} attempts remaining`;return await nn(A.body),K(this).info(`${y} - ${N}`),K(this).debug(`[${_}] response error (${N})`,ye({retryOfRequestLogID:r,url:A.url,status:A.status,headers:A.headers,durationMs:w-d})),this.retryRequest(n,t,r??_,A.headers)}let R=P?p?"error; streaming body cannot be retried":"error; no more retries left":"error; not retryable";K(this).info(`${y} - ${R}`);let v=await A.text().catch(N=>qr(N).message),$=ro(v),L=$?void 0:v;throw K(this).debug(`[${_}] response error (${R})`,ye({retryOfRequestLogID:r,url:A.url,status:A.status,headers:A.headers,message:L,durationMs:Date.now()-d})),this.makeStatusError(A.status,$,L,A.headers)}return K(this).info(y),K(this).debug(`[${_}] response start`,ye({retryOfRequestLogID:r,url:A.url,status:A.status,headers:A.headers,durationMs:w-d})),{response:A,options:n,controller:I,requestLogID:_,retryOfRequestLogID:r,startTime:d}}getAPIList(e,t,r){return this.requestAPIList(t,r&&"then"in r?r.then(n=>({method:"get",path:e,...n})):{method:"get",path:e,...r})}requestAPIList(e,t){let r=this.makeRequest(t,null,void 0);return new Qr(this,r,e)}async fetchWithAuth(e,t,r,n,o={bearerAuth:!0,adminAPIKeyAuth:!0}){if(this._workloadIdentityAuth&&o.bearerAuth){let l=t.headers,m=l.get("Authorization");if(!m||m===`Bearer ${Cu}`){let p=await this._workloadIdentityAuth.getToken();l.set("Authorization",`Bearer ${p}`)}}return await this.fetchWithTimeout(e,t,r,n)}async fetchWithTimeout(e,t,r,n){let{signal:o,method:a,...l}=t||{},m=this._makeAbort(n);o&&o.addEventListener("abort",m,{once:!0});let p=setTimeout(m,r),_=globalThis.ReadableStream&&l.body instanceof globalThis.ReadableStream||typeof l.body=="object"&&l.body!==null&&Symbol.asyncIterator in l.body,f={signal:n.signal,..._?{duplex:"half"}:{},method:"GET",...l};a&&(f.method=a.toUpperCase());try{return await this.fetch.call(void 0,e,f)}finally{clearTimeout(p)}}async shouldRetry(e){let t=e.headers.get("x-should-retry");return t==="true"?!0:t==="false"?!1:e.status===408||e.status===409||e.status===429||e.status>=500}async retryRequest(e,t,r,n){let o,a=n?.get("retry-after-ms");if(a){let m=parseFloat(a);Number.isNaN(m)||(o=m)}let l=n?.get("retry-after");if(l&&!o){let m=parseFloat(l);Number.isNaN(m)?o=Date.parse(l)-Date.now():o=m*1e3}if(o===void 0){let m=e.maxRetries??this.maxRetries;o=this.calculateDefaultRetryTimeoutMillis(t,m)}return await de(o),this.makeRequest(e,t-1,r)}calculateDefaultRetryTimeoutMillis(e,t){let o=t-e,a=Math.min(.5*Math.pow(2,o),8),l=1-Math.random()*.25;return a*l*1e3}async buildRequest(e,{retryCount:t=0}={}){let r={...e},{method:n,path:o,query:a,defaultBaseURL:l}=r,m=this.buildURL(o,a,l);"timeout"in r&&to("timeout",r.timeout),r.timeout=r.timeout??this.timeout;let{bodyHeaders:p,body:_,isStreamingBody:f}=this.buildBody({options:r});f&&(e.__metadata={...e.__metadata,hasStreamingBody:!0});let d=await this.buildHeaders({options:e,method:n,bodyHeaders:p,retryCount:t});return{req:{method:n,headers:d,...r.signal&&{signal:r.signal},...globalThis.ReadableStream&&_ instanceof globalThis.ReadableStream&&{duplex:"half"},..._&&{body:_},...this.fetchOptions??{},...r.fetchOptions??{}},url:m,timeout:r.timeout}}async buildHeaders({options:e,method:t,bodyHeaders:r,retryCount:n}){let o={};this.idempotencyHeader&&t!=="get"&&(e.idempotencyKey||(e.idempotencyKey=this.defaultIdempotencyKey()),o[this.idempotencyHeader]=e.idempotencyKey);let a=h([o,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(n),...e.timeout?{"X-Stainless-Timeout":String(Math.trunc(e.timeout/1e3))}:{},...ao(),"OpenAI-Organization":this.organization,"OpenAI-Project":this.project},this._provider?void 0:await this.authHeaders(e,e.__security??{bearerAuth:!0}),this._options.defaultHeaders,r,e.headers]);return this._provider||this.validateHeaders(a,e.__security??{bearerAuth:!0}),a.values}_makeAbort(e){return()=>e.abort()}buildBody({options:e}){let{body:t,headers:r}=e;if(!t)return t===void 0&&"body"in e?{...c(this,hs,"f").call(this,{body:t,headers:h([r])}),isStreamingBody:!1}:{bodyHeaders:void 0,body:void 0,isStreamingBody:!1};let n=h([r]),o=typeof globalThis.ReadableStream<"u"&&t instanceof globalThis.ReadableStream,a=!o&&(typeof t=="string"||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||typeof globalThis.Blob<"u"&&t instanceof globalThis.Blob||t instanceof URLSearchParams||t instanceof FormData);return ArrayBuffer.isView(t)||t instanceof ArrayBuffer||t instanceof DataView||typeof t=="string"&&n.values.has("content-type")||globalThis.Blob&&t instanceof globalThis.Blob||t instanceof FormData||t instanceof URLSearchParams||o?{bodyHeaders:void 0,body:t,isStreamingBody:!a}:typeof t=="object"&&(Symbol.asyncIterator in t||Symbol.iterator in t&&"next"in t&&typeof t.next=="function")?{bodyHeaders:void 0,body:Jr(t),isStreamingBody:!0}:typeof t=="object"&&n.values.get("content-type")==="application/x-www-form-urlencoded"?{bodyHeaders:{"content-type":"application/x-www-form-urlencoded"},body:this.stringifyQuery(t),isStreamingBody:!1}:{...c(this,hs,"f").call(this,{body:t,headers:n}),isStreamingBody:!1}}};Wn=S,hs=new WeakMap,Hn=new WeakSet,pi=function(){return this._provider!==void 0||this.baseURL!=="https://api.openai.com/v1"};S.OpenAI=Wn;S.DEFAULT_TIMEOUT=6e5;S.OpenAIError=g;S.APIError=F;S.APIConnectionError=Se;S.APIConnectionTimeoutError=Ce;S.APIUserAbortError=M;S.NotFoundError=St;S.ConflictError=Ct;S.RateLimitError=$t;S.BadRequestError=Pt;S.AuthenticationError=xt;S.InternalServerError=Et;S.PermissionDeniedError=Rt;S.UnprocessableEntityError=kt;S.InvalidWebhookSignatureError=pe;S.toFile=Os;S.toStreamingFile=$s;S.Completions=at;S.Chat=ve;S.Embeddings=ct;S.Files=pt;S.Images=ft;S.Audio=he;S.Moderations=yt;S.Models=_t;S.FineTuning=le;S.Graders=De;S.VectorStores=Re;S.Webhooks=wt;S.Beta=oe;S.Batches=rt;S.Uploads=qe;S.Admin=je;S.Responses=_e;S.Realtime=Pe;S.Conversations=Ue;S.Evals=Be;S.Containers=Ke;S.Skills=xe;S.Videos=bt;function ku(s){if($u(s))return"Connection error. This may be caused by passing an undici dispatcher, such as ProxyAgent, that is incompatible with the fetch implementation. If you are using undici's ProxyAgent, pass the fetch implementation from the same undici package: import { fetch, ProxyAgent } from 'undici'; new OpenAI({ fetch, fetchOptions: { dispatcher: new ProxyAgent(...) } });"}function $u(s){let e=s;for(let t=0;t<8&&e&&typeof e=="object";t++){let r=e;if(r.code==="UND_ERR_INVALID_ARG"&&typeof r.message=="string"&&r.message.includes("invalid onRequestStart method"))return!0;e=r.cause}return!1}var Vs=Jn({module:"llm"});var di=class{client;model;systemPrompt;maxOutputTokens;constructor(e,t){let r=en(e);if(!r)throw new gs("OpenAI API key not found, set OPENAI_API_KEY in .swifty/config.y(a)ml, or via OPENAI_API_KEY env variable.");this.client=new S({apiKey:r,baseURL:e.base_url}),this.model=e.model,this.systemPrompt=t,this.maxOutputTokens=Zs(e)}async*stream(e,t,r){let n=Eu(Gs(e.getMessages())),o=[];o.push({role:"system",content:this.systemPrompt});for(let d of n)o.push(d);let a=t.map(d=>{let b=d.input_schema;return{type:"function",name:d.name,description:d.description,parameters:b,strict:!1}}),l={model:this.model,input:o,stream:!0,max_output_tokens:this.maxOutputTokens,...a.length>0?{tools:a}:{}},m=0,p=0,_=0,f=0;try{let d=await this.client.responses.create(l,{...r?{signal:r}:{}}),b="",I="",A="",w="",k="";for await(let y of d)if(y.type==="response.output_text.delta")yield{type:"text_delta",text:y.delta};else if(y.type==="response.reasoning_summary_text.delta")k+=y.delta,yield{type:"thinking_delta",text:y.delta};else if(y.type==="response.reasoning_summary_text.done")yield{type:"thinking_complete",thinking:k,signature:w};else if(y.type==="response.function_call_arguments.delta")A+=y.delta,yield{type:"tool_call_delta",text:y.delta};else if(y.type==="response.output_item.added")y.item.type==="function_call"?(b=y.item.name,I=y.item.call_id,A="",yield{type:"tool_call_start",toolName:b,toolId:I}):y.item.type==="reasoning"&&(w=y.item.id??"",k="");else if(y.type==="response.output_item.done"){if(y.item.type==="function_call"&&b){let P={};if(A)try{let R=JSON.parse(A);P=Qs(R)?ys(R):{[Dr]:A}}catch(R){Vs.error({err:R},"llm operation failed"),P={[Dr]:A}}yield{type:"tool_call_complete",toolId:I,toolName:b,arguments:P},b="",I="",A=""}}else if(y.type==="response.completed"){let P=y.response.usage;P&&(p=P.output_tokens,_=P.input_tokens_details.cached_tokens,m=Math.max(0,P.input_tokens-_));let R="end_turn",v=y.response;v.status==="incomplete"&&v.incomplete_details?.reason==="max_output_tokens"&&(R="max_tokens"),yield{type:"stream_end",stopReason:R,usage:{inputTokens:m,outputTokens:p,cacheReadInputTokens:_,cacheCreationInputTokens:f}}}}catch(d){throw Vs.error({err:d},"llm operation failed"),hi(d)}}setSystemPrompt(e){this.systemPrompt=e}setMaxOutputTokens(e){this.maxOutputTokens=e}};function Xs(s){return`data:${s.mediaType};base64,${s.data}`}function Eu(s){let e=[];for(let t of s){if(t.thinkingBlocks)for(let r of t.thinkingBlocks)e.push({type:"reasoning",id:r.signature,summary:[{type:"summary_text",text:r.thinking}]});if(t.toolUses&&t.toolUses.length>0){t.content&&e.push({role:"assistant",content:t.content});for(let r of t.toolUses)e.push({type:"function_call",name:r.toolName,call_id:r.toolUseId,arguments:JSON.stringify(r.arguments)})}else if(t.toolResults&&t.toolResults.length>0){let r=[];for(let n of t.toolResults)if(e.push({type:"function_call_output",call_id:n.toolUseId,output:n.content}),n.images?.length){r.push({type:"input_text",text:`[Image(s) returned by tool call ${n.toolUseId}]`});for(let o of n.images)r.push({type:"input_image",image_url:Xs(o),detail:"auto"})}r.length>0&&e.push({role:"user",content:r})}else t.role==="user"&&t.images?.length?e.push({role:"user",content:[{type:"input_text",text:t.content},...t.images.map(r=>({type:"input_image",image_url:Xs(r),detail:"auto"}))]}):e.push({role:t.role,content:t.content})}return e}function Ou(s){return/context_length_exceeded/i.test(s)||/maximum\scontext\slength/i.test(s)||/prompts?\s+too\s+long/i.test(s)}function TA(s){let e=[];for(let t of s)if(t.toolUses&&t.toolUses.length>0)e.push({role:"assistant",content:t.content||null,tool_calls:t.toolUses.map(r=>({id:r.toolUseId,type:"function",function:{name:r.toolName,arguments:JSON.stringify(r.arguments)}}))});else if(t.toolResults&&t.toolResults.length>0)for(let r of t.toolResults)e.push({role:"tool",tool_call_id:r.toolUseId,content:r.content});else t.role==="assistant"?e.push({role:"assistant",content:t.content}):e.push({role:t.role==="system"?"system":"user",content:t.content});return e}var mi=class{client;model;systemPrompt;maxOutputTokens;constructor(e,t){let r=en(e);if(!r)throw new gs("OpenAI API key not found. Set OPENAI_API_KEY in .swifty/config.y(a)ml, or via OPENAI_API_KEY env variable.");this.client=new S({apiKey:r,baseURL:e.base_url}),this.model=e.model,this.systemPrompt=t,this.maxOutputTokens=Zs(e)}setSystemPrompt(e){this.systemPrompt=e}setMaxOutputTokens(e){this.maxOutputTokens=e}async*stream(e,t,r){let n=[{role:"system",content:this.systemPrompt},...vu(Gs(e.getMessages()))],o=t.map(f=>({type:"function",function:{name:f.name,description:f.description,arguments:f.input_schema}})),a={model:this.model,messages:n,stream:!0,stream_options:{include_usage:!0},max_tokens:this.maxOutputTokens,...o.length>0?{tools:o}:{}},l=0,m=0,p=0,_=0;try{let f=await this.client.chat.completions.create(a,{...r?{signal:r}:{}}),d=new Map,b=null,I="";for await(let w of f){if(w.usage&&(m=w.usage.completion_tokens??0,p=w.usage.prompt_tokens_details?.cached_tokens??0,l=Math.max(0,(w.usage.prompt_tokens??0)-p)),w.choices.length===0)continue;let k=w.choices[0].delta;k.content&&(yield{type:"text_delta",text:k.content});let y=Vn(ys(k),"reasoning_content");if(y&&(I+=y,yield{type:"thinking_delta",text:y}),k.tool_calls)for(let P of k.tool_calls){d.has(P.index)||(d.set(P.index,{id:P.id??"",name:P.function?.name??"",args:""}),P.id&&(yield{type:"tool_call_start",toolName:P.function?.name??"",toolId:P.id??""}));let R=d.get(P.index);R&&(P.id&&(R.id=P.id),P.function?.name&&(R.name=P.function.name),P.function?.arguments&&(R.args+=P.function.arguments,yield{type:"tool_call_delta",text:P.function.arguments}))}if(w.choices[0].finish_reason){b=w.choices[0].finish_reason,I&&(yield{type:"thinking_complete",thinking:I,signature:""},I="");for(let P of d.values()){let R={},v=P.args;if(v){try{let $=JSON.parse(v);R=Qs($)?ys($):{[Dr]:v}}catch($){Vs.error({err:$},"llm operation failed"),R={[Dr]:v}}yield{type:"tool_call_complete",toolName:P.name,toolId:P.id,arguments:R}}}}}let A;b==="length"?A="max_tokens":b==="tool_calls"||d.size>0?A="tool_use":A="end_turn",yield{type:"stream_end",stopReason:A,usage:{inputTokens:l,outputTokens:m,cacheReadInputTokens:p,cacheCreationInputTokens:_}}}catch(f){throw Vs.error({err:f},"llm operation failed"),hi(f)}}};function hi(s){return s instanceof S.APIError?s.status===413||s.status===400&&Ou(s.message)?new Yn(`Context Too Long: ${s.message}`):s.status===401?new gs(`Invalid API key: ${s.message}`):s.status===429?new Gn("Rate limit error, please wait."):new Xn(`OpenAI API error (${Ys(s.status)}): ${s.message}`):new Qn(`Network error: ${s instanceof Error?s.message:Ys(s)}`)}function vu(s){let e=[];for(let t of s){let r=t.thinkingBlocks?.map(n=>n.thinking).join("")??"";if(t.toolUses&&t.toolUses.length>0)e.push({role:"assistant",content:t.content||null,tool_calls:t.toolUses.map(n=>({id:n.toolUseId,type:"function",function:{name:n.toolName,arguments:JSON.stringify(n.arguments)},...r?{reasoning_content:r}:{}}))});else if(t.toolResults&&t.toolResults.length>0){let n=[];for(let o of t.toolResults)if(e.push({role:"tool",tool_call_id:o.toolUseId,content:o.content}),o.images?.length){n.push({type:"text",text:`[Image(s) returned by tool call ${o.toolUseId}]`});for(let a of o.images)n.push({type:"image_url",image_url:{url:Xs(a)}})}n.length>0&&e.push({role:"user",content:n})}else t.role==="assistant"?e.push({role:"assistant",content:t.content,...r?{reasoning_content:r}:{}}):t.role==="user"&&t.images?.length?e.push({role:"user",content:[{type:"text",text:t.content},...t.images.map(n=>({type:"image_url",image_url:{url:Xs(n)}}))]}):e.push({role:t.role==="system"?"system":"user",content:t.content})}return e}export{di as OpenAIClient,mi as OpenAICompatClient,TA as buildChatCompletionMessage,vu as buildChatCompletionMessages,Eu as buildOpenAIInput};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __swiftyCreateRequire } from "node:module";
|
|
3
3
|
const require = __swiftyCreateRequire(import.meta.url);
|
|
4
|
-
import{
|
|
4
|
+
import{$ as ki,A as ce,B as pe,C as li,D as le,E as ue,H as me,I as ui,J as mi,K as de,N as ct,P as di,Q as xi,R as vi,T as fi,V as bi,W as gi,X as hi,Y as yi,Z as Be,_ as wi,a as Ie,aa as ji,b as He,ba as qi,c as $e,ca as Ei,da as Si,ea as Ci,fa as Ti,ga as zi,h as ei,ha as _i,ia as Pi,j as ai,ja as Ai,ka as Ri,l as ii,la as Oi,m as ni,ma as Li,n as si,o as oi,p as Ge,q as ti,r as ri,s as ci,y as pi}from"./chunk-BDSARQW3.js";import{a as re}from"./chunk-UBV5T4TV.js";import{a as Ue,b as Ha}from"./chunk-XBHVVB5A.js";import{a as Va,d as Qa,j as Y}from"./chunk-A6H62GTA.js";import{a as L,e as Ga,f as Ba,g as oe,h as De,i as Xa,j as Wa,k as te,o as Za}from"./chunk-OXEMDMZF.js";import{e as Ya,f as Ja,g as Ka}from"./chunk-LVLDD2BE.js";import"./chunk-FZPTNGTU.js";import{e as J}from"./chunk-ZSJ2I5WM.js";import"./chunk-7MHXMDYC.js";import{D as E,I as $a,R as Ne}from"./chunk-ISXLT3QN.js";import"./chunk-MQ5XOYLD.js";import{a as x,b as l,d as rt}from"./chunk-X3UA5OZL.js";var Fi=l((_l,Mi)=>{"use strict";Mi.exports=pt;function pt(e,a){if(!Array.isArray(e))throw new TypeError("arg must be an array of [ee, events...] arrays");for(var i=[],n=0;n<e.length;n++){var s=e[n];if(!Array.isArray(s)||s.length<2)throw new TypeError("each array member must be [ee, events...]");for(var o=s[0],t=1;t<s.length;t++){var r=s[t],c=lt(r,p);o.on(r,c),i.push({ee:o,event:r,fn:c})}}function p(){m(),a.apply(null,arguments)}function m(){for(var d,f=0;f<i.length;f++)d=i[f],d.ee.removeListener(d.event,d.fn)}function u(d){a=d}return u.cancel=m,u}function lt(e,a){return function(n){for(var s=new Array(arguments.length),o=this,t=e==="error"?n:null,r=0;r<s.length;r++)s[r]=arguments[r];a(t,o,e,s)}}});var We=l((Pl,Xe)=>{"use strict";Xe.exports=mt;Xe.exports.isFinished=Di;var Ui=bt(),Ni=Fi(),ut=typeof setImmediate=="function"?setImmediate:function(e){process.nextTick(e.bind.apply(e,arguments))};function mt(e,a){return Di(e)!==!1?(ut(a,null,e),e):(xt(e,gt(a)),e)}function Di(e){var a=e.socket;if(typeof e.finished=="boolean")return!!(e.finished||a&&!a.writable);if(typeof e.complete=="boolean")return!!(e.upgrade||!a||!a.readable||e.complete&&!e.readable)}function dt(e,a){var i,n,s=!1;function o(r){i.cancel(),n.cancel(),s=!0,a(r)}i=n=Ni([[e,"end","finish"]],o);function t(r){e.removeListener("socket",t),!s&&i===n&&(n=Ni([[r,"error","close"]],o))}if(e.socket){t(e.socket);return}e.on("socket",t),e.socket===void 0&&ft(e,t)}function xt(e,a){var i=e.__onFinished;(!i||!i.queue)&&(i=e.__onFinished=vt(e),dt(e,i)),i.queue.push(a)}function vt(e){function a(i){if(e.__onFinished===a&&(e.__onFinished=null),!!a.queue){var n=a.queue;a.queue=null;for(var s=0;s<n.length;s++)n[s](i,e)}}return a.queue=[],a}function ft(e,a){var i=e.assignSocket;typeof i=="function"&&(e.assignSocket=function(s){i.call(this,s),a(s)})}function bt(){try{return x("async_hooks")}catch{return{}}}function gt(e){var a;return Ui.AsyncResource&&(a=new Ui.AsyncResource(e.name||"bound-anonymous-fn")),!a||!a.runInAsyncScope?e:a.runInAsyncScope.bind(a,e,null)}});var Hi=l((Al,Ii)=>{"use strict";Ii.exports=ht;function ht(e){if(!Array.isArray(e))throw new TypeError("Middleware stack must be an array!");for(let a of e)if(typeof a!="function")throw new TypeError("Middleware must be composed of functions!");return function(a,i){let n=-1;return s(0);function s(o){if(o<=n)return Promise.reject(new Error("next() called multiple times"));n=o;let t=e[o];if(o===e.length&&(t=i),!t)return Promise.resolve();try{return Promise.resolve(t(a,s.bind(null,o+1)))}catch(r){return Promise.reject(r)}}}}});var $i=l((Rl,yt)=>{yt.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a Teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Too Early","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}});var K=l((Ol,Bi)=>{"use strict";var Ze=$i();Bi.exports=_;_.message=Ze;_.code=wt(Ze);_.codes=kt(Ze);_.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0};_.empty={204:!0,205:!0,304:!0};_.retry={502:!0,503:!0,504:!0};function wt(e){var a={};return Object.keys(e).forEach(function(n){var s=e[n],o=Number(n);a[s.toLowerCase()]=o}),a}function kt(e){return Object.keys(e).map(function(i){return Number(i)})}function jt(e){var a=e.toLowerCase();if(!Object.prototype.hasOwnProperty.call(_.code,a))throw new Error('invalid status message: "'+e+'"');return _.code[a]}function Gi(e){if(!Object.prototype.hasOwnProperty.call(_.message,e))throw new Error("invalid status code: "+e);return _.message[e]}function _(e){if(typeof e=="number")return Gi(e);if(typeof e!="string")throw new TypeError("code must be a number or string");var a=parseInt(e,10);return isNaN(a)?jt(e):Gi(a)}});var Je=l((Ll,Yi)=>{"use strict";var qt=x("path").relative;Yi.exports=zt;var Et=process.cwd();function Wi(e,a){for(var i=e.split(/[ ,]+/),n=String(a).toLowerCase(),s=0;s<i.length;s++){var o=i[s];if(o&&(o==="*"||o.toLowerCase()===n))return!0}return!1}function St(e,a,i){var n=Object.getOwnPropertyDescriptor(e,a),s=n.value;return n.get=function(){return s},n.writable&&(n.set=function(t){return s=t}),delete n.value,delete n.writable,Object.defineProperty(e,a,n),n}function Ct(e){for(var a="",i=0;i<e;i++)a+=", arg"+i;return a.substr(2)}function Tt(e){var a=this.name+": "+this.namespace;this.message&&(a+=" deprecated "+this.message);for(var i=0;i<e.length;i++)a+=`
|
|
5
5
|
at `+e[i].toString();return a}function zt(e){if(!e)throw new TypeError("argument namespace is required");var a=ve(),i=H(a[1]),n=i[0];function s(o){xe.call(s,o)}return s._file=n,s._ignored=Pt(e),s._namespace=e,s._traced=At(e),s._warned=Object.create(null),s.function=Mt,s.property=Ft,s}function _t(e,a){var i=typeof e.listenerCount!="function"?e.listeners(a).length:e.listenerCount(a);return i>0}function Pt(e){if(process.noDeprecation)return!0;var a=process.env.NO_DEPRECATION||"";return Wi(a,e)}function At(e){if(process.traceDeprecation)return!0;var a=process.env.TRACE_DEPRECATION||"";return Wi(a,e)}function xe(e,a){var i=_t(process,"deprecation");if(!(!i&&this._ignored)){var n,s,o,t,r=0,c=!1,p=ve(),m=this._file;for(a?(t=a,o=H(p[1]),o.name=t.name,m=o[0]):(r=2,t=H(p[r]),o=t);r<p.length;r++)if(n=H(p[r]),s=n[0],s===m)c=!0;else if(s===this._file)m=this._file;else if(c)break;var u=n?t.join(":")+"__"+n.join(":"):void 0;if(!(u!==void 0&&u in this._warned)){this._warned[u]=!0;var d=e;if(d||(d=o===t||!o.name?Xi(t):Xi(o)),i){var f=Zi(this._namespace,d,p.slice(r));process.emit("deprecation",f);return}var h=process.stderr.isTTY?Ot:Rt,P=h.call(this,d,n,p.slice(r));process.stderr.write(P+`
|
|
6
6
|
`,"utf8")}}}function H(e){var a=e.getFileName()||"<anonymous>",i=e.getLineNumber(),n=e.getColumnNumber();e.isEval()&&(a=e.getEvalOrigin()+", "+a);var s=[a,i,n];return s.callSite=e,s.name=e.getFunctionName(),s}function Xi(e){var a=e.callSite,i=e.name;i||(i="<anonymous@"+Ye(e)+">");var n=a.getThis(),s=n&&a.getTypeName();return s==="Object"&&(s=void 0),s==="Function"&&(s=n.name||s),s&&a.getMethodName()?s+"."+i:i}function Rt(e,a,i){var n=new Date().toUTCString(),s=n+" "+this._namespace+" deprecated "+e;if(this._traced){for(var o=0;o<i.length;o++)s+=`
|
|
7
7
|
at `+i[o].toString();return s}return a&&(s+=" at "+Ye(a)),s}function Ot(e,a,i){var n="\x1B[36;1m"+this._namespace+"\x1B[22;39m \x1B[33;1mdeprecated\x1B[22;39m \x1B[0m"+e+"\x1B[39m";if(this._traced){for(var s=0;s<i.length;s++)n+=`
|
|
@@ -18,27 +18,27 @@ log.call(deprecate, message, site)
|
|
|
18
18
|
return fn.apply(this, arguments)
|
|
19
19
|
})`);return deprecatedfn}function wrapproperty(e,a,i){if(!e||typeof e!="object"&&typeof e!="function")throw new TypeError("argument obj must be object");var n=Object.getOwnPropertyDescriptor(e,a);if(!n)throw new TypeError("must call property on owner object");if(!n.configurable)throw new TypeError("property must be configurable");var s=this,o=getStack(),t=callSiteLocation(o[1]);t.name=a,"value"in n&&(n=convertDataDescriptorToAccessor(e,a,i));var r=n.get,c=n.set;typeof r=="function"&&(n.get=function(){return log.call(s,i,t),r.apply(this,arguments)}),typeof c=="function"&&(n.set=function(){return log.call(s,i,t),c.apply(this,arguments)}),Object.defineProperty(e,a,n)}function DeprecationError(e,a,i){var n=new Error,s;return Object.defineProperty(n,"constructor",{value:DeprecationError}),Object.defineProperty(n,"message",{configurable:!0,enumerable:!1,value:a,writable:!0}),Object.defineProperty(n,"name",{enumerable:!1,configurable:!0,value:"DeprecationError",writable:!0}),Object.defineProperty(n,"namespace",{configurable:!0,enumerable:!1,value:e,writable:!0}),Object.defineProperty(n,"stack",{configurable:!0,enumerable:!1,get:function(){return s!==void 0?s:s=createStackString.call(this,i)},set:function(t){s=t}}),n}});var Js=l((gu,bp)=>{bp.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","306":"(Unused)","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Unordered Collection","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}});var Qs=l((hu,Vs)=>{"use strict";var Ks=Js();Vs.exports=A;A.STATUS_CODES=Ks;A.codes=gp(A,Ks);A.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0};A.empty={204:!0,205:!0,304:!0};A.retry={502:!0,503:!0,504:!0};function gp(e,a){var i=[];return Object.keys(a).forEach(function(s){var o=a[s],t=Number(s);e[t]=o,e[o]=t,e[o.toLowerCase()]=t,i.push(t)}),i}function A(e){if(typeof e=="number"){if(!A[e])throw new Error("invalid status code: "+e);return e}if(typeof e!="string")throw new TypeError("code must be a number or string");var a=parseInt(e,10);if(!isNaN(a)){if(!A[a])throw new Error("invalid status code: "+a);return a}if(a=A[e.toLowerCase()],!a)throw new Error('invalid status message: "'+e+'"');return a}});var so=l((yu,N)=>{"use strict";var ja=Ys()("http-errors"),eo=Ke(),B=Qs(),qa=aa(),hp=ia();N.exports=Ce;N.exports.HttpError=yp();N.exports.isHttpError=kp(N.exports.HttpError);qp(N.exports,B.codes,N.exports.HttpError);function ao(e){return+(String(e).charAt(0)+"00")}function Ce(){for(var e,a,i=500,n={},s=0;s<arguments.length;s++){var o=arguments[s];if(o instanceof Error){e=o,i=e.status||e.statusCode||i;continue}switch(typeof o){case"string":a=o;break;case"number":i=o,s!==0&&ja("non-first-argument status code; replace with createError("+o+", ...)");break;case"object":n=o;break}}typeof i=="number"&&(i<400||i>=600)&&ja("non-error status code; use only 4xx or 5xx status codes"),(typeof i!="number"||!B[i]&&(i<400||i>=600))&&(i=500);var t=Ce[i]||Ce[ao(i)];e||(e=t?new t(a):new Error(a||B[i]),Error.captureStackTrace(e,Ce)),(!t||!(e instanceof t)||e.status!==i)&&(e.expose=i<500,e.status=e.statusCode=i);for(var r in n)r!=="status"&&r!=="statusCode"&&(e[r]=n[r]);return e}function yp(){function e(){throw new TypeError("cannot construct abstract class")}return qa(e,Error),e}function wp(e,a,i){var n=no(a);function s(o){var t=o??B[i],r=new Error(t);return Error.captureStackTrace(r,s),eo(r,s.prototype),Object.defineProperty(r,"message",{enumerable:!0,configurable:!0,value:t,writable:!0}),Object.defineProperty(r,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),r}return qa(s,e),io(s,n),s.prototype.status=i,s.prototype.statusCode=i,s.prototype.expose=!0,s}function kp(e){return function(i){return!i||typeof i!="object"?!1:i instanceof e?!0:i instanceof Error&&typeof i.expose=="boolean"&&typeof i.statusCode=="number"&&i.status===i.statusCode}}function jp(e,a,i){var n=no(a);function s(o){var t=o??B[i],r=new Error(t);return Error.captureStackTrace(r,s),eo(r,s.prototype),Object.defineProperty(r,"message",{enumerable:!0,configurable:!0,value:t,writable:!0}),Object.defineProperty(r,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),r}return qa(s,e),io(s,n),s.prototype.status=i,s.prototype.statusCode=i,s.prototype.expose=!1,s}function io(e,a){var i=Object.getOwnPropertyDescriptor(e,"name");i&&i.configurable&&(i.value=a,Object.defineProperty(e,"name",i))}function qp(e,a,i){a.forEach(function(s){var o,t=hp(B[s]);switch(ao(s)){case 400:o=wp(i,t,s);break;case 500:o=jp(i,t,s);break}o&&(e[s]=o,e[t]=o)}),e["I'mateapot"]=ja.function(e.ImATeapot,`"I'mateapot"; use "ImATeapot" instead`)}function no(e){return e.substr(-5)!=="Error"?e+"Error":e}});var ro=l((Ea,to)=>{"use strict";Ea=to.exports=typeof Object.keys=="function"?Object.keys:oo;Ea.shim=oo;function oo(e){var a=[];for(var i in e)a.push(i);return a}});var uo=l((Te,lo)=>{"use strict";var Ep=(function(){return Object.prototype.toString.call(arguments)})()=="[object Arguments]";Te=lo.exports=Ep?co:po;Te.supported=co;function co(e){return Object.prototype.toString.call(e)=="[object Arguments]"}Te.unsupported=po;function po(e){return e&&typeof e=="object"&&typeof e.length=="number"&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}});var yo=l((wu,ho)=>{"use strict";var mo=Array.prototype.slice,xo=ro(),vo=uo(),fo=ho.exports=function(e,a,i){return i||(i={}),e===a?!0:e instanceof Date&&a instanceof Date?e.getTime()===a.getTime():!e||!a||typeof e!="object"&&typeof a!="object"?i.strict?e===a:e==a:Sp(e,a,i)};function bo(e){return e==null}function go(e){return!(!e||typeof e!="object"||typeof e.length!="number"||typeof e.copy!="function"||typeof e.slice!="function"||e.length>0&&typeof e[0]!="number")}function Sp(e,a,i){var n,s;if(bo(e)||bo(a)||e.prototype!==a.prototype)return!1;if(vo(e))return vo(a)?(e=mo.call(e),a=mo.call(a),fo(e,a,i)):!1;if(go(e)){if(!go(a)||e.length!==a.length)return!1;for(n=0;n<e.length;n++)if(e[n]!==a[n])return!1;return!0}try{var o=xo(e),t=xo(a)}catch{return!1}if(o.length!=t.length)return!1;for(o.sort(),t.sort(),n=o.length-1;n>=0;n--)if(o[n]!=t[n])return!1;for(n=o.length-1;n>=0;n--)if(s=o[n],!fo(e[s],a[s],i))return!1;return typeof e==typeof a}});var jo=l((ku,ko)=>{"use strict";var Cp=so(),wo=yo();ko.exports=y;function y(e,a,i,n){if(!e)throw Cp(a,i,n)}y.fail=function(e,a,i){y(!1,e,a,i)};y.equal=function(e,a,i,n,s){y(e==a,i,n,s)};y.notEqual=function(e,a,i,n,s){y(e!=a,i,n,s)};y.ok=function(e,a,i,n){y(e,a,i,n)};y.strictEqual=function(e,a,i,n,s){y(e===a,i,n,s)};y.notStrictEqual=function(e,a,i,n,s){y(e!==a,i,n,s)};y.deepEqual=function(e,a,i,n,s){y(wo(e,a),i,n,s)};y.notDeepEqual=function(e,a,i,n,s){y(!wo(e,a),i,n,s)}});var Eo=l((ju,qo)=>{"use strict";qo.exports=O;function O(e,a){if(!(this instanceof O))return new O(e,a);this.proto=e,this.target=a,this.methods=[],this.getters=[],this.setters=[],this.fluents=[]}O.prototype.method=function(e){var a=this.proto,i=this.target;return this.methods.push(e),a[e]=function(){return this[i][e].apply(this[i],arguments)},this};O.prototype.access=function(e){return this.getter(e).setter(e)};O.prototype.getter=function(e){var a=this.proto,i=this.target;return this.getters.push(e),a.__defineGetter__(e,function(){return this[i][e]}),this};O.prototype.setter=function(e){var a=this.proto,i=this.target;return this.setters.push(e),a.__defineSetter__(e,function(n){return this[i][e]=n}),this};O.prototype.fluent=function(e){var a=this.proto,i=this.target;return this.fluents.push(e),a[e]=function(n){return typeof n<"u"?(this[i][e]=n,this):this[i][e]},this}});var Co=l((qu,So)=>{"use strict";var Q=x("crypto");function Tp(e,a){if(e.length!==a.length)return!1;if(Q.timingSafeEqual)return Q.timingSafeEqual(e,a);for(var i=0;i<e.length;i++)if(e[i]!==a[i])return!1;return!0}function zp(e,a){var i=String(e),n=String(a),s=Q.pseudoRandomBytes(32),o=Q.createHmac("sha256",s).update(i).digest(),t=Q.createHmac("sha256",s).update(n).digest();return Tp(o,t)&&e===a}So.exports=zp});var zo=l((Eu,To)=>{"use strict";var _p=Co(),Pp=x("crypto");function X(e,a,i){if(a||(a="sha1"),i||(i="base64"),!(this instanceof X))return new X(e,a,i);if(!e||!(0 in e))throw new Error("Keys must be provided.");function n(s,o){return Pp.createHmac(a,o).update(s).digest(i).replace(/\/|\+|=/g,function(t){return{"/":"_","+":"-","=":""}[t]})}this.sign=function(s){return n(s,e[0])},this.verify=function(s,o){return this.index(s,o)>-1},this.index=function(s,o){for(var t=0,r=e.length;t<r;t++)if(_p(o,n(s,e[t])))return t;return-1}}X.sign=X.verify=X.index=function(){throw new Error("Usage: require('keygrip')(<array-of-keys>)")};To.exports=X});var Ro=l((Su,Ao)=>{"use strict";var _e=Je()("cookies"),_o=zo(),Ap=x("http"),ze=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Rp=/^(?:low|medium|high)$/i,Sa=Object.create(null),Op=/[\^$\\.*+?()[\]{}|]/g,Lp=/[;=]/,Mp=/[;]/,Fp=/^(?:lax|none|strict)$/i;function R(e,a,i){if(!(this instanceof R))return new R(e,a,i);this.secure=void 0,this.request=e,this.response=a,i&&(Array.isArray(i)?(_e('"keys" argument; provide using options {"keys": [...]}'),this.keys=new _o(i)):i.constructor&&i.constructor.name==="Keygrip"?(_e('"keys" argument; provide using options {"keys": keygrip}'),this.keys=i):(this.keys=Array.isArray(i.keys)?new _o(i.keys):i.keys,this.secure=i.secure))}R.prototype.get=function(e,a){var i=e+".sig",n,s,o,t,r,c,p=a&&a.signed!==void 0?a.signed:!!this.keys;if(n=this.request.headers.cookie,!!n&&(s=n.match(Up(e)),!!s)){if(o=s[1],o[0]==='"'&&(o=o.slice(1,-1)),!a||!p)return o;if(t=this.get(i),!!t){if(r=e+"="+o,!this.keys)throw new Error(".keys required for signed cookies");if(c=this.keys.index(r,t),c<0)this.set(i,null,{path:"/",signed:!1});else return c&&this.set(i,this.keys.sign(r),{signed:!1}),o}}};R.prototype.set=function(e,a,i){var n=this.response,s=this.request,o=n.getHeader("Set-Cookie")||[],t=new q(e,a,i),r=i&&i.signed!==void 0?i.signed:!!this.keys,c=this.secure===void 0?s.protocol==="https"||Np(s):!!this.secure;if(typeof o=="string"&&(o=[o]),!c&&i&&i.secure)throw new Error("Cannot send secure cookie over unencrypted connection");if(t.secure=i&&i.secure!==void 0?i.secure:c,i&&"secureProxy"in i&&(_e('"secureProxy" option; use "secure" option, provide "secure" to constructor if needed'),t.secure=i.secureProxy),Po(o,t),i&&r){if(!this.keys)throw new Error(".keys required for signed cookies");t.value=this.keys.sign(t.toString()),t.name+=".sig",Po(o,t)}var p=n.set?Ap.OutgoingMessage.prototype.setHeader:n.setHeader;return p.call(n,"Set-Cookie",o),this};function q(e,a,i){if(!ze.test(e)||Lp.test(e))throw new TypeError("argument name is invalid");if(a&&(!ze.test(a)||Mp.test(a)))throw new TypeError("argument value is invalid");this.name=e,this.value=a||"";for(var e in i)this[e]=i[e];if(this.value||(this.expires=new Date(0),this.maxAge=null),this.path&&!ze.test(this.path))throw new TypeError("option path is invalid");if(this.domain&&!ze.test(this.domain))throw new TypeError("option domain is invalid");if(typeof this.maxAge=="number"?isNaN(this.maxAge)||!isFinite(this.maxAge):this.maxAge)throw new TypeError("option maxAge is invalid");if(this.priority&&!Rp.test(this.priority))throw new TypeError("option priority is invalid");if(this.sameSite&&this.sameSite!==!0&&!Fp.test(this.sameSite))throw new TypeError("option sameSite is invalid")}q.prototype.path="/";q.prototype.expires=void 0;q.prototype.domain=void 0;q.prototype.httpOnly=!0;q.prototype.partitioned=!1;q.prototype.priority=void 0;q.prototype.sameSite=!1;q.prototype.secure=!1;q.prototype.overwrite=!1;q.prototype.toString=function(){return this.name+"="+this.value};q.prototype.toHeader=function(){var e=this.toString();return this.maxAge&&(this.expires=new Date(Date.now()+this.maxAge)),this.path&&(e+="; path="+this.path),this.expires&&(e+="; expires="+this.expires.toUTCString()),this.domain&&(e+="; domain="+this.domain),this.priority&&(e+="; priority="+this.priority.toLowerCase()),this.sameSite&&(e+="; samesite="+(this.sameSite===!0?"strict":this.sameSite.toLowerCase())),this.secure&&(e+="; secure"),this.httpOnly&&(e+="; httponly"),this.partitioned&&(e+="; partitioned"),e};Object.defineProperty(q.prototype,"maxage",{configurable:!0,enumerable:!0,get:function(){return this.maxAge},set:function(e){return this.maxAge=e}});_e.property(q.prototype,"maxage",'"maxage"; use "maxAge" instead');function Up(e){return Sa[e]||(Sa[e]=new RegExp("(?:^|;) *"+e.replace(Op,"\\$&")+"=([^;]*)")),Sa[e]}function Np(e){return e.socket?e.socket.encrypted:e.connection.encrypted}function Po(e,a){if(a.overwrite)for(var i=e.length-1;i>=0;i--)e[i].indexOf(a.name+"=")===0&&e.splice(i,1);e.push(a.toHeader())}R.connect=R.express=function(e){return function(a,i,n){a.cookies=i.cookies=new R(a,i,{keys:e}),n()}};R.Cookie=q;Ao.exports=R});var Mo=l((Cu,Ae)=>{"use strict";var Ca=x("util"),Dp=sa(),Ip=jo(),Lo=Eo(),Oo=K(),Hp=Ro(),Pe=Symbol("context#cookies"),Ta=Ae.exports={inspect(){return this===Ta?this:this.toJSON()},toJSON(){return{request:this.request.toJSON(),response:this.response.toJSON(),app:this.app.toJSON(),originalUrl:this.originalUrl,req:"<original node req>",res:"<original node res>",socket:"<original node socket>"}},assert:Ip,throw(...e){throw Dp(...e)},onerror(e){if(e==null)return;Object.prototype.toString.call(e)==="[object Error]"||e instanceof Error||(e=new Error(Ca.format("non-error thrown: %j",e)));let i=!1;if((this.headerSent||!this.writable)&&(i=e.headerSent=!0),this.app.emit("error",e,this),i)return;let{res:n}=this;typeof n.getHeaderNames=="function"?n.getHeaderNames().forEach(r=>n.removeHeader(r)):n._headers={},this.set(e.headers),this.type="text";let s=e.status||e.statusCode;(typeof s!="number"||!Oo.message[s])&&(s=500);let o=Oo.message[s],t=e.expose?e.message:o;this.status=e.status=s,this.length=Buffer.byteLength(t),n.end(t)},get cookies(){return this[Pe]||(this[Pe]=new Hp(this.req,this.res,{keys:this.app.keys,secure:this.request.secure})),this[Pe]},set cookies(e){this[Pe]=e}};Ca.inspect.custom&&(Ae.exports[Ca.inspect.custom]=Ae.exports.inspect);Lo(Ta,"response").method("attachment").method("redirect").method("remove").method("vary").method("has").method("set").method("append").method("flushHeaders").method("back").access("status").access("message").access("body").access("length").access("type").access("lastModified").access("etag").getter("headerSent").getter("writable");Lo(Ta,"request").method("acceptsLanguages").method("acceptsEncodings").method("acceptsCharsets").method("accepts").method("get").method("is").access("querystring").access("idempotent").access("socket").access("search").access("method").access("query").access("path").access("url").access("accept").getter("origin").getter("href").getter("subdomains").getter("protocol").getter("host").getter("hostname").getter("URL").getter("header").getter("headers").getter("secure").getter("stale").getter("fresh").getter("ips").getter("ip")});var Ho=l((Tu,za)=>{"use strict";var Oe=x("util"),Fo=x("v8"),Uo=Oe.debuglog("koa:application"),$p=x("events"),Re=x("stream"),Gp=x("http"),{AsyncLocalStorage:No}=x("async_hooks"),Bp=We(),Xp=Hi(),Wp=K(),{HttpError:Zp}=sa(),Yp=ks(),Jp=$s(),Kp=Mo(),Vp=ya(),Qp=we();function Do(e){return e.asyncLocalStorage instanceof No?e.asyncLocalStorage:new No}za.exports=class Io extends $p{constructor(a){super(),a=a||{},this.proxy=a.proxy||!1,this.subdomainOffset=a.subdomainOffset||2,this.proxyIpHeader=a.proxyIpHeader||"X-Forwarded-For",this.maxIpsCount=a.maxIpsCount||0,this.env=a.env||process.env.NODE_ENV||"development",this.compose=a.compose||Xp,a.keys&&(this.keys=a.keys),this.middleware=[],this.context=Object.create(Kp),this.request=Object.create(Yp),this.response=Object.create(Jp),Oe.inspect.custom&&(this[Oe.inspect.custom]=this.inspect),a.asyncLocalStorage&&(Fo.startupSnapshot?.isBuildingSnapshot?.()?(this.ctxStorage=null,Fo.startupSnapshot.addDeserializeCallback(({app:i,options:n})=>{i.ctxStorage=Do(n)},{app:this,options:a})):this.ctxStorage=Do(a))}listen(...a){return Uo("listen"),Gp.createServer(this.callback()).listen(...a)}toJSON(){return Qp(this,["subdomainOffset","proxy","env"])}inspect(){return this.toJSON()}use(a){if(typeof a!="function")throw new TypeError("middleware must be a function!");return Uo("use %s",a._name||a.name||"-"),this.middleware.push(a),this}callback(){let a=this.compose(this.middleware);return this.listenerCount("error")||this.on("error",this.onerror),(n,s)=>{let o=this.createContext(n,s);return this.ctxStorage?this.ctxStorage.run(o,async()=>await this.handleRequest(o,a)):this.handleRequest(o,a)}}get currentContext(){if(this.ctxStorage)return this.ctxStorage.getStore()}handleRequest(a,i){let n=a.res;n.statusCode=404;let s=t=>a.onerror(t),o=()=>el(a);return Bp(n,s),i(a).then(o).catch(s)}createContext(a,i){let n=Object.create(this.context),s=n.request=Object.create(this.request),o=n.response=Object.create(this.response);return n.app=s.app=o.app=this,n.req=s.req=o.req=a,n.res=s.res=o.res=i,s.ctx=o.ctx=n,s.response=o,o.request=s,n.originalUrl=s.originalUrl=a.url,n.state={},n}onerror(a){if(!(Object.prototype.toString.call(a)==="[object Error]"||a instanceof Error))throw new TypeError(Oe.format("non-error thrown: %j",a));if(a.status===404||a.expose||this.silent)return;let n=a.stack||a.toString();console.error(`
|
|
20
20
|
${n.replace(/^/gm," ")}
|
|
21
|
-
`)}static get default(){return Io}};function el(e){if(e.respond===!1)return;let a=e.res;if(!e.writable)return a.end();let i=e.body,n=e.status;if(Wp.empty[n])return e.body=null,a.end();if(e.method==="HEAD"){if(!a.headersSent&&!e.response.has("Content-Length")){let{length:o}=e.response;Number.isInteger(o)&&(e.length=o)}return a.end()}if(i==null)return e.response._explicitNullBody?(e.response.remove("Content-Type"),e.response.remove("Transfer-Encoding"),e.length=0,a.end()):(e.req.httpVersionMajor>=2?i=String(n):i=e.message||String(n),a.headersSent||(e.type="text",e.length=Buffer.byteLength(i)),a.end(i));if(Buffer.isBuffer(i)||typeof i=="string")return a.end(i);let s=null;if(i instanceof Blob?s=Re.Readable.from(i.stream()):i instanceof ReadableStream?s=Re.Readable.from(i):i instanceof Response?s=Re.Readable.from(i?.body||""):Vp(i)&&(s=i),s)return Re.pipeline(s,a,o=>{o&&e.app.listenerCount("error")&&e.onerror(o)});i=JSON.stringify(i),a.headersSent||(e.length=Buffer.byteLength(i)),a.end(i)}za.exports.HttpError=Zp});
|
|
22
|
-
`)}function fl(e){let a=[],i=new Set;for(let n of e){if(n.role!=="assistant")continue;let s=n.content.matchAll(/"file_path"\s*:\s*"([^"]+)"/g);for(let o of s)o[1]&&!i.has(o[1])&&(i.add(o[1]),a.push(o[1]))}return a}var C=$a({module:"remote"}),jl=E.object({type:E.string(),data:E.unknown()}),ql=E.object({content:E.string()}),El=E.object({id:E.string(),response:E.enum(["allow","deny","allowAlways"])}),Sl=E.object({id:E.string(),answers:E.record(E.string(),E.string())}),Yo=et(import.meta.dirname,"fe","dist"),Cl={".html":"text/html; charset=utf-8",".js":"application/javascript; charset=utf-8",".css":"text/css; charset=utf-8",".png":"image/png",".svg":"image/svg+xml",".ico":"image/x-icon",".json":"application/json; charset=utf-8",".woff2":"font/woff2"};function Jo(e){let a=kl(e).replace(/^(\.\.[/\\])+/,""),i=et(Yo,a);if(!i.startsWith(Yo)||!
|
|
23
|
-
`);new
|
|
24
|
-
`),runSubagent:async b=>{if(!h)throw new Error("no llm client (provider not initialized)");let{PermissionChecker:w}=await import("./checker-
|
|
21
|
+
`)}static get default(){return Io}};function el(e){if(e.respond===!1)return;let a=e.res;if(!e.writable)return a.end();let i=e.body,n=e.status;if(Wp.empty[n])return e.body=null,a.end();if(e.method==="HEAD"){if(!a.headersSent&&!e.response.has("Content-Length")){let{length:o}=e.response;Number.isInteger(o)&&(e.length=o)}return a.end()}if(i==null)return e.response._explicitNullBody?(e.response.remove("Content-Type"),e.response.remove("Transfer-Encoding"),e.length=0,a.end()):(e.req.httpVersionMajor>=2?i=String(n):i=e.message||String(n),a.headersSent||(e.type="text",e.length=Buffer.byteLength(i)),a.end(i));if(Buffer.isBuffer(i)||typeof i=="string")return a.end(i);let s=null;if(i instanceof Blob?s=Re.Readable.from(i.stream()):i instanceof ReadableStream?s=Re.Readable.from(i):i instanceof Response?s=Re.Readable.from(i?.body||""):Vp(i)&&(s=i),s)return Re.pipeline(s,a,o=>{o&&e.app.listenerCount("error")&&e.onerror(o)});i=JSON.stringify(i),a.headersSent||(e.length=Buffer.byteLength(i)),a.end(i)}za.exports.HttpError=Zp});import{readFileSync as bl,existsSync as gl,statSync as hl}from"fs";import{createServer as yl}from"http";import{join as et,extname as wl,normalize as kl}from"path";import{cwd as ae}from"process";var _a=rt(Ho(),1),$o=_a.default,zu=_a.default.HttpError;import{existsSync as Pa,statSync as Wo,readFileSync as Go,writeFileSync as Zo,mkdirSync as al,unlinkSync as il,utimesSync as nl}from"fs";import{homedir as Bo}from"os";import{join as ee,basename as Xo}from"path";var sl=24,ol=5,tl=600*1e3,rl=".consolidate-lock",cl=3600*1e3,pl=200,Le=class{client;workDir;lastScanAt=0;minHours;minSessions;appendSystem;constructor(a,i,n){this.client=a,this.workDir=i,this.minHours=n?.minHours??sl,this.minSessions=n?.minSessions??ol,this.appendSystem=n?.appendSystem}maybeRun(){let a=ee(this.workDir,".swifty","memory");if(!Pa(a))return Promise.resolve();let i=ll(a);if((Date.now()-i)/36e5<this.minHours)return Promise.resolve();let s=Date.now();if(s-this.lastScanAt<tl)return Promise.resolve();this.lastScanAt=s;let o=xl(this.workDir,i);if(o.length<this.minSessions)return Promise.resolve();let t=ul(a);return t===null||this.run(a,o,t).catch(()=>{ml(a,t)}),Promise.resolve()}async run(a,i,n){let s=ee(Bo(),".swifty","memory"),o=ee(this.workDir,".swifty","sessions"),t=vl(a,s,o,i),r=new re;r.register(new me),r.register(new de),r.register(new pe),r.register(new le),r.register(new ue),r.register(new ce);let c=new J(this.workDir,"bypassPermissions");c.allowExtraRoot(ee(Bo(),".swifty","memory"));let p=new L;p.addUserMessage(t);let m=new Y({client:this.client,registry:r,checker:c,conversation:p,workDir:this.workDir,maxIterations:15});for await(let f of m.run())console.log(f.type);let d=fl(p.getMessages()).filter(f=>Xo(f)!=="MEMORY.md");if(d.length>0&&this.appendSystem){let f=d.map(h=>Xo(h));this.appendSystem(`Memory improved: ${f.join(", ")}`)}}};function Aa(e){return ee(e,rl)}function ll(e){let a=Aa(e);if(!Pa(a))return 0;try{return Wo(a).mtimeMs}catch{return 0}}function ul(e){let a=Aa(e),i,n;if(Pa(a))try{i=Wo(a).mtimeMs;let s=Go(a,"utf-8").trim(),o=parseInt(s,10);Number.isFinite(o)&&(n=o)}catch(s){console.error(s)}if(i!==void 0&&Date.now()-i<cl&&n!==void 0&&dl(n))return null;al(e,{recursive:!0}),Zo(a,String(process.pid));try{let s=Go(a,"utf-8").trim();if(parseInt(s,10)!==process.pid)return null}catch{return null}return i??0}function ml(e,a){let i=Aa(e);try{if(a===0){il(i);return}Zo(i,"");let n=a/1e3;nl(i,n,n)}catch(n){console.error(n)}}function dl(e){try{return process.kill(e,0),!0}catch{return!1}}function xl(e,a){let i=te(e),n=new Date(a);return i.filter(s=>s.modTime>n).map(s=>s.id)}function vl(e,a,i,n){let s=["# Dream: Memory Consolidation","","You are performing a dream \u2014 a reflective pass over your memory files. Synthesize what you've learned recently into durable, well-organized memories so that future sessions can orient quickly.","",`Project memory directory: \`${e}\``,`User memory directory: \`${a}\``,"The memory directory already exists \u2014 write to it directly.","",`Session transcripts: \`${i}\` (large JSONL files \u2014 grep narrowly, don't read whole files)`,"","---","","## Phase 1 \u2014 Orient","","- `ls` the memory directory to see what already exists","- Read `MEMORY.md` to understand the current index","- Skim existing topic files so you improve them rather than creating duplicates","","## Phase 2 \u2014 Gather recent signal","","Look for new information worth persisting:","","1. **Existing memories that drifted** \u2014 facts that contradict something you see in the codebase now","2. **Transcript search** \u2014 if you need specific context, grep the JSONL transcripts for narrow terms","","Don't exhaustively read transcripts. Look only for things you already suspect matter.","","## Phase 3 \u2014 Consolidate","","For each thing worth remembering, write or update a memory file. Each memory file uses YAML frontmatter with name, description, and metadata.type fields, followed by a Markdown body.","","Focus on:","- Merging new signal into existing topic files rather than creating near-duplicates",'- Converting relative dates ("yesterday", "last week") to absolute dates so they remain interpretable after time passes',"- Deleting contradicted facts \u2014 if today's investigation disproves an old memory, fix it at the source","","## Phase 4 \u2014 Prune and index","",`Update \`MEMORY.md\` so it stays under ${String(pl)} lines AND under ~25KB. It's an **index**, not a dump \u2014 each entry should be one line under ~150 characters: \`- [Title](file.md) \u2014 one-line hook\`. Never write memory content directly into it.`,"","- Remove pointers to memories that are now stale, wrong, or superseded","- Demote verbose entries: if an index line is over ~200 chars, it's carrying content that belongs in the topic file \u2014 shorten the line, move the detail","- Add pointers to newly important memories","- Resolve contradictions \u2014 if two files disagree, fix the wrong one","","---","","**Tool constraints for this run:** Bash is restricted to read-only commands (`ls`, `find`, `grep`, `cat`, `stat`, `wc`, `head`, `tail`, and similar). Anything that writes, redirects to a file, or modifies state will be denied.",""];if(n.length>0){s.push(`Sessions since last consolidation (${String(n.length)}):`);for(let o of n)s.push(`- ${o}`)}return s.push("","Return a brief summary of what you consolidated, updated, or pruned. If nothing changed (memories are already tight), say so."),s.join(`
|
|
22
|
+
`)}function fl(e){let a=[],i=new Set;for(let n of e){if(n.role!=="assistant")continue;let s=n.content.matchAll(/"file_path"\s*:\s*"([^"]+)"/g);for(let o of s)o[1]&&!i.has(o[1])&&(i.add(o[1]),a.push(o[1]))}return a}var C=$a({module:"remote"}),jl=E.object({type:E.string(),data:E.unknown()}),ql=E.object({content:E.string()}),El=E.object({id:E.string(),response:E.enum(["allow","deny","allowAlways"])}),Sl=E.object({id:E.string(),answers:E.record(E.string(),E.string())}),Yo=et(import.meta.dirname,"fe","dist"),Cl={".html":"text/html; charset=utf-8",".js":"application/javascript; charset=utf-8",".css":"text/css; charset=utf-8",".png":"image/png",".svg":"image/svg+xml",".ico":"image/x-icon",".json":"application/json; charset=utf-8",".woff2":"font/woff2"};function Jo(e){let a=kl(e).replace(/^(\.\.[/\\])+/,""),i=et(Yo,a);if(!i.startsWith(Yo)||!gl(i)||!hl(i).isFile())return null;let n=bl(i),s=Cl[wl(i)]??"application/octet-stream";return{body:n,mime:s}}var Ra=class{client;conv;registry;sessionId;fileHistory;fileStateCache;cmdRegistry;skillCatalog;activeSkills;toolFilter;mcpManager;hookEngine;recoveryState;teamManager;enableCoordinatorMode;forkDisabled;memoryManager;contextWindow;ltmInstructions;ltmMemoryContent;mcpInstructions;provider;workDir;abortController=null;constructor(a){this.client=a.client,this.conv=a.conv,this.registry=a.registry,this.sessionId=a.sessionId,this.fileHistory=a.fileHistory,this.fileStateCache=a.fileStateCache,this.cmdRegistry=a.cmdRegistry,this.skillCatalog=a.skillCatalog,this.activeSkills=a.activeSkills,this.toolFilter=a.toolFilter,this.mcpManager=a.mcpManager,this.hookEngine=a.hookEngine,this.recoveryState=a.recoveryState,this.teamManager=a.teamManager,this.enableCoordinatorMode=a.enableCoordinatorMode,this.forkDisabled=a.forkDisabled,this.memoryManager=a.memoryManager,this.contextWindow=a.contextWindow,this.ltmInstructions=a.ltmInstructions,this.ltmMemoryContent=a.ltmMemoryContent,this.mcpInstructions=a.mcpInstructions,this.provider=a.provider,this.workDir=a.workDir,this.abortController=null}async*run(a,i){this.conv.addUserMessage(a),this.mcpInstructions&&(this.conv.addSystemReminder(this.mcpInstructions),this.mcpInstructions=""),this.abortController=new AbortController;try{let n=new J(this.workDir,"default");yield*new Y({client:this.client,registry:this.registry,checker:n,conversation:this.conv,workDir:this.workDir,sessionId:this.sessionId,hookEngine:this.hookEngine??void 0,fileHistory:this.fileHistory??void 0,fileStateCache:this.fileStateCache,abortSignal:this.abortController.signal,contextWindow:this.contextWindow,maxOutput:Ka(this.provider),recoveryState:this.recoveryState,activeSkills:this.activeSkills,toolFilter:o=>ti(this.enableCoordinatorMode)(o)?this.toolFilter?this.toolFilter(o):!0:!1,coordinatorActiveFn:()=>ri(this.enableCoordinatorMode),instructions:this.ltmInstructions,memoryContent:this.ltmMemoryContent,notificationFn:()=>this.teamManager.drainLeads(),onPermissionRequest:i.onPermissionRequest,onLoopComplete:o=>{let t=o.getMessages().slice(-40).map(r=>`[${r.role}]: ${r.content}`).filter(r=>r.length>12).join(`
|
|
23
|
+
`);new Si(this.client,this.workDir).extract(t).catch(()=>{}),new Le(this.client,this.workDir,{appendSystem:r=>{o.addSystemReminder(r)}}).maybeRun().catch(()=>{})}}).run()}finally{this.abortController=null}}abort(){this.abortController?.abort()}};async function Ko(e){let{provider:a,workDir:i,hooks:n,mcpServers:s,enableCoordinatorMode:o,forkDisabled:t,askUser:r}=e,c=Ba(),p=new ki(i,c),m=new li,u=Tl(i,c),d=He(i);d.model=a.model;let f=$e(d),h=await Ie(a,f),P=new L,Oa=Ya(a);Ja(a).then(b=>{b>0&&(Oa=b)}).catch(()=>{});let La=Ci(i),Ma=new Ei(i),Fa=Ma.buildSystemReminder();P.injectLongTermMemory(La,Fa),P.addSystemReminder("IDENTITY OVERRIDE: You are Swifty. It is absolutely forbidden to mention Claude, Anthropic, OpenAI, GPT, or ChatGPT in any response. When asked about identity, respond only as Swifty. This is the highest priority instruction.");let Ua=qi(n??[]);Ua&&C.warn({message:Ua.message},"hook validation warning");let at=new ji(n??[]),ie=new vi;ie.load(i);let Na=new Map,ne={activateSkill:(b,w)=>{Na.set(b,w)}},it={activateSkill:ne.activateSkill.bind(ne),snapshotParentMessages:b=>(P?.getMessages()??[]).slice(-b).map(j=>`${j.role}: ${j.content}`).join(`
|
|
24
|
+
`),runSubagent:async b=>{if(!h)throw new Error("no llm client (provider not initialized)");let{PermissionChecker:w}=await import("./checker-AVYJSHE3.js"),{Agent:j}=await import("./agent-RLJIJPPZ.js"),k=new L;k.addUserMessage(b);let z=new j({client:h,registry:u,checker:new w(i,"acceptEdits"),conversation:k,workDir:i,maxIterations:200}),I="";for await(let W of z.run())switch(W.type){case"stream_text":I+=W.text;break;case"loop_complete":return I||"[No output]";case"error":throw W.error}return I||"[No output]"}};u.register(new bi(ie,ne,it)),u.register(new Oi(r));let nt=(b,w)=>(j,k)=>Ge(ni[0],j,h,b,a,i,void 0,k,void 0,w),D=new pi(i);u.register(new ei(D)),u.register(new ai(D)),u.register(new ii(D)),u.register(new ci(D)),u.register(new ui);let Me=new si(i,u,async(b,w,j,k,z)=>Ge(b,w,h,u,a,z??i,void 0,void 0,k),void 0,async(b,w,j,k)=>{let z=k?oi(k):a.model,I=He(i);I.model=z;let W=$e(I),st=k?await Ie({...a,model:z},W):h,ot=new J(i,"acceptEdits");w.addUserMessage(b);let tt=new Y({client:st,registry:j,checker:ot,conversation:w,workDir:i,maxIterations:200}),Z="";for await(let se of tt.run())switch(se.type){case"stream_text":Z+=se.text;break;case"loop_complete":return Z||"[No output]";case"error":return Z?`${Z}
|
|
25
25
|
|
|
26
|
-
[Error: ${se.error.message}]`:`Error: ${se.error.message}`}return Z||"[No output]"});Me.forkDisabled=t,Me.setTeamManager(D,nt),u.register(Me);let Fe=
|
|
26
|
+
[Error: ${se.error.message}]`:`Error: ${se.error.message}`}return Z||"[No output]"});Me.forkDisabled=t,Me.setTeamManager(D,nt),u.register(Me);let Fe=Be();for(let b of wi(i))try{Fe.register(b)}catch{}zl(ie,ne,Fe);let Da=null,Ia="";if(s&&s.length>0){let b=new di;Da=b;let w=await b.connectAll(s);for(let{serverName:j,tool:k}of w.tools){let z=b.getClient(j);z&&u.register(new xi(z,j,k))}for(let{serverName:j,error:k}of w.errors)C.error({serverName:j,error:k},"MCP server connection error");w.instructions.length>0&&(Ia=`# MCP Server Instructions
|
|
27
27
|
|
|
28
28
|
The following MCP servers are connected. Use their tools when the user asks.
|
|
29
29
|
|
|
30
30
|
`+w.instructions.map(({serverName:k,text:z})=>`## ${k}
|
|
31
31
|
${z}`).join(`
|
|
32
32
|
|
|
33
|
-
`))}return new Ra({client:h,conv:P,registry:u,sessionId:c,fileHistory:p,fileStateCache:m,cmdRegistry:Fe,skillCatalog:ie,activeSkills:Na,toolFilter:null,mcpManager:Da,hookEngine:at,recoveryState:new
|
|
34
|
-
`)}var Qo=class{app;server;wss;clients=new Set;opts;agentHandle=null;streaming=!1;turnCount=0;pendingPermissions=new Map;pendingAsks=new Map;constructor(a){this.opts=a,this.app=new $o,this.server=
|
|
33
|
+
`))}return new Ra({client:h,conv:P,registry:u,sessionId:c,fileHistory:p,fileStateCache:m,cmdRegistry:Fe,skillCatalog:ie,activeSkills:Na,toolFilter:null,mcpManager:Da,hookEngine:at,recoveryState:new Va,teamManager:D,forkDisabled:t,enableCoordinatorMode:o,memoryManager:Ma,contextWindow:Oa,ltmInstructions:La,ltmMemoryContent:Fa,mcpInstructions:Ia,provider:a,workDir:i})}function Tl(e,a){let i=new Ti(e,a),n=new zi(i),s=new re;return s.register(new me),s.register(new ce),s.register(new le),s.register(new ue),s.register(new de),s.register(new pe),s.register(new mi(s)),s.register(new gi),s.register(new hi),s.register(new Li),s.register(new _i(n)),s.register(new Pi(n)),s.register(new Ai(n)),s.register(new Ri(n)),s}function zl(e,a,i){for(let n of e.list()){if(i.find(n.name))continue;let s=e.get(n.name);if(!s)continue;let o=s.meta.mode==="fork";try{i.register({name:n.name,aliases:[],type:o?"skill_fork":"prompt",description:`${n.description} [skill]`,handler:o?()=>"":t=>fi(s,t.args,a)})}catch{}}}function Vo(e,a,i){let n=[];return i.reason&&n.push(i.reason),a.command?n.push(`Command: ${Ne(a,"command")}`):a.file_path&&n.push(`File: ${Ne(a,"file_path")}`),n.join(`
|
|
34
|
+
`)}var Qo=class{app;server;wss;clients=new Set;opts;agentHandle=null;streaming=!1;turnCount=0;pendingPermissions=new Map;pendingAsks=new Map;constructor(a){this.opts=a,this.app=new $o,this.server=yl((i,n)=>{this.app.callback()(i,n)}),this.wss=new Ha.default({server:this.server}),this.setupRoutes(),this.setupWebSocket()}setupRoutes(){this.app.use(async(a,i)=>{if(a.path==="/health"){a.body={status:"ok",remote:!0,clients:this.clients.size};return}await i()}),this.app.use(a=>{let i=a.path==="/"?"/index.html":a.path,n=Jo(i);if(n){a.type=n.mime,a.body=n.body;return}let s=Jo("/index.html");if(s){a.type=s.mime,a.body=s.body;return}a.status=404,a.body="Not found"})}setupWebSocket(){this.wss.on("connection",a=>{this.clients.add(a),C.info({clients:this.clients.size},"WebSocket client connected"),this.send(a,{type:"connected",data:{session:this.agentHandle?.sessionId??"",cwd:ae()}}),this.send(a,{type:"commands",data:this.buildCommandList()}),a.on("message",i=>{let n=jl.safeParse(JSON.parse(i.toString("utf-8")));if(!n.success){C.error("failed to parse WS message");return}this.handleWsMessage(n.data)}),a.on("close",()=>{this.clients.delete(a),C.info({clients:this.clients.size},"WebSocket client disconnected")}),a.on("error",()=>{this.clients.delete(a)})})}async handleWsMessage(a){switch(a.type){case"user_message":{let i=ql.safeParse(a.data);i.success&&await this.handleUserMessage(i.data.content);break}case"permission_response":{let i=El.safeParse(a.data);if(i.success){let n=this.pendingPermissions.get(i.data.id);n&&(n(i.data.response),this.pendingPermissions.delete(i.data.id))}break}case"ask_user_response":{let i=Sl.safeParse(a.data);if(i.success){let n=this.pendingAsks.get(i.data.id);n&&(n(i.data.answers),this.pendingAsks.delete(i.data.id))}break}case"cancel":{this.agentHandle?.abort();break}case"ping":{this.broadcast({type:"pong",data:null});break}default:C.warn({type:a.type},"unknown WS message type")}}async handleUserMessage(a){let i=a.trim();if(!i||this.streaming)return;if(this.broadcast({type:"replay_user",data:{content:i}}),!this.agentHandle)try{this.agentHandle=await Ko({provider:this.opts.providers[0],workDir:ae(),hooks:this.opts.hookConfigs,mcpServers:this.opts.mcpServers,askUser:this.createAskUserCallback(),enableCoordinatorMode:this.opts.enableCoordinatorMode,forkDisabled:this.opts.forkDisabled}),this.broadcast({type:"connected",data:{session:this.agentHandle.sessionId,cwd:ae()}})}catch(t){C.error({err:t},"failed to initialize agent"),this.broadcast({type:"error",data:{message:`Failed to initialize agent: ${t instanceof Error?t.message:String(t)}`}});return}if(i.startsWith("/")){await this.handleSlashCommand(i);return}this.streaming=!0;let n=Date.now(),s=this.agentHandle.workDir,o=this.agentHandle.sessionId;oe(s,o,{role:"user",content:i,timestamp:Math.floor(Date.now()/1e3)});try{let t={onPermissionRequest:async(c,p,m)=>{let u=`perm_${Date.now().toString(36)}`,d=Vo(c,p,m);return this.broadcast({type:"permission_request",data:{id:u,toolName:c,description:d}}),new Promise(f=>{this.pendingPermissions.set(u,f)})}},r="";for await(let c of this.agentHandle.run(i,t))(c.type==="tool_result"||c.type==="turn_complete"||c.type==="loop_complete")&&r&&(this.broadcast({type:"stream_end",data:{text:r}}),r=""),this.bridgeEvent(c,n,s,o,p=>{r+=p})}catch(t){C.error({err:t},"agent stream error"),this.broadcast({type:"error",data:{message:t instanceof Error?t.message:String(t)}})}finally{this.streaming=!1}}bridgeEvent(a,i,n,s,o){switch(a.type){case"stream_text":o(a.text),this.broadcast({type:"stream_text",data:{text:a.text}});break;case"thinking_text":this.broadcast({type:"thinking_text",data:{text:a.text}});break;case"thinking_complete":break;case"tool_use":this.broadcast({type:"tool_use",data:{toolId:a.toolId,toolName:a.toolName,args:a.args}});break;case"tool_result":this.broadcast({type:"tool_result",data:{toolId:a.toolId,toolName:a.toolName,output:a.output,isError:a.isError,elapsed:a.elapsed}});break;case"turn_complete":this.turnCount++,this.broadcast({type:"turn_complete",data:{turn:this.turnCount}});break;case"loop_complete":{let t=(Date.now()-i)/1e3;this.broadcast({type:"loop_complete",data:{stopReason:a.stopReason,totalTurns:this.turnCount,elapsed:t}});break}case"usage":this.broadcast({type:"usage",data:{inputTokens:a.usage.inputTokens,outputTokens:a.usage.outputTokens}});break;case"error":this.broadcast({type:"error",data:{message:a.error.message}});break;case"compact":this.broadcast({type:"compact",data:{message:a.message}}),a.boundary&&De(n,s,a.boundary);break;case"retry":this.broadcast({type:"retry",data:{reason:a.reason,waitMs:a.delay}});break;case"permission_request":break}}async handleSlashCommand(a){if(!this.agentHandle)return;let i=yi(a);if(!i)return;let{name:n,args:s}=i,o=this.agentHandle.cmdRegistry.find(n);if(!o){this.broadcast({type:"error",data:{message:`Unknown command: /${n} -- type /help to see available commands`}}),this.broadcast({type:"command_done",data:null});return}let t=this.buildCommandContext(s);switch(o.type){case"local":{let r=o.handler(t);this.broadcast({type:"system",data:{message:r}}),this.broadcast({type:"command_done",data:null});break}case"local_ui":await this.handleLocalUICommand(n,s);break;case"prompt":{let r=o.handler(t),c=s?`/${n} ${s}`:`/${n}`;this.streaming=!0;let p=this.agentHandle.workDir,m=this.agentHandle.sessionId;oe(p,m,{role:"user",content:c,timestamp:Math.floor(Date.now()/1e3)});let u=Date.now();try{let d={onPermissionRequest:this.createPermissionCallback()},f="";for await(let h of this.agentHandle.run(r,d))(h.type==="tool_result"||h.type==="turn_complete"||h.type==="loop_complete")&&f&&(this.broadcast({type:"stream_end",data:{text:f}}),f=""),this.bridgeEvent(h,u,p,m,P=>{f+=P})}catch(d){C.error({err:d},"agent stream error in prompt command"),this.broadcast({type:"error",data:{message:d instanceof Error?d.message:String(d)}})}finally{this.streaming=!1}break}case"skill_fork":this.broadcast({type:"system",data:{message:"Fork-mode skills are not yet supported in remote mode."}}),this.broadcast({type:"command_done",data:null});break}}async handleLocalUICommand(a,i){if(this.agentHandle)switch(a){case"clear":this.agentHandle.conv=new L,this.agentHandle.activeSkills.clear(),this.agentHandle.toolFilter=null,this.broadcast({type:"clear",data:null}),this.broadcast({type:"command_done",data:null});break;case"compact":await this.handleCompact();break;case"plan":await this.handlePlan(i);break;case"resume":this.handleResume(i);break;case"rewind":this.broadcast({type:"system",data:{message:"Rewind is not yet supported in remote mode."}}),this.broadcast({type:"command_done",data:null});break;case"quit":this.broadcast({type:"system",data:{message:"Quit is not supported in remote mode. Close the browser tab."}}),this.broadcast({type:"command_done",data:null});break;case"skills":{let n=this.agentHandle.skillCatalog;if(!n)this.broadcast({type:"system",data:{message:"No skills loaded."}});else{let s=n.list();if(s.length===0)this.broadcast({type:"system",data:{message:"No skills found."}});else{let o=s.map(t=>` ${t.name}: ${t.description}`);this.broadcast({type:"system",data:{message:`Available skills (${String(s.length)}):
|
|
35
35
|
|
|
36
36
|
${o.join(`
|
|
37
|
-
`)}`}})}}this.broadcast({type:"command_done",data:null});break}case"sandbox":this.broadcast({type:"system",data:{message:"Sandbox toggle is not yet supported in remote mode."}}),this.broadcast({type:"command_done",data:null});break;case"worktree":this.broadcast({type:"system",data:{message:"Worktree management is not yet supported in remote mode."}}),this.broadcast({type:"command_done",data:null});break;default:this.broadcast({type:"command_done",data:null});break}}buildCommandContext(a){let i=this.agentHandle;return i?{workDir:i.workDir,args:a,permissionMode:()=>"default",tokenCount:()=>[0,0],toolCount:()=>i.registry.listTools().length,memoryList:()=>i.memoryManager.getMemories().map(n=>n.name),model:i.provider.model}:{workDir:ae(),args:a,model:""}}async handleCompact(){if(!this.agentHandle)return;let a=this.agentHandle;this.broadcast({type:"system",data:{message:"Compacting conversation..."}});try{let i=a.registry.listTools().map(o=>o.name),n=a.registry.getAllSchemas(),s=await Za(a.conv,a.client,a.recoveryState,i,n,Ga(a.workDir,a.sessionId));this.broadcast({type:"system",data:{message:`Compacted: ${s.message}`}}),s.boundary&&De(a.workDir,a.sessionId,s.boundary)}catch(i){this.broadcast({type:"error",data:{message:i instanceof Error?i.message:String(i)}})}this.broadcast({type:"command_done",data:null})}async handlePlan(a){if(!this.agentHandle)return;let i=this.agentHandle,n=i.workDir,s=
|
|
37
|
+
`)}`}})}}this.broadcast({type:"command_done",data:null});break}case"sandbox":this.broadcast({type:"system",data:{message:"Sandbox toggle is not yet supported in remote mode."}}),this.broadcast({type:"command_done",data:null});break;case"worktree":this.broadcast({type:"system",data:{message:"Worktree management is not yet supported in remote mode."}}),this.broadcast({type:"command_done",data:null});break;default:this.broadcast({type:"command_done",data:null});break}}buildCommandContext(a){let i=this.agentHandle;return i?{workDir:i.workDir,args:a,permissionMode:()=>"default",tokenCount:()=>[0,0],toolCount:()=>i.registry.listTools().length,memoryList:()=>i.memoryManager.getMemories().map(n=>n.name),model:i.provider.model}:{workDir:ae(),args:a,model:""}}async handleCompact(){if(!this.agentHandle)return;let a=this.agentHandle;this.broadcast({type:"system",data:{message:"Compacting conversation..."}});try{let i=a.registry.listTools().map(o=>o.name),n=a.registry.getAllSchemas(),s=await Za(a.conv,a.client,a.recoveryState,i,n,Ga(a.workDir,a.sessionId));this.broadcast({type:"system",data:{message:`Compacted: ${s.message}`}}),s.boundary&&De(a.workDir,a.sessionId,s.boundary)}catch(i){this.broadcast({type:"error",data:{message:i instanceof Error?i.message:String(i)}})}this.broadcast({type:"command_done",data:null})}async handlePlan(a){if(!this.agentHandle)return;let i=this.agentHandle,n=i.workDir,s=Qa(n);if(this.broadcast({type:"system",data:{message:`Entered Plan mode. Plan file: ${s}
|
|
38
38
|
Explore the codebase and design your approach.`}}),a){this.streaming=!0,oe(n,i.sessionId,{role:"user",content:`/plan ${a}`,timestamp:Math.floor(Date.now()/1e3)});let o=Date.now();try{let t={onPermissionRequest:this.createPermissionCallback()},r="";for await(let c of i.run(a,t))(c.type==="tool_result"||c.type==="turn_complete"||c.type==="loop_complete")&&r&&(this.broadcast({type:"stream_end",data:{text:r}}),r=""),this.bridgeEvent(c,o,n,i.sessionId,p=>{r+=p})}catch(t){C.error({err:t},"agent stream error in plan command"),this.broadcast({type:"error",data:{message:t instanceof Error?t.message:String(t)}})}finally{this.streaming=!1}}else this.broadcast({type:"command_done",data:null})}handleResume(a){if(!this.agentHandle)return;let i=this.agentHandle,n=i.workDir,s=te(n);if(!a){if(s.length===0){this.broadcast({type:"system",data:{message:"No previous sessions found."}}),this.broadcast({type:"command_done",data:null});return}let p=[`Available sessions (${String(s.length)}):
|
|
39
39
|
`];for(let m=0;m<Math.min(s.length,20);m++){let u=s[m],d=u.firstMessage;d.length>60&&(d=d.slice(0,60)+"..."),p.push(` ${String(m+1)}. [${u.id}] ${d} (${String(u.messageCount)} msgs)`)}s.length>20&&p.push(` ... and ${String(s.length-20)} more`),p.push(`
|
|
40
40
|
Usage: /resume <number> or /resume <sess-id>`),this.broadcast({type:"system",data:{message:p.join(`
|
|
41
|
-
`)}}),this.broadcast({type:"command_done",data:null});return}let o=a.trim(),t=parseInt(o,10);!Number.isNaN(t)&&t>=1&&t<=s.length&&(o=s[t-1].id);let r=Xa(n,o);if(r.length===0){this.broadcast({type:"error",data:{message:`Session '${o}' not found or empty.`}}),this.broadcast({type:"command_done",data:null});return}i.conv=new L,i.sessionId=o;let c=Wa(r);this.broadcast({type:"clear",data:null});for(let p of c)p.toolUses?.length?i.conv.addAssistantMessageWithTools(p.content,p.toolUses.map(m=>({...m,arguments:m.arguments??{}}))):p.toolResults?.length?i.conv.addToolResultsMessage(p.toolResults.map(m=>({...m,isError:m.isError??!1}))):p.role==="user"?i.conv.addUserMessage(p.content):i.conv.addAssistantMessage(p.content),p.content&&(p.role==="user"?this.broadcast({type:"replay_user",data:{content:p.content}}):this.broadcast({type:"replay_assistant",data:{content:p.content}}));this.broadcast({type:"system",data:{message:`Session ${o} restored (${String(c.length)} messages).`}}),this.broadcast({type:"command_done",data:null})}createAskUserCallback(){return async a=>{let i=`ask_${Date.now().toString(36)}`;return this.broadcast({type:"ask_user",data:{id:i,questions:a}}),new Promise(n=>{this.pendingAsks.set(i,n)})}}createPermissionCallback(){return async(a,i,n)=>{let s=`perm_${Date.now().toString(36)}`,o=Vo(a,i,n);return this.broadcast({type:"permission_request",data:{id:s,toolName:a,description:o}}),new Promise(t=>{this.pendingPermissions.set(s,t)})}}buildCommandList(){return this.agentHandle?this.agentHandle.cmdRegistry.listCommands().map(a=>({name:a.name,description:a.description})):
|
|
41
|
+
`)}}),this.broadcast({type:"command_done",data:null});return}let o=a.trim(),t=parseInt(o,10);!Number.isNaN(t)&&t>=1&&t<=s.length&&(o=s[t-1].id);let r=Xa(n,o);if(r.length===0){this.broadcast({type:"error",data:{message:`Session '${o}' not found or empty.`}}),this.broadcast({type:"command_done",data:null});return}i.conv=new L,i.sessionId=o;let c=Wa(r);this.broadcast({type:"clear",data:null});for(let p of c)p.toolUses?.length?i.conv.addAssistantMessageWithTools(p.content,p.toolUses.map(m=>({...m,arguments:m.arguments??{}}))):p.toolResults?.length?i.conv.addToolResultsMessage(p.toolResults.map(m=>({...m,isError:m.isError??!1}))):p.role==="user"?i.conv.addUserMessage(p.content):i.conv.addAssistantMessage(p.content),p.content&&(p.role==="user"?this.broadcast({type:"replay_user",data:{content:p.content}}):this.broadcast({type:"replay_assistant",data:{content:p.content}}));this.broadcast({type:"system",data:{message:`Session ${o} restored (${String(c.length)} messages).`}}),this.broadcast({type:"command_done",data:null})}createAskUserCallback(){return async a=>{let i=`ask_${Date.now().toString(36)}`;return this.broadcast({type:"ask_user",data:{id:i,questions:a}}),new Promise(n=>{this.pendingAsks.set(i,n)})}}createPermissionCallback(){return async(a,i,n)=>{let s=`perm_${Date.now().toString(36)}`,o=Vo(a,i,n);return this.broadcast({type:"permission_request",data:{id:s,toolName:a,description:o}}),new Promise(t=>{this.pendingPermissions.set(s,t)})}}buildCommandList(){return this.agentHandle?this.agentHandle.cmdRegistry.listCommands().map(a=>({name:a.name,description:a.description})):Be().listCommands().map(i=>({name:i.name,description:i.description}))}send(a,i){if(a.readyState===Ue.default.OPEN)try{a.send(JSON.stringify(i))}catch{}}broadcast(a){if(this.clients.size===0)return;let i=JSON.stringify(a);for(let n of this.clients)if(n.readyState===Ue.default.OPEN)try{n.send(i)}catch{}}async run(){try{this.agentHandle=await Ko({provider:this.opts.providers[0],workDir:ae(),hooks:this.opts.hookConfigs,mcpServers:this.opts.mcpServers,askUser:this.createAskUserCallback(),enableCoordinatorMode:this.opts.enableCoordinatorMode,forkDisabled:this.opts.forkDisabled}),C.info({sessionId:this.agentHandle.sessionId},"agent initialized")}catch(s){C.warn({err:s},"agent init deferred -- will retry on first message"),this.agentHandle=null}let a=this.opts.addr.split(":"),i=a[0]||"0.0.0.0",n=parseInt(a[1]??"18888",10);return new Promise((s,o)=>{this.server.on("error",o),this.server.listen(n,i,()=>{C.info({host:i,port:n},"Koa server listening"),C.info({host:i,port:n},"WebSocket server ready"),s()})})}stop(){for(let a of this.clients)a.close();this.clients.clear(),this.wss.close(),this.server.close()}};export{Qo as RemoteServer,Ko as createRemoteAgent};
|
|
42
42
|
/*! Bundled license information:
|
|
43
43
|
|
|
44
44
|
ee-first/index.js:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@swifty.js/swifty",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"description": "Swifty — CLI coding agent",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -90,6 +90,7 @@
|
|
|
90
90
|
"@types/ws": "^8.18.1",
|
|
91
91
|
"@vitest/coverage-v8": "^4.1.10",
|
|
92
92
|
"eslint": "^9.39.5",
|
|
93
|
+
"eslint-plugin-import": "^2.32.0",
|
|
93
94
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
94
95
|
"eslint-plugin-react-refresh": "^0.5.3",
|
|
95
96
|
"eslint-plugin-unicorn": "^65.0.1",
|
package/dist/chunk-HU7ELU2V.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { createRequire as __swiftyCreateRequire } from "node:module";
|
|
3
|
-
const require = __swiftyCreateRequire(import.meta.url);
|
|
4
|
-
import{a as S}from"./chunk-7MHXMDYC.js";import{H as o,e as x,g as u,h as m}from"./chunk-4KVSJNS6.js";import{existsSync as E,readFileSync as $}from"fs";import{homedir as I}from"os";import{join as d}from"path";function p(e){return!!e._zod}function c(e,n){return p(e)?u(e,n):e.safeParse(n)}async function ee(e,n){return p(e)?await m(e,n):await e.safeParseAsync(n)}function oe(e){if(!e)return;let n;if(p(e)?n=e._zod?.def?.shape:n=e.shape,!!n){if(typeof n=="function")try{return n()}catch{return}return n}}function ne(e){if(p(e)){let s=e._zod?.def;if(s){if(s.value!==void 0)return s.value;if(Array.isArray(s.values)&&s.values.length>0)return s.values[0]}}let t=e._def;if(t){if(t.value!==void 0)return t.value;if(Array.isArray(t.values)&&t.values.length>0)return t.values[0]}let r=e.value;if(r!==void 0)return r}var g=x({module:"config"}),A={anthropic:"ANTHROPIC_API_KEY",openai:"OPENAI_API_KEY","openai-compat":"OPENAI_API_KEY"};function N(e){return _.has(e)}var _=new Set(Object.keys(A)),l=class extends Error{constructor(n){super(n),this.name="ConfigError"}},P=o.object({name:o.string(),protocol:o.enum(["anthropic","openai","openai-compat"]),base_url:o.string(),model:o.string(),api_key:o.string().optional(),thinking:o.boolean().optional(),context_window:o.coerce.number().optional(),max_output_tokens:o.coerce.number().optional()}),V=[["1m",1e6],["gpt-4.1",1e6],["gpt-4o",128e3],["gpt-4-turbo",128e3],["o1",2e5],["o3",2e5],["o4",2e5],["gpt-3.5",16385],["claude",2e5]];function j(e){let n=e.toLowerCase();for(let[t,r]of V)if(n.includes(t))return r;return n.includes("claude")?2e5:128e3}function le(e){return e.context_window&&e.context_window>0?e.context_window:j(e.model)}var w=new Map;async function pe(e,n){if(e.context_window&&e.context_window>0)return e.context_window;if(e.protocol==="anthropic"){let t=`${e.name}-${e.model}`,r=w.get(t);if(r===void 0){try{r=await(n??(await import("./anthropic-25O6Y2EC.js")).fetchModelContextWindow)(e)}catch(i){g.error({err:i},"config operation failed"),r=0}w.set(t,r)}if(r&&r>0)return r}return j(e.model)}function ue(e){return e.max_output_tokens&&e.max_output_tokens>0?e.max_output_tokens:e.thinking?64e3:8192}function me(e){if(e.api_key)return e.api_key;let n=N(e.protocol)?A[e.protocol]:"";return n?process.env[n]??"":""}var z=o.object({name:o.string(),command:o.string().optional(),args:o.array(o.string()).optional(),url:o.string().optional(),transport:o.string().optional(),headers:o.record(o.string(),o.string()).optional(),env:o.record(o.string(),o.string()).optional()}),O=o.object({id:o.string().optional(),event:o.string(),condition:o.string().optional(),action:o.object({type:o.string(),command:o.string().optional(),url:o.string().optional(),method:o.string().optional(),prompt:o.string().optional()}),reject:o.boolean().optional(),once:o.boolean().optional(),async:o.boolean().optional(),on_error:o.string().optional()}),M=o.object({enabled:o.boolean().optional(),auto_allow:o.boolean().optional(),network_enabled:o.boolean().optional()}),T=o.object({providers:o.array(P),permission_mode:o.string().optional(),mcp_servers:o.array(z).default([]),hooks:o.array(O).default([]),sandbox:M.optional(),enable_coordinator_mode:o.boolean().optional(),enable_fork:o.boolean().optional()});function ge(e){return e.enable_fork!==!1}function Y(e){return typeof e=="object"&&e!==null}function C(e){let n=$(e,"utf-8"),t=S.load(n);if(!Y(t))return g.error({path:e},"invalid yaml"),{providers:[],mcp_servers:[],hooks:[]};let r=c(T,t);if(r.success){let a=r.data;return{providers:a.providers,permission_mode:a.permission_mode,mcp_servers:a.mcp_servers,hooks:a.hooks}}g.error({error:r.error},"config error");let i=[],s,f=[],y=[],v,b=!1,h=!0;if("providers"in t){let a=c(o.array(P),t.providers);a.success&&(i=a.data)}if("permission_mode"in t&&typeof t.permission_mode=="string"&&(s=t.permission_mode),"mcp_servers"in t){let a=c(o.array(z),t.mcp_servers);a.success&&(f=a.data)}if("hooks"in t){let a=c(o.array(O),t.hooks);a.success&&(y=a.data)}if("sandbox"in t){let a=c(M,t.sandbox);a.success&&(v=a.data)}return"enable_coordinator_mode"in t&&(b=!!t.enable_coordinator_mode),"enable_fork"in t&&(h=!!t.enable_fork),{providers:i,permission_mode:s,mcp_servers:f,hooks:y,sandbox:v,enable_coordinator_mode:b,enable_fork:h}}function K(e,n){if(n.providers.length>0&&(e.providers=n.providers),n.permission_mode&&(e.permission_mode=n.permission_mode),n.mcp_servers.length>0){let t=new Map;for(let r=0;r<e.mcp_servers.length;r++){let i=e.mcp_servers[r];t.set(i.name,r)}for(let r of n.mcp_servers){let i=t.get(r.name);i!==void 0?e.mcp_servers[i]=r:(e.mcp_servers.push(r),t.set(r.name,e.mcp_servers.length-1))}}return e.hooks=[...e.hooks,...n.hooks],n.sandbox&&(e.sandbox={...e.sandbox,...n.sandbox}),n.enable_coordinator_mode&&(e.enable_coordinator_mode=!0),n.enable_fork!==void 0&&(e.enable_fork=n.enable_fork),e}function k(e){if(e.providers.length===0)throw new l("At least one provider MUST be configured.");let n=["name","protocol","base_url","model"];for(let t=0;t<e.providers.length;t++){let r=e.providers[t],i={name:r.name,protocol:r.protocol,base_url:r.base_url,model:r.model},s=n.filter(f=>!(f in i));if(s.length>0)throw new l(`Provider #${String(t+1)}: missing fields: ${s.join(", ")}`);if(!_.has(r.protocol))throw new l(`Provider #${String(t+1)}: invalid protocol '${r.protocol}', MUST be one of: ${Array.from(_).join(", ")}`)}}function _e(e){if(e){let s=C(e);return k(s),s}let n=process.cwd(),t=I(),r=[d(t,".swifty","config.yml"),d(t,".swifty","config.yaml"),d(n,".swifty","config.yml"),d(n,".swifty","config.yaml"),d(n,".swifty","config.local.yml"),d(n,".swifty","config.local.yaml")],i=null;for(let s of r){if(!E(s))continue;let f=C(s);i?i=K(i,f):i=f}if(!i)throw new l("No config file found, expected .swifty/config.y(a)ml under project or $HOME/.swifty/config.y(a)ml.");return k(i),i}export{c as a,ee as b,oe as c,ne as d,le as e,pe as f,ue as g,me as h,ge as i,_e as j};
|