fix(quickjs): isolate forked subagent runtimes - #6080
fix(quickjs): isolate forked subagent runtimes#6080Hunter Lovell (hntrl) wants to merge 1 commit into
Conversation
Forked subagents inherit QuickJS middleware and their parent's checkpoint thread ID. Give each task invocation a private runtime identity so child cleanup cannot evict a parent or sibling REPL slot. Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
|
⛔ This PR title scope does not match the package directory it changes. Title scope(s): Touched package dir(s) not covered by those scopes:
This check is blocking because the PR title declares one package scope while the changed files live in a different package directory. Release-please consequence: release-please attributes commits by file path, not title scope. A bump-worthy title ( To resolveEdit the PR title scope so it covers the changed package directory (for example, use If this is a feature plus incidental cross-package dependency/lock churn, split into:
If intentionalApply the |
|
⛔ This bump-worthy PR touches real files in more than one release-please component. Components with non-lockfile edits: Because the PR title is bump-worthy, release-please will open a separate release PR for each of these components (and any lockfile-only packages above). This check is blocking. To resolveSplit into:
If intentionalApply the |
Forked subagents now use private QuickJS slots, so finishing a child cannot close the parent or a sibling's REPL.
Forked subagents inherit the parent checkpoint
thread_idand middleware stack. The task tool now stamps each invocation with an opaque private runtime identity; QuickJS uses it only for its in-process registry key, leaving checkpoint identity unchanged. Child cleanup therefore evicts only the child slot.Tests:
make test TEST_FILE=tests/unit_tests/test_repl_middleware.py(78 passed);make test TEST_FILE=tests/unit_tests/test_subagents.py(38 passed, 1 expected failure);make lintinlibs/deepagentsandlibs/partners/quickjs.Made by Open SWE