import assert from"node:assert/strict";import path from"node:path";import{Worker}from"node:worker_threads";import{pathToFileURL}from"node:url";const fp=path.resolve(process.argv[2]),build=path.resolve(process.argv[3]),f=await import(pathToFileURL(fp)),ep=path.join(path.dirname(fp),"facade-envelope.js"),e=await import(pathToFileURL(ep)),w=new Worker(new URL("./templatepymod-python-facade-smoke-worker.mjs",import.meta.url),{workerData:{facadePath:fp,envelopePath:ep,build}}),p=new Map,events=[];w.on("message",m=>{events.push(m.kind==="ready"?"ready":`${m.kind}:${m.requestId}`);if(m.requestId&&p.has(m.requestId)){p.get(m.requestId)(m);p.delete(m.requestId)}});const wait=id=>new Promise(r=>p.set(id,r)),ready=await new Promise(r=>w.once("message",r)),send=r=>{const q=wait(r.requestId);w.postMessage(r);return q};assert.equal(ready.kind,"ready");const success=await send(f.createTpmPyRequest("tpm-act02-e-success")),bad=await send(f.createTpmPyRequest("tpm-act02-e-error",{...f.TPM_PY_FIXTURE,sourceEntry:"src/Mod/TemplatePyMod/Missing.py"})),duplicate=await send(f.createTpmPyRequest("tpm-act02-e-success")),cancel=f.createTpmPyRequest("tpm-act02-e-cancel"),cancelledP=send(cancel);w.postMessage(e.createCancel("tpm-act02-e-cancel-message",cancel.requestId));const cancelled=await cancelledP,after=await send(f.createTpmPyRequest("tpm-act02-e-after"));await w.terminate();assert.equal(success.kind,"result");assert.equal(success.result.apiCount,65);assert.equal(bad.error.code,"revision_mismatch");assert.equal(duplicate.error.code,"duplicate_request");assert.equal(cancelled.error.code,"cancelled");assert.deepEqual(after.result,success.result);console.log(JSON.stringify({result:"pass",events,responses:5}));