@ornexus/neocortex 4.60.42 → 4.60.43

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.
@@ -4,6 +4,7 @@
4
4
  *
5
5
  * P190.06 -- runner root-owned execution plane for run_yoloop directives.
6
6
  */
7
+ import type { InvokeOptions, InvokeResult } from '../../commands/invoke.js';
7
8
  import { type ContinuityHeadlessExecutionAttemptStatus, type ContinuitySqliteStore } from '../../continuity/sqlite-store.js';
8
9
  import { HeadlessAdapterRegistry } from './adapters.js';
9
10
  import { type HeadlessAdapterExecutionOptions, type HeadlessAdapterId, type HeadlessRedactionEvidence } from './types.js';
@@ -41,6 +42,11 @@ export interface RunYoloopRootInvokeResult {
41
42
  readonly publicSafe?: true;
42
43
  }
43
44
  export type RunYoloopRootInvoker = (input: RunYoloopRootInvokeInput) => Promise<RunYoloopRootInvokeResult>;
45
+ export interface RunYoloopRootInvokeBoundary {
46
+ readonly projectRoot: string;
47
+ readonly timeoutMs: number;
48
+ }
49
+ export type RunYoloopRootInvokeTransport = (options: InvokeOptions, boundary: RunYoloopRootInvokeBoundary) => Promise<InvokeResult>;
44
50
  export interface RunYoloopExecutionPhaseOptions {
45
51
  readonly store: ContinuitySqliteStore;
46
52
  readonly projectRoot: string;
@@ -116,5 +122,5 @@ export interface RunYoloopExecutionPhaseSummary {
116
122
  readonly publicSafe: true;
117
123
  }
118
124
  export declare function isCanonicalDelegatedStoryPrompt(prompt: string): boolean;
119
- export declare function defaultYoloopRootInvoker(input: RunYoloopRootInvokeInput): Promise<RunYoloopRootInvokeResult>;
125
+ export declare function defaultYoloopRootInvoker(input: RunYoloopRootInvokeInput, invokeTransport?: RunYoloopRootInvokeTransport): Promise<RunYoloopRootInvokeResult>;
120
126
  export declare function runYoloopExecutionPhase(options: RunYoloopExecutionPhaseOptions): Promise<RunYoloopExecutionPhaseSummary>;
@@ -1,8 +1,8 @@
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{join as ye}from"node:path";import{AUTONOMOUS_GOVERNANCE_EVIDENCE_TAG as Te,AUTONOMOUS_GOVERNANCE_REASON_CODES as he,autonomousGovernanceMetadata as xe,buildAutonomousGovernanceEnvelope as we,readAutonomousGovernanceEnvelopeFromMetadata as Le,recordAutonomousGovernance as De}from"../../continuity/autonomous-governance.js";import{createDefaultHeadlessAdapterRegistry as Me}from"./adapters.js";import{loadHeadlessRuntimeDefaults as Ne,resolveHeadlessRuntime as je}from"./resolver.js";import{DEFAULT_HEADLESS_EXECUTION_BACKOFF_MS as He,DEFAULT_HEADLESS_EXECUTION_LEASE_MS as ze,DEFAULT_HEADLESS_EXECUTION_LIMIT as Ke,DEFAULT_HEADLESS_EXECUTION_MAX_ATTEMPTS as $e,DEFAULT_HEADLESS_EXECUTION_STALE_LEASE_AFTER_MS as Be,DEFAULT_HEADLESS_EXECUTION_TIMEOUT_MS as Ue,headlessExecutionEntityId as V,runYoloExecutionPhase as Fe}from"./run-yolo.js";import{HEADLESS_REASON_CODES as p,boundPublicSummary as ie,hashPublicValue as w,redaction as _}from"./types.js";import{validatePhasedYoloopPlan as Ye}from"./prepared-story-bundle.js";import{createAnchoredContinuousStoryCommandRunner as Ve,createBranchlessContinuousStoryWorkspaceManager as qe}from"./continuous-story-workspace.js";import{executeEpicGitReconciliation as We,executeEpicTerminalGit as Ge}from"./epic-terminal-git-runner.js";import{createCliEpicTerminalGitAdapter as Xe}from"./epic-terminal-git-cli-adapter.js";import{acquireGitLifecyclePhysicalIntegrationLock as Ze,releaseGitLifecyclePhysicalIntegrationLock as Je}from"../../git/git-lifecycle-store.js";import{normalizeContinuousWriteRef as Qe}from"../../../../shared/dist/yoloop/wave-decision-receipt.js";const et=20,tt=1800*1e3,_e=1,ot=10,so=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$/,rt=/^docs\/stories\/[A-Za-z0-9._-]+\.story\.md$/,ce=/^\*yolo @docs\/stories\/[A-Za-z0-9._-]+\.story\.md(?: branchless-preparation)?$/,at=/^\*yolo @docs\/stories\/[A-Za-z0-9._-]+\.story\.md branchless-preparation$/,nt=/^(?:\uFEFF)?---(?:\r?\n)/,st=/^[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,it=new Set(["no_private_prompt_or_history","no_raw_vendor_corpus","no_unrelated_story_context"]);function Ce(e){return nt.test(e)||e.includes("@neocortex")||e.includes("*yoloop")||q.test(e)||L.test(e)}function io(e){return!Ce(e)&&ce.test(e)}const dt=new Set(["schemaVersion","contractVersion","kind","commandClass","jobId","operationId","idempotencyKey","targetKind","targetRef","commandRef","epicId","runtime","publicSummary","reasonCode","attempts","metadata","redactionSummary","publicSafe"]),ct=new Set(["runtimeId","modelId","source","reasonCode","publicSafe"]),lt="job-aborted",ut="max-iterations-reached",pt="max-duration-reached",mt=new Set(["git-lifecycle-integration-backpressure","git-lifecycle-integration-lock-failed","git-lifecycle-integration-lock-release-failed"]);async function ft(e){const t=Date.now(),o=ye(__dirname,"../../commands/invoke.js"),a=Pe(o)?o:ye(__dirname,"../../../dist/commands/invoke.js"),r={args:e.args,projectRoot:e.projectRoot,format:"json",platformTarget:"runner",serverUrl:e.serverUrl,strictReadOnly:e.strictReadOnly},n=await new Promise(s=>{const i=ve(process.execPath,["-e",`
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{join as ye}from"node:path";import{AUTONOMOUS_GOVERNANCE_EVIDENCE_TAG as Te,AUTONOMOUS_GOVERNANCE_REASON_CODES as he,autonomousGovernanceMetadata as xe,buildAutonomousGovernanceEnvelope as we,readAutonomousGovernanceEnvelopeFromMetadata as Le,recordAutonomousGovernance as De}from"../../continuity/autonomous-governance.js";import{createDefaultHeadlessAdapterRegistry as Me}from"./adapters.js";import{loadHeadlessRuntimeDefaults as Ne,resolveHeadlessRuntime as je}from"./resolver.js";import{DEFAULT_HEADLESS_EXECUTION_BACKOFF_MS as He,DEFAULT_HEADLESS_EXECUTION_LEASE_MS as ze,DEFAULT_HEADLESS_EXECUTION_LIMIT as Ke,DEFAULT_HEADLESS_EXECUTION_MAX_ATTEMPTS as $e,DEFAULT_HEADLESS_EXECUTION_STALE_LEASE_AFTER_MS as Be,DEFAULT_HEADLESS_EXECUTION_TIMEOUT_MS as Ue,headlessExecutionEntityId as V,runYoloExecutionPhase as Ye}from"./run-yolo.js";import{HEADLESS_REASON_CODES as p,boundPublicSummary as ie,hashPublicValue as w,redaction as h}from"./types.js";import{validatePhasedYoloopPlan as Fe}from"./prepared-story-bundle.js";import{createAnchoredContinuousStoryCommandRunner as Ve,createBranchlessContinuousStoryWorkspaceManager as qe}from"./continuous-story-workspace.js";import{executeEpicGitReconciliation as We,executeEpicTerminalGit as Ge}from"./epic-terminal-git-runner.js";import{createCliEpicTerminalGitAdapter as Xe}from"./epic-terminal-git-cli-adapter.js";import{acquireGitLifecyclePhysicalIntegrationLock as Ze,releaseGitLifecyclePhysicalIntegrationLock as Je}from"../../git/git-lifecycle-store.js";import{normalizeContinuousWriteRef as Qe}from"../../../../shared/dist/yoloop/wave-decision-receipt.js";const et=20,tt=1800*1e3,_e=1,ot=10,io=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$/,rt=/^docs\/stories\/[A-Za-z0-9._-]+\.story\.md$/,ce=/^\*yolo @docs\/stories\/[A-Za-z0-9._-]+\.story\.md(?: branchless-preparation)?$/,at=/^\*yolo @docs\/stories\/[A-Za-z0-9._-]+\.story\.md branchless-preparation$/,nt=/^(?:\uFEFF)?---(?:\r?\n)/,st=/^[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,it=new Set(["no_private_prompt_or_history","no_raw_vendor_corpus","no_unrelated_story_context"]);function Ce(e){return nt.test(e)||e.includes("@neocortex")||e.includes("*yoloop")||q.test(e)||L.test(e)}function co(e){return!Ce(e)&&ce.test(e)}const dt=new Set(["schemaVersion","contractVersion","kind","commandClass","jobId","operationId","idempotencyKey","targetKind","targetRef","commandRef","epicId","runtime","publicSummary","reasonCode","attempts","metadata","redactionSummary","publicSafe"]),ct=new Set(["runtimeId","modelId","source","reasonCode","publicSafe"]),lt="job-aborted",ut="max-iterations-reached",pt="max-duration-reached",mt=new Set(["git-lifecycle-integration-backpressure","git-lifecycle-integration-lock-failed","git-lifecycle-integration-lock-release-failed"]);async function ft(e,t){const o=ye(__dirname,"../../commands/invoke.js"),a=Pe(o)?o:ye(__dirname,"../../../dist/commands/invoke.js");return new Promise(r=>{const n=ve(process.execPath,["-e",`
2
2
  process.once('message', async ({ modulePath, options }) => {
3
3
  try {
4
4
  const result = await require(modulePath).invoke(options);
5
5
  process.send(result, () => process.exit(0));
6
6
  } catch { process.exit(1); }
7
7
  });
8
- `],{cwd:e.projectRoot,stdio:["ignore","pipe","pipe","ipc"],windowsHide:!0});let d,u=0,m=!1;const f=setTimeout(()=>{m=!0,i.kill()},e.timeoutMs),c=S=>{u+=S.length,u>32*1024*1024&&(m=!0,i.kill())};i.stdout?.on("data",c),i.stderr?.on("data",c),i.on("message",S=>{if(d||!I(S)||typeof S.success!="boolean"||Buffer.byteLength(JSON.stringify(S))>32*1024*1024){m=!0,i.kill();return}d=S});const h={success:!1,errorCode:"headless-root-invoke-failed",error:"The isolated root metadata invocation did not complete.",exitCode:1};i.on("error",()=>{m=!0}),i.on("close",S=>{clearTimeout(f),s(S===0&&!m&&d?d:h)}),i.send({modulePath:a,options:r},S=>{S&&(m=!0,i.kill())})});return{success:n.success,instructions:n.instructions,metadata:n.metadata,error:n.error,errorCode:n.errorCode,exitCode:n.exitCode,durationMs:Date.now()-t,publicSafe:!0}}async function co(e){const t=e.adapterRegistry??Me(),o=U(e.limit??Ke,1,10),a=U(e.leaseMs??ze,1e3,3600*1e3),r=U(e.staleLeaseAfterMs??Be,0,1440*60*1e3),n=U(e.maxAttempts??$e,1,10),s=U(e.localConcurrencyCap??_e,1,ot),i=[],d=[],u=e.now(),m=yt({store:e.store,metadata:e.metadata,nowIso:u,maxAttempts:n,queueCap:e.queueCap});i.push(...m.reasonCodes);const f=e.store.recoverStaleHeadlessExecutionAttempts({nowIso:u,staleAfterMs:r,limit:o*2});f.recoveredAttemptIds.length>0&&(i.push(p.EXECUTION_BACKOFF),f.failedAttemptIds.length>0&&i.push(p.EXECUTION_TIMEOUT));const c=e.store.listDueHeadlessExecutionAttempts({nowIso:e.now(),limit:Math.max(o*5,10)}).filter(h=>h.directive_kind==="run_yoloop").slice(0,o);for(const h of c){const S=await ht({store:e.store,projectRoot:e.projectRoot,runnerId:e.runnerId,attempt:h,registry:t,now:e.now,leaseMs:a,timeoutMs:U(e.timeoutMs??Ue,1e3,18e5),backoffMs:U(e.backoffMs??He,1e3,36e5),maxAttempts:n,maxIterations:U(e.maxIterations??et,1,100),maxDurationMs:U(e.maxDurationMs??tt,1e3,72e5),localConcurrencyCap:s,queueCap:e.queueCap,adapterOptions:e.adapterOptions,runtimeDefaults:e.runtimeDefaults,runtimeFallback:e.runtimeFallback,yoloopInvoker:e.yoloopInvoker??ft,serverUrl:e.serverUrl,idFactory:e.idFactory??Ut,continuousWorkspaceManager:e.continuousWorkspaceManager??qe(),terminalGitAdapter:e.terminalGitAdapter??Xe(e.projectRoot)});d.push(S),i.push(S.reasonCode,...S.workerPoolSummary.reasonCodes)}return{ok:d.every(h=>h.outcome!=="failed")&&m.rejectedCount===0,enqueuedAttemptCount:m.enqueuedCount,dueAttemptCount:c.length,processedAttemptCount:d.filter(h=>h.outcome!=="ignored").length,recoveredAttemptIds:f.recoveredAttemptIds,receipts:d,reasonCodes:B(i.length>0?i:[p.OK]),publicSafe:!0}}function yt(e){let t=0,o=0;const a=[];for(const r of Mt(e.metadata)){if(!I(r)||r.kind!=="run_yoloop")continue;const n=gt(r);if(!n.ok){o+=1,a.push(n.reasonCode);continue}const s=n.directive;if(!e.store.jobExists(s.jobId)){o+=1,a.push(he.BYPASS_BLOCKED);continue}const i=Nt(s);if(e.store.hasCompletedHeadlessExecutionDirectiveHash(i)){a.push(p.EXECUTION_COMPLETED);continue}const d=we({autonomousKind:"run_yoloop",source:"headless-run-yoloop",targetKind:"epic",targetRef:s.targetRef,epicId:s.epicId??re(s.targetRef),jobId:s.jobId,operationSeed:s.operationId,commandHash:w(s.commandRef)}),u=De(e.store,d,e.nowIso,{requireExistingJob:!0});if(!u.ok){o+=1,a.push(u.reasonCode);continue}const m=V("attempt",s.idempotencyKey),f=V("exec",s.operationId),c=e.store.enqueueHeadlessExecutionAttempt({attemptId:m,executionId:f,jobId:s.jobId,directiveHash:i,directiveKind:"run_yoloop",commandClass:s.commandClass,targetKind:"epic",targetRef:s.targetRef,epicId:s.epicId??re(s.targetRef),runtimeId:s.runtime?.runtimeId,modelId:s.runtime?.modelId,runtimeSource:Bt(s.runtime?.source),reasonCode:s.reasonCode,publicSummary:s.publicSummary,enqueuedAt:e.nowIso,notBeforeAt:e.nowIso,maxAttempts:e.maxAttempts,queueCap:e.queueCap,operationId:`${s.operationId}:enqueue`,idempotencyKey:s.idempotencyKey,counts:{directives:1},hashes:{directive:i},redactionSummary:s.redactionSummary,relativePaths:[s.targetRef],metadata:xe(d,{schemaVersion:1,contractVersion:"continuity-v1",jobId:s.jobId,operationId:s.operationId,reasonCode:s.reasonCode??p.OK,targetRef:s.targetRef,directiveHash:i})});if(!c.accepted){o+=1,a.push(c.reasonCode??"queue-cap-reached");continue}c.inserted&&(t+=1),a.push(p.OK)}return{enqueuedCount:t,rejectedCount:o,reasonCodes:B(a)}}async function ht(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 wt(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 s=Ct(e);if(!s.ok)return ue(e.store,e.attempt,{leaseId:o,runnerId:e.runnerId,status:s.status,receiptStatus:s.receiptStatus,reasonCode:s.reasonCode,publicSummary:s.publicSummary,completedAt:e.now(),counts:me(),hashes:{directive:e.attempt.directive_hash},redactionSummary:s.redactionSummary,relativePaths:zt(e.attempt),childStoryIds:[],stateTransitions:["start"]});const i=await _t({...e,prepared:s.input}),d=Lt(e.attempt,i,e.maxAttempts,e.backoffMs,e.now()),u=d.retry?"backoff":i.status,m=d.retry?"deferred":i.receiptStatus,f=d.retry?mt.has(i.reasonCode)?i.reasonCode:p.EXECUTION_BACKOFF:i.reasonCode,c=d.retry?"Headless run_yoloop execution scheduled bounded retry after transient metadata/runtime outcome.":i.publicSummary;return ue(e.store,e.attempt,{leaseId:o,runnerId:e.runnerId,status:u,receiptStatus:m,reasonCode:f,publicSummary:c,completedAt:e.now(),durationMs:i.durationMs,notBeforeAt:d.notBeforeAt,retryCount:d.retryCount,counts:i.counts,workerPoolSummary:i.workerPoolSummary,hashes:{...i.hashes,directive:e.attempt.directive_hash},redactionSummary:i.redactionSummary,relativePaths:i.relativePaths,childStoryIds:i.childStoryIds,runtimeId:s.input.runtimeId,modelId:s.input.modelId,runtimeSource:s.input.runtimeSource,stateTransitions:i.stateTransitions})}async function _t(e){const t=Date.now(),o=["start"],a=new Set,r=[],n=[],s={root:w(e.prepared.rootPrompt)},i=[_("rootPrompt","prompt_body",s.root)];let d=0,u=0,m=0,f=0,c=0,h=0,S;const l=ge(e.localConcurrencyCap),y=new Map;let D=!1;const T=new Map,H=new Map,ae=v=>{const b=v.child;s[`child-${b.storyId.replace(/[^A-Za-z0-9_.:-]/g,"-")}`]=v.commandHash,i.push(v.promptRedaction);const g=v.receipt;if(v.terminalFailure){if(v.deferredFailure){T.set(b.storyId,v.terminalFailure),l.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),n.push(b.targetRef),m+=1);return}if(!g||g.outcome==="deferred"){T.set(b.storyId,v.reasonCodes.includes("queue-cap-reached")?p.WORKER_POOL_BACKPRESSURE_PAUSED:g?.reasonCode||p.EXECUTION_BACKOFF),v.reasonCodes.includes("queue-cap-reached")&&(l.backpressurePauseCount+=1);return}T.delete(b.storyId),!a.has(b.storyId)&&(a.add(b.storyId),r.push(b.storyId),n.push(b.targetRef),g.outcome==="failed"?(m+=1,H.set(b.storyId,g.reasonCode||p.EXECUTION_FAILED)):g.outcome==="ignored"?f+=1:u+=1)},J=async()=>{const v=await Promise.race([...y.entries()].map(([b,g])=>g.promise.then(K=>({storyId:b,result:K}))));y.delete(v.storyId),l.completedChildCount+=1,l.pendingChildCount=y.size,ae(v.result)};for(;;){if(d>=e.maxIterations)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:ut,publicSummary:"Headless yoloop reached the bounded iteration limit before completion metadata.",retryable:!1,startedAt:t,counts:E(d,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(Date.now()-t>e.maxDurationMs)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:pt,publicSummary:"Headless yoloop reached the bounded duration limit before completion metadata.",retryable:!1,startedAt:t,counts:E(d,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(e.terminalGitAdapter.prepareLifecycleEvidence){o.push("lifecycle_evidence");const A=await e.terminalGitAdapter.prepareLifecycleEvidence({epicId:e.prepared.epicId,nowIso:e.now()});if(!A.ok)return o.push("backoff"),R({status:A.retryEligible?"backoff":"failed",receiptStatus:A.retryEligible?"deferred":"failed",reasonCode:A.reasonCode,publicSummary:"Headless yoloop stopped because physical Git lifecycle evidence could not be produced safely.",retryable:A.retryEligible,startedAt:t,counts:E(d,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});S=A.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:d,runtimeId:e.prepared.runtimeId,...e.prepared.modelId?{modelId:e.prepared.modelId}:{},timeoutMs:e.timeoutMs,serverUrl:e.serverUrl});if(v.durationMs!==void 0&&(s[`iter-${d}`]=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(d,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const b=v.metadata,g=Tt(b);if(!g.ok)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:g.reasonCode,publicSummary:g.publicSummary,retryable:!1,startedAt:t,counts:E(d,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:[...i,...g.redactionSummary],relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if((g.aborted||g.complete||g.replay||g.outcome&&g.outcome!=="selected"&&g.outcome!=="queue_exhausted")&&D&&y.size>0){await J(),d+=1,o.push("reinvoke");continue}if(g.aborted)return h+=1,o.push("aborted"),R({status:"failed",receiptStatus:"failed",reasonCode:lt,publicSummary:"Headless yoloop stopped because public metadata reported an aborted loop.",retryable:!1,startedAt:t,counts:E(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(g.outcome&&g.outcome!=="selected"&&g.outcome!=="queue_exhausted")return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:`yoloop-${g.outcome}`,publicSummary:"Headless yoloop stopped on a non-executable graph-first continuation outcome.",retryable:!1,startedAt:t,counts:E(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(g.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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(g.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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(g.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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const K=vt(b);if(K){o.push("terminal_git");const A=new Date,x=await Ze(e.projectRoot,{kind:"continuous",storyId:K.epicId,sessionId:`${e.runnerId}:${e.attempt.attempt_id}`,idempotencyKey:K.idempotencyKey,persistent:!1,expiresAt:new Date(A.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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});let z,j=!1;try{z=await Ge(K,e.terminalGitAdapter,e.now,S)}finally{j=await Je(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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(s[`terminal-git-${d}`]=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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o})}if(g.complete)return c+=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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});d+=1,o.push("reinvoke");continue}if(g.complete)return c+=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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const Q=Pt(b);if(Q){o.push("git_reconciliation");const A=await We(Q,e.terminalGitAdapter,e.now);if(s[`git-reconciliation-${d}`]=w(`${Q.idempotencyKey}:${A.reasonCodes.join(",")}`),!A.ok)return o.push("backoff"),R({status:"backoff",receiptStatus:"deferred",reasonCode:A.reasonCodes[0]??"git-reconciliation-failed",publicSummary:"Headless yoloop paused at a fail-closed Git reconciliation boundary.",retryable:!0,startedAt:t,counts:E(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o})}const C=At(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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:[...i,...C.redactionSummary],relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const F=C.continuous?void 0:C.prompts.find(A=>a.has(A.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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:[...i,_("storyId","prompt_body",w(F.storyId))],relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(l.mode=C.mode==="continuous_dag"?"continuous_dag":C.parallelAuthorized?"parallel_wave":"serial",l.serverMaxConcurrency=C.serverMaxConcurrency,C.continuous){D=!0;const A=C.prompts.filter(x=>!a.has(x.storyId)&&!y.has(x.storyId));if(l.pendingChildCount=A.length+y.size,A.length>0){const x=Se({store:e.store,nowIso:e.now(),localCap:e.localConcurrencyCap,serverMaxConcurrency:C.serverMaxConcurrency,parallelAuthorized:!0,continuous:!0,eligibleCount:A.length});if(l.queueCap=x.queueCap,l.availableLeases=x.availableLeases,l.effectiveConcurrency=x.effectiveConcurrency,l.reasonCodes.push(x.reasonCode),x.effectiveConcurrency===0&&y.size===0)return l.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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const z=A.slice(0,x.effectiveConcurrency);o.push("child_story_delegation");for(const j of z)y.set(j.storyId,{child:j,promise:Ie({...e,child:j,iteration:d})});l.startedChildCount+=z.length,l.peakConcurrency=Math.max(l.peakConcurrency,y.size),l.pendingChildCount=A.length-z.length+y.size}if(y.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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o})}d+=1,o.push("reinvoke");continue}l.pendingChildCount=C.prompts.length;const Y=[...C.prompts];for(;Y.length>0;){const A=Se({store:e.store,nowIso:e.now(),localCap:e.localConcurrencyCap,serverMaxConcurrency:C.serverMaxConcurrency,parallelAuthorized:C.parallelAuthorized,continuous:!1,eligibleCount:Y.length});if(l.queueCap=A.queueCap,l.availableLeases=A.availableLeases,l.effectiveConcurrency=A.effectiveConcurrency,l.reasonCodes.push(A.reasonCode),A.effectiveConcurrency===0)return l.backpressurePauseCount+=1,l.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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const x=Y.splice(0,A.effectiveConcurrency);l.startedChildCount+=x.length,l.peakConcurrency=Math.max(l.peakConcurrency,x.length),l.pendingChildCount=Y.length,o.push("child_story_delegation");const z=await Promise.all(x.map(M=>Ie({...e,child:M,iteration:d})));l.completedChildCount+=z.length;let j;for(const M of z){const ne=M.child;s[`child-${ne.storyId.replace(/[^A-Za-z0-9_.:-]/g,"-")}`]=M.commandHash,i.push(M.promptRedaction),r.push(ne.storyId),n.push(ne.targetRef),a.add(ne.storyId);const ee=M.receipt;if(!ee){M.reasonCodes.includes("queue-cap-reached")?(l.backpressurePauseCount+=1,l.pendingChildCount+=1,l.reasonCodes.push(p.WORKER_POOL_BACKPRESSURE_PAUSED),j??={kind:"deferred",reasonCode:p.WORKER_POOL_BACKPRESSURE_PAUSED}):(m+=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"){m+=1,j??={kind:"failed",reasonCode:ee.reasonCode||p.EXECUTION_FAILED};continue}ee.outcome==="ignored"?f+=1:u+=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(d+1,r.length,u,m,f,c,h),workerPoolSummary:k(l),hashes:s,redactions:i,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o})}}d+=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?Ve(t.value):e.adapterOptions?.commandRunner,r=xt({rootAttempt:e.attempt,child:e.child,iteration:e.iteration,runtimeId:e.prepared.runtimeId,modelId:e.prepared.modelId,runtimeSource:e.prepared.runtimeSource}),n=V("attempt",r.idempotencyKey);let s=!!t;try{const i=await Fe({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:[n],idFactory:e.idFactory}),d=i.receipts.find(u=>u.attemptId===n)??i.receipts[0];if(t?.ok&&d&&d.outcome!=="failed"&&d.outcome!=="deferred"){const u=await e.continuousWorkspaceManager.integrate(t.value,{receiptRefs:[`continuity:${d.attemptId}`],nowIso:d.timestamp});if(!u.ok)return{child:e.child,receipt:d,reasonCodes:[...i.reasonCodes,u.reasonCode],commandHash:w(e.child.commandRef),promptRedaction:_(`child.${e.child.storyId}`,"prompt_body",w(e.child.commandRef)),terminalFailure:u.reasonCode,deferredFailure:/backpressure|graph-revision-stale/.test(u.reasonCode)};s=!1}return{child:e.child,receipt:d,reasonCodes:i.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,s)}}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))),n=e.parallelAuthorized?Math.max(1,Math.floor(e.serverMaxConcurrency)):1,s=Math.max(0,Math.min(e.continuous?e.eligibleCount:n,...e.continuous?[]:[e.localCap],o,r));return{queueCap:o,availableLeases:r,effectiveConcurrency:s,reasonCode:s===0?p.WORKER_POOL_BACKPRESSURE_PAUSED:(e.parallelAuthorized||e.continuous)&&s>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 Ct(e){const t=Le(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=It(e.attempt);if(!o.ok)return o;const a=St(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 It(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 St(e){const t=e.runtimeDefaults!==void 0?e.runtimeDefaults:Ne({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=$t(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 n=je(r);return n.ok?{ok:!0,runtimeId:n.runtimeId,...n.modelId?{modelId:n.modelId}:{},runtimeSource:n.runtimeSource}:{ok:!1,reasonCode:n.reasonCode,publicSummary:n.publicSummary,redactionSummary:n.redactionSummary}}function gt(e){const t=[];for(const y of Object.keys(e))(!dt.has(y)||te.test(y))&&t.push(_(y,Z(y),"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"),n=N(e,"operationId"),s=N(e,"idempotencyKey"),i=N(e,"targetKind"),d=N(e,"targetRef"),u=N(e,"commandRef"),m=N(e,"publicSummary"),f=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(n)||t.push(_("operationId","unsafe_key","value-denied")),fe(s)||t.push(_("idempotencyKey","unsafe_key","value-denied")),(i!=="epic"||!d||!de.test(d)||L.test(d))&&t.push(_("targetRef","prompt_body","value-denied"));const c=d?`*yoloop @${d}`:void 0;(!u||u!==c||u.includes("@neocortex")||q.test(u)||L.test(u))&&t.push(_("commandRef","prompt_body","value-denied")),f&&d&&f!==re(d)&&t.push(_("epicId","prompt_body","value-denied")),(!m||m.length>240||L.test(m))&&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 h=Dt(e.runtime,t);e.attempts!==void 0&&se(e.attempts,"attempts",t),e.metadata!==void 0&&se(e.metadata,"metadata",t);const S=I(e.metadata)?e.metadata:void 0,l=jt(e.redactionSummary,t);return t.length>0||o!=="run_yoloop"||!a||!r||!n||!s||!d||!u||!m?{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:n,idempotencyKey:s,targetKind:"epic",targetRef:d,commandRef:u,...f?{epicId:f}:{},...h?{runtime:h}:{},publicSummary:m,...typeof e.reasonCode=="string"?{reasonCode:e.reasonCode}:{},...S?{metadata:S}:{},...l.length>0?{redactionSummary:l}:{},publicSafe:!0}}}function At(e,t){if(!e)return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop metadata was missing.",[]);const o=bt(e);if(!o.ok)return o;const a=[],r=I(e.yoloopExecutionPlan)?e.yoloopExecutionPlan:void 0,n=r?P(r.storyIds).filter(W):[],s=r?.version===3&&I(r.scheduler)&&Array.isArray(r.scheduler.nodes)?new Map(r.scheduler.nodes.filter(I).map(c=>[String(c.storyId??""),c])):new Map,i=r?.version===3&&I(r.scheduler)&&typeof r.scheduler.graphRevision=="string"?r.scheduler.graphRevision:void 0,d=r?.version===3&&typeof r.executionBranch=="string"?r.executionBranch:void 0;let u;if(r){const c=Ot(r);if(!c.ok)return c;u=c;for(const S of Rt(r)){const l=X(S,t,"execution-plan");if(!l.ok)return l;a.push(Ae(l.prompt,s.get(l.prompt.storyId),i,d))}if(a.length===0)for(const S of n){const l=X(`*yolo @docs/stories/${S}.story.md`,t,"execution-plan");if(!l.ok)return l;a.push(Ae(l.prompt,s.get(l.prompt.storyId),i,d))}const h=kt(e.skillDirectives,a);if(!h.ok)return h}const m=typeof e.nextStoryId=="string"&&W(e.nextStoryId)?e.nextStoryId:void 0;for(const c of r?[]:Array.isArray(e.skillDirectives)?e.skillDirectives:[]){if(!I(c)||c.kind!=="task")continue;const h=P(c.promptTemplates);if(h.length>0){for(const D of h){const T=X(D,t,"task-directive");if(!T.ok)return T;a.push(T.prompt)}continue}const S=typeof c.promptTemplate=="string"?c.promptTemplate:void 0;if(!S)continue;const l=P(c.storyIds).filter(W),y=l.length>0?l:m?[m]:[];if(y.length===0&&ce.test(S)){const D=X(S,t,"task-directive");if(!D.ok)return D;a.push(D.prompt);continue}for(const D of y){const T=S.includes("{storyId}")?S.replaceAll("{storyId}",D):S,H=X(T,t,"task-directive");if(!H.ok)return H;a.push(H.prompt)}}if(a.length===0&&m){const c=X(`*yolo @docs/stories/${m}.story.md`,t,"next-story");if(!c.ok)return c;a.push(c.prompt)}const f=Ft(a,c=>c.commandRef);if(u?.continuous){if(f.length!==n.length||f.some(c=>c.preparationOnly!==!0||c.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(f.some(c=>c.preparationOnly===!0))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected branchless preparation outside a validated continuous plan.",[_("promptTemplates","prompt_body","operation-denied")]);if(n.length>0){const c=new Set(n);for(const h of f)if(!c.has(h.storyId))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a child prompt outside the server-authorized execution plan.",[_("storyId","prompt_body",w(h.storyId))])}return u?.parallelAuthorized&&!G(f.map(c=>c.storyId),n)?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop rejected a parallel plan whose executable prompts did not match the selected wave.",[]):f.length===0&&!u?.continuous?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop metadata did not include an authorized per-story child prompt.",[]):{ok:!0,prompts:f,mode:u?.mode??"legacy",serverMaxConcurrency:u?.serverMaxConcurrency??1,parallelAuthorized:u?.parallelAuthorized??!1,continuous:u?.continuous??!1,reasonCodes:[p.OK,u?.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):[],n=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}:{},...n?{rootAuthority:n}:{}}}function bt(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 kt(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 n=typeof r.promptTemplate=="string"?r.promptTemplate:void 0,s=P(r.promptTemplates);if(n==="[REDACTED]"&&r.subagentType==="neocortex"&&typeof r.reasonCode=="string"&&r.reasonCode.startsWith("directive-prompt-")&&s.length===0)continue;const d=[...n?[n]:[],...s];if(r.subagentType!=="neocortex"||d.length===0||d.some(u=>!o.has(u)))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)&&it.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 n=`${t}.${a}`;!(a==="promptTemplate"||a==="promptTemplates"||a==="invocationPrompt"||a==="childPromptKind"||a==="allowMetaTaskPromptInChild"||a==="authorization")&&te.test(a)&&o.push(_(n,Z(a),"key-denied")),oe(r,n,o)}return}o.push(_(t,"unsafe_key","value-denied"))}}function Ot(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(y=>!W(y))||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 n=Array.isArray(e.skippedStories)?e.skippedStories:[];for(const y of n){if(!I(y)||typeof y.storyId!="string"||!W(y.storyId)||typeof y.reason!="string")return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop skipped-story evidence was malformed.",[]);if(a.includes(y.storyId))return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop selected a story that server evidence marked skipped.",[])}if(r){const y=I(e.scheduler)?e.scheduler:void 0,D=Array.isArray(y?.nodes)?y.nodes.filter(I):[],T=P(y?.readyStoryIds),H=P(y?.runningStoryIds),ae=P(e.promptTemplates),J=I(e.dependencyBasis)?e.dependencyBasis:void 0,v=I(e.readinessBasis)?e.readinessBasis:void 0,b=typeof y?.graphRevision=="string"?y.graphRevision:"",g=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:"",A=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)||A.length===0||A.length!==C.writeSet.length||!be(C.childExecutionAuthority,{storyId:F,invocationPrompt:Y,authorizedWriteSet:A})});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"||!y||y.schemaVersion!==1||y.strategy!=="continuous-event-driven-dag"||y.logicalConcurrency!=="ready-set"||y.capacityPolicy!=="backpressure-only"||y.rootOwnsLoop!==!0||y.maxDepth!==1||!/^[a-f0-9]{64}$/.test(b)||!Ht(g)||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 y=Ye(e);return y.ok?{ok:!0,mode:"parallel_wave",serverMaxConcurrency:y.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 s=e.maxConcurrency,i=e.maxParallel,d=I(e.dependencyBasis)?e.dependencyBasis:void 0,u=I(e.readinessBasis)?e.readinessBasis:void 0,m=Array.isArray(e.parallelWaves)?e.parallelWaves:[],f=m.length===1&&I(m[0])?m[0]:void 0;if(o.rootOwnedScheduling!=="parallel_wave_allowed"||!Number.isInteger(s)||typeof s!="number"||s<2||s>a.length||!Number.isInteger(i)||i!==s||!d||d.source!=="state_snapshot"||!G(P(d.storyIds),a)||!u||u.source!=="ready_wave"||!G(P(u.selectedStoryIds),a)||!f||!G(P(f.storyIds),a)||f.maxConcurrency!==s)return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan lacked consistent bounded authorization and readiness evidence.",[]);const c=P(f.promptTemplates);if(c.length!==a.length||new Set(c).size!==c.length)return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel wave prompts were incomplete or ambiguous.",[]);const S=(Array.isArray(f.proofSummaries)?f.proofSummaries:Array.isArray(e.proofSummaries)?e.proofSummaries:[]).find(y=>I(y)&&G(P(y.storyIds),a));return!I(S)||S.dependencyClosure!=="resolved"||S.contractOwnership!=="non_overlapping"||S.validationSurfaces!=="compatible"?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan lacked resolved independence proof.",[]):n.find(y=>I(y)&&typeof y.reason=="string"&&/(cycle|unresolved|ambiguous)/i.test(y.reason))?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan contained unresolved dependency evidence.",[]):{ok:!0,mode:"parallel_wave",serverMaxConcurrency:s,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(n=>Qe(n)!==n)||!Et(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 Et(e,t){return e.length===t.length&&e.every((o,a)=>o===t[a])}function Rt(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=at.test(e),r=e.replace(/^\*yolo @/,"").replace(/ branchless-preparation$/,""),n=Kt(r);return!rt.test(r)||!W(n)||!n.startsWith(`${t}.`)?O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a child prompt outside the targeted public epic.",[_("storyId","prompt_body",w(n))]):{ok:!0,prompt:{storyId:n,targetRef:r,commandRef:e,source:o,...a?{preparationOnly:!0}:{}}}}function vt(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 Pt(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 Tt(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,n=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:n}}function xt(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(),n=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}),s={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:n,hashes:a,...o.reasonCode===he.BYPASS_BLOCKED?{governanceEvidence:Te}:{},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:n,hashes:a,redactionSummary:o.redactionSummary,relativePaths:B([t.target_ref,...o.relativePaths]),metadata:s}),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:n,hashes:a,redactionSummary:o.redactionSummary,relativePaths:B([t.target_ref,...o.relativePaths]),metadata:s}),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:n,hashes:a,redactionSummary:o.redactionSummary,relativePaths:B([t.target_ref,...o.relativePaths]),metadata:s}),{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 wt(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 Lt(e,t,o,a,r){if(!t.retryable)return{retry:!1};const n=e.retry_count+1;if(n>=Math.max(1,e.max_attempts||o))return{retry:!1,retryCount:n};const s=Math.min(8,2**Math.max(0,e.retry_count));return{retry:!0,retryCount:n,notBeforeAt:Oe(r,a*s)}}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 Dt(e,t){if(e===void 0)return;if(!I(e)){t.push(_("runtime","unsafe_key","value-denied"));return}for(const n of Object.keys(e))(!ct.has(n)||te.test(n))&&t.push(_(`runtime.${n}`,Z(n),"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 Mt(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 Nt(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 n=`${t}.${a}`;te.test(a)&&o.push(_(n,Z(a),"key-denied")),se(r,n,o)}return}o.push(_(t,"unsafe_key","value-denied"))}}function jt(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 n=N(r,"field"),s=N(r,"reason"),i=N(r,"evidence");if(!n||!s||!i||L.test(n)||L.test(s)||L.test(i)){t.push(_(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}o.push({field:n,reason:s,evidence:i,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 Ht(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 zt(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,n,s){return{iterations:e,childCount:t,succeededChildCount:o,failedChildCount:a,skippedChildCount:r,metadataCompleteCount:n,metadataAbortedCount:s}}function Kt(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 $t(e){if(e==="explicit"||e==="origin"||e==="default"||e==="fallback")return e}function Bt(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&&st.test(e)&&!L.test(e)&&!q.test(e))}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ut(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 Ft(e,t){const o=new Set,a=[];for(const r of e){const n=t(r);o.has(n)||(o.add(n),a.push(r))}return a}export{_e as DEFAULT_HEADLESS_YOLOOP_LOCAL_CONCURRENCY_CAP,tt as DEFAULT_HEADLESS_YOLOOP_MAX_DURATION_MS,et as DEFAULT_HEADLESS_YOLOOP_MAX_ITERATIONS,ot as MAX_HEADLESS_YOLOOP_LOCAL_CONCURRENCY_CAP,so as RUN_YOLOOP_DRIVER_STATES,ft as defaultYoloopRootInvoker,io as isCanonicalDelegatedStoryPrompt,co as runYoloopExecutionPhase};
8
+ `],{cwd:t.projectRoot,stdio:["ignore","pipe","pipe","ipc"],windowsHide:!0});let s,c=0,i=!1;const u=setTimeout(()=>{i=!0,n.kill()},t.timeoutMs),f=d=>{c+=d.length,c>32*1024*1024&&(i=!0,n.kill())};n.stdout?.on("data",f),n.stderr?.on("data",f),n.on("message",d=>{if(s||!I(d)||typeof d.success!="boolean"||Buffer.byteLength(JSON.stringify(d))>32*1024*1024){i=!0,n.kill();return}s=d});const m={success:!1,errorCode:"headless-root-invoke-failed",error:"The isolated root metadata invocation did not complete.",exitCode:1};n.on("error",()=>{i=!0}),n.on("close",d=>{clearTimeout(u),r(d===0&&!i&&s?s:m)}),n.send({modulePath:a,options:e},d=>{d&&(i=!0,n.kill())})})}async function yt(e,t=ft){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 lo(e){const t=e.adapterRegistry??Me(),o=U(e.limit??Ke,1,10),a=U(e.leaseMs??ze,1e3,3600*1e3),r=U(e.staleLeaseAfterMs??Be,0,1440*60*1e3),n=U(e.maxAttempts??$e,1,10),s=U(e.localConcurrencyCap??_e,1,ot),c=[],i=[],u=e.now(),f=ht({store:e.store,metadata:e.metadata,nowIso:u,maxAttempts:n,queueCap:e.queueCap});c.push(...f.reasonCodes);const m=e.store.recoverStaleHeadlessExecutionAttempts({nowIso:u,staleAfterMs:r,limit:o*2});m.recoveredAttemptIds.length>0&&(c.push(p.EXECUTION_BACKOFF),m.failedAttemptIds.length>0&&c.push(p.EXECUTION_TIMEOUT));const d=e.store.listDueHeadlessExecutionAttempts({nowIso:e.now(),limit:Math.max(o*5,10)}).filter(C=>C.directive_kind==="run_yoloop").slice(0,o);for(const C of d){const A=await _t({store:e.store,projectRoot:e.projectRoot,runnerId:e.runnerId,attempt:C,registry:t,now:e.now,leaseMs:a,timeoutMs:U(e.timeoutMs??Ue,1e3,18e5),backoffMs:U(e.backoffMs??He,1e3,36e5),maxAttempts:n,maxIterations:U(e.maxIterations??et,1,100),maxDurationMs:U(e.maxDurationMs??tt,1e3,72e5),localConcurrencyCap:s,queueCap:e.queueCap,adapterOptions:e.adapterOptions,runtimeDefaults:e.runtimeDefaults,runtimeFallback:e.runtimeFallback,yoloopInvoker:e.yoloopInvoker??yt,serverUrl:e.serverUrl,idFactory:e.idFactory??Yt,continuousWorkspaceManager:e.continuousWorkspaceManager??qe(),terminalGitAdapter:e.terminalGitAdapter??Xe(e.projectRoot)});i.push(A),c.push(A.reasonCode,...A.workerPoolSummary.reasonCodes)}return{ok:i.every(C=>C.outcome!=="failed")&&f.rejectedCount===0,enqueuedAttemptCount:f.enqueuedCount,dueAttemptCount:d.length,processedAttemptCount:i.filter(C=>C.outcome!=="ignored").length,recoveredAttemptIds:m.recoveredAttemptIds,receipts:i,reasonCodes:B(c.length>0?c:[p.OK]),publicSafe:!0}}function ht(e){let t=0,o=0;const a=[];for(const r of Nt(e.metadata)){if(!I(r)||r.kind!=="run_yoloop")continue;const n=At(r);if(!n.ok){o+=1,a.push(n.reasonCode);continue}const s=n.directive;if(!e.store.jobExists(s.jobId)){o+=1,a.push(he.BYPASS_BLOCKED);continue}const c=jt(s);if(e.store.hasCompletedHeadlessExecutionDirectiveHash(c)){a.push(p.EXECUTION_COMPLETED);continue}const i=we({autonomousKind:"run_yoloop",source:"headless-run-yoloop",targetKind:"epic",targetRef:s.targetRef,epicId:s.epicId??re(s.targetRef),jobId:s.jobId,operationSeed:s.operationId,commandHash:w(s.commandRef)}),u=De(e.store,i,e.nowIso,{requireExistingJob:!0});if(!u.ok){o+=1,a.push(u.reasonCode);continue}const f=V("attempt",s.idempotencyKey),m=V("exec",s.operationId),d=e.store.enqueueHeadlessExecutionAttempt({attemptId:f,executionId:m,jobId:s.jobId,directiveHash:c,directiveKind:"run_yoloop",commandClass:s.commandClass,targetKind:"epic",targetRef:s.targetRef,epicId:s.epicId??re(s.targetRef),runtimeId:s.runtime?.runtimeId,modelId:s.runtime?.modelId,runtimeSource:Ut(s.runtime?.source),reasonCode:s.reasonCode,publicSummary:s.publicSummary,enqueuedAt:e.nowIso,notBeforeAt:e.nowIso,maxAttempts:e.maxAttempts,queueCap:e.queueCap,operationId:`${s.operationId}:enqueue`,idempotencyKey:s.idempotencyKey,counts:{directives:1},hashes:{directive:c},redactionSummary:s.redactionSummary,relativePaths:[s.targetRef],metadata:xe(i,{schemaVersion:1,contractVersion:"continuity-v1",jobId:s.jobId,operationId:s.operationId,reasonCode:s.reasonCode??p.OK,targetRef:s.targetRef,directiveHash:c})});if(!d.accepted){o+=1,a.push(d.reasonCode??"queue-cap-reached");continue}d.inserted&&(t+=1),a.push(p.OK)}return{enqueuedCount:t,rejectedCount:o,reasonCodes:B(a)}}async function _t(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 Lt(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 s=It(e);if(!s.ok)return ue(e.store,e.attempt,{leaseId:o,runnerId:e.runnerId,status:s.status,receiptStatus:s.receiptStatus,reasonCode:s.reasonCode,publicSummary:s.publicSummary,completedAt:e.now(),counts:me(),hashes:{directive:e.attempt.directive_hash},redactionSummary:s.redactionSummary,relativePaths:Kt(e.attempt),childStoryIds:[],stateTransitions:["start"]});const c=await Ct({...e,prepared:s.input}),i=Dt(e.attempt,c,e.maxAttempts,e.backoffMs,e.now()),u=i.retry?"backoff":c.status,f=i.retry?"deferred":c.receiptStatus,m=i.retry?mt.has(c.reasonCode)?c.reasonCode:p.EXECUTION_BACKOFF:c.reasonCode,d=i.retry?"Headless run_yoloop execution scheduled bounded retry after transient metadata/runtime outcome.":c.publicSummary;return ue(e.store,e.attempt,{leaseId:o,runnerId:e.runnerId,status:u,receiptStatus:f,reasonCode:m,publicSummary:d,completedAt:e.now(),durationMs:c.durationMs,notBeforeAt:i.notBeforeAt,retryCount:i.retryCount,counts:c.counts,workerPoolSummary:c.workerPoolSummary,hashes:{...c.hashes,directive:e.attempt.directive_hash},redactionSummary:c.redactionSummary,relativePaths:c.relativePaths,childStoryIds:c.childStoryIds,runtimeId:s.input.runtimeId,modelId:s.input.modelId,runtimeSource:s.input.runtimeSource,stateTransitions:c.stateTransitions})}async function Ct(e){const t=Date.now(),o=["start"],a=new Set,r=[],n=[],s={root:w(e.prepared.rootPrompt)},c=[h("rootPrompt","prompt_body",s.root)];let i=0,u=0,f=0,m=0,d=0,C=0,A;const l=ge(e.localConcurrencyCap),y=new Map;let D=!1;const T=new Map,H=new Map,ae=v=>{const b=v.child;s[`child-${b.storyId.replace(/[^A-Za-z0-9_.:-]/g,"-")}`]=v.commandHash,c.push(v.promptRedaction);const S=v.receipt;if(v.terminalFailure){if(v.deferredFailure){T.set(b.storyId,v.terminalFailure),l.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),n.push(b.targetRef),f+=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")&&(l.backpressurePauseCount+=1);return}T.delete(b.storyId),!a.has(b.storyId)&&(a.add(b.storyId),r.push(b.storyId),n.push(b.targetRef),S.outcome==="failed"?(f+=1,H.set(b.storyId,S.reasonCode||p.EXECUTION_FAILED)):S.outcome==="ignored"?m+=1:u+=1)},J=async()=>{const v=await Promise.race([...y.entries()].map(([b,S])=>S.promise.then(K=>({storyId:b,result:K}))));y.delete(v.storyId),l.completedChildCount+=1,l.pendingChildCount=y.size,ae(v.result)};for(;;){if(i>=e.maxIterations)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:ut,publicSummary:"Headless yoloop reached the bounded iteration limit before completion metadata.",retryable:!1,startedAt:t,counts:E(i,r.length,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(Date.now()-t>e.maxDurationMs)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:pt,publicSummary:"Headless yoloop reached the bounded duration limit before completion metadata.",retryable:!1,startedAt:t,counts:E(i,r.length,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],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&&(s[`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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const b=v.metadata,S=xt(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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:[...c,...S.redactionSummary],relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if((S.aborted||S.complete||S.replay||S.outcome&&S.outcome!=="selected"&&S.outcome!=="queue_exhausted")&&D&&y.size>0){await J(),i+=1,o.push("reinvoke");continue}if(S.aborted)return C+=1,o.push("aborted"),R({status:"failed",receiptStatus:"failed",reasonCode:lt,publicSummary:"Headless yoloop stopped because public metadata reported an aborted loop.",retryable:!1,startedAt:t,counts:E(i+1,r.length,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const K=Pt(b);if(K){o.push("terminal_git");const g=new Date,x=await Ze(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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});let z,j=!1;try{z=await Ge(K,e.terminalGitAdapter,e.now,A)}finally{j=await Je(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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(s[`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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o})}if(S.complete)return d+=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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});i+=1,o.push("reinvoke");continue}if(S.complete)return d+=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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const Q=Tt(b);if(Q){o.push("git_reconciliation");const g=await We(Q,e.terminalGitAdapter,e.now);if(s[`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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o})}const _=bt(b,e.prepared.epicId);if(!_.ok)return o.push("backoff"),R({status:"failed",receiptStatus:"failed",reasonCode:_.reasonCode,publicSummary:_.publicSummary,retryable:!1,startedAt:t,counts:E(i+1,r.length,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:[...c,..._.redactionSummary],relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const Y=_.continuous?void 0:_.prompts.find(g=>a.has(g.storyId));if(Y)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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:[...c,h("storyId","prompt_body",w(Y.storyId))],relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});if(l.mode=_.mode==="continuous_dag"?"continuous_dag":_.parallelAuthorized?"parallel_wave":"serial",l.serverMaxConcurrency=_.serverMaxConcurrency,_.continuous){D=!0;const g=_.prompts.filter(x=>!a.has(x.storyId)&&!y.has(x.storyId));if(l.pendingChildCount=g.length+y.size,g.length>0){const x=Se({store:e.store,nowIso:e.now(),localCap:e.localConcurrencyCap,serverMaxConcurrency:_.serverMaxConcurrency,parallelAuthorized:!0,continuous:!0,eligibleCount:g.length});if(l.queueCap=x.queueCap,l.availableLeases=x.availableLeases,l.effectiveConcurrency=x.effectiveConcurrency,l.reasonCodes.push(x.reasonCode),x.effectiveConcurrency===0&&y.size===0)return l.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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const z=g.slice(0,x.effectiveConcurrency);o.push("child_story_delegation");for(const j of z)y.set(j.storyId,{child:j,promise:Ie({...e,child:j,iteration:i})});l.startedChildCount+=z.length,l.peakConcurrency=Math.max(l.peakConcurrency,y.size),l.pendingChildCount=g.length-z.length+y.size}if(y.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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o})}i+=1,o.push("reinvoke");continue}l.pendingChildCount=_.prompts.length;const F=[..._.prompts];for(;F.length>0;){const g=Se({store:e.store,nowIso:e.now(),localCap:e.localConcurrencyCap,serverMaxConcurrency:_.serverMaxConcurrency,parallelAuthorized:_.parallelAuthorized,continuous:!1,eligibleCount:F.length});if(l.queueCap=g.queueCap,l.availableLeases=g.availableLeases,l.effectiveConcurrency=g.effectiveConcurrency,l.reasonCodes.push(g.reasonCode),g.effectiveConcurrency===0)return l.backpressurePauseCount+=1,l.pendingChildCount=F.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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],childStoryIds:r,stateTransitions:o});const x=F.splice(0,g.effectiveConcurrency);l.startedChildCount+=x.length,l.peakConcurrency=Math.max(l.peakConcurrency,x.length),l.pendingChildCount=F.length,o.push("child_story_delegation");const z=await Promise.all(x.map(M=>Ie({...e,child:M,iteration:i})));l.completedChildCount+=z.length;let j;for(const M of z){const ne=M.child;s[`child-${ne.storyId.replace(/[^A-Za-z0-9_.:-]/g,"-")}`]=M.commandHash,c.push(M.promptRedaction),r.push(ne.storyId),n.push(ne.targetRef),a.add(ne.storyId);const ee=M.receipt;if(!ee){M.reasonCodes.includes("queue-cap-reached")?(l.backpressurePauseCount+=1,l.pendingChildCount+=1,l.reasonCodes.push(p.WORKER_POOL_BACKPRESSURE_PAUSED),j??={kind:"deferred",reasonCode:p.WORKER_POOL_BACKPRESSURE_PAUSED}):(f+=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"){f+=1,j??={kind:"failed",reasonCode:ee.reasonCode||p.EXECUTION_FAILED};continue}ee.outcome==="ignored"?m+=1:u+=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,u,f,m,d,C),workerPoolSummary:k(l),hashes:s,redactions:c,relativePaths:[e.prepared.targetRef,...n],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:h(`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?Ve(t.value):e.adapterOptions?.commandRunner,r=wt({rootAttempt:e.attempt,child:e.child,iteration:e.iteration,runtimeId:e.prepared.runtimeId,modelId:e.prepared.modelId,runtimeSource:e.prepared.runtimeSource}),n=V("attempt",r.idempotencyKey);let s=!!t;try{const c=await Ye({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:[n],idFactory:e.idFactory}),i=c.receipts.find(u=>u.attemptId===n)??c.receipts[0];if(t?.ok&&i&&i.outcome!=="failed"&&i.outcome!=="deferred"){const u=await e.continuousWorkspaceManager.integrate(t.value,{receiptRefs:[`continuity:${i.attemptId}`],nowIso:i.timestamp});if(!u.ok)return{child:e.child,receipt:i,reasonCodes:[...c.reasonCodes,u.reasonCode],commandHash:w(e.child.commandRef),promptRedaction:h(`child.${e.child.storyId}`,"prompt_body",w(e.child.commandRef)),terminalFailure:u.reasonCode,deferredFailure:/backpressure|graph-revision-stale/.test(u.reasonCode)};s=!1}return{child:e.child,receipt:i,reasonCodes:c.reasonCodes,commandHash:w(e.child.commandRef),promptRedaction:h(`child.${e.child.storyId}`,"prompt_body",w(e.child.commandRef))}}finally{t?.ok&&await e.continuousWorkspaceManager.release(t.value,s)}}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))),n=e.parallelAuthorized?Math.max(1,Math.floor(e.serverMaxConcurrency)):1,s=Math.max(0,Math.min(e.continuous?e.eligibleCount:n,...e.continuous?[]:[e.localCap],o,r));return{queueCap:o,availableLeases:r,effectiveConcurrency:s,reasonCode:s===0?p.WORKER_POOL_BACKPRESSURE_PAUSED:(e.parallelAuthorized||e.continuous)&&s>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 It(e){const t=Le(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=St(e.attempt);if(!o.ok)return o;const a=gt(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 St(e){const t=[];e.directive_kind!=="run_yoloop"&&t.push(h("directiveKind","unsafe_key","value-denied")),e.target_kind!=="epic"&&t.push(h("targetKind","prompt_body","value-denied")),(!de.test(e.target_ref)||q.test(e.target_ref)||L.test(e.target_ref))&&t.push(h("targetRef","prompt_body","value-denied"));const o=re(e.target_ref);return e.epic_id&&e.epic_id!==o&&t.push(h("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 gt(e){const t=e.runtimeDefaults!==void 0?e.runtimeDefaults:Ne({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=Bt(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 n=je(r);return n.ok?{ok:!0,runtimeId:n.runtimeId,...n.modelId?{modelId:n.modelId}:{},runtimeSource:n.runtimeSource}:{ok:!1,reasonCode:n.reasonCode,publicSummary:n.publicSummary,redactionSummary:n.redactionSummary}}function At(e){const t=[];for(const y of Object.keys(e))(!dt.has(y)||te.test(y))&&t.push(h(y,Z(y),"key-denied"));e.publicSafe!==!0&&t.push(h("publicSafe","unsafe_key","value-denied"));const o=N(e,"kind"),a=N(e,"commandClass"),r=N(e,"jobId"),n=N(e,"operationId"),s=N(e,"idempotencyKey"),c=N(e,"targetKind"),i=N(e,"targetRef"),u=N(e,"commandRef"),f=N(e,"publicSummary"),m=N(e,"epicId");o!=="run_yoloop"&&t.push(h("kind","unsafe_key","value-denied")),a!=="goal-tick"&&a!=="loop-tick"&&t.push(h("commandClass","unsafe_key","value-denied")),fe(r)||t.push(h("jobId","unsafe_key","value-denied")),fe(n)||t.push(h("operationId","unsafe_key","value-denied")),fe(s)||t.push(h("idempotencyKey","unsafe_key","value-denied")),(c!=="epic"||!i||!de.test(i)||L.test(i))&&t.push(h("targetRef","prompt_body","value-denied"));const d=i?`*yoloop @${i}`:void 0;(!u||u!==d||u.includes("@neocortex")||q.test(u)||L.test(u))&&t.push(h("commandRef","prompt_body","value-denied")),m&&i&&m!==re(i)&&t.push(h("epicId","prompt_body","value-denied")),(!f||f.length>240||L.test(f))&&t.push(h("publicSummary","unbounded_text","value-denied")),e.reasonCode!==void 0&&(typeof e.reasonCode!="string"||L.test(e.reasonCode))&&t.push(h("reasonCode","unsafe_key","value-denied"));const C=Mt(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,l=Ht(e.redactionSummary,t);return t.length>0||o!=="run_yoloop"||!a||!r||!n||!s||!i||!u||!f?{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:n,idempotencyKey:s,targetKind:"epic",targetRef:i,commandRef:u,...m?{epicId:m}:{},...C?{runtime:C}:{},publicSummary:f,...typeof e.reasonCode=="string"?{reasonCode:e.reasonCode}:{},...A?{metadata:A}:{},...l.length>0?{redactionSummary:l}:{},publicSafe:!0}}}function bt(e,t){if(!e)return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop metadata was missing.",[]);const o=kt(e);if(!o.ok)return o;const a=[],r=I(e.yoloopExecutionPlan)?e.yoloopExecutionPlan:void 0,n=r?P(r.storyIds).filter(W):[],s=r?.version===3&&I(r.scheduler)&&Array.isArray(r.scheduler.nodes)?new Map(r.scheduler.nodes.filter(I).map(d=>[String(d.storyId??""),d])):new Map,c=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 u;if(r){const d=Et(r);if(!d.ok)return d;u=d;for(const A of vt(r)){const l=X(A,t,"execution-plan");if(!l.ok)return l;a.push(Ae(l.prompt,s.get(l.prompt.storyId),c,i))}if(a.length===0)for(const A of n){const l=X(`*yolo @docs/stories/${A}.story.md`,t,"execution-plan");if(!l.ok)return l;a.push(Ae(l.prompt,s.get(l.prompt.storyId),c,i))}const C=Ot(e.skillDirectives,a);if(!C.ok)return C}const f=typeof e.nextStoryId=="string"&&W(e.nextStoryId)?e.nextStoryId:void 0;for(const d of r?[]:Array.isArray(e.skillDirectives)?e.skillDirectives:[]){if(!I(d)||d.kind!=="task")continue;const C=P(d.promptTemplates);if(C.length>0){for(const D of C){const T=X(D,t,"task-directive");if(!T.ok)return T;a.push(T.prompt)}continue}const A=typeof d.promptTemplate=="string"?d.promptTemplate:void 0;if(!A)continue;const l=P(d.storyIds).filter(W),y=l.length>0?l:f?[f]:[];if(y.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 y){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&&f){const d=X(`*yolo @docs/stories/${f}.story.md`,t,"next-story");if(!d.ok)return d;a.push(d.prompt)}const m=Ft(a,d=>d.commandRef);if(u?.continuous){if(m.length!==n.length||m.some(d=>d.preparationOnly!==!0||d.source!=="execution-plan"))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless continuous yoloop rejected an ambiguous or non-preparation child prompt.",[h("promptTemplates","prompt_body","operation-denied")])}else if(m.some(d=>d.preparationOnly===!0))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected branchless preparation outside a validated continuous plan.",[h("promptTemplates","prompt_body","operation-denied")]);if(n.length>0){const d=new Set(n);for(const C of m)if(!d.has(C.storyId))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a child prompt outside the server-authorized execution plan.",[h("storyId","prompt_body",w(C.storyId))])}return u?.parallelAuthorized&&!G(m.map(d=>d.storyId),n)?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop rejected a parallel plan whose executable prompts did not match the selected wave.",[]):m.length===0&&!u?.continuous?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop metadata did not include an authorized per-story child prompt.",[]):{ok:!0,prompts:m,mode:u?.mode??"legacy",serverMaxConcurrency:u?.serverMaxConcurrency??1,parallelAuthorized:u?.parallelAuthorized??!1,continuous:u?.continuous??!1,reasonCodes:[p.OK,u?.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):[],n=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}:{},...n?{rootAuthority:n}:{}}}function kt(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 Ot(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 n=typeof r.promptTemplate=="string"?r.promptTemplate:void 0,s=P(r.promptTemplates);if(n==="[REDACTED]"&&r.subagentType==="neocortex"&&typeof r.reasonCode=="string"&&r.reasonCode.startsWith("directive-prompt-")&&s.length===0)continue;const i=[...n?[n]:[],...s];if(r.subagentType!=="neocortex"||i.length===0||i.some(u=>!o.has(u)))return O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a task directive that conflicted with the server-authorized execution plan.",[h(`skillDirectives.${a}`,"prompt_body","operation-denied")])}return{ok:!0}}function oe(e,t,o){if(typeof e=="string"){if(/\.allowedDebt\.constraints\.\d+$/.test(t)&&it.has(e))return;(L.test(e)||/\0/.test(e))&&o.push(h(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 n=`${t}.${a}`;!(a==="promptTemplate"||a==="promptTemplates"||a==="invocationPrompt"||a==="childPromptKind"||a==="allowMetaTaskPromptInChild"||a==="authorization")&&te.test(a)&&o.push(h(n,Z(a),"key-denied")),oe(r,n,o)}return}o.push(h(t,"unsafe_key","value-denied"))}}function Et(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(y=>!W(y))||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.",[h("isolationPolicy","prompt_body","value-denied")]);const n=Array.isArray(e.skippedStories)?e.skippedStories:[];for(const y of n){if(!I(y)||typeof y.storyId!="string"||!W(y.storyId)||typeof y.reason!="string")return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop skipped-story evidence was malformed.",[]);if(a.includes(y.storyId))return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop selected a story that server evidence marked skipped.",[])}if(r){const y=I(e.scheduler)?e.scheduler:void 0,D=Array.isArray(y?.nodes)?y.nodes.filter(I):[],T=P(y?.readyStoryIds),H=P(y?.runningStoryIds),ae=P(e.promptTemplates),J=I(e.dependencyBasis)?e.dependencyBasis:void 0,v=I(e.readinessBasis)?e.readinessBasis:void 0,b=typeof y?.graphRevision=="string"?y.graphRevision:"",S=typeof e.executionBranch=="string"?e.executionBranch:"",K=D.map(_=>typeof _.storyId=="string"?_.storyId:""),Q=D.find(_=>{const Y=typeof _.storyId=="string"?_.storyId:"",F=typeof _.promptTemplate=="string"?_.promptTemplate:"",g=Array.isArray(_.writeSet)?P(_.writeSet):[];return!W(Y)||F!==`*yolo @docs/stories/${Y}.story.md branchless-preparation`||typeof _.dispatchId!="string"||!/^[a-f0-9]{64}$/.test(_.dispatchId)||typeof _.idempotencyKey!="string"||!/^[a-f0-9]{64}$/.test(_.idempotencyKey)||_.dependencyBasis!=="verified"||!Array.isArray(_.dependencies)||P(_.dependencies).length!==_.dependencies.length||!Array.isArray(_.writeSet)||g.length===0||g.length!==_.writeSet.length||!be(_.childExecutionAuthority,{storyId:Y,invocationPrompt:F,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"||!y||y.schemaVersion!==1||y.strategy!=="continuous-event-driven-dag"||y.logicalConcurrency!=="ready-set"||y.capacityPolicy!=="backpressure-only"||y.rootOwnsLoop!==!0||y.maxDepth!==1||!/^[a-f0-9]{64}$/.test(b)||!zt(S)||new Set(K).size!==K.length||K.some(_=>!W(_))||T.some(_=>!K.includes(_))||H.some(_=>!K.includes(_)||T.includes(_))||!G(a,T)||ae.length!==a.length||ae.some((_,Y)=>_!==`*yolo @docs/stories/${a[Y]}.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 y=Fe(e);return y.ok?{ok:!0,mode:"parallel_wave",serverMaxConcurrency:y.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 s=e.maxConcurrency,c=e.maxParallel,i=I(e.dependencyBasis)?e.dependencyBasis:void 0,u=I(e.readinessBasis)?e.readinessBasis:void 0,f=Array.isArray(e.parallelWaves)?e.parallelWaves:[],m=f.length===1&&I(f[0])?f[0]:void 0;if(o.rootOwnedScheduling!=="parallel_wave_allowed"||!Number.isInteger(s)||typeof s!="number"||s<2||s>a.length||!Number.isInteger(c)||c!==s||!i||i.source!=="state_snapshot"||!G(P(i.storyIds),a)||!u||u.source!=="ready_wave"||!G(P(u.selectedStoryIds),a)||!m||!G(P(m.storyIds),a)||m.maxConcurrency!==s)return O(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan lacked consistent bounded authorization and readiness evidence.",[]);const d=P(m.promptTemplates);if(d.length!==a.length||new Set(d).size!==d.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(y=>I(y)&&G(P(y.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.",[]):n.find(y=>I(y)&&typeof y.reason=="string"&&/(cycle|unresolved|ambiguous)/i.test(y.reason))?O(p.YOLOOP_METADATA_INVALID,"Headless yoloop parallel plan contained unresolved dependency evidence.",[]):{ok:!0,mode:"parallel_wave",serverMaxConcurrency:s,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(n=>Qe(n)!==n)||!Rt(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 Rt(e,t){return e.length===t.length&&e.every((o,a)=>o===t[a])}function vt(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.",[h("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.",[h("promptTemplate","prompt_body",w(e))]);const a=at.test(e),r=e.replace(/^\*yolo @/,"").replace(/ branchless-preparation$/,""),n=$t(r);return!rt.test(r)||!W(n)||!n.startsWith(`${t}.`)?O(p.YOLOOP_ISOLATION_VIOLATION,"Headless yoloop rejected a child prompt outside the targeted public epic.",[h("storyId","prompt_body",w(n))]):{ok:!0,prompt:{storyId:n,targetRef:r,commandRef:e,source:o,...a?{preparationOnly:!0}:{}}}}function Pt(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 Tt(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 xt(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,n=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:[h("yoloopTerminal","unsafe_key","value-denied")]}:{ok:!0,complete:a,aborted:r,outcome:o,replay:n}}function wt(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:[h("prompt","prompt_body",w(e.child.commandRef))],publicSafe:!0}}function ue(e,t,o){const a=ke(o.hashes),r=o.workerPoolSummary??le(),n=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}),s={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:n,hashes:a,...o.reasonCode===he.BYPASS_BLOCKED?{governanceEvidence:Te}:{},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:n,hashes:a,redactionSummary:o.redactionSummary,relativePaths:B([t.target_ref,...o.relativePaths]),metadata:s}),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:n,hashes:a,redactionSummary:o.redactionSummary,relativePaths:B([t.target_ref,...o.relativePaths]),metadata:s}),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:n,hashes:a,redactionSummary:o.redactionSummary,relativePaths:B([t.target_ref,...o.relativePaths]),metadata:s}),{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 Lt(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 Dt(e,t,o,a,r){if(!t.retryable)return{retry:!1};const n=e.retry_count+1;if(n>=Math.max(1,e.max_attempts||o))return{retry:!1,retryCount:n};const s=Math.min(8,2**Math.max(0,e.retry_count));return{retry:!0,retryCount:n,notBeforeAt:Oe(r,a*s)}}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 Mt(e,t){if(e===void 0)return;if(!I(e)){t.push(h("runtime","unsafe_key","value-denied"));return}for(const n of Object.keys(e))(!ct.has(n)||te.test(n))&&t.push(h(`runtime.${n}`,Z(n),"key-denied"));e.publicSafe!==!0&&t.push(h("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(h("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(h("runtime.modelId","unsafe_key","value-denied")),r!==void 0&&r!=="explicit"&&r!=="origin"&&r!=="default"&&r!=="fallback"&&r!=="unspecified"&&t.push(h("runtime.source","unsafe_key","value-denied")),e.reasonCode!==void 0&&(typeof e.reasonCode!="string"||L.test(e.reasonCode))&&t.push(h("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 Nt(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 jt(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(h(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 n=`${t}.${a}`;te.test(a)&&o.push(h(n,Z(a),"key-denied")),se(r,n,o)}return}o.push(h(t,"unsafe_key","value-denied"))}}function Ht(e,t){if(e===void 0)return[];if(!Array.isArray(e))return t.push(h("redactionSummary","unsafe_key","value-denied")),[];const o=[];for(const[a,r]of e.entries()){if(!I(r)||r.publicSafe!==!0){t.push(h(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}const n=N(r,"field"),s=N(r,"reason"),c=N(r,"evidence");if(!n||!s||!c||L.test(n)||L.test(s)||L.test(c)){t.push(h(`redactionSummary.${a}`,"unsafe_key","value-denied"));continue}o.push({field:n,reason:s,evidence:c,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 zt(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 Kt(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,n,s){return{iterations:e,childCount:t,succeededChildCount:o,failedChildCount:a,skippedChildCount:r,metadataCompleteCount:n,metadataAbortedCount:s}}function $t(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 Bt(e){if(e==="explicit"||e==="origin"||e==="default"||e==="fallback")return e}function Ut(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&&st.test(e)&&!L.test(e)&&!q.test(e))}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Yt(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 Ft(e,t){const o=new Set,a=[];for(const r of e){const n=t(r);o.has(n)||(o.add(n),a.push(r))}return a}export{_e as DEFAULT_HEADLESS_YOLOOP_LOCAL_CONCURRENCY_CAP,tt as DEFAULT_HEADLESS_YOLOOP_MAX_DURATION_MS,et as DEFAULT_HEADLESS_YOLOOP_MAX_ITERATIONS,ot as MAX_HEADLESS_YOLOOP_LOCAL_CONCURRENCY_CAP,io as RUN_YOLOOP_DRIVER_STATES,yt as defaultYoloopRootInvoker,co as isCanonicalDelegatedStoryPrompt,lo as runYoloopExecutionPhase};
@@ -1 +1 @@
1
- import{analyzeDependencyDag as S,StructuralDagError as f}from"./structural-dag-projection.js";import{classifyInvocationShapeV2 as E}from"./invocation-shape.js";const P=12,K=16,I=["active","archived","rolled-back","synthetic","orphan"],n=(i,e,t={})=>({commandId:i,stateProjectionPolicy:e,...t}),A=Object.freeze({status:n("status","full"),"arch-plan":n("arch-plan","full"),"arch-prd":n("arch-prd","full"),"arch-architecture":n("arch-architecture","epic-targeted"),"arch-api-contracts":n("arch-api-contracts","epic-targeted"),"arch-api-integrations":n("arch-api-integrations","epic-targeted"),"arch-database":n("arch-database","epic-targeted"),"arch-security":n("arch-security","epic-targeted"),"arch-design-system":n("arch-design-system","epic-targeted"),"arch-ux-design":n("arch-ux-design","epic-targeted"),"arch-performance":n("arch-performance","epic-targeted"),"arch-testing":n("arch-testing","epic-targeted"),"arch-infrastructure":n("arch-infrastructure","epic-targeted"),"arch-review":n("arch-review","epic-targeted"),"arch-fitness-functions":n("arch-fitness-functions","epic-targeted"),"create-epic":n("create-epic","epic-summary"),"idea-diagnose":n("idea-diagnose","full"),"idea-research":n("idea-research","epic-targeted"),"generate-epic":n("generate-epic","epic-targeted"),exec:n("exec","story-targeted",{structuralRequired:!0}),yolo:n("yolo","story-targeted",{structuralRequired:!0}),"yolo-inline":n("yolo-inline","story-targeted",{structuralRequired:!0}),epic:n("epic","epic-targeted",{structuralRequired:!0}),"setup-branch":n("setup-branch","story-targeted",{structuralRequired:!0}),diagnose:n("diagnose","adaptive-targeted"),"diagnose-inline":n("diagnose-inline","full"),research:n("research","adaptive-targeted"),"research-inline":n("research-inline","full"),"write-spec":n("write-spec","story-targeted",{structuralRequired:!0}),"create-tasks":n("create-tasks","story-targeted",{structuralRequired:!0}),implement:n("implement","story-targeted",{structuralRequired:!0}),commit:n("commit","story-targeted",{structuralRequired:!0}),"commit-push":n("commit","story-targeted",{structuralRequired:!0}),sync:n("sync","story-targeted",{structuralRequired:!0}),"sync-main":n("sync","story-targeted",{structuralRequired:!0}),"create-pr":n("create-pr","story-targeted",{structuralRequired:!0}),review:n("review","story-targeted"),"review-pr":n("review","story-targeted"),merge:n("merge","story-targeted",{structuralRequired:!0}),"merge-pr":n("merge","story-targeted",{structuralRequired:!0}),"fix-blocked":n("fix-blocked","story-targeted"),"finalize-epic":n("finalize-epic","epic-targeted"),"resolve-conflicts":n("resolve-conflicts","story-targeted"),"update-memory":n("update-memory","full"),"update-project-memory":n("update-memory","story-targeted",{structuralRequired:!0}),refactor:n("refactor","adaptive-targeted"),"refactor-suggest":n("refactor","story-targeted",{structuralRequired:!0}),cleanup:n("cleanup","full"),audit:n("audit","full"),"tech-debt":n("tech-debt","full"),menu:n("menu","full"),plans:n("plans","full"),billing:n("billing","full"),subscribe:n("subscribe","full"),"qa-scan":n("qa-scan","full"),yoloop:n("yoloop","yoloop-targeted",{structuralRequired:!0}),"migrate-state":n("migrate-state","full"),"migrate-project-id":n("migrate-project-id","full"),"policy-audit":n("policy-audit","full"),"mutation-test":n("mutation-test","full"),"sync-openapi":n("sync-openapi","full"),"generate-pacts":n("generate-pacts","full"),"verify-pacts":n("verify-pacts","full"),"property-test":n("property-test","full"),"property-tests":n("property-test","story-targeted",{structuralRequired:!0}),"chaos-plan":n("chaos-plan","full"),"ui-ux-review":n("ui-ux-review","adaptive-targeted"),"solyd-system":n("solyd-system","adaptive-targeted"),goal:n("goal","continuity-scoped"),loop:n("loop","continuity-scoped"),jobs:n("jobs","continuity-scoped"),runner:n("runner","continuity-scoped"),"goal-tick":n("goal-tick","continuity-scoped"),"loop-tick":n("loop-tick","continuity-scoped"),"validate-tests":n("validate-tests","story-targeted",{structuralRequired:!0}),"qa-gate":n("qa-gate","story-targeted",{structuralRequired:!0})}),V=Object.freeze({st:"status",arquitetura:"arch-plan",architecture:"arch-plan",arch:"arch-plan",prd:"arch-prd","product-requirements":"arch-prd","arch-doc":"arch-architecture","tech-architecture":"arch-architecture","api-contracts":"arch-api-contracts","api-contract":"arch-api-contracts","api-integrations":"arch-api-integrations","api-int":"arch-api-integrations","database-schema":"arch-database","db-schema":"arch-database",db:"arch-database","cyber-security":"arch-security",security:"arch-security",sec:"arch-security","design-system":"arch-design-system",ds:"arch-design-system","atomic-design":"arch-design-system","ux-design":"arch-ux-design",ux:"arch-ux-design",wireframes:"arch-ux-design",wireframe:"arch-ux-design","user-flows":"arch-ux-design",performance:"arch-performance",perf:"arch-performance","capacity-planning":"arch-performance",capacity:"arch-performance","arch-perf":"arch-performance","performance-strategy":"arch-performance","testing-strategy":"arch-testing","test-plan":"arch-testing","test-strategy":"arch-testing","arch-test":"arch-testing",infrastructure:"arch-infrastructure",infra:"arch-infrastructure","deploy-plan":"arch-infrastructure",deployment:"arch-infrastructure","arch-infra":"arch-infrastructure","arch-deploy":"arch-infrastructure","review-consolidation":"arch-review",consolidation:"arch-review","architecture-review":"arch-review","arch-consolidation":"arch-review",fitness:"arch-fitness-functions","fitness-functions":"arch-fitness-functions",archfit:"arch-fitness-functions","arch-fit":"arch-fitness-functions","fit-funcs":"arch-fitness-functions","criar-epic":"create-epic",planejamento:"create-epic","idea-diag":"idea-diagnose","idea-pesq":"idea-research","gerar-epic":"generate-epic",executar:"exec",pipeline:"exec","parallel-epic":"epic",setup:"setup-branch",branch:"setup-branch",diag:"diagnose",diagnostico:"diagnose",c02:"diagnose",pesquisar:"research",pesq:"research","research-fix":"research",c03:"research",spec:"write-spec",especificacao:"write-spec",c04:"write-spec",tasks:"create-tasks",tarefas:"create-tasks",c05:"create-tasks",impl:"implement",implementar:"implement",c06:"implement",push:"commit",commit_push:"commit",cp:"commit",c07:"commit",sincronizar:"sync",c08:"sync",pr:"create-pr",c09:"create-pr",revisar:"review",c11:"review",mesclar:"merge",c12:"merge",fix:"fix-blocked",corrigir:"fix-blocked",finalizar:"finalize-epic",conflitos:"resolve-conflicts",memoria:"update-memory",refactoring:"refactor",refact:"refactor",refac:"refactor",rf:"refactor","cleanup-code":"refactor","code-cleanup":"refactor","code-quality":"refactor","improve-code":"refactor",modernize:"refactor",modernization:"refactor",legacy:"refactor","legacy-code":"refactor","debt-pay":"refactor","pay-debt":"refactor","debt-reduction":"refactor","smell-fix":"refactor","fix-smells":"refactor","code-smells":"refactor",strangler:"refactor","strangler-fig":"refactor",limpar:"cleanup",limpeza:"cleanup",auditar:"audit",auditoria:"audit",debt:"tech-debt",debts:"tech-debt","debt-list":"tech-debt","tech-debts":"tech-debt",td:"tech-debt",help:"menu",ajuda:"menu","?":"menu",commands:"menu",cmds:"menu",planos:"plans",pricing:"plans",bill:"billing",subscription:"billing",sub:"billing",upgrade:"subscribe",checkout:"subscribe",qa:"qa-scan","qa-test":"qa-scan","visual-qa":"qa-scan","e2e-scan":"qa-scan",troubleshoot:"qa-scan","debug-ui":"qa-scan",scan:"qa-scan",a11y:"qa-scan",accessibility:"qa-scan",wcag:"qa-scan","auto-yolo":"yoloop","epic-runner":"yoloop","story-runner":"yoloop","loop-yolo":"yoloop","auto-epic":"yoloop",migrate:"migrate-state","state-migrate":"migrate-state","schema-migrate":"migrate-state",policy:"policy-audit","audit-policy":"policy-audit","policy-history":"policy-audit",policies:"policy-audit",mutation:"mutation-test",stryker:"mutation-test","kill-mutants":"mutation-test","openapi-sync":"sync-openapi","api-sync":"sync-openapi","spec-sync":"sync-openapi","regen-openapi":"sync-openapi",pacts:"generate-pacts","gen-pacts":"generate-pacts","regen-pacts":"generate-pacts","create-pacts":"generate-pacts","verify-pact":"verify-pacts","pact-verify":"verify-pacts","check-pacts":"verify-pacts","pact-check":"verify-pacts",property:"property-test",pbt:"property-test",proptest:"property-test","invariant-test":"property-test",chaos:"chaos-plan",gameday:"chaos-plan","resilience-test":"chaos-plan","ux-review":"ui-ux-review","design-review":"ui-ux-review","visual-review":"ui-ux-review","product-polish":"ui-ux-review","security-system":"solyd-system","authorized-security":"solyd-system","sec-system":"solyd-system",goals:"goal","durable-goal":"goal","continuity-goal":"goal",loops:"loop","durable-loop":"loop","continuity-loop":"loop",job:"jobs","continuity-jobs":"jobs","neocortex-runner":"runner","continuity-runner":"runner"}),Z=Object.freeze({1:"status",3:"arch-plan",4:"arch-prd",5:"arch-architecture",6:"arch-api-contracts",7:"arch-api-integrations",8:"arch-database",9:"arch-security",10:"arch-design-system",11:"arch-ux-design",12:"arch-performance",13:"arch-testing",14:"arch-infrastructure",15:"arch-review",16:"arch-fitness-functions",17:"create-epic",18:"idea-diagnose",19:"idea-research",20:"generate-epic",21:"exec",22:"yolo",23:"epic",24:"setup-branch",25:"diagnose",26:"research",27:"write-spec",28:"create-tasks",29:"implement",30:"commit",31:"sync",32:"create-pr",33:"review",34:"merge",35:"fix-blocked",36:"finalize-epic",37:"resolve-conflicts",38:"update-memory",39:"refactor",40:"cleanup",41:"audit",42:"tech-debt",43:"menu",44:"plans",45:"billing",46:"subscribe",47:"qa-scan",48:"yoloop",49:"migrate-state",50:"policy-audit",51:"mutation-test",52:"sync-openapi",53:"generate-pacts",54:"verify-pacts",55:"property-test",56:"chaos-plan",57:"ui-ux-review",58:"solyd-system",59:"goal",60:"loop",61:"jobs",62:"runner"});function a(i,e=120){if(typeof i!="string")return;const t=i.trim();if(t)return t.replace(/[^a-z0-9_.:-]+/gi,"_").slice(0,e)}function C(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)}function g(...i){const e=new Set,t=[];for(const r of i)for(const o of r??[]){const c=a(o,80);if(!(!c||e.has(c))&&(e.add(c),t.push(c),t.length>=K))return t}return t}function B(i){return i.trim().replace(/^@?\*/,"").replace(/^@/,"").toLowerCase()}function J(i){return i.trim().split(/\s+/,1)[0]??""}function q(i){const e=J(i);if(!e)return A.menu;const t=B(e),r=Z[t]??V[t]??t;return A[r]??null}function W(i,e,t,r="full-compatible",o=["full-state"]){return{kind:"full",commandId:t?.commandId??null,stateProjectionPolicy:t?.stateProjectionPolicy??null,projectionMode:r,trigger:i,targetEpicId:null,targetStoryId:null,includedStoryCount:Object.keys(e.stories).length,includedEpicCount:Object.keys(e.epics).length,omittedStoryCount:0,omittedEpicCount:0,reason:"full-state",reasonCodes:g(o)}}function Ee(i,e,t,r="full-compatible",o=["full-state"]){const c=W(i,e,t,r,o);return j({...e,scope:c},e,c)}function H(i){const[e]=i.trim().split(/\s+/,1);return e?/^[A-Z]?\d+(?:\.\d+)+$/i.test(e.replace(/^@/,""))||/(?:^|\/)[A-Z]?\d+(?:\.\d+)+\.story\.md$/i.test(e.replace(/^@/,"")):!1}function x(i){const e=i.match(/(?:^|[/@\s])([A-Z]?\d+(?:\.\d+)+)\.story\.md\b/i);return e?.[1]?e[1]:i.match(/(?:^|\s|@)([A-Z]?\d+(?:\.\d+)+)(?=$|\s)/i)?.[1]??null}function Q(i){const e=i.trim(),t=e.search(/\s/);return t===-1?"":e.slice(t).trim()}function O(i){return Q(i).split(/\s+/).map(e=>e.replace(/^@/,"").replace(/^['"]|['"]$/g,"")).filter(e=>e.length>0&&!e.startsWith("-"))}function Oe(i){return O(i)[0]??null}function N(i,e){const r=i.replace(/^@/,"").replace(/^epic-/i,"").replace(/\.md$/i,""),o=[r,r.toUpperCase(),/^p\d+$/i.test(r)?`P${r.replace(/^p/i,"")}`:null,/^\d+$/.test(r)?`P${r}`:null].filter(c=>typeof c=="string"&&c.length>0);for(const c of o)if(e.epics[c])return c;return null}function X(i,e){const t=i.match(/(?:^|[/@\s])epic-(P?\d+)\.md\b/i);return t?.[1]?N(t[1],e):null}function k(i,e){const t=X(i,e);if(t)return t;for(const r of O(i)){if(/^[A-Z]?\d+(?:\.\d+)+$/i.test(r))continue;const o=N(r,e);if(o)return o}return null}function ee(i,e){const t=k(i,e);if(t)return t;const r=e.yoloop,o=r?.state?.currentSession?.currentEpicId;if(typeof o=="string"&&e.epics[o])return o;const c=r?.lock?.currentEpicId??r?.lock?.epicId;return typeof c=="string"&&e.epics[c]?c:null}function te(i){const e=i.match(/(?:^|[/@\s])epic-(P?\d+)\.md\b/i)?.[1];if(e)return/^P/i.test(e)?e.toUpperCase():`P${e}`;for(const t of O(i)){if(/^P\d+$/i.test(t))return t.toUpperCase();if(/^\d+$/.test(t))return`P${t}`}return null}function h(i,e){if(typeof i.epic_id=="string"&&i.epic_id.length>0)return i.epic_id;const t=e.split(".").slice(0,-1).join(".");return t.length>0?t:null}function U(i){return typeof i=="string"&&["done","completed","merged","cancelled","canceled","abandoned"].includes(i.toLowerCase())}function v(i,e,t){if(t.has(i))return;const r=e.stories[i];if(!r)return;t.add(i);const o=r.depends_on;if(Array.isArray(o))for(const c of o)typeof c=="string"&&v(c,e,t)}function re(i,e){const t=S(e.stories,[i]),r={};for(const o of t.orderedIds){const c=e.stories[o];c&&(r[o]=c)}return r}function M(i,e,t=[]){const r={};for(const o of t)e.epics[o]&&(r[o]=e.epics[o]);for(const[o,c]of Object.entries(i)){const s=h(c,o);s&&e.epics[s]&&(r[s]=e.epics[s])}return r}function ie(i,e,t){if(t.has(i))return;const r=e.epics[i];if(!r)return;t.add(i);const o=r.depends_on;if(Array.isArray(o))for(const c of o)typeof c=="string"&&c.length>0&&ie(c,e,t)}function D(i,e,t){const r=S(t.epics,[i]),o=new Set(r.orderedIds);for(const[s,d]of Object.entries(e)){const l=h(d,s);l&&t.epics[l]&&o.add(l)}const c={};for(const s of[...o].sort((d,l)=>d.localeCompare(l,"en"))){const d=t.epics[s];d&&(c[s]=s===i?d:z(s,d))}return c}function L(i,e,t){const r=e.stories;if(!Array.isArray(r)||r.some(s=>typeof s!="string"||s.length===0))throw new f("STRUCTURAL_DEPENDENCY_MISSING",{nodes:0,edges:0,malformedStoryMemberships:1});const o=S(t.stories,r),c={};for(const s of o.orderedIds){const d=t.stories[s];d&&(c[s]=h(d,s)===i?d:F(s,d))}return c}function F(i,e){const t=Array.isArray(e.depends_on)?[...new Set(e.depends_on.filter(r=>typeof r=="string"&&r.length>0))].sort((r,o)=>r.localeCompare(o,"en")):[];return{id:a(e.id)??i,...a(e.epic_id)?{epic_id:a(e.epic_id)}:{},...a(e.status,40)?{status:a(e.status,40)}:{},depends_on:t}}function z(i,e){const t=Array.isArray(e.stories)?[...new Set(e.stories.filter(o=>typeof o=="string"&&o.length>0))].sort((o,c)=>o.localeCompare(c,"en")):[],r=Array.isArray(e.depends_on)?[...new Set(e.depends_on.filter(o=>typeof o=="string"&&o.length>0))].sort((o,c)=>o.localeCompare(c,"en")):[];return{id:a(e.id)??i,...a(e.status,40)?{status:a(e.status,40)}:{},...a(e.lifecycle_classification,40)?{lifecycle_classification:a(e.lifecycle_classification,40)}:{},stories:t,depends_on:r}}function oe(i,e,t){const r=S(e.stories),o=S(e.epics),c=Object.fromEntries(r.orderedIds.map(l=>[l,F(l,e.stories[l])])),s=Object.fromEntries(o.orderedIds.map(l=>[l,z(l,e.epics[l])])),d={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:"yoloop-discovery",trigger:i,targetEpicId:null,targetStoryId:null,includedStoryCount:r.orderedIds.length,includedEpicCount:o.orderedIds.length,omittedStoryCount:0,omittedEpicCount:0,reason:"targeted-invocation",reasonCodes:g(["structural-required","yoloop-discovery",`structural-edges-${r.edgeCount+o.edgeCount}`,"content-fields-omitted"])};return j({...e,stories:c,epics:s,scope:d},e,d)}function ce(i,e){const t=new Set,r=i.stories;if(Array.isArray(r))for(const c of r)typeof c=="string"&&v(c,e,t);const o={};for(const c of t){const s=e.stories[c];s&&(o[c]=s)}return o}function ne(i){const e={};for(const[t,r]of Object.entries(i.epics))e[t]={id:a(r.id)??t,...a(r.status)?{status:a(r.status)}:{},...I.includes(r.lifecycle_classification)?{lifecycle_classification:r.lifecycle_classification}:{},...typeof r.total_stories=="number"&&Number.isFinite(r.total_stories)?{total_stories:r.total_stories}:{},...typeof r.completed_stories=="number"&&Number.isFinite(r.completed_stories)?{completed_stories:r.completed_stories}:{}};return e}function G(i){const e={};for(const t of Object.values(i)){const r=a(t.status,40)??"unknown";e[r]=(e[r]??0)+1}return e}function se(i){const e=Object.fromEntries(I.map(t=>[t,0]));for(const t of Object.values(i)){const r=I.includes(t.lifecycle_classification)?t.lifecycle_classification:"active";e[r]=(e[r]??0)+1}return e}function T(i,e){if(!e)return!0;const t=i.epics[e];return t?!I.includes(t.lifecycle_classification)||t.lifecycle_classification==="active":!0}function $(i){for(const e of["last_updated","updated_at","completed_at","created_at","discovered_at"]){const t=i[e];if(typeof t!="string")continue;const r=Date.parse(t);if(Number.isFinite(r))return r}return 0}function ae(i){return Object.entries(i.stories).map(([e,t])=>({id:e,story:t,timestamp:$(t)})).sort((e,t)=>t.timestamp-e.timestamp||e.id.localeCompare(t.id)).slice(0,P).map(({id:e,story:t})=>({id:e,...a(t.epic_id)?{epicId:a(t.epic_id)}:{},...a(t.status,40)?{status:a(t.status,40)}:{},...a(t.last_step??t.lastStep)?{lastStep:a(t.last_step??t.lastStep)}:{},...a(t.last_updated??t.updated_at??t.completed_at??t.created_at)?{lastUpdated:a(t.last_updated??t.updated_at??t.completed_at??t.created_at)}:{}}))}function de(i){const e=i.current_session;if(!e)return;const t={activeEpicId:a(e.active_epic_id)??null,activeStoryId:a(e.active_story_id)??null,activeStepId:a(e.active_step_id)??null,sessionId:a(e.session_id)??null,startedAt:a(e.started_at)??null};return Object.values(t).some(r=>r!=null)?t:void 0}function le(i){const e=i.yoloop;if(!C(e))return;const t=C(e.state)?e.state:void 0,r=C(t?.currentSession)?t.currentSession:void 0,o=C(e.lock)?e.lock:void 0,c={...typeof e.active=="boolean"?{active:e.active}:{},currentEpicId:a(r?.currentEpicId??e.currentEpicId)??null,currentStoryId:a(r?.currentStoryId??e.currentStoryId)??null,sessionId:a(r?.sessionId??e.sessionId)??null,lockEpicId:a(o?.currentEpicId??o?.epicId)??null};return Object.keys(c).length>0?c:void 0}function ue(i){const e=i.continuity;if(!C(e))return;const t=Array.isArray(e.reasonCodes)?e.reasonCodes.filter(r=>typeof r=="string"):void 0;return{present:!0,activeJobId:a(e.activeJobId??e.jobId)??null,activeGoalId:a(e.activeGoalId??e.goalId)??null,activeLoopId:a(e.activeLoopId??e.loopId)??null,...t&&t.length>0?{reasonCodes:g(t)}:{}}}function pe(i,e,t){const r=a(e?.activeStoryId),o=a(e?.activeEpicId),c=a(e?.activeStepId),s=r&&i.stories[r]?h(i.stories[r],r):null;if((r||o||c)&&T(i,o??s))return{epicId:o??null,storyId:r??null,stepId:c??null};const d=a(t?.currentStoryId),l=a(t?.currentEpicId??t?.lockEpicId);if((d||l)&&T(i,l))return{epicId:l??null,storyId:d??null,stepId:null};const u=Object.entries(i.stories).map(([p,y])=>({id:p,story:y,timestamp:$(y)})).filter(({id:p,story:y})=>!U(y.status)&&T(i,h(y,p))).sort((p,y)=>y.timestamp-p.timestamp||p.id.localeCompare(y.id))[0];return u?{epicId:h(u.story,u.id),storyId:u.id,stepId:a(u.story.last_step??u.story.lastStep)??null}:{epicId:null,storyId:null,stepId:null}}function ye(i,e){const t=G(i.stories),r=G(i.epics),o=se(i.epics),c=Object.values(i.epics).filter(m=>(I.includes(m.lifecycle_classification)?m.lifecycle_classification:"active")==="active"&&!U(m.status)).length,s=de(i),d=le(i),l=ue(i),u=pe(i,s,d),p=ae(i),y=g(e.reasonCodes,["state-summary-attached","state-summary-bounded",`projection-${e.projectionMode??e.kind}`,e.stateProjectionPolicy?`policy-${e.stateProjectionPolicy}`:"policy-unknown",p.length>=P?"recent-stories-capped":"recent-stories-bounded",u.storyId||u.epicId?"active-ref-derived":"active-ref-empty",d?"yoloop-session-present":"yoloop-session-absent",l?"continuity-session-present":"continuity-session-absent"]);return{schemaVersion:1,totals:{stories:Object.keys(i.stories).length,epics:Object.keys(i.epics).length,storyStatus:t,epicStatus:r,epicLifecycle:o,activeEpics:c,blockedStories:t.blocked??0},active:u,blockedCount:t.blocked??0,recentStories:p,...s?{currentSession:s}:{},...d?{currentYoloopSession:d}:{},...l?{currentContinuitySession:l}:{},projection:{commandId:e.commandId??null,stateProjectionPolicy:e.stateProjectionPolicy??null,projectionMode:e.projectionMode,scopeKind:e.kind,includedStoryCount:e.includedStoryCount,includedEpicCount:e.includedEpicCount??Object.keys(i.epics).length,omittedStoryCount:e.omittedStoryCount,omittedEpicCount:e.omittedEpicCount,reason:e.reason},reasonCodes:y,publicSafe:!0}}function j(i,e,t){return{...i,stateSummary:ye(e,t)}}function fe(i,e,t){const r={};for(const c of Object.keys(e.epics))r[c]={id:c};const o={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:"summary-only",trigger:i,targetEpicId:null,targetStoryId:null,includedStoryCount:0,includedEpicCount:Object.keys(r).length,omittedStoryCount:Object.keys(e.stories).length,omittedEpicCount:0,reason:"epic-summary",reasonCodes:["epic-summary","stories-omitted","epic-stubs-only"]};return j({...e,stories:{},epics:r,scope:o},e,o)}function b(i,e,t,r=["summary-only","stories-omitted"],o="summary-only"){const c=ne(e),s={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:o,trigger:i,targetEpicId:null,targetStoryId:null,includedStoryCount:0,includedEpicCount:Object.keys(c).length,omittedStoryCount:Object.keys(e.stories).length,omittedEpicCount:Math.max(0,Object.keys(e.epics).length-Object.keys(c).length),reason:"summary-only",reasonCodes:g(r)};return j({...e,stories:{},epics:c,scope:s},e,s)}function w(i,e,t,r,o,c){const s=e.stories[r];if(!s)throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"story"});const d=h(s,r);if(!d)throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const l=e.epics[d];if(!l)throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const u=o==="yolo-story",p=u?L(d,l,e):re(r,e),y=u?D(d,p,e):M(p,e);if(!p[r]||!y[d])throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(p).length,epics:Object.keys(y).length,targetKind:"story"});const m={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:o,trigger:i,targetEpicId:d,targetStoryId:r,includedStoryCount:Object.keys(p).length,includedEpicCount:Object.keys(y).length,omittedStoryCount:Math.max(0,Object.keys(e.stories).length-Object.keys(p).length),omittedEpicCount:Math.max(0,Object.keys(e.epics).length-Object.keys(y).length),reason:"targeted-invocation",reasonCodes:g(c,u?["epic-graph-authority-complete"]:[])};return j({...e,stories:p,epics:y,scope:m},e,m)}function Y(i,e,t,r,o,c){const s=e.epics[r];if(!s)throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const d=ce(s,e),l=M(d,e,[r]);if(!l[r])throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(d).length,epics:Object.keys(l).length,targetKind:"epic"});const u={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:o,trigger:i,targetEpicId:r,targetStoryId:null,includedStoryCount:Object.keys(d).length,includedEpicCount:Object.keys(l).length,omittedStoryCount:Math.max(0,Object.keys(e.stories).length-Object.keys(d).length),omittedEpicCount:Math.max(0,Object.keys(e.epics).length-Object.keys(l).length),reason:"targeted-invocation",reasonCodes:g(c)};return j({...e,stories:d,epics:l,scope:u},e,u)}function me(i,e,t){const r=te(i),o=k(i,e);if(r&&!o)throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const c=ee(i,e),s=E({commandId:t.commandId,explicitYoloopEpicId:o,sessionYoloopEpicId:o?null:c});if(s==="yoloop-discovery")return oe(i,e,t);if(!c||s!=="yoloop-target"&&s!=="yoloop-session")throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const d=e.epics[c];if(!d)throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const l=L(c,d,e),u=D(c,l,e);if(!u[c])throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(l).length,epics:Object.keys(u).length,targetKind:"epic"});const p=s,y={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:p,trigger:i,targetEpicId:c,targetStoryId:null,includedStoryCount:Object.keys(l).length,includedEpicCount:Object.keys(u).length,omittedStoryCount:Math.max(0,Object.keys(e.stories).length-Object.keys(l).length),omittedEpicCount:Math.max(0,Object.keys(e.epics).length-Object.keys(u).length),reason:"targeted-invocation",reasonCodes:["structural-required",p,"yoloop-targeted"]};return j({...e,stories:l,epics:u,scope:y},e,y)}function ge(i,e){const t={};for(const[r,o]of Object.entries(i.epics)){const c=Array.isArray(o.stories)?o.stories.filter(s=>typeof s=="string"&&e.has(s)):[];t[r]={id:a(o.id)??r,...a(o.status,40)?{status:a(o.status,40)}:{},...typeof o.total_stories=="number"&&Number.isFinite(o.total_stories)?{total_stories:o.total_stories}:{},...typeof o.completed_stories=="number"&&Number.isFinite(o.completed_stories)?{completed_stories:o.completed_stories}:{},...c.length>0?{stories:c}:{},...c.length>0&&Array.isArray(o.depends_on)?{depends_on:o.depends_on.filter(s=>typeof s=="string"&&s.length>0)}:{},...c.length>0&&(o.branch_mode==="epic"||o.branch_mode==="story")?{branch_mode:o.branch_mode}:{},...c.length>0&&typeof o.execution_branch=="string"?{execution_branch:o.execution_branch}:{},...c.length>0&&typeof o.origin_branch=="string"?{origin_branch:o.origin_branch}:{},...c.length>0&&(o.branch_lease===null||typeof o.branch_lease=="object")?{branch_lease:o.branch_lease}:{},...c.length>0&&(o.origin_binding===null||typeof o.origin_binding=="object")?{origin_binding:o.origin_binding}:{},...c.length>0&&(o.aggregate_qa_receipt===null||typeof o.aggregate_qa_receipt=="object")?{aggregate_qa_receipt:o.aggregate_qa_receipt}:{}}}return t}function be(i){return i.stateSummary?.totals.stories??(i.scope?.includedStoryCount??Object.keys(i.stories).length)+(i.scope?.omittedStoryCount??0)}function he(i){return i.stateSummary?.totals.epics??(i.scope?.includedEpicCount??Object.keys(i.epics).length)+(i.scope?.omittedEpicCount??0)}function je(i,e){if(i.stateSummary)return{...i.stateSummary,projection:{...i.stateSummary.projection,scopeKind:"projected",projectionMode:e.projectionMode,includedStoryCount:e.includedStoryCount,includedEpicCount:e.includedEpicCount??i.stateSummary.projection.includedEpicCount,omittedStoryCount:e.omittedStoryCount,omittedEpicCount:e.omittedEpicCount,reason:"body-size"},reasonCodes:g(i.stateSummary.reasonCodes,["payload-size-guardrail","state-summary-preserved","nonessential-state-degraded"])}}function ve(i){const e=i.scope,t=new Set,r=e?.projectionMode==="structural-required"||e?.projectionMode==="yolo-story"||e?.projectionMode==="yoloop-target"||e?.projectionMode==="yoloop-session"||e?.projectionMode==="yoloop-discovery";if(r)for(const _ of Object.keys(i.stories))t.add(_);else e?.targetStoryId&&v(e.targetStoryId,i,t);const o={};for(const _ of t){const R=i.stories[_];R&&(o[_]=R)}const c=ge(i,t),s=Object.keys(o).length,d=Object.keys(c).length,l=Math.max(0,be(i)-s),u=Math.max(0,he(i)-d),p=r?e?.projectionMode??"structural-required":e?.projectionMode==="yolo-story"?"yolo-story":"summary-only",y={kind:"projected",commandId:e?.commandId??null,stateProjectionPolicy:e?.stateProjectionPolicy??null,projectionMode:p,...e?.trigger?{trigger:e.trigger}:{},targetEpicId:e?.targetEpicId??null,targetStoryId:e?.targetStoryId??null,includedStoryCount:s,includedEpicCount:d,omittedStoryCount:l,omittedEpicCount:u,reason:"body-size",reasonCodes:g(e?.reasonCodes,["payload-size-guardrail",t.size>0?"structural-targets-preserved":"stories-omitted","epics-stubbed","state-summary-preserved"])},m=je(i,y);return{...i,stories:o,epics:c,scope:y,...m?{stateSummary:m}:{}}}function _e(i,e){const t=i.trim(),r=q(t);try{if(!r){if(H(t)){const c=n("story-reference","story-targeted"),s=x(t);if(s)return w(t,e,c,s,"targeted-story",["story-reference-targeted"])}return b(t,e,n("unknown","adaptive-targeted"),["unknown-command-summary-only"])}if(r.stateProjectionPolicy==="epic-summary")return fe(t,e,r);if(r.stateProjectionPolicy==="yoloop-targeted")return me(t,e,r);const o=x(t);if(r.stateProjectionPolicy==="story-targeted"){if(o){const s=E({commandId:r.commandId,targetStoryId:o})==="yolo-story";return w(t,e,r,o,s?"yolo-story":r.structuralRequired?"structural-required":"targeted-story",[s?"yolo-story":r.structuralRequired?"structural-required":"targeted-story"])}if(r.commandId==="yolo"||r.commandId==="yolo-inline"){const c=E({commandId:r.commandId});return b(t,e,r,["yolo-inline","stories-omitted","historical-content-omitted"],c??"yolo-inline")}return r.structuralRequired?(()=>{throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"story"})})():b(t,e,r,["story-target-missing-summary-only"])}if(r.stateProjectionPolicy==="adaptive-targeted"){if(o&&e.stories[o])return w(t,e,r,o,"targeted-story",["adaptive-story-targeted"]);const c=k(t,e);return c?Y(t,e,r,c,"targeted-epic",["adaptive-epic-targeted"]):b(t,e,r,["adaptive-summary-only","target-unresolved-summary-only"])}if(r.stateProjectionPolicy==="epic-targeted"){const c=k(t,e);return c?Y(t,e,r,c,r.structuralRequired?"structural-required":"targeted-epic",[r.structuralRequired?"structural-required":"targeted-epic"]):r.structuralRequired?(()=>{throw new f("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"})})():b(t,e,r,["epic-target-missing-summary-only"])}return r.stateProjectionPolicy==="continuity-scoped"?b(t,e,r,["continuity-scoped-summary-only"]):b(t,e,r,["policy-full-summary-only"])}catch(o){if(o instanceof f)throw o;if(r?.structuralRequired)throw new f("STRUCTURAL_DEPENDENCY_MISSING",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,projectionErrors:1});return b(t,e,r??n("unknown","adaptive-targeted"),["projection-error-summary-only"])}}const Se=new Set(["yolo-story","yolo-inline","yoloop-target","yoloop-session","yoloop-discovery"]);function Ie(i){let e=0;for(const t of[i.stories,i.epics])for(const r of Object.values(t))Array.isArray(r.depends_on)&&(e+=r.depends_on.filter(o=>typeof o=="string").length);return e}function Te(i,e){const t=q(i.trim());if(!t||!["yolo","yolo-inline","yoloop"].includes(t.commandId))return null;try{const r=_e(i,e),o=r.scope?.projectionMode;if(!o||!Se.has(o))throw new f("STRUCTURAL_DEPENDENCY_MISSING",{stories:Object.keys(r.stories).length,epics:Object.keys(r.epics).length,projectionShapeErrors:1});return Object.freeze({ok:!0,version:2,shape:o,snapshot:r,included:{epics:r.scope?.includedEpicCount??Object.keys(r.epics).length,stories:r.scope?.includedStoryCount??Object.keys(r.stories).length,edges:Ie(r)},omitted:{epics:r.scope?.omittedEpicCount??0,stories:r.scope?.omittedStoryCount??0},cycleCount:0})}catch(r){if(!(r instanceof f))throw r;return Object.freeze({ok:!1,code:r.code,publicDetails:r.publicDetails})}}export{ve as degradeStateSnapshotForPayloadLimit,_e as projectStateSnapshotForInvoke,Te as projectStateSnapshotResultV2ForInvoke};
1
+ import{analyzeDependencyDag as k,StructuralDagError as m}from"./structural-dag-projection.js";import{classifyInvocationShapeV2 as O}from"./invocation-shape.js";const x=12,B=16,v=["active","archived","rolled-back","synthetic","orphan"],H=new Set(["in-progress","branch-ready","diagnose","research","write-spec","create-tasks","implemented","refactor-suggest-done","property-tests-emitted","tests-validated","qa-gate-passed","memory-updated","committed","synced","pr-created","pr-reviewed","partial"]),n=(r,e,t={})=>({commandId:r,stateProjectionPolicy:e,...t}),N=Object.freeze({status:n("status","full"),"arch-plan":n("arch-plan","full"),"arch-prd":n("arch-prd","full"),"arch-architecture":n("arch-architecture","epic-targeted"),"arch-api-contracts":n("arch-api-contracts","epic-targeted"),"arch-api-integrations":n("arch-api-integrations","epic-targeted"),"arch-database":n("arch-database","epic-targeted"),"arch-security":n("arch-security","epic-targeted"),"arch-design-system":n("arch-design-system","epic-targeted"),"arch-ux-design":n("arch-ux-design","epic-targeted"),"arch-performance":n("arch-performance","epic-targeted"),"arch-testing":n("arch-testing","epic-targeted"),"arch-infrastructure":n("arch-infrastructure","epic-targeted"),"arch-review":n("arch-review","epic-targeted"),"arch-fitness-functions":n("arch-fitness-functions","epic-targeted"),"create-epic":n("create-epic","epic-summary"),"idea-diagnose":n("idea-diagnose","full"),"idea-research":n("idea-research","epic-targeted"),"generate-epic":n("generate-epic","epic-targeted"),exec:n("exec","story-targeted",{structuralRequired:!0}),yolo:n("yolo","story-targeted",{structuralRequired:!0}),"yolo-inline":n("yolo-inline","story-targeted",{structuralRequired:!0}),epic:n("epic","epic-targeted",{structuralRequired:!0}),"setup-branch":n("setup-branch","story-targeted",{structuralRequired:!0}),diagnose:n("diagnose","adaptive-targeted"),"diagnose-inline":n("diagnose-inline","full"),research:n("research","adaptive-targeted"),"research-inline":n("research-inline","full"),"write-spec":n("write-spec","story-targeted",{structuralRequired:!0}),"create-tasks":n("create-tasks","story-targeted",{structuralRequired:!0}),implement:n("implement","story-targeted",{structuralRequired:!0}),commit:n("commit","story-targeted",{structuralRequired:!0}),"commit-push":n("commit","story-targeted",{structuralRequired:!0}),sync:n("sync","story-targeted",{structuralRequired:!0}),"sync-main":n("sync","story-targeted",{structuralRequired:!0}),"create-pr":n("create-pr","story-targeted",{structuralRequired:!0}),review:n("review","story-targeted"),"review-pr":n("review","story-targeted"),merge:n("merge","story-targeted",{structuralRequired:!0}),"merge-pr":n("merge","story-targeted",{structuralRequired:!0}),"fix-blocked":n("fix-blocked","story-targeted"),"finalize-epic":n("finalize-epic","epic-targeted"),"resolve-conflicts":n("resolve-conflicts","story-targeted"),"update-memory":n("update-memory","full"),"update-project-memory":n("update-memory","story-targeted",{structuralRequired:!0}),refactor:n("refactor","adaptive-targeted"),"refactor-suggest":n("refactor","story-targeted",{structuralRequired:!0}),cleanup:n("cleanup","full"),audit:n("audit","full"),"tech-debt":n("tech-debt","full"),menu:n("menu","full"),plans:n("plans","full"),billing:n("billing","full"),subscribe:n("subscribe","full"),"qa-scan":n("qa-scan","full"),yoloop:n("yoloop","yoloop-targeted",{structuralRequired:!0}),"migrate-state":n("migrate-state","full"),"migrate-project-id":n("migrate-project-id","full"),"policy-audit":n("policy-audit","full"),"mutation-test":n("mutation-test","full"),"sync-openapi":n("sync-openapi","full"),"generate-pacts":n("generate-pacts","full"),"verify-pacts":n("verify-pacts","full"),"property-test":n("property-test","full"),"property-tests":n("property-test","story-targeted",{structuralRequired:!0}),"chaos-plan":n("chaos-plan","full"),"ui-ux-review":n("ui-ux-review","adaptive-targeted"),"solyd-system":n("solyd-system","adaptive-targeted"),goal:n("goal","continuity-scoped"),loop:n("loop","continuity-scoped"),jobs:n("jobs","continuity-scoped"),runner:n("runner","continuity-scoped"),"goal-tick":n("goal-tick","continuity-scoped"),"loop-tick":n("loop-tick","continuity-scoped"),"validate-tests":n("validate-tests","story-targeted",{structuralRequired:!0}),"qa-gate":n("qa-gate","story-targeted",{structuralRequired:!0})}),J=Object.freeze({st:"status",arquitetura:"arch-plan",architecture:"arch-plan",arch:"arch-plan",prd:"arch-prd","product-requirements":"arch-prd","arch-doc":"arch-architecture","tech-architecture":"arch-architecture","api-contracts":"arch-api-contracts","api-contract":"arch-api-contracts","api-integrations":"arch-api-integrations","api-int":"arch-api-integrations","database-schema":"arch-database","db-schema":"arch-database",db:"arch-database","cyber-security":"arch-security",security:"arch-security",sec:"arch-security","design-system":"arch-design-system",ds:"arch-design-system","atomic-design":"arch-design-system","ux-design":"arch-ux-design",ux:"arch-ux-design",wireframes:"arch-ux-design",wireframe:"arch-ux-design","user-flows":"arch-ux-design",performance:"arch-performance",perf:"arch-performance","capacity-planning":"arch-performance",capacity:"arch-performance","arch-perf":"arch-performance","performance-strategy":"arch-performance","testing-strategy":"arch-testing","test-plan":"arch-testing","test-strategy":"arch-testing","arch-test":"arch-testing",infrastructure:"arch-infrastructure",infra:"arch-infrastructure","deploy-plan":"arch-infrastructure",deployment:"arch-infrastructure","arch-infra":"arch-infrastructure","arch-deploy":"arch-infrastructure","review-consolidation":"arch-review",consolidation:"arch-review","architecture-review":"arch-review","arch-consolidation":"arch-review",fitness:"arch-fitness-functions","fitness-functions":"arch-fitness-functions",archfit:"arch-fitness-functions","arch-fit":"arch-fitness-functions","fit-funcs":"arch-fitness-functions","criar-epic":"create-epic",planejamento:"create-epic","idea-diag":"idea-diagnose","idea-pesq":"idea-research","gerar-epic":"generate-epic",executar:"exec",pipeline:"exec","parallel-epic":"epic",setup:"setup-branch",branch:"setup-branch",diag:"diagnose",diagnostico:"diagnose",c02:"diagnose",pesquisar:"research",pesq:"research","research-fix":"research",c03:"research",spec:"write-spec",especificacao:"write-spec",c04:"write-spec",tasks:"create-tasks",tarefas:"create-tasks",c05:"create-tasks",impl:"implement",implementar:"implement",c06:"implement",push:"commit",commit_push:"commit",cp:"commit",c07:"commit",sincronizar:"sync",c08:"sync",pr:"create-pr",c09:"create-pr",revisar:"review",c11:"review",mesclar:"merge",c12:"merge",fix:"fix-blocked",corrigir:"fix-blocked",finalizar:"finalize-epic",conflitos:"resolve-conflicts",memoria:"update-memory",refactoring:"refactor",refact:"refactor",refac:"refactor",rf:"refactor","cleanup-code":"refactor","code-cleanup":"refactor","code-quality":"refactor","improve-code":"refactor",modernize:"refactor",modernization:"refactor",legacy:"refactor","legacy-code":"refactor","debt-pay":"refactor","pay-debt":"refactor","debt-reduction":"refactor","smell-fix":"refactor","fix-smells":"refactor","code-smells":"refactor",strangler:"refactor","strangler-fig":"refactor",limpar:"cleanup",limpeza:"cleanup",auditar:"audit",auditoria:"audit",debt:"tech-debt",debts:"tech-debt","debt-list":"tech-debt","tech-debts":"tech-debt",td:"tech-debt",help:"menu",ajuda:"menu","?":"menu",commands:"menu",cmds:"menu",planos:"plans",pricing:"plans",bill:"billing",subscription:"billing",sub:"billing",upgrade:"subscribe",checkout:"subscribe",qa:"qa-scan","qa-test":"qa-scan","visual-qa":"qa-scan","e2e-scan":"qa-scan",troubleshoot:"qa-scan","debug-ui":"qa-scan",scan:"qa-scan",a11y:"qa-scan",accessibility:"qa-scan",wcag:"qa-scan","auto-yolo":"yoloop","epic-runner":"yoloop","story-runner":"yoloop","loop-yolo":"yoloop","auto-epic":"yoloop",migrate:"migrate-state","state-migrate":"migrate-state","schema-migrate":"migrate-state",policy:"policy-audit","audit-policy":"policy-audit","policy-history":"policy-audit",policies:"policy-audit",mutation:"mutation-test",stryker:"mutation-test","kill-mutants":"mutation-test","openapi-sync":"sync-openapi","api-sync":"sync-openapi","spec-sync":"sync-openapi","regen-openapi":"sync-openapi",pacts:"generate-pacts","gen-pacts":"generate-pacts","regen-pacts":"generate-pacts","create-pacts":"generate-pacts","verify-pact":"verify-pacts","pact-verify":"verify-pacts","check-pacts":"verify-pacts","pact-check":"verify-pacts",property:"property-test",pbt:"property-test",proptest:"property-test","invariant-test":"property-test",chaos:"chaos-plan",gameday:"chaos-plan","resilience-test":"chaos-plan","ux-review":"ui-ux-review","design-review":"ui-ux-review","visual-review":"ui-ux-review","product-polish":"ui-ux-review","security-system":"solyd-system","authorized-security":"solyd-system","sec-system":"solyd-system",goals:"goal","durable-goal":"goal","continuity-goal":"goal",loops:"loop","durable-loop":"loop","continuity-loop":"loop",job:"jobs","continuity-jobs":"jobs","neocortex-runner":"runner","continuity-runner":"runner"}),Q=Object.freeze({1:"status",3:"arch-plan",4:"arch-prd",5:"arch-architecture",6:"arch-api-contracts",7:"arch-api-integrations",8:"arch-database",9:"arch-security",10:"arch-design-system",11:"arch-ux-design",12:"arch-performance",13:"arch-testing",14:"arch-infrastructure",15:"arch-review",16:"arch-fitness-functions",17:"create-epic",18:"idea-diagnose",19:"idea-research",20:"generate-epic",21:"exec",22:"yolo",23:"epic",24:"setup-branch",25:"diagnose",26:"research",27:"write-spec",28:"create-tasks",29:"implement",30:"commit",31:"sync",32:"create-pr",33:"review",34:"merge",35:"fix-blocked",36:"finalize-epic",37:"resolve-conflicts",38:"update-memory",39:"refactor",40:"cleanup",41:"audit",42:"tech-debt",43:"menu",44:"plans",45:"billing",46:"subscribe",47:"qa-scan",48:"yoloop",49:"migrate-state",50:"policy-audit",51:"mutation-test",52:"sync-openapi",53:"generate-pacts",54:"verify-pacts",55:"property-test",56:"chaos-plan",57:"ui-ux-review",58:"solyd-system",59:"goal",60:"loop",61:"jobs",62:"runner"});function d(r,e=120){if(typeof r!="string")return;const t=r.trim();if(t)return t.replace(/[^a-z0-9_.:-]+/gi,"_").slice(0,e)}function R(r,e=120){if(typeof r!="string")return;const t=r.trim(),i=d(r,e);return i===t?i:void 0}function D(r){if(typeof r!="string")return;const e=r.trim();if(!(!e||e.length>240||!/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(e)||e.includes("..")||e.includes("//")||e.includes("@{")||e.endsWith("/")||e.endsWith(".")||e.split("/").some(t=>!t||t.startsWith(".")||t.endsWith(".lock"))))return e}function X(r){if(typeof r!="string")return;const e=r.replace(/\\/g,"/");if(!(!e||e.length>240||e.startsWith("/")||/^[A-Za-z]:/.test(e)||e.includes("..")||e.includes("//")||e.split("/").includes(".")||!/^[A-Za-z0-9._/:@#-]+$/.test(e)))return e}function b(r){if(r===void 0||!Array.isArray(r)||r.length>128)return;const e=r.map(X);if(!e.some(t=>t===void 0))return[...new Set(e)].sort((t,i)=>t.localeCompare(i,"en"))}function ee(r){return typeof r=="string"&&H.has(r.trim().toLowerCase().replace(/_/g,"-"))}function C(r,e){const t={};for(const i of e){const c=r[i];typeof c=="string"||typeof c=="boolean"||typeof c=="number"&&Number.isFinite(c)?t[i]=c:Array.isArray(c)&&c.every(o=>typeof o=="string")&&(t[i]=[...c])}return t}function te(r,e){const t=e.checkpoint;if(!g(t)||t.schemaVersion!==1||t.storyId!==r||t.epicId!==e.epic_id||!D(t.branch)||typeof t.baseSha!="string"||!/^[0-9a-f]{7,64}$/i.test(t.baseSha)||typeof t.headSha!="string"||!/^[0-9a-f]{7,64}$/i.test(t.headSha)||t.baseSha===t.headSha||!R(t.idempotencyKey)||typeof t.recordedAt!="string"||!Number.isFinite(Date.parse(t.recordedAt))||!Array.isArray(t.commits)||t.commits.length===0||t.commits.length>256||t.commits.some(c=>typeof c!="string"||!/^[0-9a-f]{7,64}$/i.test(c))||!Array.isArray(t.receiptRefs)||t.receiptRefs.length===0||t.receiptRefs.length>256||t.receiptRefs.some(c=>typeof c!="string"||c.length>240||c.includes("..")||!/^[A-Za-z0-9._:/#\-[\]]+$/.test(c))||!g(t.qaReceipt)||t.qaReceipt.kind!=="story_qa_evidence"||t.qaReceipt.producer!=="local-yolo-tdd"||!["passed","blocked"].includes(String(t.qaVerdict))||!["approved","changes-requested","pending"].includes(String(t.reviewVerdict))||(t.reviewVerdict==="pending"?t.reviewReceipt!==void 0:!g(t.reviewReceipt)))return;const i=C(t,["schemaVersion","storyId","epicId","branch","baseSha","headSha","idempotencyKey","dispatchId","bundleId","bundleDigest","graphRevision","claimRevision","qaVerdict","reviewVerdict","recordedAt","commits","receiptRefs"]);return i.qaReceipt=C(t.qaReceipt,["schemaVersion","kind","producer","evidenceVersion","storyId","epicId","contract","command","manifestDigest","gateIds","resultDigest","baseSha","headSha","bundleDigest","graphRevision","sourceEvidenceDigest","verdict","checkedAt","receiptRef"]),g(t.reviewReceipt)&&(i.reviewReceipt=C(t.reviewReceipt,["schemaVersion","kind","producer","storyId","epicId","baseSha","headSha","bundleDigest","graphRevision","sourceEvidenceDigest","qaReceiptRef","verdict","reviewedAt","receiptRef"])),i}function re(r,e){const t=e.checkpoint_verification;if(!(!g(t)||t.schemaVersion!==1||t.kind!=="story_checkpoint_physical_verification"||t.producer!=="client-p205-transient-v1"||t.publicSafe!==!0||t.storyId!==r||t.epicId!==e.epic_id||!["verified","rejected"].includes(String(t.verdict))))return C(t,["schemaVersion","kind","producer","storyId","epicId","branch","baseSha","headSha","aggregateHeadSha","commitBodyDigest","changedPathsDigest","claimVerification","effectiveClaimRevision","command","manifestDigest","gateIds","resultDigest","graphRevision","executionEvidenceDigest","sourceEvidenceDigest","verifiedAt","verdict","reasonCodes","publicSafe"])}function g(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}function h(...r){const e=new Set,t=[];for(const i of r)for(const c of i??[]){const o=d(c,80);if(!(!o||e.has(o))&&(e.add(o),t.push(o),t.length>=B))return t}return t}function ie(r){return r.trim().replace(/^@?\*/,"").replace(/^@/,"").toLowerCase()}function ce(r){return r.trim().split(/\s+/,1)[0]??""}function U(r){const e=ce(r);if(!e)return N.menu;const t=ie(e),i=Q[t]??J[t]??t;return N[i]??null}function oe(r,e,t,i="full-compatible",c=["full-state"]){return{kind:"full",commandId:t?.commandId??null,stateProjectionPolicy:t?.stateProjectionPolicy??null,projectionMode:i,trigger:r,targetEpicId:null,targetStoryId:null,includedStoryCount:Object.keys(e.stories).length,includedEpicCount:Object.keys(e.epics).length,omittedStoryCount:0,omittedEpicCount:0,reason:"full-state",reasonCodes:h(c)}}function xe(r,e,t,i="full-compatible",c=["full-state"]){const o=oe(r,e,t,i,c);return I({...e,scope:o},e,o)}function ne(r){const[e]=r.trim().split(/\s+/,1);return e?/^[A-Z]?\d+(?:\.\d+)+$/i.test(e.replace(/^@/,""))||/(?:^|\/)[A-Z]?\d+(?:\.\d+)+\.story\.md$/i.test(e.replace(/^@/,"")):!1}function M(r){const e=r.match(/(?:^|[/@\s])([A-Z]?\d+(?:\.\d+)+)\.story\.md\b/i);return e?.[1]?e[1]:r.match(/(?:^|\s|@)([A-Z]?\d+(?:\.\d+)+)(?=$|\s)/i)?.[1]??null}function se(r){const e=r.trim(),t=e.search(/\s/);return t===-1?"":e.slice(t).trim()}function w(r){return se(r).split(/\s+/).map(e=>e.replace(/^@/,"").replace(/^['"]|['"]$/g,"")).filter(e=>e.length>0&&!e.startsWith("-"))}function Ne(r){return w(r)[0]??null}function z(r,e){const i=r.replace(/^@/,"").replace(/^epic-/i,"").replace(/\.md$/i,""),c=[i,i.toUpperCase(),/^p\d+$/i.test(i)?`P${i.replace(/^p/i,"")}`:null,/^\d+$/.test(i)?`P${i}`:null].filter(o=>typeof o=="string"&&o.length>0);for(const o of c)if(e.epics[o])return o;return null}function ae(r,e){const t=r.match(/(?:^|[/@\s])epic-(P?\d+)\.md\b/i);return t?.[1]?z(t[1],e):null}function E(r,e){const t=ae(r,e);if(t)return t;for(const i of w(r)){if(/^[A-Z]?\d+(?:\.\d+)+$/i.test(i))continue;const c=z(i,e);if(c)return c}return null}function de(r,e){const t=E(r,e);if(t)return t;const i=e.yoloop,c=i?.state?.currentSession?.currentEpicId;if(typeof c=="string"&&e.epics[c])return c;const o=i?.lock?.currentEpicId??i?.lock?.epicId;return typeof o=="string"&&e.epics[o]?o:null}function ue(r){const e=r.match(/(?:^|[/@\s])epic-(P?\d+)\.md\b/i)?.[1];if(e)return/^P/i.test(e)?e.toUpperCase():`P${e}`;for(const t of w(r)){if(/^P\d+$/i.test(t))return t.toUpperCase();if(/^\d+$/.test(t))return`P${t}`}return null}function S(r,e){if(typeof r.epic_id=="string"&&r.epic_id.length>0)return r.epic_id;const t=e.split(".").slice(0,-1).join(".");return t.length>0?t:null}function F(r){return typeof r=="string"&&["done","completed","merged","cancelled","canceled","abandoned"].includes(r.toLowerCase())}function A(r,e,t){if(t.has(r))return;const i=e.stories[r];if(!i)return;t.add(r);const c=i.depends_on;if(Array.isArray(c))for(const o of c)typeof o=="string"&&A(o,e,t)}function le(r,e){const t=k(e.stories,[r]),i={};for(const c of t.orderedIds){const o=e.stories[c];o&&(i[c]=o)}return i}function L(r,e,t=[]){const i={};for(const c of t)e.epics[c]&&(i[c]=e.epics[c]);for(const[c,o]of Object.entries(r)){const s=S(o,c);s&&e.epics[s]&&(i[s]=e.epics[s])}return i}function pe(r,e,t){if(t.has(r))return;const i=e.epics[r];if(!i)return;t.add(r);const c=i.depends_on;if(Array.isArray(c))for(const o of c)typeof o=="string"&&o.length>0&&pe(o,e,t)}function $(r,e,t){const i=k(t.epics,[r]),c=new Set(i.orderedIds);for(const[s,a]of Object.entries(e)){const u=S(a,s);u&&t.epics[u]&&c.add(u)}const o={};for(const s of[...c].sort((a,u)=>a.localeCompare(u,"en"))){const a=t.epics[s];a&&(o[s]=s===r?a:Y(s,a))}return o}function G(r,e,t){const i=e.stories;if(!Array.isArray(i)||i.some(s=>typeof s!="string"||s.length===0))throw new m("STRUCTURAL_DEPENDENCY_MISSING",{nodes:0,edges:0,malformedStoryMemberships:1});const c=k(t.stories,i),o={};for(const s of c.orderedIds){const a=t.stories[s];a&&(o[s]=S(a,s)===r?a:V(s,a))}return o}function V(r,e){const t=Array.isArray(e.depends_on)?[...new Set(e.depends_on.filter(y=>typeof y=="string"&&y.length>0))].sort((y,j)=>y.localeCompare(j,"en")):[],i={id:d(e.id)??r,...d(e.epic_id)?{epic_id:d(e.epic_id)}:{},...d(e.status,40)?{status:d(e.status,40)}:{},depends_on:t};if(!ee(e.status))return i;const c=e.source==="create-epic"||e.source==="discovered"?e.source:void 0,o=D(e.branch_name),s=R(e.last_step,120),a=Array.isArray(e.steps_completed)&&e.steps_completed.length<=64?e.steps_completed.map(y=>R(y,120)):[],u=a.length>0&&a.every(y=>y!==void 0)?a:void 0,l=typeof e.pr_number=="number"&&Number.isSafeInteger(e.pr_number)&&e.pr_number>0?e.pr_number:void 0,p=te(r,e),f=p?re(r,e):void 0;return{...i,...c?{source:c}:{},...o?{branch_name:o}:{},...s?{last_step:s}:{},...u?{steps_completed:u}:{},...l?{pr_number:l}:{},...p?{checkpoint:p}:{},...f?{checkpoint_verification:f}:{},...b(e.files_to_modify)!==void 0?{files_to_modify:b(e.files_to_modify)}:{},...b(e.contracts)!==void 0?{contracts:b(e.contracts)}:{},...b(e.contract_refs)!==void 0?{contract_refs:b(e.contract_refs)}:{},...b(e.shared_surfaces)!==void 0?{shared_surfaces:b(e.shared_surfaces)}:{}}}function Y(r,e){const t=Array.isArray(e.stories)?[...new Set(e.stories.filter(c=>typeof c=="string"&&c.length>0))].sort((c,o)=>c.localeCompare(o,"en")):[],i=Array.isArray(e.depends_on)?[...new Set(e.depends_on.filter(c=>typeof c=="string"&&c.length>0))].sort((c,o)=>c.localeCompare(o,"en")):[];return{id:d(e.id)??r,...d(e.status,40)?{status:d(e.status,40)}:{},...d(e.lifecycle_classification,40)?{lifecycle_classification:d(e.lifecycle_classification,40)}:{},stories:t,depends_on:i}}function fe(r,e,t){const i=k(e.stories),c=k(e.epics),o=Object.fromEntries(i.orderedIds.map(u=>[u,V(u,e.stories[u])])),s=Object.fromEntries(c.orderedIds.map(u=>[u,Y(u,e.epics[u])])),a={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:"yoloop-discovery",trigger:r,targetEpicId:null,targetStoryId:null,includedStoryCount:i.orderedIds.length,includedEpicCount:c.orderedIds.length,omittedStoryCount:0,omittedEpicCount:0,reason:"targeted-invocation",reasonCodes:h(["structural-required","yoloop-discovery",`structural-edges-${i.edgeCount+c.edgeCount}`,"content-fields-omitted"])};return I({...e,stories:o,epics:s,scope:a},e,a)}function ye(r,e){const t=new Set,i=r.stories;if(Array.isArray(i))for(const o of i)typeof o=="string"&&A(o,e,t);const c={};for(const o of t){const s=e.stories[o];s&&(c[o]=s)}return c}function me(r){const e={};for(const[t,i]of Object.entries(r.epics))e[t]={id:d(i.id)??t,...d(i.status)?{status:d(i.status)}:{},...v.includes(i.lifecycle_classification)?{lifecycle_classification:i.lifecycle_classification}:{},...typeof i.total_stories=="number"&&Number.isFinite(i.total_stories)?{total_stories:i.total_stories}:{},...typeof i.completed_stories=="number"&&Number.isFinite(i.completed_stories)?{completed_stories:i.completed_stories}:{}};return e}function K(r){const e={};for(const t of Object.values(r)){const i=d(t.status,40)??"unknown";e[i]=(e[i]??0)+1}return e}function ge(r){const e=Object.fromEntries(v.map(t=>[t,0]));for(const t of Object.values(r)){const i=v.includes(t.lifecycle_classification)?t.lifecycle_classification:"active";e[i]=(e[i]??0)+1}return e}function T(r,e){if(!e)return!0;const t=r.epics[e];return t?!v.includes(t.lifecycle_classification)||t.lifecycle_classification==="active":!0}function Z(r){for(const e of["last_updated","updated_at","completed_at","created_at","discovered_at"]){const t=r[e];if(typeof t!="string")continue;const i=Date.parse(t);if(Number.isFinite(i))return i}return 0}function he(r){return Object.entries(r.stories).map(([e,t])=>({id:e,story:t,timestamp:Z(t)})).sort((e,t)=>t.timestamp-e.timestamp||e.id.localeCompare(t.id)).slice(0,x).map(({id:e,story:t})=>({id:e,...d(t.epic_id)?{epicId:d(t.epic_id)}:{},...d(t.status,40)?{status:d(t.status,40)}:{},...d(t.last_step??t.lastStep)?{lastStep:d(t.last_step??t.lastStep)}:{},...d(t.last_updated??t.updated_at??t.completed_at??t.created_at)?{lastUpdated:d(t.last_updated??t.updated_at??t.completed_at??t.created_at)}:{}}))}function be(r){const e=r.current_session;if(!e)return;const t={activeEpicId:d(e.active_epic_id)??null,activeStoryId:d(e.active_story_id)??null,activeStepId:d(e.active_step_id)??null,sessionId:d(e.session_id)??null,startedAt:d(e.started_at)??null};return Object.values(t).some(i=>i!=null)?t:void 0}function _e(r){const e=r.yoloop;if(!g(e))return;const t=g(e.state)?e.state:void 0,i=g(t?.currentSession)?t.currentSession:void 0,c=g(e.lock)?e.lock:void 0,o={...typeof e.active=="boolean"?{active:e.active}:{},currentEpicId:d(i?.currentEpicId??e.currentEpicId)??null,currentStoryId:d(i?.currentStoryId??e.currentStoryId)??null,sessionId:d(i?.sessionId??e.sessionId)??null,lockEpicId:d(c?.currentEpicId??c?.epicId)??null};return Object.keys(o).length>0?o:void 0}function je(r){const e=r.continuity;if(!g(e))return;const t=Array.isArray(e.reasonCodes)?e.reasonCodes.filter(i=>typeof i=="string"):void 0;return{present:!0,activeJobId:d(e.activeJobId??e.jobId)??null,activeGoalId:d(e.activeGoalId??e.goalId)??null,activeLoopId:d(e.activeLoopId??e.loopId)??null,...t&&t.length>0?{reasonCodes:h(t)}:{}}}function Se(r,e,t){const i=d(e?.activeStoryId),c=d(e?.activeEpicId),o=d(e?.activeStepId),s=i&&r.stories[i]?S(r.stories[i],i):null;if((i||c||o)&&T(r,c??s))return{epicId:c??null,storyId:i??null,stepId:o??null};const a=d(t?.currentStoryId),u=d(t?.currentEpicId??t?.lockEpicId);if((a||u)&&T(r,u))return{epicId:u??null,storyId:a??null,stepId:null};const l=Object.entries(r.stories).map(([p,f])=>({id:p,story:f,timestamp:Z(f)})).filter(({id:p,story:f})=>!F(f.status)&&T(r,S(f,p))).sort((p,f)=>f.timestamp-p.timestamp||p.id.localeCompare(f.id))[0];return l?{epicId:S(l.story,l.id),storyId:l.id,stepId:d(l.story.last_step??l.story.lastStep)??null}:{epicId:null,storyId:null,stepId:null}}function Ie(r,e){const t=K(r.stories),i=K(r.epics),c=ge(r.epics),o=Object.values(r.epics).filter(y=>(v.includes(y.lifecycle_classification)?y.lifecycle_classification:"active")==="active"&&!F(y.status)).length,s=be(r),a=_e(r),u=je(r),l=Se(r,s,a),p=he(r),f=h(e.reasonCodes,["state-summary-attached","state-summary-bounded",`projection-${e.projectionMode??e.kind}`,e.stateProjectionPolicy?`policy-${e.stateProjectionPolicy}`:"policy-unknown",p.length>=x?"recent-stories-capped":"recent-stories-bounded",l.storyId||l.epicId?"active-ref-derived":"active-ref-empty",a?"yoloop-session-present":"yoloop-session-absent",u?"continuity-session-present":"continuity-session-absent"]);return{schemaVersion:1,totals:{stories:Object.keys(r.stories).length,epics:Object.keys(r.epics).length,storyStatus:t,epicStatus:i,epicLifecycle:c,activeEpics:o,blockedStories:t.blocked??0},active:l,blockedCount:t.blocked??0,recentStories:p,...s?{currentSession:s}:{},...a?{currentYoloopSession:a}:{},...u?{currentContinuitySession:u}:{},projection:{commandId:e.commandId??null,stateProjectionPolicy:e.stateProjectionPolicy??null,projectionMode:e.projectionMode,scopeKind:e.kind,includedStoryCount:e.includedStoryCount,includedEpicCount:e.includedEpicCount??Object.keys(r.epics).length,omittedStoryCount:e.omittedStoryCount,omittedEpicCount:e.omittedEpicCount,reason:e.reason},reasonCodes:f,publicSafe:!0}}function I(r,e,t){return{...r,stateSummary:Ie(e,t)}}function ke(r,e,t){const i={};for(const o of Object.keys(e.epics))i[o]={id:o};const c={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:"summary-only",trigger:r,targetEpicId:null,targetStoryId:null,includedStoryCount:0,includedEpicCount:Object.keys(i).length,omittedStoryCount:Object.keys(e.stories).length,omittedEpicCount:0,reason:"epic-summary",reasonCodes:["epic-summary","stories-omitted","epic-stubs-only"]};return I({...e,stories:{},epics:i,scope:c},e,c)}function _(r,e,t,i=["summary-only","stories-omitted"],c="summary-only"){const o=me(e),s={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:c,trigger:r,targetEpicId:null,targetStoryId:null,includedStoryCount:0,includedEpicCount:Object.keys(o).length,omittedStoryCount:Object.keys(e.stories).length,omittedEpicCount:Math.max(0,Object.keys(e.epics).length-Object.keys(o).length),reason:"summary-only",reasonCodes:h(i)};return I({...e,stories:{},epics:o,scope:s},e,s)}function P(r,e,t,i,c,o){const s=e.stories[i];if(!s)throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"story"});const a=S(s,i);if(!a)throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const u=e.epics[a];if(!u)throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const l=c==="yolo-story",p=l?G(a,u,e):le(i,e),f=l?$(a,p,e):L(p,e);if(!p[i]||!f[a])throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(p).length,epics:Object.keys(f).length,targetKind:"story"});const y={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:c,trigger:r,targetEpicId:a,targetStoryId:i,includedStoryCount:Object.keys(p).length,includedEpicCount:Object.keys(f).length,omittedStoryCount:Math.max(0,Object.keys(e.stories).length-Object.keys(p).length),omittedEpicCount:Math.max(0,Object.keys(e.epics).length-Object.keys(f).length),reason:"targeted-invocation",reasonCodes:h(o,l?["epic-graph-authority-complete"]:[])};return I({...e,stories:p,epics:f,scope:y},e,y)}function W(r,e,t,i,c,o){const s=e.epics[i];if(!s)throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const a=ye(s,e),u=L(a,e,[i]);if(!u[i])throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(a).length,epics:Object.keys(u).length,targetKind:"epic"});const l={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:c,trigger:r,targetEpicId:i,targetStoryId:null,includedStoryCount:Object.keys(a).length,includedEpicCount:Object.keys(u).length,omittedStoryCount:Math.max(0,Object.keys(e.stories).length-Object.keys(a).length),omittedEpicCount:Math.max(0,Object.keys(e.epics).length-Object.keys(u).length),reason:"targeted-invocation",reasonCodes:h(o)};return I({...e,stories:a,epics:u,scope:l},e,l)}function ve(r,e,t){const i=ue(r),c=E(r,e);if(i&&!c)throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const o=de(r,e),s=O({commandId:t.commandId,explicitYoloopEpicId:c,sessionYoloopEpicId:c?null:o});if(s==="yoloop-discovery")return fe(r,e,t);if(!o||s!=="yoloop-target"&&s!=="yoloop-session")throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const a=e.epics[o];if(!a)throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"});const u=G(o,a,e),l=$(o,u,e);if(!l[o])throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(u).length,epics:Object.keys(l).length,targetKind:"epic"});const p=s,f={kind:"projected",commandId:t.commandId,stateProjectionPolicy:t.stateProjectionPolicy,projectionMode:p,trigger:r,targetEpicId:o,targetStoryId:null,includedStoryCount:Object.keys(u).length,includedEpicCount:Object.keys(l).length,omittedStoryCount:Math.max(0,Object.keys(e.stories).length-Object.keys(u).length),omittedEpicCount:Math.max(0,Object.keys(e.epics).length-Object.keys(l).length),reason:"targeted-invocation",reasonCodes:["structural-required",p,"yoloop-targeted"]};return I({...e,stories:u,epics:l,scope:f},e,f)}function Ce(r,e){const t={};for(const[i,c]of Object.entries(r.epics)){const o=Array.isArray(c.stories)?c.stories.filter(s=>typeof s=="string"&&e.has(s)):[];t[i]={id:d(c.id)??i,...d(c.status,40)?{status:d(c.status,40)}:{},...typeof c.total_stories=="number"&&Number.isFinite(c.total_stories)?{total_stories:c.total_stories}:{},...typeof c.completed_stories=="number"&&Number.isFinite(c.completed_stories)?{completed_stories:c.completed_stories}:{},...o.length>0?{stories:o}:{},...o.length>0&&Array.isArray(c.depends_on)?{depends_on:c.depends_on.filter(s=>typeof s=="string"&&s.length>0)}:{},...o.length>0&&(c.branch_mode==="epic"||c.branch_mode==="story")?{branch_mode:c.branch_mode}:{},...o.length>0&&typeof c.execution_branch=="string"?{execution_branch:c.execution_branch}:{},...o.length>0&&typeof c.origin_branch=="string"?{origin_branch:c.origin_branch}:{},...o.length>0&&(c.branch_lease===null||typeof c.branch_lease=="object")?{branch_lease:c.branch_lease}:{},...o.length>0&&(c.origin_binding===null||typeof c.origin_binding=="object")?{origin_binding:c.origin_binding}:{},...o.length>0&&(c.aggregate_qa_receipt===null||typeof c.aggregate_qa_receipt=="object")?{aggregate_qa_receipt:c.aggregate_qa_receipt}:{}}}return t}function Ee(r){return r.stateSummary?.totals.stories??(r.scope?.includedStoryCount??Object.keys(r.stories).length)+(r.scope?.omittedStoryCount??0)}function Oe(r){return r.stateSummary?.totals.epics??(r.scope?.includedEpicCount??Object.keys(r.epics).length)+(r.scope?.omittedEpicCount??0)}function Re(r,e){if(r.stateSummary)return{...r.stateSummary,projection:{...r.stateSummary.projection,scopeKind:"projected",projectionMode:e.projectionMode,includedStoryCount:e.includedStoryCount,includedEpicCount:e.includedEpicCount??r.stateSummary.projection.includedEpicCount,omittedStoryCount:e.omittedStoryCount,omittedEpicCount:e.omittedEpicCount,reason:"body-size"},reasonCodes:h(r.stateSummary.reasonCodes,["payload-size-guardrail","state-summary-preserved","nonessential-state-degraded"])}}function De(r){const e=r.scope,t=new Set,i=e?.projectionMode==="structural-required"||e?.projectionMode==="yolo-story"||e?.projectionMode==="yoloop-target"||e?.projectionMode==="yoloop-session"||e?.projectionMode==="yoloop-discovery";if(i)for(const j of Object.keys(r.stories))t.add(j);else e?.targetStoryId&&A(e.targetStoryId,r,t);const c={};for(const j of t){const q=r.stories[j];q&&(c[j]=q)}const o=Ce(r,t),s=Object.keys(c).length,a=Object.keys(o).length,u=Math.max(0,Ee(r)-s),l=Math.max(0,Oe(r)-a),p=i?e?.projectionMode??"structural-required":e?.projectionMode==="yolo-story"?"yolo-story":"summary-only",f={kind:"projected",commandId:e?.commandId??null,stateProjectionPolicy:e?.stateProjectionPolicy??null,projectionMode:p,targetEpicId:e?.targetEpicId??null,targetStoryId:e?.targetStoryId??null,includedStoryCount:s,includedEpicCount:a,omittedStoryCount:u,omittedEpicCount:l,reason:"body-size",reasonCodes:h(e?.reasonCodes,["payload-size-guardrail",t.size>0?"structural-targets-preserved":"stories-omitted","epics-stubbed","state-summary-preserved","redundant-trigger-omitted"])},y=Re(r,f);return{...r,stories:c,epics:o,scope:f,...y?{stateSummary:y}:{}}}function we(r,e){const t=r.trim(),i=U(t);try{if(!i){if(ne(t)){const o=n("story-reference","story-targeted"),s=M(t);if(s)return P(t,e,o,s,"targeted-story",["story-reference-targeted"])}return _(t,e,n("unknown","adaptive-targeted"),["unknown-command-summary-only"])}if(i.stateProjectionPolicy==="epic-summary")return ke(t,e,i);if(i.stateProjectionPolicy==="yoloop-targeted")return ve(t,e,i);const c=M(t);if(i.stateProjectionPolicy==="story-targeted"){if(c){const s=O({commandId:i.commandId,targetStoryId:c})==="yolo-story";return P(t,e,i,c,s?"yolo-story":i.structuralRequired?"structural-required":"targeted-story",[s?"yolo-story":i.structuralRequired?"structural-required":"targeted-story"])}if(i.commandId==="yolo"||i.commandId==="yolo-inline"){const o=O({commandId:i.commandId});return _(t,e,i,["yolo-inline","stories-omitted","historical-content-omitted"],o??"yolo-inline")}return i.structuralRequired?(()=>{throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"story"})})():_(t,e,i,["story-target-missing-summary-only"])}if(i.stateProjectionPolicy==="adaptive-targeted"){if(c&&e.stories[c])return P(t,e,i,c,"targeted-story",["adaptive-story-targeted"]);const o=E(t,e);return o?W(t,e,i,o,"targeted-epic",["adaptive-epic-targeted"]):_(t,e,i,["adaptive-summary-only","target-unresolved-summary-only"])}if(i.stateProjectionPolicy==="epic-targeted"){const o=E(t,e);return o?W(t,e,i,o,i.structuralRequired?"structural-required":"targeted-epic",[i.structuralRequired?"structural-required":"targeted-epic"]):i.structuralRequired?(()=>{throw new m("STRUCTURAL_TARGET_NOT_FOUND",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,targetKind:"epic"})})():_(t,e,i,["epic-target-missing-summary-only"])}return i.stateProjectionPolicy==="continuity-scoped"?_(t,e,i,["continuity-scoped-summary-only"]):_(t,e,i,["policy-full-summary-only"])}catch(c){if(c instanceof m)throw c;if(i?.structuralRequired)throw new m("STRUCTURAL_DEPENDENCY_MISSING",{stories:Object.keys(e.stories).length,epics:Object.keys(e.epics).length,projectionErrors:1});return _(t,e,i??n("unknown","adaptive-targeted"),["projection-error-summary-only"])}}const Ae=new Set(["yolo-story","yolo-inline","yoloop-target","yoloop-session","yoloop-discovery"]);function Te(r){let e=0;for(const t of[r.stories,r.epics])for(const i of Object.values(t))Array.isArray(i.depends_on)&&(e+=i.depends_on.filter(c=>typeof c=="string").length);return e}function Ue(r,e){const t=U(r.trim());if(!t||!["yolo","yolo-inline","yoloop"].includes(t.commandId))return null;try{const i=we(r,e),c=i.scope?.projectionMode;if(!c||!Ae.has(c))throw new m("STRUCTURAL_DEPENDENCY_MISSING",{stories:Object.keys(i.stories).length,epics:Object.keys(i.epics).length,projectionShapeErrors:1});return Object.freeze({ok:!0,version:2,shape:c,snapshot:i,included:{epics:i.scope?.includedEpicCount??Object.keys(i.epics).length,stories:i.scope?.includedStoryCount??Object.keys(i.stories).length,edges:Te(i)},omitted:{epics:i.scope?.omittedEpicCount??0,stories:i.scope?.omittedStoryCount??0},cycleCount:0})}catch(i){if(!(i instanceof m))throw i;return Object.freeze({ok:!1,code:i.code,publicDetails:i.publicDetails})}}export{De as degradeStateSnapshotForPayloadLimit,we as projectStateSnapshotForInvoke,Ue as projectStateSnapshotResultV2ForInvoke};