// Node 24+, no package installation. Hash exact file bytes locally. Never uploads documents. import { createHash, randomUUID } from 'node:crypto'; import { createReadStream, readFileSync, openSync, closeSync, writeFileSync, fsyncSync, statSync } from 'node:fs'; import { pathToFileURL } from 'node:url'; const origin='https://datoka-agent.bhazarstudio.workers.dev'; const keys=['agentId','runId','stepId','tool','outcome','startedAt','completedAt']; const identifier=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/; const timestamp=v=>typeof v==='string'&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(v)&&!isNaN(Date.parse(v))&&new Date(v).toISOString()===v; export function validateMetadata(m){ if(!m||typeof m!=='object'||Array.isArray(m)||Object.keys(m).length!==keys.length||!keys.every(k=>Object.hasOwn(m,k)))throw Error('invalid_metadata'); if(!['agentId','runId','stepId','tool'].every(k=>typeof m[k]==='string'&&identifier.test(m[k]))||!['success','error'].includes(m.outcome)||!timestamp(m.startedAt)||!timestamp(m.completedAt)||m.completedAt16384)throw Error('invalid_metadata'); const report=await prepareWorkflow({inputPath:options['--input'],outputPath:options['--output'],metadata:JSON.parse(readFileSync(options['--metadata'],'utf8')),requestPath:options['--request']}); console.log(JSON.stringify(report)); } if(process.argv[1]&&import.meta.url===pathToFileURL(process.argv[1]).href)workflowMain().catch(()=>{console.error('Preparation stopped. Check the metadata, file paths and service response. Keep any existing request file; never replace purchase state. No payment was submitted.');process.exitCode=1;});