feat(quickjs): remove built-in VFS globals, add PTC instance injection and StateBackend read-your-writes (#486)
### Summary - Removed built-in readFile/writeFile globals from the QuickJS REPL. File I/O is now exclusively through PTC tools, keeping the REPL a pure JS sandbox with no implicit side effects - ptc now accepts StructuredToolInterface instances directly alongside tool name strings. Custom tools can be injected into the REPL without being registered on the agent - StateBackend now provides read-your-writes semantics within a single js_eval superstep by reading via __pregel_read with fresh=true. Pregel already tracks pending sends in task.writes; asking for a fresh read applies them through the reducer, removing the need for a manual write buffer - Removed ptc: boolean shorthand from QuickJSMiddlewareOptions; use the array or object forms instead ### Tests - Added 12 unit tests to state.test.ts covering write-then-read, chained edits, ls/grep/glob/readRaw visibility, upload/download, duplicate write error, edit-nonexistent, and superstep boundary behavior (commitSends/clearPending) - Expanded middleware.test.ts with PTC instance injection coverage - Verified end-to-end with createDeepAgent + createQuickJSMiddleware across 7 scenarios (write-read, write-edit-read, write-ls, write-grep, write-glob, cross-eval, upload-download); traces confirmed in LangSmith --------- Co-authored-by: Hunter Lovell <40191806+hntrl@users.noreply.github.com>
C
Colin Francis committed
998d772a07acc76fcc0d419e65b3c74a64d9ac52
Parent: 43cd121
Committed by GitHub <noreply@github.com>
on 4/28/2026, 9:23:08 PM