UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines 4.34 kB
import{normalizeAgentDefinition}from"#internal/authored-definition/core.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{parseJsonObject}from"#shared/json.js";import{isDynamicModelDefinition}from"#shared/agent-definition.js";import{loadResolvedModuleExport}from"#runtime/resolve-helpers.js";import{resolveBootstrapRuntimeModel}from"#runtime/agent/bootstrap-model.js";import{resolveMockAuthoredRuntimeModel,shouldMockAuthoredRuntimeModels}from"#runtime/agent/mock-model-adapter.js";async function resolveRuntimeModelReference(e,t){let n=resolveBootstrapRuntimeModel(e);if(n!==null)return n;let r=resolveMockAuthoredRuntimeModel(e);return r===null?isSourceBackedRuntimeModelReference(e)?await loadSourceBackedRuntimeModelReference(e,t):e.id:r}async function loadSourceBackedRuntimeModelReference(t,n){if(n===void 0)throw Error(`Expected a compiled module-map scope to resolve the authored runtime model "${t.id}".`);let a=normalizeAgentDefinition(await loadResolvedModuleExport({definition:t.source,kindLabel:`runtime model "${t.id}"`,moduleMap:n.moduleMap,nodeId:n.nodeId}),`Expected the authored agent config export "${t.source.exportName??`default`}" from "${t.source.logicalPath}" to match the public eve shape.`).model;if(a===void 0)throw Error(`Expected the authored agent config export "${t.source.exportName??`default`}" from "${t.source.logicalPath}" to provide a runtime model.`);return isDynamicModelDefinition(a)?a.fallback:a}function isSourceBackedRuntimeModelReference(e){return e.source!==void 0}async function loadDynamicRuntimeModelDefinition(t){let n=normalizeAgentDefinition(await loadResolvedModuleExport({definition:t.dynamicModel,kindLabel:`dynamic runtime model`,moduleMap:t.scope.moduleMap,nodeId:t.scope.nodeId}),`Expected the authored agent config export "${t.dynamicModel.exportName??`default`}" from "${t.dynamicModel.logicalPath}" to match the public eve shape.`).model;if(!isDynamicModelDefinition(n))throw Error(`Expected the authored agent config export "${t.dynamicModel.exportName??`default`}" from "${t.dynamicModel.logicalPath}" to provide a dynamic model definition.`);return n}function normalizeDynamicRuntimeModelResult(e){let n=normalizeDynamicModelSelection(e.result);validateDynamicModelSelection(n);let r=n.modelOptions?.providerOptions===void 0?e.fallback.providerOptions:parseProviderOptionsRecord(n.modelOptions.providerOptions),i=n.modelContextWindowTokens;return typeof n.model==`string`?{reference:{id:formatLanguageModelGatewayId(n.model),contextWindowTokens:i,providerOptions:r}}:(validateRuntimeLanguageModel(n.model),{model:n.model,reference:{id:formatLanguageModelGatewayId(n.model),contextWindowTokens:i,providerOptions:r}})}const DYNAMIC_MODEL_SELECTION_KEYS=new Set([`model`,`modelContextWindowTokens`,`modelOptions`]);function validateDynamicModelSelection(e){let t=Object.keys(e).filter(e=>!DYNAMIC_MODEL_SELECTION_KEYS.has(e));if(t.length>0)throw Error(`Dynamic model resolver returned a selection with unknown key(s): ${t.join(`, `)}. Expected { model, modelContextWindowTokens?, modelOptions? }.`);let n=e.modelContextWindowTokens;if(n!==void 0&&(!Number.isInteger(n)||n<=0))throw Error(`Dynamic model resolver returned an invalid modelContextWindowTokens value. Expected a positive integer.`)}function normalizeDynamicModelSelection(e){return isModelSelectionDefinition(e)?e:{model:e}}function isModelSelectionDefinition(e){return typeof e==`object`&&!!e&&`model`in e&&!isRuntimeLanguageModel(e)}function validateRuntimeLanguageModel(e){if(!isRuntimeLanguageModel(e))throw Error(`Dynamic model resolver returned an invalid model. Return an AI Gateway model id string, an AI SDK language model, or { model, modelContextWindowTokens?, modelOptions? }.`)}function isRuntimeLanguageModel(e){if(typeof e!=`object`||!e)return!1;let t=e;return(t.specificationVersion===`v2`||t.specificationVersion===`v3`||t.specificationVersion===`v4`)&&typeof t.provider==`string`&&typeof t.modelId==`string`&&typeof t.doGenerate==`function`&&typeof t.doStream==`function`}function parseProviderOptionsRecord(e){if(e===void 0)return;let t={};for(let[r,i]of Object.entries(e))t[r]=parseJsonObject(i);return t}export{isRuntimeLanguageModel,loadDynamicRuntimeModelDefinition,normalizeDynamicRuntimeModelResult,resolveRuntimeModelReference,shouldMockAuthoredRuntimeModels};