UNPKG

@tanstack/ai-sandbox

Version:

Provider-agnostic sandbox layer for TanStack AI — run harness adapters inside isolated sandboxes (defineSandbox, defineWorkspace, withSandbox) with a uniform SandboxHandle, workspace bootstrap, policy, and resumable lifecycle.

60 lines (59 loc) 1.28 kB
//#region src/testkit/shell-spawn.ts function makeFakeShellSpawn() { const queue = []; const waiters = []; let done = false; function emit(chunk) { const waiter = waiters.shift(); if (waiter !== void 0) waiter({ value: chunk, done: false }); else queue.push(chunk); } const stdout = { [Symbol.asyncIterator]() { return { next() { const queued = queue.shift(); if (queued !== void 0) return Promise.resolve({ value: queued, done: false }); if (done) return Promise.resolve({ value: "", done: true }); return new Promise((resolve) => { waiters.push(resolve); }); } }; } }; let counter = 0; return { pid: 1, stdout, stderr: (async function* empty() {})(), stdin: { write: (data) => { const sentinel = `__BSSH_${counter}__`; counter += 1; if (data.startsWith("pwd;")) emit("/workspace\n"); emit(`${sentinel} 0\n`); return Promise.resolve(); }, end: () => { done = true; for (const waiter of waiters) waiter({ value: "", done: true }); waiters.length = 0; return Promise.resolve(); } }, wait: () => Promise.resolve(0), kill: () => Promise.resolve() }; } //#endregion export { makeFakeShellSpawn }; //# sourceMappingURL=shell-spawn.js.map