promptgun 1.6.74 → 1.6.76
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/build/index.d.ts +0 -27
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/build/index.d.ts
CHANGED
|
@@ -524,7 +524,6 @@ export declare const AiModel: {
|
|
|
524
524
|
*/
|
|
525
525
|
readonly gpt_4o_realtime_preview: "gpt-4o-realtime-preview";
|
|
526
526
|
/**
|
|
527
|
-
* "OpenAI model ID: gpt-4o-realtime-preview-2024-10-01"
|
|
528
527
|
* | Attribute | Rating | Value |
|
|
529
528
|
* |----------------|-----------------|----------------|
|
|
530
529
|
* | Intelligence | ○○○○ | High |
|
|
@@ -992,32 +991,6 @@ export declare const AiModel: {
|
|
|
992
991
|
* [Official doc](https://platform.openai.com/docs/models/o1-2024-12-17)
|
|
993
992
|
*/
|
|
994
993
|
readonly o1_2024_12_17: "o1-2024-12-17";
|
|
995
|
-
/**
|
|
996
|
-
* | Attribute | Rating | Value |
|
|
997
|
-
* |----------------|-----------------|----------------|
|
|
998
|
-
* | Intelligence | ○○○○ | High |
|
|
999
|
-
* | Speed | ○○○ | Moderate |
|
|
1000
|
-
* | | Input | Output |
|
|
1001
|
-
* | Type | Text | Text |
|
|
1002
|
-
* | Price | \$3.00/1M tokens | \$12.00/1M tokens |
|
|
1003
|
-
*
|
|
1004
|
-
* Note, this documentation is auto-generated and may contain errors. For the most accurate information, please refer to the official documentation.
|
|
1005
|
-
* [Official doc](https://platform.openai.com/docs/models/o1-mini)
|
|
1006
|
-
*/
|
|
1007
|
-
readonly o1_mini: "o1-mini";
|
|
1008
|
-
/**
|
|
1009
|
-
* | Attribute | Rating | Value |
|
|
1010
|
-
* |----------------|-----------------|----------------|
|
|
1011
|
-
* | Intelligence | ○○○○ | High |
|
|
1012
|
-
* | Speed | ○○○ | Moderate |
|
|
1013
|
-
* | | Input | Output |
|
|
1014
|
-
* | Type | Text | Text |
|
|
1015
|
-
* | Price | \$3.00/1M tokens | \$12.00/1M tokens |
|
|
1016
|
-
*
|
|
1017
|
-
* Note, this documentation is auto-generated and may contain errors. For the most accurate information, please refer to the official documentation.
|
|
1018
|
-
* [Official doc](https://platform.openai.com/docs/models/o1-mini-2024-09-12)
|
|
1019
|
-
*/
|
|
1020
|
-
readonly o1_mini_2024_09_12: "o1-mini-2024-09-12";
|
|
1021
994
|
/**
|
|
1022
995
|
* | Attribute | Rating | Value |
|
|
1023
996
|
* |----------------|-----------------|----------------|
|
package/build/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t=Object.create,e=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,n=Object.getPrototypeOf,s={}.hasOwnProperty,o=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),a=(o,a,l)=>(l=null!=o?t(n(o)):{},((t,n,o,a)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let o of i(n))!s.call(t,o)&&void 0!==o&&e(t,o,{get:()=>n[o],enumerable:!(a=r(n,o))||a.enumerable});return t})(!a&&o&&o.t?l:e(l,"default",{value:o,enumerable:!0}),o)),l=o((t=>{"use strict";Object.defineProperty(t,"t",{value:!0}),t.Flux=void 0;var e=class t{generator;upstream;handleCancel;i=!1;constructor(t,e,i){let n=this;this.generator=async function*(){try{yield*t}catch(t){throw yield r,t}finally{n.i=!0}}(),this.upstream=e,this.handleCancel=i}[Symbol.asyncIterator](){return this}async next(...t){let e=await this.generator.next(t);return e.value!==r?e:await this.next(t)}return(t){return this.generator.return(t)}throw(t){return this.generator.throw(t)}async cancel(t){if(!this.closed){if(void 0!==this.upstream)return this.upstream.cancel(t);void 0!==this.handleCancel?this.handleCancel(t):await this.throw(t)}}async then(t,e){try{let e=await this.asList();return null!=t?await t(e):e}catch(t){if(null!=e)return e(t);throw t}}async catch(t){try{return this.asList()}catch(e){if(null!=t)return t(e);throw e}}async finally(t){let e=await this.asList();return t?.(),e}get[Symbol.toStringTag](){return"Flux"}subscribe(t){let e=void 0!==t?this.doOnEach(t):this,r=()=>{e.next().then((t=>{t.done||r()})).catch((t=>{console.error(t)}))};return r(),{unsubscribe:()=>this.return()}}filter(e){let r=this;return t.constructFromGeneratorFunction((async function*(){for await(let t of r)e(t)&&(yield t)}),this)}untilExcl(e){let r=this;return t.constructFromGeneratorFunction((async function*(){for await(let t of r){if(e(t))break;yield t}}),this)}doOnEach(e){let r=this;return t.constructFromGeneratorFunction((async function*(){for await(let t of r)e(t),yield t}),this)}doAfterLast(e){let r=this,i=[];return t.constructFromGeneratorFunction((async function*(){for await(let t of r)i.push(t),yield t;await e(i)}),this)}map(e){let r=this;return t.constructFromGeneratorFunction((async function*(){for await(let t of r)yield e(t)}),this)}take(e){let r=this;return t.constructFromGeneratorFunction((async function*(){let t=0;for await(let i of r){if(t>=e){r.cancel();break}t++,yield i}}),this)}delayElements(e){let r=this;return t.constructFromGeneratorFunction((async function*(){for await(let t of r)await new Promise((t=>setTimeout(t,e))),yield t}),this)}flatMap(e,r){let i=this;return t.constructFromGeneratorFunction((async function*(){let n=i[Symbol.asyncIterator](),s=await n.next();if(s.done)return;let o=e(s.value),a=r?.concurrency;Array.isArray(o)?yield*function(t,e,r,i){return async function*(){for(let t of r)yield t;let e=await i.next();for(;!e.done;){let r=t(e.value);for(let t of r)yield t;e=await i.next()}}()}(e,0,o,n):o instanceof t?yield*function(t,e,r,i,n){return async function*(){let s=[e],o=await i.next();for(;!o.done;)s.push(o.value),o=await i.next();let a=Array(s.length),l=new Map,u=new Set,h=0;if(void 0===n)for(let e=0;e<s.length;e++){let i=e,n=0===i?r:t(s[i]);a[i]=n,l.set(i,[]),(async()=>{try{for await(let t of n)l.get(i).push(t)}catch(t){l.get(i).push({o:t})}finally{u.add(i)}})()}else{let e=0,i=0,o=()=>{for(;i<n&&e<s.length;){let n=e;e++,i++;let h=0===n?r:t(s[n]);a[n]=h,l.set(n,[]),(async()=>{try{for await(let t of h)l.get(n).push(t)}catch(t){l.get(n).push({o:t})}finally{u.add(n),i--,o()}})()}};o()}for(;h<a.length;){let t=l.get(h);for(;!u.has(h)||t.length>0;){for(;0===t.length&&!u.has(h);)await new Promise((t=>setTimeout(t,1)));for(;t.length>0;){let e=t.shift();if(e&&"object"==typeof e&&"o"in e)throw e.o;yield e}}h++}}()}(e,s.value,o,n,a):yield*function(t,e,r,i,n){return async function*(){let s=[],o=[],a=[],l=new Set,u=0,h=0,p=!1,c=0,f=(e,r,i)=>{let u=i||t(e);s[r]=u,u.then((t=>{o[r]=t,l.add(r),void 0!==n&&c--})).catch((t=>{a[r]=t,l.add(r),void 0!==n&&c--})),void 0!==n&&c++};f(e,h++,r);let m=(async()=>{let t=await i.next();for(;!t.done;){if(void 0!==n)for(;c>=n;)await new Promise((t=>setTimeout(t,0)));f(t.value,h++),t=await i.next()}p=!0})();for(;;){for(;!l.has(u);){if(p&&u>=s.length)return;await new Promise((t=>setTimeout(t,0)))}if(p&&u>=s.length)break;if(void 0!==a[u])throw a[u];void 0!==o[u]&&(yield o[u]),u++}await m}()}(e,s.value,o,n,a)}),this)}transform(e){let r=e(this);return t.constructFromGeneratorFunction((async function*(){for await(let t of r)yield t}),this)}async reduce(t,e){let r=e;for await(let e of this)r=t(r,e);return r}async asList(){let t=[];for await(let e of this)t.push(e);return t}async whenComplete(){for await(let t of this);}static create(e){let r,i=[],n=[],s=!1,o=t=>{if(s)throw Error("Cannot push to a completed generator");n.length>0?n.shift().resolve({done:!1,value:t}):i.push(t)},a=()=>{for(s=!0;n.length>0;)n.shift().resolve({done:!0,value:void 0})},l=t=>{r={value:t},n.shift()?.reject(t)};return(async()=>{try{await e(o,a,l),(!s||void 0===r)&&a()}catch(t){l(t)}})(),t.fromGenerator({[Symbol.asyncIterator](){return this},next(...t){if(r){let t=r.value;return r=void 0,Promise.reject(t)}if(i.length>0){let t=i.shift();return Promise.resolve({done:!1,value:t})}return s?Promise.resolve({done:!0,value:void 0}):new Promise(((t,e)=>{n.push({resolve:t,reject:e})}))},return:()=>(a(),Promise.resolve({done:!0,value:void 0})),throw:t=>(l(t),Promise.reject(t))})}static just(...e){return t.from(e)}static from(e,r){if(Array.isArray(e))return t.fromArray(e);if("function"==typeof e)return t.fromGeneratorFunction(e,r);if(e instanceof ReadableStream)return t.fromReadableStream(e,r);if(function(t){return null!==t&&"object"==typeof t&&"function"==typeof t.next&&"function"==typeof t.return&&"function"==typeof t.throw&&Symbol.asyncIterator in t}(e))return t.fromGenerator(e,r);throw new TypeError("Source must be an Array, AsyncGenerator, ReadableStream, or a generator function")}static fromArray(e){return t.fromGeneratorFunction((async function*(){for(let t of e)yield t}))}static constructFromGeneratorFunction(e,r,i){return new t(e(),r,i)}static fromGeneratorFunction(e,r){return t.constructFromGeneratorFunction(e,void 0,r)}static fromGenerator(e,r){return new t(e,void 0,r)}static fromReadableStream(e,r){return t.fromGeneratorFunction((async function*(){let t=e.getReader();try{let e;for(;!(e=await t.read()).done;)yield e.value}finally{await t.cancel()}}),r)}get closed(){return this.i}};t.Flux=e;var r={}})),u=o((t=>{"use strict";Object.defineProperty(t,"t",{value:!0}),t.Flux=void 0;var e=l();Object.defineProperty(t,"Flux",{enumerable:!0,get:function(){return e.Flux}})})),h=a(u(),1);function p(t){return!(t.startsWith("gpt-")||t.startsWith("o1-")||"o1"===t||"o3-mini"===t||"o3"===t)}var c=a(u(),1);import{Agent as f}from"node:https";function m(t,e){let r={url:"https://api.openai.com/v1/responses",method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json",Authorization:`Bearer ${e.slice(0,7)}...${e.slice(-4)}`},body:t};return{flux:c.Flux.fromGeneratorFunction((async function*(){let r=new AbortController,i=await fetch("https://api.openai.com/v1/responses",{headers:{"Content-Type":"application/json",Accept:"application/json",Authorization:"Bearer "+e},method:"POST",signal:r.signal,body:JSON.stringify(t),agent:_,bodyTimeout:216e5});if(i.status<200||i.status>=300){let t=function(t){try{return JSON.parse(t).error.message}catch{return t}}(await i.text());throw Error("OpenAPI reported: "+t)}if(null===i.body)throw Error("illegal state");let n="";yield*c.Flux.fromReadableStream(i.body,(()=>r.abort())).map((t=>d.decode(t,{stream:!0}))).flatMap((t=>{n+=t;let e=[],r=n.split("\n\n");n=r.pop()||"";for(let t of r)t.trim()&&e.push(t.trim());return e})).flatMap((t=>{let e=t.split("\n"),r="";for(let t of e)t.startsWith("data: ")&&(r+=t.substring(6));if(!r)return[];try{return[JSON.parse(r)]}catch{return[]}}))})),httpRequest:r}}var d=new TextDecoder,_=new f({timeout:0}),y=class extends Error{data;httpStatus=400;constructor(t,e){let r=t.map((t=>{if(t.expectedProp)return{expectedProp:(t.path+".").replace(/^root\./,"")+t.expectedProp};if(t.expectedType)return{expectedType:t.expectedType.map(T).join(" | "),path:t.path,insteadGot:t.value};if(t.unknownProp)return{unknownProp:(t.path+".").replace(/^root\./,"")+t.unknownProp};throw Error("illegal state")}));super(e??"Value is of the wrong format: "+JSON.stringify(r,null,2)),this.data=r}};function w(t){return new b([],t)}function g(t,e,r,i){let n=e.map((e=>function(t,e,r,i){let{ignoreUnknownProps:n=!0}=i;switch(e.type){case"array":return Array.isArray(t)?0===t.length?[]:g(t[0],e.elementType,r+"[..]",i):[{expectedType:[e],path:r,value:t}];case"boolean":return"boolean"!=typeof t?[{expectedType:[e],path:r,value:t}]:[];case"undefined":return void 0===t?[]:[{expectedType:[e],path:r,value:t}];case"object":{if("object"!=typeof t||null===t)return[{expectedType:[e],path:r,value:t}];let s=[];for(let n in e.props){let o=e.props[n];if(!(n in t)){o.optional||s.push({expectedProp:n,path:r,value:t});continue}let a=o.optional?[...o.type,{type:"undefined"}]:o.type;s.push(...g(t[n],a,r+"."+n,i))}if(!n)for(let i in t)i in e.props||s.push({unknownProp:i,path:r,value:t});return s}case"string":return"string"==typeof t?[]:[{expectedType:[e],path:r,value:t}];case"null":return null===t?[]:[{expectedType:[e],path:r,value:t}];case"number":return"number"==typeof t?[]:[{expectedType:[e],path:r,value:t}];case"constant":return t!==e.value||Number.isNaN(t)?[{expectedType:[e],path:r,value:t}]:[]}}(t,e,r,i)));if(n.some((t=>0===t.length)))return[];{let e=n.flatMap((t=>t.filter((t=>void 0!==t.expectedType&&t.path===r))));return e.length>0?[{expectedType:e.flatMap((t=>t.expectedType)),path:r,value:t}]:n.flatMap((t=>t))}}var v,b=class t{type;value;constructor(t=[],e){this.type=t,this.value=e}canBeArray(e){let r=e(new t([],this.value)),i=new t([{type:"array",elementType:r.type}],this.value);return new t([...this.type,...i.type],this.value)}canBeObject(e){let r=e(new t([{type:"object",props:{}}],this.value));return new t([...this.type,...r.type],this.value)}hasString(t){return this.has(t,(t=>t.canBeString()))}hasNumber(t){return this.has(t,(t=>t.canBeNumber()))}canHaveProperty(t,e){return this.has(t,e,!0)}has(e,r,i=!1){let n=1===this.type.length?this.type[0]:void 0;if(void 0===n||"object"!==n.type)throw Error("illegal state");let{type:s}=r(new t([],this.value));return new t([{...n,props:{...n.props,[e]:{optional:i,type:s}}}],this.value)}canBeString(){return new t([...this.type,{type:"string"}],this.value)}canBeNumber(){return new t([...this.type,{type:"number"}],this.value)}canBeBoolean(){return new t([...this.type,{type:"boolean"}],this.value)}canBeConstant(e){return new t([...this.type,{type:"constant",value:e}],this.value)}canBeNull(){return new t([...this.type,{type:"null"}],this.value)}canBeUndefined(){return new t([...this.type,{type:"undefined"}],this.value)}andNothingElse(t={}){let e=g(this.value,this.type,"root",t);if(e.length>0)throw new y(e,t.errorMessage);return this.value}orDefaultTo(t,e={}){return g(this.value,this.type,"root",e).length>0?t:this.value}describe(){return E(this.type)}};function E(t,e=0){if(Array.isArray(t))return t.map((t=>E(t,e))).join(" | ");switch(t.type){case"array":return E(t.elementType,e)+"[]";case"boolean":return"boolean";case"undefined":return"undefined";case"object":return"{\n"+Object.keys(t.props).map((r=>`${A(e+1)}${r}: ${E(t.props[r].type,e+1)}`)).join(",\n")+`\n${A(e)}}`;case"string":return"string";case"null":return"null";case"number":return"number";case"constant":return`"${t.value}"`}}function A(t){let e="";for(let r=0;r<t;r++)e+=" ";return e}function T(t){return"constant"===t.type?`'${t.value}'`:t.type}import{config as S}from"dotenv";function N(){if(!v){S();let t=function(){let t="t";t+="ps",t="ht"+t,t+=":",t+="/",t+="/ap",t+="i.pr";let e="i";return e="d.a"+e,e="gri"+e,t+="ompt",t+e}();v=w(t).canBeString().andNothingElse({errorMessage:"PromptGrid API URL invalid: "+t})}return v}var x=class{constructor(t,e,r,i,n=!1){this.type=t,this.source=e,this.value=r,this.fieldName=i,this.maybeIncomplete=n}},U=class t{jsonBuffer="";highestOffsetParsed=-1;static toJsonTokenFlux(e){return(new t).processDataBuffer(e)}processDataBuffer(t){return t.flatMap((t=>this.getExcerpts(t)))}getExcerpts(t){this.jsonBuffer+=t;let e,r=[],i=new P(this.jsonBuffer);for(;e=this.nextToken(i);)i.currentTokenLocation().getCharOffset()>this.highestOffsetParsed&&!e.maybeIncomplete&&(r.push({token:e}),this.highestOffsetParsed=i.currentTokenLocation().getCharOffset());return r.push({source:t}),r}nextToken(t){let e=t.nextToken();return"string"!=typeof e?e:void 0}},P=class{constructor(t){this.content=t}position=0;currentTokenType;parentFieldName;currentValue=null;context=[];nextToken(){let t=this.position;if(this.position>=this.content.length)return"string-ended";for(;this.position<this.content.length&&/\s/.test(this.content[this.position]);)this.position++;if(this.position>=this.content.length)return"string-ended";let e=e=>this.content.substring(t,e),r=this.content[this.position];switch(r){case"{":return this.position++,this.currentTokenType="START_OBJECT",this.pushContext("object"),new x(this.currentTokenType,e(this.position),void 0,this.parentFieldName);case"}":{this.position++,this.currentTokenType="END_OBJECT";let t=new x(this.currentTokenType,e(this.position),void 0,this.parentFieldName);return this.parentFieldName=void 0,this.popContext("object"),"field"===this.currentContextType&&this.popContext("field"),t}case"[":return this.position++,this.currentTokenType="START_ARRAY",this.pushContext("array"),new x(this.currentTokenType,e(this.position),void 0,this.parentFieldName);case"]":{this.position++,this.currentTokenType="END_ARRAY";let t=new x(this.currentTokenType,e(this.position),void 0,this.parentFieldName);return this.parentFieldName=void 0,this.popContext("array"),"field"===this.currentContextType&&this.popContext("field"),t}case'"':if("object"===this.currentContextType){this.currentTokenType="FIELD_NAME";let t=++this.position,r=this.content.indexOf('"',t);for(;r>=0&&"\\"===this.content[r-1];)r=this.content.indexOf('"',r+1);if(-1===r)return"token-incomplete";let i=this.content.substring(t,r);for(r++;r<this.content.length&&/\s/.test(this.content[r]);)r++;if(r===this.content.length)return"token-incomplete";if(":"!==this.content[r])throw Error("Expected token ':'");r++,this.position=r;let n=new x(this.currentTokenType,e(this.position),i,void 0);return this.parentFieldName=i,this.pushContext("field"),n}{this.currentTokenType="VALUE_STRING";let t=++this.position,r=this.content.indexOf('"',t);for(;r>0&&"\\"===this.content[r-1];)r=this.content.indexOf('"',r+1);if(-1===r)return"token-incomplete";let i=this.content.substring(t,r);this.position=r+1,this.currentValue=i;let n=new x(this.currentTokenType,e(this.position),i,"VALUE_STRING"===this.currentTokenType?this.parentFieldName:void 0);return this.parentFieldName=void 0,"field"===this.currentContextType&&this.popContext("field"),n}case"t":{let t=this.content.substring(this.position,this.position+4);if("true"===t)return this.position+=4,this.currentTokenType="VALUE_TRUE",this.currentValue=!0,"field"===this.currentContextType&&this.popContext("field"),new x(this.currentTokenType,e(this.position),this.currentValue,this.parentFieldName);if(t.length<4)return"token-incomplete";break}case"f":{let t=this.content.substring(this.position,this.position+5);if("false"===t)return this.position+=5,this.currentTokenType="VALUE_FALSE",this.currentValue=!1,"field"===this.currentContextType&&this.popContext("field"),new x(this.currentTokenType,e(this.position),this.currentValue,this.parentFieldName);if(t.length<5)return"token-incomplete";break}case"n":{let t=this.content.substring(this.position,this.position+4);if("null"===t)return this.position+=4,this.currentTokenType="VALUE_NULL",this.currentValue=null,"field"===this.currentContextType&&this.popContext("field"),new x(this.currentTokenType,e(this.position),this.currentValue,this.parentFieldName);if(t.length<4)return"token-incomplete";break}case",":return this.position++,this.currentTokenType="COMMA",new x(this.currentTokenType,e(this.position),void 0,void 0,!1);default:if(/[0-9-]/.test(r)){let t="",r=!1;for(;this.position<this.content.length&&(/[0-9]/.test(this.content[this.position])||"-"===this.content[this.position]||"."===this.content[this.position]||"e"===this.content[this.position]||"E"===this.content[this.position]||"+"===this.content[this.position]);)"."===this.content[this.position]&&(r=!0),t+=this.content[this.position++];r?(this.currentTokenType="VALUE_NUMBER_FLOAT",this.currentValue=parseFloat(t)):(this.currentTokenType="VALUE_NUMBER_INT",this.currentValue=parseInt(t,10));let i=this.position>=this.content.length;return"field"===this.currentContextType&&this.popContext("field"),new x(this.currentTokenType,e(this.position),this.currentValue,this.parentFieldName,i)}}throw new L(`Invalid JSON at position ${this.position} of content: ${this.content}`)}currentTokenLocation(){return{getCharOffset:()=>this.position}}get currentContextType(){return this.context[this.context.length-1]}pushContext(t){this.context.push(t)}popContext(t){if(0===this.context.length)throw Error("Cannot pop context, context empty");let e=this.currentContextType;if(e!==t)throw Error(`Cannot pop context \`${t}', current context '${e}'`);this.context.pop()}},L=class extends Error{constructor(t){super(t),this.name="JsonParseException"}},C=a(u(),1);function k(t){return null!=t}var j=class{receivedJson=[];propertyCallbacks=new Map;onElementCallbacks=new Set;onCompleteCallbacks=new Set;onEachExcerptCallbacks=new Set;currentToken;state=new I;receivedExcerpts=[];onElement(t){return this.onElementCallbacks.add(t),this}onProperty(t,e){return this.propertyCallbacks.has(t)||this.propertyCallbacks.set(t,[]),this.propertyCallbacks.get(t).push(e),this}onJsonStringProperty(t,e){return this.propertyCallbacks.has(t)||this.propertyCallbacks.set(t,[]),this.propertyCallbacks.get(t).push((t=>{let r=new F,i=[],n=new G;t.onEachExcerpt((t=>{void 0!==t.source&&i.push(t.source);let e=i.join(""),s=this.endsOnUnevenNumberOfBackslashes(e)?e.substring(0,e.length-1):e;i.length=0;let o=s.replace(/\\"/g,'"').substring(1),a=null!=t.token?o.substring(0,o.length-1):o;r.getExcerpts(a).forEach((t=>n.push(t)))})),e(n)})),this}onEachExcerpt(t){return this.onEachExcerptCallbacks.add(t),this.receivedExcerpts.forEach(t),this}async then(t,e){try{let e=await this.getResponseAsPromise();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponseAsPromise()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponseAsPromise()}finally{t?.()}}get[Symbol.toStringTag](){return"StreamedJsonElement"}getResponseAsPromise(){return new Promise((t=>{this.onCompleteAs(t)}))}onComplete(t){this.l(this.toAsync(t),void 0)}l(t,e){this.onCompleteCallbacks.add({consumer:t,expectedTokenType:e})}onCompleteAsync(t){this.l(t,void 0)}onCompleteAs(t){this.onCompleteAsAsync(this.toAsync(t))}onCompleteAsAsync(t){this.l((e=>{let r=e.replace(/,$/,""),i=(()=>{try{return JSON.parse(r)}catch(t){throw t.message=`${t.message}. JSON string was: ${r}`,t}})();return t(i)}),void 0)}onCompleteAsString(t){this.l(this.toAsync(t),new Set(["VALUE_STRING","VALUE_NULL"]))}onCompleteAsStringAsync(t){this.l(t,new Set(["VALUE_STRING","VALUE_NULL"]))}onCompleteAsInt(t){this.l(this.toAsync(t),new Set(["VALUE_NUMBER_INT","VALUE_NULL"]))}onCompleteAsIntAsync(t){this.l(t,new Set(["VALUE_NUMBER_INT","VALUE_NULL"]))}onCompleteAsNumber(t){this.l(this.toAsync(t),new Set(["VALUE_NUMBER_INT","VALUE_NUMBER_FLOAT","VALUE_NULL"]))}onCompleteAsNumberAsync(t){this.l(t,new Set(["VALUE_NUMBER_INT","VALUE_NUMBER_FLOAT","VALUE_NULL"]))}onCompleteAsBoolean(t){this.l(this.toAsync(t),new Set(["VALUE_TRUE","VALUE_FALSE","VALUE_NULL"]))}onCompleteAsBooleanAsync(t){this.l(t,new Set(["VALUE_TRUE","VALUE_FALSE","VALUE_NULL"]))}whenComplete(){return new Promise((t=>{this.onComplete((e=>t(e)))}))}asJsonFlux(){return C.Flux.create(((t,e)=>{this.onEachExcerpt((e=>{e.source&&t(e.source)})),this.l((async()=>e()))}))}whenCompleteAs(){return new Promise((t=>{this.onCompleteAs(t)}))}async push(t){let e=t.token;if(this.onEachExcerptCallbacks.forEach((e=>e(t))),this.isState(R))return this.state.child.push(t);if(!e)return;let r=e.type;if(this.currentToken=e,this.isState(I))switch(r){case"START_OBJECT":if(this.onElementCallbacks.size>0)throw Error("registered onElement for object");return this.state=new B,void this.receivedJson.push(e.source);case"START_ARRAY":if(this.propertyCallbacks.size>0)throw Error("registered onProperty for array");return this.state=new V,void this.receivedJson.push(e.source);case"VALUE_STRING":case"VALUE_NUMBER_INT":case"VALUE_NUMBER_FLOAT":case"VALUE_TRUE":case"VALUE_FALSE":case"VALUE_NULL":return this.receivedJson.push(e.source),this.end();default:throw new M(e)}else if(this.isState(B))switch(r){case"FIELD_NAME":case"COMMA":return void this.receivedJson.push(e.source);case"END_OBJECT":return this.receivedJson.push(e.source),this.end();case"START_OBJECT":case"START_ARRAY":case"VALUE_STRING":case"VALUE_NUMBER_INT":case"VALUE_NUMBER_FLOAT":case"VALUE_TRUE":case"VALUE_FALSE":case"VALUE_NULL":{let r=new G;return r.onComplete((t=>{this.receivedJson.push(t),this.state=new B})),this.state=new J(r),this.propertyCallbacks.get(e.fieldName)?.forEach((t=>{t(r)})),r.push(t)}default:throw new M(e)}else if(this.isState(V))switch(r){case"END_ARRAY":return this.receivedJson.push(e.source),this.end();case"START_OBJECT":case"START_ARRAY":case"VALUE_STRING":case"VALUE_NUMBER_INT":case"VALUE_NUMBER_FLOAT":case"VALUE_TRUE":case"VALUE_FALSE":case"VALUE_NULL":{let e=new G;return e.onComplete((t=>{this.receivedJson.push(t),this.state=new V})),this.onElementCallbacks.forEach((t=>t(e))),this.state=new $(e),e.push(t)}case"COMMA":return void this.receivedJson.push(e.source);default:throw new M(e)}throw Error("Unknown state")}async end(){if(void 0===this.currentToken)throw Error("Illegal state");this.onCompleteCallbacks.forEach((t=>{let e=t.expectedTokenType,r=(()=>{if(void 0===e)return this.receivedJson.join("");if(!e.has(this.currentToken.type))throw Error(`Expected token type ${Array.from(e).join(", ")} but got ${this.currentToken.type}`);return this.currentToken.value})();t.consumer(r)}))}isState(t){return this.state instanceof t}endsOnUnevenNumberOfBackslashes(t){let e=0;for(let r=t.length-1;r>=0&&"\\"===t[r];r--)e++;return e%2==1}toAsync(t){return async e=>{t(e)}}},O=class{},R=class extends O{constructor(t){super(),this.child=t}},I=class extends O{},V=class extends O{},$=class extends R{constructor(t){super(t)}},B=class extends O{},J=class extends R{constructor(t){super(t)}},M=class extends Error{constructor(t){super("Unexpected token: "+t.type),this.name="UnexpectedTokenException"}},F=class{getExcerpts(t){return[{source:t}]}},G=class extends j{constructor(){super()}},Y=a(u(),1),D=class extends j{jsonTokenFlux;constructor(t){super();let e=this;this.jsonTokenFlux=Y.Flux.fromGeneratorFunction((async function*(){let r;for await(let i of t)void 0!==i.token&&(r?.token?.maybeIncomplete&&r.token.type===i.token.type&&!i.token.maybeIncomplete&&await e.push(i),r=i.token),(void 0===i.token||!i.token.maybeIncomplete)&&await e.push(i),yield i;r?.token?.maybeIncomplete&&await e.push(r)}))}whenComplete(){return this.jsonTokenFlux.then((()=>this.receivedJson.join("")))}asJsonFlux(){return this.jsonTokenFlux.map((t=>t.source)).filter((t=>void 0!==t))}},z=class{parse(t){return new D(t)}};function q(t){try{return JSON.parse(t)}catch(e){throw Error(`Failed to parse JSON with error '${e.message}'. JSON was: ${t}`)}}function H(t){if(""===t.trim())return;let e=[],r=!1,i=t=>e.push(t),n=(...t)=>{let r=e[e.length-1];if(void 0===r||!t.includes(r))throw Error("illegal state");e.pop()},s=()=>Error(`Illegal state (json: ${t})`);for(let o of t){let t=e.length>0?e[e.length-1]:null,a=!1;if('"'===o)if(null===t)i('"value');else if("["===t||null===t)i('"value');else if("{"===t)i('"prop');else if('"prop":'===t)n('"prop":'),i('"value');else if('"prop'===t)r||(n('"prop'),i('"prop"'));else{if('"value'!==t)throw s();r||n('"value')}else if("["===o){if("["===t||null===t)i("[");else if('"prop":'===t)n('"prop":'),i("[");else if('"prop'!==t&&'"value'!==t)throw s()}else if("{"===o){if(null===t||"["===t||'"prop":'===t)i("{");else if('"prop'!==t&&'"value'!==t)throw s()}else if("\\"===o){if('"prop'!==t&&'"value'!==t)throw s();r||(a=!0)}else if(":"===o){if('"prop"'===t)n('"prop"'),i('"prop":');else if('"prop'!==t&&'"value'!==t)throw s()}else if("n"===o){if('"prop":'===t)n('"prop":'),i("n");else if("["===t||null===t)i("n");else if('"prop'!==t&&'"value'!==t)throw s()}else if("u"===o){if("n"===t)n("n"),i("nu");else if("tr"===t)n("tr"),i("tru");else if('"prop'!==t&&'"value'!==t)throw s()}else if("l"===o){if("nu"===t)n("nu"),i("nul");else if("nul"===t)n("nul");else if("fa"===t)n("fa"),i("fal");else if('"prop'!==t&&'"value'!==t)throw s()}else if("t"===o){if('"prop":'===t)n('"prop":'),i("t");else if('"prop'!==t&&'"value'!==t){if("["!==t&&null!==t)throw s();i("t")}}else if("r"===o){if("t"===t)n("t"),i("tr");else if('"prop'!==t&&'"value'!==t)throw s()}else if("e"===o){if("tru"===t)n("tru");else if("fals"===t)n("fals");else if('"prop'!==t&&'"value'!==t)throw s()}else if("f"===o){if('"prop":'===t)n('"prop":'),i("f");else if('"prop'!==t&&'"value'!==t){if("["!==t&&null!==t)throw s();i("f")}}else if("a"===o){if("f"===t)n("f"),i("fa");else if('"prop'!==t&&'"value'!==t)throw s()}else if("s"===o){if("fal"===t)n("fal"),i("fals");else if('"prop'!==t&&'"value'!==t)throw s()}else if("."===o){if('"prop":'===t)n('"prop":'),i("number.");else if('"prop'!==t&&'"value'!==t)if("{"===t)i("number.");else{if("["!==t&&null!==t)throw s();i("number.")}}else if(o.match(/[0-9]/)){if("number."===t)n("number.");else if('"prop'!==t&&'"value'!==t)if('"prop":'===t)n('"prop":');else if("{"!==t&&"["!==t&&null!==t)throw s()}else if("}"===o){if("{"===t)n("{");else if("number."===t)n("number."),n("{");else if('"prop'!==t&&'"value'!==t)throw s()}else if("]"===o){if("["===t)n("[");else if('"prop'!==t&&'"value'!==t)throw s()}else","===o&&"number."===t&&n("number.");r=a}let o=e.reverse().map((t=>{switch(t){case"{":return"}";case"[":return"]";case'"prop':return'": null';case'"prop"':return": null";case'"prop":':return" null";case"n":return"ull";case"nu":return"ll";case"nul":return"l";case"t":return"rue";case"tr":return"ue";case"tru":case"fals":return"e";case"f":return"alse";case"fa":return"lse";case"fal":return"se";case'"value':return'"';case"number.":return"0";default:throw s()}})).join("");return q((r?t.substring(0,t.length-1):t).replace(/( |\n|,)+$/,"")+o)}function K(t){if(void 0===t)throw Error("Value is undefined");return t}var Q=[];for(let t=0;t<256;++t)Q.push((t+256).toString(16).slice(1));import{randomFillSync as W}from"crypto";var X=new Uint8Array(256),Z=X.length;import{randomUUID as tt}from"crypto";var et={randomUUID:tt},rt=function(t,e,r){if(et.randomUUID&&!e&&!t)return et.randomUUID();let i=(t=t||{}).random??t.rng?.()??(Z>X.length-16&&(W(X),Z=0),X.slice(Z,Z+=16));if(i.length<16)throw Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){if((r=r||0)<0||r+16>e.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[r+t]=i[t];return e}return function(t,e=0){return(Q[t[e+0]]+Q[t[e+1]]+Q[t[e+2]]+Q[t[e+3]]+"-"+Q[t[e+4]]+Q[t[e+5]]+"-"+Q[t[e+6]]+Q[t[e+7]]+"-"+Q[t[e+8]]+Q[t[e+9]]+"-"+Q[t[e+10]]+Q[t[e+11]]+Q[t[e+12]]+Q[t[e+13]]+Q[t[e+14]]+Q[t[e+15]]).toLowerCase()}(i)},it=class extends Error{data;httpStatus=400;constructor(t,e){let r=t.map((t=>{if(t.expectedProp)return{expectedProp:(t.path+".").replace(/^root\./,"")+t.expectedProp};if(t.expectedType)return{expectedType:t.expectedType.map(yt).join(" | "),path:t.path,insteadGot:t.value};if(t.unknownProp)return{unknownProp:(t.path+".").replace(/^root\./,"")+t.unknownProp};throw Error("illegal state")}));super(e??"Value is of the wrong format: "+JSON.stringify(r,null,2)),this.data=r}};function nt(t){return new at([],t)}function st(t,e,r,i){let n=e.map((e=>function(t,e,r,i){let{ignoreUnknownProps:n=!0,juggleBetweenNullAndUndefined:s=!1}=i,{problems:o=[],juggleTo:a}=(()=>{switch(e.type){case"array":{if(!Array.isArray(t))return{problems:[{expectedType:[e],path:r,value:t}]};if(0===t.length)return{};let n=t.map((t=>st(t,e.elementType,r+"[..]",i))),s=(()=>{if(0!==n.filter((t=>t.juggleTo)).length)return{value:n.map((t=>void 0===t.juggleTo?t.value:t.juggleTo.value))}})();return{problems:n.flatMap((t=>t.problems)),juggleTo:s}}case"boolean":return"boolean"!=typeof t?{problems:[{expectedType:[e],path:r,value:t}]}:{};case"undefined":return void 0===t?{}:s&&null===t?{juggleTo:{value:void 0}}:{problems:[{expectedType:[e],path:r,value:t}]};case"object":{if("object"!=typeof t||null===t)return{problems:[{expectedType:[e],path:r,value:t}]};let s=[],o=[];for(let n in e.props){let a=e.props[n],l=st(n in t?t[n]:void 0,a.optional?[...a.type,{type:"undefined"}]:a.type,r+"."+n,i);void 0!==l.juggleTo&&o.push({key:n,juggleTo:l.juggleTo.value}),s.push(...l.problems)}if(!n)for(let i in t)i in e.props||s.push({unknownProp:i,path:r,value:t});return{problems:s,juggleTo:(()=>{if(0===o.length)return;let e={...t};for(let t of o)e[t.key]=t.juggleTo;return{value:e}})()}}case"string":return{problems:"string"==typeof t?[]:[{expectedType:[e],path:r,value:t}]};case"null":return null===t?{}:s&&void 0===t?{juggleTo:{value:null}}:{problems:[{expectedType:[e],path:r,value:t}]};case"number":return{problems:"number"==typeof t?[]:[{expectedType:[e],path:r,value:t}]};case"constant":return{problems:t===e.value?[]:[{expectedType:[e],path:r,value:t}]}}})();return{type:e,value:t,problems:o,juggleTo:a}}(t,e,r,i)));if(function(t){return t.some((t=>0===t.problems.length&&void 0===t.juggleTo))}(n))return{types:e,value:t,problems:[]};let s=function(t){let e=t.filter((t=>0===t.problems.length&&void 0!==t.juggleTo));if(e.length>1)throw Error("Illegal State");return e[0]?.juggleTo}(n);if(void 0!==s)return{types:e,value:t,problems:[],juggleTo:s};let o=n.flatMap((t=>t.problems.filter((t=>void 0!==t.expectedType&&t.path===r))));return o.length>0?{types:e,value:t,problems:[{expectedType:o.flatMap((t=>t.expectedType)),path:r,value:t}]}:{types:e,value:t,problems:n.flatMap((t=>t.problems))}}var ot=class{constructor(t,e,r=void 0){this.type=t,this.value=e,this.u=r}},at=class t extends ot{array(e){let r=e(new t([],this.value)),i=new lt([{type:"array",elementType:r.type}],this.value);return new lt([...this.type,...i.type],this.value)}object(t){let e=t(new ut([{type:"object",props:{}}],this.value));return new lt([...this.type,...e.type],this.value)}string(){return new lt([...this.type,{type:"string"}],this.value)}number(){return new lt([...this.type,{type:"number"}],this.value)}boolean(){return new lt([...this.type,{type:"boolean"}],this.value)}constant(t,...e){return new ct([...this.type,{type:"constant",value:t},...(e??[]).map((t=>({type:"constant",value:t})))],this.value)}null(){return new lt([...this.type,{type:"null"}],this.value)}undefined(){return new lt([...this.type,{type:"undefined"}],this.value)}any(){return new lt([],this.value)}},lt=class t extends ot{orArray(e){let r=e(new t([],this.value)),i=new t([{type:"array",elementType:r.type}],this.value);return new t([...this.type,...i.type],this.value)}orObject(e){let r=e(new ut([{type:"object",props:{}}],this.value));return new t([...this.type,...r.type],this.value)}orString(){return new t([...this.type,{type:"string"}],this.value)}orNumber(){return new t([...this.type,{type:"number"}],this.value)}orBoolean(){return new t([...this.type,{type:"boolean"}],this.value)}orConstant(t,...e){return new ct([...this.type,{type:"constant",value:t},...(e??[]).map((t=>({type:"constant",value:t})))],this.value)}orNull(){return new t([...this.type,{type:"null"}],this.value)}orUndefined(){return new t([...this.type,{type:"undefined"}],this.value)}},ut=class t{constructor(t,e){this.type=t,this.value=e}mayHave(t,e,r){return this.has(t,e,!0,r)}canHaveString(t,e){return this.mayHave(t,(t=>t.string()),e)}canHaveNumber(t,e){return this.mayHave(t,(t=>t.number()),e)}canHaveBoolean(t,e){return this.mayHave(t,(t=>t.boolean()),e)}canHaveConstant(t,[e,...r],i){return this.mayHave(t,(t=>t.constant(e,...r)),i)}has(e,r,i=!1,n){let{optional:s,comment:o}="string"==typeof i?{optional:!1,comment:i}:{optional:i,comment:n},a=1===this.type.length?this.type[0]:void 0;if(void 0===a||"object"!==a.type)throw Error("illegal state");let l=r(new pt([],this.value)),u=l.type,h=l.h;return new t([{...a,props:{...a.props,[e]:{optional:s,type:u,comment:(()=>{let t=[...h,...void 0!==o?[o]:[]];return t.length>0?t.join(". "):void 0})()}}}],this.value)}hasString(t,e){return this.has(t,(t=>t.string()),!1,e)}hasNumber(t,e){return this.has(t,(t=>t.number()),!1,e)}hasBoolean(t,e){return this.has(t,(t=>t.boolean()),!1,e)}hasConstant(t,e,r,...i){let{constants:n,comment:s}=Array.isArray(e)?{constants:e,comment:r}:{constants:[e,...void 0!==r?[r]:[],...i],comment:void 0};return this.has(t,(t=>t.constant(...n)),!1,s)}},ht=class extends ot{constructor(t,e,r=[]){super(t,e),this.h=r}withComment(t){return new ct(this.type,this.value,[...this.h,t])}},pt=class extends ht{array(t){let e=t(new at([],this.value)),r=new lt([{type:"array",elementType:e.type}],this.value);return new ct([...this.type,...r.type],this.value)}object(t){let e=t(new ut([{type:"object",props:{}}],this.value));return new ct([...this.type,...e.type],this.value)}string(){return new ct([...this.type,{type:"string"}],this.value)}number(){return new ct([...this.type,{type:"number"}],this.value)}boolean(){return new ct([...this.type,{type:"boolean"}],this.value)}constant(...t){return new ct([...this.type,...t.map((t=>({type:"constant",value:t})))],this.value)}null(){return new ct([...this.type,{type:"null"}],this.value)}undefined(){return new ct([...this.type,{type:"undefined"}],this.value)}},ct=class t extends ht{orArray(e){let r=e(new lt([],this.value)),i=new lt([{type:"array",elementType:r.type}],this.value);return new t([...this.type,...i.type],this.value)}orObject(e){let r=e(new ut([{type:"object",props:{}}],this.value));return new t([...this.type,...r.type],this.value)}orString(){return new t([...this.type,{type:"string"}],this.value)}orNumber(){return new t([...this.type,{type:"number"}],this.value)}orBoolean(){return new t([...this.type,{type:"boolean"}],this.value)}orConstant(...e){return new t([...this.type,...e.map((t=>({type:"constant",value:t})))],this.value)}orNull(){return new t([...this.type,{type:"null"}],this.value)}orUndefined(){return new t([...this.type,{type:"undefined"}],this.value)}};function ft(t,e,r={}){let{problems:i,juggleTo:n}=st(t,e.type,"root",r);if(i.length>0)throw new it(i,r.errorMessage);return void 0!==n?n.value:t}function mt(t){return dt(t.type)}function dt(t,e=0){if(Array.isArray(t))return t.map((t=>dt(t,e))).join(" | ");switch(t.type){case"array":return dt(t.elementType,e)+"[]";case"boolean":return"boolean";case"undefined":return"undefined";case"object":{let r=Object.keys(t.props);return"{\n"+r.map(((i,n)=>{let s=t.props[i],o=dt(s.type,e+1),a=n<r.length-1?",":"",l=void 0!==s.comment?" // "+s.comment:"";return s.optional?`${_t(e+1)}${i}?: ${o}${a}${l}\n`:`${_t(e+1)}${i}: ${o}${a}${l}\n`})).join("")+_t(e)+"}"}case"string":return"string";case"null":return"null";case"number":return"number";case"constant":return`"${t.value}"`}}function _t(t){let e="";for(let r=0;r<t;r++)e+=" ";return e}function yt(t){return"constant"===t.type?`'${t.value}'`:t.type}async function wt(t,e,r="gpt-image-1",i){let n=await fetch("https://api.openai.com/v1/images/generations",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+t},body:JSON.stringify({model:r,prompt:e,size:i})});if(!n.ok){let t=await n.json();throw Error(`OpenAI API error: ${n.status} ${JSON.stringify(t)}`)}let s=await n.json();if(!s.data?.[0]?.b64_json)throw Error("Invalid response structure from OpenAI API");return Uint8Array.from(atob(s.data[0].b64_json),(t=>t.charCodeAt(0)))}import{writeFile as gt}from"fs";function vt(t){let e=t=>{if(Array.isArray(t))return 1===t.length?e(t[0]):t.every((t=>"constant"===t.type))?{type:"string",enum:t.map((t=>t.value))}:{anyOf:t.map((t=>e(t)))};switch(t.type){case"object":{let r={},i=[];for(let[n,s]of Object.entries(t.props)){let t=e(s.type);r[n]=s.comment?{...t,description:s.comment}:t,s.optional||i.push(n)}return{type:"object",properties:r,required:i.length>0?i:void 0,additionalProperties:!1}}case"array":return{type:"array",items:e(t.elementType)};case"string":default:return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":case"undefined":return{type:"null"};case"constant":return Array.isArray(t.value)?{type:"string",enum:t.value}:{type:"string",const:t.value}}};return e(t.type)}function bt({model:t,prompt:e,temperature:r,topP:i,requireJsonResponse:n,jsonSchema:s,serviceTier:o,tools:a}){return{model:t,input:e.map((t=>t.llmPlatformConversationItem&&"openai"===t.llmPlatform?t.llmPlatformConversationItem:"function_call_output"===t.type?{type:"function_call_output",call_id:t.functionCallId,output:t.content}:"assistant"===t.role?{type:"message",role:t.role,content:[{type:"output_text",text:t.content}]}:{role:t.role,content:[{type:"input_text",text:t.content}]})),stream:!0,temperature:r,top_p:i,text:s?{format:{type:"json_schema",name:s.name,schema:s.schema,strict:s.strict}}:n?{format:{type:"json_object",name:"response"}}:void 0,service_tier:Et(o),tools:a}}function Et(t){switch(t){case void 0:return;case"normal":return"default";case"flex":return"flex";case"priority":return"priority";case"auto":return"auto"}}var At={gpt_3_5_turbo:"gpt-3.5-turbo",gpt_3_5_turbo_0125:"gpt-3.5-turbo-0125",gpt_3_5_turbo_1106:"gpt-3.5-turbo-1106",gpt_3_5_turbo_16k:"gpt-3.5-turbo-16k",gpt_3_5_turbo_instruct:"gpt-3.5-turbo-instruct",gpt_3_5_turbo_instruct_0914:"gpt-3.5-turbo-instruct-0914",gpt_4:"gpt-4",gpt_4_0125_preview:"gpt-4-0125-preview",gpt_4_0613:"gpt-4-0613",gpt_4_1106_preview:"gpt-4-1106-preview",gpt_4_turbo:"gpt-4-turbo",gpt_4_turbo_2024_04_09:"gpt-4-turbo-2024-04-09",gpt_4_turbo_preview:"gpt-4-turbo-preview",gpt_4_1:"gpt-4.1",gpt_4_1_2025_04_14:"gpt-4.1-2025-04-14",gpt_4_1_mini:"gpt-4.1-mini",gpt_4_1_mini_2025_04_14:"gpt-4.1-mini-2025-04-14",gpt_4_1_nano:"gpt-4.1-nano",gpt_4_1_nano_2025_04_14:"gpt-4.1-nano-2025-04-14",gpt_4o:"gpt-4o",gpt_4o_2024_05_13:"gpt-4o-2024-05-13",gpt_4o_2024_08_06:"gpt-4o-2024-08-06",gpt_4o_2024_11_20:"gpt-4o-2024-11-20",gpt_4o_audio_preview:"gpt-4o-audio-preview",gpt_4o_audio_preview_2024_10_01:"gpt-4o-audio-preview-2024-10-01",gpt_4o_audio_preview_2024_12_17:"gpt-4o-audio-preview-2024-12-17",gpt_4o_audio_preview_2025_06_03:"gpt-4o-audio-preview-2025-06-03",gpt_4o_mini:"gpt-4o-mini",gpt_4o_mini_2024_07_18:"gpt-4o-mini-2024-07-18",gpt_4o_mini_audio_preview:"gpt-4o-mini-audio-preview",gpt_4o_mini_audio_preview_2024_12_17:"gpt-4o-mini-audio-preview-2024-12-17",gpt_4o_mini_realtime_preview:"gpt-4o-mini-realtime-preview",gpt_4o_mini_realtime_preview_2024_12_17:"gpt-4o-mini-realtime-preview-2024-12-17",gpt_4o_mini_search_preview:"gpt-4o-mini-search-preview",gpt_4o_mini_search_preview_2025_03_11:"gpt-4o-mini-search-preview-2025-03-11",gpt_4o_mini_transcribe:"gpt-4o-mini-transcribe",gpt_4o_mini_tts:"gpt-4o-mini-tts",gpt_4o_realtime_preview:"gpt-4o-realtime-preview",gpt_4o_realtime_preview_2024_10_01:"gpt-4o-realtime-preview-2024-10-01",gpt_4o_realtime_preview_2024_12_17:"gpt-4o-realtime-preview-2024-12-17",gpt_4o_realtime_preview_2025_06_03:"gpt-4o-realtime-preview-2025-06-03",gpt_4o_search_preview:"gpt-4o-search-preview",gpt_4o_search_preview_2025_03_11:"gpt-4o-search-preview-2025-03-11",gpt_4o_transcribe:"gpt-4o-transcribe",gpt_4o_transcribe_diarize:"gpt-4o-transcribe-diarize",gpt_5:"gpt-5",gpt_5_2025_08_07:"gpt-5-2025-08-07",gpt_5_chat_latest:"gpt-5-chat-latest",gpt_5_codex:"gpt-5-codex",gpt_5_mini:"gpt-5-mini",gpt_5_mini_2025_08_07:"gpt-5-mini-2025-08-07",gpt_5_nano:"gpt-5-nano",gpt_5_nano_2025_08_07:"gpt-5-nano-2025-08-07",gpt_5_pro:"gpt-5-pro",gpt_5_pro_2025_10_06:"gpt-5-pro-2025-10-06",gpt_5_search_api:"gpt-5-search-api",gpt_5_search_api_2025_10_14:"gpt-5-search-api-2025-10-14",gpt_5_1:"gpt-5.1",gpt_5_1_2025_11_13:"gpt-5.1-2025-11-13",gpt_5_1_chat_latest:"gpt-5.1-chat-latest",gpt_5_1_codex:"gpt-5.1-codex",gpt_5_1_codex_mini:"gpt-5.1-codex-mini",gpt_audio:"gpt-audio",gpt_audio_2025_08_28:"gpt-audio-2025-08-28",gpt_audio_mini:"gpt-audio-mini",gpt_audio_mini_2025_10_06:"gpt-audio-mini-2025-10-06",gpt_image_1:"gpt-image-1",gpt_image_1_mini:"gpt-image-1-mini",gpt_realtime:"gpt-realtime",gpt_realtime_2025_08_28:"gpt-realtime-2025-08-28",gpt_realtime_mini:"gpt-realtime-mini",gpt_realtime_mini_2025_10_06:"gpt-realtime-mini-2025-10-06",o1:"o1",o1_2024_12_17:"o1-2024-12-17",o1_mini:"o1-mini",o1_mini_2024_09_12:"o1-mini-2024-09-12",o1_pro:"o1-pro",o1_pro_2025_03_19:"o1-pro-2025-03-19",o3:"o3",o3_2025_04_16:"o3-2025-04-16",o3_deep_research:"o3-deep-research",o3_deep_research_2025_06_26:"o3-deep-research-2025-06-26",o3_mini:"o3-mini",o3_mini_2025_01_31:"o3-mini-2025-01-31",o3_pro:"o3-pro",o3_pro_2025_06_10:"o3-pro-2025-06-10",o4_mini:"o4-mini",o4_mini_2025_04_16:"o4-mini-2025-04-16",o4_mini_deep_research:"o4-mini-deep-research",o4_mini_deep_research_2025_06_26:"o4-mini-deep-research-2025-06-26",omni_moderation_2024_09_26:"omni-moderation-2024-09-26",omni_moderation_latest:"omni-moderation-latest"},Tt={dall_e_2:"dall-e-2",dall_e_3:"dall-e-3",gpt_image_1:"gpt-image-1"},St=class{config;p;m;constructor(t){this.config=kt(t)}createConversation(){let t=new Nt(this.config);return t.p=this.p,t.m={uuid:rt(),messages:[]},t}get apiKeyChain(){return void 0===this.p&&(this.p=Rt(this.config)),this.p}get conversation(){return this.m}chat(t,e,...r){let{toPrompt:i}=(()=>{if("function"==typeof t)return{toPrompt:t,args:e};if("string"==typeof t)return{toPrompt:()=>t,args:void 0};if(Array.isArray(t)){let e=0===t.length?[{user:""}]:t.filter((t=>void 0!==t));return{toPrompt:()=>e,args:void 0}}{let i=[t,...void 0!==e?[e]:[],...r].filter((t=>void 0!==t)),n=0===i.length?[{user:""}]:i;return{toPrompt:()=>n,args:void 0}}})();return new Bt(this,i,e,Xt(),void 0,void 0,void 0,void 0,!1,!1)}image(t){return new xt(t,void 0,void 0,this)}},Nt=class t extends St{constructor(t){super(t)}copyConversation(){if(void 0===this.m)throw Error("This method only works on copy conversation: no conversation exists");let e=new t(this.config);return e.p=this.p,e.m={uuid:rt(),messages:this.m.messages.map((t=>({...t,uuid:rt()})))},e}},xt=class{constructor(t,e,r,i){this.prompt=t,this._=e,this.v=r,this.aiClient=i}async then(t,e){try{let e=await this.getResponseAsString();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponseAsString()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponseAsString()}finally{t?.()}}get[Symbol.toStringTag](){return"ImagePrompt"}model(t){return this._=t,this}size(t){return this.v=t,this}toFile(t){return new Ut(this.prompt,this._,this.v,t,this.aiClient)}async getResponseAsString(){let t=w(await this.aiClient.apiKeyChain.openai).canBeString().andNothingElse({errorMessage:"No OpenAI access token set"});return await wt(t,this.prompt)}},Ut=class{constructor(t,e,r,i,n){this.prompt=t,this._=e,this.v=r,this.fileName=i,this.aiClient=n}async then(t,e){try{let e=await this.getResponseAsFile();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponseAsFile()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponseAsFile()}finally{t?.()}}get[Symbol.toStringTag](){return"ImageFilePrompt"}model(t){return this._=t,this}size(t){return this.v=t,this}async getResponseAsFile(){let t=w(await this.aiClient.apiKeyChain.openai).canBeString().andNothingElse({errorMessage:"No OpenAI access token set"}),e=await wt(t,this.prompt,this._,this.v);return new Promise(((t,r)=>{gt(this.fileName,e,(i=>{i?r(i):t(new File([e],this.fileName,{type:"image/png"}))}))}))}},Pt=new St({});function Lt(t){let e=kt(t);Pt.config=e,Pt.p=Rt(e)}function Ct(t){let e=kt(t);return new St(e)}function kt(t){return"string"==typeof t?{promptGridApiKey:jt(t),debugMode:!1,attemptsPerCall:1}:{promptGridApiKey:jt(t.promptGridApiKey),apiKeys:t.apiKeys,debugMode:t.debugMode??!1,attemptsPerCall:Ot(t.attemptsPerCall)}}function jt(t){return ft(t,nt(t).string().orUndefined(),{errorMessage:"Please provide a valid API key; got "+t})}function Ot(t){let e=ft(t,nt(t).number().orUndefined(),{errorMessage:"Please provide a valid number of attempts per call; got "+t})??1;if(e<1)throw Error("Please provide a valid number of attempts per call; minimum is 1; got "+e);return e}function Rt(t){let e=t.promptGridApiKey,r=t.apiKeys;return{promptgrid:e,openai:(async()=>{if(r?.openai)return r.openai;if(void 0===e)return;let t=await(async()=>{try{return await fetch(N()+"/handshake",{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"promptgun",Authorization:"Bearer "+e}})}catch{throw Error("HTTP called failed when doing handshake")}})();if(200!==t.status){let e=await t.text();throw Error(`Handshake failed with status ${t.status}, body: ${e}`)}return(await t.json()).apiKeys.openai})()}}var It=new Map;function Vt(t){let e=t??Pt;if(void 0===e.apiKeyChain)throw Error("No LLM set up. Call setupPromptGun first: ```import { setupPromptGun } from 'promptgun';\n\nsetupPromptGun({openAI: \"YOUR_OPENAI_API_KEY\"});\n```");return new $t(e,Xt())}var $t=class{constructor(t,e){this.aiClient=t,this.callingCodeLine=e}completeChat(t,e){return new Bt(this.aiClient,t,e,Xt(),void 0,void 0,void 0,void 0,!1,!1)}},Bt=class t{constructor(t,e,r,i,n,s,o,a,l,u=!1,h,p=[],c=[]){this.aiClient=t,this.promptSupplier=e,this.promptSupplierArgs=r,this.callingCodeLine=i,this.A=n,this.T=s,this.S=o,this._=a,this.N=l,this.U=u,this.promptName=h,this.P=p,this.L=c,this.C=this.computeGenericPrompt();let f=this;this.generator=async function*(){yield*await Dt(f.aiClient,te(a),f.C,!1,f.promptName,n,s,o,i,f.U,f.P,f.L,void 0)}(),this.stringGenerator=async function*(){for await(let t of f.generator)t!==ee&&(yield t)}()}generator;stringGenerator;C;name(t){return this.copy({promptName:t})}model(t){return this.copy({model:t})}firstThink(t=!0){return this.copy({firstThink:t})}temperature(t){return this.copy({temperature:t})}topP(t){return this.copy({topP:t})}flex(t=!0){return this.copy({serviceTier:t?"flex":void 0})}priority(t=!0){return this.copy({serviceTier:t?"priority":void 0})}tier(t){return this.copy({serviceTier:t})}strict(t=!0){return this.copy({strict:t})}check(t,e=10){if(e<1)throw Error("The number of attempts must be at least 1");return this.copy({checks:[...this.L,{callback:t,attempts:e}]})}copy({aiClient:e,promptSupplier:r,promptSupplierArgs:i,callingCodeLine:n,temperature:s,topP:o,serviceTier:a,model:l,firstThink:u,strict:h,promptName:p,tools:c,checks:f}){return new t(e??this.aiClient,r??this.promptSupplier,i??this.promptSupplierArgs,n??this.callingCodeLine,s??this.A,o??this.T,a??this.S,l??this._,u??this.N,h??this.U,p??this.promptName,c??this.P,f??this.L)}get result(){return this}get messages(){return this.C.map(Zt)}get json(){return!1}computeGenericPrompt(){let t=this.promptSupplier(this.promptSupplierArgs,Wt),{messages:e,typeSpecIndex:r}=Yt(t);if(!this.json)return e;let i=Qt(te(this._),this.json,this.N);if(null===i)return e;let n={uuid:rt(),type:"input_message",role:"user",content:i};return void 0!==r?[...e.slice(0,r),n,...e.slice(r)]:[...e,n]}next(...[t]){return this.stringGenerator.next(t)}return(t){return this.stringGenerator.return(t)}throw(t){return this.stringGenerator.throw(t)}[Symbol.asyncIterator](){return this}async then(t,e){try{let e=await this.getResponseAsString();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponseAsString()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponseAsString()}finally{t?.()}}get[Symbol.toStringTag](){return"BasicPrompt"}get(t){return new Ft(this.aiClient,this.promptSupplier,this.promptSupplierArgs,t,Xt(),this.promptName,this.A,this.T,this.S,this._,this.N,this.P,this.U)}getBoolean(){return this.get((t=>t.boolean()))}getString(){return this.get((t=>t.string()))}getNumber(){return this.get((t=>t.number()))}getObject(t){return this.get((e=>e.object(t)))}getArray(t){return new Gt(this.aiClient,this.promptSupplier,this.promptSupplierArgs,(e=>e.array(t)),this.callingCodeLine,this.promptName,this.A,this.T,this.S,this._,this.N,this.P,this.U)}getAny(){return this.get((t=>t.any()))}tool(t,e,r,i){return this.copy({tools:[...this.P,Jt("string"==typeof t?"string"==typeof e?{name:t,description:e,parameters:r,function:i}:{name:t,parameters:e,function:r}:t)]})}tools(...t){let e=Array.isArray(t[0])&&1===t.length?t[0].filter((t=>void 0!==t)):t.filter((t=>void 0!==t));return this.P.push(...e),this}async getResponseAsString(){let t="";for await(let e of this)e!==ee?t+=e:t="";return t}};function Jt(t,e,r,i){let n="string"==typeof t?"string"==typeof e?{name:t,description:e,parameters:r,function:i}:{name:t,parameters:e,function:r}:t;return{name:n.name,description:n.description,parameters:n.parameters(nt(void 0)),function:n.function}}function Mt(t,e,r,i){return Jt(t,e,r,i)}var Ft=class t extends G{constructor(t,e,r,i,n,s,o,a,l,u,p,c=[],f=!1,m=[]){super(),this.aiClient=t,this.promptSupplier=e,this.promptSupplierArgs=r,this.jsonTypeSupplier=i,this.callingCodeLine=n,this.promptName=s,this.A=o,this.T=a,this.S=l,this._=u,this.N=p,this.P=c,this.U=f,this.L=m;let d=this;this.C=this.computePrompt();let _,y,w,g=()=>{let e=new U;return _||(_=h.Flux.fromGenerator(async function*(){yield*await Dt(t,te(u),d.C,d.json,s,o,a,l,n,d.U,d.P,d.L,i)}()),y=e.processDataBuffer(_),w=(new z).parse(y),void 0!==i?w.onProperty("result",(t=>t.onEachExcerpt((t=>{void 0!==t.token&&this.push(t)})))):w.onEachExcerpt((t=>{void 0!==t.token&&this.push(t)}))),{flux:_,jsonTokenFlux:y,streamingJsonRootElement:w,jsonTokenProcessor:e}};this.stringGenerator=async function*(){let{flux:t,streamingJsonRootElement:e,jsonTokenProcessor:r}=g();for await(let i of t){if(i===ee){yield i;continue}let t=r.getExcerpts(i);for(let r of t)void 0!==r.token?e.push(r):void 0!==r.source&&(yield r.source)}}(),this.partialJsonGenerator=async function*(){let t="";for await(let e of d.stringGenerator){if(e===ee){t="";continue}t+=e;let r=H(t);yield void 0!==i?r?.result:r}}()}stringGenerator;partialJsonGenerator;C;next(...[t]){return this.partialJsonGenerator.next(t)}return(t){return this.partialJsonGenerator.return(t)}throw(t){return this.partialJsonGenerator.throw(t)}[Symbol.asyncIterator](){return this.partialJsonGenerator}async then(t,e){try{let e=await this.getResponse();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponse()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponse()}finally{t?.()}}get[Symbol.toStringTag](){return"JsonPrompt"}name(t){return this.copy({promptName:t})}model(t){return this.copy({model:t})}firstThink(t=!0){return this.copy({firstThink:t})}temperature(t){return this.copy({temperature:t})}topP(t){return this.copy({topP:t})}flex(t=!0){return this.copy({serviceTier:t?"flex":void 0})}priority(t=!0){return this.copy({serviceTier:t?"priority":void 0})}tier(t){return this.copy({serviceTier:t})}strict(t=!0){return this.copy({strict:t})}check(t,e=10){if(e<1)throw Error("The number of attempts must be at least 1");return this.copy({checks:[...this.L,{callback:t,attempts:e}]})}copy({aiClient:e,promptSupplier:r,promptSupplierArgs:i,jsonTypeSupplier:n,callingCodeLine:s,temperature:o,topP:a,serviceTier:l,model:u,firstThink:h,strict:p,promptName:c,tools:f,checks:m}){return new t(e??this.aiClient,r??this.promptSupplier,i??this.promptSupplierArgs,n??this.jsonTypeSupplier,s??this.callingCodeLine,c??this.promptName,o??this.A,a??this.T,l??this.S,u??this._,h??this.N,f??this.P,p??this.U,m??this.L)}get result(){return this}get messages(){return this.C.map(Zt)}computePrompt(){let t=this.promptSupplier(this.promptSupplierArgs,Wt),{messages:e,typeSpecIndex:r}=Yt(t);if(!this.json)return e;let i=Qt(te(this._),this.json,this.N);if(null===i)return e;let n={type:"input_message",uuid:rt(),role:"user",content:i};return void 0!==r?[...e.slice(0,r),n,...e.slice(r)]:[...e,n]}get json(){return void 0===this.jsonTypeSupplier||this.jsonTypeSupplier(nt(void 0))}async getResponse(){let t=await this.getResponseAsString(),e=this.jsonTypeSupplier,r=q(t);return(()=>void 0!==e&&(!!p(te(this._))||"object"!==vt(e(nt(void 0))).type))()?r?.result:r}k;getResponseAsString(){return void 0===this.k&&(this.k=this.j()),this.k}tool(t,e,r,i){return this.copy({tools:[...this.P,Jt("string"==typeof t?"string"==typeof e?{name:t,description:e,parameters:r,function:i}:{name:t,parameters:e,function:r}:t)]})}tools(...t){let e=Array.isArray(t[0])&&1===t.length?t[0].filter((t=>void 0!==t)):t.filter((t=>void 0!==t));return this.P.push(...e),this}async j(){let t="";for await(let e of this.stringGenerator)e!==ee?t+=e:t="";return t}},Gt=class extends Ft{arrayElementGenerator;constructor(t,e,r,i,n,s,o,a,l,u,p,c,f=!1){super(t,e,r,i,n,s,o,a,l,u,p,c,f);let m=this;this.arrayElementGenerator=h.Flux.create((async(t,e)=>{await m.onElement((async e=>{t(await e)})),e()}))}next(...[t]){return this.arrayElementGenerator.next(t)}return(t){return this.arrayElementGenerator.return(t)}throw(t){return this.arrayElementGenerator.throw(t)}[Symbol.asyncIterator](){return this.arrayElementGenerator}async then(t,e){try{let e=await this.getResponse();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponse()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponse()}finally{t?.()}}get[Symbol.toStringTag](){return"JsonArrayPrompt"}};function Yt(t,e){let r=t=>void 0===t||"typeSpec"in t?null:{type:"input_message",uuid:rt(),role:void 0!==t.user?"user":void 0!==t.system?"system":"assistant",content:K(t.user??t.system??t.assistant)};if("string"==typeof t)return{messages:[{type:"input_message",uuid:rt(),role:"user",content:t}]};if(Array.isArray(t)){let e,i=[];for(let n=0;n<t.length;n++){let s=t[n];if("typeSpec"in s)e=i.length;else{let t=r(s);t&&i.push(t)}}return{messages:i,typeSpecIndex:e}}{let e=r(t);return{messages:e?[e]:[]}}}async function*Dt(t,e,r,i,n,s,o,a,l,u,h,c,f){let d=new Map;try{let{fileName:_,lineNumber:y}=l;if(_&&void 0!==y&&Array.from(It.keys()).filter((t=>t.startsWith(_+":"))).map((t=>parseInt(t.split(":")[1],10))).length>1&&!n)throw Error(`Multiple prompts found in ${_}. Please specify a name using .name() method.`);let g={id:n,callingCodeLine:l},v=t.conversation?.uuid??rt(),b={},E=t.conversation?.messages??[],A=e=>{let r=rt();for(let t of e.messages){let e=E.find((e=>e.uuid===t.uuid));if(void 0!==e){if(e.role!==t.role)throw Error("Illegal state");e.content=t.content}else E.push(t)}let i=async()=>{b.currentSave=b.nextSave,b.nextSave=void 0,await async function(t,e){try{if(void 0===e)return;let r=await fetch(N()+"/api/conversations",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:"Bearer "+e},body:JSON.stringify(t)});if(!r.ok)throw Error(`Got ${r.status} when attempting to save conversation, with body: ${await r.text()}`)}catch(t){console.error("Error saving conversation",t)}}({prompt:e.prompt,conversationUuid:e.conversationUuid,messages:E},t.apiKeyChain.promptgrid),await(b.nextSave?.callback()),b.currentSave=void 0};void 0!==b.nextSave&&d.delete(b.nextSave.uuid),b.nextSave={uuid:r,callback:i},void 0===b.currentSave&&d.set(r,{promise:i().then()})},T=[...t.conversation?.messages??[],...r];A({conversationUuid:v,prompt:g,messages:T});let S=!1,x=1,U=[],P=c.reduce(((t,e)=>t.set(e,1)),new Map);for(;!S;){rt();try{let r=w(await t.apiKeyChain.openai).canBeString().andNothingElse({errorMessage:"No OpenAI access token set"}),n=h?.map((t=>({type:"function",name:t.name,description:t.description,parameters:vt(t.parameters),strict:!0}))),{flux:l,httpRequest:d}=m(bt({model:te(e),prompt:T,apiToken:r,temperature:s,topP:o,requireJsonResponse:!1!==i,jsonSchema:Ht(f,i,e,u),serviceTier:a,tools:n}),r),_="",y=[];yield*l.flatMap((t=>{switch(t.type){case"response.output_text.delta":return[{type:"content",content:t.delta}];case"response.created":case"response.in_progress":case"response.completed":for(let[e,r]of t.response.output.entries()){let t=y.findIndex((t=>t.llmPlatformConversationItem.id===r.id)),i=t>=0?y[t]:void 0,n=(()=>{let t={uuid:i?.uuid??rt(),llmPlatform:"openai",llmPlatformConversationItem:r,httpRequest:0===e?JSON.stringify(d):void 0,role:"assistant"};switch(r.type){case"message":return{...t,type:"output_message",content:r.content.flatMap((t=>"output_text"===t.type?[t.text]:[])).join("")};case"reasoning":return{...t,type:"reasoning",content:r.content?.map((t=>t.text)).join("")??r.summary.map((t=>t.text)).join("")};case"function_call":return{...t,type:"function_call_input",name:r.name,arguments:r.arguments,content:`${r.name}(${r.arguments})`,functionCallId:r.call_id}}})();A({conversationUuid:v,prompt:g,messages:[n]}),t>=0?y[t]=n:y.push(n)}return[];case"error":throw Error(`${t.error.type}: ${t.error.message}`);default:return[]}})).doOnEach((t=>{"content"===t.type&&(_+=t.content)})).flatMap((t=>"content"===t.type?[t.content]:[]));let b=y.flatMap((t=>"function_call_input"===t.type?(()=>{let e=t.llmPlatformConversationItem;return{id:e.call_id,name:e.name,arguments:e.arguments}})():[]));if(y.map((t=>t.llmPlatformConversationItem)),b.length>0){let t=(await Kt(b,h)).map((t=>({type:"function_call_output",uuid:rt(),role:"user",functionCallId:t.tool_call_id,content:`Tool result for ${t.call.name}: ${t.content}`})));A({conversationUuid:v,prompt:g,messages:t}),T=[...T,...y,...t],x=1;continue}let E=(()=>{let t=y.filter((t=>"output_message"===t.type));if(1!==t.length)throw Error("Expected 1 output message, got "+JSON.stringify(y));return t[0].content})(),N=(()=>{if(void 0===f)return E;try{let t=q(E),r=p(e)||"object"!==vt(f(nt(void 0))).type?t?.result:t;return ft(r,f(nt(r)),{juggleBetweenNullAndUndefined:!0})}catch(t){try{let t=q(E);return ft(t,f(nt(t)),{juggleBetweenNullAndUndefined:!0})}catch{throw Error("JSON response failed type validation: "+(t instanceof Error?t.message:t+""))}}})();if(c.length>0){let t=c.map((async t=>{try{let e=await t.callback(N,U)??void 0;return{problems:"string"==typeof e?[e]:Array.isArray(e)?e.flatMap((t=>"string"==typeof t?[t]:[])):[],check:t}}catch(t){throw new qt(t)}})),e=await Promise.all(t),r=e.flatMap((({problems:t})=>t));if(U.push({result:N,problems:r}),e.forEach((({problems:t,check:e})=>{if(t.length>0){let t=K(P.get(e));if(t>=e.attempts)throw new zt(e,e.attempts,t,U);P.set(e,t+1)}})),r.length>0){let t={type:"input_message",uuid:rt(),role:"user",content:"Your result was rejected because:\n"+r.map((t=>"- "+t)).join("\n")};A({conversationUuid:v,prompt:g,messages:[t]}),T=[...T,...y,t],yield ee,x=1;continue}}T=[...T,...y],S=!0}catch(e){if(e instanceof qt)throw e.originalError;if(e instanceof zt)throw e;let r=t.config.attemptsPerCall;if(x>=r)throw e;await new Promise((t=>setTimeout(t,1e3))),console.warn(`AI call failed (try ${x}/${r}). Retrying...`,e),yield ee,x++}}}finally{if(t.config.debugMode){let t=Array.from(d.values()).map((t=>t.promise));await Promise.all(t)}}}var zt=class extends Error{constructor(t,e,r,i,n){super(n),this.check=t,this.maxAttempts=e,this.attemptCount=r,this.attempts=i}},qt=class extends Error{constructor(t){super(t instanceof Error?t.message:t+""),this.originalError=t,this.name="CheckCallbackException",t instanceof Error&&t.stack&&(this.stack=t.stack)}};function Ht(t,e,r,i){if(void 0===t||!1===e||p(r))return;let n=vt(t(nt(void 0)));return{name:"response",schema:"object"===n.type?n:{type:"object",properties:{result:n},required:["result"],additionalProperties:!1},strict:i}}async function Kt(t,e){if(void 0===e)throw Error("Illegal state: no tools defined");let r=[];for(let i of t){let t=e.find((t=>t.name===i.name)),n=await(async()=>{if(void 0===t)return`Error: Tool ${i.name} not found`;try{let e=""===i.arguments.trim()?{}:JSON.parse(i.arguments);return await t.function(e)}catch(t){return"Error: "+(t instanceof Error?t.message:t+"")}})();r.push({call:i,tool:t,tool_call_id:i.id,role:"tool",content:n})}return r}function Qt(t,e,r){if(!p(t))return function(t){return!(!t.startsWith("gpt-")&&!t.startsWith("o1-")&&"o1"!==t&&"o3-mini"!==t&&"o3"!==t)}(t)?"Respond with JSON":null;{if(!0===e)return"TYPE SPEC :: IGNORE ALL PREVIOUS TYPE SPECS\n\nIn your next message only, respond with JSON";let t=e;return"TYPE SPEC :: IGNORE ALL PREVIOUS TYPE SPECS\n\nIn its next message only, the assistant will respond with JSON matching the Typescript type below.\n- strictNullChecks, exactOptionalPropertyTypes are both on\n- a value can ONLY be null if explicitly stated, e.g. 'string | null'\n- optional properties (e.g. `{foo?: string}`) can only be achieved by not including it, NOT by setting them to null\n\nThe type:\n"+mt(new at([],void 0).object((e=>{let i=e;return r&&(i=i.hasString("reasoning","Elaborate your reasoning here. Think step by step. Give your thinking steps in a numbered list or in markdown with headers if the task requires it.")),i.has("result",(()=>new ct(t.type,t.value)))})))}}var Wt={typeSpec:!0};function Xt(){let t=(Error().stack??"").split("\n").map((t=>t.trim())).filter((t=>t.startsWith("at ")))[2],e=t.match(/[^(]+\([^)]+\)/),{functionName:r,fileName:i,lineNumber:n}=e?t.match("at (?<functionName>[^(]*) ((?<scheme>.*://)?(?<fileName>[^:]*):(?<lineNumber>[0-9]+):(?<colNumber>[0-9]+))").groups:t.match("at (?<scheme>.*://)?(?<fileName>[^:]*):(?<lineNumber>[0-9]+):(?<colNumber>[0-9]+)").groups;return{stacktraceFrame:w(t).canBeString().andNothingElse(),fileName:w(i).canBeString().andNothingElse(),lineNumber:w(parseInt(n)).canBeNumber().andNothingElse(),functionName:w(r).canBeString().canBeUndefined().andNothingElse()}}function Zt(t){switch(t.type){case"input_message":case"output_message":return{[t.role]:t.content};case"reasoning":case"function_call_input":return{assistant:t.content};case"function_call_output":return{user:t.content}}}function te(t){return t??"gpt-5"}var ee="retry-signal-"+rt();export{St as AIClient,Nt as AIConversation,At as AiModel,Bt as BasicPrompt,zt as CheckFailedTooManyTimes,pt as EmptyPropTypeSpec,at as EmptyTypeSpec,ct as FullPropTypeSpec,lt as FullTypeSpec,Ut as ImageFilePrompt,xt as ImagePrompt,Gt as JsonArrayPrompt,Ft as JsonPrompt,Tt as OpenaiImageModel,$t as PromptBase,ht as PropTypeSpec,G as StreamedJsonChildElement,D as StreamedJsonRootElement,ut as TypeMemberSpec,ot as TypeSpec,Wt as TypeSpecMarker,Pt as ai,Jt as aiTool,Mt as defineTool,Xt as getCallerFileNameAndLineNumber,Ct as newAIClient,Rt as obtainAiClientData,H as parsePartialJson,Vt as promptAI,Lt as setupAI,vt as typeSpecToJsonSchema};
|
|
1
|
+
var t=Object.create,e=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,n=Object.getPrototypeOf,s={}.hasOwnProperty,o=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),a=(o,a,l)=>(l=null!=o?t(n(o)):{},((t,n,o,a)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let o of i(n))!s.call(t,o)&&void 0!==o&&e(t,o,{get:()=>n[o],enumerable:!(a=r(n,o))||a.enumerable});return t})(!a&&o&&o.t?l:e(l,"default",{value:o,enumerable:!0}),o)),l=o((t=>{"use strict";Object.defineProperty(t,"t",{value:!0}),t.Flux=void 0;var e=class t{generator;upstream;handleCancel;i=!1;constructor(t,e,i){let n=this;this.generator=async function*(){try{yield*t}catch(t){throw yield r,t}finally{n.i=!0}}(),this.upstream=e,this.handleCancel=i}[Symbol.asyncIterator](){return this}async next(...t){let e=await this.generator.next(t);return e.value!==r?e:await this.next(t)}return(t){return this.generator.return(t)}throw(t){return this.generator.throw(t)}async cancel(t){if(!this.closed){if(void 0!==this.upstream)return this.upstream.cancel(t);void 0!==this.handleCancel?this.handleCancel(t):await this.throw(t)}}async then(t,e){try{let e=await this.asList();return null!=t?await t(e):e}catch(t){if(null!=e)return e(t);throw t}}async catch(t){try{return this.asList()}catch(e){if(null!=t)return t(e);throw e}}async finally(t){let e=await this.asList();return t?.(),e}get[Symbol.toStringTag](){return"Flux"}subscribe(t){let e=void 0!==t?this.doOnEach(t):this,r=()=>{e.next().then((t=>{t.done||r()})).catch((t=>{console.error(t)}))};return r(),{unsubscribe:()=>this.return()}}filter(e){let r=this;return t.constructFromGeneratorFunction((async function*(){for await(let t of r)e(t)&&(yield t)}),this)}untilExcl(e){let r=this;return t.constructFromGeneratorFunction((async function*(){for await(let t of r){if(e(t))break;yield t}}),this)}doOnEach(e){let r=this;return t.constructFromGeneratorFunction((async function*(){for await(let t of r)e(t),yield t}),this)}doAfterLast(e){let r=this,i=[];return t.constructFromGeneratorFunction((async function*(){for await(let t of r)i.push(t),yield t;await e(i)}),this)}map(e){let r=this;return t.constructFromGeneratorFunction((async function*(){for await(let t of r)yield e(t)}),this)}take(e){let r=this;return t.constructFromGeneratorFunction((async function*(){let t=0;for await(let i of r){if(t>=e){r.cancel();break}t++,yield i}}),this)}delayElements(e){let r=this;return t.constructFromGeneratorFunction((async function*(){for await(let t of r)await new Promise((t=>setTimeout(t,e))),yield t}),this)}flatMap(e,r){let i=this;return t.constructFromGeneratorFunction((async function*(){let n=i[Symbol.asyncIterator](),s=await n.next();if(s.done)return;let o=e(s.value),a=r?.concurrency;Array.isArray(o)?yield*function(t,e,r,i){return async function*(){for(let t of r)yield t;let e=await i.next();for(;!e.done;){let r=t(e.value);for(let t of r)yield t;e=await i.next()}}()}(e,0,o,n):o instanceof t?yield*function(t,e,r,i,n){return async function*(){let s=[e],o=await i.next();for(;!o.done;)s.push(o.value),o=await i.next();let a=Array(s.length),l=new Map,u=new Set,h=0;if(void 0===n)for(let e=0;e<s.length;e++){let i=e,n=0===i?r:t(s[i]);a[i]=n,l.set(i,[]),(async()=>{try{for await(let t of n)l.get(i).push(t)}catch(t){l.get(i).push({o:t})}finally{u.add(i)}})()}else{let e=0,i=0,o=()=>{for(;i<n&&e<s.length;){let n=e;e++,i++;let h=0===n?r:t(s[n]);a[n]=h,l.set(n,[]),(async()=>{try{for await(let t of h)l.get(n).push(t)}catch(t){l.get(n).push({o:t})}finally{u.add(n),i--,o()}})()}};o()}for(;h<a.length;){let t=l.get(h);for(;!u.has(h)||t.length>0;){for(;0===t.length&&!u.has(h);)await new Promise((t=>setTimeout(t,1)));for(;t.length>0;){let e=t.shift();if(e&&"object"==typeof e&&"o"in e)throw e.o;yield e}}h++}}()}(e,s.value,o,n,a):yield*function(t,e,r,i,n){return async function*(){let s=[],o=[],a=[],l=new Set,u=0,h=0,p=!1,c=0,f=(e,r,i)=>{let u=i||t(e);s[r]=u,u.then((t=>{o[r]=t,l.add(r),void 0!==n&&c--})).catch((t=>{a[r]=t,l.add(r),void 0!==n&&c--})),void 0!==n&&c++};f(e,h++,r);let d=(async()=>{let t=await i.next();for(;!t.done;){if(void 0!==n)for(;c>=n;)await new Promise((t=>setTimeout(t,0)));f(t.value,h++),t=await i.next()}p=!0})();for(;;){for(;!l.has(u);){if(p&&u>=s.length)return;await new Promise((t=>setTimeout(t,0)))}if(p&&u>=s.length)break;if(void 0!==a[u])throw a[u];void 0!==o[u]&&(yield o[u]),u++}await d}()}(e,s.value,o,n,a)}),this)}transform(e){let r=e(this);return t.constructFromGeneratorFunction((async function*(){for await(let t of r)yield t}),this)}async reduce(t,e){let r=e;for await(let e of this)r=t(r,e);return r}async asList(){let t=[];for await(let e of this)t.push(e);return t}async whenComplete(){for await(let t of this);}static create(e){let r,i=[],n=[],s=!1,o=t=>{if(s)throw Error("Cannot push to a completed generator");n.length>0?n.shift().resolve({done:!1,value:t}):i.push(t)},a=()=>{for(s=!0;n.length>0;)n.shift().resolve({done:!0,value:void 0})},l=t=>{r={value:t},n.shift()?.reject(t)};return(async()=>{try{await e(o,a,l),(!s||void 0===r)&&a()}catch(t){l(t)}})(),t.fromGenerator({[Symbol.asyncIterator](){return this},next(...t){if(r){let t=r.value;return r=void 0,Promise.reject(t)}if(i.length>0){let t=i.shift();return Promise.resolve({done:!1,value:t})}return s?Promise.resolve({done:!0,value:void 0}):new Promise(((t,e)=>{n.push({resolve:t,reject:e})}))},return:()=>(a(),Promise.resolve({done:!0,value:void 0})),throw:t=>(l(t),Promise.reject(t))})}static just(...e){return t.from(e)}static from(e,r){if(Array.isArray(e))return t.fromArray(e);if("function"==typeof e)return t.fromGeneratorFunction(e,r);if(e instanceof ReadableStream)return t.fromReadableStream(e,r);if(function(t){return null!==t&&"object"==typeof t&&"function"==typeof t.next&&"function"==typeof t.return&&"function"==typeof t.throw&&Symbol.asyncIterator in t}(e))return t.fromGenerator(e,r);throw new TypeError("Source must be an Array, AsyncGenerator, ReadableStream, or a generator function")}static fromArray(e){return t.fromGeneratorFunction((async function*(){for(let t of e)yield t}))}static constructFromGeneratorFunction(e,r,i){return new t(e(),r,i)}static fromGeneratorFunction(e,r){return t.constructFromGeneratorFunction(e,void 0,r)}static fromGenerator(e,r){return new t(e,void 0,r)}static fromReadableStream(e,r){return t.fromGeneratorFunction((async function*(){let t=e.getReader();try{let e;for(;!(e=await t.read()).done;)yield e.value}finally{await t.cancel()}}),r)}get closed(){return this.i}};t.Flux=e;var r={}})),u=o((t=>{"use strict";Object.defineProperty(t,"t",{value:!0}),t.Flux=void 0;var e=l();Object.defineProperty(t,"Flux",{enumerable:!0,get:function(){return e.Flux}})})),h=a(u(),1);function p(t){return!(t.startsWith("gpt-")||t.startsWith("o1-")||"o1"===t||"o3-mini"===t||"o3"===t)}var c=a(u(),1);import{Agent as f}from"node:https";function d(t,e){let r={url:"https://api.openai.com/v1/responses",method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json",Authorization:`Bearer ${e.slice(0,7)}...${e.slice(-4)}`},body:t};return{flux:c.Flux.fromGeneratorFunction((async function*(){let r=new AbortController,i=await fetch("https://api.openai.com/v1/responses",{headers:{"Content-Type":"application/json",Accept:"application/json",Authorization:"Bearer "+e},method:"POST",signal:r.signal,body:JSON.stringify(t),agent:_,bodyTimeout:216e5});if(i.status<200||i.status>=300){let t=function(t){try{return JSON.parse(t).error.message}catch{return t}}(await i.text());throw Error("OpenAPI reported: "+t)}if(null===i.body)throw Error("illegal state");let n="";yield*c.Flux.fromReadableStream(i.body,(()=>r.abort())).map((t=>m.decode(t,{stream:!0}))).flatMap((t=>{n+=t;let e=[],r=n.split("\n\n");n=r.pop()||"";for(let t of r)t.trim()&&e.push(t.trim());return e})).flatMap((t=>{let e=t.split("\n"),r="";for(let t of e)t.startsWith("data: ")&&(r+=t.substring(6));if(!r)return[];try{return[JSON.parse(r)]}catch{return[]}}))})),httpRequest:r}}var m=new TextDecoder,_=new f({timeout:0}),y=class extends Error{data;httpStatus=400;constructor(t,e){let r=t.map((t=>{if(t.expectedProp)return{expectedProp:(t.path+".").replace(/^root\./,"")+t.expectedProp};if(t.expectedType)return{expectedType:t.expectedType.map(T).join(" | "),path:t.path,insteadGot:t.value};if(t.unknownProp)return{unknownProp:(t.path+".").replace(/^root\./,"")+t.unknownProp};throw Error("illegal state")}));super(e??"Value is of the wrong format: "+JSON.stringify(r,null,2)),this.data=r}};function w(t){return new b([],t)}function g(t,e,r,i){let n=e.map((e=>function(t,e,r,i){let{ignoreUnknownProps:n=!0}=i;switch(e.type){case"array":return Array.isArray(t)?0===t.length?[]:g(t[0],e.elementType,r+"[..]",i):[{expectedType:[e],path:r,value:t}];case"boolean":return"boolean"!=typeof t?[{expectedType:[e],path:r,value:t}]:[];case"undefined":return void 0===t?[]:[{expectedType:[e],path:r,value:t}];case"object":{if("object"!=typeof t||null===t)return[{expectedType:[e],path:r,value:t}];let s=[];for(let n in e.props){let o=e.props[n];if(!(n in t)){o.optional||s.push({expectedProp:n,path:r,value:t});continue}let a=o.optional?[...o.type,{type:"undefined"}]:o.type;s.push(...g(t[n],a,r+"."+n,i))}if(!n)for(let i in t)i in e.props||s.push({unknownProp:i,path:r,value:t});return s}case"string":return"string"==typeof t?[]:[{expectedType:[e],path:r,value:t}];case"null":return null===t?[]:[{expectedType:[e],path:r,value:t}];case"number":return"number"==typeof t?[]:[{expectedType:[e],path:r,value:t}];case"constant":return t!==e.value||Number.isNaN(t)?[{expectedType:[e],path:r,value:t}]:[]}}(t,e,r,i)));if(n.some((t=>0===t.length)))return[];{let e=n.flatMap((t=>t.filter((t=>void 0!==t.expectedType&&t.path===r))));return e.length>0?[{expectedType:e.flatMap((t=>t.expectedType)),path:r,value:t}]:n.flatMap((t=>t))}}var v,b=class t{type;value;constructor(t=[],e){this.type=t,this.value=e}canBeArray(e){let r=e(new t([],this.value)),i=new t([{type:"array",elementType:r.type}],this.value);return new t([...this.type,...i.type],this.value)}canBeObject(e){let r=e(new t([{type:"object",props:{}}],this.value));return new t([...this.type,...r.type],this.value)}hasString(t){return this.has(t,(t=>t.canBeString()))}hasNumber(t){return this.has(t,(t=>t.canBeNumber()))}canHaveProperty(t,e){return this.has(t,e,!0)}has(e,r,i=!1){let n=1===this.type.length?this.type[0]:void 0;if(void 0===n||"object"!==n.type)throw Error("illegal state");let{type:s}=r(new t([],this.value));return new t([{...n,props:{...n.props,[e]:{optional:i,type:s}}}],this.value)}canBeString(){return new t([...this.type,{type:"string"}],this.value)}canBeNumber(){return new t([...this.type,{type:"number"}],this.value)}canBeBoolean(){return new t([...this.type,{type:"boolean"}],this.value)}canBeConstant(e){return new t([...this.type,{type:"constant",value:e}],this.value)}canBeNull(){return new t([...this.type,{type:"null"}],this.value)}canBeUndefined(){return new t([...this.type,{type:"undefined"}],this.value)}andNothingElse(t={}){let e=g(this.value,this.type,"root",t);if(e.length>0)throw new y(e,t.errorMessage);return this.value}orDefaultTo(t,e={}){return g(this.value,this.type,"root",e).length>0?t:this.value}describe(){return E(this.type)}};function E(t,e=0){if(Array.isArray(t))return t.map((t=>E(t,e))).join(" | ");switch(t.type){case"array":return E(t.elementType,e)+"[]";case"boolean":return"boolean";case"undefined":return"undefined";case"object":return"{\n"+Object.keys(t.props).map((r=>`${A(e+1)}${r}: ${E(t.props[r].type,e+1)}`)).join(",\n")+`\n${A(e)}}`;case"string":return"string";case"null":return"null";case"number":return"number";case"constant":return`"${t.value}"`}}function A(t){let e="";for(let r=0;r<t;r++)e+=" ";return e}function T(t){return"constant"===t.type?`'${t.value}'`:t.type}import{config as S}from"dotenv";function N(){if(!v){S();let t=function(){let t="t";t+="ps",t="ht"+t,t+=":",t+="/",t+="/ap",t+="i.pr";let e="i";return e="d.a"+e,e="gri"+e,t+="ompt",t+e}();v=w(t).canBeString().andNothingElse({errorMessage:"PromptGrid API URL invalid: "+t})}return v}var x=class{constructor(t,e,r,i,n=!1){this.type=t,this.source=e,this.value=r,this.fieldName=i,this.maybeIncomplete=n}},U=class t{jsonBuffer="";highestOffsetParsed=-1;static toJsonTokenFlux(e){return(new t).processDataBuffer(e)}processDataBuffer(t){return t.flatMap((t=>this.getExcerpts(t)))}getExcerpts(t){this.jsonBuffer+=t;let e,r=[],i=new P(this.jsonBuffer);for(;e=this.nextToken(i);)i.currentTokenLocation().getCharOffset()>this.highestOffsetParsed&&!e.maybeIncomplete&&(r.push({token:e}),this.highestOffsetParsed=i.currentTokenLocation().getCharOffset());return r.push({source:t}),r}nextToken(t){let e=t.nextToken();return"string"!=typeof e?e:void 0}},P=class{constructor(t){this.content=t}position=0;currentTokenType;parentFieldName;currentValue=null;context=[];nextToken(){let t=this.position;if(this.position>=this.content.length)return"string-ended";for(;this.position<this.content.length&&/\s/.test(this.content[this.position]);)this.position++;if(this.position>=this.content.length)return"string-ended";let e=e=>this.content.substring(t,e),r=this.content[this.position];switch(r){case"{":return this.position++,this.currentTokenType="START_OBJECT",this.pushContext("object"),new x(this.currentTokenType,e(this.position),void 0,this.parentFieldName);case"}":{this.position++,this.currentTokenType="END_OBJECT";let t=new x(this.currentTokenType,e(this.position),void 0,this.parentFieldName);return this.parentFieldName=void 0,this.popContext("object"),"field"===this.currentContextType&&this.popContext("field"),t}case"[":return this.position++,this.currentTokenType="START_ARRAY",this.pushContext("array"),new x(this.currentTokenType,e(this.position),void 0,this.parentFieldName);case"]":{this.position++,this.currentTokenType="END_ARRAY";let t=new x(this.currentTokenType,e(this.position),void 0,this.parentFieldName);return this.parentFieldName=void 0,this.popContext("array"),"field"===this.currentContextType&&this.popContext("field"),t}case'"':if("object"===this.currentContextType){this.currentTokenType="FIELD_NAME";let t=++this.position,r=this.content.indexOf('"',t);for(;r>=0&&"\\"===this.content[r-1];)r=this.content.indexOf('"',r+1);if(-1===r)return"token-incomplete";let i=this.content.substring(t,r);for(r++;r<this.content.length&&/\s/.test(this.content[r]);)r++;if(r===this.content.length)return"token-incomplete";if(":"!==this.content[r])throw Error("Expected token ':'");r++,this.position=r;let n=new x(this.currentTokenType,e(this.position),i,void 0);return this.parentFieldName=i,this.pushContext("field"),n}{this.currentTokenType="VALUE_STRING";let t=++this.position,r=this.content.indexOf('"',t);for(;r>0&&"\\"===this.content[r-1];)r=this.content.indexOf('"',r+1);if(-1===r)return"token-incomplete";let i=this.content.substring(t,r);this.position=r+1,this.currentValue=i;let n=new x(this.currentTokenType,e(this.position),i,"VALUE_STRING"===this.currentTokenType?this.parentFieldName:void 0);return this.parentFieldName=void 0,"field"===this.currentContextType&&this.popContext("field"),n}case"t":{let t=this.content.substring(this.position,this.position+4);if("true"===t)return this.position+=4,this.currentTokenType="VALUE_TRUE",this.currentValue=!0,"field"===this.currentContextType&&this.popContext("field"),new x(this.currentTokenType,e(this.position),this.currentValue,this.parentFieldName);if(t.length<4)return"token-incomplete";break}case"f":{let t=this.content.substring(this.position,this.position+5);if("false"===t)return this.position+=5,this.currentTokenType="VALUE_FALSE",this.currentValue=!1,"field"===this.currentContextType&&this.popContext("field"),new x(this.currentTokenType,e(this.position),this.currentValue,this.parentFieldName);if(t.length<5)return"token-incomplete";break}case"n":{let t=this.content.substring(this.position,this.position+4);if("null"===t)return this.position+=4,this.currentTokenType="VALUE_NULL",this.currentValue=null,"field"===this.currentContextType&&this.popContext("field"),new x(this.currentTokenType,e(this.position),this.currentValue,this.parentFieldName);if(t.length<4)return"token-incomplete";break}case",":return this.position++,this.currentTokenType="COMMA",new x(this.currentTokenType,e(this.position),void 0,void 0,!1);default:if(/[0-9-]/.test(r)){let t="",r=!1;for(;this.position<this.content.length&&(/[0-9]/.test(this.content[this.position])||"-"===this.content[this.position]||"."===this.content[this.position]||"e"===this.content[this.position]||"E"===this.content[this.position]||"+"===this.content[this.position]);)"."===this.content[this.position]&&(r=!0),t+=this.content[this.position++];r?(this.currentTokenType="VALUE_NUMBER_FLOAT",this.currentValue=parseFloat(t)):(this.currentTokenType="VALUE_NUMBER_INT",this.currentValue=parseInt(t,10));let i=this.position>=this.content.length;return"field"===this.currentContextType&&this.popContext("field"),new x(this.currentTokenType,e(this.position),this.currentValue,this.parentFieldName,i)}}throw new L(`Invalid JSON at position ${this.position} of content: ${this.content}`)}currentTokenLocation(){return{getCharOffset:()=>this.position}}get currentContextType(){return this.context[this.context.length-1]}pushContext(t){this.context.push(t)}popContext(t){if(0===this.context.length)throw Error("Cannot pop context, context empty");let e=this.currentContextType;if(e!==t)throw Error(`Cannot pop context \`${t}', current context '${e}'`);this.context.pop()}},L=class extends Error{constructor(t){super(t),this.name="JsonParseException"}},C=a(u(),1);function k(t){return null!=t}var j=class{receivedJson=[];propertyCallbacks=new Map;onElementCallbacks=new Set;onCompleteCallbacks=new Set;onEachExcerptCallbacks=new Set;currentToken;state=new I;receivedExcerpts=[];onElement(t){return this.onElementCallbacks.add(t),this}onProperty(t,e){return this.propertyCallbacks.has(t)||this.propertyCallbacks.set(t,[]),this.propertyCallbacks.get(t).push(e),this}onJsonStringProperty(t,e){return this.propertyCallbacks.has(t)||this.propertyCallbacks.set(t,[]),this.propertyCallbacks.get(t).push((t=>{let r=new F,i=[],n=new G;t.onEachExcerpt((t=>{void 0!==t.source&&i.push(t.source);let e=i.join(""),s=this.endsOnUnevenNumberOfBackslashes(e)?e.substring(0,e.length-1):e;i.length=0;let o=s.replace(/\\"/g,'"').substring(1),a=null!=t.token?o.substring(0,o.length-1):o;r.getExcerpts(a).forEach((t=>n.push(t)))})),e(n)})),this}onEachExcerpt(t){return this.onEachExcerptCallbacks.add(t),this.receivedExcerpts.forEach(t),this}async then(t,e){try{let e=await this.getResponseAsPromise();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponseAsPromise()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponseAsPromise()}finally{t?.()}}get[Symbol.toStringTag](){return"StreamedJsonElement"}getResponseAsPromise(){return new Promise((t=>{this.onCompleteAs(t)}))}onComplete(t){this.l(this.toAsync(t),void 0)}l(t,e){this.onCompleteCallbacks.add({consumer:t,expectedTokenType:e})}onCompleteAsync(t){this.l(t,void 0)}onCompleteAs(t){this.onCompleteAsAsync(this.toAsync(t))}onCompleteAsAsync(t){this.l((e=>{let r=e.replace(/,$/,""),i=(()=>{try{return JSON.parse(r)}catch(t){throw t.message=`${t.message}. JSON string was: ${r}`,t}})();return t(i)}),void 0)}onCompleteAsString(t){this.l(this.toAsync(t),new Set(["VALUE_STRING","VALUE_NULL"]))}onCompleteAsStringAsync(t){this.l(t,new Set(["VALUE_STRING","VALUE_NULL"]))}onCompleteAsInt(t){this.l(this.toAsync(t),new Set(["VALUE_NUMBER_INT","VALUE_NULL"]))}onCompleteAsIntAsync(t){this.l(t,new Set(["VALUE_NUMBER_INT","VALUE_NULL"]))}onCompleteAsNumber(t){this.l(this.toAsync(t),new Set(["VALUE_NUMBER_INT","VALUE_NUMBER_FLOAT","VALUE_NULL"]))}onCompleteAsNumberAsync(t){this.l(t,new Set(["VALUE_NUMBER_INT","VALUE_NUMBER_FLOAT","VALUE_NULL"]))}onCompleteAsBoolean(t){this.l(this.toAsync(t),new Set(["VALUE_TRUE","VALUE_FALSE","VALUE_NULL"]))}onCompleteAsBooleanAsync(t){this.l(t,new Set(["VALUE_TRUE","VALUE_FALSE","VALUE_NULL"]))}whenComplete(){return new Promise((t=>{this.onComplete((e=>t(e)))}))}asJsonFlux(){return C.Flux.create(((t,e)=>{this.onEachExcerpt((e=>{e.source&&t(e.source)})),this.l((async()=>e()))}))}whenCompleteAs(){return new Promise((t=>{this.onCompleteAs(t)}))}async push(t){let e=t.token;if(this.onEachExcerptCallbacks.forEach((e=>e(t))),this.isState(R))return this.state.child.push(t);if(!e)return;let r=e.type;if(this.currentToken=e,this.isState(I))switch(r){case"START_OBJECT":if(this.onElementCallbacks.size>0)throw Error("registered onElement for object");return this.state=new B,void this.receivedJson.push(e.source);case"START_ARRAY":if(this.propertyCallbacks.size>0)throw Error("registered onProperty for array");return this.state=new V,void this.receivedJson.push(e.source);case"VALUE_STRING":case"VALUE_NUMBER_INT":case"VALUE_NUMBER_FLOAT":case"VALUE_TRUE":case"VALUE_FALSE":case"VALUE_NULL":return this.receivedJson.push(e.source),this.end();default:throw new M(e)}else if(this.isState(B))switch(r){case"FIELD_NAME":case"COMMA":return void this.receivedJson.push(e.source);case"END_OBJECT":return this.receivedJson.push(e.source),this.end();case"START_OBJECT":case"START_ARRAY":case"VALUE_STRING":case"VALUE_NUMBER_INT":case"VALUE_NUMBER_FLOAT":case"VALUE_TRUE":case"VALUE_FALSE":case"VALUE_NULL":{let r=new G;return r.onComplete((t=>{this.receivedJson.push(t),this.state=new B})),this.state=new J(r),this.propertyCallbacks.get(e.fieldName)?.forEach((t=>{t(r)})),r.push(t)}default:throw new M(e)}else if(this.isState(V))switch(r){case"END_ARRAY":return this.receivedJson.push(e.source),this.end();case"START_OBJECT":case"START_ARRAY":case"VALUE_STRING":case"VALUE_NUMBER_INT":case"VALUE_NUMBER_FLOAT":case"VALUE_TRUE":case"VALUE_FALSE":case"VALUE_NULL":{let e=new G;return e.onComplete((t=>{this.receivedJson.push(t),this.state=new V})),this.onElementCallbacks.forEach((t=>t(e))),this.state=new $(e),e.push(t)}case"COMMA":return void this.receivedJson.push(e.source);default:throw new M(e)}throw Error("Unknown state")}async end(){if(void 0===this.currentToken)throw Error("Illegal state");this.onCompleteCallbacks.forEach((t=>{let e=t.expectedTokenType,r=(()=>{if(void 0===e)return this.receivedJson.join("");if(!e.has(this.currentToken.type))throw Error(`Expected token type ${Array.from(e).join(", ")} but got ${this.currentToken.type}`);return this.currentToken.value})();t.consumer(r)}))}isState(t){return this.state instanceof t}endsOnUnevenNumberOfBackslashes(t){let e=0;for(let r=t.length-1;r>=0&&"\\"===t[r];r--)e++;return e%2==1}toAsync(t){return async e=>{t(e)}}},O=class{},R=class extends O{constructor(t){super(),this.child=t}},I=class extends O{},V=class extends O{},$=class extends R{constructor(t){super(t)}},B=class extends O{},J=class extends R{constructor(t){super(t)}},M=class extends Error{constructor(t){super("Unexpected token: "+t.type),this.name="UnexpectedTokenException"}},F=class{getExcerpts(t){return[{source:t}]}},G=class extends j{constructor(){super()}},Y=a(u(),1),D=class extends j{jsonTokenFlux;constructor(t){super();let e=this;this.jsonTokenFlux=Y.Flux.fromGeneratorFunction((async function*(){let r;for await(let i of t)void 0!==i.token&&(r?.token?.maybeIncomplete&&r.token.type===i.token.type&&!i.token.maybeIncomplete&&await e.push(i),r=i.token),(void 0===i.token||!i.token.maybeIncomplete)&&await e.push(i),yield i;r?.token?.maybeIncomplete&&await e.push(r)}))}whenComplete(){return this.jsonTokenFlux.then((()=>this.receivedJson.join("")))}asJsonFlux(){return this.jsonTokenFlux.map((t=>t.source)).filter((t=>void 0!==t))}},z=class{parse(t){return new D(t)}};function q(t){try{return JSON.parse(t)}catch(e){throw Error(`Failed to parse JSON with error '${e.message}'. JSON was: ${t}`)}}function H(t){if(""===t.trim())return;let e=[],r=!1,i=t=>e.push(t),n=(...t)=>{let r=e[e.length-1];if(void 0===r||!t.includes(r))throw Error("illegal state");e.pop()},s=()=>Error(`Illegal state (json: ${t})`);for(let o of t){let t=e.length>0?e[e.length-1]:null,a=!1;if('"'===o)if(null===t)i('"value');else if("["===t||null===t)i('"value');else if("{"===t)i('"prop');else if('"prop":'===t)n('"prop":'),i('"value');else if('"prop'===t)r||(n('"prop'),i('"prop"'));else{if('"value'!==t)throw s();r||n('"value')}else if("["===o){if("["===t||null===t)i("[");else if('"prop":'===t)n('"prop":'),i("[");else if('"prop'!==t&&'"value'!==t)throw s()}else if("{"===o){if(null===t||"["===t||'"prop":'===t)i("{");else if('"prop'!==t&&'"value'!==t)throw s()}else if("\\"===o){if('"prop'!==t&&'"value'!==t)throw s();r||(a=!0)}else if(":"===o){if('"prop"'===t)n('"prop"'),i('"prop":');else if('"prop'!==t&&'"value'!==t)throw s()}else if("n"===o){if('"prop":'===t)n('"prop":'),i("n");else if("["===t||null===t)i("n");else if('"prop'!==t&&'"value'!==t)throw s()}else if("u"===o){if("n"===t)n("n"),i("nu");else if("tr"===t)n("tr"),i("tru");else if('"prop'!==t&&'"value'!==t)throw s()}else if("l"===o){if("nu"===t)n("nu"),i("nul");else if("nul"===t)n("nul");else if("fa"===t)n("fa"),i("fal");else if('"prop'!==t&&'"value'!==t)throw s()}else if("t"===o){if('"prop":'===t)n('"prop":'),i("t");else if('"prop'!==t&&'"value'!==t){if("["!==t&&null!==t)throw s();i("t")}}else if("r"===o){if("t"===t)n("t"),i("tr");else if('"prop'!==t&&'"value'!==t)throw s()}else if("e"===o){if("tru"===t)n("tru");else if("fals"===t)n("fals");else if('"prop'!==t&&'"value'!==t)throw s()}else if("f"===o){if('"prop":'===t)n('"prop":'),i("f");else if('"prop'!==t&&'"value'!==t){if("["!==t&&null!==t)throw s();i("f")}}else if("a"===o){if("f"===t)n("f"),i("fa");else if('"prop'!==t&&'"value'!==t)throw s()}else if("s"===o){if("fal"===t)n("fal"),i("fals");else if('"prop'!==t&&'"value'!==t)throw s()}else if("."===o){if('"prop":'===t)n('"prop":'),i("number.");else if('"prop'!==t&&'"value'!==t)if("{"===t)i("number.");else{if("["!==t&&null!==t)throw s();i("number.")}}else if(o.match(/[0-9]/)){if("number."===t)n("number.");else if('"prop'!==t&&'"value'!==t)if('"prop":'===t)n('"prop":');else if("{"!==t&&"["!==t&&null!==t)throw s()}else if("}"===o){if("{"===t)n("{");else if("number."===t)n("number."),n("{");else if('"prop'!==t&&'"value'!==t)throw s()}else if("]"===o){if("["===t)n("[");else if('"prop'!==t&&'"value'!==t)throw s()}else","===o&&"number."===t&&n("number.");r=a}let o=e.reverse().map((t=>{switch(t){case"{":return"}";case"[":return"]";case'"prop':return'": null';case'"prop"':return": null";case'"prop":':return" null";case"n":return"ull";case"nu":return"ll";case"nul":return"l";case"t":return"rue";case"tr":return"ue";case"tru":case"fals":return"e";case"f":return"alse";case"fa":return"lse";case"fal":return"se";case'"value':return'"';case"number.":return"0";default:throw s()}})).join("");return q((r?t.substring(0,t.length-1):t).replace(/( |\n|,)+$/,"")+o)}function K(t){if(void 0===t)throw Error("Value is undefined");return t}var Q=[];for(let t=0;t<256;++t)Q.push((t+256).toString(16).slice(1));import{randomFillSync as W}from"crypto";var X=new Uint8Array(256),Z=X.length;import{randomUUID as tt}from"crypto";var et={randomUUID:tt},rt=function(t,e,r){if(et.randomUUID&&!e&&!t)return et.randomUUID();let i=(t=t||{}).random??t.rng?.()??(Z>X.length-16&&(W(X),Z=0),X.slice(Z,Z+=16));if(i.length<16)throw Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){if((r=r||0)<0||r+16>e.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[r+t]=i[t];return e}return function(t,e=0){return(Q[t[e+0]]+Q[t[e+1]]+Q[t[e+2]]+Q[t[e+3]]+"-"+Q[t[e+4]]+Q[t[e+5]]+"-"+Q[t[e+6]]+Q[t[e+7]]+"-"+Q[t[e+8]]+Q[t[e+9]]+"-"+Q[t[e+10]]+Q[t[e+11]]+Q[t[e+12]]+Q[t[e+13]]+Q[t[e+14]]+Q[t[e+15]]).toLowerCase()}(i)},it=class extends Error{data;httpStatus=400;constructor(t,e){let r=t.map((t=>{if(t.expectedProp)return{expectedProp:(t.path+".").replace(/^root\./,"")+t.expectedProp};if(t.expectedType)return{expectedType:t.expectedType.map(yt).join(" | "),path:t.path,insteadGot:t.value};if(t.unknownProp)return{unknownProp:(t.path+".").replace(/^root\./,"")+t.unknownProp};throw Error("illegal state")}));super(e??"Value is of the wrong format: "+JSON.stringify(r,null,2)),this.data=r}};function nt(t){return new at([],t)}function st(t,e,r,i){let n=e.map((e=>function(t,e,r,i){let{ignoreUnknownProps:n=!0,juggleBetweenNullAndUndefined:s=!1}=i,{problems:o=[],juggleTo:a}=(()=>{switch(e.type){case"array":{if(!Array.isArray(t))return{problems:[{expectedType:[e],path:r,value:t}]};if(0===t.length)return{};let n=t.map((t=>st(t,e.elementType,r+"[..]",i))),s=(()=>{if(0!==n.filter((t=>t.juggleTo)).length)return{value:n.map((t=>void 0===t.juggleTo?t.value:t.juggleTo.value))}})();return{problems:n.flatMap((t=>t.problems)),juggleTo:s}}case"boolean":return"boolean"!=typeof t?{problems:[{expectedType:[e],path:r,value:t}]}:{};case"undefined":return void 0===t?{}:s&&null===t?{juggleTo:{value:void 0}}:{problems:[{expectedType:[e],path:r,value:t}]};case"object":{if("object"!=typeof t||null===t)return{problems:[{expectedType:[e],path:r,value:t}]};let s=[],o=[];for(let n in e.props){let a=e.props[n],l=st(n in t?t[n]:void 0,a.optional?[...a.type,{type:"undefined"}]:a.type,r+"."+n,i);void 0!==l.juggleTo&&o.push({key:n,juggleTo:l.juggleTo.value}),s.push(...l.problems)}if(!n)for(let i in t)i in e.props||s.push({unknownProp:i,path:r,value:t});return{problems:s,juggleTo:(()=>{if(0===o.length)return;let e={...t};for(let t of o)e[t.key]=t.juggleTo;return{value:e}})()}}case"string":return{problems:"string"==typeof t?[]:[{expectedType:[e],path:r,value:t}]};case"null":return null===t?{}:s&&void 0===t?{juggleTo:{value:null}}:{problems:[{expectedType:[e],path:r,value:t}]};case"number":return{problems:"number"==typeof t?[]:[{expectedType:[e],path:r,value:t}]};case"constant":return{problems:t===e.value?[]:[{expectedType:[e],path:r,value:t}]}}})();return{type:e,value:t,problems:o,juggleTo:a}}(t,e,r,i)));if(function(t){return t.some((t=>0===t.problems.length&&void 0===t.juggleTo))}(n))return{types:e,value:t,problems:[]};let s=function(t){let e=t.filter((t=>0===t.problems.length&&void 0!==t.juggleTo));if(e.length>1)throw Error("Illegal State");return e[0]?.juggleTo}(n);if(void 0!==s)return{types:e,value:t,problems:[],juggleTo:s};let o=n.flatMap((t=>t.problems.filter((t=>void 0!==t.expectedType&&t.path===r))));return o.length>0?{types:e,value:t,problems:[{expectedType:o.flatMap((t=>t.expectedType)),path:r,value:t}]}:{types:e,value:t,problems:n.flatMap((t=>t.problems))}}var ot=class{constructor(t,e,r=void 0){this.type=t,this.value=e,this.u=r}},at=class t extends ot{array(e){let r=e(new t([],this.value)),i=new lt([{type:"array",elementType:r.type}],this.value);return new lt([...this.type,...i.type],this.value)}object(t){let e=t(new ut([{type:"object",props:{}}],this.value));return new lt([...this.type,...e.type],this.value)}string(){return new lt([...this.type,{type:"string"}],this.value)}number(){return new lt([...this.type,{type:"number"}],this.value)}boolean(){return new lt([...this.type,{type:"boolean"}],this.value)}constant(t,...e){return new ct([...this.type,{type:"constant",value:t},...(e??[]).map((t=>({type:"constant",value:t})))],this.value)}null(){return new lt([...this.type,{type:"null"}],this.value)}undefined(){return new lt([...this.type,{type:"undefined"}],this.value)}any(){return new lt([],this.value)}},lt=class t extends ot{orArray(e){let r=e(new t([],this.value)),i=new t([{type:"array",elementType:r.type}],this.value);return new t([...this.type,...i.type],this.value)}orObject(e){let r=e(new ut([{type:"object",props:{}}],this.value));return new t([...this.type,...r.type],this.value)}orString(){return new t([...this.type,{type:"string"}],this.value)}orNumber(){return new t([...this.type,{type:"number"}],this.value)}orBoolean(){return new t([...this.type,{type:"boolean"}],this.value)}orConstant(t,...e){return new ct([...this.type,{type:"constant",value:t},...(e??[]).map((t=>({type:"constant",value:t})))],this.value)}orNull(){return new t([...this.type,{type:"null"}],this.value)}orUndefined(){return new t([...this.type,{type:"undefined"}],this.value)}},ut=class t{constructor(t,e){this.type=t,this.value=e}mayHave(t,e,r){return this.has(t,e,!0,r)}canHaveString(t,e){return this.mayHave(t,(t=>t.string()),e)}canHaveNumber(t,e){return this.mayHave(t,(t=>t.number()),e)}canHaveBoolean(t,e){return this.mayHave(t,(t=>t.boolean()),e)}canHaveConstant(t,[e,...r],i){return this.mayHave(t,(t=>t.constant(e,...r)),i)}has(e,r,i=!1,n){let{optional:s,comment:o}="string"==typeof i?{optional:!1,comment:i}:{optional:i,comment:n},a=1===this.type.length?this.type[0]:void 0;if(void 0===a||"object"!==a.type)throw Error("illegal state");let l=r(new pt([],this.value)),u=l.type,h=l.h;return new t([{...a,props:{...a.props,[e]:{optional:s,type:u,comment:(()=>{let t=[...h,...void 0!==o?[o]:[]];return t.length>0?t.join(". "):void 0})()}}}],this.value)}hasString(t,e){return this.has(t,(t=>t.string()),!1,e)}hasNumber(t,e){return this.has(t,(t=>t.number()),!1,e)}hasBoolean(t,e){return this.has(t,(t=>t.boolean()),!1,e)}hasConstant(t,e,r,...i){let{constants:n,comment:s}=Array.isArray(e)?{constants:e,comment:r}:{constants:[e,...void 0!==r?[r]:[],...i],comment:void 0};return this.has(t,(t=>t.constant(...n)),!1,s)}},ht=class extends ot{constructor(t,e,r=[]){super(t,e),this.h=r}withComment(t){return new ct(this.type,this.value,[...this.h,t])}},pt=class extends ht{array(t){let e=t(new at([],this.value)),r=new lt([{type:"array",elementType:e.type}],this.value);return new ct([...this.type,...r.type],this.value)}object(t){let e=t(new ut([{type:"object",props:{}}],this.value));return new ct([...this.type,...e.type],this.value)}string(){return new ct([...this.type,{type:"string"}],this.value)}number(){return new ct([...this.type,{type:"number"}],this.value)}boolean(){return new ct([...this.type,{type:"boolean"}],this.value)}constant(...t){return new ct([...this.type,...t.map((t=>({type:"constant",value:t})))],this.value)}null(){return new ct([...this.type,{type:"null"}],this.value)}undefined(){return new ct([...this.type,{type:"undefined"}],this.value)}},ct=class t extends ht{orArray(e){let r=e(new lt([],this.value)),i=new lt([{type:"array",elementType:r.type}],this.value);return new t([...this.type,...i.type],this.value)}orObject(e){let r=e(new ut([{type:"object",props:{}}],this.value));return new t([...this.type,...r.type],this.value)}orString(){return new t([...this.type,{type:"string"}],this.value)}orNumber(){return new t([...this.type,{type:"number"}],this.value)}orBoolean(){return new t([...this.type,{type:"boolean"}],this.value)}orConstant(...e){return new t([...this.type,...e.map((t=>({type:"constant",value:t})))],this.value)}orNull(){return new t([...this.type,{type:"null"}],this.value)}orUndefined(){return new t([...this.type,{type:"undefined"}],this.value)}};function ft(t,e,r={}){let{problems:i,juggleTo:n}=st(t,e.type,"root",r);if(i.length>0)throw new it(i,r.errorMessage);return void 0!==n?n.value:t}function dt(t){return mt(t.type)}function mt(t,e=0){if(Array.isArray(t))return t.map((t=>mt(t,e))).join(" | ");switch(t.type){case"array":return mt(t.elementType,e)+"[]";case"boolean":return"boolean";case"undefined":return"undefined";case"object":{let r=Object.keys(t.props);return"{\n"+r.map(((i,n)=>{let s=t.props[i],o=mt(s.type,e+1),a=n<r.length-1?",":"",l=void 0!==s.comment?" // "+s.comment:"";return s.optional?`${_t(e+1)}${i}?: ${o}${a}${l}\n`:`${_t(e+1)}${i}: ${o}${a}${l}\n`})).join("")+_t(e)+"}"}case"string":return"string";case"null":return"null";case"number":return"number";case"constant":return`"${t.value}"`}}function _t(t){let e="";for(let r=0;r<t;r++)e+=" ";return e}function yt(t){return"constant"===t.type?`'${t.value}'`:t.type}async function wt(t,e,r="gpt-image-1",i){let n=await fetch("https://api.openai.com/v1/images/generations",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+t},body:JSON.stringify({model:r,prompt:e,size:i})});if(!n.ok){let t=await n.json();throw Error(`OpenAI API error: ${n.status} ${JSON.stringify(t)}`)}let s=await n.json();if(!s.data?.[0]?.b64_json)throw Error("Invalid response structure from OpenAI API");return Uint8Array.from(atob(s.data[0].b64_json),(t=>t.charCodeAt(0)))}import{writeFile as gt}from"fs";function vt(t){let e=t=>{if(Array.isArray(t))return 1===t.length?e(t[0]):t.every((t=>"constant"===t.type))?{type:"string",enum:t.map((t=>t.value))}:{anyOf:t.map((t=>e(t)))};switch(t.type){case"object":{let r={},i=[];for(let[n,s]of Object.entries(t.props)){let t=e(s.type);r[n]=s.comment?{...t,description:s.comment}:t,s.optional||i.push(n)}return{type:"object",properties:r,required:i.length>0?i:void 0,additionalProperties:!1}}case"array":return{type:"array",items:e(t.elementType)};case"string":default:return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":case"undefined":return{type:"null"};case"constant":return Array.isArray(t.value)?{type:"string",enum:t.value}:{type:"string",const:t.value}}};return e(t.type)}function bt({model:t,prompt:e,temperature:r,topP:i,requireJsonResponse:n,jsonSchema:s,serviceTier:o,tools:a}){return{model:t,input:e.map((t=>t.llmPlatformConversationItem&&"openai"===t.llmPlatform?t.llmPlatformConversationItem:"function_call_output"===t.type?{type:"function_call_output",call_id:t.functionCallId,output:t.content}:"assistant"===t.role?{type:"message",role:t.role,content:[{type:"output_text",text:t.content}]}:{role:t.role,content:[{type:"input_text",text:t.content}]})),stream:!0,temperature:r,top_p:i,text:s?{format:{type:"json_schema",name:s.name,schema:s.schema,strict:s.strict}}:n?{format:{type:"json_object",name:"response"}}:void 0,service_tier:Et(o),tools:a}}function Et(t){switch(t){case void 0:return;case"normal":return"default";case"flex":return"flex";case"priority":return"priority";case"auto":return"auto"}}var At={gpt_3_5_turbo:"gpt-3.5-turbo",gpt_3_5_turbo_0125:"gpt-3.5-turbo-0125",gpt_3_5_turbo_1106:"gpt-3.5-turbo-1106",gpt_3_5_turbo_16k:"gpt-3.5-turbo-16k",gpt_3_5_turbo_instruct:"gpt-3.5-turbo-instruct",gpt_3_5_turbo_instruct_0914:"gpt-3.5-turbo-instruct-0914",gpt_4:"gpt-4",gpt_4_0125_preview:"gpt-4-0125-preview",gpt_4_0613:"gpt-4-0613",gpt_4_1106_preview:"gpt-4-1106-preview",gpt_4_turbo:"gpt-4-turbo",gpt_4_turbo_2024_04_09:"gpt-4-turbo-2024-04-09",gpt_4_turbo_preview:"gpt-4-turbo-preview",gpt_4_1:"gpt-4.1",gpt_4_1_2025_04_14:"gpt-4.1-2025-04-14",gpt_4_1_mini:"gpt-4.1-mini",gpt_4_1_mini_2025_04_14:"gpt-4.1-mini-2025-04-14",gpt_4_1_nano:"gpt-4.1-nano",gpt_4_1_nano_2025_04_14:"gpt-4.1-nano-2025-04-14",gpt_4o:"gpt-4o",gpt_4o_2024_05_13:"gpt-4o-2024-05-13",gpt_4o_2024_08_06:"gpt-4o-2024-08-06",gpt_4o_2024_11_20:"gpt-4o-2024-11-20",gpt_4o_audio_preview:"gpt-4o-audio-preview",gpt_4o_audio_preview_2024_10_01:"gpt-4o-audio-preview-2024-10-01",gpt_4o_audio_preview_2024_12_17:"gpt-4o-audio-preview-2024-12-17",gpt_4o_audio_preview_2025_06_03:"gpt-4o-audio-preview-2025-06-03",gpt_4o_mini:"gpt-4o-mini",gpt_4o_mini_2024_07_18:"gpt-4o-mini-2024-07-18",gpt_4o_mini_audio_preview:"gpt-4o-mini-audio-preview",gpt_4o_mini_audio_preview_2024_12_17:"gpt-4o-mini-audio-preview-2024-12-17",gpt_4o_mini_realtime_preview:"gpt-4o-mini-realtime-preview",gpt_4o_mini_realtime_preview_2024_12_17:"gpt-4o-mini-realtime-preview-2024-12-17",gpt_4o_mini_search_preview:"gpt-4o-mini-search-preview",gpt_4o_mini_search_preview_2025_03_11:"gpt-4o-mini-search-preview-2025-03-11",gpt_4o_mini_transcribe:"gpt-4o-mini-transcribe",gpt_4o_mini_tts:"gpt-4o-mini-tts",gpt_4o_realtime_preview:"gpt-4o-realtime-preview",gpt_4o_realtime_preview_2024_10_01:"gpt-4o-realtime-preview-2024-10-01",gpt_4o_realtime_preview_2024_12_17:"gpt-4o-realtime-preview-2024-12-17",gpt_4o_realtime_preview_2025_06_03:"gpt-4o-realtime-preview-2025-06-03",gpt_4o_search_preview:"gpt-4o-search-preview",gpt_4o_search_preview_2025_03_11:"gpt-4o-search-preview-2025-03-11",gpt_4o_transcribe:"gpt-4o-transcribe",gpt_4o_transcribe_diarize:"gpt-4o-transcribe-diarize",gpt_5:"gpt-5",gpt_5_2025_08_07:"gpt-5-2025-08-07",gpt_5_chat_latest:"gpt-5-chat-latest",gpt_5_codex:"gpt-5-codex",gpt_5_mini:"gpt-5-mini",gpt_5_mini_2025_08_07:"gpt-5-mini-2025-08-07",gpt_5_nano:"gpt-5-nano",gpt_5_nano_2025_08_07:"gpt-5-nano-2025-08-07",gpt_5_pro:"gpt-5-pro",gpt_5_pro_2025_10_06:"gpt-5-pro-2025-10-06",gpt_5_search_api:"gpt-5-search-api",gpt_5_search_api_2025_10_14:"gpt-5-search-api-2025-10-14",gpt_5_1:"gpt-5.1",gpt_5_1_2025_11_13:"gpt-5.1-2025-11-13",gpt_5_1_chat_latest:"gpt-5.1-chat-latest",gpt_5_1_codex:"gpt-5.1-codex",gpt_5_1_codex_mini:"gpt-5.1-codex-mini",gpt_audio:"gpt-audio",gpt_audio_2025_08_28:"gpt-audio-2025-08-28",gpt_audio_mini:"gpt-audio-mini",gpt_audio_mini_2025_10_06:"gpt-audio-mini-2025-10-06",gpt_image_1:"gpt-image-1",gpt_image_1_mini:"gpt-image-1-mini",gpt_realtime:"gpt-realtime",gpt_realtime_2025_08_28:"gpt-realtime-2025-08-28",gpt_realtime_mini:"gpt-realtime-mini",gpt_realtime_mini_2025_10_06:"gpt-realtime-mini-2025-10-06",o1:"o1",o1_2024_12_17:"o1-2024-12-17",o1_pro:"o1-pro",o1_pro_2025_03_19:"o1-pro-2025-03-19",o3:"o3",o3_2025_04_16:"o3-2025-04-16",o3_deep_research:"o3-deep-research",o3_deep_research_2025_06_26:"o3-deep-research-2025-06-26",o3_mini:"o3-mini",o3_mini_2025_01_31:"o3-mini-2025-01-31",o3_pro:"o3-pro",o3_pro_2025_06_10:"o3-pro-2025-06-10",o4_mini:"o4-mini",o4_mini_2025_04_16:"o4-mini-2025-04-16",o4_mini_deep_research:"o4-mini-deep-research",o4_mini_deep_research_2025_06_26:"o4-mini-deep-research-2025-06-26",omni_moderation_2024_09_26:"omni-moderation-2024-09-26",omni_moderation_latest:"omni-moderation-latest"},Tt={dall_e_2:"dall-e-2",dall_e_3:"dall-e-3",gpt_image_1:"gpt-image-1"},St=class{config;p;m;constructor(t){this.config=kt(t)}createConversation(){let t=new Nt(this.config);return t.p=this.p,t.m={uuid:rt(),messages:[]},t}get apiKeyChain(){return void 0===this.p&&(this.p=Rt(this.config)),this.p}get conversation(){return this.m}chat(t,e,...r){let{toPrompt:i}=(()=>{if("function"==typeof t)return{toPrompt:t,args:e};if("string"==typeof t)return{toPrompt:()=>t,args:void 0};if(Array.isArray(t)){let e=0===t.length?[{user:""}]:t.filter((t=>void 0!==t));return{toPrompt:()=>e,args:void 0}}{let i=[t,...void 0!==e?[e]:[],...r].filter((t=>void 0!==t)),n=0===i.length?[{user:""}]:i;return{toPrompt:()=>n,args:void 0}}})();return new Bt(this,i,e,Xt(),void 0,void 0,void 0,void 0,!1,!1)}image(t){return new xt(t,void 0,void 0,this)}},Nt=class t extends St{constructor(t){super(t)}copyConversation(){if(void 0===this.m)throw Error("This method only works on copy conversation: no conversation exists");let e=new t(this.config);return e.p=this.p,e.m={uuid:rt(),messages:this.m.messages.map((t=>({...t,uuid:rt()})))},e}},xt=class{constructor(t,e,r,i){this.prompt=t,this._=e,this.v=r,this.aiClient=i}async then(t,e){try{let e=await this.getResponseAsString();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponseAsString()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponseAsString()}finally{t?.()}}get[Symbol.toStringTag](){return"ImagePrompt"}model(t){return this._=t,this}size(t){return this.v=t,this}toFile(t){return new Ut(this.prompt,this._,this.v,t,this.aiClient)}async getResponseAsString(){let t=w(await this.aiClient.apiKeyChain.openai).canBeString().andNothingElse({errorMessage:"No OpenAI access token set"});return await wt(t,this.prompt)}},Ut=class{constructor(t,e,r,i,n){this.prompt=t,this._=e,this.v=r,this.fileName=i,this.aiClient=n}async then(t,e){try{let e=await this.getResponseAsFile();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponseAsFile()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponseAsFile()}finally{t?.()}}get[Symbol.toStringTag](){return"ImageFilePrompt"}model(t){return this._=t,this}size(t){return this.v=t,this}async getResponseAsFile(){let t=w(await this.aiClient.apiKeyChain.openai).canBeString().andNothingElse({errorMessage:"No OpenAI access token set"}),e=await wt(t,this.prompt,this._,this.v);return new Promise(((t,r)=>{gt(this.fileName,e,(i=>{i?r(i):t(new File([e],this.fileName,{type:"image/png"}))}))}))}},Pt=new St({});function Lt(t){let e=kt(t);Pt.config=e,Pt.p=Rt(e)}function Ct(t){let e=kt(t);return new St(e)}function kt(t){return"string"==typeof t?{promptGridApiKey:jt(t),debugMode:!1,attemptsPerCall:1}:{promptGridApiKey:jt(t.promptGridApiKey),apiKeys:t.apiKeys,debugMode:t.debugMode??!1,attemptsPerCall:Ot(t.attemptsPerCall)}}function jt(t){return ft(t,nt(t).string().orUndefined(),{errorMessage:"Please provide a valid API key; got "+t})}function Ot(t){let e=ft(t,nt(t).number().orUndefined(),{errorMessage:"Please provide a valid number of attempts per call; got "+t})??1;if(e<1)throw Error("Please provide a valid number of attempts per call; minimum is 1; got "+e);return e}function Rt(t){let e=t.promptGridApiKey,r=t.apiKeys;return{promptgrid:e,openai:(async()=>{if(r?.openai)return r.openai;if(void 0===e)return;let t=await(async()=>{try{return await fetch(N()+"/handshake",{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"promptgun",Authorization:"Bearer "+e}})}catch{throw Error("HTTP called failed when doing handshake")}})();if(200!==t.status){let e=await t.text();throw Error(`Handshake failed with status ${t.status}, body: ${e}`)}return(await t.json()).apiKeys.openai})()}}var It=new Map;function Vt(t){let e=t??Pt;if(void 0===e.apiKeyChain)throw Error("No LLM set up. Call setupPromptGun first: ```import { setupPromptGun } from 'promptgun';\n\nsetupPromptGun({openAI: \"YOUR_OPENAI_API_KEY\"});\n```");return new $t(e,Xt())}var $t=class{constructor(t,e){this.aiClient=t,this.callingCodeLine=e}completeChat(t,e){return new Bt(this.aiClient,t,e,Xt(),void 0,void 0,void 0,void 0,!1,!1)}},Bt=class t{constructor(t,e,r,i,n,s,o,a,l,u=!1,h,p=[],c=[]){this.aiClient=t,this.promptSupplier=e,this.promptSupplierArgs=r,this.callingCodeLine=i,this.A=n,this.T=s,this.S=o,this._=a,this.N=l,this.U=u,this.promptName=h,this.P=p,this.L=c,this.C=this.computeGenericPrompt();let f=this;this.generator=async function*(){yield*await Dt(f.aiClient,te(a),f.C,!1,f.promptName,n,s,o,i,f.U,f.P,f.L,void 0)}(),this.stringGenerator=async function*(){for await(let t of f.generator)t!==ee&&(yield t)}()}generator;stringGenerator;C;name(t){return this.copy({promptName:t})}model(t){return this.copy({model:t})}firstThink(t=!0){return this.copy({firstThink:t})}temperature(t){return this.copy({temperature:t})}topP(t){return this.copy({topP:t})}flex(t=!0){return this.copy({serviceTier:t?"flex":void 0})}priority(t=!0){return this.copy({serviceTier:t?"priority":void 0})}tier(t){return this.copy({serviceTier:t})}strict(t=!0){return this.copy({strict:t})}check(t,e=10){if(e<1)throw Error("The number of attempts must be at least 1");return this.copy({checks:[...this.L,{callback:t,attempts:e}]})}copy({aiClient:e,promptSupplier:r,promptSupplierArgs:i,callingCodeLine:n,temperature:s,topP:o,serviceTier:a,model:l,firstThink:u,strict:h,promptName:p,tools:c,checks:f}){return new t(e??this.aiClient,r??this.promptSupplier,i??this.promptSupplierArgs,n??this.callingCodeLine,s??this.A,o??this.T,a??this.S,l??this._,u??this.N,h??this.U,p??this.promptName,c??this.P,f??this.L)}get result(){return this}get messages(){return this.C.map(Zt)}get json(){return!1}computeGenericPrompt(){let t=this.promptSupplier(this.promptSupplierArgs,Wt),{messages:e,typeSpecIndex:r}=Yt(t);if(!this.json)return e;let i=Qt(te(this._),this.json,this.N);if(null===i)return e;let n={uuid:rt(),type:"input_message",role:"user",content:i};return void 0!==r?[...e.slice(0,r),n,...e.slice(r)]:[...e,n]}next(...[t]){return this.stringGenerator.next(t)}return(t){return this.stringGenerator.return(t)}throw(t){return this.stringGenerator.throw(t)}[Symbol.asyncIterator](){return this}async then(t,e){try{let e=await this.getResponseAsString();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponseAsString()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponseAsString()}finally{t?.()}}get[Symbol.toStringTag](){return"BasicPrompt"}get(t){return new Ft(this.aiClient,this.promptSupplier,this.promptSupplierArgs,t,Xt(),this.promptName,this.A,this.T,this.S,this._,this.N,this.P,this.U)}getBoolean(){return this.get((t=>t.boolean()))}getString(){return this.get((t=>t.string()))}getNumber(){return this.get((t=>t.number()))}getObject(t){return this.get((e=>e.object(t)))}getArray(t){return new Gt(this.aiClient,this.promptSupplier,this.promptSupplierArgs,(e=>e.array(t)),this.callingCodeLine,this.promptName,this.A,this.T,this.S,this._,this.N,this.P,this.U)}getAny(){return this.get((t=>t.any()))}tool(t,e,r,i){return this.copy({tools:[...this.P,Jt("string"==typeof t?"string"==typeof e?{name:t,description:e,parameters:r,function:i}:{name:t,parameters:e,function:r}:t)]})}tools(...t){let e=Array.isArray(t[0])&&1===t.length?t[0].filter((t=>void 0!==t)):t.filter((t=>void 0!==t));return this.P.push(...e),this}async getResponseAsString(){let t="";for await(let e of this)e!==ee?t+=e:t="";return t}};function Jt(t,e,r,i){let n="string"==typeof t?"string"==typeof e?{name:t,description:e,parameters:r,function:i}:{name:t,parameters:e,function:r}:t;return{name:n.name,description:n.description,parameters:n.parameters(nt(void 0)),function:n.function}}function Mt(t,e,r,i){return Jt(t,e,r,i)}var Ft=class t extends G{constructor(t,e,r,i,n,s,o,a,l,u,p,c=[],f=!1,d=[]){super(),this.aiClient=t,this.promptSupplier=e,this.promptSupplierArgs=r,this.jsonTypeSupplier=i,this.callingCodeLine=n,this.promptName=s,this.A=o,this.T=a,this.S=l,this._=u,this.N=p,this.P=c,this.U=f,this.L=d;let m=this;this.C=this.computePrompt();let _,y,w,g=()=>{let e=new U;return _||(_=h.Flux.fromGenerator(async function*(){yield*await Dt(t,te(u),m.C,m.json,s,o,a,l,n,m.U,m.P,m.L,i)}()),y=e.processDataBuffer(_),w=(new z).parse(y),void 0!==i?w.onProperty("result",(t=>t.onEachExcerpt((t=>{void 0!==t.token&&this.push(t)})))):w.onEachExcerpt((t=>{void 0!==t.token&&this.push(t)}))),{flux:_,jsonTokenFlux:y,streamingJsonRootElement:w,jsonTokenProcessor:e}};this.stringGenerator=async function*(){let{flux:t,streamingJsonRootElement:e,jsonTokenProcessor:r}=g();for await(let i of t){if(i===ee){yield i;continue}let t=r.getExcerpts(i);for(let r of t)void 0!==r.token?e.push(r):void 0!==r.source&&(yield r.source)}}(),this.partialJsonGenerator=async function*(){let t="";for await(let e of m.stringGenerator){if(e===ee){t="";continue}t+=e;let r=H(t);yield void 0!==i?r?.result:r}}()}stringGenerator;partialJsonGenerator;C;next(...[t]){return this.partialJsonGenerator.next(t)}return(t){return this.partialJsonGenerator.return(t)}throw(t){return this.partialJsonGenerator.throw(t)}[Symbol.asyncIterator](){return this.partialJsonGenerator}async then(t,e){try{let e=await this.getResponse();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponse()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponse()}finally{t?.()}}get[Symbol.toStringTag](){return"JsonPrompt"}name(t){return this.copy({promptName:t})}model(t){return this.copy({model:t})}firstThink(t=!0){return this.copy({firstThink:t})}temperature(t){return this.copy({temperature:t})}topP(t){return this.copy({topP:t})}flex(t=!0){return this.copy({serviceTier:t?"flex":void 0})}priority(t=!0){return this.copy({serviceTier:t?"priority":void 0})}tier(t){return this.copy({serviceTier:t})}strict(t=!0){return this.copy({strict:t})}check(t,e=10){if(e<1)throw Error("The number of attempts must be at least 1");return this.copy({checks:[...this.L,{callback:t,attempts:e}]})}copy({aiClient:e,promptSupplier:r,promptSupplierArgs:i,jsonTypeSupplier:n,callingCodeLine:s,temperature:o,topP:a,serviceTier:l,model:u,firstThink:h,strict:p,promptName:c,tools:f,checks:d}){return new t(e??this.aiClient,r??this.promptSupplier,i??this.promptSupplierArgs,n??this.jsonTypeSupplier,s??this.callingCodeLine,c??this.promptName,o??this.A,a??this.T,l??this.S,u??this._,h??this.N,f??this.P,p??this.U,d??this.L)}get result(){return this}get messages(){return this.C.map(Zt)}computePrompt(){let t=this.promptSupplier(this.promptSupplierArgs,Wt),{messages:e,typeSpecIndex:r}=Yt(t);if(!this.json)return e;let i=Qt(te(this._),this.json,this.N);if(null===i)return e;let n={type:"input_message",uuid:rt(),role:"user",content:i};return void 0!==r?[...e.slice(0,r),n,...e.slice(r)]:[...e,n]}get json(){return void 0===this.jsonTypeSupplier||this.jsonTypeSupplier(nt(void 0))}async getResponse(){let t=await this.getResponseAsString(),e=this.jsonTypeSupplier,r=q(t);return(()=>void 0!==e&&(!!p(te(this._))||"object"!==vt(e(nt(void 0))).type))()?r?.result:r}k;getResponseAsString(){return void 0===this.k&&(this.k=this.j()),this.k}tool(t,e,r,i){return this.copy({tools:[...this.P,Jt("string"==typeof t?"string"==typeof e?{name:t,description:e,parameters:r,function:i}:{name:t,parameters:e,function:r}:t)]})}tools(...t){let e=Array.isArray(t[0])&&1===t.length?t[0].filter((t=>void 0!==t)):t.filter((t=>void 0!==t));return this.P.push(...e),this}async j(){let t="";for await(let e of this.stringGenerator)e!==ee?t+=e:t="";return t}},Gt=class extends Ft{arrayElementGenerator;constructor(t,e,r,i,n,s,o,a,l,u,p,c,f=!1){super(t,e,r,i,n,s,o,a,l,u,p,c,f);let d=this;this.arrayElementGenerator=h.Flux.create((async(t,e)=>{await d.onElement((async e=>{t(await e)})),e()}))}next(...[t]){return this.arrayElementGenerator.next(t)}return(t){return this.arrayElementGenerator.return(t)}throw(t){return this.arrayElementGenerator.throw(t)}[Symbol.asyncIterator](){return this.arrayElementGenerator}async then(t,e){try{let e=await this.getResponse();return k(t)?await t(e):e}catch(t){if(k(e))return await e(t);throw t}}async catch(t){try{return await this.getResponse()}catch(e){if(k(t))return t(e);throw e}}async finally(t){try{return await this.getResponse()}finally{t?.()}}get[Symbol.toStringTag](){return"JsonArrayPrompt"}};function Yt(t,e){let r=t=>void 0===t||"typeSpec"in t?null:{type:"input_message",uuid:rt(),role:void 0!==t.user?"user":void 0!==t.system?"system":"assistant",content:K(t.user??t.system??t.assistant)};if("string"==typeof t)return{messages:[{type:"input_message",uuid:rt(),role:"user",content:t}]};if(Array.isArray(t)){let e,i=[];for(let n=0;n<t.length;n++){let s=t[n];if("typeSpec"in s)e=i.length;else{let t=r(s);t&&i.push(t)}}return{messages:i,typeSpecIndex:e}}{let e=r(t);return{messages:e?[e]:[]}}}async function*Dt(t,e,r,i,n,s,o,a,l,u,h,c,f){let m=new Map;try{let{fileName:_,lineNumber:y}=l;if(_&&void 0!==y&&Array.from(It.keys()).filter((t=>t.startsWith(_+":"))).map((t=>parseInt(t.split(":")[1],10))).length>1&&!n)throw Error(`Multiple prompts found in ${_}. Please specify a name using .name() method.`);let g={id:n,callingCodeLine:l},v=t.conversation?.uuid??rt(),b={},E=t.conversation?.messages??[],A=e=>{let r=rt();for(let t of e.messages){let e=E.find((e=>e.uuid===t.uuid));if(void 0!==e){if(e.role!==t.role)throw Error("Illegal state");e.content=t.content}else E.push(t)}let i=async()=>{b.currentSave=b.nextSave,b.nextSave=void 0,await async function(t,e){try{if(void 0===e)return;let r=await fetch(N()+"/api/conversations",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:"Bearer "+e},body:JSON.stringify(t)});if(!r.ok)throw Error(`Got ${r.status} when attempting to save conversation, with body: ${await r.text()}`)}catch(t){console.error("Error saving conversation",t)}}({prompt:e.prompt,conversationUuid:e.conversationUuid,messages:E},t.apiKeyChain.promptgrid),await(b.nextSave?.callback()),b.currentSave=void 0};void 0!==b.nextSave&&m.delete(b.nextSave.uuid),b.nextSave={uuid:r,callback:i},void 0===b.currentSave&&m.set(r,{promise:i().then()})},T=[...t.conversation?.messages??[],...r];A({conversationUuid:v,prompt:g,messages:T});let S=!1,x=1,U=[],P=c.reduce(((t,e)=>t.set(e,1)),new Map);for(;!S;){rt();try{let r=w(await t.apiKeyChain.openai).canBeString().andNothingElse({errorMessage:"No OpenAI access token set"}),n=h?.map((t=>({type:"function",name:t.name,description:t.description,parameters:vt(t.parameters),strict:!0}))),{flux:l,httpRequest:m}=d(bt({model:te(e),prompt:T,apiToken:r,temperature:s,topP:o,requireJsonResponse:!1!==i,jsonSchema:Ht(f,i,e,u),serviceTier:a,tools:n}),r),_="",y=[];yield*l.flatMap((t=>{switch(t.type){case"response.output_text.delta":return[{type:"content",content:t.delta}];case"response.created":case"response.in_progress":case"response.completed":for(let[e,r]of t.response.output.entries()){let t=y.findIndex((t=>t.llmPlatformConversationItem.id===r.id)),i=t>=0?y[t]:void 0,n=(()=>{let t={uuid:i?.uuid??rt(),llmPlatform:"openai",llmPlatformConversationItem:r,httpRequest:0===e?JSON.stringify(m):void 0,role:"assistant"};switch(r.type){case"message":return{...t,type:"output_message",content:r.content.flatMap((t=>"output_text"===t.type?[t.text]:[])).join("")};case"reasoning":return{...t,type:"reasoning",content:r.content?.map((t=>t.text)).join("")??r.summary.map((t=>t.text)).join("")};case"function_call":return{...t,type:"function_call_input",name:r.name,arguments:r.arguments,content:`${r.name}(${r.arguments})`,functionCallId:r.call_id}}})();A({conversationUuid:v,prompt:g,messages:[n]}),t>=0?y[t]=n:y.push(n)}return[];case"error":throw Error(`${t.error.type}: ${t.error.message}`);default:return[]}})).doOnEach((t=>{"content"===t.type&&(_+=t.content)})).flatMap((t=>"content"===t.type?[t.content]:[]));let b=y.flatMap((t=>"function_call_input"===t.type?(()=>{let e=t.llmPlatformConversationItem;return{id:e.call_id,name:e.name,arguments:e.arguments}})():[]));if(y.map((t=>t.llmPlatformConversationItem)),b.length>0){let t=(await Kt(b,h)).map((t=>({type:"function_call_output",uuid:rt(),role:"user",functionCallId:t.tool_call_id,content:`Tool result for ${t.call.name}: ${t.content}`})));A({conversationUuid:v,prompt:g,messages:t}),T=[...T,...y,...t],x=1;continue}let E=(()=>{let t=y.filter((t=>"output_message"===t.type));if(1!==t.length)throw Error("Expected 1 output message, got "+JSON.stringify(y));return t[0].content})(),N=(()=>{if(void 0===f)return E;try{let t=q(E),r=p(e)||"object"!==vt(f(nt(void 0))).type?t?.result:t;return ft(r,f(nt(r)),{juggleBetweenNullAndUndefined:!0})}catch(t){try{let t=q(E);return ft(t,f(nt(t)),{juggleBetweenNullAndUndefined:!0})}catch{throw Error("JSON response failed type validation: "+(t instanceof Error?t.message:t+""))}}})();if(c.length>0){let t=c.map((async t=>{try{let e=await t.callback(N,U)??void 0;return{problems:"string"==typeof e?[e]:Array.isArray(e)?e.flatMap((t=>"string"==typeof t?[t]:[])):[],check:t}}catch(t){throw new qt(t)}})),e=await Promise.all(t),r=e.flatMap((({problems:t})=>t));if(U.push({result:N,problems:r}),e.forEach((({problems:t,check:e})=>{if(t.length>0){let t=K(P.get(e));if(t>=e.attempts)throw new zt(e,e.attempts,t,U);P.set(e,t+1)}})),r.length>0){let t={type:"input_message",uuid:rt(),role:"user",content:"Your result was rejected because:\n"+r.map((t=>"- "+t)).join("\n")};A({conversationUuid:v,prompt:g,messages:[t]}),T=[...T,...y,t],yield ee,x=1;continue}}T=[...T,...y],S=!0}catch(e){if(e instanceof qt)throw e.originalError;if(e instanceof zt)throw e;let r=t.config.attemptsPerCall;if(x>=r)throw e;await new Promise((t=>setTimeout(t,1e3))),console.warn(`AI call failed (try ${x}/${r}). Retrying...`,e),yield ee,x++}}}finally{if(t.config.debugMode){let t=Array.from(m.values()).map((t=>t.promise));await Promise.all(t)}}}var zt=class extends Error{constructor(t,e,r,i,n){super(n),this.check=t,this.maxAttempts=e,this.attemptCount=r,this.attempts=i}},qt=class extends Error{constructor(t){super(t instanceof Error?t.message:t+""),this.originalError=t,this.name="CheckCallbackException",t instanceof Error&&t.stack&&(this.stack=t.stack)}};function Ht(t,e,r,i){if(void 0===t||!1===e||p(r))return;let n=vt(t(nt(void 0)));return{name:"response",schema:"object"===n.type?n:{type:"object",properties:{result:n},required:["result"],additionalProperties:!1},strict:i}}async function Kt(t,e){if(void 0===e)throw Error("Illegal state: no tools defined");let r=[];for(let i of t){let t=e.find((t=>t.name===i.name)),n=await(async()=>{if(void 0===t)return`Error: Tool ${i.name} not found`;try{let e=""===i.arguments.trim()?{}:JSON.parse(i.arguments);return await t.function(e)}catch(t){return"Error: "+(t instanceof Error?t.message:t+"")}})();r.push({call:i,tool:t,tool_call_id:i.id,role:"tool",content:n})}return r}function Qt(t,e,r){if(!p(t))return function(t){return!(!t.startsWith("gpt-")&&!t.startsWith("o1-")&&"o1"!==t&&"o3-mini"!==t&&"o3"!==t)}(t)?"Respond with JSON":null;{if(!0===e)return"TYPE SPEC :: IGNORE ALL PREVIOUS TYPE SPECS\n\nIn your next message only, respond with JSON";let t=e;return"TYPE SPEC :: IGNORE ALL PREVIOUS TYPE SPECS\n\nIn its next message only, the assistant will respond with JSON matching the Typescript type below.\n- strictNullChecks, exactOptionalPropertyTypes are both on\n- a value can ONLY be null if explicitly stated, e.g. 'string | null'\n- optional properties (e.g. `{foo?: string}`) can only be achieved by not including it, NOT by setting them to null\n\nThe type:\n"+dt(new at([],void 0).object((e=>{let i=e;return r&&(i=i.hasString("reasoning","Elaborate your reasoning here. Think step by step. Give your thinking steps in a numbered list or in markdown with headers if the task requires it.")),i.has("result",(()=>new ct(t.type,t.value)))})))}}var Wt={typeSpec:!0};function Xt(){let t=(Error().stack??"").split("\n").map((t=>t.trim())).filter((t=>t.startsWith("at ")))[2],e=t.match(/[^(]+\([^)]+\)/),{functionName:r,fileName:i,lineNumber:n}=e?t.match("at (?<functionName>[^(]*) ((?<scheme>.*://)?(?<fileName>[^:]*):(?<lineNumber>[0-9]+):(?<colNumber>[0-9]+))").groups:t.match("at (?<scheme>.*://)?(?<fileName>[^:]*):(?<lineNumber>[0-9]+):(?<colNumber>[0-9]+)").groups;return{stacktraceFrame:w(t).canBeString().andNothingElse(),fileName:w(i).canBeString().andNothingElse(),lineNumber:w(parseInt(n)).canBeNumber().andNothingElse(),functionName:w(r).canBeString().canBeUndefined().andNothingElse()}}function Zt(t){switch(t.type){case"input_message":case"output_message":return{[t.role]:t.content};case"reasoning":case"function_call_input":return{assistant:t.content};case"function_call_output":return{user:t.content}}}function te(t){return t??"gpt-5"}var ee="retry-signal-"+rt();export{St as AIClient,Nt as AIConversation,At as AiModel,Bt as BasicPrompt,zt as CheckFailedTooManyTimes,pt as EmptyPropTypeSpec,at as EmptyTypeSpec,ct as FullPropTypeSpec,lt as FullTypeSpec,Ut as ImageFilePrompt,xt as ImagePrompt,Gt as JsonArrayPrompt,Ft as JsonPrompt,Tt as OpenaiImageModel,$t as PromptBase,ht as PropTypeSpec,G as StreamedJsonChildElement,D as StreamedJsonRootElement,ut as TypeMemberSpec,ot as TypeSpec,Wt as TypeSpecMarker,Pt as ai,Jt as aiTool,Mt as defineTool,Xt as getCallerFileNameAndLineNumber,Ct as newAIClient,Rt as obtainAiClientData,H as parsePartialJson,Vt as promptAI,Lt as setupAI,vt as typeSpecToJsonSchema};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|