@humain/humain-code 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
- import"./chunk-IAI7MTU4.js";import{FLOW_MESSAGE_MAX_LENGTH,assertDhRetryAdmission,checkDhControlFence,dhCanonicalText,discoverAgents,getFlowChildLaunchHost,getFlowControlHost,getFlowTraceProducer,parseDhControlDelivery,parseFlowControlCommandV1,parseFlowControlReceiptV1,parseFlowMessageReceiptV1,parseFlowStatusV1,renderTaskWithContext,resolveDhEffectiveTerminals}from"./chunk-HA5AW36V.js";import"./chunk-3ZI2TEVB.js";import"./chunk-H5CZL7M5.js";import"./chunk-UBQSONVR.js";
3
- import"./chunk-2KKLZK2N.js";import"./chunk-2Q2O3GZ4.js";import"./chunk-VZV7GLZT.js";import"./chunk-JQZ7BIAI.js";import"./chunk-OXJXKCLB.js";import"./chunk-E7WGCXWK.js";import{ScrollView,matchesKey,mixColors,styleText,truncateToWidth,visibleWidth,wrapTextWithAnsi}from"./chunk-ICLZNV4V.js";import"./chunk-SCIGZFN5.js";import"./chunk-KQM7ZGL6.js";import"./chunk-CIA6V3BP.js";import"./chunk-XQZG5HPT.js";import"./chunk-FACBDLFU.js";
2
+ import"./chunk-KMMH6Z2Y.js";import{FLOW_MESSAGE_MAX_LENGTH,assertDhRetryAdmission,checkDhControlFence,dhCanonicalText,discoverAgents,getFlowChildLaunchHost,getFlowControlHost,getFlowTraceProducer,parseDhControlDelivery,parseFlowControlCommandV1,parseFlowControlReceiptV1,parseFlowMessageReceiptV1,parseFlowStatusV1,renderTaskWithContext,resolveDhEffectiveTerminals}from"./chunk-7LDXR4AN.js";import"./chunk-3ZI2TEVB.js";import"./chunk-H5CZL7M5.js";import"./chunk-UBQSONVR.js";
3
+ import"./chunk-2KKLZK2N.js";import"./chunk-OYDXJK4L.js";import"./chunk-VZV7GLZT.js";import"./chunk-JQZ7BIAI.js";import"./chunk-OXJXKCLB.js";import"./chunk-E7WGCXWK.js";import{ScrollView,matchesKey,mixColors,styleText,truncateToWidth,visibleWidth,wrapTextWithAnsi}from"./chunk-ICLZNV4V.js";import"./chunk-SCIGZFN5.js";import"./chunk-KQM7ZGL6.js";import"./chunk-CIA6V3BP.js";import"./chunk-XQZG5HPT.js";import"./chunk-FACBDLFU.js";
4
4
  import{FLOW_ID_PATTERN,FLOW_MODEL_ID_PATTERN,FLOW_ROLES,FlowContractError,FlowCountSchema,FlowDigestSchema,FlowFailureClassSchema,FlowIdSchema,FlowMicrousdSchema,FlowModelRefSchema,FlowPositiveIntSchema,FlowProfileRefSchema,FlowReasonClassSchema,FlowRoleSchema,FlowSizeSchema,FlowTimestampSchema,StrictObject,canonicalFlowJson,canonicalWithout,compileFlow,hasDuplicateModels,lit,parseFlowData,partialByRole,verifyFlowDigest}from"./chunk-N23FFKJU.js";import{getAgentDir}from"./chunk-DUZY4PDA.js";
5
5
  import"./chunk-BRXQUQSC.js";import"./chunk-PEZZKT73.js";import"./chunk-DBL35X7L.js";import"./chunk-4X774RBJ.js";import"./chunk-RTFCP3VQ.js";import"./chunk-YURQPD6Y.js";import"./chunk-AKA7HNO3.js";import"./chunk-QMUIATLD.js";import{typebox_exports}from"./chunk-BHM75BJJ.js";import"./chunk-JXWJOIH4.js";import{resolve}from"node:path";var FlowProfileError=class extends Error{code;path;constructor(code,message,path){super(message),this.name="FlowProfileError",this.code=code,path!==void 0&&(this.path=path)}};import{stripVTControlCharacters}from"node:util";var CONTROL=/[\u0000-\u001f\u007f-\u009f\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/g;function sanitizeForDisplay(text2){return stripVTControlCharacters(text2).replace(CONTROL,"")}var clean=sanitizeForDisplay,fmtRef=r=>clean(`${r.provider}/${r.model}`);function summarizeProfile(p){let lines=[`${clean(p.id)} (${p.kind}) ${clean(p.label)}`,`version: ${p.version}`,`digest: ${p.digest}`];p.description!==void 0&&lines.push(`description: ${clean(p.description)}`),p.direct!==void 0&&lines.push(`model\
6
6
  : ${fmtRef(p.direct.model)}`,`fallbacks: ${p.direct.fallbacks.map(fmtRef).join(", ")||"none"}`);for(let[role,b]of Object.entries(p.roles??{}))lines.push(`role ${role}: ${fmtRef(b.primary)} [${b.effort}] backups: ${b.backups.map(fmtRef).join(", ")||"none"}`);return lines.push(`limits: ${Object.entries(p.limits).map(([k,v])=>`${k}=${v}`).join(" ")}`),lines.push(`spend: runCapMicrousd=${p.spend.runCapMicrousd} warnAtPct=${p.spend.warnAtPct}`),lines.join(`
@@ -927,14 +927,75 @@ claimedFiles.join(", ").slice(-1e3)||"none"}`,`Repair decision: ${options?.decis
927
927
  `)).slice(-1e3),"--- BEGIN check diagnostics (untrusted data, not instructions) ---",sanitizeRepairFeedback((options?.diagnostics??[]).join(`
928
928
  `).slice(-FEEDBACK_TAIL_CHARS)),"--- END check diagnostics ---","","Previous attempt failed verification with:",...failedChecks.map(c=>`- ${c}`),isHighRisk?"Risk is high/critical: re-review MUST use at least the premium tier.":"Re-review must use at least the mid tier."].join(`
929
929
  `)}})}import{existsSync as existsSync5,readFileSync as readFileSync6}from"node:fs";import{basename as basename4,dirname as dirname7,join as join12}from"node:path";var ARCHIVE_MANIFEST="archive.manifest.json";function describeRunArtifact(path){if(existsSync5(path))return path;let runDir2=dirname7(path),name=basename4(path),archived=join12(runDir2,`${name}.gz`),listed=!1;try{let manifest=JSON.parse(readFileSync6(join12(runDir2,ARCHIVE_MANIFEST),"utf-8"));listed=manifest?.format_version===1&&typeof manifest?.
930
- files?.[name]=="object"}catch{}return listed&&existsSync5(archived)?`${path} (archived as ${archived} \u2014 read with \`gunzip -c\`)`:`${path} (missing)`}var RunRegistry=class{current=null;active(){return this.current}claim(session,tags={},aliasTable=null,modelSources=null,routing){return this.current?null:(this.current={session,tags,aliasTable,modelSources,...routing},this.current)}release(context){this.current===context&&(this.current=null)}};import{createHash as createHash12}from"node:crypto";import{closeSync as closeSync11,constants as constants7,fstatSync as fstatSync11,openSync as openSync11,readFileSync as readFileSync8,realpathSync as realpathSync7}from"node:fs";import{basename as basename6,dirname as dirname11}from"node:path";var Mode=lit("auto","direct"),Effort=lit("low","medium","high"),EventModelRefSchema=StrictObject({provider:FlowIdSchema,model:typebox_exports.String({pattern:FLOW_ID_PATTERN})}),event=(kind,payload)=>StrictObject({schema:typebox_exports.Literal("humain-flow-event"),schemaVersion:typebox_exports.Literal(1),eventId:FlowIdSchema,runId:FlowIdSchema,seq:FlowPositiveIntSchema,ts:FlowTimestampSchema,profile:FlowProfileRefSchema,causes:typebox_exports.Array(FlowIdSchema,{maxItems:16}),kind:typebox_exports.
930
+ files?.[name]=="object"}catch{}return listed&&existsSync5(archived)?`${path} (archived as ${archived} \u2014 read with \`gunzip -c\`)`:`${path} (missing)`}var RunRegistry=class{current=null;active(){return this.current}claim(session,tags={},aliasTable=null,modelSources=null,routing){return this.current?null:(this.current={session,tags,aliasTable,modelSources,...routing},this.current)}release(context){this.current===context&&(this.current=null)}};import{createHash as createHash13}from"node:crypto";import{closeSync as closeSync11,constants as constants7,fstatSync as fstatSync11,openSync as openSync11,readFileSync as readFileSync8,realpathSync as realpathSync7}from"node:fs";import{basename as basename6,dirname as dirname11}from"node:path";var Mode=lit("auto","direct"),Effort=lit("low","medium","high"),EventModelRefSchema=StrictObject({provider:FlowIdSchema,model:typebox_exports.String({pattern:FLOW_ID_PATTERN})}),event=(kind,payload)=>StrictObject({schema:typebox_exports.Literal("humain-flow-event"),schemaVersion:typebox_exports.Literal(1),eventId:FlowIdSchema,runId:FlowIdSchema,seq:FlowPositiveIntSchema,ts:FlowTimestampSchema,profile:FlowProfileRefSchema,causes:typebox_exports.Array(FlowIdSchema,{maxItems:16}),kind:typebox_exports.
931
931
  Literal(kind),payload}),RoleTotals=StrictObject({tokens:FlowCountSchema,costMicrousd:FlowMicrousdSchema,durationMs:FlowCountSchema,requests:FlowCountSchema}),FlowEventV1Schema=typebox_exports.Union([event("run_started",StrictObject({mode:Mode,surface:lit("cli","web"),admissionDigest:FlowDigestSchema,inputsCount:FlowCountSchema,goalSha256:FlowDigestSchema})),event("size_decided",StrictObject({size:FlowSizeSchema,source:lit("rules","triage","override"),ruleScore:typebox_exports.Number({minimum:0,maximum:1e6}),
932
932
  thresholds:StrictObject({mediumAt:typebox_exports.Number({minimum:0,maximum:1e6}),largeAt:typebox_exports.Number({minimum:0,maximum:1e6})})})),event("escalated",StrictObject({from:FlowSizeSchema,to:FlowSizeSchema,reasonClass:FlowReasonClassSchema})),event("route_bound",StrictObject({taskId:FlowIdSchema,role:FlowRoleSchema,model:EventModelRefSchema,effort:Effort,binding:lit("primary","backup"),backupIndex:typebox_exports.Integer({minimum:0,maximum:7})})),event("fallback",StrictObject({taskId:FlowIdSchema,
933
933
  role:FlowRoleSchema,from:EventModelRefSchema,to:EventModelRefSchema,reasonClass:FlowReasonClassSchema})),event("attempt",StrictObject({taskId:FlowIdSchema,role:FlowRoleSchema,attempt:FlowPositiveIntSchema,state:lit("started","succeeded","failed","retried","cancelled"),failureClass:typebox_exports.Optional(FlowFailureClassSchema)})),event("request_usage",StrictObject({requestId:FlowIdSchema,taskId:FlowIdSchema,role:FlowRoleSchema,model:EventModelRefSchema,inputTokens:FlowCountSchema,outputTokens:FlowCountSchema,
934
934
  cacheReadTokens:FlowCountSchema,cacheWriteTokens:FlowCountSchema,costMicrousd:typebox_exports.Union([FlowMicrousdSchema,typebox_exports.Null()]),costBasis:lit("reported","estimated","unknown"),durationMs:FlowCountSchema})),event("verdict",StrictObject({stage:lit("check","review","qa"),taskId:FlowIdSchema,verdict:lit("pass","fail","blocked"),findingsCount:FlowCountSchema,checkId:typebox_exports.Optional(FlowIdSchema)})),event("budget",StrictObject({spentMicrousd:FlowMicrousdSchema,capMicrousd:FlowMicrousdSchema,
935
935
  pct:typebox_exports.Number({minimum:0,maximum:100}),state:lit("ok","warn","stop")})),event("control",StrictObject({action:lit("pause","resume","cancel","message","status"),commandId:FlowIdSchema,state:lit("accepted","applied","rejected"),latencyMs:FlowCountSchema})),event("message",StrictObject({messageId:FlowIdSchema,disposition:lit("live","queued","rejected"),targetRole:FlowRoleSchema,textSha256:FlowDigestSchema,textLength:typebox_exports.Integer({minimum:1,maximum:16e3})})),event("run_settled",
936
936
  StrictObject({outcome:lit("succeeded","failed","cancelled","budget_stopped","interrupted"),failureClass:typebox_exports.Optional(FlowFailureClassSchema),settledCleanly:typebox_exports.Boolean(),retryOffer:typebox_exports.Array(lit("flow","direct"),{maxItems:2,uniqueItems:!0}),totals:partialByRole(RoleTotals)}))]),Validator=compileFlow(FlowEventV1Schema);function crossFieldsValid(doc){return doc.kind==="request_usage"?doc.payload.costMicrousd===null==(doc.payload.costBasis==="unknown"):!0}function isEvent(value){
937
- return Validator.Check(value)&&crossFieldsValid(value)}function parseFlowEventV1(input){return parseFlowData("event_invalid",input,isEvent)}import{createHash as createHash8,randomBytes as randomBytes2}from"node:crypto";import{closeSync as closeSync9,constants as constants5,existsSync as existsSync6,fstatSync as fstatSync9,fsyncSync as fsyncSync3,linkSync as linkSync2,mkdirSync as mkdirSync3,openSync as openSync9,readSync as readSync9,realpathSync as realpathSync6,rmSync as rmSync4,statSync as statSync4,unlinkSync as unlinkSync3,writeFileSync as writeFileSync3}from"node:fs";import{dirname as dirname9,isAbsolute as isAbsolute7,join as join14,
937
+ return Validator.Check(value)&&crossFieldsValid(value)}function parseFlowEventV1(input){return parseFlowData("event_invalid",input,isEvent)}var CAPABILITY_AGENT_ALIASES={...Object.fromEntries(Object.values(METHOD.rules.lead_sizing.sizes).map(cap=>[cap,"orchestrator-lead"])),scope_scout:"orch-scout",analysis_mid:"orch-technical-lead",analysis_strong:"orch-architect",integration_review:"orch-technical-review",migration_review:"orch-technical-review",performance_review:"orch-technical-review",api_contract_review:"orch-technical-review"};function agentNameFor(capability){return CAPABILITY_AGENT_ALIASES[capability]??`orch-${capability.replace(
938
+ /_/g,"-")}`}var AGENT_NAME_TO_ROLE=Object.fromEntries(Object.entries(CAPABILITY_AGENT_ALIASES).filter(([capability])=>capability!=="scope_scout").map(([capability,agent])=>[agent,capability]));function roleForAgentName(agentName){if(!agentName)return"unknown";if(AGENT_NAME_TO_ROLE[agentName])return AGENT_NAME_TO_ROLE[agentName];let m=/^orch-(.+)$/.exec(agentName);return m?.[1]?m[1].replace(/-/g,"_"):"unknown"}import{createHash as createHash7,randomUUID as randomUUID3}from"node:crypto";function flowControlFor(ctx,flowRunId,boundary){try{let host=boundary?.getHost?.(ctx);if(!boundary||!host||!["registerRun","registerChild","claimExecution","observe","markSettled","markDisconnected","observeClose"].every(key=>typeof host[key]=="function"))return;let discovered=host.getRootTarget?.();if(!discovered)return;let rootTarget=Object.freeze({...discovered}),handle=host.registerRun({flowRunId,rootTarget,runCancellation:boundary.runCancellation});return typeof handle=="object"&&handle!==null?
939
+ {host,rootTarget,handle}:void 0}catch{return}}function createFlowActivity(producer,flowRunId,retryHost,liveControl){let closed=!1,agents=new Map,attempts=new Map,retryAdmitted=(logicalTaskId,sourceAttemptId,requireClose=!1)=>{if(closed)return!1;let entry=agents.get(logicalTaskId),source=attempts.get(sourceAttemptId);if(entry===void 0||entry.attempts.at(-1)!==sourceAttemptId||source?.agentId!==entry.agentId||source.resultEventId===void 0||!(requireClose?source.processClosed:source.processTerminated))return!1;try{if(typeof retryHost?.getRetryAdmissionContext!=
940
+ "function")return!1;let context=retryHost.getRetryAdmissionContext({agentId:entry.agentId,sourceAttemptId});if(context===void 0)return!1;let prior=context.starts.find(event2=>event2.attemptId===sourceAttemptId),terminal=resolveDhEffectiveTerminals([...context.terminals,...context.amendments],context).get(sourceAttemptId);if(prior===void 0||prior.generationId!==producer.identity.generationId||prior.tenantScope.environmentId!==producer.identity.environmentId||prior.tenantScope.projectId!==producer.
941
+ identity.projectId||terminal?.event.eventId!==source.resultEventId)return!1;let attemptNumber=entry.attempts.length+1,attemptId=`att_${randomUUID3()}`;return assertDhRetryAdmission({...prior,eventId:`evt_${randomUUID3()}`,attemptId,attemptNumber,retryOfAttemptId:sourceAttemptId,payload:{schema:"dh.payload.attempt-lifecycle/1",phase:"started",agentId:entry.agentId,attemptId,attemptNumber,retryOfAttemptId:sourceAttemptId}},context),!0}catch{return!1}},blocked=new Map,declared=new Map,registerDependencies=(logicalTaskId,dependencies)=>{
942
+ !closed&&dependencies.length>0&&!declared.has(logicalTaskId)&&declared.set(logicalTaskId,[...dependencies])},sameList=(a,b)=>b!==void 0&&a.length===b.length&&a.every((v,i)=>v===b[i]),open=new Map,origins=new Map,cancels=new Map,localCancels=new Map,controls=new Map,extId=(namespace,value)=>({issuer:"flow",namespace,value,mappingVersion:1}),successors=new Map,succeededResults=logicalTaskId=>{for(;successors.has(logicalTaskId);)logicalTaskId=successors.get(logicalTaskId);let id2=agents.get(logicalTaskId)?.
943
+ attempts.at(-1),result=id2===void 0?void 0:attempts.get(id2);return new Set(result?.outcome==="succeeded"&&result.resultEventId!==void 0?[result.resultEventId]:[])},releaseBacked=input=>{let deps=declared.get(input.logicalTaskId)??[];if(input.causeEventId===void 0||deps.length===0||!sameList(deps,input.dependencies))return!1;let results=deps.map(succeededResults);return results.every(r=>r.size>0)&&results.some(r=>r.has(input.causeEventId))},decision=input=>{if(closed||input.decision==="dependenc\
944
+ y-released"&&!releaseBacked(input)||input.decision==="dependency-not-launched"&&input.dependencies&&(registerDependencies(input.logicalTaskId,input.dependencies),!sameList(input.dependencies,declared.get(input.logicalTaskId))))return;let id2=safeRecord({kind:"orchestration.decision",payload:{schema:"dh.payload.flow-decision/1",issuer:"flow",via:"flow",...input}});return id2!==void 0&&input.decision==="dependency-not-launched"&&input.dependencies&&blocked.set(input.logicalTaskId,{dependencies:input.
945
+ dependencies,decisionId:id2}),id2!==void 0&&input.decision==="dependency-released"&&blocked.delete(input.logicalTaskId),id2},rejectReasons=new Set(["not_authorized","scope_mismatch","stale_epoch","target_settled","not_eligible","policy_denied","budget_exhausted","workspace_unavailable"]),safeRecord=input=>{try{return producer.recordEvent(input)}catch{return}},recordCancelRequested=(agentId,attemptId,isProcessClosed,input)=>{if(isProcessClosed()||localCancels.get(attemptId)?.has(input.scope))return;
946
+ let id2=safeRecord({kind:"cancellation.requested",agentId,attemptId,payload:{schema:"dh.payload.local-cancellation/1",phase:"requested",state:"requested",scope:input.scope,requester:"local"}});if(id2!==void 0){let entry={scope:input.scope,applied:!1,confirmed:!1,isProcessClosed};cancels.has(attemptId)||cancels.set(attemptId,entry);let scopes=localCancels.get(attemptId)??new Map;scopes.set(input.scope,entry),localCancels.set(attemptId,scopes)}return id2},recordCancelObserved=(agentId,attemptId,input)=>{
947
+ let scopes=localCancels.get(attemptId),c=input.scope!==void 0&&scopes!==void 0?scopes.get(input.scope):(scopes?.size??0)>1?void 0:cancels.get(attemptId);if(c===void 0||c.isProcessClosed()||input.state==="requested")return;let confirm=input.state==="applied"&&input.terminationConfirmed===!0;if(input.state==="applied"&&(confirm?c.confirmed:c.applied))return;let reason=input.state==="rejected"?rejectReasons.has(input.reason??"")?input.reason:"not_eligible":void 0,state=input.state==="accepted"||input.
948
+ state==="delivered"?"unknown":input.state,diagnosticCode=input.reason==="cancelled_before_spawn"||input.reason==="logical_cancellation_observed"||input.reason==="process_closed_after_signal"?input.reason:void 0,id2=safeRecord({kind:"cancellation.outcome",agentId,attemptId,payload:{schema:"dh.payload.local-cancellation/1",phase:"observed",state,scope:c.scope,terminationConfirmed:confirm,requester:"local",...reason===void 0?{}:{reason},...diagnosticCode===void 0?{}:{diagnosticCode},...input.exitCode===
949
+ void 0?{}:{exitCode:input.exitCode}}});return id2!==void 0&&input.state==="applied"&&(confirm?c.confirmed=!0:c.applied=!0),id2};return{flowRunId,liveControl,prepareChildLaunch:async(attempt,launchId)=>{if(closed||typeof retryHost?.prepareChildLaunch!="function")throw new Error("binding_unavailable");let handle=await retryHost.prepareChildLaunch(attempt.agentId,attempt.attemptId,{launchId});if(closed||handle?.identity?.agentId!==attempt.agentId||handle.identity.attemptId!==attempt.attemptId)throw new Error(
950
+ "binding_unavailable");return handle},control:input=>{let signature=JSON.stringify([input.action,input.targetAgentId,input.targetAttemptId,input.scope,input.bindingEpoch,input.sessionEpoch,input.capabilityRevision]),known=controls.get(input.controlId);if(known!==void 0){if(known.signature===signature)return known.result;let result2={controlId:input.controlId,state:"rejected",terminationConfirmed:!1,reason:"conflicting_request"};return input.observe(result2),Promise.resolve(result2)}let result=(async()=>{
951
+ let done=(state,reason)=>{let o={controlId:input.controlId,state,terminationConfirmed:!1,...reason===void 0?{}:{reason}};return input.observe(o),o};if(input.action!=="cancel")return done("unsupported","action_not_supported");let target=attempts.get(input.targetAttemptId),live=cancels.get(input.targetAttemptId);return closed||target===void 0||target.agentId!==input.targetAgentId?done("rejected","not_eligible"):input.bindingEpoch!==producer.identity.bindingEpoch?done("rejected","stale_epoch"):target.
952
+ outcome!==void 0?done("rejected","target_settled"):live!==void 0?done("rejected","not_eligible"):done("unknown","host_claim_required")})();return controls.set(input.controlId,{signature,result}),result},decision,registerDependencies,resultEventId:attemptId=>attempts.get(attemptId)?.resultEventId,retrySourceAdmitted:retryAdmitted,retryOwnershipResolved:(attemptId,requireClose)=>{let source=attempts.get(attemptId);return!!(requireClose?source?.processClosed:source?.processTerminated)},scheduleRetry:({
953
+ logicalTaskId,mode,failedAttemptId,delayMs=0,requireClose=!1})=>{if(closed)return;let entry=agents.get(logicalTaskId),source=attempts.get(failedAttemptId);if(!retryAdmitted(logicalTaskId,failedAttemptId,requireClose))return;let nextAttemptNumber=entry.attempts.length+1,scheduled;try{scheduled=producer.recordRetryScheduled(entry.agentId,failedAttemptId,nextAttemptNumber,delayMs)}catch{return}if(scheduled!==void 0)return decision({decision:"retry",mode,provenance:{source:"internal"},logicalTaskId,
954
+ failedAttemptId,nextAttemptNumber,delayMs,causeEventId:source.resultEventId})},originEvent:({toolCallId,command,mode,logicalTaskId})=>{if(closed)return;let toolEvent;try{toolEvent=toolCallId===void 0?void 0:producer.eventIdForToolCall(toolCallId)}catch{toolEvent=void 0}if(toolEvent!==void 0)return toolEvent;let known=origins.get(logicalTaskId);if(known!==void 0)return known;let origin=decision({decision:"delegate",mode,provenance:{source:"command",command},logicalTaskId});return origin!==void 0&&
955
+ origins.set(logicalTaskId,origin),origin},launch:input=>{if(closed)throw new Error("flow activity is closed");let{logicalTaskId,retryOfAttemptId}=input;if(input.classification&&input.classification!=="retry"){let source=input.sourceAttemptId&&attempts.get(input.sourceAttemptId);if(!source||source.resultEventId===void 0||source.resultEventId!==input.causeEventId||retryOfAttemptId!==void 0||input.classification==="repair"&&source.outcome!=="succeeded")throw new Error("new work requires durable sou\
956
+ rce evidence and no retry link")}if(input.parentLogicalTaskId!==void 0&&!agents.has(input.parentLogicalTaskId))throw new Error("unknown parent logical task");let entry=agents.get(logicalTaskId);if(blocked.has(logicalTaskId))throw new Error("logical task is blocked by an unreleased dependency");if(entry!==void 0&&retryOfAttemptId===void 0)throw new Error("existing logical task requires a linked retry");if(retryOfAttemptId!==void 0){let source=attempts.get(retryOfAttemptId);if(!retryAdmitted(logicalTaskId,
957
+ retryOfAttemptId,input.retryReason==="control_retry")||input.sourceAttemptId!==void 0&&input.sourceAttemptId!==retryOfAttemptId||input.causeEventId!==void 0&&input.causeEventId!==source?.resultEventId)throw new Error("retry source is not the latest durably failed attempt of this logical task")}let base=[extId("flow.run",flowRunId),...input.planId===void 0?[]:[extId("flow.plan",input.planId)],extId("flow.task",input.nativeTaskId)];entry===void 0&&(entry={agentId:producer.beginChildAgent({logicalTaskId,
958
+ nativeLaunchId:input.nativeLaunchId,parentEventId:input.parentEventId,externalIds:[...base,...input.parentLogicalTaskId===void 0?[]:[extId("flow.parent-task",input.parentLogicalTaskId)]]}),attempts:[]},agents.set(logicalTaskId,entry));let{agentId}=entry,attemptNumber=entry.attempts.length+1,child=producer.beginChildAttempt(agentId,{attemptNumber,...retryOfAttemptId===void 0?{}:{retryOfAttemptId},externalIds:[...base,extId("flow.launch",input.nativeLaunchId)]});entry.attempts.push(child.attemptId);
959
+ let record2={agentId,logicalTaskId};input.classification==="repair"&&input.sourceAttemptId&&successors.set(attempts.get(input.sourceAttemptId).logicalTaskId,logicalTaskId),input.schedulerLogicalTaskId!==void 0&&input.schedulerLogicalTaskId!==logicalTaskId&&successors.set(input.schedulerLogicalTaskId,logicalTaskId),attempts.set(child.attemptId,record2);let finished=!1,processClosed=!1,finish=(outcome,failure)=>{if(finished)return record2.resultEventId;finished=!0,open.delete(child.attemptId);try{
960
+ record2.resultEventId=producer.finishChildAttempt(agentId,child.attemptId,outcome,failure)}catch{record2.resultEventId=void 0}return record2.outcome=record2.resultEventId===void 0?"unknown":outcome,record2.resultEventId===void 0&&(record2.captureFailure="finish_rejected"),record2.resultEventId};return open.set(child.attemptId,()=>finish("unknown",{code:"run_closed"})),{agentId,attemptId:child.attemptId,attemptNumber,env:child.env,correlation:()=>({agentId,attemptId:child.attemptId,attemptNumber,
961
+ logicalTaskId,outcome:record2.outcome??"unknown",...record2.resultEventId===void 0?{}:{resultEventId:record2.resultEventId},...record2.captureFailure===void 0?{}:{captureFailure:record2.captureFailure}}),finish,observeExit:()=>{record2.processTerminated=!0},observeClose:()=>{processClosed=!0,record2.processClosed=!0,record2.processTerminated=!0},cancelRequested:cancel=>recordCancelRequested(agentId,child.attemptId,()=>processClosed,cancel),cancelObserved:observation=>recordCancelObserved(agentId,
962
+ child.attemptId,observation)}},close:()=>{if(!closed){for(let settle of[...open.values()])settle();closed=!0;try{liveControl&&liveControl.host.markDisconnected(liveControl.handle)}catch{}}}}}function flowActivityFor(getProducer,ctx,flowRunId,getChildLaunchHost,controlBoundary){let producer;try{producer=getProducer?.(ctx)}catch{return}if(typeof producer?.recordEvent!="function")return;let retryHost;try{typeof getChildLaunchHost=="function"&&(retryHost=getChildLaunchHost(ctx))}catch{}if(typeof retryHost?.
963
+ prepareChildLaunch=="function")return createFlowActivity(producer,flowRunId,retryHost,flowControlFor(ctx,flowRunId,controlBoundary))}function traceOutcome(status){switch(status){case"completed":case"completed_after_process_error":return"succeeded";case"failed":case"timed_out":return"failed";case"cancelled":return"cancelled";default:return"unknown"}}function traceFailure(status,spawnFailed=!1){if(status==="timed_out")return{code:"timeout"};if(status==="failed")return{code:spawnFailed?"spawn_faile\
964
+ d":"child_failed"}}function recoveryTrace(base,source,retryReason,newUnit){let prior=source?.trace,classification=newUnit??(prior?.outcome==="succeeded"&&prior.resultEventId!==void 0?"repair":"retry"),{retryOfAttemptId:_link,causeEventId:_cause,sourceAttemptId:_source,sourceTerminationConfirmed:_termination,...rest}=base;return{...rest,logicalTaskId:classification==="retry"?prior?.logicalTaskId??base.logicalTaskId:base.logicalTaskId,classification,retryReason,...source?.processTerminationConfirmed===
965
+ void 0?{}:{sourceTerminationConfirmed:source.processTerminationConfirmed},...prior?{sourceAttemptId:prior.attemptId}:{},...prior?.resultEventId?{causeEventId:prior.resultEventId}:{},...classification==="retry"&&prior?{retryOfAttemptId:prior.attemptId}:{}}}var newLaunchId=()=>`launch-${randomUUID3()}`;function tryLaunch(activity,spec){try{let{retryDelayMs,...rest}=spec;if((spec.classification==="retry"||spec.retryReason&&spec.classification===void 0)&&spec.retryOfAttemptId===void 0)return;let logicalTaskId=spec.
966
+ logicalTaskId,parentEventId;if(spec.classification!==void 0&&spec.classification!=="retry"){if(spec.causeEventId===void 0||spec.retryOfAttemptId!==void 0)return;let unit=`${logicalTaskId}.${spec.classification}.${spec.causeEventId}`;logicalTaskId=unit.length<=128?unit:`${logicalTaskId.slice(0,64)}.${spec.classification}.${createHash7("sha256").update(unit).digest("hex").slice(0,32)}`,parentEventId=activity.decision({decision:"delegate",mode:spec.mode,provenance:{source:"command",command:"flow"},
967
+ logicalTaskId,causeEventId:spec.causeEventId,...spec.retryReason?{reasonCode:spec.retryReason}:{}})}else parentEventId=activity.originEvent({command:"flow",mode:spec.mode,logicalTaskId});return parentEventId===void 0||spec.retryOfAttemptId!==void 0&&activity.scheduleRetry({logicalTaskId,mode:spec.mode,failedAttemptId:spec.retryOfAttemptId,delayMs:retryDelayMs,requireClose:spec.retryReason==="control_retry"})===void 0?void 0:activity.launch({...rest,logicalTaskId,...logicalTaskId===spec.logicalTaskId?
968
+ {}:{schedulerLogicalTaskId:spec.logicalTaskId},parentEventId,nativeLaunchId:newLaunchId()})}catch{return}}function reportLines(stdout){let normalized=stdout.replace(/\r\n/g,`
969
+ `);return/[\r\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F-\u009F\u00A0\u2028\u2029\p{Cf}\p{M}]/u.test(normalized)||/`{3}|~{3}|<\/?[A-Za-z][A-Za-z0-9-]*(?:[ \t\n/][^<>]*)?>|<!|<\?|^[ \t]*(?:(?:>|[-+*]|\d+[.)])[ \t]*)*</m.test(normalized)?null:normalized.replace(/\n+$/,"").split(`
970
+ `)}function parseQaStatus(stdout){let machineLine=/^QA_STATUS_JSON: .*$/m.exec(stdout),prose=machineLine?stdout.slice(0,machineLine.index)+stdout.slice(machineLine.index+machineLine[0].length):stdout,invalid2=reason=>({valid:!1,reason,prose});if((stdout.match(/QA_STATUS_JSON/gi)??[]).length!==1)return invalid2("expected exactly one status token");let lines=reportLines(stdout);if(!lines)return invalid2("report contains prohibited characters, code fences or raw HTML");let lastLine=lines.at(-1)??"";
971
+ if(!lastLine.startsWith("QA_STATUS_JSON: "))return invalid2("status line must be the final line at column 0");if(lines.length<3||lines.at(-2)!==""||!lines.slice(0,-2).some(line=>line.trim().length>0))return invalid2("status line must follow a human report and an empty line");if(lastLine.length>16384)return invalid2("status line exceeds 16384 characters");let jsonText=lastLine.slice(16),parsed;try{parsed=JSON.parse(jsonText)}catch{return invalid2("invalid JSON")}if(JSON.stringify(parsed)!==jsonText)
972
+ return invalid2("JSON must be canonical compact form");let objectWithKeys=(value,keys)=>typeof value=="object"&&value!==null&&Object.getPrototypeOf(value)===Object.prototype&&Object.keys(value).length===keys.length&&keys.every((key,index)=>Object.keys(value)[index]===key);if(!objectWithKeys(parsed,["status","checks"]))return invalid2("expected exactly status and checks keys");let status=parsed.status;if(status!=="PASS"&&status!=="FAIL"&&status!=="BLOCKED")return invalid2("invalid overall status");
973
+ if(!Array.isArray(parsed.checks)||parsed.checks.length<1||parsed.checks.length>100)return invalid2("expected 1..100 checks");let checks=[],names=new Set;for(let check2 of parsed.checks){if(!objectWithKeys(check2,["name","status"]))return invalid2("expected exactly name and status check keys");if(typeof check2.name!="string"||!/^[A-Za-z0-9][A-Za-z0-9 ._:/@+-]{0,99}$/.test(check2.name))return invalid2("invalid check name");let name=check2.name.toLowerCase();if(names.has(name))return invalid2("dupl\
974
+ icate check name");if(names.add(name),check2.status!=="PASS"&&check2.status!=="FAIL"&&check2.status!=="BLOCKED"&&check2.status!=="SKIPPED")return invalid2("invalid check status");checks.push({name:check2.name,status:check2.status})}let failed=checks.some(check2=>check2.status==="FAIL"),blocked=checks.some(check2=>check2.status==="BLOCKED");return status==="PASS"&&(failed||blocked)||status==="FAIL"&&!failed||status==="BLOCKED"&&(!blocked||failed)?invalid2("overall status contradicts checks"):{valid:!0,
975
+ status,checks,prose}}function evidenceStatusFor(checks){return checks.length>0&&checks.some(c=>c.result==="pass"||c.result==="fail")?"verified":"unverified_checks_unavailable"}function qaVerificationOutcomeFor(runId,passed,quality,note,evidence={}){let checks=evidence.checks??[];return{run_id:runId,task_id:`${runId}-qa`,outcome:passed?"verified":"fail",verification_scope:"run",quality,note,checks,checks_unavailable:checks.filter(c=>c.result==="unavailable"||c.result==="skipped").map(c=>c.id),evidence_status:evidenceStatusFor(
976
+ checks),check_commands:null,check_commands_unavailable_reason:"QA structured status line has no command field; only check names and statuses are reported",tested_revision:evidence.tested_revision??null,tested_revision_dirty:evidence.tested_revision_dirty??null,tested_tree:evidence.tested_tree??null,tested_root:evidence.tested_root??null,...evidence.tested_revision_unavailable_reason?{tested_revision_unavailable_reason:evidence.tested_revision_unavailable_reason}:{},review_verdicts:evidence.review_verdicts??
977
+ [],artifacts:evidence.artifacts??[],outcome_finality:evidence.outcome_finality??"immediate"}}function reviewVerdict(stdout){let lines=reportLines(stdout);if(!lines)return"INVALID";let n=lines.length,verdict=lines[n-1];return n<2||verdict!=="PASS"&&verdict!=="FAIL"||lines[n-2]!=="## Verdict"||n>2&&lines[n-3]!==""||lines.filter(line=>/#{1,6}\s*verdict\b|\b(?:verdict|status)\s*:/i.test(line.normalize("NFKC"))).length!==1?"INVALID":verdict}async function runVerification(runId,planId,filesChanged,_ctx,run,captureOpts,deps,repoRoot,options={}){
978
+ if(filesChanged.length===0&&!options.requireChecks)return{passed:!0,skipped:!0,summary:"No files changed \u2014 verification skipped.",failedChecks:[]};let{attempt,reason="timeout",source,retryOfAttemptId}=options,taskId=attempt?`${runId}-qa-rerun-${attempt}`:`${runId}-qa`,qaTask=["Run the project verification suite for these changed files:","",...filesChanged.map(f=>`- \`${f}\``),"",...repoRootGuardrail(repoRoot,resolveVerificationPlan(repoRoot,filesChanged)),"",...options.goal?.trim()?[...qaGoalReference(
979
+ options.goal.trim()),""]:[],"Run typecheck, unit tests, integration tests, lint as applicable.",...QA_SCOPE_RULES,...attempt?["",`Re-run notice: ${reason==="provider_stall"?"a previous QA dispatch hit a provider_stall before any tool call":"a previous QA dispatch on this run timed out before it finished"}. This time, run ONLY scoped test commands targeting the files listed above (e.g. \`bun test <file>\`, or targeted pytest paths for the listed files) \u2014 never the full test suite if it is slow, and\
980
+ never a filesystem-wide search such as \`find /\` or \`find ~\`. Stay inside the repo root at all times.`]:[],"Write a human-readable report first. The whole report must not use code fences (``` or ~~~) or raw HTML/angle-bracket-leading lines, including inside quotes/lists or embedded in prose. Do not use invisible/format characters, combining marks, non-breaking spaces, C0/C1 controls (except tabs and LF/CRLF line endings), lone carriage returns or Unicode line/paragraph separators anywhere in\
981
+ the report; quote error excerpts with 4-space indentation instead. Inline single-backtick code and mid-line comparisons such as a < b are allowed. Then, as the very last line, preceded by an empty line, write exactly one line starting with `QA_STATUS_JSON: ` (one space). The JSON must be exactly as in the example form (no spaces, no escaped characters, keys in the order status, checks and name, status):",'QA_STATUS_JSON: {"status":"PASS","checks":[{"name":"typecheck","status":"PASS"},{"name":"u\
982
+ nit","status":"SKIPPED"}]}',"Use exactly the keys status and checks, and exactly name and status for each check. Include 1..100 entries, one per check run or skipped. Check names must be unique ignoring case, 1..100 characters, start with an ASCII letter or digit, and contain only ASCII letters, digits, spaces, . _ : / @ + -.","Check status must be PASS, FAIL, BLOCKED or SKIPPED. Overall status must be FAIL if any check FAILs, BLOCKED if a check could not run (and none failed), else PASS.","Neve\
983
+ r wrap the line in code fences, quotes or formatting; never write the token QA_STATUS_JSON anywhere else."].join(`
984
+ `),[qaResult]=await deps.dispatch([{capability:"qa_agent",stage:"qa",task:qaTask,taskId,trace:source||attempt?{...recoveryTrace({logicalTaskId:`${run?.session.recovery?.rootRunId??runId}-qa`,mode:"hierarchy"},source,attempt?"qa_rerun":"reverification",attempt?"retry":"verify"),...!source&&retryOfAttemptId?{retryOfAttemptId}:{}}:{logicalTaskId:`${run?.session.recovery?.rootRunId??runId}-qa`,mode:"hierarchy"}}]);if(!qaResult)return deps.recordOutcome(qaVerificationOutcomeFor(runId,!1,0,"QA dispatc\
985
+ h produced no result",{review_verdicts:[{role:"qa_agent",verdict:"fail"}],artifacts:[]})),{passed:!1,summary:"QA dispatch produced no result.",failedChecks:["qa-dispatch"]};if(await deps.captureDispatchCost({...captureOpts,planId},qaResult,run),qaResult.exitCode!==0&&qaResult.outcome!=="cancelled"&&qaResult.usage.tool_calls===0&&isTransientProviderError([qaResult.stderr,...qaResult.interruption?.nestedWorkers.map(w=>w.errorMessage??"")??[]].join(`
986
+ `)))return deps.recordOutcome({...qaVerificationOutcomeFor(runId,!1,0,"QA provider_stall before tool calls \u2014 no check verdict"),outcome:"unavailable"}),{passed:!1,providerStall:!0,summary:"QA provider_stall before tool calls \u2014 verdict not determined.",failedChecks:[],dispatch:qaResult};if(qaResult.outcome==="timed_out")return deps.recordOutcome(qaVerificationOutcomeFor(runId,!1,0,"QA dispatch timed out before completing.",{review_verdicts:[{role:"qa_agent",verdict:"timed_out"}],artifacts:[]})),
987
+ {passed:!1,timedOut:!0,summary:"QA dispatch timed out before completing \u2014 verdict not determined.",failedChecks:[],dispatch:qaResult};let out=qaResult.stdout,qa=parseQaStatus(out),passed=qaResult.exitCode===0&&qa.valid&&qa.status==="PASS",failedChecks=qa.valid?qa.status==="PASS"?[]:qa.checks.filter(check2=>check2.status==="FAIL"||check2.status==="BLOCKED").map(check2=>check2.name):["qa-status-invalid"];qa.valid&&qa.status!=="PASS"&&failedChecks.length===0&&failedChecks.push("verdict");let results={
988
+ PASS:"pass",FAIL:"fail",SKIPPED:"skipped",BLOCKED:"unavailable"},checks=qa.valid?qa.checks.map(check2=>({id:check2.name,result:results[check2.status]})):[],revision=testedRevisionFor(repoRoot),note=qa.valid?"":`[qa-status-invalid: ${qa.reason}]`,outcome=qaVerificationOutcomeFor(runId,passed,passed?.95:0,note,{checks,tested_revision:revision.revision,tested_revision_dirty:revision.dirty,tested_tree:revision.tree,tested_root:repoRoot,...revision.unavailable_reason?{tested_revision_unavailable_reason:revision.
989
+ unavailable_reason}:{},review_verdicts:[{role:"qa_agent",verdict:passed?"pass":"fail"}],artifacts:[]}),defer=passed&&options.deferPassOutcome===!0;return defer||deps.recordOutcome(outcome),{passed,summary:qa.prose.slice(0,500),failedChecks,checks,qaStatus:qa.valid?qa.status:"INVALID",dispatch:qaResult,...defer?{pendingOutcome:outcome}:{}}}function resultsOf(event2){let results=(event2?.type==="tool_execution_update"?event2.partialResult:event2?.type==="tool_execution_end"?event2.result:void 0)?.details?.results;return Array.isArray(results)?results:void 0}function numberOr(value){return typeof value=="number"&&Number.isFinite(value)?value:void 0}var attemptOf=value=>typeof value=="number"&&Number.isFinite(value)?value:0,nestedKey=(callId,taskId,attempt)=>JSON.stringify([callId,taskId,attempt]);function keyOf(callId,result,index){
990
+ let taskId=typeof result?.taskId=="string"&&result.taskId?result.taskId:String(index);return nestedKey(callId,taskId,attemptOf(result?.attempt))}function closedAttempts(event2,callId){let events=(event2?.type==="tool_execution_update"?event2.partialResult:event2?.result)?.details?.taskEvents,out=new Map;if(!Array.isArray(events))return out;let latest=new Map;for(let e of events)typeof e?.taskId=="string"&&(e.type==="start"||e.type==="complete"||e.type==="fail")&&latest.set(nestedKey(callId,e.taskId,
991
+ attemptOf(e.attempt)),e.type);for(let[key,type]of latest)(type==="complete"||type==="fail")&&out.set(key,type);return out}function lastAssistantText(result){if(Array.isArray(result?.messages))for(let i=result.messages.length-1;i>=0;i--){let msg=result.messages[i];if(!(msg?.role!=="assistant"||!Array.isArray(msg.content))){for(let part of msg.content)if(part?.type==="text"&&typeof part.text=="string")return part.text}}return""}function taskEventOutcome(event2,result){let events=(event2?.type==="t\
992
+ ool_execution_update"?event2.partialResult:event2?.result)?.details?.taskEvents;if(!Array.isArray(events)||typeof result?.taskId!="string")return;let type=events.filter(e=>e?.taskId===result.taskId&&(e.type==="start"||e.type==="complete"||e.type==="fail")&&(typeof result.attempt!="number"||e.attempt===result.attempt)).at(-1)?.type;return type==="complete"||type==="fail"?type:void 0}function detailOf(callId,result,index){let rawCost=result?.usage?.cost,costReported=typeof rawCost=="number"&&Number.
993
+ isFinite(rawCost)&&rawCost>=0,taskId=typeof result?.taskId=="string"&&result.taskId?result.taskId:String(index);return{key:keyOf(callId,result,index),toolCallId:callId,taskId,agent:typeof result?.agent=="string"?result.agent:void 0,model:typeof result?.model=="string"?result.model:void 0,usage:{input:numberOr(result?.usage?.input),output:numberOr(result?.usage?.output),cacheRead:numberOr(result?.usage?.cacheRead),cacheWrite:numberOr(result?.usage?.cacheWrite),cost:costReported?rawCost:void 0,turns:numberOr(
994
+ result?.usage?.turns)},...result?.usageIncomplete===!0?{usageIncomplete:!0}:{},costReported,exitCode:typeof result?.exitCode=="number"?result.exitCode:void 0,terminal:!1,depth:typeof result?.depth=="number"?result.depth:void 0,attempt:typeof result?.attempt=="number"?result.attempt:void 0,parentTaskId:typeof result?.parentTaskId=="string"?result.parentTaskId:void 0,stopReason:typeof result?.stopReason=="string"?result.stopReason:void 0}}var NESTED_KEY_LIMIT=512,NestedCostTracker=class{latest=new Map;maxKeys;overflow=!1;constructor(maxKeys=NESTED_KEY_LIMIT){
995
+ this.maxKeys=maxKeys}get overflowed(){return this.overflow}observe(event2,now){if(event2?.toolName!=="subagent")return!1;let results=resultsOf(event2);if(!results)return!1;let callId=typeof event2.toolCallId=="string"?event2.toolCallId:"?",changed=!1,isEnd=event2.type==="tool_execution_end";for(let[key,type]of closedAttempts(event2,callId)){let cached=this.latest.get(key);cached&&!cached.terminal&&this.latest.set(key,{...cached,terminal:!0,succeeded:type==="complete",updatedAt:now,endedAt:now})}
996
+ return results.forEach((result,index)=>{let next=detailOf(callId,result,index),prev=this.latest.get(next.key);if(!prev&&this.latest.size>=this.maxKeys){this.overflow=!0;return}prev?.usageIncomplete&&(next.usageIncomplete=!0),next.usage.cost!==void 0&&next.usage.cost!==prev?.usage.cost&&(changed=!0);let merged=next.usage.cost!==void 0?next:{...next,usage:{...next.usage,cost:prev?.usage.cost},costReported:next.costReported||(prev?.costReported??!1)},outcome=isEnd?void 0:taskEventOutcome(event2,result),
997
+ terminal=prev?.terminal||isEnd||outcome!==void 0,succeeded=prev?.terminal?prev.succeeded:terminal?isEnd?merged.exitCode===0:outcome==="complete":void 0,verdict=isEnd&&prev?.reviewVerdict===void 0?merged.exitCode===0&&succeeded?reviewVerdict(lastAssistantText(result)):"INVALID":prev?.reviewVerdict;this.latest.set(next.key,{...merged,succeeded,reviewVerdict:verdict,terminal,startedAt:prev?.startedAt??now,updatedAt:now,endedAt:prev?.endedAt??(terminal?now:void 0)})}),changed}total(){let sum=0;for(let d of this.
998
+ latest.values())sum+=d.usage.cost??0;return sum}entries(){return Array.from(this.latest.values())}};import{createHash as createHash9,randomBytes as randomBytes2}from"node:crypto";import{closeSync as closeSync9,constants as constants5,existsSync as existsSync6,fstatSync as fstatSync9,fsyncSync as fsyncSync3,linkSync as linkSync2,mkdirSync as mkdirSync3,openSync as openSync9,readSync as readSync9,realpathSync as realpathSync6,rmSync as rmSync4,statSync as statSync4,unlinkSync as unlinkSync3,writeFileSync as writeFileSync3}from"node:fs";import{dirname as dirname9,isAbsolute as isAbsolute7,join as join14,
938
999
  relative as relative6,resolve as resolve6,sep as sep4}from"node:path";var FlowEffortSchema=typebox_exports.Union([typebox_exports.Literal("low"),typebox_exports.Literal("medium"),typebox_exports.Literal("high")]),FlowRoleBindingSchema=StrictObject({primary:FlowModelRefSchema,backups:typebox_exports.Array(FlowModelRefSchema,{maxItems:8}),effort:FlowEffortSchema}),FlowProfileV1Schema=StrictObject({schema:typebox_exports.Literal("humain-flow-profile"),schemaVersion:typebox_exports.Literal(1),id:FlowIdSchema,version:FlowPositiveIntSchema,digest:FlowDigestSchema,kind:typebox_exports.
939
1000
  Union([typebox_exports.Literal("direct"),typebox_exports.Literal("flow")]),label:typebox_exports.String({minLength:1,maxLength:80}),description:typebox_exports.Optional(typebox_exports.String({maxLength:500})),direct:typebox_exports.Optional(StrictObject({model:FlowModelRefSchema,fallbacks:typebox_exports.Array(FlowModelRefSchema,{maxItems:8})})),roles:typebox_exports.Optional(partialByRole(FlowRoleBindingSchema)),sizing:typebox_exports.Optional(StrictObject({classifierPolicyId:FlowIdSchema,thresholds:StrictObject(
940
1001
  {mediumAt:typebox_exports.Number({minimum:0,maximum:1e6}),largeAt:typebox_exports.Number({minimum:0,maximum:1e6})}),triageRole:typebox_exports.Literal("triage"),maxEscalations:typebox_exports.Union([typebox_exports.Literal(0),typebox_exports.Literal(1)])})),limits:StrictObject({maxAgents:typebox_exports.Integer({minimum:1,maximum:256}),maxConcurrent:typebox_exports.Integer({minimum:1,maximum:64}),maxDepth:typebox_exports.Integer({minimum:0,maximum:3}),maxRetries:typebox_exports.Integer({minimum:0,
@@ -944,22 +1005,22 @@ return!1;for(let role of REQUIRED_FLOW_ROLES)if(doc.roles[role]===void 0)return!
944
1005
  let profile=parseFlowProfileV1Shape(input);if(!verifyFlowDigest(hasher,flowProfileDigestInput(profile),profile.digest))throw new FlowContractError("digest_mismatch");return profile}var FlowRunAdmissionV1Schema=StrictObject({schema:typebox_exports.Literal("humain-flow-admission"),schemaVersion:typebox_exports.Literal(1),runId:FlowIdSchema,surface:typebox_exports.Union([typebox_exports.Literal("cli"),typebox_exports.Literal("web")]),tenantId:typebox_exports.Optional(FlowIdSchema),projectId:typebox_exports.Optional(FlowIdSchema),mode:typebox_exports.Union([typebox_exports.Literal("auto"),typebox_exports.Literal("direct")]),profile:FlowProfileV1Schema,sizeOverride:typebox_exports.
945
1006
  Optional(FlowSizeSchema),directModel:typebox_exports.Optional(FlowModelRefSchema),spendCapMicrousd:FlowMicrousdSchema,inputs:typebox_exports.Array(StrictObject({kind:typebox_exports.Union([typebox_exports.Literal("plan"),typebox_exports.Literal("sketch")]),ref:FlowIdSchema,sha256:FlowDigestSchema,path:typebox_exports.String({minLength:1,maxLength:1024})}),{maxItems:64}),issuedAt:FlowTimestampSchema,admissionDigest:FlowDigestSchema}),Validator3=compileFlow(FlowRunAdmissionV1Schema);function flowAdmissionDigestInput(doc){
946
1007
  return canonicalWithout(doc,"admissionDigest")}function isAdmissionShape(value){if(!Validator3.Check(value))return!1;try{return parseFlowProfileV1Shape(value.profile),!0}catch{return!1}}function parseFlowRunAdmissionV1Shape(input){return parseFlowData("admission_invalid",input,isAdmissionShape)}function parseFlowRunAdmissionV1(input,hasher){let admission=parseFlowRunAdmissionV1Shape(input);if(!verifyFlowDigest(hasher,flowProfileDigestInput(admission.profile),admission.profile.digest))throw new FlowContractError(
947
- "digest_mismatch");if(!verifyFlowDigest(hasher,flowAdmissionDigestInput(admission),admission.admissionDigest))throw new FlowContractError("digest_mismatch");return admission}import{createHash as createHash7}from"node:crypto";var flowSha256Hasher={sha256Hex:text2=>createHash7("sha256").update(text2,"utf8").digest("hex")};function computeProfileDigest(profile){return flowSha256Hasher.sha256Hex(flowProfileDigestInput(profile))}function withProfileDigest(profile){return{...profile,digest:computeProfileDigest(profile)}}function buildCliAdmission(input){let{profile}=input.resolved,cap=input.spendCapMicrousd;if(cap!==void 0&&(!Number.isSafeInteger(cap)||cap<0||cap>profile.spend.runCapMicrousd))throw new FlowProfileError("spend_cap_exceeded",`Spend cap override must be an integer between 0 and ${profile.spend.runCapMicrousd}`);let unsigned={schema:"humain-flow-admission",schemaVersion:1,runId:input.runId,surface:"cli",mode:profile.kind==="direct"?"direct":"auto",profile:structuredClone(profile),spendCapMicrousd:input.
948
- spendCapMicrousd??profile.spend.runCapMicrousd,inputs:input.inputs??[],issuedAt:input.issuedAt.toISOString(),...input.sizeOverride!==void 0?{sizeOverride:input.sizeOverride}:{},...profile.kind==="direct"&&profile.direct!==void 0?{directModel:profile.direct.model}:{},admissionDigest:""},final={...unsigned,admissionDigest:flowSha256Hasher.sha256Hex(flowAdmissionDigestInput(unsigned))};return parseFlowRunAdmissionV1(final,flowSha256Hasher)}import{randomUUID as randomUUID3}from"node:crypto";import{chmodSync,closeSync as closeSync8,constants as constants4,fstatSync as fstatSync8,fsyncSync as fsyncSync2,lstatSync as lstatSync8,mkdirSync as mkdirSync2,openSync as openSync8,readdirSync as readdirSync4,readSync as readSync8,renameSync as renameSync2,unlinkSync as unlinkSync2,writeFileSync as writeFileSync2}from"node:fs";import{dirname as dirname8,join as join13}from"node:path";import{fileURLToPath as fileURLToPath3}from"node:url";var BUILT_IN_PROFILE_IDS=["premium","anthropic","openai","oss-first"],ID_PATTERN2=/^[a-z0-9][a-z0-9_.:-]{0,127}$/,MAX_FILE_BYTES2=256*1024,LOCK_NAME=".store.lock",BACKUP_NAME=/^(\d+)\.(\d+)-[0-9a-f]{8}\.json$/,CORRUPT_NAME=/^(\d+)-[0-9a-f]{8}\.json$/,WATERMARK_SUFFIX=".watermark.json",MAX_BACKUPS2=10,BACKUP_ATTEMPTS=3,ACTIVE_SCHEMA="humain-flow-active-profile";function builtInProfilesDir(){return fileURLToPath3(new URL("../../assets/profiles/",import.meta.url))}function isBuiltInId(id2){return BUILT_IN_PROFILE_IDS.
1008
+ "digest_mismatch");if(!verifyFlowDigest(hasher,flowAdmissionDigestInput(admission),admission.admissionDigest))throw new FlowContractError("digest_mismatch");return admission}import{createHash as createHash8}from"node:crypto";var flowSha256Hasher={sha256Hex:text2=>createHash8("sha256").update(text2,"utf8").digest("hex")};function computeProfileDigest(profile){return flowSha256Hasher.sha256Hex(flowProfileDigestInput(profile))}function withProfileDigest(profile){return{...profile,digest:computeProfileDigest(profile)}}function buildCliAdmission(input){let{profile}=input.resolved,cap=input.spendCapMicrousd;if(cap!==void 0&&(!Number.isSafeInteger(cap)||cap<0||cap>profile.spend.runCapMicrousd))throw new FlowProfileError("spend_cap_exceeded",`Spend cap override must be an integer between 0 and ${profile.spend.runCapMicrousd}`);let unsigned={schema:"humain-flow-admission",schemaVersion:1,runId:input.runId,surface:"cli",mode:profile.kind==="direct"?"direct":"auto",profile:structuredClone(profile),spendCapMicrousd:input.
1009
+ spendCapMicrousd??profile.spend.runCapMicrousd,inputs:input.inputs??[],issuedAt:input.issuedAt.toISOString(),...input.sizeOverride!==void 0?{sizeOverride:input.sizeOverride}:{},...profile.kind==="direct"&&profile.direct!==void 0?{directModel:profile.direct.model}:{},admissionDigest:""},final={...unsigned,admissionDigest:flowSha256Hasher.sha256Hex(flowAdmissionDigestInput(unsigned))};return parseFlowRunAdmissionV1(final,flowSha256Hasher)}import{randomUUID as randomUUID4}from"node:crypto";import{chmodSync,closeSync as closeSync8,constants as constants4,fstatSync as fstatSync8,fsyncSync as fsyncSync2,lstatSync as lstatSync8,mkdirSync as mkdirSync2,openSync as openSync8,readdirSync as readdirSync4,readSync as readSync8,renameSync as renameSync2,unlinkSync as unlinkSync2,writeFileSync as writeFileSync2}from"node:fs";import{dirname as dirname8,join as join13}from"node:path";import{fileURLToPath as fileURLToPath3}from"node:url";var BUILT_IN_PROFILE_IDS=["premium","anthropic","openai","oss-first"],ID_PATTERN2=/^[a-z0-9][a-z0-9_.:-]{0,127}$/,MAX_FILE_BYTES2=256*1024,LOCK_NAME=".store.lock",BACKUP_NAME=/^(\d+)\.(\d+)-[0-9a-f]{8}\.json$/,CORRUPT_NAME=/^(\d+)-[0-9a-f]{8}\.json$/,WATERMARK_SUFFIX=".watermark.json",MAX_BACKUPS2=10,BACKUP_ATTEMPTS=3,ACTIVE_SCHEMA="humain-flow-active-profile";function builtInProfilesDir(){return fileURLToPath3(new URL("../../assets/profiles/",import.meta.url))}function isBuiltInId(id2){return BUILT_IN_PROFILE_IDS.
949
1010
  includes(id2)}function assertId(id2){if(!ID_PATTERN2.test(id2))throw new FlowProfileError("profile_invalid","Invalid profile id")}function isErrno2(error,code){return error instanceof Error&&error.code===code}function readBoundedBytes(path){let flags=constants4.O_RDONLY|(constants4.O_NOFOLLOW??0)|(constants4.O_NONBLOCK??0),fd;try{fd=openSync8(path,flags)}catch(error){throw isErrno2(error,"ENOENT")?new FlowProfileError("profile_not_found",`Profile not found: ${path}`,path):new FlowProfileError("p\
950
1011
  rofile_invalid",`Profile file unreadable: ${path}`,path)}try{if(!fstatSync8(fd).isFile())throw new FlowProfileError("profile_invalid",`Not a regular file: ${path}`,path);let buffer=Buffer.alloc(MAX_FILE_BYTES2+1),total=0;for(;total<buffer.length;){let n=readSync8(fd,buffer,total,buffer.length-total,null);if(n===0)break;total+=n}if(total>MAX_FILE_BYTES2)throw new FlowProfileError("profile_too_large",`Profile file too large: ${path}`,path);return buffer.subarray(0,total)}catch(error){throw error instanceof
951
1012
  FlowProfileError?error:new FlowProfileError("profile_invalid",`Profile file unreadable: ${path}`,path)}finally{closeSync8(fd)}}function parseProfile(path,text2){let json;try{json=JSON.parse(text2)}catch{throw new FlowProfileError("profile_invalid",`Profile file is not valid JSON: ${path}`,path)}try{return parseFlowProfileV1(json,flowSha256Hasher)}catch{throw new FlowProfileError("profile_invalid",`Profile file failed validation: ${path}`,path)}}function fsyncDir(path,ancestor=!1){let fd;try{fd=openSync8(
952
1013
  path,constants4.O_RDONLY)}catch(error){if(isDirFsyncUnsupported(error)||ancestor&&isErrno2(error,"EACCES"))return;throw error}try{fsyncSync2(fd)}catch(error){if(!isDirFsyncUnsupported(error))throw error}finally{closeSync8(fd)}}function isDirFsyncUnsupported(error){return isErrno2(error,"EINVAL")||isErrno2(error,"EPERM")||isErrno2(error,"EISDIR")}function writeFileDurably(path,data){let fd=openSync8(path,"wx",384);try{writeFileSync2(fd,data),fsyncSync2(fd)}finally{closeSync8(fd)}}function writeAtomic(path,text2){
953
- let tmp=`${path}.${process.pid}.${randomUUID3()}.tmp`;try{writeFileDurably(tmp,text2),renameSync2(tmp,path),fsyncDir(dirname8(path))}catch(error){try{unlinkSync2(tmp)}catch{}throw error}}function checkDir(path){let stat;try{stat=lstatSync8(path)}catch(error){if(isErrno2(error,"ENOENT"))return!1;throw new FlowProfileError("store_unsafe",`Profile store directory is unsafe: ${path}`,path)}let foreign=typeof process.getuid=="function"&&stat.uid!==process.getuid(),writable=process.platform!=="win32"&&
1014
+ let tmp=`${path}.${process.pid}.${randomUUID4()}.tmp`;try{writeFileDurably(tmp,text2),renameSync2(tmp,path),fsyncDir(dirname8(path))}catch(error){try{unlinkSync2(tmp)}catch{}throw error}}function checkDir(path){let stat;try{stat=lstatSync8(path)}catch(error){if(isErrno2(error,"ENOENT"))return!1;throw new FlowProfileError("store_unsafe",`Profile store directory is unsafe: ${path}`,path)}let foreign=typeof process.getuid=="function"&&stat.uid!==process.getuid(),writable=process.platform!=="win32"&&
954
1015
  (stat.mode&18)!==0;if(!stat.isDirectory()||foreign||writable)throw new FlowProfileError("store_unsafe",`Profile store directory is unsafe: ${path}`,path);return!0}function ensureSafeDir(path){if(!checkDir(path)){let missing2=[];for(let dir=path;!checkDir(dir);dir=dirname8(dir))missing2.unshift(dir);for(let dir of missing2){try{mkdirSync2(dir,{mode:448}),chmodSync(dir,448)}catch(error){if(!isErrno2(error,"EEXIST"))throw error}if(!checkDir(dir))throw new FlowProfileError("store_unsafe",`Profile st\
955
- ore directory is unsafe: ${dir}`,dir);fsyncDir(dir),fsyncDir(dirname8(dir))}}fsyncDir(path);for(let dir=dirname8(path),up=dirname8(dir);fsyncDir(dir,!0),up!==dir;dir=up,up=dirname8(dir));}function shortId2(){return randomUUID3().replaceAll("-","").slice(0,8)}function toJson(value){return`${JSON.stringify(value,null," ")}
1016
+ ore directory is unsafe: ${dir}`,dir);fsyncDir(dir),fsyncDir(dirname8(dir))}}fsyncDir(path);for(let dir=dirname8(path),up=dirname8(dir);fsyncDir(dir,!0),up!==dir;dir=up,up=dirname8(dir));}function shortId2(){return randomUUID4().replaceAll("-","").slice(0,8)}function toJson(value){return`${JSON.stringify(value,null," ")}
956
1017
  `}function createProfileStore(options){let builtInDir=options.builtInDir??builtInProfilesDir(),flowDir=options.flowDir;function requireFlowDir(){if(flowDir===void 0)throw new FlowProfileError("store_readonly","Profile store is read-only");return flowDir}let profilesDir=()=>join13(requireFlowDir(),"profiles"),backupsDir=()=>join13(profilesDir(),".backups"),userPath=id2=>join13(profilesDir(),`${id2}.json`),activePath=()=>join13(requireFlowDir(),"active-profile.json"),lockPath=()=>join13(profilesDir(),
957
1018
  LOCK_NAME);function checkStoreDirs(){checkDir(requireFlowDir())&&checkDir(profilesDir())&&checkDir(backupsDir())}function ensureStoreDirs(){ensureSafeDir(requireFlowDir()),ensureSafeDir(profilesDir())}function loadBuiltIn(id2){let path=join13(builtInDir,`${id2}.json`),profile=parseProfile(path,readBoundedBytes(path).toString("utf8"));if(profile.id!==id2||profile.builtIn!==!0)throw new FlowProfileError("profile_invalid",`Built-in profile is inconsistent: ${path}`,path);return profile}function parseUser(id2,path,bytes){
958
1019
  let profile=parseProfile(path,bytes.toString("utf8"));if(profile.id!==id2)throw new FlowProfileError("profile_invalid",`Profile id does not match file name: ${path}`,path);if(profile.builtIn!==void 0)throw new FlowProfileError("profile_invalid",`User profile must not be built-in: ${path}`,path);return profile}function loadUser(id2){checkStoreDirs();let path=userPath(id2);return parseUser(id2,path,readBoundedBytes(path))}function get(id2){if(assertId(id2),isBuiltInId(id2))return loadBuiltIn(id2);
959
1020
  if(flowDir===void 0)throw new FlowProfileError("profile_not_found",`Profile not found: ${id2}`);return loadUser(id2)}function list3(){let profiles=[],problems=[],record2=(path,error)=>{error instanceof FlowProfileError?problems.push({path,code:error.code,message:error.message}):problems.push({path,code:"profile_invalid",message:`Profile file unreadable: ${path}`})};for(let id2 of BUILT_IN_PROFILE_IDS){let path=join13(builtInDir,`${id2}.json`);try{profiles.push({profile:loadBuiltIn(id2),source:"b\
960
1021
  uiltin",path})}catch(error){record2(path,error)}}if(flowDir===void 0)return{profiles,problems};let dir=profilesDir();try{checkStoreDirs()}catch(error){return record2(error instanceof FlowProfileError&&error.path!==void 0?error.path:dir,error),{profiles,problems}}let names=[];try{names=readdirSync4(dir)}catch(error){return isErrno2(error,"ENOENT")||problems.push({path:dir,code:"profile_invalid",message:`Profile directory unreadable: ${dir}`}),{profiles,problems}}let ids=names.filter(name=>name.endsWith(
961
1022
  ".json")&&!name.startsWith(".")).map(name=>name.slice(0,-5)).sort();for(let id2 of ids){let path=join13(dir,`${id2}.json`);if(!ID_PATTERN2.test(id2))problems.push({path,code:"profile_invalid",message:`Invalid profile id in file name: ${path}`});else if(isBuiltInId(id2))problems.push({path,code:"profile_id_reserved",message:`Profile id is reserved for a built-in: ${path}`});else try{profiles.push({profile:loadUser(id2),source:"user",path})}catch(error){record2(path,error)}}return{profiles,problems}}
962
- function withStoreLock(fn){ensureStoreDirs();let lock=lockPath(),token=randomUUID3(),fd;try{fd=openSync8(lock,"wx",384)}catch(error){throw isErrno2(error,"EEXIST")?new FlowProfileError("profile_locked",`Profile store is locked: ${lock}. Delete that lock file only if no other HUMAIN Code process is editing profiles.`,lock):error}let open=!0;try{writeFileSync2(fd,JSON.stringify({pid:process.pid,token})),open=!1,closeSync8(fd)}catch(error){if(open)try{closeSync8(fd)}catch{}try{unlinkSync2(lock)}catch{}
1023
+ function withStoreLock(fn){ensureStoreDirs();let lock=lockPath(),token=randomUUID4(),fd;try{fd=openSync8(lock,"wx",384)}catch(error){throw isErrno2(error,"EEXIST")?new FlowProfileError("profile_locked",`Profile store is locked: ${lock}. Delete that lock file only if no other HUMAIN Code process is editing profiles.`,lock):error}let open=!0;try{writeFileSync2(fd,JSON.stringify({pid:process.pid,token})),open=!1,closeSync8(fd)}catch(error){if(open)try{closeSync8(fd)}catch{}try{unlinkSync2(lock)}catch{}
963
1024
  throw error}try{return fn()}finally{release(lock,token)}}function release(lock,token){try{JSON.parse(readBoundedBytes(lock).toString("utf8"))?.token===token&&unlinkSync2(lock)}catch{}}function snapshot(id2){checkStoreDirs();let path=userPath(id2),bytes;try{bytes=readBoundedBytes(path)}catch(error){if(error instanceof FlowProfileError&&error.code==="profile_not_found")return null;throw error}return{profile:parseUser(id2,path,bytes),bytes}}function listBackups(id2){let dir=backupsDir(),names;try{names=
964
1025
  readdirSync4(dir)}catch(error){if(isErrno2(error,"ENOENT"))return[];throw error}let prefix=`${id2}.v`,found=[];for(let name of names){if(!name.startsWith(prefix))continue;let match=BACKUP_NAME.exec(name.slice(prefix.length));match&&found.push({name,version:Number(match[1]),stamp:Number(match[2])})}return found}function writeBackup(prefix,bytes){ensureSafeDir(backupsDir());for(let attempt=1;;attempt++){let path=join13(backupsDir(),`${prefix}.${Date.now()}-${shortId2()}.json`),fd;try{fd=openSync8(
965
1026
  path,"wx",384)}catch(error){if(isErrno2(error,"EEXIST")&&attempt<BACKUP_ATTEMPTS)continue;throw error}try{writeFileSync2(fd,bytes),fsyncSync2(fd)}catch(error){try{unlinkSync2(path)}catch{}throw error}finally{closeSync8(fd)}try{fsyncDir(backupsDir())}catch(error){try{unlinkSync2(path)}catch{}throw error}return}}let watermarkPath=id2=>join13(backupsDir(),`.${id2}${WATERMARK_SUFFIX}`);function readWatermark(id2){let path=watermarkPath(id2),bytes;try{bytes=readBoundedBytes(path)}catch(error){if(error instanceof
@@ -988,19 +1049,19 @@ constants5.O_RDONLY|constants5.O_NOFOLLOW);try{fsyncSync3(fd)}finally{closeSync9
988
1049
  `),fsyncSync3(fd)}finally{closeSync9(fd)}return linkSync2(tmp,path),unlinkSync3(tmp),syncDirectory2(dirname9(path)),{ok:!0}}catch(error){rmSync4(tmp,{force:!0});let code=error.code;return fail4(code==="EEXIST"?`${path} already exists; an admission is frozen once per run.`:`Cannot write ${path}: ${code??"error"}.`)}}function writeApprovedInputsFile(path,inputs){try{return writeFileSync3(path,`${approvedInputsBlock(inputs)}
989
1050
  `,{flag:"wx",mode:384}),{ok:!0}}catch(error){return fail4(`Cannot write ${path}: ${error.code??"error"}.`)}}function insideRoot(path,root){let rel=relative6(root,path);if(rel===""||rel===".."||rel.startsWith(`..${sep4}`)||isAbsolute7(rel))return!1;try{return realpathSync6(dirname9(path))===dirname9(join14(realpathSync6(root),rel))}catch{return!1}}function loadApprovedInputs(inputs,roots){let loaded=[],allowed=[roots.cwd,...roots.admissionDir!==void 0?[roots.admissionDir]:[]];for(let input of inputs){
990
1051
  let path=resolve6(roots.cwd,input.path),root=allowed.map(r=>resolve6(r)).find(r=>insideRoot(path,r));if(root===void 0)return fail4(`Approved input ${input.ref} must be a file inside the candidate repository or the admission file's directory, with no symlinked path component.`);let read=readRegularBounded(path,MAX_APPROVED_INPUT_BYTES,realpathSync6(root));if(!read.ok)return fail4(read.reason==="too-large"?`Approved input ${input.ref} is larger than ${MAX_APPROVED_INPUT_BYTES} bytes.`:`Approved in\
991
- put ${input.ref} cannot be read (${read.reason}): ${path}`);if(createHash8("sha256").update(read.bytes).digest("hex")!==input.sha256)return fail4(`Approved input ${input.ref} does not match its approved sha256.`);loaded.push({...input,content:read.bytes.toString("utf8")})}return Buffer.byteLength(`${approvedInputsBlock(loaded)}
1052
+ put ${input.ref} cannot be read (${read.reason}): ${path}`);if(createHash9("sha256").update(read.bytes).digest("hex")!==input.sha256)return fail4(`Approved input ${input.ref} does not match its approved sha256.`);loaded.push({...input,content:read.bytes.toString("utf8")})}return Buffer.byteLength(`${approvedInputsBlock(loaded)}
992
1053
  `,"utf8")>MAX_APPROVED_INPUT_BYTES?fail4(`Rendered approved inputs are larger than ${MAX_APPROVED_INPUT_BYTES} bytes.`):{ok:!0,inputs:loaded}}var APPROVED_INPUTS_HEADER="## Approved inputs (mandatory)";function approvedInputsBlock(inputs){return inputs.length===0?"":[APPROVED_INPUTS_HEADER,"Each input below was approved before this run started. Follow it; do not replace, shrink or contradict it.",...inputs.flatMap(input=>[flowInputMarker(input),input.content,`[/flow-input ${input.ref}]`])].join(
993
1054
  `
994
1055
  `)}function attachApprovedInputs(prompt,inputs){return inputs.length===0?prompt:`${prompt}
995
1056
 
996
- ${approvedInputsBlock(inputs)}`}function createEscalationGate(onEscalated,limit=1){let used=0;return{available:()=>used<limit,escalate:payload=>used>=limit?!1:(used++,onEscalated?.(payload),!0)}}function fail4(message){return{ok:!1,message}}import{createHash as createHash9}from"node:crypto";var SINK_FAILURE="flow telemetry sink failure",INVALID_OPTIONS="flow emitter options invalid",INVALID_EVENT="flow event invalid",REENTRANT="flow emit reentrant",MAX_IN_FLIGHT=1e4,MAX_FAILURES=32,SAFE_CODES=new Set(["ENOSPC","EIO","EBADF","EPIPE","EACCES","EPERM","EROFS","EDQUOT","EMFILE","ENFILE","ECONNRESET","ETIMEDOUT","ERR_STREAM_DESTROYED"]);function deepFreeze(value){if(value!==null&&typeof value=="object"&&!Object.isFrozen(value)){Object.freeze(value);for(let item of Object.values(value))deepFreeze(
1057
+ ${approvedInputsBlock(inputs)}`}function createEscalationGate(onEscalated,limit=1){let used=0;return{available:()=>used<limit,escalate:payload=>used>=limit?!1:(used++,onEscalated?.(payload),!0)}}function fail4(message){return{ok:!1,message}}import{createHash as createHash10}from"node:crypto";var SINK_FAILURE="flow telemetry sink failure",INVALID_OPTIONS="flow emitter options invalid",INVALID_EVENT="flow event invalid",REENTRANT="flow emit reentrant",MAX_IN_FLIGHT=1e4,MAX_FAILURES=32,SAFE_CODES=new Set(["ENOSPC","EIO","EBADF","EPIPE","EACCES","EPERM","EROFS","EDQUOT","EMFILE","ENFILE","ECONNRESET","ETIMEDOUT","ERR_STREAM_DESTROYED"]);function deepFreeze(value){if(value!==null&&typeof value=="object"&&!Object.isFrozen(value)){Object.freeze(value);for(let item of Object.values(value))deepFreeze(
997
1058
  item)}return value}function errorCode(error){try{let code=error?.code;return typeof code=="string"&&SAFE_CODES.has(code)?code:void 0}catch{return}}function createFlowEmitter(opts){let now=opts.now??Date.now,seq=opts.startSeq??1,profile;try{profile=deepFreeze(parseFlowEventV1({schema:"humain-flow-event",schemaVersion:1,eventId:"probe",runId:opts.runId,seq,ts:new Date(now()).toISOString(),profile:opts.profile,causes:[],kind:"budget",payload:{spentMicrousd:0,capMicrousd:0,pct:0,state:"ok"}}).profile)}catch{
998
- throw new Error(INVALID_OPTIONS)}let runId=opts.runId,idPrefix=createHash9("sha256").update(runId).digest("hex").slice(0,32),states=opts.sinks.map(sink=>({sink,pending:void 0,inFlight:0,dropped:!1})),failures=[],failureCount=0,emitting=!1,listeners=new Set,settling,record2=(sink,phase,error)=>{if(failureCount++,failures.length>=MAX_FAILURES)return;let code=errorCode(error);failures.push(code===void 0?{sink,phase}:{sink,phase,code})};function deliver(state,index,event2){if(state.dropped)return;if(state.
1059
+ throw new Error(INVALID_OPTIONS)}let runId=opts.runId,idPrefix=createHash10("sha256").update(runId).digest("hex").slice(0,32),states=opts.sinks.map(sink=>({sink,pending:void 0,inFlight:0,dropped:!1})),failures=[],failureCount=0,emitting=!1,listeners=new Set,settling,record2=(sink,phase,error)=>{if(failureCount++,failures.length>=MAX_FAILURES)return;let code=errorCode(error);failures.push(code===void 0?{sink,phase}:{sink,phase,code})};function deliver(state,index,event2){if(state.dropped)return;if(state.
999
1060
  inFlight>=MAX_IN_FLIGHT){state.dropped=!0,record2(index,"backpressure");return}let run=()=>{try{let result=state.sink.write(event2);return result?result.catch(error=>record2(index,"write",error)):void 0}catch(error){record2(index,"write",error);return}},done=settled=>{settled.then(()=>{state.inFlight--,state.pending===settled&&(state.pending=void 0)})};if(state.pending){state.inFlight++;let chained=state.pending.then(run);state.pending=chained,done(chained);return}let first=run();first&&(state.inFlight++,
1000
1061
  state.pending=first,done(first))}async function runSettle(){if(await Promise.all(states.map(state=>state.pending)),await Promise.all(states.map(async(state,index)=>{try{await state.pending,await state.sink.flush()}catch(error){record2(index,"flush",error)}})),failureCount===0)return;let collected=failures,total=failureCount;throw failures=[],failureCount=0,Object.assign(new Error(SINK_FAILURE),{failures:collected,failureCount:total})}return{emit(input){if(emitting)throw new Error(REENTRANT);emitting=
1001
1062
  !0;try{let event2;try{event2=deepFreeze(parseFlowEventV1({schema:"humain-flow-event",schemaVersion:1,eventId:`${idPrefix}.${seq}`,runId,seq,ts:new Date(now()).toISOString(),profile,causes:input.causes??[],kind:input.kind,payload:input.payload}))}catch{throw new Error(INVALID_EVENT)}seq++;let snapshot=[...listeners];for(let[index,state]of states.entries())deliver(state,index,event2);for(let listener of snapshot)try{let result=listener(event2);result&&result.catch(()=>{})}catch{}return event2}finally{
1002
- emitting=!1}},subscribe(listener){let entry=event2=>listener(event2);return listeners.add(entry),()=>{listeners.delete(entry)}},settle(){if(settling)return settling;let current2=runSettle().finally(()=>{settling=void 0});return settling=current2,current2}}}import{createHash as createHash10,randomBytes as randomBytes3}from"node:crypto";import{chmodSync as chmodSync2,closeSync as closeSync10,constants as constants6,fchmodSync,fstatSync as fstatSync10,fsyncSync as fsyncSync4,ftruncateSync,linkSync as linkSync3,lstatSync as lstatSync9,mkdirSync as mkdirSync4,openSync as openSync10,readdirSync as readdirSync5,readFileSync as readFileSync7,readSync as readSync10,renameSync as renameSync3,rmSync as rmSync5,unlinkSync as unlinkSync4,writeSync as writeSync3}from"node:fs";
1003
- import{basename as basename5,dirname as dirname10,join as join15}from"node:path";var ID_RE2=/^[a-z0-9][a-z0-9_.:-]{0,127}$/,NEWLINE=10,CR=13,NOFOLLOW=constants6.O_NOFOLLOW??0,POSIX=process.platform!=="win32",sha2563=data=>createHash10("sha256").update(data).digest("hex");function parseJson(line){try{return{json:JSON.parse(line.toString("utf8"))}}catch{return}}function validateLine(json,runId){try{let event2=parseFlowEventV1(json);return event2.runId===runId?event2:void 0}catch{return}}var LOCK_RE=/^(\d+) ([a-f0-9]{32})$/,BUSY="flow ledger busy";function isAlive(pid){try{return process.
1063
+ emitting=!1}},subscribe(listener){let entry=event2=>listener(event2);return listeners.add(entry),()=>{listeners.delete(entry)}},settle(){if(settling)return settling;let current2=runSettle().finally(()=>{settling=void 0});return settling=current2,current2}}}import{createHash as createHash11,randomBytes as randomBytes3}from"node:crypto";import{chmodSync as chmodSync2,closeSync as closeSync10,constants as constants6,fchmodSync,fstatSync as fstatSync10,fsyncSync as fsyncSync4,ftruncateSync,linkSync as linkSync3,lstatSync as lstatSync9,mkdirSync as mkdirSync4,openSync as openSync10,readdirSync as readdirSync5,readFileSync as readFileSync7,readSync as readSync10,renameSync as renameSync3,rmSync as rmSync5,unlinkSync as unlinkSync4,writeSync as writeSync3}from"node:fs";
1064
+ import{basename as basename5,dirname as dirname10,join as join15}from"node:path";var ID_RE2=/^[a-z0-9][a-z0-9_.:-]{0,127}$/,NEWLINE=10,CR=13,NOFOLLOW=constants6.O_NOFOLLOW??0,POSIX=process.platform!=="win32",sha2563=data=>createHash11("sha256").update(data).digest("hex");function parseJson(line){try{return{json:JSON.parse(line.toString("utf8"))}}catch{return}}function validateLine(json,runId){try{let event2=parseFlowEventV1(json);return event2.runId===runId?event2:void 0}catch{return}}var LOCK_RE=/^(\d+) ([a-f0-9]{32})$/,BUSY="flow ledger busy";function isAlive(pid){try{return process.
1004
1065
  kill(pid,0),!0}catch(error){return error.code!=="ESRCH"}}function readLock(path){let fd;try{fd=openSync10(path,constants6.O_RDONLY|NOFOLLOW|constants6.O_NONBLOCK)}catch(error){if(error.code==="ENOENT")return;throw new Error(BUSY)}try{let stat=fstatSync10(fd),uid=process.getuid?.();if(!stat.isFile()||uid!==void 0&&stat.uid!==uid)throw new Error(BUSY);let buf=Buffer.alloc(128),text2=buf.toString("utf8",0,readSync10(fd,buf,0,128,0));if(!LOCK_RE.test(text2))throw new Error(BUSY);return text2}catch{throw new Error(
1005
1066
  BUSY)}finally{closeSync10(fd)}}function acquireLock(lockPath){let nonce=randomBytes3(16).toString("hex"),mine=`${process.pid} ${nonce}`,tmp=`${lockPath}.${nonce}.tmp`,publish2=()=>{let fd=openSync10(tmp,constants6.O_CREAT|constants6.O_EXCL|constants6.O_WRONLY|NOFOLLOW,384);try{try{writeSync3(fd,mine)}finally{closeSync10(fd)}return linkSync3(tmp,lockPath),!0}catch(error){if(error.code==="EEXIST")return!1;throw error}finally{try{rmSync5(tmp,{force:!0})}catch{}}},scanStale=()=>{let prefix=`${basename5(
1006
1067
  lockPath)}.stale.`;for(let name of readdirSync5(dirname10(lockPath))){if(!name.startsWith(prefix))continue;let stalePath=join15(dirname10(lockPath),name),content2=readLock(stalePath);if(content2===void 0)continue;let pid=Number(content2.split(" ")[0]);if(pid===process.pid||isAlive(pid))throw new Error(BUSY);rmSync5(stalePath,{force:!0})}};if(scanStale(),publish2())return mine;scanStale();let held=readLock(lockPath);if(held===void 0){if(publish2())return mine;throw new Error(BUSY)}if(isAlive(Number(
@@ -1017,53 +1078,71 @@ cacheWrite:.25,tier:{inputTokensAbove:2e5,input:.4,output:1.8,cacheRead:.04,cach
1017
1078
  "gpt-5.3-codex-spark":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"claude-sonnet-4-20250514":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-sonnet-4-6":{input:3.3,output:16.5,cacheRead:.33,cacheWrite:4.125},"claude-opus-4-6":{input:5.5,output:27.5,cacheRead:.55,cacheWrite:6.875},"claude-opus-4-8":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-fable-5":{input:10,output:50,cacheRead:1,cacheWrite:12.5},"claude-fable-5-1":{input:10,output:50,cacheRead:.25,cacheWrite:12.5},
1018
1079
  "amazon.nova-pro":{input:.8,output:3.2,cacheRead:.2,cacheWrite:.8},"amazon.nova-2-lite":{input:.33,output:2.75,cacheRead:.0825,cacheWrite:.33},"minimax-m2":{input:.3,output:1.2,cacheRead:0,cacheWrite:0},"qwen3.8-27b":{input:.5,output:3,cacheRead:.1,cacheWrite:.625},"gpt-5-mini":{input:.25,output:2,cacheRead:.025,cacheWrite:.25},"minimax-m3":{input:.3,output:1.2,cacheRead:.3,cacheWrite:.3,tier:{inputTokensAbove:512e3,input:.6,output:2.4,cacheRead:.3,cacheWrite:.3}},"glm-5.2":{input:1.4,output:4.4,
1019
1080
  cacheRead:1.4,cacheWrite:1.4},"humain-m3-research-preview":{input:.3,output:1.2,cacheRead:.3,cacheWrite:.3},"gpt-6.1-sol":{input:2,output:10,cacheRead:.1,cacheWrite:2.5,tier:{inputTokensAbove:272e3,input:4,output:15,cacheRead:.2,cacheWrite:5}},"glm-5.3-flash":{input:.15,output:.5,cacheRead:.15,cacheWrite:.15},"grok-4.7":{input:2,output:6,cacheRead:2,cacheWrite:2,tier:{inputTokensAbove:2e5,input:4,output:12,cacheRead:2,cacheWrite:2}},"qwen3.8-flash-next":{input:.15,output:.47,cacheRead:.15,cacheWrite:.15},
1020
- "kimi-k3":{input:3,output:15,cacheRead:3,cacheWrite:3.75}},LIST_PRICE_PROVIDERS=new Set(["anthropic","openai","openai-codex","humain-node"]),BEDROCK_MARKUP=1.1,scale=(r,k)=>({...r,input:r.input*k,output:r.output*k,cacheRead:r.cacheRead*k,cacheWrite:r.cacheWrite*k});function priceFor(provider,model){let bedrock=provider==="amazon-bedrock";if(!bedrock&&!LIST_PRICE_PROVIDERS.has(provider))return;let id2=model.toLowerCase(),best;if(Object.hasOwn(PRICES,id2))best=id2;else for(let key of Object.keys(PRICES)){
1021
- let sep7=id2[id2.length-key.length-1];id2.endsWith(key)&&(sep7==="/"||sep7===".")&&(best===void 0||key.length>best.length)&&(best=key)}if(best===void 0)return;let price=PRICES[best];if(!bedrock||price==="free")return price;let prefix=id2.slice(0,id2.length-best.length);return prefix==="anthropic."||/^global\.[a-z0-9-]+\.$/.test(prefix)?price:{...scale(price,BEDROCK_MARKUP),...price.tier&&{tier:scale(price.tier,BEDROCK_MARKUP)}}}function estimateCostMicrousd(price,t){let tier=price.tier,r=tier!==
1022
- void 0&&t.input+t.cacheRead+t.cacheWrite>tier.inputTokensAbove?tier:price;if(![r.input,r.output,r.cacheRead,r.cacheWrite].every(x=>Number.isFinite(x)&&x>=0))throw new Error("flow usage invalid");let cost=t.input*r.input+t.output*r.output+t.cacheRead*r.cacheRead+t.cacheWrite*r.cacheWrite;if(!Number.isFinite(cost))throw new Error("flow usage invalid");return cost>0?Math.max(1,Math.round(cost)):0}function sanitize(error){let sanitized=new Error("flow rpc sink failure");try{let code=error?.code;typeof code=="string"&&SAFE_CODES.has(code)&&Object.assign(sanitized,{code})}catch{}return sanitized}function createRpcFrameSink(writeFrame){let last;return{write(event2){let snapshot;try{snapshot=deepFreeze(parseFlowEventV1(event2))}catch{throw new Error("flow event invalid")}let raw;try{raw=writeFrame({type:"flow_event",event:snapshot})}catch(error){throw sanitize(error)}if(!raw)return;let result=raw.
1023
- catch(error=>{throw sanitize(error)});last=result;let clear=()=>{last===result&&(last=void 0)};return result.then(clear,clear),result},async flush(){await last?.catch(()=>{})}}}import{createHash as createHash11}from"node:crypto";var INVALID="flow usage invalid";function requestIdFor(parts){return`r${createHash11("sha256").update(JSON.stringify(parts)).digest("hex").slice(0,32)}`}var count=value=>{if(!Number.isSafeInteger(value)||value<0)throw new Error(INVALID);return value};function toRequestUsage(input){let{usage}=input,inputTokens=count(usage.input),outputTokens=count(usage.output),cacheReadTokens=count(usage.cacheRead),cacheWriteTokens=count(usage.cacheWrite),total=usage.cost?.total;if(usage.cost!==void 0&&(typeof total!=
1024
- "number"||!Number.isFinite(total)||total<0))throw new Error(INVALID);let costMicrousd,basis;if(input.unknownCost)costMicrousd=null,basis="unknown";else if(total!==void 0&&total>0)costMicrousd=Math.max(1,Math.round(total*1e6)),basis=input.costBasis??"estimated";else if(!(inputTokens||outputTokens||cacheReadTokens||cacheWriteTokens))costMicrousd=0,basis="estimated";else{let price=(input.price??priceFor)(input.model.provider,input.model.model);price==="free"?(costMicrousd=0,basis="reported"):price!==
1025
- void 0?(costMicrousd=estimateCostMicrousd(price,{input:inputTokens,output:outputTokens,cacheRead:cacheReadTokens,cacheWrite:cacheWriteTokens}),basis="estimated"):(costMicrousd=null,basis="unknown")}if(costMicrousd!==null&&(!Number.isSafeInteger(costMicrousd)||costMicrousd<0))throw new Error(INVALID);return{kind:"request_usage",payload:{requestId:input.requestId,taskId:input.taskId,role:input.role,model:{provider:input.model.provider,model:input.model.model},inputTokens,outputTokens,cacheReadTokens,
1026
- cacheWriteTokens,costMicrousd,costBasis:basis,durationMs:Number.isFinite(input.durationMs)&&input.durationMs>=0?Math.round(input.durationMs):0}}}var MAX_SESSION_INPUT_BYTES=64*1024*1024,MAX_SESSION_LINE_BYTES=8*1024*1024,ID=/^[a-z0-9][a-z0-9_.:-]{0,127}$/,MODEL_ID=new RegExp(FLOW_MODEL_ID_PATTERN),isPlainObject=value=>typeof value=="object"&&value!==null&&!Array.isArray(value);function count2(value){return value===void 0?0:typeof value=="number"&&Number.isSafeInteger(value)&&value>=0?value:void 0}function parseHumainTerminalSession(text2,opts){if(Buffer.byteLength(text2)>MAX_SESSION_INPUT_BYTES)throw new Error("flow session ingest input \
1081
+ "kimi-k3":{input:3,output:15,cacheRead:3,cacheWrite:3.75},"claude-opus-4-7":{input:5.5,output:27.5,cacheRead:.55,cacheWrite:6.875},"deepseek-v4.1-flash":{input:.3,output:1.2,cacheRead:.3,cacheWrite:.3},"gemma-4-26b-a4b":{input:.13,output:.4,cacheRead:.13,cacheWrite:.13},"gemma-4-31b":{input:.14,output:.4,cacheRead:.14,cacheWrite:.14},"glm-5":{input:1,output:3.2,cacheRead:1,cacheWrite:1},"gpt-5-nano":{input:.05,output:.4,cacheRead:.05,cacheWrite:.05},"gpt-5.3-codex":{input:1.75,output:14,cacheRead:1.75,
1082
+ cacheWrite:1.75},"gpt-oss-120b":{input:.15,output:.6,cacheRead:.15,cacheWrite:.15},"gpt-oss-20b":{input:.07,output:.3,cacheRead:.07,cacheWrite:.07},"gpt-oss-safeguard-120b":{input:.15,output:.6,cacheRead:.15,cacheWrite:.15},"gpt-oss-safeguard-20b":{input:.07,output:.2,cacheRead:.07,cacheWrite:.07},"gpt-realtime-2":{input:4,output:24,cacheRead:4,cacheWrite:4},"grok-4.3":{input:1.25,output:2.5,cacheRead:1.25,cacheWrite:1.25},"grok-4.5":{input:2,output:6,cacheRead:2,cacheWrite:2},"grok-4.6":{input:2,
1083
+ output:6,cacheRead:2,cacheWrite:2},"grok-build-0.1":{input:1,output:2,cacheRead:1,cacheWrite:1},"humain-h3":{input:1,output:2,cacheRead:1,cacheWrite:1},"humain-m3-preview":{input:.3,output:1.2,cacheRead:.3,cacheWrite:.3},"kimi-k2.5":{input:.6,output:3,cacheRead:.6,cacheWrite:.6},"magistral-small-2509":{input:.5,output:1.5,cacheRead:.5,cacheWrite:.5},"minimax-m2.1":{input:.3,output:1.2,cacheRead:.3,cacheWrite:.3},"minimax-m2.5":{input:.3,output:1.2,cacheRead:.3,cacheWrite:.3},"minimax-m2.7":{input:.3,
1084
+ output:1.2,cacheRead:.3,cacheWrite:.3},"ministral-3-14b-instruct":{input:.2,output:.2,cacheRead:.2,cacheWrite:.2},"mistral-large-3-675b-instruct":{input:.5,output:1.5,cacheRead:.5,cacheWrite:.5},"nemotron-super-3-120b":{input:.15,output:.65,cacheRead:.15,cacheWrite:.15},"palmyra-vision-7b":{input:.15,output:.6,cacheRead:.15,cacheWrite:.15},"qwen3-235b-a22b-2507":{input:.22,output:.88,cacheRead:.22,cacheWrite:.22},"qwen3-32b":{input:.15,output:.6,cacheRead:.15,cacheWrite:.15},"qwen3-coder-30b-a3b\
1085
+ -instruct":{input:.15,output:.6,cacheRead:.15,cacheWrite:.15},"qwen3-coder-480b-a35b-instruct":{input:.45,output:1.8,cacheRead:.45,cacheWrite:.45},"qwen3-coder-next":{input:.5,output:1.2,cacheRead:.5,cacheWrite:.5},"qwen3-next-80b-a3b-instruct":{input:.15,output:1.2,cacheRead:.15,cacheWrite:.15},"qwen3-vl-235b-a22b-instruct":{input:.53,output:2.66,cacheRead:.53,cacheWrite:.53}},LIST_PRICE_PROVIDERS=new Set(["anthropic","openai","openai-codex","humain-node"]),BEDROCK_MARKUP=1.1,scale=(r,k)=>({...r,
1086
+ input:r.input*k,output:r.output*k,cacheRead:r.cacheRead*k,cacheWrite:r.cacheWrite*k}),HUMAIN_NODE_PRICES=Object.fromEntries(["claude-fable-5","claude-haiku-4-5","claude-opus-4-8","claude-opus-5","claude-sonnet-5"].map(id2=>[id2,scale(PRICES[id2],1.1)]));function priceFor(provider,model){let bedrock=provider==="amazon-bedrock";if(!bedrock&&!LIST_PRICE_PROVIDERS.has(provider))return;let id2=model.toLowerCase(),best;if(Object.hasOwn(PRICES,id2))best=id2;else for(let key of Object.keys(PRICES)){let sep7=id2[id2.
1087
+ length-key.length-1];id2.endsWith(key)&&(sep7==="/"||sep7===".")&&(best===void 0||key.length>best.length)&&(best=key)}if(best===void 0)return;if(provider==="humain-node"&&Object.hasOwn(HUMAIN_NODE_PRICES,best))return HUMAIN_NODE_PRICES[best];let price=PRICES[best];if(!bedrock||price==="free")return price;let prefix=id2.slice(0,id2.length-best.length);return prefix==="anthropic."||/^global\.[a-z0-9-]+\.$/.test(prefix)?price:{...scale(price,BEDROCK_MARKUP),...price.tier&&{tier:scale(price.tier,BEDROCK_MARKUP)}}}
1088
+ function exactPriceKey(provider,model){return LIST_PRICE_PROVIDERS.has(provider)&&Object.hasOwn(PRICES,model)?model:void 0}function estimateCostMicrousd(price,t){let tier=price.tier,r=tier!==void 0&&t.input+t.cacheRead+t.cacheWrite>tier.inputTokensAbove?tier:price;if(![r.input,r.output,r.cacheRead,r.cacheWrite].every(x=>Number.isFinite(x)&&x>=0))throw new Error("flow usage invalid");let cost=t.input*r.input+t.output*r.output+t.cacheRead*r.cacheRead+t.cacheWrite*r.cacheWrite;if(!Number.isFinite(cost))
1089
+ throw new Error("flow usage invalid");return cost>0?Math.max(1,Math.round(cost)):0}function sanitize(error){let sanitized=new Error("flow rpc sink failure");try{let code=error?.code;typeof code=="string"&&SAFE_CODES.has(code)&&Object.assign(sanitized,{code})}catch{}return sanitized}function createRpcFrameSink(writeFrame){let last;return{write(event2){let snapshot;try{snapshot=deepFreeze(parseFlowEventV1(event2))}catch{throw new Error("flow event invalid")}let raw;try{raw=writeFrame({type:"flow_event",event:snapshot})}catch(error){throw sanitize(error)}if(!raw)return;let result=raw.
1090
+ catch(error=>{throw sanitize(error)});last=result;let clear=()=>{last===result&&(last=void 0)};return result.then(clear,clear),result},async flush(){await last?.catch(()=>{})}}}import{createHash as createHash12}from"node:crypto";var INVALID="flow usage invalid";function requestIdFor(parts){return`r${createHash12("sha256").update(JSON.stringify(parts)).digest("hex").slice(0,32)}`}var count=value=>{if(!Number.isSafeInteger(value)||value<0)throw new Error(INVALID);return value};function toRequestUsage(input){let{usage}=input,inputTokens=count(usage.input),outputTokens=count(usage.output),cacheReadTokens=count(usage.cacheRead),cacheWriteTokens=count(usage.cacheWrite),total=usage.cost?.total;if(usage.cost!==void 0&&(typeof total!=
1091
+ "number"||!Number.isFinite(total)||total<0))throw new Error(INVALID);let costMicrousd,basis;if(input.unknownCost)costMicrousd=null,basis="unknown";else if(total!==void 0&&total>0){if(costMicrousd=Math.max(1,Math.round(total*1e6)),basis=input.costBasis??"estimated",input.model.provider==="humain-node"){let price=(input.price??priceFor)(input.model.provider,input.model.model);if(price!==void 0&&price!=="free"){let estimate=estimateCostMicrousd(price,{input:inputTokens,output:outputTokens,cacheRead:cacheReadTokens,
1092
+ cacheWrite:cacheWriteTokens});estimate>costMicrousd&&(costMicrousd=estimate,basis="estimated")}}}else if(!(inputTokens||outputTokens||cacheReadTokens||cacheWriteTokens))costMicrousd=0,basis="estimated";else{let price=(input.price??priceFor)(input.model.provider,input.model.model);price==="free"?(costMicrousd=0,basis="reported"):price!==void 0?(costMicrousd=estimateCostMicrousd(price,{input:inputTokens,output:outputTokens,cacheRead:cacheReadTokens,cacheWrite:cacheWriteTokens}),basis="estimated"):
1093
+ (costMicrousd=null,basis="unknown")}if(costMicrousd!==null&&(!Number.isSafeInteger(costMicrousd)||costMicrousd<0))throw new Error(INVALID);return{kind:"request_usage",payload:{requestId:input.requestId,taskId:input.taskId,role:input.role,model:{provider:input.model.provider,model:input.model.model},inputTokens,outputTokens,cacheReadTokens,cacheWriteTokens,costMicrousd,costBasis:basis,durationMs:Number.isFinite(input.durationMs)&&input.durationMs>=0?Math.round(input.durationMs):0}}}var MAX_SESSION_INPUT_BYTES=64*1024*1024,MAX_SESSION_LINE_BYTES=8*1024*1024,ID=/^[a-z0-9][a-z0-9_.:-]{0,127}$/,MODEL_ID=new RegExp(FLOW_MODEL_ID_PATTERN),isPlainObject=value=>typeof value=="object"&&value!==null&&!Array.isArray(value);function count2(value){return value===void 0?0:typeof value=="number"&&Number.isSafeInteger(value)&&value>=0?value:void 0}function parseHumainTerminalSession(text2,opts){if(Buffer.byteLength(text2)>MAX_SESSION_INPUT_BYTES)throw new Error("flow session ingest input \
1027
1094
  too large");let result={requests:[],skippedLines:0,invalidUsage:0,duplicates:0},seen=new Set,lines=text2.split(`
1028
1095
  `);(lines.pop()??"")!==""&&result.skippedLines++;let ordinal=0;for(let line of lines){if(!line.trim())continue;if(Buffer.byteLength(line)>MAX_SESSION_LINE_BYTES){result.skippedLines++;continue}let record2;try{record2=JSON.parse(line)}catch{result.skippedLines++;continue}if(!isPlainObject(record2)){result.skippedLines++;continue}let message=record2.message;if(!isPlainObject(message)||message.role!=="assistant"||message.usage===void 0)continue;let id2=typeof record2.id=="string"&&record2.id!==""?record2.
1029
1096
  id:void 0,key=id2??String(ordinal++);if(id2!==void 0&&seen.has(id2)){result.duplicates++;continue}let usage=message.usage;if(!isPlainObject(usage)){result.invalidUsage++;continue}let counts=[usage.input,usage.output,usage.cacheRead,usage.cacheWrite,usage.cacheWrite1h].map(count2),[input,output,cacheRead,cacheWrite,cacheWrite1h]=counts,{provider,model}=message;if(input===void 0||output===void 0||cacheRead===void 0||cacheWrite===void 0||cacheWrite1h===void 0||typeof provider!="string"||typeof model!=
1030
1097
  "string"||!ID.test(provider)||!MODEL_ID.test(model)){result.invalidUsage++;continue}let cost=usage.cost;if(cost!==void 0&&(!isPlainObject(cost)||typeof cost.total!="number"||!Number.isFinite(cost.total)||cost.total<0)){result.invalidUsage++;continue}let incomplete=![usage.input,usage.output,usage.cacheRead,usage.cacheWrite].every(v=>v!==void 0),total=cost===void 0?void 0:cost.total;try{result.requests.push(toRequestUsage({requestId:requestIdFor(id2===void 0?[opts.sessionKey,"ordinal",key]:[opts.
1031
1098
  sessionKey,id2]),taskId:opts.taskId,role:opts.role,model:{provider,model},usage:{input,output,cacheRead,cacheWrite:cacheWrite+cacheWrite1h,...total===void 0?{}:{cost:{total}}},durationMs:0,costBasis:"reported",...incomplete&&total===void 0?{unknownCost:!0}:{}})),id2!==void 0&&seen.add(id2)}catch{result.invalidUsage++}}return result}var BAD_OPTIONS="flow spend options invalid",BAD_REPLAY="flow spend replay invalid",OVERFLOW="flow spend overflow",CONFLICT="flow spend request conflict",RUN_MISMATCH="flow spend run mismatch",MAX=Number.MAX_SAFE_INTEGER,fingerprint=p=>JSON.stringify({taskId:p.taskId,role:p.role,provider:p.model.provider,model:p.model.model,inputTokens:p.inputTokens,outputTokens:p.outputTokens,cacheReadTokens:p.cacheReadTokens,cacheWriteTokens:p.cacheWriteTokens,costMicrousd:p.costMicrousd,costBasis:p.costBasis});
1032
- function createSpendLedger(opts){let{emitter,capMicrousd:cap,warnAtPct,runId,durable}=opts;if(typeof runId!="string"||!Number.isSafeInteger(cap)||cap<0||!Number.isInteger(warnAtPct)||warnAtPct<1||warnAtPct>99)throw new Error(BAD_OPTIONS);let seen=new Map,persistFailed=!1,totals=new Map,spent=0,unknown=0,duplicates=0,warnFired=!1,stopFired=!1,state=()=>stopFired||persistFailed||unknown>0||cap===0?"stop":warnFired?"warn":"ok";function preflight(p){let t=totals.get(p.role),tokens=p.inputTokens+p.outputTokens+
1099
+ function createSpendLedger(opts){let{emitter,capMicrousd:cap,warnAtPct,runId,durable}=opts;if(typeof runId!="string"||!Number.isSafeInteger(cap)||cap<0||!Number.isInteger(warnAtPct)||warnAtPct<1||warnAtPct>99)throw new Error(BAD_OPTIONS);let seen=new Map,persistFailed=!1,totals=new Map,spent=0,unknown=0,duplicates=0,warnFired=!1,stopFired=!1,state=()=>stopFired||persistFailed||cap===0?"stop":warnFired?"warn":"ok";function preflight(p){let t=totals.get(p.role),tokens=p.inputTokens+p.outputTokens+
1033
1100
  p.cacheReadTokens+p.cacheWriteTokens,cost=p.costMicrousd??0;if(tokens>MAX||spent+cost>MAX||(t?.tokens??0)+tokens>MAX||(t?.costMicrousd??0)+cost>MAX||(t?.durationMs??0)+p.durationMs>MAX||(t?.requests??0)+1>MAX)throw new Error(OVERFLOW)}function add(p){seen.set(p.requestId,fingerprint(p));let t=totals.get(p.role)??{tokens:0,costMicrousd:0,durationMs:0,requests:0};t.tokens+=p.inputTokens+p.outputTokens+p.cacheReadTokens+p.cacheWriteTokens,t.durationMs+=p.durationMs,t.requests++,p.costMicrousd===null?
1034
- unknown++:(t.costMicrousd+=p.costMicrousd,spent+=p.costMicrousd),totals.set(p.role,t)}let pct=()=>cap===0?100:Math.min(100,spent===0?0:spent*100/cap);function fire(next,cause){let value=pct();emitter.emit({kind:"budget",payload:{spentMicrousd:spent,capMicrousd:cap,pct:Math.min(100,Math.round(value*100)/100),state:next},causes:[cause]}),next==="warn"?warnFired=!0:stopFired=!0}function check2(cause){!warnFired&&!stopFired&&pct()>=warnAtPct&&fire("warn",cause),!stopFired&&spent>=cap&&fire("stop",cause),
1035
- !stopFired&&unknown>0&&fire("stop",cause)}let lastUsageEventId;if(opts.replay){for(let raw of opts.replay){let event2;try{event2=parseFlowEventV1(raw)}catch{throw new Error(BAD_REPLAY)}if(event2.runId!==runId)throw new Error(BAD_REPLAY);if(event2.kind==="request_usage"){let known=seen.get(event2.payload.requestId);if(known!==void 0){if(known!==fingerprint(event2.payload))throw new Error(BAD_REPLAY);continue}preflight(event2.payload),add(event2.payload),lastUsageEventId=event2.eventId}else event2.
1036
- kind==="budget"&&(event2.payload.state==="warn"?warnFired=!0:event2.payload.state==="stop"&&(stopFired=!0))}lastUsageEventId&&check2(lastUsageEventId)}return{record(input){let p=input.payload,known=seen.get(p.requestId);if(known!==void 0){if(known!==fingerprint(p))throw new Error(CONFLICT);return duplicates++,{recorded:!1,persisted:!persistFailed,state:state()}}preflight(p);let event2=emitter.emit(input);if(event2.runId!==runId)throw new Error(RUN_MISMATCH);let lost=durable!==void 0&&durable.lastSeq<
1037
- event2.seq;return lost&&(persistFailed=!0),add(p),check2(event2.eventId),{recorded:!0,persisted:!lost,state:state()}},get persistFailed(){return persistFailed},get spentMicrousd(){return spent},get state(){return state()},get unknownCostRequests(){return unknown},get duplicates(){return duplicates},has:requestId=>seen.has(requestId),totals(){let out={};for(let[role,t]of totals)out[role]={...t};return out}}}var FLOW_ID=/^[a-z0-9][a-z0-9_.:-]{0,127}$/;function flowEventModelRef(model){let slash=model.indexOf("/"),eventModel=(slash<0?model:model.slice(slash+1)).replaceAll("/",":"),validModel=FLOW_ID.test(eventModel)?eventModel:"unknown";if(slash<0)return{provider:"unknown",model:validModel};let provider=model.slice(0,slash);return FLOW_ID.test(provider)?{provider,model:validModel}:{provider:"unknown",model:"unknown"}}var FlowBudgetStopped=class extends Error{constructor(){super("Flow spend budget sto\
1038
- pped; no further dispatch admitted")}},telemetryTaskId=id2=>requestIdFor(["task",id2]);function usageOrUnknown(input){try{return toRequestUsage(input)}catch{return toRequestUsage({...input,model:{provider:"unknown",model:"unknown"},usage:{input:0,output:0,cacheRead:0,cacheWrite:0},unknownCost:!0})}}var validCounter=n=>n!==void 0&&Number.isSafeInteger(n)&&n>=0,completeCounters=u=>validCounter(u.input)&&validCounter(u.output)&&validCounter(u.cacheRead)&&validCounter(u.cacheWrite);function openRunTelemetry(opts){
1039
- let{admission}=opts,runId=basename6(opts.admittedRunDir);if(runId!==admission.runId)throw new Error("Flow telemetry admission identity mismatch");let durable=openJsonlLedgerSink({runsRoot:dirname11(opts.admittedRunDir),runId});try{let fd=openSync11(durable.path,constants7.O_RDONLY|constants7.O_NOFOLLOW|constants7.O_NONBLOCK),text2;try{let stat=fstatSync11(fd);if(!stat.isFile()||stat.nlink!==1||!fdIsConfinedFile(fd,durable.path,realpathSync7(opts.admittedRunDir)))throw new Error("Flow telemetry r\
1040
- eplay file invalid");text2=readFileSync8(fd,"utf8")}finally{closeSync11(fd)}let replay=text2.split(`
1101
+ unknown++:(t.costMicrousd+=p.costMicrousd,spent+=p.costMicrousd),totals.set(p.role,t)}let pct=()=>cap===0?100:Math.min(100,spent===0?0:spent*100/cap);function fire(next,cause){let value=pct();emitter.emit({kind:"budget",payload:{spentMicrousd:spent,capMicrousd:cap,pct:Math.min(100,Math.round(value*100)/100),state:next},causes:[cause]}),next==="warn"?warnFired=!0:stopFired=!0}function check2(cause){!warnFired&&!stopFired&&pct()>=warnAtPct&&fire("warn",cause),!stopFired&&spent>=cap&&fire("stop",cause)}
1102
+ let lastUsageEventId;if(opts.replay){for(let raw of opts.replay){let event2;try{event2=parseFlowEventV1(raw)}catch{throw new Error(BAD_REPLAY)}if(event2.runId!==runId)throw new Error(BAD_REPLAY);if(event2.kind==="request_usage"){let known=seen.get(event2.payload.requestId);if(known!==void 0){if(known!==fingerprint(event2.payload))throw new Error(BAD_REPLAY);continue}preflight(event2.payload),add(event2.payload),lastUsageEventId=event2.eventId}else event2.kind==="budget"&&(event2.payload.state===
1103
+ "warn"?warnFired=!0:event2.payload.state==="stop"&&(stopFired=!0))}lastUsageEventId&&check2(lastUsageEventId)}return{record(input){let p=input.payload,known=seen.get(p.requestId);if(known!==void 0){if(known!==fingerprint(p))throw new Error(CONFLICT);return duplicates++,{recorded:!1,persisted:!persistFailed,state:state()}}preflight(p);let event2=emitter.emit(input);if(event2.runId!==runId)throw new Error(RUN_MISMATCH);let lost=durable!==void 0&&durable.lastSeq<event2.seq;return lost&&(persistFailed=
1104
+ !0),add(p),check2(event2.eventId),{recorded:!0,persisted:!lost,state:state()}},get persistFailed(){return persistFailed},get spentMicrousd(){return spent},get state(){return state()},get unknownCostRequests(){return unknown},get duplicates(){return duplicates},has:requestId=>seen.has(requestId),totals(){let out={};for(let[role,t]of totals)out[role]={...t};return out}}}var FLOW_ID=/^[a-z0-9][a-z0-9_.:-]{0,127}$/;function flowEventModelRef(model){let slash=model.indexOf("/"),eventModel=(slash<0?model:model.slice(slash+1)).replaceAll("/",":"),validModel=FLOW_ID.test(eventModel)?eventModel:"unknown";if(slash<0)return{provider:"unknown",model:validModel};let provider=model.slice(0,slash);return FLOW_ID.test(provider)?{provider,model:validModel}:{provider:"unknown",model:"unknown"}}var FlowBudgetStopped=class extends Error{constructor(){super("Flow spend budget sto\
1105
+ pped; no further dispatch admitted")}},telemetryTaskId=id2=>requestIdFor(["task",id2]);function usageOrUnknown(input){try{return toRequestUsage(input)}catch{return toRequestUsage({...input,model:{provider:"unknown",model:"unknown"},usage:{input:0,output:0,cacheRead:0,cacheWrite:0},unknownCost:!0})}}function usageRowsOrUnknown(input){try{return[toRequestUsage(input)]}catch{let unknown=usageOrUnknown(input),total=input.usage.cost?.total;if(typeof total!="number"||!Number.isFinite(total)||total<=0)
1106
+ return[unknown];try{return[toRequestUsage({...input,usage:{input:validOrZero(input.usage.input),output:validOrZero(input.usage.output),cacheRead:validOrZero(input.usage.cacheRead),cacheWrite:validOrZero(input.usage.cacheWrite),cost:{total}}}),usageOrUnknown({...input,requestId:requestIdFor([input.requestId,"incomplete"])})]}catch{return[unknown]}}}var validCounter=n=>n!==void 0&&Number.isSafeInteger(n)&&n>=0,completeCounters=u=>validCounter(u.input)&&validCounter(u.output)&&validCounter(u.cacheRead)&&
1107
+ validCounter(u.cacheWrite),hasInvalidCounter=u=>[u.input,u.output,u.cacheRead,u.cacheWrite].some(v=>v!==void 0&&!validCounter(v)),validOrZero=n=>validCounter(n)?n:0;function openRunTelemetry(opts){let{admission}=opts,runId=basename6(opts.admittedRunDir);if(runId!==admission.runId)throw new Error("Flow telemetry admission identity mismatch");let durable=openJsonlLedgerSink({runsRoot:dirname11(opts.admittedRunDir),runId});try{let fd=openSync11(durable.path,constants7.O_RDONLY|constants7.O_NOFOLLOW|
1108
+ constants7.O_NONBLOCK),text2;try{let stat=fstatSync11(fd);if(!stat.isFile()||stat.nlink!==1||!fdIsConfinedFile(fd,durable.path,realpathSync7(opts.admittedRunDir)))throw new Error("Flow telemetry replay file invalid");text2=readFileSync8(fd,"utf8")}finally{closeSync11(fd)}let replay=text2.split(`
1041
1109
  `).filter(Boolean).map(line=>parseFlowEventV1(JSON.parse(line))),{id:id2,version,digest}=admission.profile;if(replay.some(event2=>event2.profile.id!==id2||event2.profile.version!==version||event2.profile.digest!==digest))throw new Error("Flow telemetry replay profile mismatch");let emitter=createFlowEmitter({runId,profile:{id:id2,version,digest},startSeq:durable.lastSeq+1,sinks:[durable,...opts.writeFrame?[createRpcFrameSink(opts.writeFrame)]:[]]}),ledger=createSpendLedger({emitter,runId,durable,
1042
1110
  capMicrousd:admission.spendCapMicrousd,warnAtPct:admission.profile.spend.warnAtPct,replay}),attempts=new Map;for(let event2 of replay)event2.kind==="attempt"&&attempts.set(event2.payload.taskId,Math.max(attempts.get(event2.payload.taskId)??0,event2.payload.attempt));let lastRoute=new Map,lastFailure=new Map;for(let event2 of replay)if(event2.kind==="route_bound")lastRoute.set(event2.payload.taskId,event2.payload.model);else if(event2.kind==="attempt"){let{state,taskId}=event2.payload;state==="st\
1043
1111
  arted"?lastFailure.delete(taskId):state==="failed"?lastFailure.set(taskId,event2.payload.failureClass):(state==="succeeded"||state==="cancelled")&&lastFailure.delete(taskId)}let listeners=new Set,failed=!1,dispatchStopped=!1,closing,settling,closed=!1,producers=new Set,stopped=()=>failed||ledger.state==="stop"||ledger.persistFailed,notifyStop=()=>{if(stopped())for(let listener of[...listeners])listener()},decidedSize,emit=input=>{if(closed)throw new Error("Flow telemetry closed");let event2=emitter.
1044
- emit(input);return input.kind==="size_decided"?decidedSize=input.payload.size:input.kind==="escalated"&&(decidedSize=input.payload.to),durable.lastSeq<event2.seq&&(failed=!0,notifyStop()),event2},assertCanDispatch=()=>{if(dispatchStopped)throw new Error("Orchestration cancelled");if(stopped()||closing)throw new FlowBudgetStopped},knownModels=new Set(Object.values(admission.profile.roles??{}).flatMap(role=>role?[role.primary,...role.backups].map(ref=>`${ref.provider}/${ref.model}`):[])),modelRef=flowEventModelRef,
1045
- knownModelRef=model=>{let matches=[...knownModels].filter(id3=>id3===model||id3.slice(id3.indexOf("/")+1)===model);return matches.length===1?modelRef(matches[0]):{provider:"unknown",model:"unknown"}},record2=input=>{try{let result=ledger.record(input);return result.persisted||console.warn("[orchestrator] Flow usage persistence failed; spend ledger incomplete"),result}catch(error){throw failed=!0,error}finally{notifyStop()}},recordExternalCostRows=rows=>{let num=v=>typeof v=="number"&&Number.isSafeInteger(
1046
- v)&&v>=0?v:0;for(let row of rows){let recordId=typeof row.record_id=="string"?row.record_id:void 0;if(!recordId)continue;let reported=typeof row.cost_usd=="number"&&Number.isFinite(row.cost_usd)?row.cost_usd:void 0,estimated=typeof row.estimatedCostUsd=="number"&&Number.isFinite(row.estimatedCostUsd)?row.estimatedCostUsd:void 0,cost=reported??estimated,countersValid=[row.input_tokens,row.output_tokens,row.cached_input_tokens,row.cache_write_tokens].every(v=>typeof v=="number"&&Number.isSafeInteger(
1047
- v)&&v>=0),unknownCost=typeof row.cost_source=="string"&&row.cost_source.startsWith("unknown")||cost===void 0&&!countersValid,base={taskId:telemetryTaskId(typeof row.task_id=="string"?row.task_id:recordId),role:"qa",model:typeof row.provider=="string"&&typeof row.model=="string"?modelRef(`${row.provider}/${row.model}`):{provider:"unknown",model:"unknown"},durationMs:num(row.duration_ms)},input=usageOrUnknown({...base,requestId:requestIdFor([runId,"live-qa",recordId]),usage:{input:num(row.input_tokens),
1048
- output:num(row.output_tokens),cacheRead:num(row.cached_input_tokens),cacheWrite:num(row.cache_write_tokens),...cost!==void 0?{cost:{total:cost}}:{}},costBasis:reported!==void 0?"reported":"estimated",...unknownCost?{unknownCost:!0}:{}});record2(input),row.cost_complete===!1&&record2(usageOrUnknown({...base,requestId:requestIdFor([runId,"live-qa",recordId,"incomplete"]),model:{provider:"unknown",model:"unknown"},usage:{input:0,output:0,cacheRead:0,cacheWrite:0},unknownCost:!0}))}},finalize=(outcome,failureClass,incomplete=!1)=>closing||
1049
- (emit({kind:"run_settled",payload:{outcome:stopped()?"budget_stopped":outcome,...stopped()?{failureClass:"budget_stop"}:failureClass?{failureClass}:{},settledCleanly:!incomplete&&!failed&&!ledger.persistFailed&&outcome!=="interrupted",retryOffer:outcome==="succeeded"&&!stopped()?[]:["flow","direct"],totals:ledger.totals()}}),closing=emitter.settle().finally(()=>{closed=!0,durable.close()}),closing);return replay.some(event2=>event2.kind==="run_started")||emit({kind:"run_started",payload:{mode:admission.
1050
- mode,surface:admission.surface,admissionDigest:admission.admissionDigest,inputsCount:admission.inputs.length,goalSha256:createHash12("sha256").update(opts.goal).digest("hex")}}),{emitter,ledger,ledgerPath:durable.path,emit,assertCanDispatch,stopDispatch(){dispatchStopped=!0},status(){let cap=admission.spendCapMicrousd;return{mode:admission.mode,size:decidedSize??admission.sizeOverride??"medium",budgetPct:cap>0?Math.min(100,ledger.spentMicrousd/cap*100):0,warnings:[...ledger.state==="stop"?["budg\
1051
- et_stop"]:[],...ledger.persistFailed?["internal"]:[]]}},recordExternalCostRows,registerProducer(){assertCanDispatch();let release,drained=new Promise(resolve11=>{release=resolve11});return producers.add(drained),()=>{producers.delete(drained),release()}},get stopped(){return stopped()},get healthy(){return!failed&&!ledger.persistFailed},beginAttempt(nativeTaskId,capability,model){assertCanDispatch();let taskId=telemetryTaskId(nativeTaskId),role=flowRoleForCapability(capability,admission.profile),
1052
- attempt=(attempts.get(taskId)??0)+1;attempts.set(taskId,attempt);let binding=admission.profile.roles?.[role],qualified=ref=>`${ref.provider}/${ref.model}`,bound2=binding?[binding.primary,...binding.backups].map(qualified):[],unique=[...knownModels].filter(id3=>id3.slice(id3.indexOf("/")+1)===model),canonical=knownModels.has(model)?model:bound2.find(id3=>id3.slice(id3.indexOf("/")+1)===model)??(unique.length===1?unique[0]:void 0);canonical===void 0&&knownModels.add(model);let dispatched=canonical??
1053
- model,route=knownModelRef(dispatched),prevRoute=lastRoute.get(taskId),fellBack=!!prevRoute&&(prevRoute.provider!==route.provider||prevRoute.model!==route.model);attempt>1&&prevRoute&&fellBack&&emit({kind:"fallback",payload:{taskId,role,from:prevRoute,to:route,reasonClass:lastFailure.get(taskId)??"provider_error"}}),lastFailure.delete(taskId),attempt>1&&emit({kind:"attempt",payload:{taskId,role,attempt,state:"retried"}});let started=emit({kind:"attempt",payload:{taskId,role,attempt,state:"started"}});
1054
- assertCanDispatch();let matches=ref=>dispatched===qualified(ref),backupAt=binding?binding.backups.findIndex(matches):-1,isBackup=!(!!binding&&matches(binding.primary))&&(backupAt>=0||fellBack);emit({kind:"route_bound",payload:{taskId,role,model:route,effort:binding?.effort??"medium",binding:isBackup?"backup":"primary",backupIndex:isBackup?Math.min(7,Math.max(0,backupAt)):0},causes:[started.eventId]}),lastRoute.set(taskId,route);let turnIndex=0,compactionIndex=0,nestedOrdinals=new Map,finished=!1,
1055
- nested=new Map;return{onStop(listener){return listeners.add(listener),stopped()&&listener(),()=>{listeners.delete(listener)}},recordUsage(usage,durationMs,servedModel=dispatched,source="assistant"){let requestId=requestIdFor([runId,taskId,String(attempt),...source==="compaction"?["compaction",String(compactionIndex++)]:[String(turnIndex++)]]),input=usageOrUnknown({requestId,taskId,role,model:knownModelRef(servedModel),usage,durationMs,costBasis:"reported"});return record2({...input,causes:[started.
1056
- eventId]})},recordNested(calls){for(let call of calls){let u=call.usage,terminalUnproven=call.exitCode!==void 0&&!call.costReported&&u.cost===void 0&&!completeCounters(u);if(!call.usageIncomplete&&!terminalUnproven&&(!call.model||!(u.turns||u.input||u.output||u.cacheRead||u.cacheWrite||u.cost)))continue;let ref=knownModelRef(call.model),ordinal=nestedOrdinals.get(call.key)??0,p=usageOrUnknown({requestId:requestIdFor([runId,taskId,String(attempt),"nested",call.key,call.agent??"",String(ordinal)]),
1057
- taskId,role:"worker",model:ref,durationMs:0,costBasis:"reported",...call.usageIncomplete||!call.costReported&&u.cost===void 0&&!completeCounters(u)?{unknownCost:!0}:{},usage:{input:u.input??0,output:u.output??0,cacheRead:u.cacheRead??0,cacheWrite:u.cacheWrite??0,...call.usageIncomplete||u.cost===void 0?{}:{cost:{total:u.cost}}}}).payload,prev=nested.get(call.key),delta={...p,inputTokens:Math.max(0,p.inputTokens-(prev?.inputTokens??0)),outputTokens:Math.max(0,p.outputTokens-(prev?.outputTokens??0)),
1058
- cacheReadTokens:Math.max(0,p.cacheReadTokens-(prev?.cacheReadTokens??0)),cacheWriteTokens:Math.max(0,p.cacheWriteTokens-(prev?.cacheWriteTokens??0)),costMicrousd:p.costMicrousd===null?null:Math.max(0,p.costMicrousd-(prev?.costMicrousd??0))};prev&&!delta.inputTokens&&!delta.outputTokens&&!delta.cacheReadTokens&&!delta.cacheWriteTokens&&!delta.costMicrousd&&(delta.costMicrousd!==null||prev.costMicrousd===null)||(nestedOrdinals.set(call.key,ordinal+1),nested.set(call.key,{...p,inputTokens:(prev?.inputTokens??
1059
- 0)+delta.inputTokens,outputTokens:(prev?.outputTokens??0)+delta.outputTokens,cacheReadTokens:(prev?.cacheReadTokens??0)+delta.cacheReadTokens,cacheWriteTokens:(prev?.cacheWriteTokens??0)+delta.cacheWriteTokens,costMicrousd:p.costMicrousd===null?null:(prev?.costMicrousd??0)+(delta.costMicrousd??0)}),record2({kind:"request_usage",payload:delta,causes:[started.eventId]}))}},finish(state,failureClass){finished||closed||(finished=!0,lastFailure.set(taskId,state==="failed"?failureClass:void 0),emit({kind:"\
1060
- attempt",payload:{taskId,role,attempt,state,...failureClass?{failureClass}:{}},causes:[started.eventId]}))}}},settle(outcome,failureClass,late){return dispatchStopped=!0,settling??=(async()=>{for(;producers.size;)await Promise.all(producers);let override=late?.();await finalize(override?.outcome??outcome,override?override.failureClass:failureClass)})(),settling},settleIncomplete(){return dispatchStopped=!0,finalize("interrupted","cancelled",!0)},flushSync:()=>{closed||durable.flushSync()}}}catch(error){
1061
- throw durable.close(),error}}import{createHash as createHash13}from"node:crypto";function roundHalfEven(x){let floor=Math.floor(x),diff=x-floor;return diff<.5?floor:diff>.5?floor+1:floor%2===0?floor:floor+1}function topologyFor(complexity,coupling=.5,parallelizable=.5){if(complexity<=3||coupling>=.8)return{depth:1,leads:0,workers:1,shape:"direct"};if(complexity<=6)return{depth:2,leads:1,workers:Math.max(1,Math.min(4,roundHalfEven(1+3*parallelizable))),shape:"single_lead"};let leads=Math.max(2,Math.min(4,roundHalfEven(2+2*parallelizable))),workers=Math.max(leads,Math.min(10,roundHalfEven(
1112
+ emit(input);return input.kind==="size_decided"?decidedSize=input.payload.size:input.kind==="escalated"&&(decidedSize=input.payload.to),durable.lastSeq<event2.seq&&(failed=!0,notifyStop()),event2},assertCanDispatch=()=>{if(dispatchStopped)throw new Error("Orchestration cancelled");if(stopped()||closing)throw new FlowBudgetStopped},maxNestedKeys=opts.maxNestedKeys??NESTED_KEY_LIMIT,knownModels=new Set(Object.values(admission.profile.roles??{}).flatMap(role=>role?[role.primary,...role.backups].map(
1113
+ ref=>`${ref.provider}/${ref.model}`):[])),modelRef=flowEventModelRef,knownModelRef=model=>{let matches=[...knownModels].filter(id3=>id3===model||id3.slice(id3.indexOf("/")+1)===model);return matches.length===1?modelRef(matches[0]):{provider:"unknown",model:"unknown"}},qualified=ref=>`${ref.provider}/${ref.model}`,resolveCanonical=(role,model,dispatched)=>{let dispatchedBare=dispatched?.includes("/")?dispatched.slice(dispatched.indexOf("/")+1):void 0,binding=admission.profile.roles?.[role],bound2=binding?
1114
+ [binding.primary,...binding.backups].map(qualified):[],unique=[...knownModels].filter(id3=>id3.slice(id3.indexOf("/")+1)===model);return knownModels.has(model)?model:dispatched!==void 0&&dispatchedBare===model&&knownModels.has(dispatched)?dispatched:bound2.find(id3=>id3.slice(id3.indexOf("/")+1)===model)??(unique.length===1?unique[0]:void 0)},resolveDispatched=(role,model)=>{let canonical=resolveCanonical(role,model);return canonical===void 0&&knownModels.add(model),canonical??model},nestedModelRef=(role,model)=>{
1115
+ let unknown={provider:"unknown",model:"unknown"};if(!model)return unknown;let canonical=resolveCanonical(role,model);if(canonical!==void 0)return modelRef(canonical);let ref=modelRef(model),key=exactPriceKey(ref.provider,ref.model);return key===void 0?unknown:{provider:ref.provider,model:key}},routeBinding=(role,dispatched,fellBack)=>{let binding=admission.profile.roles?.[role],matches=ref=>dispatched===qualified(ref),backupAt=binding?binding.backups.findIndex(matches):-1,isBackup=!(!!binding&&matches(
1116
+ binding.primary))&&(backupAt>=0||fellBack);return{effort:binding?.effort??"medium",binding:isBackup?"backup":"primary",backupIndex:isBackup?Math.min(7,Math.max(0,backupAt)):0}},nestedRoleFor=agent=>{try{return flowRoleForCapability(roleForAgentName(agent),admission.profile)}catch{return"worker"}},record2=input=>{try{let result=ledger.record(input);return result.persisted||console.warn("[orchestrator] Flow usage persistence failed; spend ledger incomplete"),result}catch(error){throw failed=!0,error}finally{
1117
+ notifyStop()}},recordExternalCostRows=rows=>{let num=v=>typeof v=="number"&&Number.isSafeInteger(v)&&v>=0?v:0;for(let row of rows){let recordId=typeof row.record_id=="string"?row.record_id:void 0;if(!recordId)continue;let reported=typeof row.cost_usd=="number"&&Number.isFinite(row.cost_usd)?row.cost_usd:void 0,estimated=typeof row.estimatedCostUsd=="number"&&Number.isFinite(row.estimatedCostUsd)?row.estimatedCostUsd:void 0,cost=reported??estimated,countersValid=[row.input_tokens,row.output_tokens,
1118
+ row.cached_input_tokens,row.cache_write_tokens].every(v=>typeof v=="number"&&Number.isSafeInteger(v)&&v>=0),unknownCost=typeof row.cost_source=="string"&&row.cost_source.startsWith("unknown")||cost===void 0&&!countersValid,base={taskId:telemetryTaskId(typeof row.task_id=="string"?row.task_id:recordId),role:"qa",model:typeof row.provider=="string"&&typeof row.model=="string"?modelRef(`${row.provider}/${row.model}`):{provider:"unknown",model:"unknown"},durationMs:num(row.duration_ms)},input=usageOrUnknown(
1119
+ {...base,requestId:requestIdFor([runId,"live-qa",recordId]),usage:{input:num(row.input_tokens),output:num(row.output_tokens),cacheRead:num(row.cached_input_tokens),cacheWrite:num(row.cache_write_tokens),...cost!==void 0?{cost:{total:cost}}:{}},costBasis:reported!==void 0?"reported":"estimated",...unknownCost?{unknownCost:!0}:{}});record2(input),row.cost_complete===!1&&record2(usageOrUnknown({...base,requestId:requestIdFor([runId,"live-qa",recordId,"incomplete"]),model:{provider:"unknown",model:"\
1120
+ unknown"},usage:{input:0,output:0,cacheRead:0,cacheWrite:0},unknownCost:!0}))}},finalize=(outcome,failureClass,incomplete=!1)=>closing||(emit({kind:"run_settled",payload:{outcome:stopped()?"budget_stopped":outcome,...stopped()?{failureClass:"budget_stop"}:failureClass?{failureClass}:{},settledCleanly:!incomplete&&!failed&&!ledger.persistFailed&&outcome!=="interrupted",retryOffer:outcome==="succeeded"&&!stopped()?[]:["flow","direct"],totals:ledger.totals()}}),closing=emitter.settle().finally(()=>{
1121
+ closed=!0,durable.close()}),closing);return replay.some(event2=>event2.kind==="run_started")||emit({kind:"run_started",payload:{mode:admission.mode,surface:admission.surface,admissionDigest:admission.admissionDigest,inputsCount:admission.inputs.length,goalSha256:createHash13("sha256").update(opts.goal).digest("hex")}}),{emitter,ledger,ledgerPath:durable.path,emit,assertCanDispatch,stopDispatch(){dispatchStopped=!0},status(){let cap=admission.spendCapMicrousd;return{mode:admission.mode,size:decidedSize??
1122
+ admission.sizeOverride??"medium",budgetPct:cap>0?Math.min(100,ledger.spentMicrousd/cap*100):0,warnings:[...ledger.state==="stop"?["budget_stop"]:[],...ledger.persistFailed?["internal"]:[]]}},recordExternalCostRows,registerProducer(){assertCanDispatch();let release,drained=new Promise(resolve11=>{release=resolve11});return producers.add(drained),()=>{producers.delete(drained),release()}},get stopped(){return stopped()},get healthy(){return!failed&&!ledger.persistFailed},beginAttempt(nativeTaskId,capability,model){
1123
+ assertCanDispatch();let taskId=telemetryTaskId(nativeTaskId),role=flowRoleForCapability(capability,admission.profile),attempt=(attempts.get(taskId)??0)+1;attempts.set(taskId,attempt);let dispatched=resolveDispatched(role,model),route=knownModelRef(dispatched),prevRoute=lastRoute.get(taskId),fellBack=!!prevRoute&&(prevRoute.provider!==route.provider||prevRoute.model!==route.model);attempt>1&&prevRoute&&fellBack&&emit({kind:"fallback",payload:{taskId,role,from:prevRoute,to:route,reasonClass:lastFailure.
1124
+ get(taskId)??"provider_error"}}),lastFailure.delete(taskId),attempt>1&&emit({kind:"attempt",payload:{taskId,role,attempt,state:"retried"}});let started=emit({kind:"attempt",payload:{taskId,role,attempt,state:"started"}});assertCanDispatch();let{effort:effort2,binding,backupIndex}=routeBinding(role,dispatched,fellBack);emit({kind:"route_bound",payload:{taskId,role,model:route,effort:effort2,binding,backupIndex},causes:[started.eventId]}),lastRoute.set(taskId,route);let turnIndex=0,compactionIndex=0,
1125
+ nestedOrdinals=new Map,finished=!1,ownUnknownCost=!1,nestedOverflow=!1,nestedHigh=new Map,nestedUnknown=new Map,nestedTasks=new Map,markNestedOverflow=()=>{nestedOverflow||(nestedOverflow=!0,record2({...usageOrUnknown({requestId:requestIdFor([runId,taskId,String(attempt),"nested-overflow"]),taskId,role,model:{provider:"unknown",model:"unknown"},durationMs:0,costBasis:"reported",usage:{input:0,output:0,cacheRead:0,cacheWrite:0},unknownCost:!0}),causes:[started.eventId]}))},emitVerdict=(n,verdict)=>{
1126
+ n.verdicted||n.role!=="reviewer"&&n.role!=="security_reviewer"||(n.verdicted=!0,emit({kind:"verdict",payload:{stage:"review",taskId:n.taskId,verdict:verdict==="PASS"?"pass":verdict==="FAIL"?"fail":"blocked",findingsCount:verdict==="PASS"?0:1},causes:[n.started.eventId]}))},nestedAttempt=(n,state,failureClass)=>{n.ended=!0,emit({kind:"attempt",payload:{taskId:n.taskId,role:n.role,attempt:n.attempt,state,...failureClass?{failureClass}:{}},causes:[n.started.eventId]})};return{get unknownCost(){return ownUnknownCost},
1127
+ get nestedOverflow(){return nestedOverflow},markNestedOverflow,onStop(listener){return listeners.add(listener),stopped()&&listener(),()=>{listeners.delete(listener)}},recordUsage(usage,durationMs,servedModel=dispatched,source="assistant"){let requestId=requestIdFor([runId,taskId,String(attempt),...source==="compaction"?["compaction",String(compactionIndex++)]:[String(turnIndex++)]]),inputs=usageRowsOrUnknown({requestId,taskId,role,model:knownModelRef(resolveCanonical(role,servedModel,dispatched)??
1128
+ servedModel),usage,durationMs,costBasis:"reported"});return inputs.some(input=>input.payload.costMicrousd===null)&&(ownUnknownCost=!0),inputs.map(input=>record2({...input,causes:[started.eventId]})).at(-1)},recordNested(calls){for(let call of calls){let u=call.usage,terminalUnproven=call.terminal&&!call.costReported&&u.cost===void 0&&!completeCounters(u),hasUsage=!!(u.turns||u.input||u.output||u.cacheRead||u.cacheWrite||u.cost),hasRow=!!call.usageIncomplete||terminalUnproven||hasUsage;if(!hasRow&&
1129
+ !call.model&&!call.terminal)continue;if(!nestedTasks.has(call.key)&&nestedTasks.size>=maxNestedKeys){markNestedOverflow();continue}let nestedRole=nestedRoleFor(call.agent),ref=nestedModelRef(nestedRole,call.model),n=nestedTasks.get(call.key);if(!n){let nestedTaskId=telemetryTaskId(JSON.stringify([nativeTaskId,attempt,call.toolCallId,call.taskId])),callAttempt=call.attempt,nestedAttemptNo=callAttempt!==void 0&&Number.isSafeInteger(callAttempt)&&callAttempt>=1?callAttempt:1,nestedStarted=emit({kind:"\
1130
+ attempt",payload:{taskId:nestedTaskId,role:nestedRole,attempt:nestedAttemptNo,state:"started"},causes:[started.eventId]});emit({kind:"route_bound",payload:{taskId:nestedTaskId,role:nestedRole,model:ref,...routeBinding(nestedRole,ref.provider==="unknown"?"":qualified(ref),!1)},causes:[nestedStarted.eventId]}),n={taskId:nestedTaskId,role:nestedRole,attempt:nestedAttemptNo,started:nestedStarted,lastAt:call.startedAt,unknown:!1,ended:!1,verdicted:!1},nestedTasks.set(call.key,n)}if(hasRow){let ordinal=nestedOrdinals.
1131
+ get(call.key)??0,rowId=(...suffix)=>requestIdFor([runId,taskId,String(attempt),"nested",call.key,call.agent??"",...suffix]),lowerBound=u.cost!==void 0&&(!!call.usageIncomplete||hasInvalidCounter(u)),unknownEvidence=!!call.usageIncomplete&&u.cost===void 0||!call.costReported&&u.cost===void 0&&!completeCounters(u),p=usageOrUnknown({requestId:rowId(String(ordinal)),taskId:n.taskId,role:n.role,model:ref,durationMs:0,costBasis:"reported",...unknownEvidence?{unknownCost:!0}:{},usage:{input:unknownEvidence?
1132
+ u.input??0:validOrZero(u.input),output:unknownEvidence?u.output??0:validOrZero(u.output),cacheRead:unknownEvidence?u.cacheRead??0:validOrZero(u.cacheRead),cacheWrite:unknownEvidence?u.cacheWrite??0:validOrZero(u.cacheWrite),...u.cost===void 0||unknownEvidence?{}:{cost:{total:u.cost}}}}).payload,reportedMicro=u.cost!==void 0&&u.cost>0?Math.max(1,Math.round(u.cost*1e6)):0,high=nestedHigh.get(call.key)??{input:0,output:0,cacheRead:0,cacheWrite:0,cost:0,turns:0},flags=nestedUnknown.get(call.key)??{open:!1,
1133
+ marked:!1},delta={...p,inputTokens:Math.max(0,p.inputTokens-high.input),outputTokens:Math.max(0,p.outputTokens-high.output),cacheReadTokens:Math.max(0,p.cacheReadTokens-high.cacheRead),cacheWriteTokens:Math.max(0,p.cacheWriteTokens-high.cacheWrite),costMicrousd:p.costMicrousd===null?null:Math.max(0,reportedMicro-high.cost)},turnsNow=validCounter(u.turns)?u.turns:void 0,deltaTurns=turnsNow===void 0?void 0:Math.max(1,turnsNow-high.turns),deltaPrice=(provider,model2)=>{let price=priceFor(provider,model2);
1134
+ if(price===void 0||price==="free"||!price.tier)return price;let turns=deltaTurns??1,sum=delta.inputTokens+delta.cacheReadTokens+delta.cacheWriteTokens;return turns===1||sum/turns>price.tier.inputTokensAbove?price:{...price,tier:void 0}},moved=!!delta.inputTokens||!!delta.outputTokens||!!delta.cacheReadTokens||!!delta.cacheWriteTokens||!!delta.costMicrousd,bookRow=payload=>{nestedOrdinals.set(call.key,(nestedOrdinals.get(call.key)??0)+1),nestedHigh.set(call.key,{input:high.input+delta.inputTokens,
1135
+ output:high.output+delta.outputTokens,cacheRead:high.cacheRead+delta.cacheReadTokens,cacheWrite:high.cacheWrite+delta.cacheWriteTokens,cost:Math.max(high.cost,reportedMicro),turns:Math.max(high.turns,turnsNow??0)});let at=call.endedAt??call.updatedAt,durationMs=at!==void 0&&n.lastAt!==void 0?Math.max(0,Math.round(at-n.lastAt)):0;at!==void 0&&(n.lastAt=at),record2({kind:"request_usage",payload:{...payload,durationMs},causes:[started.eventId]})};if(p.costMicrousd!==null){if(moved||!nestedHigh.has(
1136
+ call.key)){let known=usageOrUnknown({requestId:p.requestId,taskId:n.taskId,role:n.role,model:ref,durationMs:0,costBasis:"reported",price:deltaPrice,usage:{input:delta.inputTokens,output:delta.outputTokens,cacheRead:delta.cacheReadTokens,cacheWrite:delta.cacheWriteTokens,...u.cost===void 0?{}:{cost:{total:(delta.costMicrousd??0)/1e6}}}});bookRow(known.payload)}flags.open=!1,lowerBound&&!flags.marked&&(flags.marked=!0,n.unknown=!0,record2(usageOrUnknown({requestId:rowId("incomplete"),taskId:n.taskId,
1137
+ role:n.role,model:{provider:"unknown",model:"unknown"},durationMs:0,costBasis:"reported",usage:{input:0,output:0,cacheRead:0,cacheWrite:0},unknownCost:!0})))}else n.unknown=!0,flags.open||(flags.open=!0,bookRow(delta));nestedUnknown.set(call.key,flags)}if(call.terminal&&!n.ended){let ok2=!!call.succeeded&&call.stopReason!=="error"&&call.stopReason!=="aborted";n.unknown?nestedAttempt(n,"failed","config_invalid"):ok2?nestedAttempt(n,"succeeded"):nestedAttempt(n,"failed",/time-?out|timed out/i.test(
1138
+ call.stopReason??"")?"timeout":"provider_error")}call.reviewVerdict!==void 0&&emitVerdict(n,call.reviewVerdict)}},finish(state,failureClass){if(!(finished||closed)){finished=!0,(ownUnknownCost||nestedOverflow)&&state!=="cancelled"&&(state="failed",failureClass="config_invalid");for(let n of nestedTasks.values())n.ended||(state==="cancelled"?nestedAttempt(n,"cancelled"):nestedAttempt(n,"failed",failureClass??"internal")),emitVerdict(n,"INVALID");lastFailure.set(taskId,state==="failed"?failureClass:
1139
+ void 0),emit({kind:"attempt",payload:{taskId,role,attempt,state,...failureClass?{failureClass}:{}},causes:[started.eventId]})}}}},settle(outcome,failureClass,late){return dispatchStopped=!0,settling??=(async()=>{for(;producers.size;)await Promise.all(producers);let override=late?.();await finalize(override?.outcome??outcome,override?override.failureClass:failureClass)})(),settling},settleIncomplete(){return dispatchStopped=!0,finalize("interrupted","cancelled",!0)},flushSync:()=>{closed||durable.
1140
+ flushSync()}}}catch(error){throw durable.close(),error}}import{createHash as createHash14}from"node:crypto";function roundHalfEven(x){let floor=Math.floor(x),diff=x-floor;return diff<.5?floor:diff>.5?floor+1:floor%2===0?floor:floor+1}function topologyFor(complexity,coupling=.5,parallelizable=.5){if(complexity<=3||coupling>=.8)return{depth:1,leads:0,workers:1,shape:"direct"};if(complexity<=6)return{depth:2,leads:1,workers:Math.max(1,Math.min(4,roundHalfEven(1+3*parallelizable))),shape:"single_lead"};let leads=Math.max(2,Math.min(4,roundHalfEven(2+2*parallelizable))),workers=Math.max(leads,Math.min(10,roundHalfEven(
1062
1141
  complexity*parallelizable+leads)));return{depth:complexity<9?3:4,leads,workers,shape:"multi_lead"}}var QUALITY_FLOOR=.95,COST_AGGRESSIVENESS=.7,RISK_QUALITY_FLOOR_DELTA={low:0,medium:.02,high:.04,critical:.045},ROUTING_MODE="recommend",MAX_EFFORT="high",MAX_DEPTH=4,MIN_WORKERS=1,MAX_WORKERS=8,MIN_SAMPLES=12,EFFORTS=["minimal","low","standard","high","maximum"],DEFAULT_EFFORT={implementation_fast:"low",implementation_strong:"standard"},HIGH_RISK=new Set(["high","critical"]),DEFAULT_PACKAGES=[{capability:"implementation_fast",effort:"low",verification_depth:"targeted"},{capability:"implementati\
1063
1142
  on_fast",effort:"standard",verification_depth:"targeted"},{capability:"implementation_fast",effort:"high",verification_depth:"broad"},{capability:"implementation_strong",effort:"standard",verification_depth:"broad"},{capability:"implementation_strong",effort:"high",verification_depth:"full"}];function effortIndex(effort2){return EFFORTS.indexOf(effort2)}function roundTo(x,digits){return Number(x.toFixed(digits))}function defaultPackageFor(complexity,risk){let capability=HIGH_RISK.has(risk)||complexity>=
1064
1143
  8?"implementation_strong":"implementation_fast",effort2=DEFAULT_EFFORT[capability];risk==="critical"?effort2="high":complexity<=3&&risk==="low"&&(effort2="low"),effortIndex(effort2)>effortIndex(MAX_EFFORT)&&(effort2=MAX_EFFORT);let verification_depth=risk==="critical"?"full":risk==="high"||complexity>=7?"broad":"targeted";return{capability,effort:effort2,verification_depth}}function recommendPackage(qualityFloor){let smallPenalty=Math.max(0,MIN_SAMPLES-0)/MIN_SAMPLES*.025,best,feasibleBest;for(let pkg of DEFAULT_PACKAGES){
1065
1144
  let idx=effortIndex(pkg.effort),baseCost=pkg.capability==="implementation_fast"?.05:.12,cost=roundTo(baseCost*(1+idx*.18),6),priorQuality=pkg.capability==="implementation_fast"?.945:.975;priorQuality+=Math.max(0,idx-1)*.006;let adjusted=priorQuality-smallPenalty,candidate={pkg,cost,quality:roundTo(adjusted,4),feasible:adjusted>=qualityFloor};candidate.feasible&&(!feasibleBest||candidate.cost<feasibleBest.cost)&&(feasibleBest=candidate),(!best||candidate.quality>best.quality)&&(best=candidate)}return{
1066
- ...(feasibleBest??best).pkg}}function sortKeys(value){if(Array.isArray(value))return value.map(sortKeys);if(value!==null&&typeof value=="object"){let out={};for(let key of Object.keys(value).sort())out[key]=sortKeys(value[key]);return out}return value}function planIdFor(plan){return createHash13("sha256").update(JSON.stringify(sortKeys(plan)),"utf8").digest("hex").slice(0,16)}var MAX_ID_LENGTH=256;function requireFinite(name,value){if(typeof value!="number"||!Number.isFinite(value))throw new Error(
1145
+ ...(feasibleBest??best).pkg}}function sortKeys(value){if(Array.isArray(value))return value.map(sortKeys);if(value!==null&&typeof value=="object"){let out={};for(let key of Object.keys(value).sort())out[key]=sortKeys(value[key]);return out}return value}function planIdFor(plan){return createHash14("sha256").update(JSON.stringify(sortKeys(plan)),"utf8").digest("hex").slice(0,16)}var MAX_ID_LENGTH=256;function requireFinite(name,value){if(typeof value!="number"||!Number.isFinite(value))throw new Error(
1067
1146
  `${name} must be a finite number`)}function planRun(input){let{runId,taskClass,complexity,risk}=input;if(typeof runId!="string"||runId===""||runId.length>MAX_ID_LENGTH)throw new Error(`runId must be a non-empty string of at most ${MAX_ID_LENGTH} chars`);if(typeof taskClass!="string"||taskClass===""||taskClass.length>MAX_ID_LENGTH)throw new Error(`taskClass must be a non-empty string of at most ${MAX_ID_LENGTH} chars`);if(requireFinite("complexity",complexity),typeof risk!="string"||!Object.hasOwn(
1068
1147
  RISK_QUALITY_FLOOR_DELTA,risk))throw new Error(`unknown risk: ${String(risk)} (expected one of ${Object.keys(RISK_QUALITY_FLOOR_DELTA).join(", ")})`);input.qualityFloor!==void 0&&requireFinite("qualityFloor",input.qualityFloor),input.costAggressiveness!==void 0&&requireFinite("costAggressiveness",input.costAggressiveness);let qualityFloor=input.qualityFloor??Math.min(.999,Math.max(0,QUALITY_FLOOR+RISK_QUALITY_FLOOR_DELTA[risk])),costAggressiveness=input.costAggressiveness??COST_AGGRESSIVENESS,def=defaultPackageFor(
1069
1148
  complexity,risk),recommended=recommendPackage(qualityFloor),selected={...def},heuristic=topologyFor(complexity,.5,.5),topology={depth:Math.min(heuristic.depth,MAX_DEPTH),leads:heuristic.leads,workers:Math.max(MIN_WORKERS,Math.min(MAX_WORKERS,heuristic.workers)),shape:heuristic.shape},body={run_id:runId,task_class:taskClass,complexity,risk,topology,route:{selected,recommended,mode:ROUTING_MODE,history_sufficient:!1,explanation:{action:"recommended_only",cost_aggressiveness:costAggressiveness,quality_floor:qualityFloor,
@@ -1118,59 +1197,8 @@ return trimmed?EXPLICIT_THOROUGH_BUILD_RE.test(signalText)||HIGH_RISK_BUILD_RE.t
1118
1197
  let reasons=[];return EXPLICIT_THOROUGH_BUILD_RE.test(trimmed)&&reasons.push("explicit-thorough-request"),HIGH_RISK_BUILD_RE.test(trimmed)&&reasons.push("high-risk-domain-term"),trimmed.length>600&&imperativeTotal>=3&&reasons.push("long-multi-imperative"),reasons}function classifyPromptSignals(input){let trimmed=input.prompt.trim(),signalText=maskQuotedText(trimmed),imperativeTotal=imperativeCount(signalText),changeRequestKind=classifyChangeRequest(trimmed),laneResult=classifyLane({prompt:changeRequestKind==="bounded"?signalText:trimmed,mode:input.mode});return{lane:laneResult.lane,laneDecisionSource:laneResult.decisionSource,laneMatchedSignals:laneResult.matchedSignals,depth:resolvePromptExecutionDepth(trimmed,signalText,imperativeTotal,changeRequestKind),
1119
1198
  riskReasons:computeRiskReasons(signalText,imperativeTotal),policyId:UNIFIED_CLASSIFIER_POLICY_ID}}function sizeFromDepth(depth,thresholds,score){return thresholds!==void 0&&typeof score=="number"&&Number.isFinite(score)?score>=thresholds.largeAt?"large":score>=thresholds.mediumAt?"medium":"small":depth==="thorough"?"large":depth==="balanced"?"medium":"small"}var MAX_CLASSIFIED_PROMPT_CHARS=16e3,DEFAULT_SIZE_THRESHOLDS={mediumAt:3,largeAt:8},DEPTH_SCORE={quick:1,balanced:5,thorough:10};async function decideSize(input){let{prompt,profile,sizeOverride,triage}=input;if(profile.kind!=="flow")throw new Error("decideSize requires a flow profile");let policyId=profile.sizing?.classifierPolicyId;if(policyId!==void 0&&policyId!==UNIFIED_CLASSIFIER_POLICY_ID)throw new Error(`Flow profile classifier policy "${policyId}" does not match "${UNIFIED_CLASSIFIER_POLICY_ID}\
1120
1199
  "`);let thresholds=profile.sizing?.thresholds??DEFAULT_SIZE_THRESHOLDS,depth=classifyPromptSignals({prompt:prompt.slice(0,MAX_CLASSIFIED_PROMPT_CHARS)}).depth,ruleScore=DEPTH_SCORE[depth],rulesSize=sizeFromDepth(depth,thresholds,ruleScore),rules={size:rulesSize,source:"rules",ruleScore,thresholds,depth};if(sizeOverride!==void 0)return{...rules,size:sizeOverride,source:"override"};if(rulesSize==="small"||triage===void 0)return rules;let verdict;try{verdict=await triage(prompt)}catch{return rules}
1121
- if(verdict===null||!Number.isFinite(verdict.complexity))return rules;let complexity=Math.min(10,Math.max(1,Math.round(verdict.complexity)));return{size:sizeFromDepth(depth,thresholds,complexity),source:"triage",ruleScore:complexity,thresholds,depth,triage:{...verdict,complexity}}}function sizeToWorkflow(size){return{small:"checked",medium:"led",large:"full"}[size]}import{createHash as createHash14,randomUUID as randomUUID4}from"node:crypto";function flowControlFor(ctx,flowRunId,boundary){try{let host=boundary?.getHost?.(ctx);if(!boundary||!host||!["registerRun","registerChild","claimExecution","observe","markSettled","markDisconnected","observeClose"].every(key=>typeof host[key]=="function"))return;let discovered=host.getRootTarget?.();if(!discovered)return;let rootTarget=Object.freeze({...discovered}),handle=host.registerRun({flowRunId,rootTarget,runCancellation:boundary.runCancellation});return typeof handle=="object"&&handle!==null?
1122
- {host,rootTarget,handle}:void 0}catch{return}}function createFlowActivity(producer,flowRunId,retryHost,liveControl){let closed=!1,agents=new Map,attempts=new Map,retryAdmitted=(logicalTaskId,sourceAttemptId,requireClose=!1)=>{if(closed)return!1;let entry=agents.get(logicalTaskId),source=attempts.get(sourceAttemptId);if(entry===void 0||entry.attempts.at(-1)!==sourceAttemptId||source?.agentId!==entry.agentId||source.resultEventId===void 0||!(requireClose?source.processClosed:source.processTerminated))return!1;try{if(typeof retryHost?.getRetryAdmissionContext!=
1123
- "function")return!1;let context=retryHost.getRetryAdmissionContext({agentId:entry.agentId,sourceAttemptId});if(context===void 0)return!1;let prior=context.starts.find(event2=>event2.attemptId===sourceAttemptId),terminal=resolveDhEffectiveTerminals([...context.terminals,...context.amendments],context).get(sourceAttemptId);if(prior===void 0||prior.generationId!==producer.identity.generationId||prior.tenantScope.environmentId!==producer.identity.environmentId||prior.tenantScope.projectId!==producer.
1124
- identity.projectId||terminal?.event.eventId!==source.resultEventId)return!1;let attemptNumber=entry.attempts.length+1,attemptId=`att_${randomUUID4()}`;return assertDhRetryAdmission({...prior,eventId:`evt_${randomUUID4()}`,attemptId,attemptNumber,retryOfAttemptId:sourceAttemptId,payload:{schema:"dh.payload.attempt-lifecycle/1",phase:"started",agentId:entry.agentId,attemptId,attemptNumber,retryOfAttemptId:sourceAttemptId}},context),!0}catch{return!1}},blocked=new Map,declared=new Map,registerDependencies=(logicalTaskId,dependencies)=>{
1125
- !closed&&dependencies.length>0&&!declared.has(logicalTaskId)&&declared.set(logicalTaskId,[...dependencies])},sameList=(a,b)=>b!==void 0&&a.length===b.length&&a.every((v,i)=>v===b[i]),open=new Map,origins=new Map,cancels=new Map,localCancels=new Map,controls=new Map,extId=(namespace,value)=>({issuer:"flow",namespace,value,mappingVersion:1}),successors=new Map,succeededResults=logicalTaskId=>{for(;successors.has(logicalTaskId);)logicalTaskId=successors.get(logicalTaskId);let id2=agents.get(logicalTaskId)?.
1126
- attempts.at(-1),result=id2===void 0?void 0:attempts.get(id2);return new Set(result?.outcome==="succeeded"&&result.resultEventId!==void 0?[result.resultEventId]:[])},releaseBacked=input=>{let deps=declared.get(input.logicalTaskId)??[];if(input.causeEventId===void 0||deps.length===0||!sameList(deps,input.dependencies))return!1;let results=deps.map(succeededResults);return results.every(r=>r.size>0)&&results.some(r=>r.has(input.causeEventId))},decision=input=>{if(closed||input.decision==="dependenc\
1127
- y-released"&&!releaseBacked(input)||input.decision==="dependency-not-launched"&&input.dependencies&&(registerDependencies(input.logicalTaskId,input.dependencies),!sameList(input.dependencies,declared.get(input.logicalTaskId))))return;let id2=safeRecord({kind:"orchestration.decision",payload:{schema:"dh.payload.flow-decision/1",issuer:"flow",via:"flow",...input}});return id2!==void 0&&input.decision==="dependency-not-launched"&&input.dependencies&&blocked.set(input.logicalTaskId,{dependencies:input.
1128
- dependencies,decisionId:id2}),id2!==void 0&&input.decision==="dependency-released"&&blocked.delete(input.logicalTaskId),id2},rejectReasons=new Set(["not_authorized","scope_mismatch","stale_epoch","target_settled","not_eligible","policy_denied","budget_exhausted","workspace_unavailable"]),safeRecord=input=>{try{return producer.recordEvent(input)}catch{return}},recordCancelRequested=(agentId,attemptId,isProcessClosed,input)=>{if(isProcessClosed()||localCancels.get(attemptId)?.has(input.scope))return;
1129
- let id2=safeRecord({kind:"cancellation.requested",agentId,attemptId,payload:{schema:"dh.payload.local-cancellation/1",phase:"requested",state:"requested",scope:input.scope,requester:"local"}});if(id2!==void 0){let entry={scope:input.scope,applied:!1,confirmed:!1,isProcessClosed};cancels.has(attemptId)||cancels.set(attemptId,entry);let scopes=localCancels.get(attemptId)??new Map;scopes.set(input.scope,entry),localCancels.set(attemptId,scopes)}return id2},recordCancelObserved=(agentId,attemptId,input)=>{
1130
- let scopes=localCancels.get(attemptId),c=input.scope!==void 0&&scopes!==void 0?scopes.get(input.scope):(scopes?.size??0)>1?void 0:cancels.get(attemptId);if(c===void 0||c.isProcessClosed()||input.state==="requested")return;let confirm=input.state==="applied"&&input.terminationConfirmed===!0;if(input.state==="applied"&&(confirm?c.confirmed:c.applied))return;let reason=input.state==="rejected"?rejectReasons.has(input.reason??"")?input.reason:"not_eligible":void 0,state=input.state==="accepted"||input.
1131
- state==="delivered"?"unknown":input.state,diagnosticCode=input.reason==="cancelled_before_spawn"||input.reason==="logical_cancellation_observed"||input.reason==="process_closed_after_signal"?input.reason:void 0,id2=safeRecord({kind:"cancellation.outcome",agentId,attemptId,payload:{schema:"dh.payload.local-cancellation/1",phase:"observed",state,scope:c.scope,terminationConfirmed:confirm,requester:"local",...reason===void 0?{}:{reason},...diagnosticCode===void 0?{}:{diagnosticCode},...input.exitCode===
1132
- void 0?{}:{exitCode:input.exitCode}}});return id2!==void 0&&input.state==="applied"&&(confirm?c.confirmed=!0:c.applied=!0),id2};return{flowRunId,liveControl,prepareChildLaunch:async(attempt,launchId)=>{if(closed||typeof retryHost?.prepareChildLaunch!="function")throw new Error("binding_unavailable");let handle=await retryHost.prepareChildLaunch(attempt.agentId,attempt.attemptId,{launchId});if(closed||handle?.identity?.agentId!==attempt.agentId||handle.identity.attemptId!==attempt.attemptId)throw new Error(
1133
- "binding_unavailable");return handle},control:input=>{let signature=JSON.stringify([input.action,input.targetAgentId,input.targetAttemptId,input.scope,input.bindingEpoch,input.sessionEpoch,input.capabilityRevision]),known=controls.get(input.controlId);if(known!==void 0){if(known.signature===signature)return known.result;let result2={controlId:input.controlId,state:"rejected",terminationConfirmed:!1,reason:"conflicting_request"};return input.observe(result2),Promise.resolve(result2)}let result=(async()=>{
1134
- let done=(state,reason)=>{let o={controlId:input.controlId,state,terminationConfirmed:!1,...reason===void 0?{}:{reason}};return input.observe(o),o};if(input.action!=="cancel")return done("unsupported","action_not_supported");let target=attempts.get(input.targetAttemptId),live=cancels.get(input.targetAttemptId);return closed||target===void 0||target.agentId!==input.targetAgentId?done("rejected","not_eligible"):input.bindingEpoch!==producer.identity.bindingEpoch?done("rejected","stale_epoch"):target.
1135
- outcome!==void 0?done("rejected","target_settled"):live!==void 0?done("rejected","not_eligible"):done("unknown","host_claim_required")})();return controls.set(input.controlId,{signature,result}),result},decision,registerDependencies,resultEventId:attemptId=>attempts.get(attemptId)?.resultEventId,retrySourceAdmitted:retryAdmitted,retryOwnershipResolved:(attemptId,requireClose)=>{let source=attempts.get(attemptId);return!!(requireClose?source?.processClosed:source?.processTerminated)},scheduleRetry:({
1136
- logicalTaskId,mode,failedAttemptId,delayMs=0,requireClose=!1})=>{if(closed)return;let entry=agents.get(logicalTaskId),source=attempts.get(failedAttemptId);if(!retryAdmitted(logicalTaskId,failedAttemptId,requireClose))return;let nextAttemptNumber=entry.attempts.length+1,scheduled;try{scheduled=producer.recordRetryScheduled(entry.agentId,failedAttemptId,nextAttemptNumber,delayMs)}catch{return}if(scheduled!==void 0)return decision({decision:"retry",mode,provenance:{source:"internal"},logicalTaskId,
1137
- failedAttemptId,nextAttemptNumber,delayMs,causeEventId:source.resultEventId})},originEvent:({toolCallId,command,mode,logicalTaskId})=>{if(closed)return;let toolEvent;try{toolEvent=toolCallId===void 0?void 0:producer.eventIdForToolCall(toolCallId)}catch{toolEvent=void 0}if(toolEvent!==void 0)return toolEvent;let known=origins.get(logicalTaskId);if(known!==void 0)return known;let origin=decision({decision:"delegate",mode,provenance:{source:"command",command},logicalTaskId});return origin!==void 0&&
1138
- origins.set(logicalTaskId,origin),origin},launch:input=>{if(closed)throw new Error("flow activity is closed");let{logicalTaskId,retryOfAttemptId}=input;if(input.classification&&input.classification!=="retry"){let source=input.sourceAttemptId&&attempts.get(input.sourceAttemptId);if(!source||source.resultEventId===void 0||source.resultEventId!==input.causeEventId||retryOfAttemptId!==void 0||input.classification==="repair"&&source.outcome!=="succeeded")throw new Error("new work requires durable sou\
1139
- rce evidence and no retry link")}if(input.parentLogicalTaskId!==void 0&&!agents.has(input.parentLogicalTaskId))throw new Error("unknown parent logical task");let entry=agents.get(logicalTaskId);if(blocked.has(logicalTaskId))throw new Error("logical task is blocked by an unreleased dependency");if(entry!==void 0&&retryOfAttemptId===void 0)throw new Error("existing logical task requires a linked retry");if(retryOfAttemptId!==void 0){let source=attempts.get(retryOfAttemptId);if(!retryAdmitted(logicalTaskId,
1140
- retryOfAttemptId,input.retryReason==="control_retry")||input.sourceAttemptId!==void 0&&input.sourceAttemptId!==retryOfAttemptId||input.causeEventId!==void 0&&input.causeEventId!==source?.resultEventId)throw new Error("retry source is not the latest durably failed attempt of this logical task")}let base=[extId("flow.run",flowRunId),...input.planId===void 0?[]:[extId("flow.plan",input.planId)],extId("flow.task",input.nativeTaskId)];entry===void 0&&(entry={agentId:producer.beginChildAgent({logicalTaskId,
1141
- nativeLaunchId:input.nativeLaunchId,parentEventId:input.parentEventId,externalIds:[...base,...input.parentLogicalTaskId===void 0?[]:[extId("flow.parent-task",input.parentLogicalTaskId)]]}),attempts:[]},agents.set(logicalTaskId,entry));let{agentId}=entry,attemptNumber=entry.attempts.length+1,child=producer.beginChildAttempt(agentId,{attemptNumber,...retryOfAttemptId===void 0?{}:{retryOfAttemptId},externalIds:[...base,extId("flow.launch",input.nativeLaunchId)]});entry.attempts.push(child.attemptId);
1142
- let record2={agentId,logicalTaskId};input.classification==="repair"&&input.sourceAttemptId&&successors.set(attempts.get(input.sourceAttemptId).logicalTaskId,logicalTaskId),input.schedulerLogicalTaskId!==void 0&&input.schedulerLogicalTaskId!==logicalTaskId&&successors.set(input.schedulerLogicalTaskId,logicalTaskId),attempts.set(child.attemptId,record2);let finished=!1,processClosed=!1,finish=(outcome,failure)=>{if(finished)return record2.resultEventId;finished=!0,open.delete(child.attemptId);try{
1143
- record2.resultEventId=producer.finishChildAttempt(agentId,child.attemptId,outcome,failure)}catch{record2.resultEventId=void 0}return record2.outcome=record2.resultEventId===void 0?"unknown":outcome,record2.resultEventId===void 0&&(record2.captureFailure="finish_rejected"),record2.resultEventId};return open.set(child.attemptId,()=>finish("unknown",{code:"run_closed"})),{agentId,attemptId:child.attemptId,attemptNumber,env:child.env,correlation:()=>({agentId,attemptId:child.attemptId,attemptNumber,
1144
- logicalTaskId,outcome:record2.outcome??"unknown",...record2.resultEventId===void 0?{}:{resultEventId:record2.resultEventId},...record2.captureFailure===void 0?{}:{captureFailure:record2.captureFailure}}),finish,observeExit:()=>{record2.processTerminated=!0},observeClose:()=>{processClosed=!0,record2.processClosed=!0,record2.processTerminated=!0},cancelRequested:cancel=>recordCancelRequested(agentId,child.attemptId,()=>processClosed,cancel),cancelObserved:observation=>recordCancelObserved(agentId,
1145
- child.attemptId,observation)}},close:()=>{if(!closed){for(let settle of[...open.values()])settle();closed=!0;try{liveControl&&liveControl.host.markDisconnected(liveControl.handle)}catch{}}}}}function flowActivityFor(getProducer,ctx,flowRunId,getChildLaunchHost,controlBoundary){let producer;try{producer=getProducer?.(ctx)}catch{return}if(typeof producer?.recordEvent!="function")return;let retryHost;try{typeof getChildLaunchHost=="function"&&(retryHost=getChildLaunchHost(ctx))}catch{}if(typeof retryHost?.
1146
- prepareChildLaunch=="function")return createFlowActivity(producer,flowRunId,retryHost,flowControlFor(ctx,flowRunId,controlBoundary))}function traceOutcome(status){switch(status){case"completed":case"completed_after_process_error":return"succeeded";case"failed":case"timed_out":return"failed";case"cancelled":return"cancelled";default:return"unknown"}}function traceFailure(status,spawnFailed=!1){if(status==="timed_out")return{code:"timeout"};if(status==="failed")return{code:spawnFailed?"spawn_faile\
1147
- d":"child_failed"}}function recoveryTrace(base,source,retryReason,newUnit){let prior=source?.trace,classification=newUnit??(prior?.outcome==="succeeded"&&prior.resultEventId!==void 0?"repair":"retry"),{retryOfAttemptId:_link,causeEventId:_cause,sourceAttemptId:_source,sourceTerminationConfirmed:_termination,...rest}=base;return{...rest,logicalTaskId:classification==="retry"?prior?.logicalTaskId??base.logicalTaskId:base.logicalTaskId,classification,retryReason,...source?.processTerminationConfirmed===
1148
- void 0?{}:{sourceTerminationConfirmed:source.processTerminationConfirmed},...prior?{sourceAttemptId:prior.attemptId}:{},...prior?.resultEventId?{causeEventId:prior.resultEventId}:{},...classification==="retry"&&prior?{retryOfAttemptId:prior.attemptId}:{}}}var newLaunchId=()=>`launch-${randomUUID4()}`;function tryLaunch(activity,spec){try{let{retryDelayMs,...rest}=spec;if((spec.classification==="retry"||spec.retryReason&&spec.classification===void 0)&&spec.retryOfAttemptId===void 0)return;let logicalTaskId=spec.
1149
- logicalTaskId,parentEventId;if(spec.classification!==void 0&&spec.classification!=="retry"){if(spec.causeEventId===void 0||spec.retryOfAttemptId!==void 0)return;let unit=`${logicalTaskId}.${spec.classification}.${spec.causeEventId}`;logicalTaskId=unit.length<=128?unit:`${logicalTaskId.slice(0,64)}.${spec.classification}.${createHash14("sha256").update(unit).digest("hex").slice(0,32)}`,parentEventId=activity.decision({decision:"delegate",mode:spec.mode,provenance:{source:"command",command:"flow"},
1150
- logicalTaskId,causeEventId:spec.causeEventId,...spec.retryReason?{reasonCode:spec.retryReason}:{}})}else parentEventId=activity.originEvent({command:"flow",mode:spec.mode,logicalTaskId});return parentEventId===void 0||spec.retryOfAttemptId!==void 0&&activity.scheduleRetry({logicalTaskId,mode:spec.mode,failedAttemptId:spec.retryOfAttemptId,delayMs:retryDelayMs,requireClose:spec.retryReason==="control_retry"})===void 0?void 0:activity.launch({...rest,logicalTaskId,...logicalTaskId===spec.logicalTaskId?
1151
- {}:{schedulerLogicalTaskId:spec.logicalTaskId},parentEventId,nativeLaunchId:newLaunchId()})}catch{return}}var WORKFLOW_MODES=["off","observe","enforce"],WORKFLOW_MODE_ENV="HUMAIN_ORCHESTRATOR_WORKFLOW_MODE";function isWorkflowMode(value){return typeof value=="string"&&WORKFLOW_MODES.includes(value)}function resolveWorkflowMode(policy,env,setting){if(!policy)return{mode:"off",source:"absent",problems:["workflow_policy missing from method.json; workflow levels disabled"]};let problems=[],raw=env[WORKFLOW_MODE_ENV];if(raw!==void 0&&raw!==""){if(isWorkflowMode(raw))return{mode:raw,source:"env",problems};
1152
- problems.push(`Invalid ${WORKFLOW_MODE_ENV}=${raw}; ignoring it`)}if(setting!==void 0&&setting!==""){if(isWorkflowMode(setting))return{mode:setting,source:"setting",problems};problems.push(`Invalid orchestrator-profiles.json workflow_mode "${setting}"; using method.json default ${policy.mode}`)}return{mode:policy.mode,source:"method",problems}}function reportLines(stdout){let normalized=stdout.replace(/\r\n/g,`
1153
- `);return/[\r\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F-\u009F\u00A0\u2028\u2029\p{Cf}\p{M}]/u.test(normalized)||/`{3}|~{3}|<\/?[A-Za-z][A-Za-z0-9-]*(?:[ \t\n/][^<>]*)?>|<!|<\?|^[ \t]*(?:(?:>|[-+*]|\d+[.)])[ \t]*)*</m.test(normalized)?null:normalized.replace(/\n+$/,"").split(`
1154
- `)}function parseQaStatus(stdout){let machineLine=/^QA_STATUS_JSON: .*$/m.exec(stdout),prose=machineLine?stdout.slice(0,machineLine.index)+stdout.slice(machineLine.index+machineLine[0].length):stdout,invalid2=reason=>({valid:!1,reason,prose});if((stdout.match(/QA_STATUS_JSON/gi)??[]).length!==1)return invalid2("expected exactly one status token");let lines=reportLines(stdout);if(!lines)return invalid2("report contains prohibited characters, code fences or raw HTML");let lastLine=lines.at(-1)??"";
1155
- if(!lastLine.startsWith("QA_STATUS_JSON: "))return invalid2("status line must be the final line at column 0");if(lines.length<3||lines.at(-2)!==""||!lines.slice(0,-2).some(line=>line.trim().length>0))return invalid2("status line must follow a human report and an empty line");if(lastLine.length>16384)return invalid2("status line exceeds 16384 characters");let jsonText=lastLine.slice(16),parsed;try{parsed=JSON.parse(jsonText)}catch{return invalid2("invalid JSON")}if(JSON.stringify(parsed)!==jsonText)
1156
- return invalid2("JSON must be canonical compact form");let objectWithKeys=(value,keys)=>typeof value=="object"&&value!==null&&Object.getPrototypeOf(value)===Object.prototype&&Object.keys(value).length===keys.length&&keys.every((key,index)=>Object.keys(value)[index]===key);if(!objectWithKeys(parsed,["status","checks"]))return invalid2("expected exactly status and checks keys");let status=parsed.status;if(status!=="PASS"&&status!=="FAIL"&&status!=="BLOCKED")return invalid2("invalid overall status");
1157
- if(!Array.isArray(parsed.checks)||parsed.checks.length<1||parsed.checks.length>100)return invalid2("expected 1..100 checks");let checks=[],names=new Set;for(let check2 of parsed.checks){if(!objectWithKeys(check2,["name","status"]))return invalid2("expected exactly name and status check keys");if(typeof check2.name!="string"||!/^[A-Za-z0-9][A-Za-z0-9 ._:/@+-]{0,99}$/.test(check2.name))return invalid2("invalid check name");let name=check2.name.toLowerCase();if(names.has(name))return invalid2("dupl\
1158
- icate check name");if(names.add(name),check2.status!=="PASS"&&check2.status!=="FAIL"&&check2.status!=="BLOCKED"&&check2.status!=="SKIPPED")return invalid2("invalid check status");checks.push({name:check2.name,status:check2.status})}let failed=checks.some(check2=>check2.status==="FAIL"),blocked=checks.some(check2=>check2.status==="BLOCKED");return status==="PASS"&&(failed||blocked)||status==="FAIL"&&!failed||status==="BLOCKED"&&(!blocked||failed)?invalid2("overall status contradicts checks"):{valid:!0,
1159
- status,checks,prose}}function evidenceStatusFor(checks){return checks.length>0&&checks.some(c=>c.result==="pass"||c.result==="fail")?"verified":"unverified_checks_unavailable"}function qaVerificationOutcomeFor(runId,passed,quality,note,evidence={}){let checks=evidence.checks??[];return{run_id:runId,task_id:`${runId}-qa`,outcome:passed?"verified":"fail",verification_scope:"run",quality,note,checks,checks_unavailable:checks.filter(c=>c.result==="unavailable"||c.result==="skipped").map(c=>c.id),evidence_status:evidenceStatusFor(
1160
- checks),check_commands:null,check_commands_unavailable_reason:"QA structured status line has no command field; only check names and statuses are reported",tested_revision:evidence.tested_revision??null,tested_revision_dirty:evidence.tested_revision_dirty??null,tested_tree:evidence.tested_tree??null,tested_root:evidence.tested_root??null,...evidence.tested_revision_unavailable_reason?{tested_revision_unavailable_reason:evidence.tested_revision_unavailable_reason}:{},review_verdicts:evidence.review_verdicts??
1161
- [],artifacts:evidence.artifacts??[],outcome_finality:evidence.outcome_finality??"immediate"}}function reviewVerdict(stdout){let lines=reportLines(stdout);if(!lines)return"INVALID";let n=lines.length,verdict=lines[n-1];return n<2||verdict!=="PASS"&&verdict!=="FAIL"||lines[n-2]!=="## Verdict"||n>2&&lines[n-3]!==""||lines.filter(line=>/#{1,6}\s*verdict\b|\b(?:verdict|status)\s*:/i.test(line.normalize("NFKC"))).length!==1?"INVALID":verdict}async function runVerification(runId,planId,filesChanged,_ctx,run,captureOpts,deps,repoRoot,options={}){
1162
- if(filesChanged.length===0&&!options.requireChecks)return{passed:!0,skipped:!0,summary:"No files changed \u2014 verification skipped.",failedChecks:[]};let{attempt,reason="timeout",source,retryOfAttemptId}=options,taskId=attempt?`${runId}-qa-rerun-${attempt}`:`${runId}-qa`,qaTask=["Run the project verification suite for these changed files:","",...filesChanged.map(f=>`- \`${f}\``),"",...repoRootGuardrail(repoRoot,resolveVerificationPlan(repoRoot,filesChanged)),"",...options.goal?.trim()?[...qaGoalReference(
1163
- options.goal.trim()),""]:[],"Run typecheck, unit tests, integration tests, lint as applicable.",...QA_SCOPE_RULES,...attempt?["",`Re-run notice: ${reason==="provider_stall"?"a previous QA dispatch hit a provider_stall before any tool call":"a previous QA dispatch on this run timed out before it finished"}. This time, run ONLY scoped test commands targeting the files listed above (e.g. \`bun test <file>\`, or targeted pytest paths for the listed files) \u2014 never the full test suite if it is slow, and\
1164
- never a filesystem-wide search such as \`find /\` or \`find ~\`. Stay inside the repo root at all times.`]:[],"Write a human-readable report first. The whole report must not use code fences (``` or ~~~) or raw HTML/angle-bracket-leading lines, including inside quotes/lists or embedded in prose. Do not use invisible/format characters, combining marks, non-breaking spaces, C0/C1 controls (except tabs and LF/CRLF line endings), lone carriage returns or Unicode line/paragraph separators anywhere in\
1165
- the report; quote error excerpts with 4-space indentation instead. Inline single-backtick code and mid-line comparisons such as a < b are allowed. Then, as the very last line, preceded by an empty line, write exactly one line starting with `QA_STATUS_JSON: ` (one space). The JSON must be exactly as in the example form (no spaces, no escaped characters, keys in the order status, checks and name, status):",'QA_STATUS_JSON: {"status":"PASS","checks":[{"name":"typecheck","status":"PASS"},{"name":"u\
1166
- nit","status":"SKIPPED"}]}',"Use exactly the keys status and checks, and exactly name and status for each check. Include 1..100 entries, one per check run or skipped. Check names must be unique ignoring case, 1..100 characters, start with an ASCII letter or digit, and contain only ASCII letters, digits, spaces, . _ : / @ + -.","Check status must be PASS, FAIL, BLOCKED or SKIPPED. Overall status must be FAIL if any check FAILs, BLOCKED if a check could not run (and none failed), else PASS.","Neve\
1167
- r wrap the line in code fences, quotes or formatting; never write the token QA_STATUS_JSON anywhere else."].join(`
1168
- `),[qaResult]=await deps.dispatch([{capability:"qa_agent",stage:"qa",task:qaTask,taskId,trace:source||attempt?{...recoveryTrace({logicalTaskId:`${run?.session.recovery?.rootRunId??runId}-qa`,mode:"hierarchy"},source,attempt?"qa_rerun":"reverification",attempt?"retry":"verify"),...!source&&retryOfAttemptId?{retryOfAttemptId}:{}}:{logicalTaskId:`${run?.session.recovery?.rootRunId??runId}-qa`,mode:"hierarchy"}}]);if(!qaResult)return deps.recordOutcome(qaVerificationOutcomeFor(runId,!1,0,"QA dispatc\
1169
- h produced no result",{review_verdicts:[{role:"qa_agent",verdict:"fail"}],artifacts:[]})),{passed:!1,summary:"QA dispatch produced no result.",failedChecks:["qa-dispatch"]};if(await deps.captureDispatchCost({...captureOpts,planId},qaResult,run),qaResult.exitCode!==0&&qaResult.outcome!=="cancelled"&&qaResult.usage.tool_calls===0&&isTransientProviderError([qaResult.stderr,...qaResult.interruption?.nestedWorkers.map(w=>w.errorMessage??"")??[]].join(`
1170
- `)))return deps.recordOutcome({...qaVerificationOutcomeFor(runId,!1,0,"QA provider_stall before tool calls \u2014 no check verdict"),outcome:"unavailable"}),{passed:!1,providerStall:!0,summary:"QA provider_stall before tool calls \u2014 verdict not determined.",failedChecks:[],dispatch:qaResult};if(qaResult.outcome==="timed_out")return deps.recordOutcome(qaVerificationOutcomeFor(runId,!1,0,"QA dispatch timed out before completing.",{review_verdicts:[{role:"qa_agent",verdict:"timed_out"}],artifacts:[]})),
1171
- {passed:!1,timedOut:!0,summary:"QA dispatch timed out before completing \u2014 verdict not determined.",failedChecks:[],dispatch:qaResult};let out=qaResult.stdout,qa=parseQaStatus(out),passed=qaResult.exitCode===0&&qa.valid&&qa.status==="PASS",failedChecks=qa.valid?qa.status==="PASS"?[]:qa.checks.filter(check2=>check2.status==="FAIL"||check2.status==="BLOCKED").map(check2=>check2.name):["qa-status-invalid"];qa.valid&&qa.status!=="PASS"&&failedChecks.length===0&&failedChecks.push("verdict");let results={
1172
- PASS:"pass",FAIL:"fail",SKIPPED:"skipped",BLOCKED:"unavailable"},checks=qa.valid?qa.checks.map(check2=>({id:check2.name,result:results[check2.status]})):[],revision=testedRevisionFor(repoRoot),note=qa.valid?"":`[qa-status-invalid: ${qa.reason}]`,outcome=qaVerificationOutcomeFor(runId,passed,passed?.95:0,note,{checks,tested_revision:revision.revision,tested_revision_dirty:revision.dirty,tested_tree:revision.tree,tested_root:repoRoot,...revision.unavailable_reason?{tested_revision_unavailable_reason:revision.
1173
- unavailable_reason}:{},review_verdicts:[{role:"qa_agent",verdict:passed?"pass":"fail"}],artifacts:[]}),defer=passed&&options.deferPassOutcome===!0;return defer||deps.recordOutcome(outcome),{passed,summary:qa.prose.slice(0,500),failedChecks,checks,qaStatus:qa.valid?qa.status:"INVALID",dispatch:qaResult,...defer?{pendingOutcome:outcome}:{}}}var REPORT_CONTRACT=["When done, end your reply with:","## Files Changed","- <each repo-relative path you modified, or 'None'>","","STATUS: completed|partial|blocked"].join(`
1200
+ if(verdict===null||!Number.isFinite(verdict.complexity))return rules;let complexity=Math.min(10,Math.max(1,Math.round(verdict.complexity)));return{size:sizeFromDepth(depth,thresholds,complexity),source:"triage",ruleScore:complexity,thresholds,depth,triage:{...verdict,complexity}}}function sizeToWorkflow(size){return{small:"checked",medium:"led",large:"full"}[size]}var WORKFLOW_MODES=["off","observe","enforce"],WORKFLOW_MODE_ENV="HUMAIN_ORCHESTRATOR_WORKFLOW_MODE";function isWorkflowMode(value){return typeof value=="string"&&WORKFLOW_MODES.includes(value)}function resolveWorkflowMode(policy,env,setting){if(!policy)return{mode:"off",source:"absent",problems:["workflow_policy missing from method.json; workflow levels disabled"]};let problems=[],raw=env[WORKFLOW_MODE_ENV];if(raw!==void 0&&raw!==""){if(isWorkflowMode(raw))return{mode:raw,source:"env",problems};
1201
+ problems.push(`Invalid ${WORKFLOW_MODE_ENV}=${raw}; ignoring it`)}if(setting!==void 0&&setting!==""){if(isWorkflowMode(setting))return{mode:setting,source:"setting",problems};problems.push(`Invalid orchestrator-profiles.json workflow_mode "${setting}"; using method.json default ${policy.mode}`)}return{mode:policy.mode,source:"method",problems}}var REPORT_CONTRACT=["When done, end your reply with:","## Files Changed","- <each repo-relative path you modified, or 'None'>","","STATUS: completed|partial|blocked"].join(`
1174
1202
  `);function implementerTask(runId,goal,providedContext,level){return{taskId:`${runId}-impl`,trace:{logicalTaskId:`${runId}-impl`,mode:"single"},capability:"implementation_strong",stage:"implementation",task:[`Workflow level: ${level}. You are the only implementer; there is no lead or architect.`,"Make the smallest correct change for the goal. Run the repository's relevant tests before finishing.","Do not modify tests to make them pass unless the goal asks for it. Do not add dependencies.","","##\
1175
1203
  Goal",goal,...providedContext?["","## Provided context",providedContext]:[],"",REPORT_CONTRACT].join(`
1176
1204
  `)}}async function dispatchFlat(input,deps){let saved=Object.values(input.recovery?.snapshot.tasks??{}).find(t=>t.stage==="implementation"),task=saved?continuedTask(saved,`${input.runId}-impl`,input.recovery):implementerTask(input.runId,input.goal,input.providedContext,input.level);deps.recovery?.registerDispatchTasks([task]);let results=await deps.dispatch([task]);for(let r of results)await deps.captureDispatchCost(r);return{leadResults:results,workerResults:[],architectResult:void 0,skippedLeads:0,
@@ -1629,11 +1657,7 @@ done.receipt.state),done),error=>{throw stored.get(command.id)?.result===result&
1629
1657
  ueued"}}let targets=route.targets(),wanted=command.target,hit=wanted&&wanted!=="lead"?targets.find(t=>t.taskId===wanted.taskId):[...targets].reverse().find(t=>LEAD_ROLES.includes(t.role)),live=hit!==void 0&&await route.steer(hit.taskId,command.text);return route.emitMessage({messageId:command.messageId,disposition:live?"live":"rejected",targetRole:hit?.role??"lead",textSha256:createHash17("sha256").update(command.text).digest("hex"),textLength:command.text.length}),live?{...base,state:"applied",
1630
1658
  disposition:"live",deliveredTo:{taskId:hit.taskId,role:hit.role}}:refuse("config_invalid")}function createPauseGate(){let waiters=[],paused=!1;return{get paused(){return paused},pause(){paused=!0},resume(){paused=!1;let released=waiters;waiters=[];for(let release of released)release()},wait(){return paused?new Promise(resolve11=>waiters.push(resolve11)):Promise.resolve()}}}import{spawn as spawn5}from"node:child_process";import{closeSync as closeSync15,existsSync as existsSync9,lstatSync as lstatSync13,mkdtempSync as mkdtempSync5,openSync as openSync15,readFileSync as readFileSync12,rmSync as rmSync7,statSync as statSync7}from"node:fs";import{tmpdir as tmpdir6}from"node:os";import{basename as basename8,extname,join as join20}from"node:path";import{fileURLToPath as fileURLToPath4}from"node:url";var SLEEP_COMMAND_PATTERN=/\bsleep\s+\d/;function isObservablePollCall(toolName,args2){if(toolName==="orchestrator_status")return!0;if(toolName!=="bash")return!1;let command=commandOf(args2);return typeof command=="string"&&SLEEP_COMMAND_PATTERN.test(command)}function commandOf(args2){if(!(!args2||typeof args2!="object"))return args2.command}var DispatchTelemetryTracker=class{peakContextTokens=null;toolMix={};ownToolCalls=0;delegatedSubagentCalls=0;observablePollCalls=0;observeToolCall(toolName,args2){
1631
1659
  this.ownToolCalls+=1,this.toolMix[toolName]=(this.toolMix[toolName]??0)+1,toolName==="subagent"&&(this.delegatedSubagentCalls+=1),isObservablePollCall(toolName,args2)&&(this.observablePollCalls+=1)}observeContextTokens(totalTokens){typeof totalTokens!="number"||!Number.isFinite(totalTokens)||totalTokens<=0||(this.peakContextTokens===null||totalTokens>this.peakContextTokens)&&(this.peakContextTokens=totalTokens)}fields(turns,phase){return{turns,peak_context_tokens:this.peakContextTokens,context_token_semantics:"\
1632
- provider_total_tokens_per_message",own_tool_calls:this.ownToolCalls,own_tool_mix:{...this.toolMix},delegated_subagent_calls:this.delegatedSubagentCalls,observable_poll_calls:this.observablePollCalls,...phase?{dispatch_phase:phase}:{}}}};function resultsOf(event2){let results=(event2?.type==="tool_execution_update"?event2.partialResult:event2?.type==="tool_execution_end"?event2.result:void 0)?.details?.results;return Array.isArray(results)?results:void 0}function numberOr(value){return typeof value=="number"&&Number.isFinite(value)?value:void 0}function keyOf(callId,result,index){let taskId=typeof result?.taskId=="string"&&result.taskId?result.taskId:String(index),attempt=typeof result?.attempt=="number"&&Number.isFinite(result.
1633
- attempt)?result.attempt:0;return`${callId}:${taskId}:${attempt}`}function detailOf(callId,result,index){let rawCost=result?.usage?.cost,costReported=typeof rawCost=="number"&&Number.isFinite(rawCost)&&rawCost>=0,taskId=typeof result?.taskId=="string"&&result.taskId?result.taskId:String(index);return{key:keyOf(callId,result,index),toolCallId:callId,taskId,agent:typeof result?.agent=="string"?result.agent:void 0,model:typeof result?.model=="string"?result.model:void 0,usage:{input:numberOr(result?.
1634
- usage?.input),output:numberOr(result?.usage?.output),cacheRead:numberOr(result?.usage?.cacheRead),cacheWrite:numberOr(result?.usage?.cacheWrite),cost:costReported?rawCost:void 0,turns:numberOr(result?.usage?.turns)},...result?.usageIncomplete===!0?{usageIncomplete:!0}:{},costReported,exitCode:typeof result?.exitCode=="number"?result.exitCode:void 0,depth:typeof result?.depth=="number"?result.depth:void 0,attempt:typeof result?.attempt=="number"?result.attempt:void 0,parentTaskId:typeof result?.parentTaskId==
1635
- "string"?result.parentTaskId:void 0,stopReason:typeof result?.stopReason=="string"?result.stopReason:void 0}}var NestedCostTracker=class{latest=new Map;observe(event2){if(event2?.toolName!=="subagent")return!1;let results=resultsOf(event2);if(!results)return!1;let callId=typeof event2.toolCallId=="string"?event2.toolCallId:"?",changed=!1;return results.forEach((result,index)=>{let next=detailOf(callId,result,index),prev=this.latest.get(next.key);prev?.usageIncomplete&&(next.usageIncomplete=!0),next.
1636
- usage.cost!==void 0&&next.usage.cost!==prev?.usage.cost&&(changed=!0);let merged=next.usage.cost!==void 0?next:{...next,usage:{...next.usage,cost:prev?.usage.cost},costReported:next.costReported||(prev?.costReported??!1)};this.latest.set(next.key,merged)}),changed}total(){let sum=0;for(let d of this.latest.values())sum+=d.usage.cost??0;return sum}entries(){return Array.from(this.latest.values())}};function capFor(capability,policy=METHOD.rules.dispatch_spend_cap){return policy.usd_by_capability[capability]??policy.default_usd}var SpendCapTracker=class{fired=new Set;policy;constructor(policy=METHOD.rules.dispatch_spend_cap){this.policy=policy}get mode(){return this.policy.mode}canRetry(capability,costUsd){return this.policy.mode!=="enforce"||costUsd<capFor(capability,this.policy)}observe(taskId,capability,costUsd){return this.policy.mode==="off"||this.fired.has(taskId)||!(costUsd>capFor(capability,
1660
+ provider_total_tokens_per_message",own_tool_calls:this.ownToolCalls,own_tool_mix:{...this.toolMix},delegated_subagent_calls:this.delegatedSubagentCalls,observable_poll_calls:this.observablePollCalls,...phase?{dispatch_phase:phase}:{}}}};function capFor(capability,policy=METHOD.rules.dispatch_spend_cap){return policy.usd_by_capability[capability]??policy.default_usd}var SpendCapTracker=class{fired=new Set;policy;constructor(policy=METHOD.rules.dispatch_spend_cap){this.policy=policy}get mode(){return this.policy.mode}canRetry(capability,costUsd){return this.policy.mode!=="enforce"||costUsd<capFor(capability,this.policy)}observe(taskId,capability,costUsd){return this.policy.mode==="off"||this.fired.has(taskId)||!(costUsd>capFor(capability,
1637
1661
  this.policy))?"ok":(this.fired.add(taskId),this.policy.mode==="enforce"?"stop":"warn")}};var DEFAULT_DISPATCH_TIMEOUT_MS=1800*1e3,DEFAULT_LEAD_INACTIVITY_TIMEOUT_MS=1800*1e3,LOOP_WINDOW_SIZE=12,TOOL_CALL_RECORD_LIMIT=256,NESTED_WORKER_LIMIT=32,EVICTED_WORKER_ID_LIMIT=256,ORCHESTRATING_CAPABILITIES=new Set(["architect","technical_lead",...Object.values(METHOD.rules.lead_sizing.sizes)]);function configuredTimeout(env,name,fallback,notes){let raw=env[name];if(raw===void 0)return fallback;let parsed=Number(raw),value=Math.trunc(parsed);return!Number.isFinite(parsed)||parsed<=0||value<=0?
1638
1662
  (notes.push(`${name}=${JSON.stringify(raw)} is invalid; using the default ${fallback}ms.`),fallback):value}function resolveDispatchTimeoutPolicy(capability,env){let notes=[];return!capability||!ORCHESTRATING_CAPABILITIES.has(capability)?{mode:"leaf",inactivityMs:configuredTimeout(env,"HUMAIN_ORCHESTRATOR_DISPATCH_TIMEOUT_MS",DEFAULT_DISPATCH_TIMEOUT_MS,notes),notes}:{mode:"lead",inactivityMs:configuredTimeout(env,"HUMAIN_ORCHESTRATOR_LEAD_INACTIVITY_TIMEOUT_MS",DEFAULT_LEAD_INACTIVITY_TIMEOUT_MS,
1639
1663
  notes),notes}}function stableValue(value){if(Array.isArray(value))return value.map(stableValue);if(value&&typeof value=="object"){let record2=value;return Object.fromEntries(Object.keys(record2).sort().map(key=>[key,stableValue(record2[key])]))}return value}function stableJson(value){try{return JSON.stringify(stableValue(value))??"undefined"}catch{return"[unserializable]"}}function fingerprint2(toolName,args2){return`${toolName}:${stableJson(args2)}`.slice(0,2e3)}function textHash(text2){let hash2=2166136261;
@@ -1707,7 +1731,9 @@ ${stderrCapture.text()}`:""}`:`${stderrPrefix}${finalStderr}`:finalStderr;diagno
1707
1731
  `),finalText,finalMessageRaw:events.finalMessageRaw,rawStdout:stdoutCapture.text(),effectObservation:{complete:stdoutClosed&&!!proc?.stdout&&effectObservationComplete&&!launchRegistrationFailed,toolExecutionsStarted,nestedActivity},personaCanMutate,stderr,model:events.model,usage:Object.assign({},events.usage,{tool_calls:toolCalls}),costUsd:events.usage.cost,nestedCostUsd:nestedCost.total(),nestedCalls:nestedCost.entries(),costReported:events.costReported,durationMs:clock.now()-startedAt,stopReason:events.
1708
1732
  stopReason,outcome:outcome.status,processExitCode,timeoutReason,toolInFlight,interruption,nestedProviderErrors,postCompletionError:outcome.status==="completed_after_process_error"?outcome.note:void 0,postEndGraceExpired:postEndGraceExpired?!0:void 0,telemetry:telemetryTracker.fields(events.usage.turns)},processExited||processClosed||spawnFailed&&proc?.pid===void 0||terminationGraceExpired?deliverResult():timeoutTimer=clock.setTimeout(()=>{terminationGraceExpired=!0,deliverResult()},1e3)},recordFlowUsage=(event2,now)=>{
1709
1733
  let compaction=event2.type==="compaction_end";if(compaction?!event2.result?.usage:event2.type!=="message_end"||event2.message?.role!=="assistant")return;let usage=compaction?event2.result?.usage:event2.message?.usage;flowAttempt?.recordUsage({input:usage?.input??Number.NaN,output:usage?.output??Number.NaN,cacheRead:usage?.cacheRead??Number.NaN,cacheWrite:usage?.cacheWrite??Number.NaN,...usage?.cost===void 0?{}:{cost:{total:usage.cost?.total}}},now-lastUsageAt,compaction?events.model:event2.message?.
1710
- responseModel??event2.message?.model,compaction?"compaction":"assistant"),lastUsageAt=now},failStartup=reason=>{settled||(stderrCapture.append(`
1734
+ responseModel??event2.message?.model,compaction?"compaction":"assistant"),lastUsageAt=now},stopOnUnknownCost=(event2,stopReason)=>{!flowAttempt?.unknownCost||stopReason==="stop"||settled||cancelledByListener||(events.stopReason="unknown_cost",stderrCapture.append(`
1735
+ [orchestrator] unknown cost for ${event2.message?.responseModel??event2.message?.model??opts.model}; attempt stopped`),proc&&killProcessTree(proc),finish(125))},stopOnNestedOverflow=()=>{!nestedCost.overflowed||settled||cancelledByListener||(flowAttempt?.markNestedOverflow(),events.stopReason="nested_key_limit",stderrCapture.append(`
1736
+ [orchestrator] nested subagent key limit exceeded; attempt stopped`),proc&&killProcessTree(proc),finish(125))},failStartup=reason=>{settled||(stderrCapture.append(`
1711
1737
  [orchestrator] ${reason}`),proc&&killProcessTree(proc),finish(1))},processLine=line=>{let trimmed=line.trim();if(!trimmed)return;let event2;try{event2=JSON.parse(trimmed)}catch{effectObservationComplete=!1,stdoutCapture.append(`${trimmed}
1712
1738
  `);return}if(!event2||typeof event2!="object"||typeof event2.type!="string"){effectObservationComplete=!1,stdoutCapture.append(`${trimmed}
1713
1739
  `);return}let safe=redactUserText(event2);if(stdoutCapture.append(`${safe===event2?trimmed:JSON.stringify(safe)}
@@ -1715,14 +1741,15 @@ responseModel??event2.message?.model,compaction?"compaction":"assistant"),lastUs
1715
1741
  frame.success===!1&&(frame.command==="prompt"||frame.command==="parse"&&startupTimer!==void 0)&&failStartup(`child rejected the prompt: ${String(frame.error)}`);return}if(clearStartupTimer(),event2.type==="agent_start"&&(turnActive=!0,unregisterLive??=session?.registerLiveChild?.(taskId,text2=>new Promise(done=>{let stdin=proc?.stdin;if(settled||!turnActive||!stdin?.writable)return done(!1);let id2=`steer-${++steerSeq}`,timer=clock.setTimeout(()=>resolveSteer(id2,!1),RPC_STEER_ACK_TIMEOUT_MS);pendingSteers.
1716
1742
  set(id2,accepted=>{clock.clearTimeout(timer),done(accepted)}),stdin.write(rpcSteerLine(id2,text2),error=>{error&&resolveSteer(id2,!1)})}))),(event2.type==="agent_end"||event2.type==="agent_settled")&&(turnActive=!1,unregisterLive?.(),unregisterLive=void 0,rejectPendingSteers()),event2.type==="agent_settled"&&proc?.stdin?.end(),event2.type==="tool_execution_start"&&toolExecutionsStarted++,(event2.type==="tool_execution_end"||event2.type==="tool_execution_update")&&(effectObservationComplete=!1),diagnosticWriter?.
1717
1743
  append(eventsName,`${JSON.stringify(trimEventForLog(event2))}
1718
- `),settled){recordFlowUsage(event2,clock.now()),flowAttempt&&event2.toolName==="subagent"&&(nestedCost.observe(event2),flowAttempt.recordNested(nestedCost.entries()));return}let now=clock.now(),observation=cancelledByListener?void 0:progressTracker?.observe(event2,now);(observation?.nested?.length||event2.type.startsWith("subagent_")||event2.type.startsWith("worker_"))&&(nestedActivity=!0);for(let worker of observation?.nested??[])worker.errorMessage?nestedProviderErrors.length<128&&lastNestedProviderError.
1719
- get(worker.taskId)!==worker.errorMessage&&(lastNestedProviderError.set(worker.taskId,worker.errorMessage),nestedProviderErrors.push({message:worker.errorMessage.slice(0,16384),timestamp:new Date(now).toISOString()})):lastNestedProviderError.delete(worker.taskId);if(opts.evidenceAttemptId&&(event2.type==="task_evidence_guard_ready"&&event2.attemptId===opts.evidenceAttemptId&&(evidenceGuardReady=!0),(event2.type==="auto_retry_start"||event2.type==="auto_compaction_start")&&evidenceUnsupported.add(
1720
- event2.type),event2.type==="tool_execution_start"&&!["read","edit","write"].includes(String(event2.toolName))&&evidenceUnsupported.add("unsupported_tool"),event2.type==="message_end"&&event2.message?.role==="assistant")){let message=event2.message;evidenceModels.add(`${message.provider??"unknown"}/${message.responseModel??message.model??"unknown"}`);let expected=opts.model.slice(opts.model.indexOf("/")+1);(message.model!==expected||message.responseModel!==void 0&&message.responseModel!==expected||
1721
- message.provider!==opts.model.split("/")[0])&&evidenceUnsupported.add("model_identity_mismatch"),["input","output","cacheRead","cacheWrite"].every(key=>typeof message.usage?.[key]=="number"&&Number.isSafeInteger(message.usage[key])&&message.usage[key]>=0)||(evidenceUsageComplete=!1,evidenceUnsupported.add("incomplete_usage")),(message.stopReason==="error"||message.stopReason==="aborted")&&evidenceUnsupported.add("unsuccessful_turn")}let delta=events.absorb(event2);if(session?.onChildEvent(taskId,
1722
- event2,delta),delta.turn&&(assistantTurns+=1,delta.turn.errorMessage&&delta.turn.errorKind&&stderrCapture.append(`
1723
- [provider ${delta.turn.errorKind}] ${delta.turn.errorMessage}`),delta.turn.text&&assistantTexts.push(delta.turn.text),recordFlowUsage(event2,now),delta.turn.hadUsage)){let verdict=session?.spendCaps.observe(taskId,opts.capability??"unknown",spentSoFar()+(opts.spendCapOffsetUsd??0))??"ok";verdict!=="ok"&&handleSpendCap(verdict==="stop"&&delta.turn.stopReason==="stop"?"warn":verdict)}if(event2.type==="compaction_end"&&recordFlowUsage(event2,now),delta.turn?.hadUsage&&telemetryTracker.observeContextTokens(
1724
- event2.message?.usage?.totalTokens),event2.type==="tool_execution_start"&&typeof event2.toolName=="string"&&telemetryTracker.observeToolCall(event2.toolName,event2.args),nestedCost.observe(event2)){nestedActivity=!0,session?.setNestedCost(taskId,nestedCost.total());let verdict=session?.spendCaps.observe(taskId,opts.capability??"unknown",spentSoFar()+(opts.spendCapOffsetUsd??0))??"ok";verdict!=="ok"&&handleSpendCap(verdict)}if(event2.toolName==="subagent"&&flowAttempt?.recordNested(nestedCost.entries()),
1725
- flowTelemetry?.stopped&&POST_END_GRACE_CANCEL_TYPES.has(event2.type??"")&&handleSpendCap("stop"),delta.ended||delta.turn&&delta.turn.stopReason==="error")armPostEndGrace(postEndGraceMs);else if(event2.type==="auto_retry_start"){let retryError=event2.errorMessage;if(!cancelledByListener&&events.stopReason==="error"&&typeof retryError=="string"&&isQuotaError(retryError)){stderrCapture.append(`
1744
+ `),settled){recordFlowUsage(event2,clock.now()),flowAttempt&&event2.toolName==="subagent"&&(nestedCost.observe(event2,clock.now()),flowAttempt.recordNested(nestedCost.entries()));return}let now=clock.now(),observation=cancelledByListener?void 0:progressTracker?.observe(event2,now);(observation?.nested?.length||event2.type.startsWith("subagent_")||event2.type.startsWith("worker_"))&&(nestedActivity=!0);for(let worker of observation?.nested??[])worker.errorMessage?nestedProviderErrors.length<128&&
1745
+ lastNestedProviderError.get(worker.taskId)!==worker.errorMessage&&(lastNestedProviderError.set(worker.taskId,worker.errorMessage),nestedProviderErrors.push({message:worker.errorMessage.slice(0,16384),timestamp:new Date(now).toISOString()})):lastNestedProviderError.delete(worker.taskId);if(opts.evidenceAttemptId&&(event2.type==="task_evidence_guard_ready"&&event2.attemptId===opts.evidenceAttemptId&&(evidenceGuardReady=!0),(event2.type==="auto_retry_start"||event2.type==="auto_compaction_start")&&
1746
+ evidenceUnsupported.add(event2.type),event2.type==="tool_execution_start"&&!["read","edit","write"].includes(String(event2.toolName))&&evidenceUnsupported.add("unsupported_tool"),event2.type==="message_end"&&event2.message?.role==="assistant")){let message=event2.message;evidenceModels.add(`${message.provider??"unknown"}/${message.responseModel??message.model??"unknown"}`);let expected=opts.model.slice(opts.model.indexOf("/")+1);(message.model!==expected||message.responseModel!==void 0&&message.
1747
+ responseModel!==expected||message.provider!==opts.model.split("/")[0])&&evidenceUnsupported.add("model_identity_mismatch"),["input","output","cacheRead","cacheWrite"].every(key=>typeof message.usage?.[key]=="number"&&Number.isSafeInteger(message.usage[key])&&message.usage[key]>=0)||(evidenceUsageComplete=!1,evidenceUnsupported.add("incomplete_usage")),(message.stopReason==="error"||message.stopReason==="aborted")&&evidenceUnsupported.add("unsuccessful_turn")}let delta=events.absorb(event2);if(session?.
1748
+ onChildEvent(taskId,event2,delta),delta.turn&&(assistantTurns+=1,delta.turn.errorMessage&&delta.turn.errorKind&&stderrCapture.append(`
1749
+ [provider ${delta.turn.errorKind}] ${delta.turn.errorMessage}`),delta.turn.text&&assistantTexts.push(delta.turn.text),recordFlowUsage(event2,now),stopOnUnknownCost(event2,delta.turn.stopReason),delta.turn.hadUsage)){let verdict=session?.spendCaps.observe(taskId,opts.capability??"unknown",spentSoFar()+(opts.spendCapOffsetUsd??0))??"ok";verdict!=="ok"&&handleSpendCap(verdict==="stop"&&delta.turn.stopReason==="stop"?"warn":verdict)}if(event2.type==="compaction_end"&&(recordFlowUsage(event2,now),stopOnUnknownCost(
1750
+ event2,void 0)),delta.turn?.hadUsage&&telemetryTracker.observeContextTokens(event2.message?.usage?.totalTokens),event2.type==="tool_execution_start"&&typeof event2.toolName=="string"&&telemetryTracker.observeToolCall(event2.toolName,event2.args),nestedCost.observe(event2,now)){nestedActivity=!0,session?.setNestedCost(taskId,nestedCost.total());let verdict=session?.spendCaps.observe(taskId,opts.capability??"unknown",spentSoFar()+(opts.spendCapOffsetUsd??0))??"ok";verdict!=="ok"&&handleSpendCap(verdict)}
1751
+ if(event2.toolName==="subagent"&&flowAttempt?.recordNested(nestedCost.entries()),event2.toolName==="subagent"&&stopOnNestedOverflow(),flowTelemetry?.stopped&&POST_END_GRACE_CANCEL_TYPES.has(event2.type??"")&&handleSpendCap("stop"),delta.ended||delta.turn&&delta.turn.stopReason==="error")armPostEndGrace(postEndGraceMs);else if(event2.type==="auto_retry_start"){let retryError=event2.errorMessage;if(!cancelledByListener&&events.stopReason==="error"&&typeof retryError=="string"&&isQuotaError(retryError)){
1752
+ stderrCapture.append(`
1726
1753
  [provider error] ${retryError}`),stderrCapture.append(`
1727
1754
  [orchestrator] quota auto-retry stopped; handing provider failure to Flow`),finish(1),(proc?killProcessTree(proc):Promise.resolve(!1)).then(gone2=>{if(!(!gone2&&proc?.pid!==void 0)){processExited=!0;try{opts.traceAttempt?.observeExit?.()}catch{}deliverResult()}});return}let delayMsRaw=event2.delayMs;typeof delayMsRaw=="number"&&Number.isFinite(delayMsRaw)&&delayMsRaw>0&&armPostEndGrace(delayMsRaw+postEndGraceMs)}else event2.type&&POST_END_GRACE_CANCEL_TYPES.has(event2.type)&&cancelPostEndGrace();
1728
1755
  if(progressTracker&&observation){event2.type==="tool_execution_start"&&(toolCalls+=1);let check2=progressTracker.check(now);session?.recordProgress(taskId,observation,check2,now);for(let warning of check2.warnings)stderrCapture.append(`
@@ -1757,10 +1784,10 @@ bytes.copy(frame,4),await new Promise((done,fail5)=>pipe.write(frame,error=>erro
1757
1784
  [orchestrator] control registration failed: binding_unavailable`),finish(1)}}spawnFailed&&!settled&&finish(1),await Promise.resolve(),!settled&&!processClosed&&opts.onLaunchRegistered?.()})().catch(error=>{childOwnsProducer||releaseProducer?.(),flowAttempt?.finish("failed","internal"),reject(error)})})}function textOf(content){return typeof content=="string"?content:Array.isArray(content)?content.filter(b=>b&&typeof b=="object"&&b.type==="text").map(b=>asText(b.text)).join(`
1758
1785
  `):""}var LAST_ASSISTANT_TEXT_TAIL_LIMIT=32e3,LAST_ERROR_MESSAGE_HEAD_LIMIT=2e3,ID_LIMIT=200;function asId(v){return typeof v=="string"?v.slice(0,ID_LIMIT):typeof v=="number"&&Number.isFinite(v)?String(v).slice(0,ID_LIMIT):""}function asOptionalId(v){return typeof v=="string"?v.slice(0,ID_LIMIT):void 0}function asText(v){return typeof v=="string"?v:""}function lastAssistantTextOf(messages){if(!Array.isArray(messages))return"";for(let i=messages.length-1;i>=0;i--){let m=messages[i];if(m?.role==="\
1759
1786
  assistant"){let t=textOf(m.content).trim();if(t)return t}}return""}var firstLine=(s,max=160)=>(s.split(`
1760
- `)[0]??"").slice(0,max);function scanEvents(lines){let inFlight=new Set,pendingSubagent=new Map,subagentCalls=[],finishedWorkers=[],toolCalls=0,lastAssistantText="",lastErrorMessage;for(let line of lines){if(!line?.trim())continue;let e;try{e=JSON.parse(line)}catch{continue}if(!(!e||typeof e!="object")){if(e.type==="tool_execution_start"){let id2=asId(e.toolCallId);if(inFlight.add(id2),e.toolName==="subagent"){let args2=e.args&&typeof e.args=="object"?e.args:{},tasks=Array.isArray(args2.tasks)?args2.
1761
- tasks.map(t=>({id:asOptionalId(t?.id),hasRetry:typeof t?.onFailure?.retryWith?.model=="string"&&t.onFailure.retryWith.model.length>0})):Array.isArray(args2.chain)?args2.chain.map(()=>({id:void 0,hasRetry:!1})):[{id:void 0,hasRetry:!1}];subagentCalls.push({toolCallId:id2,tasks}),pendingSubagent.set(id2,tasks.map((t,i)=>t.id??`${id2}#${i}`))}}else if(e.type==="tool_execution_end"){let id2=asId(e.toolCallId);if(inFlight.delete(id2),toolCalls++,e.toolName==="subagent"){pendingSubagent.delete(id2);let results=Array.
1762
- isArray(e.result?.details?.results)?e.result.details.results:[];for(let r of results)finishedWorkers.push({id:asId(r?.taskId)||asId(r?.agent)||"?",ok:r?.exitCode===0,summary:firstLine(lastAssistantTextOf(r?.messages))})}}else if(e.type==="message_end"&&e.message?.role==="assistant"){let t=textOf(e.message.content).trim();t&&(lastAssistantText=t.slice(-LAST_ASSISTANT_TEXT_TAIL_LIMIT)),e.message.stopReason==="error"&&typeof e.message.errorMessage=="string"&&(lastErrorMessage=e.message.errorMessage.
1763
- slice(0,LAST_ERROR_MESSAGE_HEAD_LIMIT))}}}return{toolCalls,toolInFlight:inFlight.size>0,lastErrorMessage,lastAssistantText,finishedWorkers,unfinishedWorkers:[...pendingSubagent.values()].flat(),subagentCalls}}var ORCHESTRATOR_LINE_RE=/^\s*(\[orchestrator\]|⚠|taskId:|elapsedMs:|sinceLastProgressMs:|turns:|toolCalls:|repeatedToolCalls:|lastProgress:|nestedWorkers:|verified:|partialText:)/,INTERRUPTION_REPORT_START_RE=/^\s*UNVERIFIED PARTIAL WORK\b/;function providerText(stderr,errorMessage){let lines=[];for(let raw of stderr.split(/\r?\n/)){if(INTERRUPTION_REPORT_START_RE.test(raw))break;raw.trim()&&!ORCHESTRATOR_LINE_RE.test(raw)&&lines.push(raw)}return[...lines,errorMessage??""].filter(Boolean).join(
1787
+ `)[0]??"").slice(0,max);function scanEvents(lines){let inFlight=new Set,pendingSubagent=new Map,subagentCalls=[],finishedWorkers=[],toolCalls=0,lastAssistantText2="",lastErrorMessage;for(let line of lines){if(!line?.trim())continue;let e;try{e=JSON.parse(line)}catch{continue}if(!(!e||typeof e!="object")){if(e.type==="tool_execution_start"){let id2=asId(e.toolCallId);if(inFlight.add(id2),e.toolName==="subagent"){let args2=e.args&&typeof e.args=="object"?e.args:{},tasks=Array.isArray(args2.tasks)?
1788
+ args2.tasks.map(t=>({id:asOptionalId(t?.id),hasRetry:typeof t?.onFailure?.retryWith?.model=="string"&&t.onFailure.retryWith.model.length>0})):Array.isArray(args2.chain)?args2.chain.map(()=>({id:void 0,hasRetry:!1})):[{id:void 0,hasRetry:!1}];subagentCalls.push({toolCallId:id2,tasks}),pendingSubagent.set(id2,tasks.map((t,i)=>t.id??`${id2}#${i}`))}}else if(e.type==="tool_execution_end"){let id2=asId(e.toolCallId);if(inFlight.delete(id2),toolCalls++,e.toolName==="subagent"){pendingSubagent.delete(id2);
1789
+ let results=Array.isArray(e.result?.details?.results)?e.result.details.results:[];for(let r of results)finishedWorkers.push({id:asId(r?.taskId)||asId(r?.agent)||"?",ok:r?.exitCode===0,summary:firstLine(lastAssistantTextOf(r?.messages))})}}else if(e.type==="message_end"&&e.message?.role==="assistant"){let t=textOf(e.message.content).trim();t&&(lastAssistantText2=t.slice(-LAST_ASSISTANT_TEXT_TAIL_LIMIT)),e.message.stopReason==="error"&&typeof e.message.errorMessage=="string"&&(lastErrorMessage=e.message.
1790
+ errorMessage.slice(0,LAST_ERROR_MESSAGE_HEAD_LIMIT))}}}return{toolCalls,toolInFlight:inFlight.size>0,lastErrorMessage,lastAssistantText:lastAssistantText2,finishedWorkers,unfinishedWorkers:[...pendingSubagent.values()].flat(),subagentCalls}}var ORCHESTRATOR_LINE_RE=/^\s*(\[orchestrator\]|⚠|taskId:|elapsedMs:|sinceLastProgressMs:|turns:|toolCalls:|repeatedToolCalls:|lastProgress:|nestedWorkers:|verified:|partialText:)/,INTERRUPTION_REPORT_START_RE=/^\s*UNVERIFIED PARTIAL WORK\b/;function providerText(stderr,errorMessage){let lines=[];for(let raw of stderr.split(/\r?\n/)){if(INTERRUPTION_REPORT_START_RE.test(raw))break;raw.trim()&&!ORCHESTRATOR_LINE_RE.test(raw)&&lines.push(raw)}return[...lines,errorMessage??""].filter(Boolean).join(
1764
1791
  `
1765
1792
  `)}function attemptSignals(input){return{...input}}function attemptSignalsFromScan(attempt,scan,cancelled){return attemptSignals({exitCode:attempt.exitCode,outcome:attempt.outcome,stderr:attempt.stderr??"",errorMessage:scan.lastErrorMessage,stopReason:attempt.stopReason,timeoutReason:attempt.timeoutReason,toolInFlight:scan.toolInFlight,cancelled})}function classifyFailure(s){if(s.cancelled||s.outcome==="cancelled")return"cancelled";if(s.exitCode===0&&(s.outcome==="completed"||s.outcome==="comple\
1766
1793
  ted_after_process_error"))return"ok";if(s.stopReason==="spend_cap")return"task";let text2=providerText(s.stderr,s.errorMessage);return isQuotaError(text2)?s.outcome==="timed_out"?"task":"quota":isTransientProviderError(text2)?"transient":s.outcome==="timed_out"&&s.timeoutReason==="inactivity"&&!s.toolInFlight?"stall":"task"}function telemetryFailureClass(cls,timedOut){switch(cls){case"transient":return timedOut?"provider_stall":"transient";case"stall":return"provider_stall";case"ok":return"task";default:
@@ -1896,13 +1923,11 @@ reduce((sum,attempt)=>sum+attempt.durationMs,0),costReported:attempts.every(atte
1896
1923
  trace}:{},...r.captureFailure?{captureFailure:r.captureFailure}:{},model:r.model??input.model,exitCode:r.exitCode,stdout:r.stdout,finalMessageRaw:r.finalMessageRaw,stderr:r.exitCode===0?r.stderr:summarizeStderr(r.stderr||r.rawStdout,2e3)||"(no output)",usage:r.usage,durationMs:r.durationMs,costUsd:r.costUsd,...(r.nestedCostUsd??0)>0?{nestedCostUsd:r.nestedCostUsd}:{},costReported:r.costReported,stopReason:r.stopReason,outcome:r.outcome,processTerminationConfirmed:finalAttempt.processTerminationConfirmed,
1897
1924
  timeoutReason:r.timeoutReason,interruption:r.interruption,filesChanged:r.personaCanMutate?parseFilesChanged(r.stdout):[],claimedFiles:parseFilesChanged(r.stdout),...input.effort?{effort:input.effort}:{},...r.telemetry?{telemetry:input._phase?{...r.telemetry,dispatch_phase:input._phase}:r.telemetry}:{},...input._canaryAssignment?{canary:canaryTelemetryFields(input._canaryAssignment,r.model??input.model,`${input._taskId??"unknown"}${(input._retryCount??0)>0?`#retry${input._retryCount}`:""}`)}:{},experimentFlags:efficiencyControls.
1898
1925
  enabled}}catch(err){let capture=err;return{...capture?.trace?{trace:capture.trace}:{},...capture?.captureFailure?{captureFailure:capture.captureFailure}:{},taskId:input._taskId??`unknown-${runId}`,capability:input._capability??"unknown",model:input.model??"unknown",exitCode:-1,stdout:"",stderr:err.message,usage:paidAttempts.reduce((sum,attempt)=>sumUsage(sum,attempt.usage),{input:0,output:0,cacheRead:0,cacheWrite:0,cost:0,contextTokens:0,turns:0}),durationMs:paidAttempts.reduce((sum,attempt)=>sum+
1899
- attempt.durationMs,0),costUsd:paidAttempts.reduce((sum,attempt)=>sum+attempt.costUsd,0),nestedCostUsd:paidAttempts.reduce((sum,attempt)=>sum+(attempt.nestedCostUsd??0),0),costReported:paidAttempts.length>0&&paidAttempts.every(attempt=>attempt.costReported),filesChanged:[],claimedFiles:[]}}});if(recovery?.failed)throw new Error("Recovery persistence failed; no further dispatch admitted");return settled}var CAPABILITY_AGENT_ALIASES={...Object.fromEntries(Object.values(METHOD.rules.lead_sizing.sizes).
1900
- map(cap=>[cap,"orchestrator-lead"])),scope_scout:"orch-scout",analysis_mid:"orch-technical-lead",analysis_strong:"orch-architect",integration_review:"orch-technical-review",migration_review:"orch-technical-review",performance_review:"orch-technical-review",api_contract_review:"orch-technical-review"};function agentNameFor(capability){return CAPABILITY_AGENT_ALIASES[capability]??`orch-${capability.replace(/_/g,"-")}`}function formatTaskPrompt(t,runId){let retryNote=t.retryOf?`
1926
+ attempt.durationMs,0),costUsd:paidAttempts.reduce((sum,attempt)=>sum+attempt.costUsd,0),nestedCostUsd:paidAttempts.reduce((sum,attempt)=>sum+(attempt.nestedCostUsd??0),0),costReported:paidAttempts.length>0&&paidAttempts.every(attempt=>attempt.costReported),filesChanged:[],claimedFiles:[]}}});if(recovery?.failed)throw new Error("Recovery persistence failed; no further dispatch admitted");return settled}function formatTaskPrompt(t,runId){let retryNote=t.retryOf?`
1901
1927
 
1902
1928
  [Retry context: this is retry #${(t.retryCount??0)+1} of a previous failed attempt on task_id=${t.retryOf}. The previous attempt's review/QA feedback is captured in the orchestrator ledger; if you need that context, ask the lead before starting. Per method.json rules.review_after_fix: re-review at or above the original reviewer's tier, never the cheap tier.]`:"";return[`[orchestrator:run_id=${runId}]`,`[capability=${t.capability}]`,`[task_id=${t.taskId}]`,"",t.task,retryNote,"","---","Output for\
1903
1929
  mat (required):","## Completed","What was done.","## Files Changed","- `path/to/file` \u2014 what changed","## Verification","Checks run + result.","## Notes / Escalation","Anything the lead should know \u2014 reply to any user messages here."].join(`
1904
- `)}var AGENT_NAME_TO_ROLE=Object.fromEntries(Object.entries(CAPABILITY_AGENT_ALIASES).filter(([capability])=>capability!=="scope_scout").map(([capability,agent])=>[agent,capability]));function roleForAgentName(agentName){if(!agentName)return"unknown";if(AGENT_NAME_TO_ROLE[agentName])return AGENT_NAME_TO_ROLE[agentName];let m=/^orch-(.+)$/.exec(agentName);return m?.[1]?m[1].replace(/-/g,"_"):"unknown"}function sumUsage(a,b){return{input:a.input+b.input,output:a.output+b.output,cacheRead:a.cacheRead+
1905
- b.cacheRead,cacheWrite:a.cacheWrite+b.cacheWrite,cost:a.cost+b.cost,contextTokens:Math.max(a.contextTokens,b.contextTokens),turns:a.turns+b.turns}}async function checkModels(ctx,resolved2){let alreadyActive=runRegistry.active();if(alreadyActive)return ctx.ui.notify(`An orchestration is already running (${alreadyActive.session.runId}); try again when it finishes.`,"warning"),!1;let byModel=new Map;for(let[cap,b]of Object.entries(resolved2.adapter))byModel.set(b.model,[...byModel.get(b.model)??[],cap]);let session=new RunSession(`model-check-${Date.now()}`,ctx,"model check"),claimed=runRegistry.claim(session);if(!claimed)return ctx.ui.notify(
1930
+ `)}function sumUsage(a,b){return{input:a.input+b.input,output:a.output+b.output,cacheRead:a.cacheRead+b.cacheRead,cacheWrite:a.cacheWrite+b.cacheWrite,cost:a.cost+b.cost,contextTokens:Math.max(a.contextTokens,b.contextTokens),turns:a.turns+b.turns}}async function checkModels(ctx,resolved2){let alreadyActive=runRegistry.active();if(alreadyActive)return ctx.ui.notify(`An orchestration is already running (${alreadyActive.session.runId}); try again when it finishes.`,"warning"),!1;let byModel=new Map;for(let[cap,b]of Object.entries(resolved2.adapter))byModel.set(b.model,[...byModel.get(b.model)??[],cap]);let session=new RunSession(`model-check-${Date.now()}`,ctx,"model check"),claimed=runRegistry.claim(session);if(!claimed)return ctx.ui.notify(
1906
1931
  `An orchestration is already running (${runRegistry.active().session.runId}); try again when it finishes.`,"warning"),session.close(),await session.sealDiagnostics(),session.finish(),!1;session.setPhase(`probing ${byModel.size} distinct model(s)`);try{let probes=await mapWithConcurrency([...byModel.entries()],MAX_CONCURRENT_DISPATCHES,async([model,caps])=>{let r=await runSubagentProcess2({cwd:process.cwd(),agentName:NO_PERSONA,task:"Connectivity check. Reply with the single word OK.",model,tools:[
1907
1932
  "read"],ctx,taskId:`probe-${shortName(model)}`,label:shortName(model)}),replied=(r.finalText||r.stdout).trim(),expectedId=model.slice(model.indexOf("/")+1),servedBy=r.model,idMatches=!servedBy||servedBy===expectedId||expectedId.endsWith(servedBy)||servedBy.endsWith(expectedId)||shortName(servedBy)===shortName(model),ok2=r.exitCode===0&&replied.length>0;return{model,caps,ok:ok2,idMatches,servedBy,replied,r}}),lines=probes.map(p=>{let mark=p.ok&&p.idMatches?"\u2713":p.ok?"\u26A0":"\u2717",detail=p.
1908
1933
  ok?p.idMatches?`${fmtElapsed(p.r.durationMs)}, $${p.r.costUsd.toFixed(4)}, served by ${p.servedBy??"(unreported)"}`:`answered, but served by ${p.servedBy} (expected ${p.model.slice(p.model.indexOf("/")+1)})`:`exit ${p.r.exitCode}: ${summarizeStderr(p.r.stderr,160)||"(no output)"}`;return[`${mark} ${p.model}`,` ${detail}`,` used by: ${p.caps.join(", ")}`].join(`
@@ -1924,5 +1949,5 @@ runId=>`Cancelling orchestration ${runId}\u2026`);receipt&&"terminationConfirmed
1924
1949
  rchestration ${runId}: no new dispatch until /flow-resume.`)}}),pi.registerCommand("flow-resume",{description:"Resume a paused /flow run.",handler:async(_args,ctx)=>{await runControl(ctx,(runId,id2)=>({id:id2,type:"flow_resume",runId}),runId=>`Resuming orchestration ${runId}.`)}}),registerOrchestratorModelsCommand(pi,{resolveAdapter:resolveAdapter2,availableModels,loadProfiles:loadProfiles2,writeProfilesFile:writeProfilesFile2,checkModels,profilesPath:PROFILES_PATH,env:process.env}),pi.registerCommand(
1925
1950
  "omsg",{description:"Send a message to the running lead (steers it live), or to the host as a follow-up when no Flow is running. Usage: /omsg <text> \u2014 use '\\n' for newlines.",handler:async(args2,ctx)=>{let text2=args2.trim().replace(/\\n/g,`
1926
1951
  `);if(!text2){ctx.ui.notify("Usage: /omsg <message>","warning");return}if(text2.length>FLOW_MESSAGE_MAX_LENGTH){ctx.ui.notify(`Message rejected: ${text2.length} characters exceeds the ${FLOW_MESSAGE_MAX_LENGTH} limit.`,"warning");return}let id2=`omsg-${randomUUID6()}`,{receipt}=await flowControlHandler.handle({id:id2,type:"flow_message",runId:ACTIVE_RUN?.runId??"direct",messageId:id2,text:text2}),disposition="disposition"in receipt?receipt.disposition:"rejected";ctx.ui.notify(disposition==="live"?
1927
- "Message delivered to the running lead.":disposition==="queued"?"No Flow is running: message sent to the host as a follow-up.":"Message rejected: no running lead to receive it.",disposition==="rejected"?"warning":"info")}})}export{BUILT_IN_PROFILE_IDS,DEFAULT_SIZE_THRESHOLDS,FLOW_PROFILE_USAGE,FlowProfileError,LINEAGE_ENV2 as LINEAGE_ENV,buildCliAdmission,builtInProfilesDir,computeProfileDigest,createFlowEmitter,createFlowRpcControl,createProfileStore,createRpcFrameSink,createSpendLedger,decideSize,estimateCostMicrousd,extension_default as flowExtension,flowSha256Hasher,listProcesses,listProfiles,openFlowProfileEditor,openJsonlLedgerSink,parseHumainTerminalSession,planRun,priceFor,renderFlowProfileError,requestIdFor,
1928
- resolveProfile,runFlowProfileCommand,sizeToWorkflow,toRequestUsage,withProfileDigest};
1952
+ "Message delivered to the running lead.":disposition==="queued"?"No Flow is running: message sent to the host as a follow-up.":"Message rejected: no running lead to receive it.",disposition==="rejected"?"warning":"info")}})}export{BUILT_IN_PROFILE_IDS,DEFAULT_SIZE_THRESHOLDS,FLOW_PROFILE_USAGE,FlowProfileError,LINEAGE_ENV2 as LINEAGE_ENV,buildCliAdmission,builtInProfilesDir,computeProfileDigest,createFlowEmitter,createFlowRpcControl,createProfileStore,createRpcFrameSink,createSpendLedger,decideSize,estimateCostMicrousd,exactPriceKey,extension_default as flowExtension,flowSha256Hasher,listProcesses,listProfiles,openFlowProfileEditor,openJsonlLedgerSink,parseHumainTerminalSession,planRun,priceFor,renderFlowProfileError,
1953
+ requestIdFor,resolveProfile,runFlowProfileCommand,sizeToWorkflow,toRequestUsage,withProfileDigest};