Skip to content

Commit a6ab2b8

Browse files
authored
Fix: Clean up managers when delegate expert not found (#11)
* Fix: Clean up managers when delegate expert not found * Chore: Add changeset for delegate cleanup fix
1 parent cd5dbb1 commit a6ab2b8

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

.changeset/fix-delegate-cleanup.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@perstack/runtime": patch
3+
---
4+
5+
Clean up initialized skill managers when delegate expert is not found

packages/runtime/src/skill-manager/helpers.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,17 @@ export async function getSkillManagers(
6666
return manager
6767
})
6868
await initSkillManagersWithCleanup(interactiveSkillManagers, allManagers)
69-
const delegateSkillManagers = expert.delegates.map((delegateExpertName) => {
69+
const delegateSkillManagers: DelegateSkillManager[] = []
70+
for (const delegateExpertName of expert.delegates) {
7071
const delegate = experts[delegateExpertName]
7172
if (!delegate) {
73+
await Promise.all(allManagers.map((m) => m.close().catch(() => {})))
7274
throw new Error(`Delegate expert "${delegateExpertName}" not found in experts`)
7375
}
7476
const manager = new DelegateSkillManager(delegate, runId, eventListener)
7577
allManagers.push(manager)
76-
return manager
77-
})
78+
delegateSkillManagers.push(manager)
79+
}
7880
await initSkillManagersWithCleanup(delegateSkillManagers, allManagers)
7981
const skillManagers: Record<string, BaseSkillManager> = {}
8082
for (const manager of allManagers) {

0 commit comments

Comments
 (0)