// operation_runtime.mjs export async function callTool({catalog,journal,actorScopes,operationId,name,args={}}) { const tool = catalog.get(name); requireScopes(tool, actorScopes); const digest = requestDigest({tool:name,args}); const started = journal.begin(operationId,digest); if (started.status === "completed") return started; if (started.replayed && started.status === "pending") throw Error("reconcile_before_retry"); return journal.complete(operationId, await tool.handler(structuredClone(args))); }