From cc23849a74680ae03fb5c10bc7176cc23bc2c907 Mon Sep 17 00:00:00 2001 From: HiranoMasaaki Date: Thu, 4 Dec 2025 10:44:03 +0900 Subject: [PATCH 1/3] Fix: Add explicit error when delegate expert not found --- packages/runtime/src/skill-manager/helpers.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/runtime/src/skill-manager/helpers.ts b/packages/runtime/src/skill-manager/helpers.ts index f170e714..ae974b0f 100644 --- a/packages/runtime/src/skill-manager/helpers.ts +++ b/packages/runtime/src/skill-manager/helpers.ts @@ -68,6 +68,9 @@ export async function getSkillManagers( await initSkillManagersWithCleanup(interactiveSkillManagers, allManagers) const delegateSkillManagers = expert.delegates.map((delegateExpertName) => { const delegate = experts[delegateExpertName] + if (!delegate) { + throw new Error(`Delegate expert "${delegateExpertName}" not found in experts`) + } const manager = new DelegateSkillManager(delegate, runId, eventListener) allManagers.push(manager) return manager From 80e2357916115943d393d2bb976e26e395cf2e78 Mon Sep 17 00:00:00 2001 From: HiranoMasaaki Date: Thu, 4 Dec 2025 10:44:29 +0900 Subject: [PATCH 2/3] Docs: Update CODE_REVIEW_REPORT.md for #34 fix --- CODE_REVIEW_REPORT.md | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/CODE_REVIEW_REPORT.md b/CODE_REVIEW_REPORT.md index 5fffa323..f1b5ba38 100644 --- a/CODE_REVIEW_REPORT.md +++ b/CODE_REVIEW_REPORT.md @@ -18,7 +18,7 @@ Overall, the codebase is well-structured with strong architectural decisions. Th | βœ… Verified | 5 | Confirmed not an issue / working correctly | | πŸ“ Documented | 1 | Behavior documented, no code change needed | | ⏸️ Deferred | 8 | Low priority / E2E scope / future work | -| πŸ”΄ Open | 4 | Runtime package issues (2025-12-03) | +| πŸ”΄ Open | 3 | Runtime package issues (2025-12-03) | | 🟑 Low Prio | 4 | Runtime minor issues (2025-12-03) | --- @@ -617,32 +617,16 @@ cd /project && perstack run expert "query" ### 34. Delegate Expert Not Found Causes Runtime Error -**Status**: πŸ”΄ **Open** +**Status**: βœ… **Fixed** β€” Commit `cc23849` **Category**: Potential Bug **Severity**: Minor **Location**: `packages/runtime/src/skill-manager/helpers.ts:69-74` -**Issue**: When creating DelegateSkillManagers, if a delegate expert is not found in `experts`, `experts[delegateExpertName]` returns `undefined`, causing `new DelegateSkillManager(undefined, ...)` to fail. - -```typescript -const delegateSkillManagers = expert.delegates.map((delegateExpertName) => { - const delegate = experts[delegateExpertName] // May be undefined - const manager = new DelegateSkillManager(delegate, runId, eventListener) - // ... -}) -``` +**Issue**: When creating DelegateSkillManagers, if a delegate expert is not found, error message was unclear. -**Impact**: Unclear error message when delegate expert is missing. - -**Recommendation**: Add explicit check with descriptive error: -```typescript -const delegate = experts[delegateExpertName] -if (!delegate) { - throw new Error(`Delegate expert "${delegateExpertName}" not found in experts`) -} -``` +**Resolution**: Added explicit check with descriptive error message. --- @@ -899,7 +883,7 @@ const metaInstruction = dedent` | #31 | Skill lazy init for faster startup | ⏸️ Future | | #32 | maxSteps off-by-one error | βœ… Fixed | | #33 | Sandbox design flaw (workspace/chdir) | βœ… Fixed | -| #34 | Delegate expert not found error | πŸ”΄ Open | +| #34 | Delegate expert not found error | βœ… Fixed | | #35 | Skill object mutation | πŸ”΄ Open | | #36 | experts object mutation | πŸ”΄ Open | | #37 | File operation error handling | βœ… Fixed | @@ -928,7 +912,6 @@ const metaInstruction = dedent` ### Runtime Package Open Issues (2025-12-03) **Minor (Should Fix)**: -- **#34**: Delegate expert not found β€” improve error message - **#35, #36**: Object mutation side effects β€” defensive copying recommended - **#38**: RunSetting not validated β€” use Zod schema @@ -957,3 +940,4 @@ const metaInstruction = dedent` | `ced1aa6` | Fix: maxSteps off-by-one error in finishing step | | `dac71b5` | Fix: Handle individual close failures in closeSkillManagers | | `796f981` | Fix: Handle file read errors gracefully in resolving file states | +| `cc23849` | Fix: Add explicit error when delegate expert not found | From 3ea1452fd8efc6c972f3661960db36741b26a058 Mon Sep 17 00:00:00 2001 From: HiranoMasaaki Date: Thu, 4 Dec 2025 10:44:29 +0900 Subject: [PATCH 3/3] Chore: Add changeset for delegate expert error fix --- .changeset/fix-delegate-expert-not-found.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fix-delegate-expert-not-found.md diff --git a/.changeset/fix-delegate-expert-not-found.md b/.changeset/fix-delegate-expert-not-found.md new file mode 100644 index 00000000..bda958dd --- /dev/null +++ b/.changeset/fix-delegate-expert-not-found.md @@ -0,0 +1,5 @@ +--- +"@perstack/runtime": patch +--- + +Add explicit error message when delegate expert is not found