UNPKG

eve

Version:

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

3 lines 1.79 kB
import{getPromptContentText}from"#runtime/agent/bootstrap-model-utils.js";function getAvailableSkills(t){let n=new Map;for(let r of t){if(r.role!==`system`)continue;let t=getPromptContentText(r.content).split(` `),i=t.findIndex(e=>e.trim()===`Available skills`);if(!(i<0))for(let e of t.slice(i+1)){if(e.trim().length===0)break;let t=parseAvailableSkill(e);t!==null&&n.set(t.name,t)}}return[...n.values()]}function findRelevantSkill(e,t){let n=normalizeText(t);for(let t of e)if(n.includes(normalizeText(t.name)))return t;return/\b(forecast|temperature|weather|wind|rain|snow)\b/u.test(n)?e.find(e=>/\b(forecast|temperature|weather|wind|rain|snow)\b/u.test(normalizeText(`${e.name} ${e.description}`)))??null:null}function getActivatedSkillIds(t){return[...t.filter(e=>e.role===`system`).flatMap(t=>getPromptContentText(t.content).split(` `).map(e=>e.trim()).flatMap(e=>{let t=/^Skill \((.+)\)$/.exec(e);return t?.[1]===void 0?[]:[t[1]]})),...getLoadedSkillIdsFromHistory(t)]}function getLoadedSkillIdsFromHistory(e){let t=[];for(let n of e)if(!(n.role!==`assistant`||typeof n.content==`string`))for(let e of n.content){if(typeof e==`string`||e.type!==`tool-call`||e.toolName!==`load_skill`)continue;let n=readSkillFromToolInput(e.input);n!==void 0&&t.push(n)}return t}function readSkillFromToolInput(e){let t=typeof e==`string`?safeJsonParse(e):e;if(typeof t==`object`&&t&&`skill`in t&&typeof t.skill==`string`)return t.skill}function safeJsonParse(e){try{return JSON.parse(e)}catch{return}}function parseAvailableSkill(e){let t=/^- (.+?): (.+?)(?: \(path: (.+)\))?$/.exec(e.trim());return t?.[1]&&t[2]?{description:t[2],name:t[1]}:null}function normalizeText(e){return e.toLowerCase().replace(/[^a-z0-9]+/gu,` `).trim()}export{findRelevantSkill,getActivatedSkillIds,getAvailableSkills};