Slow Triage
Exact reviewed source / 28 of 64

prototype/scripts/demo.mjs

SHA-256 of original bytes
e9ae3429472f8c38277070719e5de596877e6db0a1566615e61c1638ba096e67
import {spawn} from 'node:child_process';
import {readFile,writeFile} from 'node:fs/promises';
import {fileURLToPath} from 'node:url';
import {once} from 'node:events';
import assert from 'node:assert/strict';
import {digest} from '../src/core.mjs';
const root=fileURLToPath(new URL('../',import.meta.url)),port=4319,base=`http://127.0.0.1:${port}`;
const child=spawn(process.execPath,['src/server.mjs'],{cwd:root,env:{...process.env,PORT:String(port)},stdio:['ignore','pipe','pipe']});
const exited=once(child,'exit').catch(()=>{});
let logs='';child.stdout.on('data',x=>logs+=x);child.stderr.on('data',x=>logs+=x);
const api=async(path,data)=>{
 const response=await fetch(base+path,data?{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify(data)}:{});
 const result=await response.json();if(!response.ok)throw new Error(result.error);return result;
};
try{
 let ready=false;
 for(let attempt=0;attempt<100;attempt++){
  try{await api('/api/sample');ready=true;break;}catch{}
  await new Promise(resolve=>setTimeout(resolve,50));
 }
 if(!ready)throw new Error('Local server did not start: '+logs);
 const source=await api('/api/sample'),before=digest(source.issues),triage=await api('/api/triage',source);
 const decisions=triage.items.filter(x=>!x.needsReview).slice(0,2).map(x=>({id:x.id,label:x.suggestedLabel}));
 assert.equal(decisions.length,2);
 const applied=await api('/api/apply',{runId:triage.runId,decisions});
 assert.equal(applied.appliedCount,2);assert.notEqual(digest(applied.issues),before);
 const restored=await api('/api/undo',{revisionId:applied.revisionId});
 assert.equal(digest(restored.issues),before);
 const disk=JSON.parse(await readFile(root+'data/sample.json','utf8'));assert.equal(digest(disk.issues),before);
 const result={recordedAt:new Date().toISOString(),kind:'actual local HTTP end-to-end demonstration; not browser visual verification',steps:['load synthetic sample','execute Mastra workflow and local embeddings','select two suggestions','apply to in-memory copy','undo revision','verify original and restored SHA-256 digests match'],triage,decisions,applied,restored,originalHash:before,restoredHash:digest(restored.issues),originalFileUnchanged:true,serverLogs:logs};
 await writeFile(root+'evidence/end-to-end-demo.json',JSON.stringify(result,null,2)+'\n');
 console.log(JSON.stringify({summary:triage.summary,applied:applied.appliedCount,restored:restored.restoredCount,originalFileUnchanged:true,timings:triage.timings}));
}finally{
 if(child.exitCode===null&&child.signalCode===null)child.kill('SIGTERM');await exited;
}
← prototype/scripts/demo-cli.mjsprototype/scripts/download_model.py →