@ornexus/neocortex 4.60.44 → 4.60.46

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.
Files changed (36) hide show
  1. package/dist/sbom.cdx.json +23 -23
  2. package/install.js +16 -1
  3. package/install.ps1 +57 -401
  4. package/install.sh +30 -37
  5. package/package.json +2 -2
  6. package/packages/client/dist/commands/invoke.d.ts +9 -0
  7. package/packages/client/dist/commands/invoke.js +50 -47
  8. package/packages/client/dist/runner/headless/run-yolo.js +1 -1
  9. package/packages/client/dist/runner/headless/run-yoloop.d.ts +9 -0
  10. package/packages/client/dist/runner/headless/run-yoloop.js +2 -2
  11. package/packages/client/dist/state/project-state-snapshot.js +1 -1
  12. package/packages/client/dist/yoloop/index.d.ts +1 -1
  13. package/packages/client/dist/yoloop/invoke-hooks.d.ts +23 -6
  14. package/packages/client/dist/yoloop/invoke-hooks.js +11 -8
  15. package/packages/client/dist/yoloop/shared-yoloop-types.d.ts +61 -0
  16. package/packages/client/dist/yoloop/yoloop-client-state-store.d.ts +23 -0
  17. package/packages/client/dist/yoloop/yoloop-client-state-store.js +1 -1
  18. package/packages/shared/dist/invocation/index.js +9 -2
  19. package/targets-stubs/antigravity/gemini.md +1 -1
  20. package/targets-stubs/antigravity/install-antigravity.sh +10 -101
  21. package/targets-stubs/antigravity/skill/SKILL.md +1 -1
  22. package/targets-stubs/claude-code/neocortex-root.agent.yaml +1 -1
  23. package/targets-stubs/claude-code/neocortex-root.md +2 -2
  24. package/targets-stubs/claude-code/neocortex.agent.yaml +1 -1
  25. package/targets-stubs/claude-code/neocortex.md +2 -2
  26. package/targets-stubs/codex/AGENTS.md +1 -1
  27. package/targets-stubs/codex/install-codex.sh +4 -1
  28. package/targets-stubs/cursor/agent.md +2 -2
  29. package/targets-stubs/cursor/install-cursor.sh +4 -1
  30. package/targets-stubs/gemini-cli/agent.md +2 -2
  31. package/targets-stubs/gemini-cli/install-gemini.sh +4 -1
  32. package/targets-stubs/grok/install-grok.sh +4 -1
  33. package/targets-stubs/lib/mcp-merge.js +220 -20
  34. package/targets-stubs/opencode/neocortex-root.md +1 -1
  35. package/targets-stubs/vscode/install-vscode.sh +4 -1
  36. package/targets-stubs/vscode/neocortex.agent.md +2 -2
@@ -1 +1 @@
1
- import{createHash as V,randomBytes as B}from"node:crypto";import{AUTONOMOUS_GOVERNANCE_EVIDENCE_TAG as X,AUTONOMOUS_GOVERNANCE_REASON_CODES as $,autonomousGovernanceMetadata as q,buildAutonomousGovernanceEnvelope as Y,readAutonomousGovernanceEnvelopeFromMetadata as Z,recordAutonomousGovernance as G}from"../../continuity/autonomous-governance.js";import{createDefaultHeadlessAdapterRegistry as J}from"./adapters.js";import{loadHeadlessRuntimeDefaults as W,resolveHeadlessRuntime as Q}from"./resolver.js";import{HEADLESS_REASON_CODES as m,boundPublicSummary as A,hashPublicValue as g,redaction as d}from"./types.js";const ee=300*1e3,te=30*1e3,re=30*1e3,oe=600*1e3,ae=1,ne=3,O=/^docs\/stories\/[A-Za-z0-9._-]+\.story\.md$/,se=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,159}$/,de=new Set(["schemaVersion","contractVersion","kind","commandClass","jobId","operationId","idempotencyKey","targetKind","targetRef","commandRef","storyId","executionMode","runtime","publicSummary","reasonCode","attempts","metadata","redactionSummary","publicSafe"]),ie=new Set(["runtimeId","modelId","source","reasonCode","publicSafe"]),R=/(raw[_-]?(?:logs?|payloads?)|std(?:out|err)|stack(?:[_-]?trace)?|transcript|objective(?:[_-]?(?:text|body|prompt))|prompt(?:[_-]?(?:body|text))?|private[_-]?(?:urls?|prompts?)|secret|token|password|protected(?:[_-]?(?:field|body|bodies|internals))?|workflow(?:[_-]?body)?|step(?:[_-]?body)?|customer(?:[_-]?(?:pii|data))?|\bpii\b|authorization|api[_-]?key|license[_-]?key|argv|args|executable(?:[_-]?path)?|binary(?:[_-]?path)?|shell|cwd|command[_-]?path|vendor(?:[_-]?(?:payload|corpus|response|output)))/i,y=/(https?:\/\/\S+|(?:^|\s)(?:\/(?:home|Users|media|mnt|tmp|var|etc|private)\/\S+|[A-Za-z]:\\\S+)|ghp_[A-Za-z0-9_]+|sk-[A-Za-z0-9_-]+|-----BEGIN [A-Z ]*PRIVATE KEY-----|authorization\s*:|password\s*=|token\s*=|api[_-]?key\s*=|license[_-]?key\s*=|raw[_-]?(?:logs?)\s*[:=]|transcript|stack\s*trace|stderr:|stdout:|system prompt|workflow body|step body|PROTECTED_|PRIVATE_INTERNALS|CUSTOMER_PII|\bPII\b|VENDOR_CORPUS|P190[_-]?SYNTHETIC[_-]?(?:HEADLESS|CONTINUITY))/i,b=/(?:[;&|`$<>]|\$\(|\n|\r|\0)/;async function Te(e){const t=e.adapterRegistry??J(),r=E(e.limit??ae,1,10),a=E(e.leaseMs??ee,1e3,3600*1e3),n=E(e.staleLeaseAfterMs??te,0,1440*60*1e3),s=E(e.maxAttempts??ne,1,10),o=[],u=[],i=e.now(),c=ue({store:e.store,metadata:e.metadata,nowIso:i,maxAttempts:s,queueCap:e.queueCap});o.push(...c.reasonCodes);const p=e.store.recoverStaleHeadlessExecutionAttempts({nowIso:i,staleAfterMs:n,limit:r*2});p.recoveredAttemptIds.length>0&&(o.push(m.EXECUTION_BACKOFF),p.failedAttemptIds.length>0&&o.push(m.EXECUTION_TIMEOUT));const I=new Set(e.attemptIds??[]),_=e.store.listDueHeadlessExecutionAttempts({nowIso:e.now(),limit:Math.max(r*5,10)}).filter(l=>l.directive_kind==="run_yolo").filter(l=>I.size===0||I.has(l.attempt_id)).slice(0,r);for(const l of _){const S=await ce({store:e.store,projectRoot:e.projectRoot,runnerId:e.runnerId,attempt:l,registry:t,now:e.now,leaseMs:a,timeoutMs:E(e.timeoutMs??oe,1e3,18e5),backoffMs:E(e.backoffMs??re,1e3,36e5),maxAttempts:s,adapterOptions:e.adapterOptions,runtimeDefaults:e.runtimeDefaults,runtimeFallback:e.runtimeFallback,idFactory:e.idFactory??Ae});u.push(S),o.push(S.reasonCode)}return{ok:u.every(l=>l.outcome!=="failed")&&c.rejectedCount===0,enqueuedAttemptCount:c.enqueuedCount,dueAttemptCount:_.length,processedAttemptCount:u.filter(l=>l.outcome!=="ignored").length,recoveredAttemptIds:p.recoveredAttemptIds,receipts:u,reasonCodes:L(o.length>0?o:[m.OK]),publicSafe:!0}}function ue(e){let t=0,r=0;const a=[];for(const n of he(e.metadata)){if(!h(n)||n.kind!=="run_yolo")continue;const s=pe(n);if(!s.ok){r+=1,a.push(s.reasonCode);continue}const o=s.directive;if(!e.store.jobExists(o.jobId)){r+=1,a.push($.BYPASS_BLOCKED);continue}const u=Se(o);if(e.store.hasCompletedHeadlessExecutionDirectiveHash(u)){a.push(m.EXECUTION_COMPLETED);continue}const i=Y({autonomousKind:"run_yolo",source:ye(o.metadata,"headless-run-yolo"),targetKind:"story",targetRef:o.targetRef,storyId:o.storyId??v(o.targetRef),jobId:o.jobId,operationSeed:o.operationId,commandHash:g(o.commandRef)}),c=G(e.store,i,e.nowIso,{requireExistingJob:!0});if(!c.ok){r+=1,a.push(c.reasonCode);continue}const p=H("attempt",o.idempotencyKey),I=H("exec",o.operationId),_=e.store.enqueueHeadlessExecutionAttempt({attemptId:p,executionId:I,jobId:o.jobId,directiveHash:u,directiveKind:"run_yolo",commandClass:o.commandClass,targetKind:"story",targetRef:o.targetRef,storyId:o.storyId??v(o.targetRef),runtimeId:o.runtime?.runtimeId,modelId:o.runtime?.modelId,runtimeSource:Ce(o.runtime?.source),reasonCode:o.reasonCode,publicSummary:o.publicSummary,enqueuedAt:e.nowIso,notBeforeAt:e.nowIso,maxAttempts:e.maxAttempts,queueCap:e.queueCap,operationId:`${o.operationId}:enqueue`,idempotencyKey:o.idempotencyKey,counts:{directives:1},hashes:{directive:u},redactionSummary:o.redactionSummary,relativePaths:[o.targetRef],metadata:q(i,{schemaVersion:1,contractVersion:"continuity-v1",jobId:o.jobId,operationId:o.operationId,reasonCode:o.reasonCode??m.OK,targetRef:o.targetRef,directiveHash:u,...o.executionMode?{executionMode:o.executionMode}:{}})});if(!_.accepted){r+=1,a.push(_.reasonCode??"queue-cap-reached");continue}_.inserted&&(t+=1),a.push(m.OK)}return{enqueuedCount:t,rejectedCount:r,reasonCodes:L(a)}}async function ce(e){const t=e.now(),r=e.idFactory("lease",e.attempt.attempt_id),a=U(t,e.leaseMs);if(!e.store.claimHeadlessExecutionAttempt({attemptId:e.attempt.attempt_id,leaseId:r,runnerId:e.runnerId,claimedAt:t,leaseExpiresAt:a,reasonCode:m.OK}).inserted)return{attemptId:e.attempt.attempt_id,executionId:e.attempt.execution_id,jobId:e.attempt.job_id,status:e.attempt.status,outcome:"ignored",reasonCode:"lease-conflict",timestamp:t,redactionSummary:[],publicSafe:!0};if(e.store.hasCompletedHeadlessExecutionDirectiveHash(e.attempt.directive_hash,e.attempt.attempt_id))return k(e.store,e.attempt,{leaseId:r,runnerId:e.runnerId,status:"skipped",receiptStatus:"ignored",reasonCode:m.EXECUTION_COMPLETED,publicSummary:"Skipped duplicate run_yolo directive because the directive hash is already completed.",completedAt:e.now(),counts:{duplicateDirectiveHashes:1},hashes:{directive:e.attempt.directive_hash},redactionSummary:[],relativePaths:[e.attempt.target_ref]});const o=me(e);if(!o.ok)return k(e.store,e.attempt,{leaseId:r,runnerId:e.runnerId,status:o.status,receiptStatus:o.receiptStatus,reasonCode:o.reasonCode,publicSummary:o.publicSummary,completedAt:e.now(),counts:{rejectedDirectives:1},hashes:{directive:e.attempt.directive_hash},redactionSummary:o.redactionSummary,relativePaths:P(e.attempt)});const u=e.registry.getAdapter(o.input.runtimeId);if(!u.ok)return k(e.store,e.attempt,{leaseId:r,runnerId:e.runnerId,status:"failed",receiptStatus:"failed",reasonCode:u.reasonCode,publicSummary:u.publicSummary,completedAt:e.now(),counts:{rejectedAdapters:1},hashes:{directive:e.attempt.directive_hash},redactionSummary:u.redactionSummary,relativePaths:[e.attempt.target_ref],runtimeId:o.input.runtimeId,modelId:o.input.modelId,runtimeSource:o.input.runtimeSource});let i;try{i=await u.adapter.execute(o.input,{...e.adapterOptions,cwd:e.adapterOptions?.cwd??e.projectRoot})}catch{i={status:"failed",adapterId:o.input.runtimeId,runtimeId:o.input.runtimeId,...o.input.modelId?{modelId:o.input.modelId}:{},...o.input.runtimeSource?{runtimeSource:o.input.runtimeSource}:{},reasonCode:m.EXECUTION_FAILED,reasonCodes:[m.EXECUTION_FAILED,m.RECEIPT_REDACTED],exitCode:1,signal:null,durationMs:0,counts:{adapterExceptions:1},hashes:{directive:e.attempt.directive_hash},publicSummary:"Headless adapter failed with public-safe exception summary.",redactionSummary:[d("adapter","raw_log","value-denied")],relativePaths:[e.attempt.target_ref],receipt:o.input.receipt,publicSafe:!0}}const c=Ie(e.attempt,i,e.maxAttempts,e.backoffMs,e.now()),p=c.retry?"backoff":i.status,I=c.retry?m.EXECUTION_BACKOFF:i.reasonCode,_=p==="completed"?"applied":p==="backoff"?"deferred":p==="skipped"?"ignored":"failed";return k(e.store,e.attempt,{leaseId:r,runnerId:e.runnerId,status:p,receiptStatus:_,reasonCode:I,publicSummary:c.retry?"Headless run_yolo execution scheduled bounded retry after transient adapter outcome.":i.publicSummary,completedAt:e.now(),durationMs:i.durationMs,notBeforeAt:c.notBeforeAt,retryCount:c.retryCount,counts:i.counts,hashes:{...i.hashes,directive:e.attempt.directive_hash},redactionSummary:i.redactionSummary,relativePaths:i.relativePaths.length>0?i.relativePaths:[e.attempt.target_ref],runtimeId:i.runtimeId,modelId:i.modelId,runtimeSource:i.runtimeSource})}function me(e){const t=Z(e.attempt.metadata_json,{autonomousKind:"run_yolo",jobId:e.attempt.job_id,targetKind:"story",targetRef:e.attempt.target_ref});if(!t.ok)return{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:m.DIRECTIVE_REJECTED,publicSummary:t.publicSummary,redactionSummary:t.redactionSummary};const r=g(`*yolo @${e.attempt.target_ref}`),a=g(`*yolo @${e.attempt.target_ref} branchless-preparation`),n=t.envelope.hashes.command===a;if(!n&&t.envelope.hashes.command!==r)return{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:m.DIRECTIVE_REJECTED,publicSummary:"Headless run_yolo governance command does not match an authorized execution mode.",redactionSummary:[d("autonomousGovernance.commandHash","prompt_body","operation-denied")]};const s=fe(e.attempt);if(!s.ok)return s;const o=le(e);return o.ok?{ok:!0,input:{promptKind:n?"yolo-branchless-preparation":"yolo",targetKind:"story",targetRef:e.attempt.target_ref,...e.attempt.story_id?{storyId:e.attempt.story_id}:{},runtimeId:o.runtimeId,...o.modelId?{modelId:o.modelId}:{},runtimeSource:o.runtimeSource,timeoutMs:e.timeoutMs,receipt:{attemptId:e.attempt.attempt_id,subagentId:e.attempt.attempt_id,executionId:e.attempt.execution_id,jobId:e.attempt.job_id,operationId:e.attempt.execution_id,idempotencyKey:e.attempt.directive_hash,runnerId:e.runnerId},publicSummary:A(e.attempt.public_summary??"Headless run_yolo execution attempt."),publicSafe:!0}}:{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:o.reasonCode,publicSummary:o.publicSummary,redactionSummary:o.redactionSummary}}function le(e){const t=e.runtimeDefaults!==void 0?e.runtimeDefaults:W({projectRoot:e.projectRoot});if(h(t)&&t.ok===!1)return{ok:!1,reasonCode:m.RUNTIME_UNTRUSTED,publicSummary:typeof t.publicSummary=="string"?t.publicSummary:"Headless runtime defaults failed public-safety validation.",redactionSummary:Array.isArray(t.redactionSummary)?t.redactionSummary:[]};const r=Ee(e.attempt.runtime_source)??"explicit",a=e.attempt.runtime_id||e.attempt.model_id?{...e.attempt.runtime_id?{runtimeId:e.attempt.runtime_id}:{},...e.attempt.model_id?{modelId:e.attempt.model_id}:{},source:r,publicSafe:!0}:void 0,n={registry:e.registry,defaults:t,fallback:e.runtimeFallback};a&&(r==="origin"?n.origin=a:r==="default"?n.projectDefault=a:r==="fallback"?n.fallback=a:n.explicit=a);const s=Q(n);return s.ok?{ok:!0,runtimeId:s.runtimeId,...s.modelId?{modelId:s.modelId}:{},runtimeSource:s.runtimeSource}:{ok:!1,reasonCode:s.reasonCode,publicSummary:s.publicSummary,redactionSummary:s.redactionSummary}}function fe(e){const t=[];e.directive_kind!=="run_yolo"&&t.push(d("directiveKind","unsafe_key","value-denied")),e.target_kind!=="story"&&t.push(d("targetKind","prompt_body","value-denied")),(!O.test(e.target_ref)||b.test(e.target_ref)||y.test(e.target_ref))&&t.push(d("targetRef","prompt_body","value-denied"));const r=v(e.target_ref);return e.story_id&&e.story_id!==r&&t.push(d("storyId","prompt_body","value-denied")),t.length>0?{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:m.PROMPT_REJECTED,publicSummary:"Headless run_yolo attempt did not match the canonical public story prompt shape.",redactionSummary:t}:{ok:!0,input:{promptKind:"yolo",targetKind:"story",targetRef:e.target_ref,...e.story_id?{storyId:e.story_id}:{},runtimeId:"fake",publicSafe:!0}}}function pe(e){const t=[];for(const C of Object.keys(e))(!de.has(C)||R.test(C))&&t.push(d(C,T(C),"key-denied"));e.publicSafe!==!0&&t.push(d("publicSafe","unsafe_key","value-denied"));const r=f(e,"kind"),a=f(e,"commandClass"),n=f(e,"jobId"),s=f(e,"operationId"),o=f(e,"idempotencyKey"),u=f(e,"targetKind"),i=f(e,"targetRef"),c=f(e,"commandRef"),p=f(e,"publicSummary"),I=f(e,"storyId"),_=f(e,"executionMode");r!=="run_yolo"&&t.push(d("kind","unsafe_key","value-denied")),a!=="goal-tick"&&a!=="loop-tick"&&t.push(d("commandClass","unsafe_key","value-denied")),j(n)||t.push(d("jobId","unsafe_key","value-denied")),j(s)||t.push(d("operationId","unsafe_key","value-denied")),j(o)||t.push(d("idempotencyKey","unsafe_key","value-denied")),(u!=="story"||!i||!O.test(i)||y.test(i))&&t.push(d("targetRef","prompt_body","value-denied")),_!==void 0&&_!=="branchless_child_preparation"&&t.push(d("executionMode","unsafe_key","value-denied"));const l=h(e.metadata)?e.metadata:void 0,S=_==="branchless_child_preparation";S&&(l?.governanceSource!=="delegated-subagent"||l.childWorkspace!=="branchless_sandbox"||l.integrationOwner!=="root_agent"||l.maxDepth!==1||typeof l.graphRevision!="string"||!/^[a-f0-9]{64}$/.test(l.graphRevision))&&t.push(d("executionMode","unsafe_key","value-denied"));const F=i?`*yolo @${i}${S?" branchless-preparation":""}`:void 0;(!c||c!==F||c.includes("@neocortex")||b.test(c)||y.test(c))&&t.push(d("commandRef","prompt_body","value-denied")),I&&i&&I!==v(i)&&t.push(d("storyId","prompt_body","value-denied")),(!p||p.length>240||y.test(p))&&t.push(d("publicSummary","unbounded_text","value-denied")),e.reasonCode!==void 0&&(typeof e.reasonCode!="string"||y.test(e.reasonCode))&&t.push(d("reasonCode","unsafe_key","value-denied"));const N=_e(e.runtime,t);e.attempts!==void 0&&x(e.attempts,"attempts",t),e.metadata!==void 0&&x(e.metadata,"metadata",t);const w=be(e.redactionSummary,t);return t.length>0||r!=="run_yolo"||!a||!n||!s||!o||!i||!c||!p?{ok:!1,reasonCode:t.some(z=>z.reason==="prompt_body")?m.PROMPT_REJECTED:m.DIRECTIVE_REJECTED,redactionSummary:t}:{ok:!0,directive:{kind:"run_yolo",commandClass:a,jobId:n,operationId:s,idempotencyKey:o,targetKind:"story",targetRef:i,commandRef:c,...I?{storyId:I}:{},...S?{executionMode:"branchless_child_preparation"}:{},...N?{runtime:N}:{},publicSummary:p,...typeof e.reasonCode=="string"?{reasonCode:e.reasonCode}:{},...l?{metadata:l}:{},...w.length>0?{redactionSummary:w}:{},publicSafe:!0}}}function ye(e,t){return e?.governanceSource==="delegated-subagent"?"delegated-subagent":t}function _e(e,t){if(e===void 0)return;if(!h(e)){t.push(d("runtime","unsafe_key","value-denied"));return}for(const s of Object.keys(e))(!ie.has(s)||R.test(s))&&t.push(d(`runtime.${s}`,T(s),"key-denied"));e.publicSafe!==!0&&t.push(d("runtime.publicSafe","unsafe_key","value-denied"));const r=f(e,"runtimeId"),a=f(e,"modelId"),n=f(e,"source");if(r&&(!/^[A-Za-z0-9][A-Za-z0-9._:-]{0,79}$/.test(r)||y.test(r)||b.test(r))&&t.push(d("runtime.runtimeId","unsafe_key","value-denied")),a&&(!/^[A-Za-z0-9][A-Za-z0-9._:+/-]{0,119}$/.test(a)||y.test(a)||b.test(a))&&t.push(d("runtime.modelId","unsafe_key","value-denied")),n!==void 0&&n!=="explicit"&&n!=="origin"&&n!=="default"&&n!=="fallback"&&n!=="unspecified"&&t.push(d("runtime.source","unsafe_key","value-denied")),e.reasonCode!==void 0&&(typeof e.reasonCode!="string"||y.test(e.reasonCode))&&t.push(d("runtime.reasonCode","unsafe_key","value-denied")),e.publicSafe===!0)return{...r?{runtimeId:r}:{},...a?{modelId:a}:{},...n==="explicit"||n==="origin"||n==="default"||n==="fallback"||n==="unspecified"?{source:n}:{},...typeof e.reasonCode=="string"?{reasonCode:e.reasonCode}:{},publicSafe:!0}}function k(e,t,r){const a=r.redactionSummary??[],n=r.relativePaths??P(t),s=K(r.counts),o=K(r.hashes),u={schemaVersion:1,contractVersion:"continuity-v1",attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,directiveHash:t.directive_hash,status:r.status,reasonCode:r.reasonCode,...r.runtimeId?{runtimeId:r.runtimeId}:{},...r.modelId?{modelId:r.modelId}:{},...r.runtimeSource?{runtimeSource:r.runtimeSource}:{},...r.retryCount!==void 0?{retryCount:r.retryCount}:{},...r.reasonCode===$.BYPASS_BLOCKED?{governanceEvidence:X}:{},publicSummary:A(r.publicSummary)};return e.completeHeadlessExecutionAttempt({attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,leaseId:r.leaseId,runnerId:r.runnerId,status:r.status,completedAt:r.completedAt,durationMs:r.durationMs,reasonCode:r.reasonCode,publicSummary:A(r.publicSummary),notBeforeAt:r.notBeforeAt,retryCount:r.retryCount,counts:s,hashes:o,redactionSummary:a,relativePaths:n,metadata:u}),e.recordHeadlessExecutionReceipt({receiptId:`receipt-${D("headless",`${t.attempt_id}-${r.status}`)}`,attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,status:r.receiptStatus,reasonCode:r.reasonCode,createdAt:r.completedAt,operationId:`${t.execution_id}:${r.status}:receipt`,idempotencyKey:`${t.directive_hash}:${r.status}:receipt`,counts:s,hashes:o,redactionSummary:a,relativePaths:n,metadata:u}),e.recordHeadlessExecutionSummary({eventId:`event-${D("headless-summary",`${t.attempt_id}-${r.status}`)}`,attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,status:r.status,runtimeId:r.runtimeId,modelId:r.modelId,publicSummary:A(r.publicSummary),reasonCode:r.reasonCode,createdAt:r.completedAt,durationMs:r.durationMs,counts:s,hashes:o,redactionSummary:a,relativePaths:n,metadata:u}),{attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,status:r.status,outcome:r.receiptStatus,reasonCode:r.reasonCode,timestamp:r.completedAt,redactionSummary:a,publicSafe:!0}}function Ie(e,t,r,a,n){if(!(t.status==="timed_out"||t.reasonCode===m.EXECUTION_FAILED||t.reasonCode===m.ADAPTER_UNAVAILABLE))return{retry:!1};const o=e.retry_count+1;if(o>=Math.max(1,e.max_attempts||r))return{retry:!1,retryCount:o};const u=Math.min(8,2**Math.max(0,e.retry_count));return{retry:!0,retryCount:o,notBeforeAt:U(n,a*u)}}function he(e){const t=Array.isArray(e)?e:e?[e]:[],r=[];for(const a of t){const n=a.continuityExecutionDirectives;Array.isArray(n)&&r.push(...n)}return r}function Se(e){return g(M({kind:e.kind,commandClass:e.commandClass,jobId:e.jobId,targetRef:e.targetRef,commandRef:e.commandRef,storyId:e.storyId,executionMode:e.executionMode,runtime:e.runtime}))}function M(e){return Array.isArray(e)?`[${e.map(M).join(",")}]`:h(e)?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${M(e[t])}`).join(",")}}`:JSON.stringify(e)}function x(e,t,r){if(typeof e=="string"){(y.test(e)||b.test(e))&&r.push(d(t,T(t),"value-denied"));return}if(!(e==null||typeof e=="number"||typeof e=="boolean")){if(Array.isArray(e)){e.forEach((a,n)=>x(a,`${t}.${n}`,r));return}if(h(e)){for(const[a,n]of Object.entries(e)){const s=`${t}.${a}`;R.test(a)&&r.push(d(s,T(a),"key-denied")),x(n,s,r)}return}r.push(d(t,"unsafe_key","value-denied"))}}function be(e,t){if(e===void 0)return[];if(!Array.isArray(e))return t.push(d("redactionSummary","unsafe_key","value-denied")),[];const r=[];for(const[a,n]of e.entries()){if(!h(n)||n.publicSafe!==!0){t.push(d(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}const s=f(n,"field"),o=f(n,"reason"),u=f(n,"evidence");if(!s||!o||!u||y.test(s)||y.test(o)||y.test(u)){t.push(d(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}r.push({field:s,reason:o,evidence:u,publicSafe:!0})}return r}function P(e){return O.test(e.target_ref)?[e.target_ref]:[]}function K(e){if(!e)return;const t={};for(const[r,a]of Object.entries(e))!/^[A-Za-z0-9_.:-]{1,80}$/.test(r)||R.test(r)||y.test(r)||typeof a=="string"&&y.test(a)||(t[r]=a);return Object.keys(t).length>0?t:void 0}function v(e){return e.replace(/^docs\/stories\//,"").replace(/\.story\.md$/,"")}function Ee(e){if(e==="explicit"||e==="origin"||e==="default"||e==="fallback")return e}function Ce(e){if(e==="explicit"||e==="origin"||e==="default"||e==="fallback"||e==="unspecified")return e}function T(e){return/prompt|commandRef/i.test(e)?"prompt_body":/std(?:out|err)|raw|log|transcript|stack/i.test(e)?"raw_log":/url/i.test(e)?"private_url":/path|cwd|argv|args|shell|command|binary|executable/i.test(e)?"executable_path":/secret|token|password|authorization|api[_-]?key|license/i.test(e)?"secret_or_pii":"unsafe_key"}function f(e,t){return typeof e[t]=="string"?e[t]:void 0}function j(e){return!!(e&&se.test(e)&&!y.test(e)&&!b.test(e))}function h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function D(e,t){const r=`${e}-${t}`.replace(/[^A-Za-z0-9_.:-]+/g,"-").replace(/^-+|-+$/g,"");return r.length>0&&r.length<=120?r:`${e}-${V("sha256").update(t).digest("hex").slice(0,32)}`}function H(e,t){return D(e,t)}function Ae(e,t){return D(e,`${t}-${Date.now()}-${B(4).toString("hex")}`)}function U(e,t){const r=Date.parse(e);return new Date((Number.isFinite(r)?r:Date.now())+t).toISOString()}function E(e,t,r){return Number.isFinite(e)?Math.max(t,Math.min(r,Math.floor(e))):t}function L(e){return Array.from(new Set(e))}export{re as DEFAULT_HEADLESS_EXECUTION_BACKOFF_MS,ee as DEFAULT_HEADLESS_EXECUTION_LEASE_MS,ae as DEFAULT_HEADLESS_EXECUTION_LIMIT,ne as DEFAULT_HEADLESS_EXECUTION_MAX_ATTEMPTS,te as DEFAULT_HEADLESS_EXECUTION_STALE_LEASE_AFTER_MS,oe as DEFAULT_HEADLESS_EXECUTION_TIMEOUT_MS,H as headlessExecutionEntityId,Te as runYoloExecutionPhase};
1
+ import{createHash as X,randomBytes as q}from"node:crypto";import{AUTONOMOUS_GOVERNANCE_EVIDENCE_TAG as Y,AUTONOMOUS_GOVERNANCE_REASON_CODES as $,autonomousGovernanceMetadata as K,buildAutonomousGovernanceEnvelope as Z,readAutonomousGovernanceEnvelopeFromMetadata as P,recordAutonomousGovernance as G}from"../../continuity/autonomous-governance.js";import{createDefaultHeadlessAdapterRegistry as J}from"./adapters.js";import{loadHeadlessRuntimeDefaults as W,resolveHeadlessRuntime as Q}from"./resolver.js";import{HEADLESS_REASON_CODES as m,boundPublicSummary as A,hashPublicValue as g,redaction as i}from"./types.js";const ee=300*1e3,te=30*1e3,re=30*1e3,oe=600*1e3,ae=1,ne=3,O=/^docs\/stories\/[A-Za-z0-9._-]+\.story\.md$/,se=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,159}$/,de=new Set(["schemaVersion","contractVersion","kind","commandClass","jobId","operationId","idempotencyKey","targetKind","targetRef","commandRef","storyId","executionMode","runtime","publicSummary","reasonCode","attempts","metadata","redactionSummary","publicSafe"]),ie=new Set(["runtimeId","modelId","source","reasonCode","publicSafe"]),R=/(raw[_-]?(?:logs?|payloads?)|std(?:out|err)|stack(?:[_-]?trace)?|transcript|objective(?:[_-]?(?:text|body|prompt))|prompt(?:[_-]?(?:body|text))?|private[_-]?(?:urls?|prompts?)|secret|token|password|protected(?:[_-]?(?:field|body|bodies|internals))?|workflow(?:[_-]?body)?|step(?:[_-]?body)?|customer(?:[_-]?(?:pii|data))?|\bpii\b|authorization|api[_-]?key|license[_-]?key|argv|args|executable(?:[_-]?path)?|binary(?:[_-]?path)?|shell|cwd|command[_-]?path|vendor(?:[_-]?(?:payload|corpus|response|output)))/i,y=/(https?:\/\/\S+|(?:^|\s)(?:\/(?:home|Users|media|mnt|tmp|var|etc|private)\/\S+|[A-Za-z]:\\\S+)|ghp_[A-Za-z0-9_]+|sk-[A-Za-z0-9_-]+|-----BEGIN [A-Z ]*PRIVATE KEY-----|authorization\s*:|password\s*=|token\s*=|api[_-]?key\s*=|license[_-]?key\s*=|raw[_-]?(?:logs?)\s*[:=]|transcript|stack\s*trace|stderr:|stdout:|system prompt|workflow body|step body|PROTECTED_|PRIVATE_INTERNALS|CUSTOMER_PII|\bPII\b|VENDOR_CORPUS|P190[_-]?SYNTHETIC[_-]?(?:HEADLESS|CONTINUITY))/i,b=/(?:[;&|`$<>]|\$\(|\n|\r|\0)/;async function Te(e){const t=e.adapterRegistry??J(),r=E(e.limit??ae,1,10),a=E(e.leaseMs??ee,1e3,3600*1e3),n=E(e.staleLeaseAfterMs??te,0,1440*60*1e3),s=E(e.maxAttempts??ne,1,10),o=[],u=[],d=e.now(),c=ue({store:e.store,metadata:e.metadata,nowIso:d,maxAttempts:s,queueCap:e.queueCap});o.push(...c.reasonCodes);const p=e.store.recoverStaleHeadlessExecutionAttempts({nowIso:d,staleAfterMs:n,limit:r*2});p.recoveredAttemptIds.length>0&&(o.push(m.EXECUTION_BACKOFF),p.failedAttemptIds.length>0&&o.push(m.EXECUTION_TIMEOUT));const I=new Set(e.attemptIds??[]),_=e.store.listDueHeadlessExecutionAttempts({nowIso:e.now(),limit:Math.max(r*5,10)}).filter(l=>l.directive_kind==="run_yolo").filter(l=>I.size===0||I.has(l.attempt_id)).slice(0,r);for(const l of _){const S=await ce({store:e.store,projectRoot:e.projectRoot,runnerId:e.runnerId,attempt:l,registry:t,now:e.now,leaseMs:a,timeoutMs:E(e.timeoutMs??oe,1e3,18e5),backoffMs:E(e.backoffMs??re,1e3,36e5),maxAttempts:s,adapterOptions:e.adapterOptions,runtimeDefaults:e.runtimeDefaults,runtimeFallback:e.runtimeFallback,idFactory:e.idFactory??Ae});u.push(S),o.push(S.reasonCode)}return{ok:u.every(l=>l.outcome!=="failed")&&c.rejectedCount===0,enqueuedAttemptCount:c.enqueuedCount,dueAttemptCount:_.length,processedAttemptCount:u.filter(l=>l.outcome!=="ignored").length,recoveredAttemptIds:p.recoveredAttemptIds,receipts:u,reasonCodes:z(o.length>0?o:[m.OK]),publicSafe:!0}}function ue(e){let t=0,r=0;const a=[];for(const n of he(e.metadata)){if(!h(n)||n.kind!=="run_yolo")continue;const s=pe(n);if(!s.ok){r+=1,a.push(s.reasonCode);continue}const o=s.directive;if(!e.store.jobExists(o.jobId)){r+=1,a.push($.BYPASS_BLOCKED);continue}const u=Se(o);if(e.store.hasCompletedHeadlessExecutionDirectiveHash(u)){a.push(m.EXECUTION_COMPLETED);continue}const d=Z({autonomousKind:"run_yolo",source:ye(o.metadata,"headless-run-yolo"),targetKind:"story",targetRef:o.targetRef,storyId:o.storyId??v(o.targetRef),jobId:o.jobId,operationSeed:o.operationId,commandHash:g(o.commandRef)}),c=G(e.store,d,e.nowIso,{requireExistingJob:!0});if(!c.ok){r+=1,a.push(c.reasonCode);continue}const p=L("attempt",o.idempotencyKey),I=L("exec",o.operationId),_=e.store.enqueueHeadlessExecutionAttempt({attemptId:p,executionId:I,jobId:o.jobId,directiveHash:u,directiveKind:"run_yolo",commandClass:o.commandClass,targetKind:"story",targetRef:o.targetRef,storyId:o.storyId??v(o.targetRef),runtimeId:o.runtime?.runtimeId,modelId:o.runtime?.modelId,runtimeSource:Ce(o.runtime?.source),reasonCode:o.reasonCode,publicSummary:o.publicSummary,enqueuedAt:e.nowIso,notBeforeAt:e.nowIso,maxAttempts:e.maxAttempts,queueCap:e.queueCap,operationId:`${o.operationId}:enqueue`,idempotencyKey:o.idempotencyKey,counts:{directives:1},hashes:{directive:u},redactionSummary:o.redactionSummary,relativePaths:[o.targetRef],metadata:K(d,{schemaVersion:1,contractVersion:"continuity-v1",jobId:o.jobId,operationId:o.operationId,reasonCode:o.reasonCode??m.OK,targetRef:o.targetRef,directiveHash:u,...o.executionMode?{executionMode:o.executionMode}:{}})});if(!_.accepted){r+=1,a.push(_.reasonCode??"queue-cap-reached");continue}_.inserted&&(t+=1),a.push(m.OK)}return{enqueuedCount:t,rejectedCount:r,reasonCodes:z(a)}}async function ce(e){const t=e.now(),r=e.idFactory("lease",e.attempt.attempt_id),a=F(t,e.leaseMs);if(!e.store.claimHeadlessExecutionAttempt({attemptId:e.attempt.attempt_id,leaseId:r,runnerId:e.runnerId,claimedAt:t,leaseExpiresAt:a,reasonCode:m.OK}).inserted)return{attemptId:e.attempt.attempt_id,executionId:e.attempt.execution_id,jobId:e.attempt.job_id,status:e.attempt.status,outcome:"ignored",reasonCode:"lease-conflict",timestamp:t,redactionSummary:[],publicSafe:!0};if(e.store.hasCompletedHeadlessExecutionDirectiveHash(e.attempt.directive_hash,e.attempt.attempt_id))return k(e.store,e.attempt,{leaseId:r,runnerId:e.runnerId,status:"skipped",receiptStatus:"ignored",reasonCode:m.EXECUTION_COMPLETED,publicSummary:"Skipped duplicate run_yolo directive because the directive hash is already completed.",completedAt:e.now(),counts:{duplicateDirectiveHashes:1},hashes:{directive:e.attempt.directive_hash},redactionSummary:[],relativePaths:[e.attempt.target_ref]});const o=me(e);if(!o.ok)return k(e.store,e.attempt,{leaseId:r,runnerId:e.runnerId,status:o.status,receiptStatus:o.receiptStatus,reasonCode:o.reasonCode,publicSummary:o.publicSummary,completedAt:e.now(),counts:{rejectedDirectives:1},hashes:{directive:e.attempt.directive_hash},redactionSummary:o.redactionSummary,relativePaths:H(e.attempt)});const u=e.registry.getAdapter(o.input.runtimeId);if(!u.ok)return k(e.store,e.attempt,{leaseId:r,runnerId:e.runnerId,status:"failed",receiptStatus:"failed",reasonCode:u.reasonCode,publicSummary:u.publicSummary,completedAt:e.now(),counts:{rejectedAdapters:1},hashes:{directive:e.attempt.directive_hash},redactionSummary:u.redactionSummary,relativePaths:[e.attempt.target_ref],runtimeId:o.input.runtimeId,modelId:o.input.modelId,runtimeSource:o.input.runtimeSource});let d;try{d=await u.adapter.execute(o.input,{...e.adapterOptions,cwd:e.adapterOptions?.cwd??e.projectRoot})}catch{d={status:"failed",adapterId:o.input.runtimeId,runtimeId:o.input.runtimeId,...o.input.modelId?{modelId:o.input.modelId}:{},...o.input.runtimeSource?{runtimeSource:o.input.runtimeSource}:{},reasonCode:m.EXECUTION_FAILED,reasonCodes:[m.EXECUTION_FAILED,m.RECEIPT_REDACTED],exitCode:1,signal:null,durationMs:0,counts:{adapterExceptions:1},hashes:{directive:e.attempt.directive_hash},publicSummary:"Headless adapter failed with public-safe exception summary.",redactionSummary:[i("adapter","raw_log","value-denied")],relativePaths:[e.attempt.target_ref],receipt:o.input.receipt,publicSafe:!0}}const c=Ie(e.attempt,d,e.maxAttempts,e.backoffMs,e.now()),p=c.retry?"backoff":d.status,I=c.retry?m.EXECUTION_BACKOFF:d.reasonCode,_=p==="completed"?"applied":p==="backoff"?"deferred":p==="skipped"?"ignored":"failed";return k(e.store,e.attempt,{leaseId:r,runnerId:e.runnerId,status:p,receiptStatus:_,reasonCode:I,publicSummary:c.retry?"Headless run_yolo execution scheduled bounded retry after transient adapter outcome.":d.publicSummary,completedAt:e.now(),durationMs:d.durationMs,notBeforeAt:c.notBeforeAt,retryCount:c.retryCount,counts:d.counts,hashes:{...d.hashes,directive:e.attempt.directive_hash},redactionSummary:d.redactionSummary,relativePaths:d.relativePaths.length>0?d.relativePaths:[e.attempt.target_ref],runtimeId:d.runtimeId,modelId:d.modelId,runtimeSource:d.runtimeSource})}function me(e){const t=P(e.attempt.metadata_json,{autonomousKind:"run_yolo",jobId:e.attempt.job_id,targetKind:"story",targetRef:e.attempt.target_ref});if(!t.ok)return{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:m.DIRECTIVE_REJECTED,publicSummary:t.publicSummary,redactionSummary:t.redactionSummary};const r=g(`*yolo @${e.attempt.target_ref}`),a=g(`*yolo @${e.attempt.target_ref} branchless-preparation`),n=t.envelope.hashes.command===a;if(!n&&t.envelope.hashes.command!==r)return{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:m.DIRECTIVE_REJECTED,publicSummary:"Headless run_yolo governance command does not match an authorized execution mode.",redactionSummary:[i("autonomousGovernance.commandHash","prompt_body","operation-denied")]};const s=fe(e.attempt);if(!s.ok)return s;const o=le(e);return o.ok?{ok:!0,input:{promptKind:n?"yolo-branchless-preparation":"yolo",targetKind:"story",targetRef:e.attempt.target_ref,...e.attempt.story_id?{storyId:e.attempt.story_id}:{},runtimeId:o.runtimeId,...o.modelId?{modelId:o.modelId}:{},runtimeSource:o.runtimeSource,timeoutMs:e.timeoutMs,receipt:{attemptId:e.attempt.attempt_id,subagentId:e.attempt.attempt_id,executionId:e.attempt.execution_id,jobId:e.attempt.job_id,operationId:e.attempt.execution_id,idempotencyKey:e.attempt.directive_hash,runnerId:e.runnerId},publicSummary:A(e.attempt.public_summary??"Headless run_yolo execution attempt."),publicSafe:!0}}:{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:o.reasonCode,publicSummary:o.publicSummary,redactionSummary:o.redactionSummary}}function le(e){const t=e.runtimeDefaults!==void 0?e.runtimeDefaults:W({projectRoot:e.projectRoot});if(h(t)&&t.ok===!1)return{ok:!1,reasonCode:m.RUNTIME_UNTRUSTED,publicSummary:typeof t.publicSummary=="string"?t.publicSummary:"Headless runtime defaults failed public-safety validation.",redactionSummary:Array.isArray(t.redactionSummary)?t.redactionSummary:[]};const r=Ee(e.attempt.runtime_source)??"explicit",a=e.attempt.runtime_id||e.attempt.model_id?{...e.attempt.runtime_id?{runtimeId:e.attempt.runtime_id}:{},...e.attempt.model_id?{modelId:e.attempt.model_id}:{},source:r,publicSafe:!0}:void 0,n={registry:e.registry,defaults:t,fallback:e.runtimeFallback};a&&(r==="origin"?n.origin=a:r==="default"?n.projectDefault=a:r==="fallback"?n.fallback=a:n.explicit=a);const s=Q(n);return s.ok?{ok:!0,runtimeId:s.runtimeId,...s.modelId?{modelId:s.modelId}:{},runtimeSource:s.runtimeSource}:{ok:!1,reasonCode:s.reasonCode,publicSummary:s.publicSummary,redactionSummary:s.redactionSummary}}function fe(e){const t=[];e.directive_kind!=="run_yolo"&&t.push(i("directiveKind","unsafe_key","value-denied")),e.target_kind!=="story"&&t.push(i("targetKind","prompt_body","value-denied")),(!O.test(e.target_ref)||b.test(e.target_ref)||y.test(e.target_ref))&&t.push(i("targetRef","prompt_body","value-denied"));const r=v(e.target_ref);return e.story_id&&e.story_id!==r&&t.push(i("storyId","prompt_body","value-denied")),t.length>0?{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:m.PROMPT_REJECTED,publicSummary:"Headless run_yolo attempt did not match the canonical public story prompt shape.",redactionSummary:t}:{ok:!0,input:{promptKind:"yolo",targetKind:"story",targetRef:e.target_ref,...e.story_id?{storyId:e.story_id}:{},runtimeId:"fake",publicSafe:!0}}}function pe(e){const t=[];for(const C of Object.keys(e))(!de.has(C)||R.test(C))&&t.push(i(C,T(C),"key-denied"));e.publicSafe!==!0&&t.push(i("publicSafe","unsafe_key","value-denied"));const r=f(e,"kind"),a=f(e,"commandClass"),n=f(e,"jobId"),s=f(e,"operationId"),o=f(e,"idempotencyKey"),u=f(e,"targetKind"),d=f(e,"targetRef"),c=f(e,"commandRef"),p=f(e,"publicSummary"),I=f(e,"storyId"),_=f(e,"executionMode");r!=="run_yolo"&&t.push(i("kind","unsafe_key","value-denied")),a!=="goal-tick"&&a!=="loop-tick"&&t.push(i("commandClass","unsafe_key","value-denied")),j(n)||t.push(i("jobId","unsafe_key","value-denied")),j(s)||t.push(i("operationId","unsafe_key","value-denied")),j(o)||t.push(i("idempotencyKey","unsafe_key","value-denied")),(u!=="story"||!d||!O.test(d)||y.test(d))&&t.push(i("targetRef","prompt_body","value-denied")),_!==void 0&&_!=="branchless_child_preparation"&&t.push(i("executionMode","unsafe_key","value-denied"));const l=h(e.metadata)?e.metadata:void 0,S=_==="branchless_child_preparation";S&&(l?.governanceSource!=="delegated-subagent"||l.childWorkspace!=="branchless_sandbox"||l.integrationOwner!=="root_agent"||l.maxDepth!==1||typeof l.graphRevision!="string"||!/^[a-f0-9]{64}$/.test(l.graphRevision))&&t.push(i("executionMode","unsafe_key","value-denied"));const V=d?`*yolo @${d}${S?" branchless-preparation":""}`:void 0;(!c||c!==V||c.includes("@neocortex")||b.test(c)||y.test(c))&&t.push(i("commandRef","prompt_body","value-denied")),I&&d&&I!==v(d)&&t.push(i("storyId","prompt_body","value-denied")),(!p||p.length>240||y.test(p))&&t.push(i("publicSummary","unbounded_text","value-denied")),e.reasonCode!==void 0&&(typeof e.reasonCode!="string"||y.test(e.reasonCode))&&t.push(i("reasonCode","unsafe_key","value-denied"));const N=_e(e.runtime,t);e.attempts!==void 0&&x(e.attempts,"attempts",t),e.metadata!==void 0&&x(e.metadata,"metadata",t);const w=be(e.redactionSummary,t);return t.length>0||r!=="run_yolo"||!a||!n||!s||!o||!d||!c||!p?{ok:!1,reasonCode:t.some(B=>B.reason==="prompt_body")?m.PROMPT_REJECTED:m.DIRECTIVE_REJECTED,redactionSummary:t}:{ok:!0,directive:{kind:"run_yolo",commandClass:a,jobId:n,operationId:s,idempotencyKey:o,targetKind:"story",targetRef:d,commandRef:c,...I?{storyId:I}:{},...S?{executionMode:"branchless_child_preparation"}:{},...N?{runtime:N}:{},publicSummary:p,...typeof e.reasonCode=="string"?{reasonCode:e.reasonCode}:{},...l?{metadata:l}:{},...w.length>0?{redactionSummary:w}:{},publicSafe:!0}}}function ye(e,t){return e?.governanceSource==="delegated-subagent"?"delegated-subagent":t}function _e(e,t){if(e===void 0)return;if(!h(e)){t.push(i("runtime","unsafe_key","value-denied"));return}for(const s of Object.keys(e))(!ie.has(s)||R.test(s))&&t.push(i(`runtime.${s}`,T(s),"key-denied"));e.publicSafe!==!0&&t.push(i("runtime.publicSafe","unsafe_key","value-denied"));const r=f(e,"runtimeId"),a=f(e,"modelId"),n=f(e,"source");if(r&&(!/^[A-Za-z0-9][A-Za-z0-9._:-]{0,79}$/.test(r)||y.test(r)||b.test(r))&&t.push(i("runtime.runtimeId","unsafe_key","value-denied")),a&&(!/^[A-Za-z0-9][A-Za-z0-9._:+/-]{0,119}$/.test(a)||y.test(a)||b.test(a))&&t.push(i("runtime.modelId","unsafe_key","value-denied")),n!==void 0&&n!=="explicit"&&n!=="origin"&&n!=="default"&&n!=="fallback"&&n!=="unspecified"&&t.push(i("runtime.source","unsafe_key","value-denied")),e.reasonCode!==void 0&&(typeof e.reasonCode!="string"||y.test(e.reasonCode))&&t.push(i("runtime.reasonCode","unsafe_key","value-denied")),e.publicSafe===!0)return{...r?{runtimeId:r}:{},...a?{modelId:a}:{},...n==="explicit"||n==="origin"||n==="default"||n==="fallback"||n==="unspecified"?{source:n}:{},...typeof e.reasonCode=="string"?{reasonCode:e.reasonCode}:{},publicSafe:!0}}function k(e,t,r){const a=r.redactionSummary??[],n=r.relativePaths??H(t),s=U(r.counts),o=U(r.hashes),u={schemaVersion:1,contractVersion:"continuity-v1",attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,directiveHash:t.directive_hash,status:r.status,reasonCode:r.reasonCode,...r.runtimeId?{runtimeId:r.runtimeId}:{},...r.modelId?{modelId:r.modelId}:{},...r.runtimeSource?{runtimeSource:r.runtimeSource}:{},...r.retryCount!==void 0?{retryCount:r.retryCount}:{},...r.reasonCode===$.BYPASS_BLOCKED?{governanceEvidence:Y}:{},publicSummary:A(r.publicSummary)},d=P(t.metadata_json,{autonomousKind:"run_yolo",jobId:t.job_id,targetKind:"story",targetRef:t.target_ref}),c=d.ok?K(d.envelope,u):u;return e.completeHeadlessExecutionAttempt({attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,leaseId:r.leaseId,runnerId:r.runnerId,status:r.status,completedAt:r.completedAt,durationMs:r.durationMs,reasonCode:r.reasonCode,publicSummary:A(r.publicSummary),notBeforeAt:r.notBeforeAt,retryCount:r.retryCount,counts:s,hashes:o,redactionSummary:a,relativePaths:n,metadata:c}),e.recordHeadlessExecutionReceipt({receiptId:`receipt-${D("headless",`${t.attempt_id}-${r.status}`)}`,attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,status:r.receiptStatus,reasonCode:r.reasonCode,createdAt:r.completedAt,operationId:`${t.execution_id}:${r.status}:receipt`,idempotencyKey:`${t.directive_hash}:${r.status}:receipt`,counts:s,hashes:o,redactionSummary:a,relativePaths:n,metadata:c}),e.recordHeadlessExecutionSummary({eventId:`event-${D("headless-summary",`${t.attempt_id}-${r.status}`)}`,attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,status:r.status,runtimeId:r.runtimeId,modelId:r.modelId,publicSummary:A(r.publicSummary),reasonCode:r.reasonCode,createdAt:r.completedAt,durationMs:r.durationMs,counts:s,hashes:o,redactionSummary:a,relativePaths:n,metadata:c}),{attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,status:r.status,outcome:r.receiptStatus,reasonCode:r.reasonCode,timestamp:r.completedAt,redactionSummary:a,publicSafe:!0}}function Ie(e,t,r,a,n){if(!(t.status==="timed_out"||t.reasonCode===m.EXECUTION_FAILED||t.reasonCode===m.ADAPTER_UNAVAILABLE))return{retry:!1};const o=e.retry_count+1;if(o>=Math.max(1,e.max_attempts||r))return{retry:!1,retryCount:o};const u=Math.min(8,2**Math.max(0,e.retry_count));return{retry:!0,retryCount:o,notBeforeAt:F(n,a*u)}}function he(e){const t=Array.isArray(e)?e:e?[e]:[],r=[];for(const a of t){const n=a.continuityExecutionDirectives;Array.isArray(n)&&r.push(...n)}return r}function Se(e){return g(M({kind:e.kind,commandClass:e.commandClass,jobId:e.jobId,targetRef:e.targetRef,commandRef:e.commandRef,storyId:e.storyId,executionMode:e.executionMode,runtime:e.runtime}))}function M(e){return Array.isArray(e)?`[${e.map(M).join(",")}]`:h(e)?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${M(e[t])}`).join(",")}}`:JSON.stringify(e)}function x(e,t,r){if(typeof e=="string"){(y.test(e)||b.test(e))&&r.push(i(t,T(t),"value-denied"));return}if(!(e==null||typeof e=="number"||typeof e=="boolean")){if(Array.isArray(e)){e.forEach((a,n)=>x(a,`${t}.${n}`,r));return}if(h(e)){for(const[a,n]of Object.entries(e)){const s=`${t}.${a}`;R.test(a)&&r.push(i(s,T(a),"key-denied")),x(n,s,r)}return}r.push(i(t,"unsafe_key","value-denied"))}}function be(e,t){if(e===void 0)return[];if(!Array.isArray(e))return t.push(i("redactionSummary","unsafe_key","value-denied")),[];const r=[];for(const[a,n]of e.entries()){if(!h(n)||n.publicSafe!==!0){t.push(i(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}const s=f(n,"field"),o=f(n,"reason"),u=f(n,"evidence");if(!s||!o||!u||y.test(s)||y.test(o)||y.test(u)){t.push(i(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}r.push({field:s,reason:o,evidence:u,publicSafe:!0})}return r}function H(e){return O.test(e.target_ref)?[e.target_ref]:[]}function U(e){if(!e)return;const t={};for(const[r,a]of Object.entries(e))!/^[A-Za-z0-9_.:-]{1,80}$/.test(r)||R.test(r)||y.test(r)||typeof a=="string"&&y.test(a)||(t[r]=a);return Object.keys(t).length>0?t:void 0}function v(e){return e.replace(/^docs\/stories\//,"").replace(/\.story\.md$/,"")}function Ee(e){if(e==="explicit"||e==="origin"||e==="default"||e==="fallback")return e}function Ce(e){if(e==="explicit"||e==="origin"||e==="default"||e==="fallback"||e==="unspecified")return e}function T(e){return/prompt|commandRef/i.test(e)?"prompt_body":/std(?:out|err)|raw|log|transcript|stack/i.test(e)?"raw_log":/url/i.test(e)?"private_url":/path|cwd|argv|args|shell|command|binary|executable/i.test(e)?"executable_path":/secret|token|password|authorization|api[_-]?key|license/i.test(e)?"secret_or_pii":"unsafe_key"}function f(e,t){return typeof e[t]=="string"?e[t]:void 0}function j(e){return!!(e&&se.test(e)&&!y.test(e)&&!b.test(e))}function h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function D(e,t){const r=`${e}-${t}`.replace(/[^A-Za-z0-9_.:-]+/g,"-").replace(/^-+|-+$/g,"");return r.length>0&&r.length<=120?r:`${e}-${X("sha256").update(t).digest("hex").slice(0,32)}`}function L(e,t){return D(e,t)}function Ae(e,t){return D(e,`${t}-${Date.now()}-${q(4).toString("hex")}`)}function F(e,t){const r=Date.parse(e);return new Date((Number.isFinite(r)?r:Date.now())+t).toISOString()}function E(e,t,r){return Number.isFinite(e)?Math.max(t,Math.min(r,Math.floor(e))):t}function z(e){return Array.from(new Set(e))}export{re as DEFAULT_HEADLESS_EXECUTION_BACKOFF_MS,ee as DEFAULT_HEADLESS_EXECUTION_LEASE_MS,ae as DEFAULT_HEADLESS_EXECUTION_LIMIT,ne as DEFAULT_HEADLESS_EXECUTION_MAX_ATTEMPTS,te as DEFAULT_HEADLESS_EXECUTION_STALE_LEASE_AFTER_MS,oe as DEFAULT_HEADLESS_EXECUTION_TIMEOUT_MS,L as headlessExecutionEntityId,Te as runYoloExecutionPhase};
@@ -15,6 +15,15 @@ export declare const DEFAULT_HEADLESS_YOLOOP_MAX_ITERATIONS = 20;
15
15
  export declare const DEFAULT_HEADLESS_YOLOOP_MAX_DURATION_MS: number;
16
16
  export declare const DEFAULT_HEADLESS_YOLOOP_LOCAL_CONCURRENCY_CAP = 1;
17
17
  export declare const MAX_HEADLESS_YOLOOP_LOCAL_CONCURRENCY_CAP = 10;
18
+ /**
19
+ * Resolve the absent-override default from physical capacity. The explicit CLI
20
+ * option remains authoritative; this resolver is injectable for deterministic
21
+ * Node 18 fallback tests.
22
+ */
23
+ export declare function resolveDefaultHeadlessYoloopLocalConcurrencyCap(input?: {
24
+ readonly availableParallelism?: number;
25
+ readonly cpuCount?: number;
26
+ }): number;
18
27
  export declare const RUN_YOLOOP_DRIVER_STATES: readonly ["start", "lifecycle_evidence", "metadata_parse", "child_story_delegation", "reinvoke", "git_reconciliation", "terminal_git", "complete", "aborted", "backoff"];
19
28
  export type RunYoloopDriverState = (typeof RUN_YOLOOP_DRIVER_STATES)[number];
20
29
  export interface RunYoloopRootInvokeInput {
@@ -1,4 +1,4 @@
1
- import{createHash as Ee,randomBytes as Re}from"node:crypto";import{spawn as ve}from"node:child_process";import{existsSync as Pe}from"node:fs";import{dirname as Te,join as ye}from"node:path";import{fileURLToPath as xe}from"node:url";import{AUTONOMOUS_GOVERNANCE_EVIDENCE_TAG as we,AUTONOMOUS_GOVERNANCE_REASON_CODES as he,autonomousGovernanceMetadata as Le,buildAutonomousGovernanceEnvelope as De,readAutonomousGovernanceEnvelopeFromMetadata as Me,recordAutonomousGovernance as Ne}from"../../continuity/autonomous-governance.js";import{createDefaultHeadlessAdapterRegistry as je}from"./adapters.js";import{loadHeadlessRuntimeDefaults as He,resolveHeadlessRuntime as ze}from"./resolver.js";import{DEFAULT_HEADLESS_EXECUTION_BACKOFF_MS as Ke,DEFAULT_HEADLESS_EXECUTION_LEASE_MS as $e,DEFAULT_HEADLESS_EXECUTION_LIMIT as Be,DEFAULT_HEADLESS_EXECUTION_MAX_ATTEMPTS as Ue,DEFAULT_HEADLESS_EXECUTION_STALE_LEASE_AFTER_MS as Fe,DEFAULT_HEADLESS_EXECUTION_TIMEOUT_MS as Ye,headlessExecutionEntityId as V,runYoloExecutionPhase as Ve}from"./run-yolo.js";import{HEADLESS_REASON_CODES as p,boundPublicSummary as ie,hashPublicValue as w,redaction as _}from"./types.js";import{validatePhasedYoloopPlan as qe}from"./prepared-story-bundle.js";import{createAnchoredContinuousStoryCommandRunner as We,createBranchlessContinuousStoryWorkspaceManager as Ge}from"./continuous-story-workspace.js";import{executeEpicGitReconciliation as Xe,executeEpicTerminalGit as Ze}from"./epic-terminal-git-runner.js";import{createCliEpicTerminalGitAdapter as Je}from"./epic-terminal-git-cli-adapter.js";import{acquireGitLifecyclePhysicalIntegrationLock as Qe,releaseGitLifecyclePhysicalIntegrationLock as et}from"../../git/git-lifecycle-store.js";import{normalizeContinuousWriteRef as tt}from"../../../../shared/dist/yoloop/wave-decision-receipt.js";const ot=20,rt=1800*1e3,_e=1,at=10,uo=Object.freeze(["start","lifecycle_evidence","metadata_parse","child_story_delegation","reinvoke","git_reconciliation","terminal_git","complete","aborted","backoff"]),de=/^docs\/epics\/epic-[A-Za-z0-9._-]+\.md$/,nt=/^docs\/stories\/[A-Za-z0-9._-]+\.story\.md$/,ce=/^\*yolo @docs\/stories\/[A-Za-z0-9._-]+\.story\.md(?: branchless-preparation)?$/,st=/^\*yolo @docs\/stories\/[A-Za-z0-9._-]+\.story\.md branchless-preparation$/,it=/^(?:\uFEFF)?---(?:\r?\n)/,dt=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,159}$/,q=/(?:[;&|`$<>]|\$\(|\n|\r|\0)/,te=/(raw[_-]?(?:logs?|payloads?)|std(?:out|err)|stack(?:[_-]?trace)?|transcript|objective(?:[_-]?(?:text|body|prompt))|prompt(?:[_-]?(?:body|text))?|private[_-]?(?:urls?|prompts?)|secret|token|password|protected(?:[_-]?(?:field|body|bodies|internals))?|workflow(?:[_-]?body)?|step(?:[_-]?body)?|customer(?:[_-]?(?:pii|data))?|\bpii\b|authorization|api[_-]?key|license[_-]?key|argv|args|executable(?:[_-]?path)?|binary(?:[_-]?path)?|shell|cwd|command[_-]?path|vendor(?:[_-]?(?:payload|corpus|response|output)))/i,L=/(https?:\/\/\S+|(?:^|\s)(?:\/(?:home|Users|media|mnt|tmp|var|etc|private)\/\S+|[A-Za-z]:\\\S+)|ghp_[A-Za-z0-9_]+|sk-[A-Za-z0-9_-]+|-----BEGIN [A-Z ]*PRIVATE KEY-----|authorization\s*:|password\s*=|token\s*=|api[_-]?key\s*=|license[_-]?key\s*=|raw[_-]?(?:logs?)\s*[:=]|transcript|stack\s*trace|stderr:|stdout:|system prompt|workflow body|step body|PROTECTED_|PRIVATE_INTERNALS|CUSTOMER_PII|\bPII\b|VENDOR_CORPUS|P190[_-]?SYNTHETIC[_-]?(?:HEADLESS|CONTINUITY))/i,ct=new Set(["no_private_prompt_or_history","no_raw_vendor_corpus","no_unrelated_story_context"]);function Ce(e){return it.test(e)||e.includes("@neocortex")||e.includes("*yoloop")||q.test(e)||L.test(e)}function po(e){return!Ce(e)&&ce.test(e)}const lt=new Set(["schemaVersion","contractVersion","kind","commandClass","jobId","operationId","idempotencyKey","targetKind","targetRef","commandRef","epicId","runtime","publicSummary","reasonCode","attempts","metadata","redactionSummary","publicSafe"]),ut=new Set(["runtimeId","modelId","source","reasonCode","publicSafe"]),pt="job-aborted",mt="max-iterations-reached",ft="max-duration-reached",yt=new Set(["git-lifecycle-integration-backpressure","git-lifecycle-integration-lock-failed","git-lifecycle-integration-lock-release-failed"]);async function ht(e,t){const o=Te(xe(import.meta.url)),a=ye(o,"../../commands/invoke.js"),r=Pe(a)?a:ye(o,"../../../dist/commands/invoke.js");return new Promise(s=>{const n=ve(process.execPath,["--input-type=module","-e",`
1
+ import{createHash as De,randomBytes as Me}from"node:crypto";import{spawn as Ne}from"node:child_process";import{existsSync as He}from"node:fs";import*as Ce from"node:os";import{dirname as je,join as Ie}from"node:path";import{fileURLToPath as Be}from"node:url";import{AUTONOMOUS_GOVERNANCE_EVIDENCE_TAG as Ke,AUTONOMOUS_GOVERNANCE_REASON_CODES as Se,autonomousGovernanceMetadata as be,buildAutonomousGovernanceEnvelope as Ue,readAutonomousGovernanceEnvelopeFromMetadata as ge,recordAutonomousGovernance as ze}from"../../continuity/autonomous-governance.js";import{createDefaultHeadlessAdapterRegistry as $e}from"./adapters.js";import{loadHeadlessRuntimeDefaults as Ye,resolveHeadlessRuntime as Fe}from"./resolver.js";import{DEFAULT_HEADLESS_EXECUTION_BACKOFF_MS as Ve,DEFAULT_HEADLESS_EXECUTION_LEASE_MS as qe,DEFAULT_HEADLESS_EXECUTION_LIMIT as We,DEFAULT_HEADLESS_EXECUTION_MAX_ATTEMPTS as Ge,DEFAULT_HEADLESS_EXECUTION_STALE_LEASE_AFTER_MS as Xe,DEFAULT_HEADLESS_EXECUTION_TIMEOUT_MS as Ze,headlessExecutionEntityId as V,runYoloExecutionPhase as Je}from"./run-yolo.js";import{HEADLESS_REASON_CODES as p,boundPublicSummary as de,hashPublicValue as L,redaction as _}from"./types.js";import{validatePhasedYoloopPlan as Qe}from"./prepared-story-bundle.js";import{createAnchoredContinuousStoryCommandRunner as et,createBranchlessContinuousStoryWorkspaceManager as tt}from"./continuous-story-workspace.js";import{executeEpicGitReconciliation as ot,executeEpicTerminalGit as rt}from"./epic-terminal-git-runner.js";import{createCliEpicTerminalGitAdapter as at}from"./epic-terminal-git-cli-adapter.js";import{acquireGitLifecyclePhysicalIntegrationLock as nt,releaseGitLifecyclePhysicalIntegrationLock as st}from"../../git/git-lifecycle-store.js";import{normalizeContinuousWriteRef as it}from"../../../../shared/dist/yoloop/wave-decision-receipt.js";const dt=20,ct=1800*1e3,ce=1,Ae=10;function ke(e={}){let o=e.availableParallelism;if(o===void 0){const t=Ce.availableParallelism;if(typeof t=="function")try{o=t()}catch{o=void 0}}if(!Number.isFinite(o)||(o??0)<1){const t=e.cpuCount??(()=>{try{return Ce.cpus().length}catch{return ce}})();o=Number.isFinite(t)&&t>0?t:ce}return $(o??ce,1,Ae)}const _o=Object.freeze(["start","lifecycle_evidence","metadata_parse","child_story_delegation","reinvoke","git_reconciliation","terminal_git","complete","aborted","backoff"]),le=/^docs\/epics\/epic-[A-Za-z0-9._-]+\.md$/,lt=/^docs\/stories\/[A-Za-z0-9._-]+\.story\.md$/,ue=/^\*yolo @docs\/stories\/[A-Za-z0-9._-]+\.story\.md(?: branchless-preparation)?$/,ut=/^\*yolo @docs\/stories\/[A-Za-z0-9._-]+\.story\.md branchless-preparation$/,pt=/^(?:\uFEFF)?---(?:\r?\n)/,mt=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,159}$/,q=/(?:[;&|`$<>]|\$\(|\n|\r|\0)/,oe=/(raw[_-]?(?:logs?|payloads?)|std(?:out|err)|stack(?:[_-]?trace)?|transcript|objective(?:[_-]?(?:text|body|prompt))|prompt(?:[_-]?(?:body|text))?|private[_-]?(?:urls?|prompts?)|secret|token|password|protected(?:[_-]?(?:field|body|bodies|internals))?|workflow(?:[_-]?body)?|step(?:[_-]?body)?|customer(?:[_-]?(?:pii|data))?|\bpii\b|authorization|api[_-]?key|license[_-]?key|argv|args|executable(?:[_-]?path)?|binary(?:[_-]?path)?|shell|cwd|command[_-]?path|vendor(?:[_-]?(?:payload|corpus|response|output)))/i,D=/(https?:\/\/\S+|(?:^|\s)(?:\/(?:home|Users|media|mnt|tmp|var|etc|private)\/\S+|[A-Za-z]:\\\S+)|ghp_[A-Za-z0-9_]+|sk-[A-Za-z0-9_-]+|-----BEGIN [A-Z ]*PRIVATE KEY-----|authorization\s*:|password\s*=|token\s*=|api[_-]?key\s*=|license[_-]?key\s*=|raw[_-]?(?:logs?)\s*[:=]|transcript|stack\s*trace|stderr:|stdout:|system prompt|workflow body|step body|PROTECTED_|PRIVATE_INTERNALS|CUSTOMER_PII|\bPII\b|VENDOR_CORPUS|P190[_-]?SYNTHETIC[_-]?(?:HEADLESS|CONTINUITY))/i,ft=new Set(["no_private_prompt_or_history","no_raw_vendor_corpus","no_unrelated_story_context"]);function Oe(e){return pt.test(e)||e.includes("@neocortex")||e.includes("*yoloop")||q.test(e)||D.test(e)}function Co(e){return!Oe(e)&&ue.test(e)}const yt=new Set(["schemaVersion","contractVersion","kind","commandClass","jobId","operationId","idempotencyKey","targetKind","targetRef","commandRef","epicId","runtime","publicSummary","reasonCode","attempts","metadata","redactionSummary","publicSafe"]),ht=new Set(["runtimeId","modelId","source","reasonCode","publicSafe"]),_t="job-aborted",Ct="max-iterations-reached",It="max-duration-reached",St=new Set(["git-lifecycle-integration-backpressure","git-lifecycle-integration-lock-failed","git-lifecycle-integration-lock-release-failed"]),Ee=new Set(["yoloop-per-run-cap-resumable","yoloop-session-timeout-resumable"]);async function bt(e,o){const t=je(Be(import.meta.url)),a=Ie(t,"../../commands/invoke.js"),r=He(a)?a:Ie(t,"../../../dist/commands/invoke.js");return new Promise(s=>{const n=Ne(process.execPath,["--input-type=module","-e",`
2
2
  import { pathToFileURL } from 'node:url';
3
3
  process.once('message', async ({ modulePath, options }) => {
4
4
  try {
@@ -7,4 +7,4 @@ import{createHash as Ee,randomBytes as Re}from"node:crypto";import{spawn as ve}f
7
7
  process.send(result, () => process.exit(0));
8
8
  } catch { process.exit(1); }
9
9
  });
10
- `],{cwd:t.projectRoot,stdio:["ignore","pipe","pipe","ipc"],windowsHide:!0});let d,i=0,c=!1;const y=setTimeout(()=>{c=!0,n.kill()},t.timeoutMs),m=f=>{i+=f.length,i>32*1024*1024&&(c=!0,n.kill())};n.stdout?.on("data",m),n.stderr?.on("data",m),n.on("message",f=>{if(d||!I(f)||typeof f.success!="boolean"||Buffer.byteLength(JSON.stringify(f))>32*1024*1024){c=!0,n.kill();return}d=f});const l={success:!1,errorCode:"headless-root-invoke-failed",error:"The isolated root metadata invocation did not complete.",exitCode:1};n.on("error",()=>{c=!0}),n.on("close",f=>{clearTimeout(y),s(f===0&&!c&&d?d:l)}),n.send({modulePath:r,options:e},f=>{f&&(c=!0,n.kill())})})}async function _t(e,t=ht){const o=Date.now(),a={args:e.args,projectRoot:e.projectRoot,format:"json",platformTarget:"runner",serverUrl:e.serverUrl,strictReadOnly:e.strictReadOnly},r=await t(a,{projectRoot:e.projectRoot,timeoutMs:e.timeoutMs});return{success:r.success,instructions:r.instructions,metadata:r.metadata,error:r.error,errorCode:r.errorCode,exitCode:r.exitCode,durationMs:Date.now()-o,publicSafe:!0}}async function mo(e){const t=e.adapterRegistry??je(),o=U(e.limit??Be,1,10),a=U(e.leaseMs??$e,1e3,3600*1e3),r=U(e.staleLeaseAfterMs??Fe,0,1440*60*1e3),s=U(e.maxAttempts??Ue,1,10),n=U(e.localConcurrencyCap??_e,1,at),d=[],i=[],c=e.now(),y=Ct({store:e.store,metadata:e.metadata,nowIso:c,maxAttempts:s,queueCap:e.queueCap});d.push(...y.reasonCodes);const m=e.store.recoverStaleHeadlessExecutionAttempts({nowIso:c,staleAfterMs:r,limit:o*2});m.recoveredAttemptIds.length>0&&(d.push(p.EXECUTION_BACKOFF),m.failedAttemptIds.length>0&&d.push(p.EXECUTION_TIMEOUT));const l=e.store.listDueHeadlessExecutionAttempts({nowIso:e.now(),limit:Math.max(o*5,10)}).filter(f=>f.directive_kind==="run_yoloop").slice(0,o);for(const f of l){const A=await It({store:e.store,projectRoot:e.projectRoot,runnerId:e.runnerId,attempt:f,registry:t,now:e.now,leaseMs:a,timeoutMs:U(e.timeoutMs??Ye,1e3,18e5),backoffMs:U(e.backoffMs??Ke,1e3,36e5),maxAttempts:s,maxIterations:U(e.maxIterations??ot,1,100),maxDurationMs:U(e.maxDurationMs??rt,1e3,72e5),localConcurrencyCap:n,queueCap:e.queueCap,adapterOptions:e.adapterOptions,runtimeDefaults:e.runtimeDefaults,runtimeFallback:e.runtimeFallback,yoloopInvoker:e.yoloopInvoker??_t,serverUrl:e.serverUrl,idFactory:e.idFactory??Vt,continuousWorkspaceManager:e.continuousWorkspaceManager??Ge(),terminalGitAdapter:e.terminalGitAdapter??Je(e.projectRoot)});i.push(A),d.push(A.reasonCode,...A.workerPoolSummary.reasonCodes)}return{ok:i.every(f=>f.outcome!=="failed")&&y.rejectedCount===0,enqueuedAttemptCount:y.enqueuedCount,dueAttemptCount:l.length,processedAttemptCount:i.filter(f=>f.outcome!=="ignored").length,recoveredAttemptIds:m.recoveredAttemptIds,receipts:i,reasonCodes:B(d.length>0?d:[p.OK]),publicSafe:!0}}function Ct(e){let t=0,o=0;const a=[];for(const r of Ht(e.metadata)){if(!I(r)||r.kind!=="run_yoloop")continue;const s=kt(r);if(!s.ok){o+=1,a.push(s.reasonCode);continue}const n=s.directive;if(!e.store.jobExists(n.jobId)){o+=1,a.push(he.BYPASS_BLOCKED);continue}const d=zt(n);if(e.store.hasCompletedHeadlessExecutionDirectiveHash(d)){a.push(p.EXECUTION_COMPLETED);continue}const i=De({autonomousKind:"run_yoloop",source:"headless-run-yoloop",targetKind:"epic",targetRef:n.targetRef,epicId:n.epicId??re(n.targetRef),jobId:n.jobId,operationSeed:n.operationId,commandHash:w(n.commandRef)}),c=Ne(e.store,i,e.nowIso,{requireExistingJob:!0});if(!c.ok){o+=1,a.push(c.reasonCode);continue}const y=V("attempt",n.idempotencyKey),m=V("exec",n.operationId),l=e.store.enqueueHeadlessExecutionAttempt({attemptId:y,executionId:m,jobId:n.jobId,directiveHash:d,directiveKind:"run_yoloop",commandClass:n.commandClass,targetKind:"epic",targetRef:n.targetRef,epicId:n.epicId??re(n.targetRef),runtimeId:n.runtime?.runtimeId,modelId:n.runtime?.modelId,runtimeSource:Yt(n.runtime?.source),reasonCode:n.reasonCode,publicSummary:n.publicSummary,enqueuedAt:e.nowIso,notBeforeAt:e.nowIso,maxAttempts:e.maxAttempts,queueCap:e.queueCap,operationId:`${n.operationId}:enqueue`,idempotencyKey:n.idempotencyKey,counts:{directives:1},hashes:{directive:d},redactionSummary:n.redactionSummary,relativePaths:[n.targetRef],metadata:Le(i,{schemaVersion:1,contractVersion:"continuity-v1",jobId:n.jobId,operationId:n.operationId,reasonCode:n.reasonCode??p.OK,targetRef:n.targetRef,directiveHash:d})});if(!l.accepted){o+=1,a.push(l.reasonCode??"queue-cap-reached");continue}l.inserted&&(t+=1),a.push(p.OK)}return{enqueuedCount:t,rejectedCount:o,reasonCodes:B(a)}}async function It(e){const t=e.now(),o=e.idFactory("lease",e.attempt.attempt_id),a=Oe(t,e.leaseMs);if(!e.store.claimHeadlessExecutionAttempt({attemptId:e.attempt.attempt_id,leaseId:o,runnerId:e.runnerId,claimedAt:t,leaseExpiresAt:a,reasonCode:p.OK}).inserted)return Mt(e.attempt,{status:e.attempt.status,receiptStatus:"ignored",reasonCode:"lease-conflict",timestamp:t});if(e.store.hasCompletedHeadlessExecutionDirectiveHash(e.attempt.directive_hash,e.attempt.attempt_id))return ue(e.store,e.attempt,{leaseId:o,runnerId:e.runnerId,status:"skipped",receiptStatus:"ignored",reasonCode:p.EXECUTION_COMPLETED,publicSummary:"Skipped duplicate run_yoloop directive because the directive hash is already completed.",completedAt:e.now(),counts:me(),hashes:{directive:e.attempt.directive_hash},redactionSummary:[],relativePaths:[e.attempt.target_ref],childStoryIds:[],stateTransitions:["start","complete"]});const n=gt(e);if(!n.ok)return ue(e.store,e.attempt,{leaseId:o,runnerId:e.runnerId,status:n.status,receiptStatus:n.receiptStatus,reasonCode:n.reasonCode,publicSummary:n.publicSummary,completedAt:e.now(),counts:me(),hashes:{directive:e.attempt.directive_hash},redactionSummary:n.redactionSummary,relativePaths:Bt(e.attempt),childStoryIds:[],stateTransitions:["start"]});const d=await St({...e,prepared:n.input}),i=Nt(e.attempt,d,e.maxAttempts,e.backoffMs,e.now()),c=i.retry?"backoff":d.status,y=i.retry?"deferred":d.receiptStatus,m=i.retry?yt.has(d.reasonCode)?d.reasonCode:p.EXECUTION_BACKOFF:d.reasonCode,l=i.retry?"Headless run_yoloop execution scheduled bounded retry after transient metadata/runtime outcome.":d.publicSummary;return ue(e.store,e.attempt,{leaseId:o,runnerId:e.runnerId,status:c,receiptStatus:y,reasonCode:m,publicSummary:l,completedAt:e.now(),durationMs:d.durationMs,notBeforeAt:i.notBeforeAt,retryCount:i.retryCount,counts:d.counts,workerPoolSummary:d.workerPoolSummary,hashes:{...d.hashes,directive:e.attempt.directive_hash},redactionSummary:d.redactionSummary,relativePaths:d.relativePaths,childStoryIds:d.childStoryIds,runtimeId:n.input.runtimeId,modelId:n.input.modelId,runtimeSource:n.input.runtimeSource,stateTransitions:d.stateTransitions})}async function St(e){const t=Date.now(),o=["start"],a=new Set,r=[],s=[],n={root:w(e.prepared.rootPrompt)},d=[_("rootPrompt","prompt_body",n.root)];let i=0,c=0,y=0,m=0,l=0,f=0,A;const u=ge(e.localConcurrencyCap),h=new Map;let D=!1;const T=new Map,H=new Map,ae=v=>{const b=v.child;n[`child-${b.storyId.replace(/[^A-Za-z0-9_.:-]/g,"-")}`]=v.commandHash,d.push(v.promptRedaction);const S=v.receipt;if(v.terminalFailure){if(v.deferredFailure){T.set(b.storyId,v.terminalFailure),u.backpressurePauseCount+=1;return}T.delete(b.storyId),H.set(b.storyId,v.terminalFailure),a.has(b.storyId)||(a.add(b.storyId),r.push(b.storyId),s.push(b.targetRef),y+=1);return}if(!S||S.outcome==="deferred"){T.set(b.storyId,v.reasonCodes.includes("queue-cap-reached")?p.WORKER_POOL_BACKPRESSURE_PAUSED:S?.reasonCode||p.EXECUTION_BACKOFF),v.reasonCodes.includes("queue-cap-reached")&&(u.backpressurePauseCount+=1);return}T.delete(b.storyId),!a.has(b.storyId)&&(a.add(b.storyId),r.push(b.storyId),s.push(b.targetRef),S.outcome==="failed"?(y+=1,H.set(b.storyId,S.reasonCode||p.EXECUTION_FAILED)):S.outcome==="ignored"?m+=1:c+=1)},J=async()=>{const v=await Promise.race([...h.entries()].map(([b,S])=>S.promise.then(K=>({storyId:b,result:K}))));h.delete(v.storyId),u.completedChildCount+=1,u.pendingChildCount=h.size,ae(v.result)};for(;;){if(i>=e.maxIterations)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:mt,publicSummary:"Headless yoloop reached the bounded iteration limit before completion metadata.",retryable:!1,startedAt:t,counts:E(i,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});if(Date.now()-t>e.maxDurationMs)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:ft,publicSummary:"Headless yoloop reached the bounded duration limit before completion metadata.",retryable:!1,startedAt:t,counts:E(i,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});if(e.terminalGitAdapter.prepareLifecycleEvidence){o.push("lifecycle_evidence");const g=await e.terminalGitAdapter.prepareLifecycleEvidence({epicId:e.prepared.epicId,nowIso:e.now()});if(!g.ok)return o.push("backoff"),R({status:g.retryEligible?"backoff":"failed",receiptStatus:g.retryEligible?"deferred":"failed",reasonCode:g.reasonCode,publicSummary:"Headless yoloop stopped because physical Git lifecycle evidence could not be produced safely.",retryable:g.retryEligible,startedAt:t,counts:E(i,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});A=g.p205Authority}o.push("metadata_parse");const v=await e.yoloopInvoker({projectRoot:e.projectRoot,args:e.prepared.rootPrompt,attemptId:e.attempt.attempt_id,executionId:e.attempt.execution_id,jobId:e.attempt.job_id,runnerId:e.runnerId,iteration:i,runtimeId:e.prepared.runtimeId,...e.prepared.modelId?{modelId:e.prepared.modelId}:{},timeoutMs:e.timeoutMs,serverUrl:e.serverUrl});if(v.durationMs!==void 0&&(n[`iter-${i}`]=w(String(v.durationMs))),!v.success)return o.push("backoff"),R({status:"backoff",receiptStatus:"deferred",reasonCode:p.EXECUTION_FAILED,publicSummary:"Headless yoloop root metadata invocation failed with bounded public evidence.",retryable:!0,startedAt:t,counts:E(i,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});const b=v.metadata,S=Lt(b);if(!S.ok)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:S.reasonCode,publicSummary:S.publicSummary,retryable:!1,startedAt:t,counts:E(i,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:[...d,...S.redactionSummary],relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});if((S.aborted||S.complete||S.replay||S.outcome&&S.outcome!=="selected"&&S.outcome!=="queue_exhausted")&&D&&h.size>0){await J(),i+=1,o.push("reinvoke");continue}if(S.aborted)return f+=1,o.push("aborted"),R({status:"failed",receiptStatus:"failed",reasonCode:pt,publicSummary:"Headless yoloop stopped because public metadata reported an aborted loop.",retryable:!1,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});if(S.outcome&&S.outcome!=="selected"&&S.outcome!=="queue_exhausted")return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:`yoloop-${S.outcome}`,publicSummary:"Headless yoloop stopped on a non-executable graph-first continuation outcome.",retryable:!1,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});if(S.replay)return o.push("backoff"),R({status:"backoff",receiptStatus:"deferred",reasonCode:"yoloop-replay-pending",publicSummary:"Headless yoloop observed pending replay authority and did not delegate a second child.",retryable:!0,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});if(S.complete&&D&&T.size>0&&H.size===0)return o.push("backoff"),R({status:"backoff",receiptStatus:"deferred",reasonCode:[...T.values()].sort()[0],publicSummary:"Headless yoloop rejected terminal completion while previously runnable work remained undispatched.",retryable:!0,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});if(S.complete&&D&&H.size>0)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:[...H.values()].sort()[0],publicSummary:"Headless yoloop rejected terminal completion because runnable work failed before an accepted dispatch receipt.",retryable:!1,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});const K=xt(b);if(K){o.push("terminal_git");const g=new Date,x=await Qe(e.projectRoot,{kind:"continuous",storyId:K.epicId,sessionId:`${e.runnerId}:${e.attempt.attempt_id}`,idempotencyKey:K.idempotencyKey,persistent:!1,expiresAt:new Date(g.getTime()+Math.max(e.timeoutMs,e.maxDurationMs)+6e4).toISOString()});if(!x.ok)return o.push("backoff"),R({status:"backoff",receiptStatus:"deferred",reasonCode:x.reasonCode,publicSummary:"Headless yoloop deferred terminal Git while another physical writer retained authority.",retryable:!0,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});let z,j=!1;try{z=await Ze(K,e.terminalGitAdapter,e.now,A)}finally{j=await et(x.path,x.owner).catch(()=>!1)}if(!j)return o.push("backoff"),R({status:"backoff",receiptStatus:"deferred",reasonCode:"git-lifecycle-integration-lock-release-failed",publicSummary:"Headless yoloop stopped because terminal Git writer ownership could not be released safely.",retryable:!0,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});if(n[`terminal-git-${i}`]=w(`${z.receipt.idempotencyKey}:${z.receipt.physicalStatus}`),!z.ok){const M=z.receipt.retryEligible;return o.push("backoff"),R({status:M?"backoff":"failed",receiptStatus:M?"deferred":"failed",reasonCode:z.reasonCodes[0]??"epic-terminal-git-failed",publicSummary:"Headless yoloop stopped at the epic terminal Git boundary with public-safe retry evidence.",retryable:M,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o})}if(S.complete)return l+=1,o.push("complete"),R({status:"completed",receiptStatus:"applied",reasonCode:p.EXECUTION_COMPLETED,publicSummary:"Headless yoloop completed only after fresh root-owned physical Git verification.",retryable:!1,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});i+=1,o.push("reinvoke");continue}if(S.complete)return l+=1,o.push("complete"),R({status:"completed",receiptStatus:"applied",reasonCode:p.EXECUTION_COMPLETED,publicSummary:"Headless yoloop completed after public metadata reported yoloopComplete.",retryable:!1,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});const Q=wt(b);if(Q){o.push("git_reconciliation");const g=await Xe(Q,e.terminalGitAdapter,e.now);if(n[`git-reconciliation-${i}`]=w(`${Q.idempotencyKey}:${g.reasonCodes.join(",")}`),!g.ok)return o.push("backoff"),R({status:"backoff",receiptStatus:"deferred",reasonCode:g.reasonCodes[0]??"git-reconciliation-failed",publicSummary:"Headless yoloop paused at a fail-closed Git reconciliation boundary.",retryable:!0,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o})}const C=Ot(b,e.prepared.epicId);if(!C.ok)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:C.reasonCode,publicSummary:C.publicSummary,retryable:!1,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:[...d,...C.redactionSummary],relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});const F=C.continuous?void 0:C.prompts.find(g=>a.has(g.storyId));if(F)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:p.YOLOOP_ISOLATION_VIOLATION,publicSummary:"Headless yoloop rejected cyclic child story delegation evidence.",retryable:!1,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:[...d,_("storyId","prompt_body",w(F.storyId))],relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});if(u.mode=C.mode==="continuous_dag"?"continuous_dag":C.parallelAuthorized?"parallel_wave":"serial",u.serverMaxConcurrency=C.serverMaxConcurrency,C.continuous){D=!0;const g=C.prompts.filter(x=>!a.has(x.storyId)&&!h.has(x.storyId));if(u.pendingChildCount=g.length+h.size,g.length>0){const x=Se({store:e.store,nowIso:e.now(),localCap:e.localConcurrencyCap,serverMaxConcurrency:C.serverMaxConcurrency,parallelAuthorized:!0,continuous:!0,eligibleCount:g.length});if(u.queueCap=x.queueCap,u.availableLeases=x.availableLeases,u.effectiveConcurrency=x.effectiveConcurrency,u.reasonCodes.push(x.reasonCode),x.effectiveConcurrency===0&&h.size===0)return u.backpressurePauseCount+=1,o.push("backoff"),R({status:"backoff",receiptStatus:"deferred",reasonCode:p.WORKER_POOL_BACKPRESSURE_PAUSED,publicSummary:"Headless yoloop retained its eligible frontier while physical worker capacity was unavailable.",retryable:!0,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});const z=g.slice(0,x.effectiveConcurrency);o.push("child_story_delegation");for(const j of z)h.set(j.storyId,{child:j,promise:Ie({...e,child:j,iteration:i})});u.startedChildCount+=z.length,u.peakConcurrency=Math.max(u.peakConcurrency,h.size),u.pendingChildCount=g.length-z.length+h.size}if(h.size>0)await J();else{if(T.size>0)return o.push("backoff"),R({status:"backoff",receiptStatus:"deferred",reasonCode:[...T.values()].sort()[0],publicSummary:"Headless yoloop retained deferred continuous work for a bounded retry.",retryable:!0,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});if(H.size>0)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:[...H.values()].sort()[0],publicSummary:"Headless yoloop completed independent work and stopped on the remaining failed dependency closure.",retryable:!1,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o})}i+=1,o.push("reinvoke");continue}u.pendingChildCount=C.prompts.length;const Y=[...C.prompts];for(;Y.length>0;){const g=Se({store:e.store,nowIso:e.now(),localCap:e.localConcurrencyCap,serverMaxConcurrency:C.serverMaxConcurrency,parallelAuthorized:C.parallelAuthorized,continuous:!1,eligibleCount:Y.length});if(u.queueCap=g.queueCap,u.availableLeases=g.availableLeases,u.effectiveConcurrency=g.effectiveConcurrency,u.reasonCodes.push(g.reasonCode),g.effectiveConcurrency===0)return u.backpressurePauseCount+=1,u.pendingChildCount=Y.length,o.push("backoff"),R({status:"backoff",receiptStatus:"deferred",reasonCode:p.WORKER_POOL_BACKPRESSURE_PAUSED,publicSummary:"Headless yoloop paused child workers because bounded queue or lease capacity was unavailable.",retryable:!0,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o});const x=Y.splice(0,g.effectiveConcurrency);u.startedChildCount+=x.length,u.peakConcurrency=Math.max(u.peakConcurrency,x.length),u.pendingChildCount=Y.length,o.push("child_story_delegation");const z=await Promise.all(x.map(M=>Ie({...e,child:M,iteration:i})));u.completedChildCount+=z.length;let j;for(const M of z){const ne=M.child;n[`child-${ne.storyId.replace(/[^A-Za-z0-9_.:-]/g,"-")}`]=M.commandHash,d.push(M.promptRedaction),r.push(ne.storyId),s.push(ne.targetRef),a.add(ne.storyId);const ee=M.receipt;if(!ee){M.reasonCodes.includes("queue-cap-reached")?(u.backpressurePauseCount+=1,u.pendingChildCount+=1,u.reasonCodes.push(p.WORKER_POOL_BACKPRESSURE_PAUSED),j??={kind:"deferred",reasonCode:p.WORKER_POOL_BACKPRESSURE_PAUSED}):(y+=1,j??={kind:"missing",reasonCode:p.EXECUTION_FAILED});continue}if(ee.outcome==="deferred"){j??={kind:"deferred",reasonCode:p.EXECUTION_BACKOFF};continue}if(ee.outcome==="failed"){y+=1,j??={kind:"failed",reasonCode:ee.reasonCode||p.EXECUTION_FAILED};continue}ee.outcome==="ignored"?m+=1:c+=1}if(j){const M=j.kind==="deferred";return R({status:M?"backoff":"failed",receiptStatus:M?"deferred":"failed",reasonCode:j.reasonCode,publicSummary:j.kind==="missing"?"Headless yoloop child story delegation did not produce a public receipt.":M?"Headless yoloop child story delegated bounded backoff to the root attempt.":"Headless yoloop child story execution failed with public receipt evidence.",retryable:M,startedAt:t,counts:E(i+1,r.length,c,y,m,l,f),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:o})}}i+=1,o.push("reinvoke")}}async function Ie(e){const t=e.child.dispatchId?await e.continuousWorkspaceManager.prepare({projectRoot:e.projectRoot,epicId:e.prepared.epicId,storyId:e.child.storyId,targetRef:e.child.targetRef,dispatchId:e.child.dispatchId,executionBranch:e.child.executionBranch??"",graphRevision:e.child.graphRevision??"",authorizedWriteSet:e.child.writeSet??[]}):void 0;if(t&&!t.ok)return{child:e.child,reasonCodes:[t.reasonCode],commandHash:w(e.child.commandRef),promptRedaction:_(`child.${e.child.storyId}`,"prompt_body",w(e.child.commandRef)),terminalFailure:t.reasonCode,deferredFailure:/backpressure|lease-active/.test(t.reasonCode)};const o=e.projectRoot,a=t?.ok?We(t.value):e.adapterOptions?.commandRunner,r=Dt({rootAttempt:e.attempt,child:e.child,iteration:e.iteration,runtimeId:e.prepared.runtimeId,modelId:e.prepared.modelId,runtimeSource:e.prepared.runtimeSource}),s=V("attempt",r.idempotencyKey);let n=!!t;try{const d=await Ve({store:e.store,projectRoot:o,runnerId:e.runnerId,now:e.now,metadata:{continuityExecutionDirectives:[r]},adapterRegistry:e.registry,adapterOptions:{...e.adapterOptions,cwd:o,env:{...e.adapterOptions?.env,...t?.ok?{NEOCORTEX_BRANCHLESS_PROJECT_ROOT:t.value.workspacePath,NEOCORTEX_BRANCHLESS_ROOT_AUTHORITY:JSON.stringify(e.child.rootAuthority)}:{}},...a?{commandRunner:a,versionRunner:a}:{}},runtimeDefaults:e.runtimeDefaults,runtimeFallback:e.runtimeFallback,timeoutMs:e.timeoutMs,maxAttempts:1,limit:1,queueCap:e.queueCap,attemptIds:[s],idFactory:e.idFactory}),i=d.receipts.find(c=>c.attemptId===s)??d.receipts[0];if(t?.ok&&i&&i.outcome!=="failed"&&i.outcome!=="deferred"){const c=await e.continuousWorkspaceManager.integrate(t.value,{receiptRefs:[`continuity:${i.attemptId}`],nowIso:i.timestamp});if(!c.ok)return{child:e.child,receipt:i,reasonCodes:[...d.reasonCodes,c.reasonCode],commandHash:w(e.child.commandRef),promptRedaction:_(`child.${e.child.storyId}`,"prompt_body",w(e.child.commandRef)),terminalFailure:c.reasonCode,deferredFailure:/backpressure|graph-revision-stale/.test(c.reasonCode)};n=!1}return{child:e.child,receipt:i,reasonCodes:d.reasonCodes,commandHash:w(e.child.commandRef),promptRedaction:_(`child.${e.child.storyId}`,"prompt_body",w(e.child.commandRef))}}finally{t?.ok&&await e.continuousWorkspaceManager.release(t.value,n)}}function Se(e){const t=e.store.collectSnapshotRows({nowIso:e.nowIso,jobLimit:1,staleLeaseLimit:1,receiptLimit:1,eventLimit:1,snapshotLimit:1}),o=Math.max(1,Math.floor(t.queue.capacity)),a=Math.max(0,Math.floor(t.queue.running)-1),r=e.continuous?Math.max(0,Math.floor(t.queue.available)):Math.max(0,Math.min(Math.max(0,e.localCap-a),Math.floor(t.queue.available))),s=e.parallelAuthorized?Math.max(1,Math.floor(e.serverMaxConcurrency)):1,n=Math.max(0,Math.min(e.continuous?e.eligibleCount:s,...e.continuous?[]:[e.localCap],o,r));return{queueCap:o,availableLeases:r,effectiveConcurrency:n,reasonCode:n===0?p.WORKER_POOL_BACKPRESSURE_PAUSED:(e.parallelAuthorized||e.continuous)&&n>1?p.WORKER_POOL_PARALLEL_ACTIVE:p.WORKER_POOL_SERIAL_FALLBACK}}function ge(e){return{mode:"serial",serverMaxConcurrency:1,localCap:e,queueCap:1,availableLeases:1,effectiveConcurrency:1,peakConcurrency:0,pendingChildCount:0,startedChildCount:0,completedChildCount:0,backpressurePauseCount:0,reasonCodes:[]}}function k(e){return{mode:e.mode,serverMaxConcurrency:$(e.serverMaxConcurrency),localCap:$(e.localCap),queueCap:$(e.queueCap),availableLeases:$(e.availableLeases),effectiveConcurrency:$(e.effectiveConcurrency),peakConcurrency:$(e.peakConcurrency),pendingChildCount:$(e.pendingChildCount),startedChildCount:$(e.startedChildCount),completedChildCount:$(e.completedChildCount),backpressurePauseCount:$(e.backpressurePauseCount),reasonCodes:B(e.reasonCodes.length>0?e.reasonCodes:[p.WORKER_POOL_SERIAL_FALLBACK]).slice(0,10),publicSafe:!0}}function le(e=_e){return k(ge(e))}function $(e){return Number.isFinite(e)?Math.max(0,Math.min(1e4,Math.floor(e))):0}function gt(e){const t=Me(e.attempt.metadata_json,{autonomousKind:"run_yoloop",jobId:e.attempt.job_id,targetKind:"epic",targetRef:e.attempt.target_ref});if(!t.ok)return{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:t.reasonCode,publicSummary:t.publicSummary,redactionSummary:t.redactionSummary};const o=At(e.attempt);if(!o.ok)return o;const a=bt(e);if(!a.ok)return{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:a.reasonCode,publicSummary:a.publicSummary,redactionSummary:a.redactionSummary};const r=e.attempt.epic_id??re(e.attempt.target_ref);return{ok:!0,input:{rootPrompt:`*yoloop @${e.attempt.target_ref}`,targetRef:e.attempt.target_ref,epicId:r,runtimeId:a.runtimeId,...a.modelId?{modelId:a.modelId}:{},runtimeSource:a.runtimeSource,publicSafe:!0}}}function At(e){const t=[];e.directive_kind!=="run_yoloop"&&t.push(_("directiveKind","unsafe_key","value-denied")),e.target_kind!=="epic"&&t.push(_("targetKind","prompt_body","value-denied")),(!de.test(e.target_ref)||q.test(e.target_ref)||L.test(e.target_ref))&&t.push(_("targetRef","prompt_body","value-denied"));const o=re(e.target_ref);return e.epic_id&&e.epic_id!==o&&t.push(_("epicId","prompt_body","value-denied")),t.length>0?{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:p.PROMPT_REJECTED,publicSummary:"Headless run_yoloop attempt did not match the canonical public epic prompt shape.",redactionSummary:t}:{ok:!0,input:{rootPrompt:`*yoloop @${e.target_ref}`,targetRef:e.target_ref,epicId:o,runtimeId:"fake",publicSafe:!0}}}function bt(e){const t=e.runtimeDefaults!==void 0?e.runtimeDefaults:He({projectRoot:e.projectRoot});if(I(t)&&t.ok===!1)return{ok:!1,reasonCode:p.RUNTIME_UNTRUSTED,publicSummary:typeof t.publicSummary=="string"?t.publicSummary:"Headless runtime defaults failed public-safety validation.",redactionSummary:Array.isArray(t.redactionSummary)?t.redactionSummary:[]};const o=Ft(e.attempt.runtime_source)??"explicit",a=e.attempt.runtime_id||e.attempt.model_id?{...e.attempt.runtime_id?{runtimeId:e.attempt.runtime_id}:{},...e.attempt.model_id?{modelId:e.attempt.model_id}:{},source:o,publicSafe:!0}:void 0,r={registry:e.registry,defaults:t,fallback:e.runtimeFallback};a&&(o==="origin"?r.origin=a:o==="default"?r.projectDefault=a:o==="fallback"?r.fallback=a:r.explicit=a);const s=ze(r);return s.ok?{ok:!0,runtimeId:s.runtimeId,...s.modelId?{modelId:s.modelId}:{},runtimeSource:s.runtimeSource}:{ok:!1,reasonCode:s.reasonCode,publicSummary:s.publicSummary,redactionSummary:s.redactionSummary}}function kt(e){const t=[];for(const h of Object.keys(e))(!lt.has(h)||te.test(h))&&t.push(_(h,Z(h),"key-denied"));e.publicSafe!==!0&&t.push(_("publicSafe","unsafe_key","value-denied"));const o=N(e,"kind"),a=N(e,"commandClass"),r=N(e,"jobId"),s=N(e,"operationId"),n=N(e,"idempotencyKey"),d=N(e,"targetKind"),i=N(e,"targetRef"),c=N(e,"commandRef"),y=N(e,"publicSummary"),m=N(e,"epicId");o!=="run_yoloop"&&t.push(_("kind","unsafe_key","value-denied")),a!=="goal-tick"&&a!=="loop-tick"&&t.push(_("commandClass","unsafe_key","value-denied")),fe(r)||t.push(_("jobId","unsafe_key","value-denied")),fe(s)||t.push(_("operationId","unsafe_key","value-denied")),fe(n)||t.push(_("idempotencyKey","unsafe_key","value-denied")),(d!=="epic"||!i||!de.test(i)||L.test(i))&&t.push(_("targetRef","prompt_body","value-denied"));const l=i?`*yoloop @${i}`:void 0;(!c||c!==l||c.includes("@neocortex")||q.test(c)||L.test(c))&&t.push(_("commandRef","prompt_body","value-denied")),m&&i&&m!==re(i)&&t.push(_("epicId","prompt_body","value-denied")),(!y||y.length>240||L.test(y))&&t.push(_("publicSummary","unbounded_text","value-denied")),e.reasonCode!==void 0&&(typeof e.reasonCode!="string"||L.test(e.reasonCode))&&t.push(_("reasonCode","unsafe_key","value-denied"));const f=jt(e.runtime,t);e.attempts!==void 0&&se(e.attempts,"attempts",t),e.metadata!==void 0&&se(e.metadata,"metadata",t);const A=I(e.metadata)?e.metadata:void 0,u=Kt(e.redactionSummary,t);return t.length>0||o!=="run_yoloop"||!a||!r||!s||!n||!i||!c||!y?{ok:!1,reasonCode:t.some(D=>D.reason==="prompt_body")?p.PROMPT_REJECTED:p.DIRECTIVE_REJECTED,redactionSummary:t}:{ok:!0,directive:{kind:"run_yoloop",commandClass:a,jobId:r,operationId:s,idempotencyKey:n,targetKind:"epic",targetRef:i,commandRef:c,...m?{epicId:m}:{},...f?{runtime:f}:{},publicSummary:y,...typeof e.reasonCode=="string"?{reasonCode:e.reasonCode}:{},...A?{metadata:A}:{},...u.length>0?{redactionSummary:u}:{},publicSafe:!0}}}function Ot(e,t){if(!e)return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop metadata was missing.",[]);const o=Et(e);if(!o.ok)return o;const a=[],r=I(e.yoloopExecutionPlan)?e.yoloopExecutionPlan:void 0,s=r?P(r.storyIds).filter(W):[],n=r?.version===3&&I(r.scheduler)&&Array.isArray(r.scheduler.nodes)?new Map(r.scheduler.nodes.filter(I).map(l=>[String(l.storyId??""),l])):new Map,d=r?.version===3&&I(r.scheduler)&&typeof r.scheduler.graphRevision=="string"?r.scheduler.graphRevision:void 0,i=r?.version===3&&typeof r.executionBranch=="string"?r.executionBranch:void 0;let c;if(r){const l=vt(r);if(!l.ok)return l;c=l;for(const A of Tt(r)){const u=X(A,t,"execution-plan");if(!u.ok)return u;a.push(Ae(u.prompt,n.get(u.prompt.storyId),d,i))}if(a.length===0)for(const A of s){const u=X(`*yolo @docs/stories/${A}.story.md`,t,"execution-plan");if(!u.ok)return u;a.push(Ae(u.prompt,n.get(u.prompt.storyId),d,i))}const f=Rt(e.skillDirectives,a);if(!f.ok)return f}const y=typeof e.nextStoryId=="string"&&W(e.nextStoryId)?e.nextStoryId:void 0;for(const l of r?[]:Array.isArray(e.skillDirectives)?e.skillDirectives:[]){if(!I(l)||l.kind!=="task")continue;const f=P(l.promptTemplates);if(f.length>0){for(const D of f){const T=X(D,t,"task-directive");if(!T.ok)return T;a.push(T.prompt)}continue}const A=typeof l.promptTemplate=="string"?l.promptTemplate:void 0;if(!A)continue;const u=P(l.storyIds).filter(W),h=u.length>0?u:y?[y]:[];if(h.length===0&&ce.test(A)){const D=X(A,t,"task-directive");if(!D.ok)return D;a.push(D.prompt);continue}for(const D of h){const T=A.includes("{storyId}")?A.replaceAll("{storyId}",D):A,H=X(T,t,"task-directive");if(!H.ok)return H;a.push(H.prompt)}}if(a.length===0&&y){const l=X(`*yolo @docs/stories/${y}.story.md`,t,"next-story");if(!l.ok)return l;a.push(l.prompt)}const m=qt(a,l=>l.commandRef);if(c?.continuous){if(m.length!==s.length||m.some(l=>l.preparationOnly!==!0||l.source!=="execution-plan"))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless continuous yoloop rejected an ambiguous or non-preparation child prompt.",[_("promptTemplates","prompt_body","operation-denied")])}else if(m.some(l=>l.preparationOnly===!0))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected branchless preparation outside a validated continuous plan.",[_("promptTemplates","prompt_body","operation-denied")]);if(s.length>0){const l=new Set(s);for(const f of m)if(!l.has(f.storyId))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a child prompt outside the server-authorized execution plan.",[_("storyId","prompt_body",w(f.storyId))])}return c?.parallelAuthorized&&!G(m.map(l=>l.storyId),s)?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop rejected a parallel plan whose executable prompts did not match the selected wave.",[]):m.length===0&&!c?.continuous?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop metadata did not include an authorized per-story child prompt.",[]):{ok:!0,prompts:m,mode:c?.mode??"legacy",serverMaxConcurrency:c?.serverMaxConcurrency??1,parallelAuthorized:c?.parallelAuthorized??!1,continuous:c?.continuous??!1,reasonCodes:[p.OK,c?.parallelAuthorized?p.WORKER_POOL_PARALLEL_ACTIVE:p.WORKER_POOL_SERIAL_FALLBACK]}}function Ae(e,t,o,a){if(!t||!o||!a)return e;const r=Array.isArray(t.writeSet)?P(t.writeSet):[],s=be(t.childExecutionAuthority,{storyId:e.storyId,invocationPrompt:e.commandRef,authorizedWriteSet:r});return{...e,...typeof t.dispatchId=="string"?{dispatchId:t.dispatchId}:{},...typeof t.idempotencyKey=="string"?{idempotencyKey:t.idempotencyKey}:{},graphRevision:o,executionBranch:a,...r.length>0?{writeSet:r}:{},...s?{rootAuthority:s}:{}}}function Et(e){const t=[];return e.nextStoryId!==void 0&&oe(e.nextStoryId,"nextStoryId",t),e.yoloopExecutionPlan!==void 0&&oe(e.yoloopExecutionPlan,"yoloopExecutionPlan",t),Array.isArray(e.skillDirectives)&&e.skillDirectives.forEach((o,a)=>{I(o)&&o.kind==="task"&&oe(o,`skillDirectives.${a}`,t)}),t.length>0?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop rejected unsafe public metadata before child delegation.",t):{ok:!0}}function Rt(e,t){if(!Array.isArray(e))return{ok:!0};const o=new Set(t.map(a=>a.commandRef));for(const[a,r]of e.entries()){if(!I(r)||r.kind!=="task")continue;const s=typeof r.promptTemplate=="string"?r.promptTemplate:void 0,n=P(r.promptTemplates);if(s==="[REDACTED]"&&r.subagentType==="neocortex"&&typeof r.reasonCode=="string"&&r.reasonCode.startsWith("directive-prompt-")&&n.length===0)continue;const i=[...s?[s]:[],...n];if(r.subagentType!=="neocortex"||i.length===0||i.some(c=>!o.has(c)))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a task directive that conflicted with the server-authorized execution plan.",[_(`skillDirectives.${a}`,"prompt_body","operation-denied")])}return{ok:!0}}function oe(e,t,o){if(typeof e=="string"){if(/\.allowedDebt\.constraints\.\d+$/.test(t)&&ct.has(e))return;(L.test(e)||/\0/.test(e))&&o.push(_(t,Z(t),"value-denied"));return}if(!(e==null||typeof e=="number"||typeof e=="boolean")){if(Array.isArray(e)){e.forEach((a,r)=>oe(a,`${t}.${r}`,o));return}if(I(e)){for(const[a,r]of Object.entries(e)){const s=`${t}.${a}`;!(a==="promptTemplate"||a==="promptTemplates"||a==="invocationPrompt"||a==="childPromptKind"||a==="allowMetaTaskPromptInChild"||a==="authorization")&&te.test(a)&&o.push(_(s,Z(a),"key-denied")),oe(r,s,o)}return}o.push(_(t,"unsafe_key","value-denied"))}}function vt(e){const t=typeof e.mode=="string"?e.mode:"",o=I(e.isolationPolicy)?e.isolationPolicy:void 0,a=P(e.storyIds);if(e.authorization!=="server_authorized")return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop execution plan was not server-authorized.",[]);if(e.executor!=="root_agent"&&e.executor!=="root_agent_with_child_tasks")return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop execution plan executor was not root-owned.",[]);if(t!=="serial"&&t!=="parallel_wave"&&t!=="continuous_dag"&&t!=="manual")return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop execution plan mode was invalid.",[]);const r=e.version===3&&t==="continuous_dag";if(!Array.isArray(e.storyIds)||!r&&a.length===0||a.length!==e.storyIds.length||a.some(h=>!W(h))||new Set(a).size!==a.length)return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop execution plan story selection was invalid or ambiguous.",[]);if(!o||o.rootOwnsLoop!==!0||o.childPromptKind==="per_story_branchless_preparation_only"&&!r||Object.prototype.hasOwnProperty.call(o,"childExecutionBoundary")&&!r||o.childPromptKind!=="per_story_yolo_only"&&o.childPromptKind!=="per_story_branchless_preparation_only"&&!(o.childPromptKind==="none"&&(t==="serial"&&o.childTaskDelegation==="not_required"||t==="parallel_wave"&&e.executor==="root_agent"&&o.childTaskDelegation==="forbidden"))||o.allowOuterYoloopInChild!==!1||o.allowMetaTaskPromptInChild!==!1)return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected an execution plan that did not preserve root-owned child isolation.",[_("isolationPolicy","prompt_body","value-denied")]);const s=Array.isArray(e.skippedStories)?e.skippedStories:[];for(const h of s){if(!I(h)||typeof h.storyId!="string"||!W(h.storyId)||typeof h.reason!="string")return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop skipped-story evidence was malformed.",[]);if(a.includes(h.storyId))return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop selected a story that server evidence marked skipped.",[])}if(r){const h=I(e.scheduler)?e.scheduler:void 0,D=Array.isArray(h?.nodes)?h.nodes.filter(I):[],T=P(h?.readyStoryIds),H=P(h?.runningStoryIds),ae=P(e.promptTemplates),J=I(e.dependencyBasis)?e.dependencyBasis:void 0,v=I(e.readinessBasis)?e.readinessBasis:void 0,b=typeof h?.graphRevision=="string"?h.graphRevision:"",S=typeof e.executionBranch=="string"?e.executionBranch:"",K=D.map(C=>typeof C.storyId=="string"?C.storyId:""),Q=D.find(C=>{const F=typeof C.storyId=="string"?C.storyId:"",Y=typeof C.promptTemplate=="string"?C.promptTemplate:"",g=Array.isArray(C.writeSet)?P(C.writeSet):[];return!W(F)||Y!==`*yolo @docs/stories/${F}.story.md branchless-preparation`||typeof C.dispatchId!="string"||!/^[a-f0-9]{64}$/.test(C.dispatchId)||typeof C.idempotencyKey!="string"||!/^[a-f0-9]{64}$/.test(C.idempotencyKey)||C.dependencyBasis!=="verified"||!Array.isArray(C.dependencies)||P(C.dependencies).length!==C.dependencies.length||!Array.isArray(C.writeSet)||g.length===0||g.length!==C.writeSet.length||!be(C.childExecutionAuthority,{storyId:F,invocationPrompt:Y,authorizedWriteSet:g})});return e.executor!=="root_agent_with_child_tasks"||e.legacyConcurrencyIgnored!==!0||Object.prototype.hasOwnProperty.call(e,"maxConcurrency")||Object.prototype.hasOwnProperty.call(e,"maxParallel")||o?.rootOwnedScheduling!=="continuous_dag_allowed"||o?.childPromptKind!=="per_story_branchless_preparation_only"||o?.childExecutionBoundary!=="filesystem_only"||o?.childTaskDelegation!=="allowed"||o?.maxDepth!==1||o?.childWorkspace!=="branchless_sandbox"||o?.epicCheckout!=="current_checkout"||o?.workspaceLifecycle!=="user_managed"||o?.integrationOwner!=="root_agent"||!h||h.schemaVersion!==1||h.strategy!=="continuous-event-driven-dag"||h.logicalConcurrency!=="ready-set"||h.capacityPolicy!=="backpressure-only"||h.rootOwnsLoop!==!0||h.maxDepth!==1||!/^[a-f0-9]{64}$/.test(b)||!$t(S)||new Set(K).size!==K.length||K.some(C=>!W(C))||T.some(C=>!K.includes(C))||H.some(C=>!K.includes(C)||T.includes(C))||!G(a,T)||ae.length!==a.length||ae.some((C,F)=>C!==`*yolo @docs/stories/${a[F]}.story.md branchless-preparation`)||!J||J.source!=="state_snapshot"||!v||v.source!=="ready_wave"||!G(P(v.selectedStoryIds),a)||Q?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop rejected an invalid continuous DAG execution plan.",[]):{ok:!0,mode:"continuous_dag",serverMaxConcurrency:a.length,parallelAuthorized:!0,continuous:!0}}if(e.version===2){const h=qe(e);return h.ok?{ok:!0,mode:"parallel_wave",serverMaxConcurrency:h.childExecutionConcurrency,parallelAuthorized:!1,continuous:!1}:O(p.YOLOOP_METADATA_INVALID,"Headless yoloop rejected an unsafe phased execution plan.",[])}if(t!=="parallel_wave")return{ok:!0,mode:t,serverMaxConcurrency:1,parallelAuthorized:!1,continuous:!1};const n=e.maxConcurrency,d=e.maxParallel,i=I(e.dependencyBasis)?e.dependencyBasis:void 0,c=I(e.readinessBasis)?e.readinessBasis:void 0,y=Array.isArray(e.parallelWaves)?e.parallelWaves:[],m=y.length===1&&I(y[0])?y[0]:void 0;if(o.rootOwnedScheduling!=="parallel_wave_allowed"||!Number.isInteger(n)||typeof n!="number"||n<2||n>a.length||!Number.isInteger(d)||d!==n||!i||i.source!=="state_snapshot"||!G(P(i.storyIds),a)||!c||c.source!=="ready_wave"||!G(P(c.selectedStoryIds),a)||!m||!G(P(m.storyIds),a)||m.maxConcurrency!==n)return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan lacked consistent bounded authorization and readiness evidence.",[]);const l=P(m.promptTemplates);if(l.length!==a.length||new Set(l).size!==l.length)return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel wave prompts were incomplete or ambiguous.",[]);const A=(Array.isArray(m.proofSummaries)?m.proofSummaries:Array.isArray(e.proofSummaries)?e.proofSummaries:[]).find(h=>I(h)&&G(P(h.storyIds),a));return!I(A)||A.dependencyClosure!=="resolved"||A.contractOwnership!=="non_overlapping"||A.validationSurfaces!=="compatible"?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan lacked resolved independence proof.",[]):s.find(h=>I(h)&&typeof h.reason=="string"&&/(cycle|unresolved|ambiguous)/i.test(h.reason))?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan contained unresolved dependency evidence.",[]):{ok:!0,mode:"parallel_wave",serverMaxConcurrency:n,parallelAuthorized:!0,continuous:!1}}function be(e,t){if(!I(e)||!I(e.artifact))return;const o=e.artifact,a=Array.isArray(e.authorizedWriteSet)?P(e.authorizedWriteSet):[];if(Object.keys(e).sort().join("\0")!==["artifact","authorizedWriteSet","effectScope","invocationPrompt","kind","lifecycleAuthority","publicSafe","schemaVersion","storyId"].sort().join("\0")||Object.keys(o).sort().join("\0")!==["content","contentBinding","kind","path","schemaVersion"].sort().join("\0")||e.schemaVersion!==1||e.kind!=="branchless_story_preparation"||e.storyId!==t.storyId||e.invocationPrompt!==t.invocationPrompt||!Array.isArray(e.authorizedWriteSet)||a.length!==e.authorizedWriteSet.length||a.some(s=>tt(s)!==s)||!Pt(a,t.authorizedWriteSet)||e.effectScope!=="filesystem_only"||e.lifecycleAuthority!=="root_only"||e.publicSafe!==!0||o.schemaVersion!==1||o.kind!=="branchless_root_bound_artifact"||typeof o.path!="string"||!a.includes(o.path)||typeof o.content!="string"||o.content.length===0||o.content.length>4096||typeof o.contentBinding!="string"||!/^[a-f0-9]{64}$/.test(o.contentBinding))return;const r=Ee("sha256").update(["branchless-root-bound-artifact-v1",t.storyId,t.invocationPrompt,...a,"filesystem_only","root_only",o.path,o.content].join("\0")).digest("hex");if(o.contentBinding===r)return e}function Pt(e,t){return e.length===t.length&&e.every((o,a)=>o===t[a])}function Tt(e){const t=[];t.push(...P(e.promptTemplates));for(const o of Array.isArray(e.serialSteps)?e.serialSteps:[])I(o)&&typeof o.promptTemplate=="string"&&t.push(o.promptTemplate);for(const o of Array.isArray(e.parallelWaves)?e.parallelWaves:[])I(o)&&t.push(...P(o.promptTemplates));return t}function X(e,t,o){if(Ce(e))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected an unsafe child prompt shape.",[_("promptTemplate","prompt_body",w(e))]);if(!ce.test(e))return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop child prompt did not match the canonical per-story yolo shape.",[_("promptTemplate","prompt_body",w(e))]);const a=st.test(e),r=e.replace(/^\*yolo @/,"").replace(/ branchless-preparation$/,""),s=Ut(r);return!nt.test(r)||!W(s)||!s.startsWith(`${t}.`)?O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a child prompt outside the targeted public epic.",[_("storyId","prompt_body",w(s))]):{ok:!0,prompt:{storyId:s,targetRef:r,commandRef:e,source:o,...a?{preparationOnly:!0}:{}}}}function xt(e){const t=e?.epicTerminalGitDirective;if(!(!I(t)||t.schemaVersion!==1||t.kind!=="epic_terminal_git"||typeof t.epicId!="string"||typeof t.executionBranch!="string"||typeof t.originBranch!="string"||typeof t.expectedExecutionHeadSha!="string"||!Array.isArray(t.storyCheckpointIds)||!I(t.localGates)||t.localGates.passed!==!0||!Array.isArray(t.localGates.receiptRefs)||!I(t.reconcile)||typeof t.idempotencyKey!="string"||t.publicSafe!==!0))return t}function wt(e){const t=e?.epicGitReconciliationDirective;if(!(!I(t)||t.schemaVersion!==1||t.kind!=="epic_git_reconciliation"||typeof t.epicId!="string"||typeof t.executionBranch!="string"||typeof t.originBranch!="string"||!["start","resume","audit"].includes(String(t.lifecycleBoundary))||typeof t.dryRun!="boolean"||typeof t.idempotencyKey!="string"||t.publicSafe!==!0))return t}function Lt(e){if(!e||!I(e))return{ok:!1,reasonCode:p.YOLOOP_METADATA_INVALID,publicSummary:"Headless yoloop root invocation did not return public metadata.",redactionSummary:[]};const t=I(e.yoloopContinuationDecision)?e.yoloopContinuationDecision:void 0,o=typeof t?.outcome=="string"?t.outcome:void 0,a=o==="queue_exhausted"||e.yoloopComplete===!0,r=e.yoloopAborted===!0,s=o==="selected"&&t?.replay===!0;return o&&!["selected","queue_exhausted","blocked","cycle","invalid","no_progress"].includes(o)?{ok:!1,reasonCode:p.YOLOOP_METADATA_INVALID,publicSummary:"Headless yoloop rejected an unknown continuation outcome.",redactionSummary:[]}:o==="queue_exhausted"&&t?.terminalSuccess!==!0?{ok:!1,reasonCode:p.YOLOOP_METADATA_INVALID,publicSummary:"Headless yoloop rejected inconsistent queue exhaustion metadata.",redactionSummary:[]}:a&&r?{ok:!1,reasonCode:p.YOLOOP_METADATA_INVALID,publicSummary:"Headless yoloop metadata reported mutually exclusive terminal states.",redactionSummary:[_("yoloopTerminal","unsafe_key","value-denied")]}:{ok:!0,complete:a,aborted:r,outcome:o,replay:s}}function Dt(e){const t=`${e.rootAttempt.execution_id}:${e.child.graphRevision??"legacy"}:${e.child.storyId}`,o=e.child.dispatchId??V("child-op",`${t}:${e.iteration}`),a=e.child.idempotencyKey??V("child-idem",`${t}:${e.iteration}`);return{schemaVersion:1,contractVersion:"continuity-v1",kind:"run_yolo",commandClass:e.rootAttempt.command_class==="goal-tick"?"goal-tick":"loop-tick",jobId:e.rootAttempt.job_id,operationId:o,idempotencyKey:a,targetKind:"story",targetRef:e.child.targetRef,commandRef:e.child.commandRef,...e.child.preparationOnly?{executionMode:"branchless_child_preparation"}:{},storyId:e.child.storyId,runtime:{runtimeId:e.runtimeId,...e.modelId?{modelId:e.modelId}:{},source:e.runtimeSource??"explicit",reasonCode:e.runtimeSource==="fallback"?p.RUNTIME_FALLBACK:p.RUNTIME_EXPLICIT,publicSafe:!0},publicSummary:`Root-owned yoloop delegated public story ${e.child.storyId}.`,reasonCode:p.OK,metadata:{governanceSource:"delegated-subagent",parentAttemptId:e.rootAttempt.attempt_id,parentExecutionId:e.rootAttempt.execution_id,iteration:e.iteration,...e.child.dispatchId?{dispatchId:e.child.dispatchId}:{},...e.child.graphRevision?{graphRevision:e.child.graphRevision}:{},...e.child.writeSet?{writeSet:e.child.writeSet}:{},...e.child.executionBranch?{executionBranch:e.child.executionBranch}:{},...e.child.graphRevision?{childWorkspace:"branchless_sandbox",epicCheckout:"current_checkout",workspaceLifecycle:"user_managed",integrationOwner:"root_agent",maxDepth:1}:{},publicSafe:!0},attempts:[],redactionSummary:[_("prompt","prompt_body",w(e.child.commandRef))],publicSafe:!0}}function ue(e,t,o){const a=ke(o.hashes),r=o.workerPoolSummary??le(),s=ke({iterations:o.counts.iterations,childCount:o.counts.childCount,succeededChildCount:o.counts.succeededChildCount,failedChildCount:o.counts.failedChildCount,skippedChildCount:o.counts.skippedChildCount,metadataCompleteCount:o.counts.metadataCompleteCount,metadataAbortedCount:o.counts.metadataAbortedCount,serverMaxConcurrency:r.serverMaxConcurrency,localCap:r.localCap,queueCap:r.queueCap,availableLeases:r.availableLeases,effectiveConcurrency:r.effectiveConcurrency,peakConcurrency:r.peakConcurrency,pendingChildCount:r.pendingChildCount,startedChildCount:r.startedChildCount,completedChildCount:r.completedChildCount,backpressurePauseCount:r.backpressurePauseCount}),n={schemaVersion:1,contractVersion:"continuity-v1",attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,directiveHash:t.directive_hash,status:o.status,reasonCode:o.reasonCode,storyIds:o.childStoryIds.slice(0,50),counts:s,hashes:a,...o.reasonCode===he.BYPASS_BLOCKED?{governanceEvidence:we}:{},reasonCodes:B([o.reasonCode,...r.reasonCodes,...o.stateTransitions]),publicSummary:ie(o.publicSummary)};return e.completeHeadlessExecutionAttempt({attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,leaseId:o.leaseId,runnerId:o.runnerId,status:o.status,completedAt:o.completedAt,durationMs:o.durationMs,reasonCode:o.reasonCode,publicSummary:ie(o.publicSummary),notBeforeAt:o.notBeforeAt,retryCount:o.retryCount,counts:s,hashes:a,redactionSummary:o.redactionSummary,relativePaths:B([t.target_ref,...o.relativePaths]),metadata:n}),e.recordHeadlessExecutionReceipt({receiptId:`receipt-${V("headless-yoloop",`${t.attempt_id}-${o.status}`)}`,attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,status:o.receiptStatus,reasonCode:o.reasonCode,createdAt:o.completedAt,operationId:`${t.execution_id}:${o.status}:receipt`,idempotencyKey:`${t.directive_hash}:${o.status}:receipt`,counts:s,hashes:a,redactionSummary:o.redactionSummary,relativePaths:B([t.target_ref,...o.relativePaths]),metadata:n}),e.recordHeadlessExecutionSummary({eventId:`event-${V("headless-yoloop-summary",`${t.attempt_id}-${o.status}`)}`,attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,status:o.status,runtimeId:o.runtimeId,modelId:o.modelId,publicSummary:ie(o.publicSummary),reasonCode:o.reasonCode,createdAt:o.completedAt,durationMs:o.durationMs,counts:s,hashes:a,redactionSummary:o.redactionSummary,relativePaths:B([t.target_ref,...o.relativePaths]),metadata:n}),{attemptId:t.attempt_id,executionId:t.execution_id,jobId:t.job_id,status:o.status,outcome:o.receiptStatus,reasonCode:o.reasonCode,timestamp:o.completedAt,childStoryIds:o.childStoryIds,aggregateCounts:o.counts,workerPoolSummary:r,redactionSummary:o.redactionSummary,publicSafe:!0}}function Mt(e,t){return{attemptId:e.attempt_id,executionId:e.execution_id,jobId:e.job_id,status:t.status,outcome:t.receiptStatus,reasonCode:t.reasonCode,timestamp:t.timestamp,childStoryIds:[],aggregateCounts:me(),workerPoolSummary:le(),redactionSummary:[],publicSafe:!0}}function Nt(e,t,o,a,r){if(!t.retryable)return{retry:!1};const s=e.retry_count+1;if(s>=Math.max(1,e.max_attempts||o))return{retry:!1,retryCount:s};const n=Math.min(8,2**Math.max(0,e.retry_count));return{retry:!0,retryCount:s,notBeforeAt:Oe(r,a*n)}}function R(e){return{status:e.status,receiptStatus:e.receiptStatus,reasonCode:e.reasonCode,publicSummary:e.publicSummary,retryable:e.retryable,durationMs:Math.max(0,Date.now()-e.startedAt),counts:e.counts,workerPoolSummary:e.workerPoolSummary??le(),hashes:e.hashes,redactionSummary:e.redactions.slice(0,50),relativePaths:B(e.relativePaths).slice(0,50),childStoryIds:B(e.childStoryIds).slice(0,50),stateTransitions:B(e.stateTransitions)}}function jt(e,t){if(e===void 0)return;if(!I(e)){t.push(_("runtime","unsafe_key","value-denied"));return}for(const s of Object.keys(e))(!ut.has(s)||te.test(s))&&t.push(_(`runtime.${s}`,Z(s),"key-denied"));e.publicSafe!==!0&&t.push(_("runtime.publicSafe","unsafe_key","value-denied"));const o=N(e,"runtimeId"),a=N(e,"modelId"),r=N(e,"source");if(o&&(!/^[A-Za-z0-9][A-Za-z0-9._:-]{0,79}$/.test(o)||L.test(o)||q.test(o))&&t.push(_("runtime.runtimeId","unsafe_key","value-denied")),a&&(!/^[A-Za-z0-9][A-Za-z0-9._:+/-]{0,119}$/.test(a)||L.test(a)||q.test(a))&&t.push(_("runtime.modelId","unsafe_key","value-denied")),r!==void 0&&r!=="explicit"&&r!=="origin"&&r!=="default"&&r!=="fallback"&&r!=="unspecified"&&t.push(_("runtime.source","unsafe_key","value-denied")),e.reasonCode!==void 0&&(typeof e.reasonCode!="string"||L.test(e.reasonCode))&&t.push(_("runtime.reasonCode","unsafe_key","value-denied")),e.publicSafe===!0)return{...o?{runtimeId:o}:{},...a?{modelId:a}:{},...r==="explicit"||r==="origin"||r==="default"||r==="fallback"||r==="unspecified"?{source:r}:{},...typeof e.reasonCode=="string"?{reasonCode:e.reasonCode}:{},publicSafe:!0}}function Ht(e){const t=Array.isArray(e)?e:e?[e]:[],o=[];for(const a of t){const r=a.continuityExecutionDirectives;Array.isArray(r)&&o.push(...r)}return o}function zt(e){return w(pe({kind:e.kind,commandClass:e.commandClass,jobId:e.jobId,targetRef:e.targetRef,commandRef:e.commandRef,epicId:e.epicId,runtime:e.runtime}))}function pe(e){return Array.isArray(e)?`[${e.map(pe).join(",")}]`:I(e)?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${pe(e[t])}`).join(",")}}`:JSON.stringify(e)}function se(e,t,o){if(typeof e=="string"){(L.test(e)||q.test(e))&&o.push(_(t,Z(t),"value-denied"));return}if(!(e==null||typeof e=="number"||typeof e=="boolean")){if(Array.isArray(e)){e.forEach((a,r)=>se(a,`${t}.${r}`,o));return}if(I(e)){for(const[a,r]of Object.entries(e)){const s=`${t}.${a}`;te.test(a)&&o.push(_(s,Z(a),"key-denied")),se(r,s,o)}return}o.push(_(t,"unsafe_key","value-denied"))}}function Kt(e,t){if(e===void 0)return[];if(!Array.isArray(e))return t.push(_("redactionSummary","unsafe_key","value-denied")),[];const o=[];for(const[a,r]of e.entries()){if(!I(r)||r.publicSafe!==!0){t.push(_(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}const s=N(r,"field"),n=N(r,"reason"),d=N(r,"evidence");if(!s||!n||!d||L.test(s)||L.test(n)||L.test(d)){t.push(_(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}o.push({field:s,reason:n,evidence:d,publicSafe:!0})}return o}function O(e,t,o){return{ok:!1,reasonCode:e,publicSummary:t,redactionSummary:o}}function P(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function $t(e){return e.length>0&&e.length<=240&&!e.startsWith("-")&&!e.includes("..")&&!e.includes("\\")&&/^[A-Za-z0-9._/-]+$/.test(e)}function G(e,t){return e.length===t.length&&new Set(e).size===e.length&&e.every(o=>t.includes(o))}function Bt(e){return de.test(e.target_ref)?[e.target_ref]:[]}function ke(e){if(!e)return;const t={};for(const[o,a]of Object.entries(e))!/^[A-Za-z0-9_.:-]{1,80}$/.test(o)||te.test(o)||L.test(o)||typeof a=="string"&&L.test(a)||(t[o]=a);return Object.keys(t).length>0?t:void 0}function me(){return E(0,0,0,0,0,0,0)}function E(e,t,o,a,r,s,n){return{iterations:e,childCount:t,succeededChildCount:o,failedChildCount:a,skippedChildCount:r,metadataCompleteCount:s,metadataAbortedCount:n}}function Ut(e){return e.replace(/^docs\/stories\//,"").replace(/\.story\.md$/,"")}function re(e){return e.replace(/^docs\/epics\/epic-/,"").replace(/\.md$/,"")}function W(e){return/^[A-Za-z0-9][A-Za-z0-9_-]*\.\d+[A-Za-z0-9_-]*$/.test(e)&&!L.test(e)&&!q.test(e)}function Ft(e){if(e==="explicit"||e==="origin"||e==="default"||e==="fallback")return e}function Yt(e){if(e==="explicit"||e==="origin"||e==="default"||e==="fallback"||e==="unspecified")return e}function Z(e){return/prompt|commandRef/i.test(e)?"prompt_body":/std(?:out|err)|raw|log|transcript|stack/i.test(e)?"raw_log":/url/i.test(e)?"private_url":/path|cwd|argv|args|shell|command|binary|executable/i.test(e)?"executable_path":/secret|token|password|authorization|api[_-]?key|license/i.test(e)?"secret_or_pii":"unsafe_key"}function N(e,t){return typeof e[t]=="string"?e[t]:void 0}function fe(e){return!!(e&&dt.test(e)&&!L.test(e)&&!q.test(e))}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Vt(e,t){return V(e,`${t}-${Date.now()}-${Re(4).toString("hex")}`)}function Oe(e,t){const o=Date.parse(e);return new Date((Number.isFinite(o)?o:Date.now())+t).toISOString()}function U(e,t,o){return Number.isFinite(e)?Math.max(t,Math.min(o,Math.floor(e))):t}function B(e){return Array.from(new Set(e))}function qt(e,t){const o=new Set,a=[];for(const r of e){const s=t(r);o.has(s)||(o.add(s),a.push(r))}return a}export{_e as DEFAULT_HEADLESS_YOLOOP_LOCAL_CONCURRENCY_CAP,rt as DEFAULT_HEADLESS_YOLOOP_MAX_DURATION_MS,ot as DEFAULT_HEADLESS_YOLOOP_MAX_ITERATIONS,at as MAX_HEADLESS_YOLOOP_LOCAL_CONCURRENCY_CAP,uo as RUN_YOLOOP_DRIVER_STATES,_t as defaultYoloopRootInvoker,po as isCanonicalDelegatedStoryPrompt,mo as runYoloopExecutionPhase};
10
+ `],{cwd:o.projectRoot,stdio:["ignore","pipe","pipe","ipc"],windowsHide:!0});let d,i=0,c=!1;const y=setTimeout(()=>{c=!0,n.kill()},o.timeoutMs),f=m=>{i+=m.length,i>32*1024*1024&&(c=!0,n.kill())};n.stdout?.on("data",f),n.stderr?.on("data",f),n.on("message",m=>{if(d||!C(m)||typeof m.success!="boolean"||Buffer.byteLength(JSON.stringify(m))>32*1024*1024){c=!0,n.kill();return}d=m});const l={success:!1,errorCode:"headless-root-invoke-failed",error:"The isolated root metadata invocation did not complete.",exitCode:1};n.on("error",()=>{c=!0}),n.on("close",m=>{clearTimeout(y),s(m===0&&!c&&d?d:l)}),n.send({modulePath:r,options:e},m=>{m&&(c=!0,n.kill())})})}async function gt(e,o=bt){const t=Date.now(),a={args:e.args,projectRoot:e.projectRoot,format:"json",platformTarget:"runner",serverUrl:e.serverUrl,strictReadOnly:e.strictReadOnly},r=await o(a,{projectRoot:e.projectRoot,timeoutMs:e.timeoutMs});return{success:r.success,instructions:r.instructions,metadata:r.metadata,error:r.error,errorCode:r.errorCode,exitCode:r.exitCode,durationMs:Date.now()-t,publicSafe:!0}}async function Io(e){const o=e.adapterRegistry??$e(),t=$(e.limit??We,1,10),a=$(e.leaseMs??qe,1e3,3600*1e3),r=$(e.staleLeaseAfterMs??Xe,0,1440*60*1e3),s=$(e.maxAttempts??Ge,1,10),n=$(e.localConcurrencyCap??ke(),1,Ae),d=[],i=[],c=e.now(),y=At({store:e.store,metadata:e.metadata,nowIso:c,maxAttempts:s,queueCap:e.queueCap});d.push(...y.reasonCodes);const f=e.store.recoverStaleHeadlessExecutionAttempts({nowIso:c,staleAfterMs:r,limit:t*2});f.recoveredAttemptIds.length>0&&(d.push(p.EXECUTION_BACKOFF),f.failedAttemptIds.length>0&&d.push(p.EXECUTION_TIMEOUT));const l=e.store.listDueHeadlessExecutionAttempts({nowIso:e.now(),limit:Math.max(t*5,10)}).filter(m=>m.directive_kind==="run_yoloop").slice(0,t);for(const m of l){const g=await kt({store:e.store,projectRoot:e.projectRoot,runnerId:e.runnerId,attempt:m,registry:o,now:e.now,leaseMs:a,timeoutMs:$(e.timeoutMs??Ze,1e3,18e5),backoffMs:$(e.backoffMs??Ve,1e3,36e5),maxAttempts:s,maxIterations:$(e.maxIterations??dt,1,100),maxDurationMs:$(e.maxDurationMs??ct,1e3,72e5),localConcurrencyCap:n,queueCap:e.queueCap,adapterOptions:e.adapterOptions,runtimeDefaults:e.runtimeDefaults,runtimeFallback:e.runtimeFallback,yoloopInvoker:e.yoloopInvoker??gt,serverUrl:e.serverUrl,idFactory:e.idFactory??Jt,continuousWorkspaceManager:e.continuousWorkspaceManager??tt(),terminalGitAdapter:e.terminalGitAdapter??at(e.projectRoot)});i.push(g),d.push(g.reasonCode,...g.workerPoolSummary.reasonCodes)}return{ok:i.every(m=>m.outcome!=="failed")&&y.rejectedCount===0,enqueuedAttemptCount:y.enqueuedCount,dueAttemptCount:l.length,processedAttemptCount:i.filter(m=>m.outcome!=="ignored").length,recoveredAttemptIds:f.recoveredAttemptIds,receipts:i,reasonCodes:Y(d.length>0?d:[p.OK]),publicSafe:!0}}function At(e){let o=0,t=0;const a=[];for(const r of Yt(e.metadata)){if(!C(r)||r.kind!=="run_yoloop")continue;const s=Pt(r);if(!s.ok){t+=1,a.push(s.reasonCode);continue}const n=s.directive;if(!e.store.jobExists(n.jobId)){t+=1,a.push(Se.BYPASS_BLOCKED);continue}const d=Ft(n);if(e.store.hasCompletedHeadlessExecutionDirectiveHash(d)){a.push(p.EXECUTION_COMPLETED);continue}const i=Ue({autonomousKind:"run_yoloop",source:"headless-run-yoloop",targetKind:"epic",targetRef:n.targetRef,epicId:n.epicId??ae(n.targetRef),jobId:n.jobId,operationSeed:n.operationId,commandHash:L(n.commandRef)}),c=ze(e.store,i,e.nowIso,{requireExistingJob:!0});if(!c.ok){t+=1,a.push(c.reasonCode);continue}const y=V("attempt",n.idempotencyKey),f=V("exec",n.operationId),l=e.store.enqueueHeadlessExecutionAttempt({attemptId:y,executionId:f,jobId:n.jobId,directiveHash:d,directiveKind:"run_yoloop",commandClass:n.commandClass,targetKind:"epic",targetRef:n.targetRef,epicId:n.epicId??ae(n.targetRef),runtimeId:n.runtime?.runtimeId,modelId:n.runtime?.modelId,runtimeSource:Zt(n.runtime?.source),reasonCode:n.reasonCode,publicSummary:n.publicSummary,enqueuedAt:e.nowIso,notBeforeAt:e.nowIso,maxAttempts:e.maxAttempts,queueCap:e.queueCap,operationId:`${n.operationId}:enqueue`,idempotencyKey:n.idempotencyKey,counts:{directives:1},hashes:{directive:d},redactionSummary:n.redactionSummary,relativePaths:[n.targetRef],metadata:be(i,{schemaVersion:1,contractVersion:"continuity-v1",jobId:n.jobId,operationId:n.operationId,reasonCode:n.reasonCode??p.OK,targetRef:n.targetRef,directiveHash:d})});if(!l.accepted){t+=1,a.push(l.reasonCode??"queue-cap-reached");continue}l.inserted&&(o+=1),a.push(p.OK)}return{enqueuedCount:o,rejectedCount:t,reasonCodes:Y(a)}}async function kt(e){const o=e.now(),t=e.idFactory("lease",e.attempt.attempt_id),a=_e(o,e.leaseMs);if(!e.store.claimHeadlessExecutionAttempt({attemptId:e.attempt.attempt_id,leaseId:t,runnerId:e.runnerId,claimedAt:o,leaseExpiresAt:a,reasonCode:p.OK}).inserted)return Ut(e.attempt,{status:e.attempt.status,receiptStatus:"ignored",reasonCode:"lease-conflict",timestamp:o});if(e.store.hasCompletedHeadlessExecutionDirectiveHash(e.attempt.directive_hash,e.attempt.attempt_id))return me(e.store,e.attempt,{leaseId:t,runnerId:e.runnerId,status:"skipped",receiptStatus:"ignored",reasonCode:p.EXECUTION_COMPLETED,publicSummary:"Skipped duplicate run_yoloop directive because the directive hash is already completed.",completedAt:e.now(),counts:ye(),hashes:{directive:e.attempt.directive_hash},redactionSummary:[],relativePaths:[e.attempt.target_ref],childStoryIds:[],stateTransitions:["start","complete"]});const n=Et(e);if(!n.ok)return me(e.store,e.attempt,{leaseId:t,runnerId:e.runnerId,status:n.status,receiptStatus:n.receiptStatus,reasonCode:n.reasonCode,publicSummary:n.publicSummary,completedAt:e.now(),counts:ye(),hashes:{directive:e.attempt.directive_hash},redactionSummary:n.redactionSummary,relativePaths:Wt(e.attempt),childStoryIds:[],stateTransitions:["start"]});const d=await Ot({...e,prepared:n.input}),i=zt(e.attempt,d,e.maxAttempts,e.backoffMs,e.now()),c=i.retry?"backoff":d.status,y=i.retry?"deferred":d.receiptStatus,f=i.retry?St.has(d.reasonCode)||Ee.has(d.reasonCode)?d.reasonCode:p.EXECUTION_BACKOFF:d.reasonCode,l=i.retry?"Headless run_yoloop execution scheduled bounded retry after transient metadata/runtime outcome.":d.publicSummary;return me(e.store,e.attempt,{leaseId:t,runnerId:e.runnerId,status:c,receiptStatus:y,reasonCode:f,publicSummary:l,completedAt:e.now(),durationMs:d.durationMs,notBeforeAt:i.notBeforeAt,retryCount:i.retryCount,counts:d.counts,workerPoolSummary:d.workerPoolSummary,hashes:{...d.hashes,directive:e.attempt.directive_hash},redactionSummary:d.redactionSummary,relativePaths:d.relativePaths,childStoryIds:d.childStoryIds,runtimeId:n.input.runtimeId,modelId:n.input.modelId,runtimeSource:n.input.runtimeSource,stateTransitions:d.stateTransitions})}async function Ot(e){const o=Date.now(),t=["start"],a=new Set,r=[],s=[],n={root:L(e.prepared.rootPrompt)},d=[_("rootPrompt","prompt_body",n.root)];let i=0,c=0,y=0,f=0,l=0,m=0,g;const u=Pe(e.localConcurrencyCap),h=new Map;let M=!1;const w=new Map,B=new Map,ne=v=>{const A=v.child;n[`child-${A.storyId.replace(/[^A-Za-z0-9_.:-]/g,"-")}`]=v.commandHash,d.push(v.promptRedaction);const S=v.receipt;if(v.terminalFailure){if(v.deferredFailure){w.set(A.storyId,v.terminalFailure),u.backpressurePauseCount+=1;return}w.delete(A.storyId),B.set(A.storyId,v.terminalFailure),a.has(A.storyId)||(a.add(A.storyId),r.push(A.storyId),s.push(A.targetRef),y+=1);return}if(!S||S.outcome==="deferred"){w.set(A.storyId,v.reasonCodes.includes("queue-cap-reached")?p.WORKER_POOL_BACKPRESSURE_PAUSED:S?.reasonCode||p.EXECUTION_BACKOFF),v.reasonCodes.includes("queue-cap-reached")&&(u.backpressurePauseCount+=1);return}w.delete(A.storyId),!a.has(A.storyId)&&(a.add(A.storyId),r.push(A.storyId),s.push(A.targetRef),S.outcome==="failed"?(y+=1,B.set(A.storyId,S.reasonCode||p.EXECUTION_FAILED)):S.outcome==="ignored"?f+=1:c+=1)},X=async()=>{const v=await Promise.race([...h.entries()].map(([A,S])=>S.promise.then(U=>({storyId:A,result:U}))));h.delete(v.storyId),u.completedChildCount+=1,u.pendingChildCount=h.size,ne(v.result)};for(;;){if(i>=e.maxIterations)return t.push("backoff"),E({status:"failed",receiptStatus:"failed",reasonCode:Ct,publicSummary:"Headless yoloop reached the bounded iteration limit before completion metadata.",retryable:!1,startedAt:o,counts:O(i,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});if(Date.now()-o>e.maxDurationMs)return t.push("backoff"),E({status:"failed",receiptStatus:"failed",reasonCode:It,publicSummary:"Headless yoloop reached the bounded duration limit before completion metadata.",retryable:!1,startedAt:o,counts:O(i,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});if(e.terminalGitAdapter.prepareLifecycleEvidence){t.push("lifecycle_evidence");const b=await e.terminalGitAdapter.prepareLifecycleEvidence({epicId:e.prepared.epicId,nowIso:e.now()});if(!b.ok)return t.push("backoff"),E({status:b.retryEligible?"backoff":"failed",receiptStatus:b.retryEligible?"deferred":"failed",reasonCode:b.reasonCode,publicSummary:"Headless yoloop stopped because physical Git lifecycle evidence could not be produced safely.",retryable:b.retryEligible,startedAt:o,counts:O(i,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});g=b.p205Authority}t.push("metadata_parse");const v=await e.yoloopInvoker({projectRoot:e.projectRoot,args:e.prepared.rootPrompt,attemptId:e.attempt.attempt_id,executionId:e.attempt.execution_id,jobId:e.attempt.job_id,runnerId:e.runnerId,iteration:i,runtimeId:e.prepared.runtimeId,...e.prepared.modelId?{modelId:e.prepared.modelId}:{},timeoutMs:e.timeoutMs,serverUrl:e.serverUrl});if(v.durationMs!==void 0&&(n[`iter-${i}`]=L(String(v.durationMs))),!v.success)return t.push("backoff"),E({status:"backoff",receiptStatus:"deferred",reasonCode:p.EXECUTION_FAILED,publicSummary:"Headless yoloop root metadata invocation failed with bounded public evidence.",retryable:!0,startedAt:o,counts:O(i,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});const A=v.metadata,S=jt(A);if(!S.ok)return t.push("backoff"),E({status:"failed",receiptStatus:"failed",reasonCode:S.reasonCode,publicSummary:S.publicSummary,retryable:!1,startedAt:o,counts:O(i,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:[...d,...S.redactionSummary],relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});const U=Bt(A);if(S.aborted&&U){for(;h.size>0;)await X();return m+=1,t.push("backoff"),E({status:"backoff",receiptStatus:"deferred",reasonCode:U.reason==="YOLOOP_SESSION_TIMEOUT"?"yoloop-session-timeout-resumable":"yoloop-per-run-cap-resumable",publicSummary:"Headless yoloop reached a finite run boundary and scheduled the same queue after cool-down.",retryable:!0,retryNotBeforeAt:U.coolDownUntil,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t})}if((S.aborted||S.complete||S.replay||S.outcome&&S.outcome!=="selected"&&S.outcome!=="queue_exhausted")&&M&&h.size>0){await X(),i+=1,t.push("reinvoke");continue}if(S.aborted)return m+=1,t.push("aborted"),E({status:"failed",receiptStatus:"failed",reasonCode:_t,publicSummary:"Headless yoloop stopped because public metadata reported an aborted loop.",retryable:!1,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});if(S.outcome&&S.outcome!=="selected"&&S.outcome!=="queue_exhausted")return t.push("backoff"),E({status:"failed",receiptStatus:"failed",reasonCode:`yoloop-${S.outcome}`,publicSummary:"Headless yoloop stopped on a non-executable graph-first continuation outcome.",retryable:!1,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});if(S.replay)return t.push("backoff"),E({status:"backoff",receiptStatus:"deferred",reasonCode:"yoloop-replay-pending",publicSummary:"Headless yoloop observed pending replay authority and did not delegate a second child.",retryable:!0,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});if(S.complete&&M&&w.size>0&&B.size===0)return t.push("backoff"),E({status:"backoff",receiptStatus:"deferred",reasonCode:[...w.values()].sort()[0],publicSummary:"Headless yoloop rejected terminal completion while previously runnable work remained undispatched.",retryable:!0,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});if(S.complete&&M&&B.size>0)return t.push("backoff"),E({status:"failed",receiptStatus:"failed",reasonCode:[...B.values()].sort()[0],publicSummary:"Headless yoloop rejected terminal completion because runnable work failed before an accepted dispatch receipt.",retryable:!1,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});const Z=Nt(A);if(Z){t.push("terminal_git");const b=new Date,x=await nt(e.projectRoot,{kind:"continuous",storyId:Z.epicId,sessionId:`${e.runnerId}:${e.attempt.attempt_id}`,idempotencyKey:Z.idempotencyKey,persistent:!1,expiresAt:new Date(b.getTime()+Math.max(e.timeoutMs,e.maxDurationMs)+6e4).toISOString()});if(!x.ok)return t.push("backoff"),E({status:"backoff",receiptStatus:"deferred",reasonCode:x.reasonCode,publicSummary:"Headless yoloop deferred terminal Git while another physical writer retained authority.",retryable:!0,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});let K,j=!1;try{K=await rt(Z,e.terminalGitAdapter,e.now,g)}finally{j=await st(x.path,x.owner).catch(()=>!1)}if(!j)return t.push("backoff"),E({status:"backoff",receiptStatus:"deferred",reasonCode:"git-lifecycle-integration-lock-release-failed",publicSummary:"Headless yoloop stopped because terminal Git writer ownership could not be released safely.",retryable:!0,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});if(n[`terminal-git-${i}`]=L(`${K.receipt.idempotencyKey}:${K.receipt.physicalStatus}`),!K.ok){const N=K.receipt.retryEligible;return t.push("backoff"),E({status:N?"backoff":"failed",receiptStatus:N?"deferred":"failed",reasonCode:K.reasonCodes[0]??"epic-terminal-git-failed",publicSummary:"Headless yoloop stopped at the epic terminal Git boundary with public-safe retry evidence.",retryable:N,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t})}if(S.complete)return l+=1,t.push("complete"),E({status:"completed",receiptStatus:"applied",reasonCode:p.EXECUTION_COMPLETED,publicSummary:"Headless yoloop completed only after fresh root-owned physical Git verification.",retryable:!1,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});i+=1,t.push("reinvoke");continue}if(S.complete)return l+=1,t.push("complete"),E({status:"completed",receiptStatus:"applied",reasonCode:p.EXECUTION_COMPLETED,publicSummary:"Headless yoloop completed after public metadata reported yoloopComplete.",retryable:!1,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});const I=Ht(A);if(I){t.push("git_reconciliation");const b=await ot(I,e.terminalGitAdapter,e.now);if(n[`git-reconciliation-${i}`]=L(`${I.idempotencyKey}:${b.reasonCodes.join(",")}`),!b.ok)return t.push("backoff"),E({status:"backoff",receiptStatus:"deferred",reasonCode:b.reasonCodes[0]??"git-reconciliation-failed",publicSummary:"Headless yoloop paused at a fail-closed Git reconciliation boundary.",retryable:!0,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t})}const P=Tt(A,e.prepared.epicId);if(!P.ok)return t.push("backoff"),E({status:"failed",receiptStatus:"failed",reasonCode:P.reasonCode,publicSummary:P.publicSummary,retryable:!1,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:[...d,...P.redactionSummary],relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});const ee=P.continuous?void 0:P.prompts.find(b=>a.has(b.storyId));if(ee)return t.push("backoff"),E({status:"failed",receiptStatus:"failed",reasonCode:p.YOLOOP_ISOLATION_VIOLATION,publicSummary:"Headless yoloop rejected cyclic child story delegation evidence.",retryable:!1,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:[...d,_("storyId","prompt_body",L(ee.storyId))],relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});if(u.mode=P.mode==="continuous_dag"?"continuous_dag":P.parallelAuthorized?"parallel_wave":"serial",u.serverMaxConcurrency=P.serverMaxConcurrency,P.continuous){M=!0;const b=P.prompts.filter(x=>!a.has(x.storyId)&&!h.has(x.storyId));if(u.pendingChildCount=b.length+h.size,b.length>0){const x=ve({store:e.store,nowIso:e.now(),localCap:e.localConcurrencyCap,serverMaxConcurrency:P.serverMaxConcurrency,parallelAuthorized:!0,continuous:!0,eligibleCount:b.length});if(u.queueCap=x.queueCap,u.availableLeases=x.availableLeases,u.effectiveConcurrency=x.effectiveConcurrency,u.reasonCodes.push(x.reasonCode),x.effectiveConcurrency===0&&h.size===0)return u.backpressurePauseCount+=1,t.push("backoff"),E({status:"backoff",receiptStatus:"deferred",reasonCode:p.WORKER_POOL_BACKPRESSURE_PAUSED,publicSummary:"Headless yoloop retained its eligible frontier while physical worker capacity was unavailable.",retryable:!0,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});const K=b.slice(0,x.effectiveConcurrency);t.push("child_story_delegation");for(const j of K)h.set(j.storyId,{child:j,promise:Re({...e,child:j,iteration:i})});u.startedChildCount+=K.length,u.peakConcurrency=Math.max(u.peakConcurrency,h.size),u.pendingChildCount=b.length-K.length+h.size}if(h.size>0)await X();else{if(w.size>0)return t.push("backoff"),E({status:"backoff",receiptStatus:"deferred",reasonCode:[...w.values()].sort()[0],publicSummary:"Headless yoloop retained deferred continuous work for a bounded retry.",retryable:!0,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});if(B.size>0)return t.push("backoff"),E({status:"failed",receiptStatus:"failed",reasonCode:[...B.values()].sort()[0],publicSummary:"Headless yoloop completed independent work and stopped on the remaining failed dependency closure.",retryable:!1,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t})}i+=1,t.push("reinvoke");continue}u.pendingChildCount=P.prompts.length;const F=[...P.prompts];for(;F.length>0;){const b=ve({store:e.store,nowIso:e.now(),localCap:e.localConcurrencyCap,serverMaxConcurrency:P.serverMaxConcurrency,parallelAuthorized:P.parallelAuthorized,continuous:!1,eligibleCount:F.length});if(u.queueCap=b.queueCap,u.availableLeases=b.availableLeases,u.effectiveConcurrency=b.effectiveConcurrency,u.reasonCodes.push(b.reasonCode),b.effectiveConcurrency===0)return u.backpressurePauseCount+=1,u.pendingChildCount=F.length,t.push("backoff"),E({status:"backoff",receiptStatus:"deferred",reasonCode:p.WORKER_POOL_BACKPRESSURE_PAUSED,publicSummary:"Headless yoloop paused child workers because bounded queue or lease capacity was unavailable.",retryable:!0,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t});const x=F.splice(0,b.effectiveConcurrency);u.startedChildCount+=x.length,u.peakConcurrency=Math.max(u.peakConcurrency,x.length),u.pendingChildCount=F.length,t.push("child_story_delegation");const K=await Promise.all(x.map(N=>Re({...e,child:N,iteration:i})));u.completedChildCount+=K.length;let j;for(const N of K){const se=N.child;n[`child-${se.storyId.replace(/[^A-Za-z0-9_.:-]/g,"-")}`]=N.commandHash,d.push(N.promptRedaction),r.push(se.storyId),s.push(se.targetRef),a.add(se.storyId);const te=N.receipt;if(!te){N.reasonCodes.includes("queue-cap-reached")?(u.backpressurePauseCount+=1,u.pendingChildCount+=1,u.reasonCodes.push(p.WORKER_POOL_BACKPRESSURE_PAUSED),j??={kind:"deferred",reasonCode:p.WORKER_POOL_BACKPRESSURE_PAUSED}):(y+=1,j??={kind:"missing",reasonCode:p.EXECUTION_FAILED});continue}if(te.outcome==="deferred"){j??={kind:"deferred",reasonCode:p.EXECUTION_BACKOFF};continue}if(te.outcome==="failed"){y+=1,j??={kind:"failed",reasonCode:te.reasonCode||p.EXECUTION_FAILED};continue}te.outcome==="ignored"?f+=1:c+=1}if(j){const N=j.kind==="deferred";return E({status:N?"backoff":"failed",receiptStatus:N?"deferred":"failed",reasonCode:j.reasonCode,publicSummary:j.kind==="missing"?"Headless yoloop child story delegation did not produce a public receipt.":N?"Headless yoloop child story delegated bounded backoff to the root attempt.":"Headless yoloop child story execution failed with public receipt evidence.",retryable:N,startedAt:o,counts:O(i+1,r.length,c,y,f,l,m),workerPoolSummary:k(u),hashes:n,redactions:d,relativePaths:[e.prepared.targetRef,...s],childStoryIds:r,stateTransitions:t})}}i+=1,t.push("reinvoke")}}async function Re(e){const o=e.child.dispatchId?await e.continuousWorkspaceManager.prepare({projectRoot:e.projectRoot,epicId:e.prepared.epicId,storyId:e.child.storyId,targetRef:e.child.targetRef,dispatchId:e.child.dispatchId,executionBranch:e.child.executionBranch??"",graphRevision:e.child.graphRevision??"",authorizedWriteSet:e.child.writeSet??[]}):void 0;if(o&&!o.ok)return{child:e.child,reasonCodes:[o.reasonCode],commandHash:L(e.child.commandRef),promptRedaction:_(`child.${e.child.storyId}`,"prompt_body",L(e.child.commandRef)),terminalFailure:o.reasonCode,deferredFailure:/backpressure|lease-active/.test(o.reasonCode)};const t=e.projectRoot,a=o?.ok?et(o.value):e.adapterOptions?.commandRunner,r=Kt({rootAttempt:e.attempt,child:e.child,iteration:e.iteration,runtimeId:e.prepared.runtimeId,modelId:e.prepared.modelId,runtimeSource:e.prepared.runtimeSource}),s=V("attempt",r.idempotencyKey);let n=!!o;try{const d=await Je({store:e.store,projectRoot:t,runnerId:e.runnerId,now:e.now,metadata:{continuityExecutionDirectives:[r]},adapterRegistry:e.registry,adapterOptions:{...e.adapterOptions,cwd:t,env:{...e.adapterOptions?.env,...o?.ok?{NEOCORTEX_BRANCHLESS_PROJECT_ROOT:o.value.workspacePath,NEOCORTEX_BRANCHLESS_ROOT_AUTHORITY:JSON.stringify(e.child.rootAuthority)}:{}},...a?{commandRunner:a,versionRunner:a}:{}},runtimeDefaults:e.runtimeDefaults,runtimeFallback:e.runtimeFallback,timeoutMs:e.timeoutMs,maxAttempts:1,limit:1,queueCap:e.queueCap,attemptIds:[s],idFactory:e.idFactory}),i=d.receipts.find(c=>c.attemptId===s)??d.receipts[0];if(o?.ok&&i&&i.outcome!=="failed"&&i.outcome!=="deferred"){const c=await e.continuousWorkspaceManager.integrate(o.value,{receiptRefs:[`continuity:${i.attemptId}`],nowIso:i.timestamp});if(!c.ok)return{child:e.child,receipt:i,reasonCodes:[...d.reasonCodes,c.reasonCode],commandHash:L(e.child.commandRef),promptRedaction:_(`child.${e.child.storyId}`,"prompt_body",L(e.child.commandRef)),terminalFailure:c.reasonCode,deferredFailure:/backpressure|graph-revision-stale/.test(c.reasonCode)};n=!1}return{child:e.child,receipt:i,reasonCodes:d.reasonCodes,commandHash:L(e.child.commandRef),promptRedaction:_(`child.${e.child.storyId}`,"prompt_body",L(e.child.commandRef))}}finally{o?.ok&&await e.continuousWorkspaceManager.release(o.value,n)}}function ve(e){const o=e.store.collectSnapshotRows({nowIso:e.nowIso,jobLimit:1,staleLeaseLimit:1,receiptLimit:1,eventLimit:1,snapshotLimit:1}),t=Math.max(1,Math.floor(o.queue.capacity)),a=Math.max(0,Math.floor(o.queue.running)-1),r=e.continuous?Math.max(0,Math.floor(o.queue.available)):Math.max(0,Math.min(Math.max(0,e.localCap-a),Math.floor(o.queue.available))),s=e.parallelAuthorized?Math.max(1,Math.floor(e.serverMaxConcurrency)):1,n=Math.max(0,Math.min(e.eligibleCount,s,e.localCap,t,r));return{queueCap:t,availableLeases:r,effectiveConcurrency:n,reasonCode:n===0?p.WORKER_POOL_BACKPRESSURE_PAUSED:(e.parallelAuthorized||e.continuous)&&n>1?p.WORKER_POOL_PARALLEL_ACTIVE:p.WORKER_POOL_SERIAL_FALLBACK}}function Pe(e){return{mode:"serial",serverMaxConcurrency:1,localCap:e,queueCap:1,availableLeases:1,effectiveConcurrency:1,peakConcurrency:0,pendingChildCount:0,startedChildCount:0,completedChildCount:0,backpressurePauseCount:0,reasonCodes:[]}}function k(e){return{mode:e.mode,serverMaxConcurrency:z(e.serverMaxConcurrency),localCap:z(e.localCap),queueCap:z(e.queueCap),availableLeases:z(e.availableLeases),effectiveConcurrency:z(e.effectiveConcurrency),peakConcurrency:z(e.peakConcurrency),pendingChildCount:z(e.pendingChildCount),startedChildCount:z(e.startedChildCount),completedChildCount:z(e.completedChildCount),backpressurePauseCount:z(e.backpressurePauseCount),reasonCodes:Y(e.reasonCodes.length>0?e.reasonCodes:[p.WORKER_POOL_SERIAL_FALLBACK]).slice(0,10),publicSafe:!0}}function pe(e=ke()){return k(Pe(e))}function z(e){return Number.isFinite(e)?Math.max(0,Math.min(1e4,Math.floor(e))):0}function Et(e){const o=ge(e.attempt.metadata_json,{autonomousKind:"run_yoloop",jobId:e.attempt.job_id,targetKind:"epic",targetRef:e.attempt.target_ref});if(!o.ok)return{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:o.reasonCode,publicSummary:o.publicSummary,redactionSummary:o.redactionSummary};const t=Rt(e.attempt);if(!t.ok)return t;const a=vt(e);if(!a.ok)return{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:a.reasonCode,publicSummary:a.publicSummary,redactionSummary:a.redactionSummary};const r=e.attempt.epic_id??ae(e.attempt.target_ref);return{ok:!0,input:{rootPrompt:`*yoloop @${e.attempt.target_ref}`,targetRef:e.attempt.target_ref,epicId:r,runtimeId:a.runtimeId,...a.modelId?{modelId:a.modelId}:{},runtimeSource:a.runtimeSource,publicSafe:!0}}}function Rt(e){const o=[];e.directive_kind!=="run_yoloop"&&o.push(_("directiveKind","unsafe_key","value-denied")),e.target_kind!=="epic"&&o.push(_("targetKind","prompt_body","value-denied")),(!le.test(e.target_ref)||q.test(e.target_ref)||D.test(e.target_ref))&&o.push(_("targetRef","prompt_body","value-denied"));const t=ae(e.target_ref);return e.epic_id&&e.epic_id!==t&&o.push(_("epicId","prompt_body","value-denied")),o.length>0?{ok:!1,status:"failed",receiptStatus:"failed",reasonCode:p.PROMPT_REJECTED,publicSummary:"Headless run_yoloop attempt did not match the canonical public epic prompt shape.",redactionSummary:o}:{ok:!0,input:{rootPrompt:`*yoloop @${e.target_ref}`,targetRef:e.target_ref,epicId:t,runtimeId:"fake",publicSafe:!0}}}function vt(e){const o=e.runtimeDefaults!==void 0?e.runtimeDefaults:Ye({projectRoot:e.projectRoot});if(C(o)&&o.ok===!1)return{ok:!1,reasonCode:p.RUNTIME_UNTRUSTED,publicSummary:typeof o.publicSummary=="string"?o.publicSummary:"Headless runtime defaults failed public-safety validation.",redactionSummary:Array.isArray(o.redactionSummary)?o.redactionSummary:[]};const t=Xt(e.attempt.runtime_source)??"explicit",a=e.attempt.runtime_id||e.attempt.model_id?{...e.attempt.runtime_id?{runtimeId:e.attempt.runtime_id}:{},...e.attempt.model_id?{modelId:e.attempt.model_id}:{},source:t,publicSafe:!0}:void 0,r={registry:e.registry,defaults:o,fallback:e.runtimeFallback};a&&(t==="origin"?r.origin=a:t==="default"?r.projectDefault=a:t==="fallback"?r.fallback=a:r.explicit=a);const s=Fe(r);return s.ok?{ok:!0,runtimeId:s.runtimeId,...s.modelId?{modelId:s.modelId}:{},runtimeSource:s.runtimeSource}:{ok:!1,reasonCode:s.reasonCode,publicSummary:s.publicSummary,redactionSummary:s.redactionSummary}}function Pt(e){const o=[];for(const h of Object.keys(e))(!yt.has(h)||oe.test(h))&&o.push(_(h,Q(h),"key-denied"));e.publicSafe!==!0&&o.push(_("publicSafe","unsafe_key","value-denied"));const t=H(e,"kind"),a=H(e,"commandClass"),r=H(e,"jobId"),s=H(e,"operationId"),n=H(e,"idempotencyKey"),d=H(e,"targetKind"),i=H(e,"targetRef"),c=H(e,"commandRef"),y=H(e,"publicSummary"),f=H(e,"epicId");t!=="run_yoloop"&&o.push(_("kind","unsafe_key","value-denied")),a!=="goal-tick"&&a!=="loop-tick"&&o.push(_("commandClass","unsafe_key","value-denied")),he(r)||o.push(_("jobId","unsafe_key","value-denied")),he(s)||o.push(_("operationId","unsafe_key","value-denied")),he(n)||o.push(_("idempotencyKey","unsafe_key","value-denied")),(d!=="epic"||!i||!le.test(i)||D.test(i))&&o.push(_("targetRef","prompt_body","value-denied"));const l=i?`*yoloop @${i}`:void 0;(!c||c!==l||c.includes("@neocortex")||q.test(c)||D.test(c))&&o.push(_("commandRef","prompt_body","value-denied")),f&&i&&f!==ae(i)&&o.push(_("epicId","prompt_body","value-denied")),(!y||y.length>240||D.test(y))&&o.push(_("publicSummary","unbounded_text","value-denied")),e.reasonCode!==void 0&&(typeof e.reasonCode!="string"||D.test(e.reasonCode))&&o.push(_("reasonCode","unsafe_key","value-denied"));const m=$t(e.runtime,o);e.attempts!==void 0&&ie(e.attempts,"attempts",o),e.metadata!==void 0&&ie(e.metadata,"metadata",o);const g=C(e.metadata)?e.metadata:void 0,u=Vt(e.redactionSummary,o);return o.length>0||t!=="run_yoloop"||!a||!r||!s||!n||!i||!c||!y?{ok:!1,reasonCode:o.some(M=>M.reason==="prompt_body")?p.PROMPT_REJECTED:p.DIRECTIVE_REJECTED,redactionSummary:o}:{ok:!0,directive:{kind:"run_yoloop",commandClass:a,jobId:r,operationId:s,idempotencyKey:n,targetKind:"epic",targetRef:i,commandRef:c,...f?{epicId:f}:{},...m?{runtime:m}:{},publicSummary:y,...typeof e.reasonCode=="string"?{reasonCode:e.reasonCode}:{},...g?{metadata:g}:{},...u.length>0?{redactionSummary:u}:{},publicSafe:!0}}}function Tt(e,o){if(!e)return R(p.YOLOOP_METADATA_INVALID,"Headless yoloop metadata was missing.",[]);const t=wt(e);if(!t.ok)return t;const a=[],r=C(e.yoloopExecutionPlan)?e.yoloopExecutionPlan:void 0,s=r?T(r.storyIds).filter(W):[],n=r?.version===3&&C(r.scheduler)&&Array.isArray(r.scheduler.nodes)?new Map(r.scheduler.nodes.filter(C).map(l=>[String(l.storyId??""),l])):new Map,d=r?.version===3&&C(r.scheduler)&&typeof r.scheduler.graphRevision=="string"?r.scheduler.graphRevision:void 0,i=r?.version===3&&typeof r.executionBranch=="string"?r.executionBranch:void 0;let c;if(r){const l=Lt(r);if(!l.ok)return l;c=l;for(const g of Mt(r)){const u=J(g,o,"execution-plan");if(!u.ok)return u;a.push(Te(u.prompt,n.get(u.prompt.storyId),d,i))}if(a.length===0)for(const g of s){const u=J(`*yolo @docs/stories/${g}.story.md`,o,"execution-plan");if(!u.ok)return u;a.push(Te(u.prompt,n.get(u.prompt.storyId),d,i))}const m=xt(e.skillDirectives,a);if(!m.ok)return m}const y=typeof e.nextStoryId=="string"&&W(e.nextStoryId)?e.nextStoryId:void 0;for(const l of r?[]:Array.isArray(e.skillDirectives)?e.skillDirectives:[]){if(!C(l)||l.kind!=="task")continue;const m=T(l.promptTemplates);if(m.length>0){for(const M of m){const w=J(M,o,"task-directive");if(!w.ok)return w;a.push(w.prompt)}continue}const g=typeof l.promptTemplate=="string"?l.promptTemplate:void 0;if(!g)continue;const u=T(l.storyIds).filter(W),h=u.length>0?u:y?[y]:[];if(h.length===0&&ue.test(g)){const M=J(g,o,"task-directive");if(!M.ok)return M;a.push(M.prompt);continue}for(const M of h){const w=g.includes("{storyId}")?g.replaceAll("{storyId}",M):g,B=J(w,o,"task-directive");if(!B.ok)return B;a.push(B.prompt)}}if(a.length===0&&y){const l=J(`*yolo @docs/stories/${y}.story.md`,o,"next-story");if(!l.ok)return l;a.push(l.prompt)}const f=Qt(a,l=>l.commandRef);if(c?.continuous){if(f.length!==s.length||f.some(l=>l.preparationOnly!==!0||l.source!=="execution-plan"))return R(p.YOLOOP_ISOLATION_VIOLATION,"Headless continuous yoloop rejected an ambiguous or non-preparation child prompt.",[_("promptTemplates","prompt_body","operation-denied")])}else if(f.some(l=>l.preparationOnly===!0))return R(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected branchless preparation outside a validated continuous plan.",[_("promptTemplates","prompt_body","operation-denied")]);if(s.length>0){const l=new Set(s);for(const m of f)if(!l.has(m.storyId))return R(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a child prompt outside the server-authorized execution plan.",[_("storyId","prompt_body",L(m.storyId))])}return c?.parallelAuthorized&&!G(f.map(l=>l.storyId),s)?R(p.YOLOOP_METADATA_INVALID,"Headless yoloop rejected a parallel plan whose executable prompts did not match the selected wave.",[]):f.length===0&&!c?.continuous?R(p.YOLOOP_METADATA_INVALID,"Headless yoloop metadata did not include an authorized per-story child prompt.",[]):{ok:!0,prompts:f,mode:c?.mode??"legacy",serverMaxConcurrency:c?.serverMaxConcurrency??1,parallelAuthorized:c?.parallelAuthorized??!1,continuous:c?.continuous??!1,reasonCodes:[p.OK,c?.parallelAuthorized?p.WORKER_POOL_PARALLEL_ACTIVE:p.WORKER_POOL_SERIAL_FALLBACK]}}function Te(e,o,t,a){if(!o||!t||!a)return e;const r=Array.isArray(o.writeSet)?T(o.writeSet):[],s=we(o.childExecutionAuthority,{storyId:e.storyId,invocationPrompt:e.commandRef,authorizedWriteSet:r});return{...e,...typeof o.dispatchId=="string"?{dispatchId:o.dispatchId}:{},...typeof o.idempotencyKey=="string"?{idempotencyKey:o.idempotencyKey}:{},graphRevision:t,executionBranch:a,...r.length>0?{writeSet:r}:{},...s?{rootAuthority:s}:{}}}function wt(e){const o=[];return e.nextStoryId!==void 0&&re(e.nextStoryId,"nextStoryId",o),e.yoloopExecutionPlan!==void 0&&re(e.yoloopExecutionPlan,"yoloopExecutionPlan",o),Array.isArray(e.skillDirectives)&&e.skillDirectives.forEach((t,a)=>{C(t)&&t.kind==="task"&&re(t,`skillDirectives.${a}`,o)}),o.length>0?R(p.YOLOOP_METADATA_INVALID,"Headless yoloop rejected unsafe public metadata before child delegation.",o):{ok:!0}}function xt(e,o){if(!Array.isArray(e))return{ok:!0};const t=new Set(o.map(a=>a.commandRef));for(const[a,r]of e.entries()){if(!C(r)||r.kind!=="task")continue;const s=typeof r.promptTemplate=="string"?r.promptTemplate:void 0,n=T(r.promptTemplates);if(s==="[REDACTED]"&&r.subagentType==="neocortex"&&typeof r.reasonCode=="string"&&r.reasonCode.startsWith("directive-prompt-")&&n.length===0)continue;const i=[...s?[s]:[],...n];if(r.subagentType!=="neocortex"||i.length===0||i.some(c=>!t.has(c)))return R(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a task directive that conflicted with the server-authorized execution plan.",[_(`skillDirectives.${a}`,"prompt_body","operation-denied")])}return{ok:!0}}function re(e,o,t){if(typeof e=="string"){if(/\.allowedDebt\.constraints\.\d+$/.test(o)&&ft.has(e))return;(D.test(e)||/\0/.test(e))&&t.push(_(o,Q(o),"value-denied"));return}if(!(e==null||typeof e=="number"||typeof e=="boolean")){if(Array.isArray(e)){e.forEach((a,r)=>re(a,`${o}.${r}`,t));return}if(C(e)){for(const[a,r]of Object.entries(e)){const s=`${o}.${a}`;!(a==="promptTemplate"||a==="promptTemplates"||a==="invocationPrompt"||a==="childPromptKind"||a==="allowMetaTaskPromptInChild"||a==="authorization")&&oe.test(a)&&t.push(_(s,Q(a),"key-denied")),re(r,s,t)}return}t.push(_(o,"unsafe_key","value-denied"))}}function Lt(e){const o=typeof e.mode=="string"?e.mode:"",t=C(e.isolationPolicy)?e.isolationPolicy:void 0,a=T(e.storyIds);if(e.authorization!=="server_authorized")return R(p.YOLOOP_METADATA_INVALID,"Headless yoloop execution plan was not server-authorized.",[]);if(e.executor!=="root_agent"&&e.executor!=="root_agent_with_child_tasks")return R(p.YOLOOP_METADATA_INVALID,"Headless yoloop execution plan executor was not root-owned.",[]);if(o!=="serial"&&o!=="parallel_wave"&&o!=="continuous_dag"&&o!=="manual")return R(p.YOLOOP_METADATA_INVALID,"Headless yoloop execution plan mode was invalid.",[]);const r=e.version===3&&o==="continuous_dag";if(!Array.isArray(e.storyIds)||!r&&a.length===0||a.length!==e.storyIds.length||a.some(h=>!W(h))||new Set(a).size!==a.length)return R(p.YOLOOP_METADATA_INVALID,"Headless yoloop execution plan story selection was invalid or ambiguous.",[]);if(!t||t.rootOwnsLoop!==!0||t.childPromptKind==="per_story_branchless_preparation_only"&&!r||Object.prototype.hasOwnProperty.call(t,"childExecutionBoundary")&&!r||t.childPromptKind!=="per_story_yolo_only"&&t.childPromptKind!=="per_story_branchless_preparation_only"&&!(t.childPromptKind==="none"&&(o==="serial"&&t.childTaskDelegation==="not_required"||o==="parallel_wave"&&e.executor==="root_agent"&&t.childTaskDelegation==="forbidden"))||t.allowOuterYoloopInChild!==!1||t.allowMetaTaskPromptInChild!==!1)return R(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected an execution plan that did not preserve root-owned child isolation.",[_("isolationPolicy","prompt_body","value-denied")]);const s=Array.isArray(e.skippedStories)?e.skippedStories:[];for(const h of s){if(!C(h)||typeof h.storyId!="string"||!W(h.storyId)||typeof h.reason!="string")return R(p.YOLOOP_METADATA_INVALID,"Headless yoloop skipped-story evidence was malformed.",[]);if(a.includes(h.storyId))return R(p.YOLOOP_METADATA_INVALID,"Headless yoloop selected a story that server evidence marked skipped.",[])}if(r){const h=C(e.scheduler)?e.scheduler:void 0,M=Array.isArray(h?.nodes)?h.nodes.filter(C):[],w=T(h?.readyStoryIds),B=T(h?.runningStoryIds),ne=T(e.promptTemplates),X=C(e.dependencyBasis)?e.dependencyBasis:void 0,v=C(e.readinessBasis)?e.readinessBasis:void 0,A=typeof h?.graphRevision=="string"?h.graphRevision:"",S=typeof e.executionBranch=="string"?e.executionBranch:"",U=M.map(I=>typeof I.storyId=="string"?I.storyId:""),Z=M.find(I=>{const P=typeof I.storyId=="string"?I.storyId:"",ee=typeof I.promptTemplate=="string"?I.promptTemplate:"",F=Array.isArray(I.writeSet)?T(I.writeSet):[];return!W(P)||ee!==`*yolo @docs/stories/${P}.story.md branchless-preparation`||typeof I.dispatchId!="string"||!/^[a-f0-9]{64}$/.test(I.dispatchId)||typeof I.idempotencyKey!="string"||!/^[a-f0-9]{64}$/.test(I.idempotencyKey)||I.dependencyBasis!=="verified"||!Array.isArray(I.dependencies)||T(I.dependencies).length!==I.dependencies.length||!Array.isArray(I.writeSet)||F.length===0||F.length!==I.writeSet.length||!we(I.childExecutionAuthority,{storyId:P,invocationPrompt:ee,authorizedWriteSet:F})});return e.executor!=="root_agent_with_child_tasks"||e.legacyConcurrencyIgnored!==!0||Object.prototype.hasOwnProperty.call(e,"maxConcurrency")||Object.prototype.hasOwnProperty.call(e,"maxParallel")||t?.rootOwnedScheduling!=="continuous_dag_allowed"||t?.childPromptKind!=="per_story_branchless_preparation_only"||t?.childExecutionBoundary!=="filesystem_only"||t?.childTaskDelegation!=="allowed"||t?.maxDepth!==1||t?.childWorkspace!=="branchless_sandbox"||t?.epicCheckout!=="current_checkout"||t?.workspaceLifecycle!=="user_managed"||t?.integrationOwner!=="root_agent"||!h||h.schemaVersion!==1||h.strategy!=="continuous-event-driven-dag"||h.logicalConcurrency!=="ready-set"||h.capacityPolicy!=="backpressure-only"||h.rootOwnsLoop!==!0||h.maxDepth!==1||!/^[a-f0-9]{64}$/.test(A)||!qt(S)||new Set(U).size!==U.length||U.some(I=>!W(I))||w.some(I=>!U.includes(I))||B.some(I=>!U.includes(I)||w.includes(I))||!G(a,w)||ne.length!==a.length||ne.some((I,P)=>I!==`*yolo @docs/stories/${a[P]}.story.md branchless-preparation`)||!X||X.source!=="state_snapshot"||!v||v.source!=="ready_wave"||!G(T(v.selectedStoryIds),a)||Z?R(p.YOLOOP_METADATA_INVALID,"Headless yoloop rejected an invalid continuous DAG execution plan.",[]):{ok:!0,mode:"continuous_dag",serverMaxConcurrency:a.length,parallelAuthorized:!0,continuous:!0}}if(e.version===2){const h=Qe(e);return h.ok?{ok:!0,mode:"parallel_wave",serverMaxConcurrency:h.childExecutionConcurrency,parallelAuthorized:!1,continuous:!1}:R(p.YOLOOP_METADATA_INVALID,"Headless yoloop rejected an unsafe phased execution plan.",[])}if(o!=="parallel_wave")return{ok:!0,mode:o,serverMaxConcurrency:1,parallelAuthorized:!1,continuous:!1};const n=e.maxConcurrency,d=e.maxParallel,i=C(e.dependencyBasis)?e.dependencyBasis:void 0,c=C(e.readinessBasis)?e.readinessBasis:void 0,y=Array.isArray(e.parallelWaves)?e.parallelWaves:[],f=y.length===1&&C(y[0])?y[0]:void 0;if(t.rootOwnedScheduling!=="parallel_wave_allowed"||!Number.isInteger(n)||typeof n!="number"||n<2||n>a.length||!Number.isInteger(d)||d!==n||!i||i.source!=="state_snapshot"||!G(T(i.storyIds),a)||!c||c.source!=="ready_wave"||!G(T(c.selectedStoryIds),a)||!f||!G(T(f.storyIds),a)||f.maxConcurrency!==n)return R(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan lacked consistent bounded authorization and readiness evidence.",[]);const l=T(f.promptTemplates);if(l.length!==a.length||new Set(l).size!==l.length)return R(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel wave prompts were incomplete or ambiguous.",[]);const g=(Array.isArray(f.proofSummaries)?f.proofSummaries:Array.isArray(e.proofSummaries)?e.proofSummaries:[]).find(h=>C(h)&&G(T(h.storyIds),a));return!C(g)||g.dependencyClosure!=="resolved"||g.contractOwnership!=="non_overlapping"||g.validationSurfaces!=="compatible"?R(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan lacked resolved independence proof.",[]):s.find(h=>C(h)&&typeof h.reason=="string"&&/(cycle|unresolved|ambiguous)/i.test(h.reason))?R(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan contained unresolved dependency evidence.",[]):{ok:!0,mode:"parallel_wave",serverMaxConcurrency:n,parallelAuthorized:!0,continuous:!1}}function we(e,o){if(!C(e)||!C(e.artifact))return;const t=e.artifact,a=Array.isArray(e.authorizedWriteSet)?T(e.authorizedWriteSet):[];if(Object.keys(e).sort().join("\0")!==["artifact","authorizedWriteSet","effectScope","invocationPrompt","kind","lifecycleAuthority","publicSafe","schemaVersion","storyId"].sort().join("\0")||Object.keys(t).sort().join("\0")!==["content","contentBinding","kind","path","schemaVersion"].sort().join("\0")||e.schemaVersion!==1||e.kind!=="branchless_story_preparation"||e.storyId!==o.storyId||e.invocationPrompt!==o.invocationPrompt||!Array.isArray(e.authorizedWriteSet)||a.length!==e.authorizedWriteSet.length||a.some(s=>it(s)!==s)||!Dt(a,o.authorizedWriteSet)||e.effectScope!=="filesystem_only"||e.lifecycleAuthority!=="root_only"||e.publicSafe!==!0||t.schemaVersion!==1||t.kind!=="branchless_root_bound_artifact"||typeof t.path!="string"||!a.includes(t.path)||typeof t.content!="string"||t.content.length===0||t.content.length>4096||typeof t.contentBinding!="string"||!/^[a-f0-9]{64}$/.test(t.contentBinding))return;const r=De("sha256").update(["branchless-root-bound-artifact-v1",o.storyId,o.invocationPrompt,...a,"filesystem_only","root_only",t.path,t.content].join("\0")).digest("hex");if(t.contentBinding===r)return e}function Dt(e,o){return e.length===o.length&&e.every((t,a)=>t===o[a])}function Mt(e){const o=[];o.push(...T(e.promptTemplates));for(const t of Array.isArray(e.serialSteps)?e.serialSteps:[])C(t)&&typeof t.promptTemplate=="string"&&o.push(t.promptTemplate);for(const t of Array.isArray(e.parallelWaves)?e.parallelWaves:[])C(t)&&o.push(...T(t.promptTemplates));return o}function J(e,o,t){if(Oe(e))return R(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected an unsafe child prompt shape.",[_("promptTemplate","prompt_body",L(e))]);if(!ue.test(e))return R(p.YOLOOP_METADATA_INVALID,"Headless yoloop child prompt did not match the canonical per-story yolo shape.",[_("promptTemplate","prompt_body",L(e))]);const a=ut.test(e),r=e.replace(/^\*yolo @/,"").replace(/ branchless-preparation$/,""),s=Gt(r);return!lt.test(r)||!W(s)||!s.startsWith(`${o}.`)?R(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a child prompt outside the targeted public epic.",[_("storyId","prompt_body",L(s))]):{ok:!0,prompt:{storyId:s,targetRef:r,commandRef:e,source:t,...a?{preparationOnly:!0}:{}}}}function Nt(e){const o=e?.epicTerminalGitDirective;if(!(!C(o)||o.schemaVersion!==1||o.kind!=="epic_terminal_git"||typeof o.epicId!="string"||typeof o.executionBranch!="string"||typeof o.originBranch!="string"||typeof o.expectedExecutionHeadSha!="string"||!Array.isArray(o.storyCheckpointIds)||!C(o.localGates)||o.localGates.passed!==!0||!Array.isArray(o.localGates.receiptRefs)||!C(o.reconcile)||typeof o.idempotencyKey!="string"||o.publicSafe!==!0))return o}function Ht(e){const o=e?.epicGitReconciliationDirective;if(!(!C(o)||o.schemaVersion!==1||o.kind!=="epic_git_reconciliation"||typeof o.epicId!="string"||typeof o.executionBranch!="string"||typeof o.originBranch!="string"||!["start","resume","audit"].includes(String(o.lifecycleBoundary))||typeof o.dryRun!="boolean"||typeof o.idempotencyKey!="string"||o.publicSafe!==!0))return o}function jt(e){if(!e||!C(e))return{ok:!1,reasonCode:p.YOLOOP_METADATA_INVALID,publicSummary:"Headless yoloop root invocation did not return public metadata.",redactionSummary:[]};const o=C(e.yoloopContinuationDecision)?e.yoloopContinuationDecision:void 0,t=typeof o?.outcome=="string"?o.outcome:void 0,a=t==="queue_exhausted"||e.yoloopComplete===!0,r=e.yoloopAborted===!0,s=t==="selected"&&o?.replay===!0;return t&&!["selected","queue_exhausted","blocked","cycle","invalid","no_progress"].includes(t)?{ok:!1,reasonCode:p.YOLOOP_METADATA_INVALID,publicSummary:"Headless yoloop rejected an unknown continuation outcome.",redactionSummary:[]}:t==="queue_exhausted"&&o?.terminalSuccess!==!0?{ok:!1,reasonCode:p.YOLOOP_METADATA_INVALID,publicSummary:"Headless yoloop rejected inconsistent queue exhaustion metadata.",redactionSummary:[]}:a&&r?{ok:!1,reasonCode:p.YOLOOP_METADATA_INVALID,publicSummary:"Headless yoloop metadata reported mutually exclusive terminal states.",redactionSummary:[_("yoloopTerminal","unsafe_key","value-denied")]}:{ok:!0,complete:a,aborted:r,outcome:t,replay:s}}function Bt(e){if(!e)return;const o=e.abortReason;if(o!=="YOLOOP_PER_RUN_CAP_REACHED"&&o!=="YOLOOP_SESSION_TIMEOUT")return;const t=e.yoloopResumableBoundary,a=/^[A-Za-z0-9._:-]{1,128}$/;if(!(!C(t)||t.schemaVersion!=="YoloopResumableBoundary/1.0"||t.resumable!==!0||t.reason!==o||t.publicSafe!==!0||typeof t.coolDownUntil!="string"||!Number.isFinite(Date.parse(t.coolDownUntil))||!Number.isSafeInteger(t.retryAfterMs)||t.retryAfterMs<0||typeof t.operationId!="string"||!a.test(t.operationId)||!C(t.receipt)||t.receipt.schemaVersion!=="YoloopSessionRolloverReceipt/1.0"||typeof t.receipt.runId!="string"||!a.test(t.receipt.runId)||t.receipt.operationId!==t.operationId||typeof t.receipt.idempotencyKey!="string"||!a.test(t.receipt.idempotencyKey)||typeof t.receipt.payloadHash!="string"||!/^[a-f0-9]{64}$/.test(t.receipt.payloadHash)||t.receipt.coolDownUntil!==t.coolDownUntil||!Number.isSafeInteger(t.receipt.revision)||t.receipt.revision<0||t.receipt.snapshotHash!==null&&(typeof t.receipt.snapshotHash!="string"||!/^[a-f0-9]{64}$/.test(t.receipt.snapshotHash))||t.receipt.status!=="exhausted"||t.receipt.publicSafe!==!0))return{coolDownUntil:t.coolDownUntil,reason:o}}function Kt(e){const o=`${e.rootAttempt.execution_id}:${e.child.graphRevision??"legacy"}:${e.child.storyId}`,t=e.child.dispatchId??V("child-op",`${o}:${e.iteration}`),a=e.child.idempotencyKey??V("child-idem",`${o}:${e.iteration}`);return{schemaVersion:1,contractVersion:"continuity-v1",kind:"run_yolo",commandClass:e.rootAttempt.command_class==="goal-tick"?"goal-tick":"loop-tick",jobId:e.rootAttempt.job_id,operationId:t,idempotencyKey:a,targetKind:"story",targetRef:e.child.targetRef,commandRef:e.child.commandRef,...e.child.preparationOnly?{executionMode:"branchless_child_preparation"}:{},storyId:e.child.storyId,runtime:{runtimeId:e.runtimeId,...e.modelId?{modelId:e.modelId}:{},source:e.runtimeSource??"explicit",reasonCode:e.runtimeSource==="fallback"?p.RUNTIME_FALLBACK:p.RUNTIME_EXPLICIT,publicSafe:!0},publicSummary:`Root-owned yoloop delegated public story ${e.child.storyId}.`,reasonCode:p.OK,metadata:{governanceSource:"delegated-subagent",parentAttemptId:e.rootAttempt.attempt_id,parentExecutionId:e.rootAttempt.execution_id,iteration:e.iteration,...e.child.dispatchId?{dispatchId:e.child.dispatchId}:{},...e.child.graphRevision?{graphRevision:e.child.graphRevision}:{},...e.child.writeSet?{writeSet:e.child.writeSet}:{},...e.child.executionBranch?{executionBranch:e.child.executionBranch}:{},...e.child.graphRevision?{childWorkspace:"branchless_sandbox",epicCheckout:"current_checkout",workspaceLifecycle:"user_managed",integrationOwner:"root_agent",maxDepth:1}:{},publicSafe:!0},attempts:[],redactionSummary:[_("prompt","prompt_body",L(e.child.commandRef))],publicSafe:!0}}function me(e,o,t){const a=xe(t.hashes),r=t.workerPoolSummary??pe(),s=xe({iterations:t.counts.iterations,childCount:t.counts.childCount,succeededChildCount:t.counts.succeededChildCount,failedChildCount:t.counts.failedChildCount,skippedChildCount:t.counts.skippedChildCount,metadataCompleteCount:t.counts.metadataCompleteCount,metadataAbortedCount:t.counts.metadataAbortedCount,serverMaxConcurrency:r.serverMaxConcurrency,localCap:r.localCap,queueCap:r.queueCap,availableLeases:r.availableLeases,effectiveConcurrency:r.effectiveConcurrency,peakConcurrency:r.peakConcurrency,pendingChildCount:r.pendingChildCount,startedChildCount:r.startedChildCount,completedChildCount:r.completedChildCount,backpressurePauseCount:r.backpressurePauseCount}),n={schemaVersion:1,contractVersion:"continuity-v1",attemptId:o.attempt_id,executionId:o.execution_id,jobId:o.job_id,directiveHash:o.directive_hash,status:t.status,reasonCode:t.reasonCode,storyIds:t.childStoryIds.slice(0,50),counts:s,hashes:a,...t.reasonCode===Se.BYPASS_BLOCKED?{governanceEvidence:Ke}:{},reasonCodes:Y([t.reasonCode,...r.reasonCodes,...t.stateTransitions]),publicSummary:de(t.publicSummary)},d=ge(o.metadata_json,{autonomousKind:"run_yoloop",jobId:o.job_id,targetKind:"epic",targetRef:o.target_ref}),i=d.ok?be(d.envelope,n):n;return e.completeHeadlessExecutionAttempt({attemptId:o.attempt_id,executionId:o.execution_id,jobId:o.job_id,leaseId:t.leaseId,runnerId:t.runnerId,status:t.status,completedAt:t.completedAt,durationMs:t.durationMs,reasonCode:t.reasonCode,publicSummary:de(t.publicSummary),notBeforeAt:t.notBeforeAt,retryCount:t.retryCount,counts:s,hashes:a,redactionSummary:t.redactionSummary,relativePaths:Y([o.target_ref,...t.relativePaths]),metadata:i}),e.recordHeadlessExecutionReceipt({receiptId:`receipt-${V("headless-yoloop",`${o.attempt_id}-${t.status}`)}`,attemptId:o.attempt_id,executionId:o.execution_id,jobId:o.job_id,status:t.receiptStatus,reasonCode:t.reasonCode,createdAt:t.completedAt,operationId:`${o.execution_id}:${t.status}:receipt`,idempotencyKey:`${o.directive_hash}:${t.status}:receipt`,counts:s,hashes:a,redactionSummary:t.redactionSummary,relativePaths:Y([o.target_ref,...t.relativePaths]),metadata:i}),e.recordHeadlessExecutionSummary({eventId:`event-${V("headless-yoloop-summary",`${o.attempt_id}-${t.status}`)}`,attemptId:o.attempt_id,executionId:o.execution_id,jobId:o.job_id,status:t.status,runtimeId:t.runtimeId,modelId:t.modelId,publicSummary:de(t.publicSummary),reasonCode:t.reasonCode,createdAt:t.completedAt,durationMs:t.durationMs,counts:s,hashes:a,redactionSummary:t.redactionSummary,relativePaths:Y([o.target_ref,...t.relativePaths]),metadata:i}),{attemptId:o.attempt_id,executionId:o.execution_id,jobId:o.job_id,status:t.status,outcome:t.receiptStatus,reasonCode:t.reasonCode,timestamp:t.completedAt,childStoryIds:t.childStoryIds,aggregateCounts:t.counts,workerPoolSummary:r,redactionSummary:t.redactionSummary,publicSafe:!0}}function Ut(e,o){return{attemptId:e.attempt_id,executionId:e.execution_id,jobId:e.job_id,status:o.status,outcome:o.receiptStatus,reasonCode:o.reasonCode,timestamp:o.timestamp,childStoryIds:[],aggregateCounts:ye(),workerPoolSummary:pe(),redactionSummary:[],publicSafe:!0}}function zt(e,o,t,a,r){if(!o.retryable)return{retry:!1};if(Ee.has(o.reasonCode))return{retry:!0,retryCount:e.retry_count,notBeforeAt:Le(_e(r,a),o.retryNotBeforeAt)};const s=e.retry_count+1;if(s>=Math.max(1,e.max_attempts||t))return{retry:!1,retryCount:s};const n=Math.min(8,2**Math.max(0,e.retry_count));return{retry:!0,retryCount:s,notBeforeAt:Le(_e(r,a*n),o.retryNotBeforeAt)}}function E(e){return{status:e.status,receiptStatus:e.receiptStatus,reasonCode:e.reasonCode,publicSummary:e.publicSummary,retryable:e.retryable,...e.retryNotBeforeAt?{retryNotBeforeAt:e.retryNotBeforeAt}:{},durationMs:Math.max(0,Date.now()-e.startedAt),counts:e.counts,workerPoolSummary:e.workerPoolSummary??pe(),hashes:e.hashes,redactionSummary:e.redactions.slice(0,50),relativePaths:Y(e.relativePaths).slice(0,50),childStoryIds:Y(e.childStoryIds).slice(0,50),stateTransitions:Y(e.stateTransitions)}}function $t(e,o){if(e===void 0)return;if(!C(e)){o.push(_("runtime","unsafe_key","value-denied"));return}for(const s of Object.keys(e))(!ht.has(s)||oe.test(s))&&o.push(_(`runtime.${s}`,Q(s),"key-denied"));e.publicSafe!==!0&&o.push(_("runtime.publicSafe","unsafe_key","value-denied"));const t=H(e,"runtimeId"),a=H(e,"modelId"),r=H(e,"source");if(t&&(!/^[A-Za-z0-9][A-Za-z0-9._:-]{0,79}$/.test(t)||D.test(t)||q.test(t))&&o.push(_("runtime.runtimeId","unsafe_key","value-denied")),a&&(!/^[A-Za-z0-9][A-Za-z0-9._:+/-]{0,119}$/.test(a)||D.test(a)||q.test(a))&&o.push(_("runtime.modelId","unsafe_key","value-denied")),r!==void 0&&r!=="explicit"&&r!=="origin"&&r!=="default"&&r!=="fallback"&&r!=="unspecified"&&o.push(_("runtime.source","unsafe_key","value-denied")),e.reasonCode!==void 0&&(typeof e.reasonCode!="string"||D.test(e.reasonCode))&&o.push(_("runtime.reasonCode","unsafe_key","value-denied")),e.publicSafe===!0)return{...t?{runtimeId:t}:{},...a?{modelId:a}:{},...r==="explicit"||r==="origin"||r==="default"||r==="fallback"||r==="unspecified"?{source:r}:{},...typeof e.reasonCode=="string"?{reasonCode:e.reasonCode}:{},publicSafe:!0}}function Yt(e){const o=Array.isArray(e)?e:e?[e]:[],t=[];for(const a of o){const r=a.continuityExecutionDirectives;Array.isArray(r)&&t.push(...r)}return t}function Ft(e){return L(fe({kind:e.kind,commandClass:e.commandClass,jobId:e.jobId,targetRef:e.targetRef,commandRef:e.commandRef,epicId:e.epicId,runtime:e.runtime}))}function fe(e){return Array.isArray(e)?`[${e.map(fe).join(",")}]`:C(e)?`{${Object.keys(e).sort().map(o=>`${JSON.stringify(o)}:${fe(e[o])}`).join(",")}}`:JSON.stringify(e)}function ie(e,o,t){if(typeof e=="string"){(D.test(e)||q.test(e))&&t.push(_(o,Q(o),"value-denied"));return}if(!(e==null||typeof e=="number"||typeof e=="boolean")){if(Array.isArray(e)){e.forEach((a,r)=>ie(a,`${o}.${r}`,t));return}if(C(e)){for(const[a,r]of Object.entries(e)){const s=`${o}.${a}`;oe.test(a)&&t.push(_(s,Q(a),"key-denied")),ie(r,s,t)}return}t.push(_(o,"unsafe_key","value-denied"))}}function Vt(e,o){if(e===void 0)return[];if(!Array.isArray(e))return o.push(_("redactionSummary","unsafe_key","value-denied")),[];const t=[];for(const[a,r]of e.entries()){if(!C(r)||r.publicSafe!==!0){o.push(_(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}const s=H(r,"field"),n=H(r,"reason"),d=H(r,"evidence");if(!s||!n||!d||D.test(s)||D.test(n)||D.test(d)){o.push(_(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}t.push({field:s,reason:n,evidence:d,publicSafe:!0})}return t}function R(e,o,t){return{ok:!1,reasonCode:e,publicSummary:o,redactionSummary:t}}function T(e){return Array.isArray(e)?e.filter(o=>typeof o=="string"):[]}function qt(e){return e.length>0&&e.length<=240&&!e.startsWith("-")&&!e.includes("..")&&!e.includes("\\")&&/^[A-Za-z0-9._/-]+$/.test(e)}function G(e,o){return e.length===o.length&&new Set(e).size===e.length&&e.every(t=>o.includes(t))}function Wt(e){return le.test(e.target_ref)?[e.target_ref]:[]}function xe(e){if(!e)return;const o={};for(const[t,a]of Object.entries(e))!/^[A-Za-z0-9_.:-]{1,80}$/.test(t)||oe.test(t)||D.test(t)||typeof a=="string"&&D.test(a)||(o[t]=a);return Object.keys(o).length>0?o:void 0}function ye(){return O(0,0,0,0,0,0,0)}function O(e,o,t,a,r,s,n){return{iterations:e,childCount:o,succeededChildCount:t,failedChildCount:a,skippedChildCount:r,metadataCompleteCount:s,metadataAbortedCount:n}}function Gt(e){return e.replace(/^docs\/stories\//,"").replace(/\.story\.md$/,"")}function ae(e){return e.replace(/^docs\/epics\/epic-/,"").replace(/\.md$/,"")}function W(e){return/^[A-Za-z0-9][A-Za-z0-9_-]*\.\d+[A-Za-z0-9_-]*$/.test(e)&&!D.test(e)&&!q.test(e)}function Xt(e){if(e==="explicit"||e==="origin"||e==="default"||e==="fallback")return e}function Zt(e){if(e==="explicit"||e==="origin"||e==="default"||e==="fallback"||e==="unspecified")return e}function Q(e){return/prompt|commandRef/i.test(e)?"prompt_body":/std(?:out|err)|raw|log|transcript|stack/i.test(e)?"raw_log":/url/i.test(e)?"private_url":/path|cwd|argv|args|shell|command|binary|executable/i.test(e)?"executable_path":/secret|token|password|authorization|api[_-]?key|license/i.test(e)?"secret_or_pii":"unsafe_key"}function H(e,o){return typeof e[o]=="string"?e[o]:void 0}function he(e){return!!(e&&mt.test(e)&&!D.test(e)&&!q.test(e))}function C(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Jt(e,o){return V(e,`${o}-${Date.now()}-${Me(4).toString("hex")}`)}function _e(e,o){const t=Date.parse(e);return new Date((Number.isFinite(t)?t:Date.now())+o).toISOString()}function Le(e,o){const t=Date.parse(e),a=o?Date.parse(o):Number.NaN;return Number.isFinite(a)?Number.isFinite(t)?a>t?o:e:o:e}function $(e,o,t){return Number.isFinite(e)?Math.max(o,Math.min(t,Math.floor(e))):o}function Y(e){return Array.from(new Set(e))}function Qt(e,o){const t=new Set,a=[];for(const r of e){const s=o(r);t.has(s)||(t.add(s),a.push(r))}return a}export{ce as DEFAULT_HEADLESS_YOLOOP_LOCAL_CONCURRENCY_CAP,ct as DEFAULT_HEADLESS_YOLOOP_MAX_DURATION_MS,dt as DEFAULT_HEADLESS_YOLOOP_MAX_ITERATIONS,Ae as MAX_HEADLESS_YOLOOP_LOCAL_CONCURRENCY_CAP,_o as RUN_YOLOOP_DRIVER_STATES,gt as defaultYoloopRootInvoker,Co as isCanonicalDelegatedStoryPrompt,ke as resolveDefaultHeadlessYoloopLocalConcurrencyCap,Io as runYoloopExecutionPhase};