eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 2.16 kB
JavaScript
import{join}from"node:path";import{matchesSupportedModuleBaseName,stripLogicalPathExtension}from"#discover/filesystem.js";import{createDiscoverErrorDiagnostic}from"#discover/diagnostics.js";import{TOOL_SLUG_PATTERN,discoverFlatModuleSource}from"#discover/grammar.js";import{discoverNamedSourceDirectory as discoverNamedSourceDirectory$1}from"#discover/named-source-directory.js";const DISCOVER_MEMORY_DIRECTORY_INVALID=`discover/memory-directory-invalid`,DISCOVER_MEMORY_SLOT_AMBIGUOUS=`discover/memory-slot-ambiguous`,DISCOVER_MEMORY_NAME_INVALID=`discover/memory-name-invalid`;async function discoverMemorySources(e){let t=discoverFlatModuleSource({rootEntries:e.rootEntries,rootPath:e.rootPath,slotName:`memory`}),n=e.rootEntries.some(e=>e.isFile()&&matchesSupportedModuleBaseName(e.name,`memory`)),r=e.rootEntries.some(e=>e.name===`memory`&&e.isDirectory()),i=await discoverNamedSourceDirectory$1({directoryName:`memory`,invalidDirectoryCode:DISCOVER_MEMORY_DIRECTORY_INVALID,invalidDirectoryMessage:`Expected "${join(e.rootPath,`memory`)}" to be a directory of authored memory slots.`,recursive:!1,rootEntries:e.rootEntries,rootPath:e.rootPath,source:e.source,validateSegment:createMemoryNameDiagnostic});return n&&r?{diagnostics:[...t.diagnostics,...i.diagnostics,createDiscoverErrorDiagnostic({code:DISCOVER_MEMORY_SLOT_AMBIGUOUS,message:`Memory must use either the flat "memory.ts" form or the named "memory/" directory form, not both.`,sourcePath:e.rootPath})],memories:[]}:t.module===void 0?{diagnostics:[...t.diagnostics,...i.diagnostics],memories:i.sources.map(e=>({...e,slot:stripLogicalPathExtension(e.logicalPath).slice(7)}))}:{diagnostics:[...t.diagnostics,...i.diagnostics],memories:[{...t.module,slot:`memory`}]}}function createMemoryNameDiagnostic(e,t){return TOOL_SLUG_PATTERN.test(e)?null:createDiscoverErrorDiagnostic({code:DISCOVER_MEMORY_NAME_INVALID,message:`Memory slot "${e}" must start with an ASCII letter and contain only letters, digits, underscores, or dashes (64 characters maximum).`,sourcePath:t})}export{DISCOVER_MEMORY_DIRECTORY_INVALID,DISCOVER_MEMORY_NAME_INVALID,DISCOVER_MEMORY_SLOT_AMBIGUOUS,discoverMemorySources};