v0.10.1 — code_execute no-return fix + skeleton async dedup
[0.10.1] — 2026-04-22
Patch release — pre-release smoke-test fixes. Two user-facing bugs surfaced
during the v0.10.0 release verification pass, both fixed with regression tests.
No API or contract changes.
Fixed
code_executenow handles code without an explicitreturn.
executeSandboxused to crash with"Cannot read properties of undefined (reading 'match')"when user code had no return value (e.g.
console.log("hi")). Root cause:JSON.stringify(undefined)returns
literalundefined(not a string), which then broke
tiktoken.encode(undefined)insidecountTokens. The executor now guards
the serialization step with?? ""and skips token counting for empty
output — soconsole.log-only scripts (and empty strings) resolve cleanly
withsuccess: true,tokensUsed: 0, and output"(no output)".
(src/sandbox/executor.ts:152-153.)smart_file_readskeleton no longer emitsasync asyncon TypeScript
functions. The TS signature builder already prefixesasyncin the
signature string, but the skeleton renderer used to prepend it a second
time, producingexport async async createServer(...). The renderer now
checks for a pre-existing\basync\bin the signature before adding the
modifier. Affects both top-level functions and class methods.
(src/tools/smart-file-read.ts:395-414.)
Tests
sandbox.test.ts— new regression test:console.log-only code returns
success: truewithtokensUsed: 0.smart-file-read.test.ts— new regression assertion: skeleton output never
contains/async\s+async/.code-execute.test.ts— updated"should handle empty code string gracefully"to assert the new (correct) behaviour: empty code executes as
a no-op and succeeds.- Total: 1203 passing (1 skipped) across 46 files. Coverage held within the
v0.9.2 floors (lines 72.13%, branches 58.62%, functions 73.46%,
statements 71.32%).