eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
3 lines (2 loc) • 1.88 kB
JavaScript
import{createCodexFetch}from"./transport.js";import{isObject}from"#shared/guards.js";import{createOpenAI}from"#compiled/@ai-sdk/openai/index.js";function createCodexSubscriptionModel(t,r={}){let i=t.model.trim();if(i.length===0)throw Error(`Expected "model" to name a Codex model.`);let a=createOpenAI({apiKey:`codex-local-auth`,fetch:createCodexFetch(r),name:`codex`}).responses(i);return{specificationVersion:a.specificationVersion,provider:a.provider,modelId:a.modelId,get supportedUrls(){return a.supportedUrls},doGenerate:e=>a.doGenerate(normalizeCodexCallOptions(e)),doStream:e=>a.doStream(normalizeCodexCallOptions(e))}}function normalizeCodexCallOptions(e){let t=e.providerOptions,n=t?.openai??{},{instructions:r,prompt:i}=hoistSystemInstructions(e.prompt),{maxOutputTokens:a,...o}=e;return{...o,prompt:stripOpenAIItemIdsFromPrompt(i),providerOptions:{...t,openai:{...n,...r!==void 0&&{instructions:r},store:!1}}}}function hoistSystemInstructions(e){let t=e.filter(e=>e.role===`system`).map(e=>e.content);return t.length===0?{instructions:void 0,prompt:e}:{instructions:t.join(`
`),prompt:e.filter(e=>e.role!==`system`)}}function stripOpenAIItemIdsFromPrompt(e){return stripOpenAIItemIds(e,new WeakMap)}function stripOpenAIItemIds(e,n){if(typeof e!=`object`||!e)return e;let r=n.get(e);if(r!==void 0)return r;if(n.set(e,e),Array.isArray(e)){let t=!1,r=e.map(e=>{let r=stripOpenAIItemIds(e,n);return r!==e&&(t=!0),r}),i=t?r:e;return n.set(e,i),i}if(!isObject(e))return e;let i=!1,a={};for(let[t,r]of Object.entries(e)){let e=stripOpenAIItemIds(r,n);(t===`providerOptions`||t===`providerMetadata`)&&(e=withoutOpenAIItemId(e)),e!==r&&(i=!0),a[t]=e}let o=i?a:e;return n.set(e,o),o}function withoutOpenAIItemId(e){if(!isObject(e)||!isObject(e.openai)||!(`itemId`in e.openai))return e;let{itemId:n,...r}=e.openai;return{...e,openai:r}}export{createCodexSubscriptionModel};