(aiDataDir: string)
| 43 | const managerCache = new Map<string, { assistant: AssistantManager; skill: SkillManagerCore }>() |
| 44 | |
| 45 | export function getAssistantManager(aiDataDir: string): AssistantManager { |
| 46 | let cached = managerCache.get(aiDataDir) |
| 47 | if (!cached) { |
| 48 | cached = { |
| 49 | assistant: new AssistantManager({ |
| 50 | fs: nodeFs, |
| 51 | assistantsDir: path.join(aiDataDir, 'assistants'), |
| 52 | builtinRawConfigs: [], |
| 53 | generateId: () => `custom_${randomUUID().replace(/-/g, '').slice(0, 12)}`, |
| 54 | }), |
| 55 | skill: new SkillManagerCore({ |
| 56 | fs: nodeFs, |
| 57 | skillsDir: path.join(aiDataDir, 'skills'), |
| 58 | builtinRawSkills: [], |
| 59 | contentHash: (content: string) => createHash('md5').update(content).digest('hex'), |
| 60 | }), |
| 61 | } |
| 62 | managerCache.set(aiDataDir, cached) |
| 63 | } |
| 64 | return cached.assistant |
| 65 | } |
| 66 | |
| 67 | export function getSkillManagerCore(aiDataDir: string): SkillManagerCore { |
| 68 | let cached = managerCache.get(aiDataDir) |
no test coverage detected