fix: improve memory safety and regex pattern handling

- Add withTimeout utility for async operation protection
- Move Promise callback cleanup earlier in stop() to prevent orphaned refs
- Fix regex lastIndex resets in inner-loop-tracker (reset BEFORE test)
- Add DEFAULT_ASYNC_TIMEOUT_MS and INTERACTIVE_START_TIMEOUT_MS constants

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-01-21 05:34:45 +01:00
co-authored by Claude Opus 4.5
parent d6e9530e5a
commit df91823800
2 changed files with 46 additions and 10 deletions
+4 -4
View File
@@ -461,21 +461,21 @@ export class InnerLoopTracker extends EventEmitter {
}
// Todo checkboxes: "- [ ] Task" or "- [x] Task"
// Reset lastIndex BEFORE test to ensure consistent matching with /g flag patterns
TODO_CHECKBOX_PATTERN.lastIndex = 0;
if (TODO_CHECKBOX_PATTERN.test(data)) {
// Reset lastIndex since we're reusing the global regex
TODO_CHECKBOX_PATTERN.lastIndex = 0;
return true;
}
// Todo indicator icons: "Todo: ☐", "Todo: ◐", etc.
TODO_INDICATOR_PATTERN.lastIndex = 0;
if (TODO_INDICATOR_PATTERN.test(data)) {
TODO_INDICATOR_PATTERN.lastIndex = 0;
return true;
}
// Claude Code native todo format: "☐ Task", "☒ Task"
TODO_NATIVE_PATTERN.lastIndex = 0;
if (TODO_NATIVE_PATTERN.test(data)) {
TODO_NATIVE_PATTERN.lastIndex = 0;
return true;
}