agentcrumbs
Version:
Debug mode for any agent.
28 lines • 802 B
JavaScript
// Browser JS is single-threaded so a simple stack replaces AsyncLocalStorage.
// Limitation: concurrent Promise.all branches won't isolate context.
const contextStack = [];
export function getContext() {
return contextStack[contextStack.length - 1];
}
export function runWithContext(ctx, fn) {
contextStack.push(ctx);
try {
const result = fn();
if (result instanceof Promise) {
return result.then((val) => {
contextStack.pop();
return val;
}, (err) => {
contextStack.pop();
throw err;
});
}
contextStack.pop();
return result;
}
catch (err) {
contextStack.pop();
throw err;
}
}
//# sourceMappingURL=context-browser.mjs.map