@ornexus/neocortex 4.60.59 → 4.60.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/sbom.cdx.json +241 -82
  2. package/install.ps1 +1 -1
  3. package/install.sh +1 -1
  4. package/package.json +6 -2
  5. package/packages/client/dist/cli.js +37 -4
  6. package/packages/client/dist/commands/architecture-answers.d.ts +26 -0
  7. package/packages/client/dist/commands/architecture-answers.js +7 -0
  8. package/packages/client/dist/commands/architecture-memory-terminal.d.ts +21 -0
  9. package/packages/client/dist/commands/architecture-memory-terminal.js +2 -0
  10. package/packages/client/dist/commands/architecture-root-binding.d.ts +2 -0
  11. package/packages/client/dist/commands/architecture-root-binding.js +1 -0
  12. package/packages/client/dist/commands/invoke.d.ts +43 -2
  13. package/packages/client/dist/commands/invoke.js +98 -70
  14. package/packages/client/dist/commands/legacy-story-branch.d.ts +10 -0
  15. package/packages/client/dist/commands/legacy-story-branch.js +1 -0
  16. package/packages/client/dist/commands/legacy-story-pr.d.ts +18 -0
  17. package/packages/client/dist/commands/legacy-story-pr.js +1 -0
  18. package/packages/client/dist/commands/planning-diagnosis.d.ts +4 -0
  19. package/packages/client/dist/commands/planning-diagnosis.js +1 -0
  20. package/packages/client/dist/commands/planning-generation.d.ts +2 -0
  21. package/packages/client/dist/commands/planning-generation.js +1 -0
  22. package/packages/client/dist/commands/planning-research.d.ts +3 -0
  23. package/packages/client/dist/commands/planning-research.js +1 -0
  24. package/packages/client/dist/commands/refresh-memory.d.ts +10 -0
  25. package/packages/client/dist/commands/refresh-memory.js +3 -1
  26. package/packages/client/dist/commands/story-checkpoint.d.ts +1 -1
  27. package/packages/client/dist/commands/story-checkpoint.js +1 -1
  28. package/packages/client/dist/config/profile-directory.d.ts +2 -0
  29. package/packages/client/dist/config/profile-directory.js +1 -0
  30. package/packages/client/dist/config/secure-config.js +5 -5
  31. package/packages/client/dist/continuity/runner-bootstrap-policy.d.ts +1 -1
  32. package/packages/client/dist/continuity/runner-bootstrap-policy.js +1 -1
  33. package/packages/client/dist/generated/command-registry.generated.d.ts +11 -11
  34. package/packages/client/dist/generated/command-registry.generated.js +1 -1
  35. package/packages/client/dist/generated/public-projections.generated.d.ts +20 -20
  36. package/packages/client/dist/generated/public-projections.generated.js +1 -1
  37. package/packages/client/dist/git/direct-yolo-checkpoint.d.ts +9 -0
  38. package/packages/client/dist/git/direct-yolo-checkpoint.js +4 -4
  39. package/packages/client/dist/git/git-lifecycle-step-ids.d.ts +5 -0
  40. package/packages/client/dist/git/git-lifecycle-step-ids.js +1 -1
  41. package/packages/client/dist/git/git-lifecycle-store.d.ts +16 -0
  42. package/packages/client/dist/git/git-lifecycle-store.js +9 -4
  43. package/packages/client/dist/git/legacy-story-branch-checkpoint.d.ts +38 -0
  44. package/packages/client/dist/git/legacy-story-branch-checkpoint.js +9 -0
  45. package/packages/client/dist/git/legacy-story-branch-setup.d.ts +56 -0
  46. package/packages/client/dist/git/legacy-story-branch-setup.js +4 -0
  47. package/packages/client/dist/git/legacy-story-pr.d.ts +514 -0
  48. package/packages/client/dist/git/legacy-story-pr.js +62 -0
  49. package/packages/client/dist/git/secure-filesystem-boundary.d.ts +2 -0
  50. package/packages/client/dist/git/secure-filesystem-boundary.js +34 -7
  51. package/packages/client/dist/machine/fingerprint.js +2 -2
  52. package/packages/client/dist/memory/project-memory-writer.js +17 -17
  53. package/packages/client/dist/memory/shared-project-memory-types.d.ts +23 -13
  54. package/packages/client/dist/memory/shared-project-memory-types.js +2 -2
  55. package/packages/client/dist/migrations/state-json.d.ts +23 -1
  56. package/packages/client/dist/migrations/state-json.js +4 -4
  57. package/packages/client/dist/private-execution/delivery.d.ts +131 -3
  58. package/packages/client/dist/private-execution/delivery.js +2 -2
  59. package/packages/client/dist/private-execution/isolated-admission.d.ts +28 -1
  60. package/packages/client/dist/private-execution/isolated-admission.js +11 -2
  61. package/packages/client/dist/private-execution/isolated-session.js +2 -2
  62. package/packages/client/dist/private-execution/isolated-workspace.d.ts +8 -0
  63. package/packages/client/dist/private-execution/isolated-workspace.js +1 -1
  64. package/packages/client/dist/private-execution/pact-consumer-runtime.d.ts +19 -0
  65. package/packages/client/dist/private-execution/pact-consumer-runtime.js +3 -0
  66. package/packages/client/dist/private-execution/pact-test-source.d.ts +9 -0
  67. package/packages/client/dist/private-execution/pact-test-source.js +1 -0
  68. package/packages/client/dist/private-execution/pact-toolchain.d.ts +37 -0
  69. package/packages/client/dist/private-execution/pact-toolchain.js +3 -0
  70. package/packages/client/dist/private-execution/pact-write-set.d.ts +24 -0
  71. package/packages/client/dist/private-execution/pact-write-set.js +1 -0
  72. package/packages/client/dist/private-execution/planning-diagnosis-checkpoint.d.ts +38 -0
  73. package/packages/client/dist/private-execution/planning-diagnosis-checkpoint.js +5 -0
  74. package/packages/client/dist/private-execution/planning-generation-checkpoint.d.ts +34 -0
  75. package/packages/client/dist/private-execution/planning-generation-checkpoint.js +4 -0
  76. package/packages/client/dist/private-execution/planning-research-checkpoint.d.ts +38 -0
  77. package/packages/client/dist/private-execution/planning-research-checkpoint.js +4 -0
  78. package/packages/client/dist/private-execution/ux-source-validation.d.ts +2 -0
  79. package/packages/client/dist/private-execution/ux-source-validation.js +1 -0
  80. package/packages/client/dist/private-execution/ux-write-set.d.ts +30 -0
  81. package/packages/client/dist/private-execution/ux-write-set.js +2 -0
  82. package/packages/client/dist/resolvers/remote-resolver.d.ts +5 -22
  83. package/packages/client/dist/resolvers/remote-resolver.js +1 -1
  84. package/packages/client/dist/runner/project-identity.js +1 -1
  85. package/packages/client/dist/runner/scheduler.d.ts +20 -0
  86. package/packages/client/dist/runner/scheduler.js +7 -7
  87. package/packages/client/dist/state/project-state-snapshot.js +1 -1
  88. package/packages/client/dist/yolo/change-evidence-collector.d.ts +8 -0
  89. package/packages/client/dist/yolo/change-evidence-collector.js +1 -1
  90. package/packages/client/dist/yolo/spec-envelope-collector.d.ts +2 -0
  91. package/packages/client/dist/yolo/spec-envelope-collector.js +3 -3
  92. package/packages/client/dist/yoloop/invoke-hooks.js +7 -7
  93. package/packages/shared/dist/generated/command-registry.generated.js +12 -10
  94. package/packages/shared/dist/generated/invocation-schema.generated.js +14 -6
  95. package/packages/shared/dist/generated/public-projections.generated.js +18 -18
  96. package/packages/shared/dist/invocation/index.d.ts +1 -1
  97. package/packages/shared/dist/merge-readiness/c12-remote-observation.js +80 -0
  98. package/packages/shared/dist/planning/diagnosis-state.js +143 -0
  99. package/packages/shared/dist/yoloop/branch-unit.js +23 -1
  100. package/targets-stubs/antigravity/gemini.md +1 -1
  101. package/targets-stubs/antigravity/skill/SKILL.md +1 -1
  102. package/targets-stubs/claude-code/neocortex-root.agent.yaml +1 -1
  103. package/targets-stubs/claude-code/neocortex-root.md +2 -2
  104. package/targets-stubs/claude-code/neocortex.agent.yaml +1 -1
  105. package/targets-stubs/claude-code/neocortex.md +2 -2
  106. package/targets-stubs/codex/AGENTS.md +1 -1
  107. package/targets-stubs/cursor/agent.md +2 -2
  108. package/targets-stubs/gemini-cli/agent.md +2 -2
  109. package/targets-stubs/opencode/neocortex-root.md +1 -1
  110. package/targets-stubs/vscode/neocortex.agent.md +2 -2
@@ -1,73 +1,77 @@
1
- import{createHash as Ne,randomUUID as dt}from"node:crypto";import{execFileSync as Le}from"node:child_process";import{existsSync as Pe,readFileSync as Te,renameSync as qr,unlinkSync as Kr,writeFileSync as Lt,mkdirSync as ze,statSync as Xr}from"node:fs";import{join as ne}from"node:path";import{homedir as De}from"node:os";import{isPrivateExecutionPublicEnvelope as Zr}from"../private-execution/delivery.js";import{LicenseClient as Qr}from"../license/license-client.js";import{EncryptedCache as ut}from"../cache/encrypted-cache.js";import{NoOpCache as Pt}from"../types/index.js";import{resolveClientPreFlightTrigger as Dt,TierAwareClient as en}from"../tier/tier-aware-client.js";import{COMMAND_REGISTRY_CHECKSUM as Oe,COMMAND_REGISTRY_VERSION as xe,GENERATED_CLIENT_COMMANDS as tn}from"../generated/command-registry.generated.js";import{loadSecureConfig as jt}from"../config/secure-config.js";import{DEFAULT_SERVER_URL as rn}from"../constants.js";import{detectFirstRunLocale as nn,renderFirstRunMessage as on}from"../i18n/first-run.js";import{humanizeError as Mt,formatHumanizedError as Ut,detectErrorLocale as Vt}from"../errors/error-messages.js";import{degradeStateSnapshotForPayloadLimit as sn,projectStateSnapshotForInvoke as Bt,projectStateSnapshotResultV2ForInvoke as an}from"../state/project-state-snapshot.js";import{isInlineYoloMaterialization as cn,maybeRepairStateJsonBeforeInvoke as dn,StateRepairHardStopError as un}from"../state/state-json-repair.js";import{StructuralDagError as $t}from"../state/structural-dag-projection.js";import{RUNNER_BOOTSTRAP_POLICY_REASON_CODES as ln,classifyRunnerBootstrapPolicyFromArgs as pn}from"../continuity/runner-bootstrap-policy.js";import{RUNNER_SCHEDULER_BOOTSTRAP_REASON_CODES as fn,ensureRunnerSchedulerBootstrap as hn}from"../runner/scheduler.js";import{CONTINUITY_INVOKE_WATCH_DEFAULT_LIMIT as Wt,CONTINUITY_INVOKE_WATCH_DEFAULT_MAX_IDLE_POLLS as Ht,CONTINUITY_INVOKE_WATCH_DEFAULT_MAX_POLLS as Ft,CONTINUITY_INVOKE_WATCH_DEFAULT_POLL_INTERVAL_MS as Gt,openContinuityClientStateStore as gn}from"../continuity/continuity-client-state-store.js";import{isLocalJobsConsoleArgs as mn,runLocalJobsConsoleCommand as yn}from"../runner/local-console.js";import{detectNativeHostAttestation as In,detectPlatform as En}from"../adapters/platform-detector.js";import{signNxInvokeRequest as _n}from"../../../shared/dist/nx-invoke-signature.js";import{CLIENT_VERSION as je}from"../version.js";import{createCapabilityCache as Yt,executeInvokeQueryTransport as Jt,executeSecondaryNetworkMutation as Cn}from"../effects/invoke-effect-gateways.js";import{STRICT_READ_ONLY_POLICY as Sn,STRICT_READ_ONLY_CLIENT_PROJECTION as zt,STRICT_READ_ONLY_SERVER_PROJECTION as An,StrictReadOnlyError as Me,canonicalizeInvokeEffects as wn,createInvokeEffectContext as Rn,verifyStrictReadOnlyReceipt as vn}from"../../../shared/dist/strict-readonly.js";import{admitInvocation as bn,assertInvokeInputEnvelopeV2 as Tn,assertProjectIdentityMigrationReceiptV1 as On,buildProjectIdentityPublicDiagnostic as Ue,createInvocationAdmissionReceipt as xn,projectInvokeInputEvidenceV1 as qt,verifyStrictDiagnoseReceiptV1 as kn}from"../../../shared/dist/invocation/index.js";import{buildInvokeInputEnvelope as qe,InvokeInputDecodeError as Nn}from"../invocation/invoke-input.js";import{acknowledgeProjectIdentityMigration as Ln,finalizeProjectIdentityMigration as Pn,prepareProjectIdentityMigration as Dn,ProjectIdentityMigrationError as lt,readProjectIdentityMigrationPhase as jn}from"../migrations/project-identity.js";import{probeProjectIdentityMigrationCapability as Mn}from"../migrations/project-identity-capability.js";import{normalizeYoloopStoryPlanningEvidence as Un}from"../../../shared/dist/yoloop/planning-graph.js";import{normalizeContinuousWriteRef as Ke}from"../../../shared/dist/yoloop/wave-decision-receipt.js";import{applyGitLifecycleRuntimeOverlay as Kt,classifyGitLifecycleStoryCheckpointProjectionSync as Vn,ensureGitLifecycleRuntimeInitialized as Bn,executeP205TransientAuthorities as $n,persistGitLifecycleGraphAuthority as Wn,P205_COMPLETE_COMMAND as Hn,gitLifecycleStoryWriteSet as Xt,readGitLifecycleRuntimeSync as Xe,verifyLegacyCheckpointMigrationCandidateSync as Fn}from"../git/git-lifecycle-store.js";const Ze=ne(De(),".neocortex"),pt=ne(Ze,"cache"),Zt=ne(pt,"menu-cache.json"),Qt=1440*60*1e3,er=3e4,tr=256*1024,rr=tr,nr=.8,Ce="[REDACTED]",Gn=1e5,ke=2e3,Yn=200,Jn=200,zn=12,qn=/(?:promptBody|workflow|workflowGraph|stepBody|privateUrl|rawLog|secret|credential|licenseKey|apiKey|internalRouting|serverOnly|proprietary|protected)/i,Kn=/(?:PRIVATE|PROTECTED|SERVER_ONLY)[-_\s]*(?:PROMPT|PROMPT_BODY|WORKFLOW|WORKFLOW_GRAPH|STEP_BODY|STEP|ROUTING)\s*[:=][^\n\r]*/gi,Xn=/(?:https?:\/\/(?:localhost|127\.0\.0\.1|0\.0\.0\.0|\[::1\]|private|internal)[^\s"'<>]*|raw[_-]?log|transcript|stack\s*trace|stderr:|stdout:|system prompt|prompt body|workflow body|step body|PROTECTED_|PRIVATE_INTERNALS|CUSTOMER_PII|VENDOR_CORPUS|P180[_-]?SYNTHETIC[_-]?CONTINUITY|P185[_-]?SYNTHETIC[_-]?CONTINUITY|P187[_-]?SYNTHETIC[_-]?(?:CONTINUITY|RUNNER|WATCH)|authorization\s*:|password\s*=|token\s*=|api[_-]?key\s*=|license[_-]?key\s*=)/gi,ft=Math.floor(tr*nr),or=ne(Ze,".first-run-shown"),Zn="pending-epic-claims.json",ir=64;function sr(e){return ne(e,".neocortex",Zn)}function Qe(e){const t=sr(e);if(!Pe(t))return{schemaVersion:1,operations:{}};const r=JSON.parse(Te(t,"utf8"));if(!r||typeof r!="object"||Array.isArray(r))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const n=r;if(n.schemaVersion!==1||!n.operations||typeof n.operations!="object"||Array.isArray(n.operations))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(Object.keys(n.operations).length>ir)throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");for(const[o,i]of Object.entries(n.operations)){if(!/^[a-f0-9]{64}$/.test(o)||!i||typeof i!="object"||Array.isArray(i))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const a=i;if(typeof a.idempotencyKey!="string"||!/^[0-9a-f-]{36}$/.test(a.idempotencyKey)||typeof a.createdAt!="string")throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(a.claimId!==void 0&&(typeof a.claimId!="string"||!/^[0-9a-f-]{36}$/.test(a.claimId))||a.epicId!==void 0&&(typeof a.epicId!="string"||!/^P[1-9][0-9]*$/.test(a.epicId))||a.claimId===void 0!=(a.epicId===void 0))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE")}return r}function ht(e,t){const r=sr(e);ze(ne(e,".neocortex"),{recursive:!0,mode:448});const n=`${r}.${process.pid}.${dt()}.tmp`;Lt(n,`${JSON.stringify(t)}
2
- `,{encoding:"utf8",mode:384,flag:"wx"}),qr(n,r)}function Qn(e){return Ne("sha256").update(`nx-epic-logical-operation-v1\0${JSON.stringify({command:"create-epic",args:e})}`,"utf8").digest("hex")}function eo(e,t){const r=Qn(t),n=Qe(e),o=n.operations[r];if(o)return{key:o.idempotencyKey,fingerprint:r};if(Object.keys(n.operations).length>=ir)throw new Error("EPIC_CLAIM_CAPACITY_EXCEEDED");const i=dt(),a={...n.operations,[r]:{idempotencyKey:i,createdAt:new Date().toISOString()}};return ht(e,{schemaVersion:1,operations:a}),{key:i,fingerprint:r}}function to(e,t){const r=Qe(e);if(!r.operations[t])return;const n={...r.operations};delete n[t],ht(e,{schemaVersion:1,operations:n})}function ar(e,t,r,n){if(!/^[0-9a-f-]{36}$/.test(r)||!/^P[1-9][0-9]*$/.test(n))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const o=Qe(e),i=o.operations[t];if(!i)throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(i.claimId!==void 0&&(i.claimId!==r||i.epicId!==n))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");ht(e,{schemaVersion:1,operations:{...o.operations,[t]:{...i,claimId:r,epicId:n}}})}function ro(){try{if(Pe(or))return;const e=nn(),t=on(e);process.stderr.write(t);try{ze(Ze,{recursive:!0}),Lt(or,new Date().toISOString(),"utf-8")}catch{}}catch{}}function gt(e,t=process.cwd()){return e&&e.trim().length>0?e:t}function no(e){return bn(e,{registryVersion:xe,registryChecksum:Oe})}const oo=new Set(["completed","aborted","cancelled"]),io=new Set(["watch-target-missing","watch-target-malformed","watch-target-ambiguous","watch-target-multiple"]),Y=Object.freeze({COMPLETED:"invoke-watch-completed",CANCELLED:"invoke-watch-cancelled",IDLE_TIMEOUT:"invoke-watch-idle-timeout",MAX_POLLS:"invoke-watch-max-polls",STORE_UNAVAILABLE:"invoke-watch-store-unavailable",TARGET_UNRESOLVED:"invoke-watch-target-unresolved"}),X=Object.freeze({MISSING:"watch-target-missing",MALFORMED:"watch-target-malformed",AMBIGUOUS:"watch-target-ambiguous",CONFLICT:"watch-target-conflicting-evidence",SERVER_HELD_STREAM:"watch-target-server-held-stream-unsupported"}),x=Object.freeze({OK:"continuity-ok",WATCH_NO_SUMMARIES_YET:"watch-no-summaries-yet",WATCH_CURSOR_ADVANCED:"watch-cursor-advanced",WATCH_CURSOR_UNCHANGED:"watch-cursor-unchanged",WATCH_RENDER_PENDING:"watch-render-pending",WATCH_STOP_IDLE_LIMIT_REACHED:"watch-stop-idle-limit-reached",WATCH_STOP_MAX_POLLS_REACHED:"watch-stop-max-polls-reached",WATCH_TARGET_UNRESOLVED:"watch-target-unresolved",WATCH_SNAPSHOT_UNAVAILABLE:"watch-snapshot-unavailable",WATCH_EVIDENCE_UNAVAILABLE:"watch-evidence-unavailable"}),cr=240,so=/(https?:\/\/\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[_-]?log|transcript|stack\s*trace|stderr:|stdout:|system prompt|prompt body|workflow body|step body|PROTECTED_|PRIVATE_INTERNALS|CUSTOMER_PII|VENDOR_CORPUS|P180[_-]?SYNTHETIC[_-]?CONTINUITY|P185[_-]?SYNTHETIC[_-]?CONTINUITY|P187[_-]?SYNTHETIC[_-]?(?:CONTINUITY|RUNNER|WATCH))/i;function ao(e){return e.replace(/[\w.+-]+@[\w-]+\.[\w.-]+/g,Ce).replace(/(?:sk|pk|whsec|nxk)[-_](?:test|live|ant|proj|pro|free|enterprise)?[-_]?[A-Za-z0-9_-]{16,}/g,Ce).replace(/NX-[FPE]-[a-f0-9]{24}-[a-f0-9]{4}/g,Ce).replace(/eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g,Ce).replace(Kn,Ce).replace(Xn,Ce)}function de(e,t){const r=ao(e);return r.length<=t?r:`${r.slice(0,t)}\u2026[TRUNCATED:${r.length-t}]`}function mt(e,t=0,r=new WeakSet){if(t>zn)return"[MAX_DEPTH]";if(e==null)return e;if(typeof e=="string")return de(e,ke);if(typeof e=="number")return Number.isFinite(e)?e:null;if(typeof e=="boolean")return e;if(typeof e=="bigint")return String(e);if(!(typeof e=="function"||typeof e=="symbol")&&typeof e=="object"){if(r.has(e))return"[CIRCULAR]";r.add(e);try{if(Array.isArray(e))return e.slice(0,Yn).map(o=>mt(o,t+1,r));const n={};for(const[o,i]of Object.entries(e).slice(0,Jn)){if(qn.test(o)){n[o]=Ce;continue}const a=mt(i,t+1,r);a!==void 0&&(n[o]=a)}return n}finally{r.delete(e)}}}function yt(e,t){return{instructions:de(e??"",Gn),metadata:t?mt(t):void 0}}class et extends Error{reason;source;byteLength;code;constructor(t,r,n,o,i){super(r),this.reason=n,this.source=o,this.byteLength=i,this.name="InvokeCliInputError",this.code=t}}function co(e){return/^\s*\*?(?:arch-plan|ui-ux-review)(?:\s|$)/i.test(e)&&uo(e,"--project-evidence")}function uo(e,t){let r=null,n=-1,o=!1,i=!1;for(let a=0;a<=e.length;a+=1){const c=e[a];if(a===e.length||!r&&/\s/.test(c??"")){if(n>=0&&!o&&e.slice(n,a)===t)return!0;n=-1,o=!1,i=!1;continue}if(n<0&&(n=a),i){i=!1;continue}if(c==="\\"){i=!0;continue}(c==='"'||c==="'")&&(o=!0,r=r===c?null:r??c)}return!1}const lo=/(?:^|\s)codex(?:-cli)?\s+([A-Za-z0-9][A-Za-z0-9._+-]{0,63})(?:\s|$)/i;function po(e,t){if(e.targetId!=="codex")return null;const r=t.CODEX_VERSION?.trim();if(r&&/^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/.test(r))return r;try{return Le("codex",["--version"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim().match(lo)?.[1]??null}catch{return null}}class It extends Error{code="PAYLOAD_TOO_LARGE";telemetry;constructor(t){super(`PAYLOAD_TOO_LARGE: invoke request is ${t.payloadBytes} bytes after deterministic degradation; limit is ${t.limitBytes}. Reduce command input or local state context and retry.`),this.name="InvokePayloadTooLargeError",this.telemetry=t}}class Et extends Error{code="STRUCTURAL_CONTEXT_TOO_LARGE";telemetry;constructor(t){super(`STRUCTURAL_CONTEXT_TOO_LARGE: the bounded structural projection is ${t.payloadBytes} bytes; the request limit is strictly below ${t.limitBytes}. Select an explicit epic/story target or split the dependency graph.`),this.name="InvokeStructuralContextTooLargeError",this.telemetry=t}}let _t=!1;function fo(e){const t=[];if(!e||typeof e!="object")return t;const r=e,n=r.planning;if(n&&(n.current!==void 0||Array.isArray(n.history))&&t.push({code:"PLANNING_LEGACY",message:"legacy `planning.current`/`planning.history` detected (not read by v1 orchestrator)"}),Array.isArray(r.stories)&&t.push({code:"STORIES_AS_ARRAY",message:"`stories` is an Array (expected Object keyed by story ID)"}),r.epics&&typeof r.epics=="object"&&!Array.isArray(r.epics))for(const[i,a]of Object.entries(r.epics)){const c=a;if(c&&c.stories!==void 0&&!Array.isArray(c.stories)){t.push({code:"EPIC_STORIES_NOT_ARRAY",message:`epic "${i}" has non-array \`stories\` field (expected string[] of story IDs)`});break}}const o=r.epics&&typeof r.epics=="object"&&Object.keys(r.epics).length>0||r.stories&&typeof r.stories=="object"&&!Array.isArray(r.stories)&&Object.keys(r.stories).length>0||Array.isArray(r.stories)||n&&n.current!==void 0;return r.schema_version===void 0?o&&t.push({code:"SCHEMA_VERSION_MISSING",message:"`schema_version` field missing (expected: `schema_version: 1`)"}):r.schema_version!==1&&t.push({code:"SCHEMA_VERSION_OUTDATED",message:`schema_version=${String(r.schema_version)} (expected: 1)`}),t}function ho(e){if(!(_t||e.length===0)){_t=!0;try{const t=e.map(r=>` - ${r.message}`).join(`
1
+ import{createHash as Be,randomUUID as Lt}from"node:crypto";import{loadPactAnswerReceipt as xn,loadPactPrivateAnswers as Gr}from"./architecture-answers.js";import{acceptedArchitectureTerminalMemoryReceipt as Qt,deriveArchitectureTerminalMemoryReceipt as kn}from"./architecture-memory-terminal.js";import{deriveCommittedArchitectureEpicGraphRevision as vt,explicitArchitectureEpicTarget as Fr}from"./architecture-root-binding.js";import{derivePactWriteSet as qr}from"../private-execution/pact-write-set.js";import{execFileSync as Le}from"node:child_process";import{existsSync as lt,readFileSync as Re,renameSync as Pn,unlinkSync as Zt,writeFileSync as Dt,mkdirSync as Ct,statSync as Yr,openSync as _t,closeSync as wt,fsyncSync as jt,realpathSync as Jr,lstatSync as ht}from"node:fs";import{isDeepStrictEqual as I}from"node:util";import{join as K,isAbsolute as zr,resolve as On}from"node:path";import{homedir as At}from"node:os";import{isPrivateExecutionPublicEnvelope as Kr}from"../private-execution/delivery.js";import{acceptedPlanningDiagnosisPredecessor as Nn}from"../private-execution/planning-diagnosis-checkpoint.js";import{acceptedPlanningResearchPredecessor as Ln}from"../private-execution/planning-research-checkpoint.js";import{LicenseClient as Xr}from"../license/license-client.js";import{EncryptedCache as en}from"../cache/encrypted-cache.js";import{NoOpCache as Dn}from"../types/index.js";import{resolveClientPreFlightTrigger as tn,TierAwareClient as Qr}from"../tier/tier-aware-client.js";import{COMMAND_REGISTRY_CHECKSUM as it,COMMAND_REGISTRY_VERSION as ot,GENERATED_CLIENT_COMMANDS as Zr}from"../generated/command-registry.generated.js";import{loadSecureConfig as jn}from"../config/secure-config.js";import{neocortexProfileDirectory as ea}from"../config/profile-directory.js";import{DEFAULT_SERVER_URL as ta}from"../constants.js";import{detectFirstRunLocale as na,renderFirstRunMessage as ra}from"../i18n/first-run.js";import{humanizeError as Mn,formatHumanizedError as Vn,detectErrorLocale as Un}from"../errors/error-messages.js";import{degradeStateSnapshotForPayloadLimit as aa,projectStateSnapshotForInvoke as $n,projectStateSnapshotResultV2ForInvoke as ia}from"../state/project-state-snapshot.js";import{isInlineYoloMaterialization as oa,maybeRepairStateJsonBeforeInvoke as ca,StateRepairHardStopError as sa}from"../state/state-json-repair.js";import{StructuralDagError as Bn}from"../state/structural-dag-projection.js";import{collectStateMigrationAuthority as da,StateMigrationApplyError as ua}from"../migrations/state-json.js";import{RUNNER_BOOTSTRAP_POLICY_REASON_CODES as pa,classifyRunnerBootstrapPolicyFromArgs as la}from"../continuity/runner-bootstrap-policy.js";import{RUNNER_SCHEDULER_BOOTSTRAP_REASON_CODES as ha,ensureRunnerSchedulerBootstrap as ga,observeRunnerOperationalStatus as fa}from"../runner/scheduler.js";import{CONTINUITY_INVOKE_WATCH_DEFAULT_LIMIT as Hn,CONTINUITY_INVOKE_WATCH_DEFAULT_MAX_IDLE_POLLS as Wn,CONTINUITY_INVOKE_WATCH_DEFAULT_MAX_POLLS as Gn,CONTINUITY_INVOKE_WATCH_DEFAULT_POLL_INTERVAL_MS as Fn,openContinuityClientStateStore as ma}from"../continuity/continuity-client-state-store.js";import{isLocalJobsConsoleArgs as ya,runLocalJobsConsoleCommand as Ia}from"../runner/local-console.js";import{detectNativeHostAttestation as Ea,detectPlatform as Sa}from"../adapters/platform-detector.js";import{signNxInvokeRequest as va}from"../../../shared/dist/nx-invoke-signature.js";import{CLIENT_VERSION as gt}from"../version.js";import{createCapabilityCache as qn,executeInvokeQueryTransport as Yn,executeSecondaryNetworkMutation as Ca}from"../effects/invoke-effect-gateways.js";import{STRICT_READ_ONLY_POLICY as _a,STRICT_READ_ONLY_CLIENT_PROJECTION as Jn,STRICT_READ_ONLY_SERVER_PROJECTION as wa,StrictReadOnlyError as ft,canonicalizeInvokeEffects as Aa,createInvokeEffectContext as Ra,verifyStrictReadOnlyReceipt as ba}from"../../../shared/dist/strict-readonly.js";import{admitInvocation as Ta,assertInvokeInputEnvelopeV2 as xa,assertProjectIdentityMigrationReceiptV1 as ka,buildProjectIdentityPublicDiagnostic as mt,createInvocationAdmissionReceipt as Pa,projectInvokeInputEvidenceV1 as zn,verifyStrictDiagnoseReceiptV1 as Oa}from"../../../shared/dist/invocation/index.js";import{buildInvokeInputEnvelope as Mt,InvokeInputDecodeError as Na}from"../invocation/invoke-input.js";import{acknowledgeProjectIdentityMigration as La,finalizeProjectIdentityMigration as Da,prepareProjectIdentityMigration as ja,ProjectIdentityMigrationError as nn,readProjectIdentityMigrationPhase as Ma}from"../migrations/project-identity.js";import{probeProjectIdentityMigrationCapability as Va}from"../migrations/project-identity-capability.js";import{normalizeYoloopStoryPlanningEvidence as Ua}from"../../../shared/dist/yoloop/planning-graph.js";import{normalizeContinuousWriteRef as Vt}from"../../../shared/dist/yoloop/wave-decision-receipt.js";import{applyGitLifecycleRuntimeOverlay as Kn,classifyGitLifecycleStoryCheckpointProjectionSync as $a,ensureGitLifecycleRuntimeInitialized as Ba,executeP205TransientAuthorities as Ha,persistGitLifecycleGraphAuthority as Wa,P205_COMPLETE_COMMAND as Ga,gitLifecycleStoryWriteSet as Xn,readGitLifecycleRuntimeSync as Ut,verifyLegacyCheckpointMigrationCandidateSync as Fa}from"../git/git-lifecycle-store.js";const $t=ea(),rn=K($t,"cache"),Qn=K(rn,"menu-cache.json"),Zn=1440*60*1e3,er=3e4,tr=256*1024,nr=tr,rr=.8,Ke="[REDACTED]",qa=1e5,ct=2e3,Ya=200,Ja=200,za=12,Ka=/(?:promptBody|workflow|workflowGraph|stepBody|privateUrl|rawLog|secret|credential|licenseKey|apiKey|internalRouting|serverOnly|proprietary|protected)/i,Xa=/(?:PRIVATE|PROTECTED|SERVER_ONLY)[-_\s]*(?:PROMPT|PROMPT_BODY|WORKFLOW|WORKFLOW_GRAPH|STEP_BODY|STEP|ROUTING)\s*[:=][^\n\r]*/gi,Qa=/(?:https?:\/\/(?:localhost|127\.0\.0\.1|0\.0\.0\.0|\[::1\]|private|internal)[^\s"'<>]*|raw[_-]?log|transcript|stack\s*trace|stderr:|stdout:|system prompt|prompt body|workflow body|step body|PROTECTED_|PRIVATE_INTERNALS|CUSTOMER_PII|VENDOR_CORPUS|P180[_-]?SYNTHETIC[_-]?CONTINUITY|P185[_-]?SYNTHETIC[_-]?CONTINUITY|P187[_-]?SYNTHETIC[_-]?(?:CONTINUITY|RUNNER|WATCH)|authorization\s*:|password\s*=|token\s*=|api[_-]?key\s*=|license[_-]?key\s*=)/gi,an=Math.floor(tr*rr),ar=K($t,".first-run-shown"),Za="pending-epic-claims.json",ir=64;function or(e){return K(e,".neocortex",Za)}function Bt(e){const t=or(e);if(!lt(t))return{schemaVersion:1,operations:{}};const a=JSON.parse(Re(t,"utf8"));if(!a||typeof a!="object"||Array.isArray(a))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const r=a;if(r.schemaVersion!==1||!r.operations||typeof r.operations!="object"||Array.isArray(r.operations))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(Object.keys(r.operations).length>ir)throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");for(const[i,n]of Object.entries(r.operations)){if(!/^[a-f0-9]{64}$/.test(i)||!n||typeof n!="object"||Array.isArray(n))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const o=n;if(typeof o.idempotencyKey!="string"||!/^[0-9a-f-]{36}$/.test(o.idempotencyKey)||typeof o.createdAt!="string")throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(o.claimId!==void 0&&(typeof o.claimId!="string"||!/^[0-9a-f-]{36}$/.test(o.claimId))||o.epicId!==void 0&&(typeof o.epicId!="string"||!/^P[1-9][0-9]*$/.test(o.epicId))||o.claimId===void 0!=(o.epicId===void 0))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE")}return a}function on(e,t){const a=or(e);Ct(K(e,".neocortex"),{recursive:!0,mode:448});const r=`${a}.${process.pid}.${Lt()}.tmp`;Dt(r,`${JSON.stringify(t)}
2
+ `,{encoding:"utf8",mode:384,flag:"wx"}),Pn(r,a)}function ei(e,t){return Be("sha256").update(`nx-epic-logical-operation-v1\0${JSON.stringify({command:t,args:e})}`,"utf8").digest("hex")}function ti(e,t,a="create-epic"){const r=ei(t,a),i=Bt(e),n=i.operations[r];if(n)return{key:n.idempotencyKey,fingerprint:r};if(Object.keys(i.operations).length>=ir)throw new Error("EPIC_CLAIM_CAPACITY_EXCEEDED");const o=Lt(),s={...i.operations,[r]:{idempotencyKey:o,createdAt:new Date().toISOString()}};return on(e,{schemaVersion:1,operations:s}),{key:o,fingerprint:r}}function ni(e,t){const a=Bt(e);if(!a.operations[t])return;const r={...a.operations};delete r[t],on(e,{schemaVersion:1,operations:r})}function cr(e,t,a,r){if(!/^[0-9a-f-]{36}$/.test(a)||!/^P[1-9][0-9]*$/.test(r))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const i=Bt(e),n=i.operations[t];if(!n)throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(n.claimId!==void 0&&(n.claimId!==a||n.epicId!==r))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");on(e,{schemaVersion:1,operations:{...i.operations,[t]:{...n,claimId:a,epicId:r}}})}function ri(){try{if(lt(ar))return;const e=na(),t=ra(e);process.stderr.write(t);try{Ct($t,{recursive:!0}),Dt(ar,new Date().toISOString(),"utf-8")}catch{}}catch{}}function cn(e,t=process.cwd()){return e&&e.trim().length>0?e:t}function ai(e){return Ta(e,{registryVersion:ot,registryChecksum:it})}const ii=new Set(["completed","aborted","cancelled"]),oi=new Set(["watch-target-missing","watch-target-malformed","watch-target-ambiguous","watch-target-multiple"]),fe=Object.freeze({COMPLETED:"invoke-watch-completed",CANCELLED:"invoke-watch-cancelled",IDLE_TIMEOUT:"invoke-watch-idle-timeout",MAX_POLLS:"invoke-watch-max-polls",STORE_UNAVAILABLE:"invoke-watch-store-unavailable",TARGET_UNRESOLVED:"invoke-watch-target-unresolved"}),Se=Object.freeze({MISSING:"watch-target-missing",MALFORMED:"watch-target-malformed",AMBIGUOUS:"watch-target-ambiguous",CONFLICT:"watch-target-conflicting-evidence",SERVER_HELD_STREAM:"watch-target-server-held-stream-unsupported"}),H=Object.freeze({OK:"continuity-ok",WATCH_NO_SUMMARIES_YET:"watch-no-summaries-yet",WATCH_CURSOR_ADVANCED:"watch-cursor-advanced",WATCH_CURSOR_UNCHANGED:"watch-cursor-unchanged",WATCH_RENDER_PENDING:"watch-render-pending",WATCH_STOP_IDLE_LIMIT_REACHED:"watch-stop-idle-limit-reached",WATCH_STOP_MAX_POLLS_REACHED:"watch-stop-max-polls-reached",WATCH_TARGET_UNRESOLVED:"watch-target-unresolved",WATCH_SNAPSHOT_UNAVAILABLE:"watch-snapshot-unavailable",WATCH_EVIDENCE_UNAVAILABLE:"watch-evidence-unavailable"}),sr=240,ci=/(https?:\/\/\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[_-]?log|transcript|stack\s*trace|stderr:|stdout:|system prompt|prompt body|workflow body|step body|PROTECTED_|PRIVATE_INTERNALS|CUSTOMER_PII|VENDOR_CORPUS|P180[_-]?SYNTHETIC[_-]?CONTINUITY|P185[_-]?SYNTHETIC[_-]?CONTINUITY|P187[_-]?SYNTHETIC[_-]?(?:CONTINUITY|RUNNER|WATCH))/i;function si(e){return e.replace(/[\w.+-]+@[\w-]+\.[\w.-]+/g,Ke).replace(/(?:sk|pk|whsec|nxk)[-_](?:test|live|ant|proj|pro|free|enterprise)?[-_]?[A-Za-z0-9_-]{16,}/g,Ke).replace(/NX-[FPE]-[a-f0-9]{24}-[a-f0-9]{4}/g,Ke).replace(/eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g,Ke).replace(Xa,Ke).replace(Qa,Ke)}function Ve(e,t){const a=si(e);return a.length<=t?a:`${a.slice(0,t)}\u2026[TRUNCATED:${a.length-t}]`}function sn(e,t=0,a=new WeakSet){if(t>za)return"[MAX_DEPTH]";if(e==null)return e;if(typeof e=="string")return Ve(e,ct);if(typeof e=="number")return Number.isFinite(e)?e:null;if(typeof e=="boolean")return e;if(typeof e=="bigint")return String(e);if(!(typeof e=="function"||typeof e=="symbol")&&typeof e=="object"){if(a.has(e))return"[CIRCULAR]";a.add(e);try{if(Array.isArray(e))return e.slice(0,Ya).map(i=>sn(i,t+1,a));const r={};for(const[i,n]of Object.entries(e).slice(0,Ja)){if(Ka.test(i)){r[i]=Ke;continue}const o=sn(n,t+1,a);o!==void 0&&(r[i]=o)}return r}finally{a.delete(e)}}}function dn(e,t){return{instructions:Ve(e??"",qa),metadata:t?sn(t):void 0}}class Ht extends Error{reason;source;byteLength;code;constructor(t,a,r,i,n){super(a),this.reason=r,this.source=i,this.byteLength=n,this.name="InvokeCliInputError",this.code=t}}function di(e){return/^\s*\*?(?:arch-plan|ui-ux-review)(?:\s|$)/i.test(e)&&ui(e,"--project-evidence")}function ui(e,t){let a=null,r=-1,i=!1,n=!1;for(let o=0;o<=e.length;o+=1){const s=e[o];if(o===e.length||!a&&/\s/.test(s??"")){if(r>=0&&!i&&e.slice(r,o)===t)return!0;r=-1,i=!1,n=!1;continue}if(r<0&&(r=o),n){n=!1;continue}if(s==="\\"){n=!0;continue}(s==='"'||s==="'")&&(i=!0,a=a===s?null:a??s)}return!1}const pi=/(?:^|\s)codex(?:-cli)?\s+([A-Za-z0-9][A-Za-z0-9._+-]{0,63})(?:\s|$)/i;function li(e,t){if(e.targetId!=="codex")return null;const a=t.CODEX_VERSION?.trim();if(a&&/^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/.test(a))return a;try{return Le("codex",["--version"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim().match(pi)?.[1]??null}catch{return null}}class un extends Error{code="PAYLOAD_TOO_LARGE";telemetry;constructor(t){super(`PAYLOAD_TOO_LARGE: invoke request is ${t.payloadBytes} bytes after deterministic degradation; limit is ${t.limitBytes}. Reduce command input or local state context and retry.`),this.name="InvokePayloadTooLargeError",this.telemetry=t}}class pn extends Error{code="STRUCTURAL_CONTEXT_TOO_LARGE";telemetry;constructor(t){super(`STRUCTURAL_CONTEXT_TOO_LARGE: the bounded structural projection is ${t.payloadBytes} bytes; the request limit is strictly below ${t.limitBytes}. Select an explicit epic/story target or split the dependency graph.`),this.name="InvokeStructuralContextTooLargeError",this.telemetry=t}}let ln=!1;function hi(e){const t=[];if(!e||typeof e!="object")return t;const a=e,r=a.planning;if(r&&(r.current!==void 0||Array.isArray(r.history))&&t.push({code:"PLANNING_LEGACY",message:"legacy `planning.current`/`planning.history` detected (not read by v1 orchestrator)"}),Array.isArray(a.stories)&&t.push({code:"STORIES_AS_ARRAY",message:"`stories` is an Array (expected Object keyed by story ID)"}),a.epics&&typeof a.epics=="object"&&!Array.isArray(a.epics))for(const[n,o]of Object.entries(a.epics)){const s=o;if(s&&s.stories!==void 0&&!Array.isArray(s.stories)){t.push({code:"EPIC_STORIES_NOT_ARRAY",message:`epic "${n}" has non-array \`stories\` field (expected string[] of story IDs)`});break}}const i=a.epics&&typeof a.epics=="object"&&Object.keys(a.epics).length>0||a.stories&&typeof a.stories=="object"&&!Array.isArray(a.stories)&&Object.keys(a.stories).length>0||Array.isArray(a.stories)||r&&r.current!==void 0;return a.schema_version===void 0?i&&t.push({code:"SCHEMA_VERSION_MISSING",message:"`schema_version` field missing (expected: `schema_version: 1`)"}):a.schema_version!==1&&t.push({code:"SCHEMA_VERSION_OUTDATED",message:`schema_version=${String(a.schema_version)} (expected: 1)`}),t}function gi(e){if(!(ln||e.length===0)){ln=!0;try{const t=e.map(a=>` - ${a.message}`).join(`
3
3
  `);process.stderr.write(`[Neocortex] state.json schema drift detected:
4
4
  ${t}
5
5
  Run \`neocortex *migrate-state --preview\` to inspect or \`neocortex *migrate-state --apply\` to migrate.
6
6
  See docs/arquitetura-software/STATE-JSON-SCHEMA.md for the schema contract.
7
- `)}catch{}}}function ms(){_t=!1}function dr(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function go(e){return e==="active"||e==="archived"||e==="rolled-back"||e==="synthetic"||e==="orphan"?e:void 0}function ur(e){return e==="create-epic"||e==="discovered"?e:void 0}function oe(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function mo(e){const t={};let r=!1;for(const n of["contracts","contract_refs","shared_surfaces","adr_refs","nfr_refs","acceptance_depends_on"]){if(e[n]===void 0)continue;const o=e[n];if(!Array.isArray(o)||o.length>128||o.some(i=>Ke(i)===void 0)){r=!0;continue}t[n]=o.map(i=>Ke(i))}if(e.planning!==void 0)try{if(!y(e.planning))throw new Error("planning-shape");const n=e.planning;for(const a of["claims","semanticArtifacts"]){if(n[a]===void 0)continue;const c=n[a];if(!Array.isArray(c)||c.length>128||c.some(l=>!y(l)||Ke(l.ref)===void 0))throw new Error("planning-refs")}if(n.attempts!==void 0&&(!Array.isArray(n.attempts)||n.attempts.length>32))throw new Error("planning-attempts");for(const a of n.attempts??[]){if(!y(a)||!Array.isArray(a.reasonCodes)||a.reasonCodes.length>32||a.reasonCodes.some(c=>typeof c!="string"||!/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$/.test(c)))throw new Error("planning-attempt-reasons");if(a.discoveredClaims!==void 0&&(!Array.isArray(a.discoveredClaims)||a.discoveredClaims.length>128||a.discoveredClaims.some(c=>!y(c)||Ke(c.ref)===void 0)))throw new Error("planning-attempt-claims")}const{graphRevision:o,...i}=Un(n);t.planning=i}catch{r=!0}return r&&(t.planning={schemaVersion:1,dependencyBasis:"unknown",claims:[],semanticArtifacts:[]}),t}function y(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Se(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:void 0}function B(e){if(typeof e!="string")return;const t=e.trim();if(t)return t.replace(/[^a-z0-9_.:-]+/gi,"_").slice(0,120)}function M(e){if(typeof e!="string")return;const t=e.trim(),r=B(e);return r===t?r:void 0}function q(e){if(typeof e!="string")return;const t=e.trim();if(!(!t||t.length>240)&&/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(t)&&!(t.includes("..")||t.includes("//")||t.includes("@{")||t.endsWith("/")||t.endsWith("."))&&!t.split("/").some(r=>!r||r.startsWith(".")||r.endsWith(".lock")))return t}function S(e){return typeof e=="string"&&/^[0-9a-f]{7,64}$/i.test(e)?e:void 0}function ie(e){if(!(typeof e!="string"||e.length>64)&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/.test(e))return Number.isFinite(Date.parse(e))?e:void 0}function Ae(e){if(typeof e!="string")return;const t=e.trim();if(!(!t||t.length>240||t.includes("..")))return/^[A-Za-z0-9._:/#\-[\]]+$/.test(t)?t:void 0}function tt(e,t){if(!y(e))return;const r={};for(const n of t){const o=e[n];if(typeof o=="boolean")r[n]=o;else if(typeof o=="number"&&Number.isFinite(o))r[n]=o;else if(typeof o=="string"){const i=B(o);i&&(r[n]=i)}}return Object.keys(r).length>0?r:void 0}function rt(e){return e==="epic"||e==="story"?e:void 0}function lr(e){if(!y(e)||e.schemaVersion!==1)return;const t=M(e.ownerStoryId),r=M(e.sessionId),n=M(e.idempotencyKey),o=ie(e.acquiredAt),i=ie(e.expiresAt);if(!(!t||!r||!n||!o||!i||Date.parse(i)<=Date.parse(o)))return{schemaVersion:1,ownerStoryId:t,sessionId:r,idempotencyKey:n,acquiredAt:o,expiresAt:i}}function pr(e){if(!y(e)||e.schemaVersion!==1)return;const t=M(e.storyId),r=M(e.epicId),n=q(e.branch),o=S(e.baseSha),i=S(e.headSha),a=M(e.idempotencyKey),c=ie(e.recordedAt),l=oe(e.commits).map(S).filter(j=>!!j).slice(0,256),p=oe(e.receiptRefs).map(Ae).filter(j=>!!j).slice(0,256),m=e.dispatchId===void 0?void 0:M(e.dispatchId),w=e.bundleId===void 0?void 0:M(e.bundleId),f=e.bundleDigest===void 0?void 0:S(e.bundleDigest),d=e.graphRevision===void 0?void 0:S(e.graphRevision),I=e.claimRevision===void 0?void 0:M(e.claimRevision),A=yo(e.qaReceipt),C=Io(e.reviewReceipt);if(!(!t||!r||!t.startsWith(`${r}.`)||!n||!o||!i||o===i||!a||!c||l.length===0||p.length===0||!Array.isArray(e.commits)||l.length!==e.commits.length||e.commits.length>256||!Array.isArray(e.receiptRefs)||p.length!==e.receiptRefs.length||e.receiptRefs.length>256||e.dispatchId!==void 0&&!m||e.bundleId!==void 0&&!w||e.bundleDigest!==void 0&&(!f||f.length!==64)||e.graphRevision!==void 0&&(!d||d.length!==64)||e.claimRevision!==void 0&&!I||e.qaVerdict!=="passed"&&e.qaVerdict!=="blocked"||!["approved","changes-requested","pending"].includes(String(e.reviewVerdict))||!A||e.reviewVerdict!=="pending"&&!C||e.reviewVerdict==="pending"&&C||A.verdict!==e.qaVerdict||C&&C.verdict!==e.reviewVerdict||!gr(A,{storyId:t,epicId:r,baseSha:o,headSha:i,bundleDigest:f,graphRevision:d})||C&&(!gr(C,{storyId:t,epicId:r,baseSha:o,headSha:i,bundleDigest:f,graphRevision:d})||C.qaReceiptRef!==A?.receiptRef||C.receiptRef===A?.receiptRef)||!p.includes(String(A.receiptRef))||C&&(!p.includes(String(C.receiptRef))||Date.parse(String(C.reviewedAt))<Date.parse(String(A.checkedAt)))))return{schemaVersion:1,storyId:t,epicId:r,branch:n,baseSha:o,headSha:i,idempotencyKey:a,...m?{dispatchId:m}:{},...w?{bundleId:w}:{},...f?{bundleDigest:f}:{},...d?{graphRevision:d}:{},...I?{claimRevision:I}:{},qaVerdict:e.qaVerdict,reviewVerdict:e.reviewVerdict,...A?{qaReceipt:A}:{},...C?{reviewReceipt:C}:{},recordedAt:c,commits:l,receiptRefs:p}}function yo(e){if(!y(e)||e.schemaVersion!==1||e.kind!=="story_qa_evidence"||e.producer!=="local-yolo-tdd"||e.evidenceVersion!==void 0&&e.evidenceVersion!=="git-immutable-v1"&&e.evidenceVersion!=="p205-execution-v2"||!["passed","blocked"].includes(String(e.verdict)))return;const t=M(e.storyId),r=M(e.epicId),n=S(e.baseSha),o=S(e.headSha),i=S(e.bundleDigest),a=S(e.graphRevision),c=S(e.sourceEvidenceDigest),l=ie(e.checkedAt),p=Ae(e.receiptRef),m=e.evidenceVersion==="p205-execution-v2"&&e.contract==="P205-CI-02"?e.contract:void 0,w=e.evidenceVersion==="p205-execution-v2"&&e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,f=e.evidenceVersion==="p205-execution-v2"?S(e.manifestDigest):void 0,d=e.evidenceVersion==="p205-execution-v2"?S(e.resultDigest):void 0,I=e.evidenceVersion==="p205-execution-v2"?oe(e.gateIds).map(M).filter(A=>!!A).slice(0,64):void 0;if(!(!t||!r||!n||!o||!i||i.length!==64||!a||a.length!==64||!c||c.length!==64||!l||!p||e.evidenceVersion==="p205-execution-v2"&&(!m||w!=="node scripts/test-root.mjs --gate complete"||!f||f.length!==64||!d||d.length!==64||!Array.isArray(e.gateIds)||!I||I.length===0||I.length!==e.gateIds.length)))return{schemaVersion:1,kind:"story_qa_evidence",producer:"local-yolo-tdd",...e.evidenceVersion?{evidenceVersion:e.evidenceVersion}:{},storyId:t,epicId:r,...e.evidenceVersion==="p205-execution-v2"?{contract:m,command:w,manifestDigest:f,gateIds:I,resultDigest:d}:{},baseSha:n,headSha:o,bundleDigest:i,graphRevision:a,sourceEvidenceDigest:c,verdict:e.verdict,checkedAt:l,receiptRef:p}}function fr(e){if(!y(e)||e.schemaVersion!==1||e.kind!=="story_checkpoint_physical_verification"||e.producer!=="client-p205-transient-v1"||e.publicSafe!==!0||e.verdict!=="verified"&&e.verdict!=="rejected")return;const t=M(e.storyId),r=M(e.epicId),n=q(e.branch),o=S(e.baseSha),i=S(e.headSha),a=S(e.aggregateHeadSha),c=S(e.commitBodyDigest),l=S(e.changedPathsDigest),p=e.claimVerification==="canonical"||e.claimVerification==="legacy-migration"?e.claimVerification:void 0,m=S(e.effectiveClaimRevision),w=e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,f=S(e.manifestDigest),d=oe(e.gateIds).map(M).filter(h=>!!h).slice(0,64),I=S(e.resultDigest),A=S(e.graphRevision),C=S(e.executionEvidenceDigest),j=S(e.sourceEvidenceDigest),v=ie(e.verifiedAt),U=oe(e.reasonCodes).map(M).filter(h=>!!h).slice(0,16);if(!(!t||!r||!n||!o||o.length<40||!i||i.length<40||!a||a.length<40||!c||c.length!==64||!l||l.length!==64||!p||!m||m.length!==64||!w||!f||f.length!==64||!Array.isArray(e.gateIds)||d.length!==e.gateIds.length||!I||I.length!==64||!A||A.length!==64||!C||C.length!==64||!j||j.length!==64||!v||U.length===0||e.verdict==="verified"&&(d.length===0||!U.includes("checkpoint-p205-transient-verified"))))return{schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:t,epicId:r,branch:n,baseSha:o,headSha:i,aggregateHeadSha:a,commitBodyDigest:c,changedPathsDigest:l,claimVerification:p,effectiveClaimRevision:m,command:w,manifestDigest:f,gateIds:d,resultDigest:I,graphRevision:A,executionEvidenceDigest:C,sourceEvidenceDigest:j,verifiedAt:v,verdict:e.verdict,reasonCodes:U,publicSafe:!0}}function hr(e){const t=["schemaVersion","kind","producer","storyId","epicId","branch","baseSha","headSha","graphRevision","effectiveClaimRevision","sourceEvidenceDigest","verifiedAt","reasonCodes","integrationAuthorized","publicSafe"];if(!y(e)||Object.keys(e).some(f=>!t.includes(f))||e.schemaVersion!==1||e.kind!=="story_scheduling_checkpoint_evidence"||e.producer!=="client-git-physical-v1"||e.integrationAuthorized!==!1||e.publicSafe!==!0)return;const r=M(e.storyId),n=M(e.epicId),o=q(e.branch),i=S(e.baseSha),a=S(e.headSha),c=S(e.graphRevision),l=S(e.effectiveClaimRevision),p=S(e.sourceEvidenceDigest),m=ie(e.verifiedAt),w=oe(e.reasonCodes).map(M).filter(f=>!!f);if(!(!r||!n||!o||!i||i.length<40||!a||a.length<40||!c||c.length!==64||!l||l.length!==64||!p||p.length!==64||!m||!Array.isArray(e.reasonCodes)||w.length!==1||w[0]!=="checkpoint-git-scheduling-verified"))return{schemaVersion:1,kind:"story_scheduling_checkpoint_evidence",producer:"client-git-physical-v1",storyId:r,epicId:n,branch:o,baseSha:i,headSha:a,graphRevision:c,effectiveClaimRevision:l,sourceEvidenceDigest:p,verifiedAt:m,reasonCodes:w,integrationAuthorized:!1,publicSafe:!0}}function Io(e){if(!y(e)||e.schemaVersion!==1||e.kind!=="story_review_evidence"||e.producer!=="root-commit-range-review"||!["approved","changes-requested"].includes(String(e.verdict)))return;const t=M(e.storyId),r=M(e.epicId),n=S(e.baseSha),o=S(e.headSha),i=S(e.bundleDigest),a=S(e.graphRevision),c=S(e.sourceEvidenceDigest),l=Ae(e.qaReceiptRef),p=ie(e.reviewedAt),m=Ae(e.receiptRef);if(!(!t||!r||!n||!o||!i||i.length!==64||!a||a.length!==64||!c||c.length!==64||!l||!p||!m))return{schemaVersion:1,kind:"story_review_evidence",producer:"root-commit-range-review",storyId:t,epicId:r,baseSha:n,headSha:o,bundleDigest:i,graphRevision:a,sourceEvidenceDigest:c,qaReceiptRef:l,verdict:e.verdict,reviewedAt:p,receiptRef:m}}function gr(e,t){return["storyId","epicId","baseSha","headSha","bundleDigest","graphRevision"].every(r=>e[r]===t[r])}function mr(e){if(!y(e)||e.schemaVersion!==1||e.capturedFromCurrentCheckout!==!0)return;const t=q(e.originBranch),r=S(e.originHeadSha),n=q(e.executionBranch),o=ie(e.capturedAt);if(!(!t||!r||r.length<40||!n||!o||t===n))return{schemaVersion:1,originBranch:t,originHeadSha:r,executionBranch:n,capturedFromCurrentCheckout:!0,capturedAt:o}}function yr(e){if(!y(e)||e.schemaVersion!==1||e.verdict!=="passed")return;const t=S(e.executionHeadSha),r=S(e.graphRevision),n=ie(e.checkedAt),o=Ae(e.receiptRef),i=oe(e.gateIds).map(M).filter(m=>!!m).slice(0,128),a=e.evidenceVersion==="p205-execution-v2"&&e.producer==="local-yolo-tdd"&&e.contract==="P205-CI-02"&&e.command==="node scripts/test-root.mjs --gate complete",c=e.evidenceVersion===void 0&&e.producer===void 0&&e.contract===void 0&&e.command===void 0&&e.manifestDigest===void 0&&e.resultDigest===void 0,l=a?S(e.manifestDigest):void 0,p=a?S(e.resultDigest):void 0;if(!(!t||t.length<40||!r||r.length!==64||!n||!o||i.length===0||!Array.isArray(e.gateIds)||i.length!==e.gateIds.length||e.gateIds.length>128||!c&&!a||a&&(!l||l.length!==64||!p||p.length!==64)))return{schemaVersion:1,...a?{evidenceVersion:"p205-execution-v2",producer:"local-yolo-tdd",contract:"P205-CI-02",command:"node scripts/test-root.mjs --gate complete",manifestDigest:l,resultDigest:p}:{},verdict:"passed",executionHeadSha:t,graphRevision:r,checkedAt:n,receiptRef:o,gateIds:i}}function nt(e){if(!y(e)||e.schemaVersion!==1)return;const t=tt(e,["schemaVersion","kind","storyId","epicId","baseSha","headSha","originalBaseSha","originalHeadSha","gitPullRequest","preservesLaterCommits","historyRewrite","recordedAt"])??{},r=oe(e.receiptRefs).map(Ae).filter(o=>!!o).slice(0,256),n=oe(e.revertCommits).map(B).filter(o=>!!o).slice(0,256);return{...t,...r.length?{receiptRefs:r}:{},...n.length?{revertCommits:n}:{}}}function Ir(e){if(!y(e)||e.schemaVersion!==1||e.publicSafe!==!0)return;const t=M(e.epicId),r=q(e.executionBranch),n=q(e.originBranch),o=S(e.baseSha),i=S(e.executionHeadSha),a=e.mergeSha===void 0?void 0:S(e.mergeSha),c=e.pushedSha===void 0?void 0:S(e.pushedSha),l=M(e.idempotencyKey),p=ie(e.attemptStartedAt),m=e.completedAt===void 0?void 0:ie(e.completedAt),w=oe(e.localGateReceiptRefs).map(Ae).filter(A=>!!A).slice(0,256),f=oe(e.reasonCodes).map(M).filter(A=>!!A).slice(0,64),d=_o(e.candidateQa),I=Eo(e.providerGuard);if(!(!t||!r||!n||!o||!i||!l||!p||w.length===0||f.length===0||!["direct","single_pr"].includes(String(e.strategy))||!["prepared","merged","pushed","denied_external_gate","blocked_local_or_repo"].includes(String(e.physicalStatus))||typeof e.retryEligible!="boolean"||e.providerGuard!==void 0&&!I||I&&(e.strategy!=="single_pr"||e.physicalStatus!=="pushed"||I.prHeadSha!==a||I.originHeadSha!==o)))return{schemaVersion:1,epicId:t,executionBranch:r,originBranch:n,baseSha:o,executionHeadSha:i,...a?{mergeSha:a}:{},...c?{pushedSha:c}:{},strategy:e.strategy,...Se(e.prNumber)?{prNumber:Se(e.prNumber)}:{},physicalStatus:e.physicalStatus,localGateReceiptRefs:w,idempotencyKey:l,attemptStartedAt:p,...d?{candidateQa:d}:{},...I?{providerGuard:I}:{},...m?{completedAt:m}:{},retryEligible:e.retryEligible,reasonCodes:f,publicSafe:!0}}function Eo(e){if(!y(e)||e.schemaVersion!==1||e.provider!=="github"||e.publicSafe!==!0)return;const t=String(e.mode),r=String(e.source),n=t==="recovered_exact_tree"?r==="physical_recovery":t==="strict_up_to_date_expected_head"&&["branch_protection","ruleset","branch_protection_and_ruleset"].includes(r),o=S(e.prHeadSha),i=S(e.originHeadSha),a=ie(e.checkedAt);if(!(!n||!o||!i||!a))return{schemaVersion:1,provider:"github",mode:t,source:r,prHeadSha:o,originHeadSha:i,checkedAt:a,publicSafe:!0}}function _o(e){if(!y(e)||e.schemaVersion!==1||e.kind!=="epic_merge_candidate_qa"||e.contract!=="P205-CI-02"||e.command!==Hn)return;const r=Object.fromEntries(["originHeadSha","executionHeadSha","mergeSha","treeSha","graphRevision","manifestDigest","resultDigest"].map(a=>[a,S(e[a])])),n=ie(e.checkedAt),o=Ae(e.receiptRef),i=oe(e.gateIds).filter(a=>/^[a-z0-9-]+$/.test(a)).slice(0,128);if(!(Object.values(r).some(a=>!a)||!n||!o||i.length===0))return{schemaVersion:1,kind:e.kind,contract:e.contract,command:e.command,...r,checkedAt:n,receiptRef:o,gateIds:i}}function Co(e){if(!y(e))return;const t={...B(e.active_epic_id??e.activeEpicId)?{active_epic_id:B(e.active_epic_id??e.activeEpicId)}:{},...B(e.active_story_id??e.activeStoryId)?{active_story_id:B(e.active_story_id??e.activeStoryId)}:{},...B(e.active_step_id??e.activeStepId)?{active_step_id:B(e.active_step_id??e.activeStepId)}:{},...B(e.session_id??e.sessionId)?{session_id:B(e.session_id??e.sessionId)}:{},...B(e.started_at??e.startedAt)?{started_at:B(e.started_at??e.startedAt)}:{}};return Object.keys(t).length>0?t:void 0}function So(e){const t=tt(e.completionEvidence??e.completion_evidence,["prNumber","pr_number","prState","pr_state","pullRequestState","merged","mergedAt","issueNumber","issue_number","issueState","issue_state","closedAt"]),r=tt(e.issueCloseAudit??e.issue_close_audit,["schema_version","event","storyId","epicId","issueNumber","closedAt","publicSafe","rawLogStorage"]),n=tt(e.scopedCiEvidence??e.scoped_ci_evidence,["schema_version","storyId","epicId","prNumber","finalState","publicSafe","rawLogStorage"]);return{...typeof e.merged=="boolean"?{merged:e.merged}:{},...typeof e.safeToContinueYoloop=="boolean"?{safeToContinueYoloop:e.safeToContinueYoloop}:{},...typeof e.mergeBlockedRemotely=="boolean"?{mergeBlockedRemotely:e.mergeBlockedRemotely}:{},...B(e.physicalMergeStatus)?{physicalMergeStatus:B(e.physicalMergeStatus)}:{},...B(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)?{pr_state:B(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)}:{},...B(e.issue_state??e.issueState??e.workflow_issue_state)?{issue_state:B(e.issue_state??e.issueState??e.workflow_issue_state)}:{},...Se(e.issue_number??e.issueNumber)?{issue_number:Se(e.issue_number??e.issueNumber)}:{},...t?{completionEvidence:t}:{},...r?{issueCloseAudit:r}:{},...n?{scopedCiEvidence:n}:{}}}class we extends Error{reasonCode;constructor(t){super(t),this.name="StateSnapshotIntegrityError",this.reasonCode=t}}const Ao=new Set(["yolo","yoloop","finalize-epic","audit"]);function Er(e){return typeof e=="string"&&Ao.has(e)}function _r(e,t={}){const r=ne(e,".neocortex","state.json");if(!Pe(r))throw new we("git-lifecycle-state-missing");let n;try{n=JSON.parse(Te(r,"utf8"))}catch{throw new we("git-lifecycle-state-corrupt")}if(!y(n)||!y(n.epics)||!y(n.stories))throw new we("git-lifecycle-state-shape-invalid");const o=Object.values(n.epics).some(i=>y(i)&&(i.branch_mode==="epic"||q(i.execution_branch)!==void 0));if(o)try{Xe(e,{required:!0})}catch(i){const a=i instanceof Error&&/^git-lifecycle-/.test(i.message)?i.message:"git-lifecycle-runtime-invalid";if(t.allowMissingRuntime&&a==="git-lifecycle-runtime-missing")return{lifecycleDeclared:!0,runtimeMissing:!0};throw new we(a)}return{lifecycleDeclared:o,runtimeMissing:!1}}function Cr(e,t={}){const r=ne(e,".neocortex","state.json");if(!Pe(r)){if(t.epicAware&&!t.projectless)throw new we("git-lifecycle-state-missing");return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}let n;try{const f=Te(r,"utf-8"),d=JSON.parse(f),I=y(d.epics)?d.epics:{},A=Object.values(I).some(h=>y(h)&&(h.branch_mode==="epic"||q(h.execution_branch)!==void 0)),C=Xe(e,{required:!!(t.epicAware&&A&&!t.projectless)});n=Kt(d,C);const j=y(n.stories)?n.stories:{},v=y(n.epics)?n.epics:{},U=y(d.stories)?d.stories:{};for(const[h,R]of Object.entries(j)){const _=y(R)?R:void 0;if(!_?.checkpoint)continue;const V=typeof _.epic_id=="string"?_.epic_id:h.split(".")[0],N=y(v[V])?v[V]:void 0,P=q(N?.execution_branch);if(!P)continue;const $=Vn(e,_.checkpoint,h,V,P,t.p205Authorities?.[h],Xt(h,_,y(_.checkpoint)?_.checkpoint:void 0));if($.kind==="integration-authorized")_.checkpoint_verification=$.verification,delete _.scheduling_checkpoint_evidence;else if($.kind==="scheduling-only")_.scheduling_checkpoint_evidence=$.evidence,delete _.checkpoint,delete _.checkpoint_verification;else if($.kind==="rejected"){_.checkpoint_verification=$.verification,delete _.scheduling_checkpoint_evidence;const D=y(U[h])?U[h]:void 0;if(delete _.checkpoint,C.stories[h]?.checkpoint!==void 0)for(const O of["status","last_step","steps_completed"])D&&Object.prototype.hasOwnProperty.call(D,O)?_[O]=structuredClone(D[O]):delete _[O];["done","completed","merged"].includes(String(_.status).toLowerCase())&&(_.status="blocked")}}}catch(f){if(t.epicAware&&!t.projectless){const d=f instanceof Error&&/^git-lifecycle-/.test(f.message)?f.message:"git-lifecycle-state-corrupt";throw new we(d)}return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}try{const f=fo(n);f.length>0&&ho(f)}catch{}const o=n.config??n.project??{},i=n.stories??{},a={};for(const[f,d]of Object.entries(i))a[f]={id:d.id??f,title:d.title,epic_id:d.epic_id,status:d.status??"backlog",...ur(d.source)?{source:ur(d.source)}:{},steps_completed:d.steps_completed??[],last_step:d.last_step??null,branch_name:d.branch_name??null,pr_number:d.pr_number,...rt(d.branch_mode)?{branch_mode:rt(d.branch_mode)}:{},...pr(d.checkpoint)?{checkpoint:pr(d.checkpoint)}:{},...fr(d.checkpoint_verification)?{checkpoint_verification:fr(d.checkpoint_verification)}:{},...hr(d.scheduling_checkpoint_evidence)?{scheduling_checkpoint_evidence:hr(d.scheduling_checkpoint_evidence)}:{},...nt(d.review_request)?{review_request:nt(d.review_request)}:{},...nt(d.rollback_receipt)?{rollback_receipt:nt(d.rollback_receipt)}:{},...Se(d.workflow_issue)?{workflow_issue:Se(d.workflow_issue)}:{},...So(d),depends_on:dr(d.depends_on),files_to_modify:oe(d.files_to_modify),...mo(d),risk:typeof d.risk=="string"?d.risk:void 0,blast_radius:typeof d.blast_radius=="number"?d.blast_radius:void 0};const c=n.epics??{},l={};for(const[f,d]of Object.entries(c)){const I=go(d.lifecycle_classification);l[f]={id:d.id??f,title:d.title,status:d.status,stories:d.stories,total_stories:d.total_stories,completed_stories:d.completed_stories,depends_on:dr(d.depends_on),...rt(d.branch_mode)?{branch_mode:rt(d.branch_mode)}:{},...q(d.execution_branch)?{execution_branch:q(d.execution_branch)}:{},...q(d.origin_branch)?{origin_branch:q(d.origin_branch)}:{},...lr(d.branch_lease)?{branch_lease:lr(d.branch_lease)}:{},...mr(d.origin_binding)?{origin_binding:mr(d.origin_binding)}:{},...yr(d.aggregate_qa_receipt)?{aggregate_qa_receipt:yr(d.aggregate_qa_receipt)}:{},...Se(d.pr_number)?{pr_number:Se(d.pr_number)}:{},...B(d.physicalMergeStatus)?{physicalMergeStatus:B(d.physicalMergeStatus)}:{},...S(d.graph_revision)?{graph_revision:S(d.graph_revision)}:{},...Ir(d.terminal_git_receipt)?{terminal_git_receipt:Ir(d.terminal_git_receipt)}:{},...I?{lifecycle_classification:I}:{}}}const p=Co(n.current_session??n.currentSession),m=n.epic_id_ledger,w=Array.isArray(m?.reserved_ids)?[...new Set(m.reserved_ids.filter(f=>typeof f=="string"&&/^P\d+$/.test(f)))].slice(0,2048):[];return{schema_version:typeof n.schema_version=="number"?n.schema_version:void 0,config:{project_name:o.project_name??o.name??"unknown",default_branch:o.default_branch??"main",language:o.language??"pt-BR",yolo_mode:o.yolo_mode,user_name:o.user_name,worktree_base:o.worktree_base,max_parallel_stories:o.max_parallel_stories,project_id:typeof o.project_id=="string"?o.project_id:void 0},stories:a,epics:l,...w.length>0?{epic_id_ledger:{schema_version:1,reserved_ids:w}}:{},...p?{current_session:p}:{}}}async function wo(e,t,r){if(!Er(r))return{};if(cn(t,r))return{};try{const n=JSON.parse(Te(ne(e,".neocortex","state.json"),"utf8")),o=Xe(e,{required:!0}),i=Kt(n,o),a=y(i.stories)?i.stories:{},c=y(i.epics)?i.epics:{},l=Le("git",["rev-parse","HEAD"],{cwd:e,encoding:"utf8"}).trim(),p=Le("git",["symbolic-ref","--quiet","--short","HEAD"],{cwd:e,encoding:"utf8"}).trim(),m=Le("git",["rev-list","--first-parent","--reverse",l],{cwd:e,encoding:"utf8",maxBuffer:32*1024*1024}).trim().split(`
8
- `).filter(Boolean),w=new Map(m.map((h,R)=>[h,R])),f=t.match(/(?:^|\s)@?docs\/stories\/([A-Za-z][A-Za-z0-9._-]*)\.story\.md(?:\s|$)/)?.[1],d=r==="yoloop"?t.match(/(?:^|[\s/@])epic-(P[1-9][0-9]*)\.md(?:\s|$)/i)?.[1]?.toUpperCase():void 0,I=new Set,A=Object.entries(a).flatMap(([h,R])=>{if(f&&h!==f)return[];const _=y(R)?R:void 0,V=y(_?.checkpoint)?_.checkpoint:void 0;if(!V)return[];const N=typeof _?.epic_id=="string"?_.epic_id:h.split(".")[0];if(d&&N!==d)return[];const P=S(V?.headSha);if(!P||P.length<40||w.get(P)===void 0)return I.add(N),[];const $=y(c[N])?c[N]:void 0;if($?.branch_mode!=="epic"||q($.execution_branch)!==p||q(V.branch)!==p)return I.add(N),[];const D=S(V.graphRevision);if(!D||D.length!==64)return I.add(N),[];const O=S(V.claimRevision),J=[...Xt(h,_,V)].sort(),ve=Fn(e,V,h,N,p,J);if(!ve&&O){if(J.length===0)return I.add(N),[];const _e=Le("git",["diff-tree","--no-commit-id","--name-only","-r","-z",P],{cwd:e,encoding:"utf8"}).split("\0").filter(Boolean);if(_e.length===0||_e.some(be=>!J.some(W=>W===be||W.endsWith("/")&&be.startsWith(W))))return I.add(N),[];const ge=Ne("sha256").update(J.join("\0")).digest("hex"),Ge=Ne("sha256").update(JSON.stringify(J)).digest("hex");if(O!==ge&&O!==Ge)return I.add(N),[]}else if(!ve)return I.add(N),[];return D?.length===64?[{storyId:h,epicId:N,graphRevision:D,checkpointHead:P,position:w.get(P)}]:[]}),C=new Set(I);for(const[h,R]of Object.entries(c)){const _=y(R)?R:void 0,V=Array.isArray(_?.stories)?_.stories.filter(D=>typeof D=="string"):Object.keys(a).filter(D=>D.startsWith(`${h}.`)),N=A.filter(D=>D.epicId===h),P=V.filter(D=>N.some(O=>O.storyId===D)),$=[...N].sort((D,O)=>D.position-O.position).map(D=>D.storyId);(JSON.stringify(P)!==JSON.stringify($)||new Set($).size!==$.length)&&C.add(h)}const j={},v=[...new Set(A.filter(h=>!C.has(h.epicId)).map(h=>h.graphRevision))],U=v.length>0?await $n(e,{headSha:l,graphRevisions:v}):new Map;for(const h of A){if(C.has(h.epicId))continue;const R=U.get(h.graphRevision);if(!R)throw new Error("p205-transient-authority-missing");j[h.storyId]=R}return j}catch(n){const o=n instanceof Error&&/^(?:p205|git-lifecycle)-[a-z0-9-]+$/.test(n.message)?n.message:"p205-transient-execution-failed";return process.stderr.write(`[Neocortex] ${o}. Checkpoint projection remains fail-closed.
9
- `),{}}}function ys(e,t){return{kind:"full",trigger:e,targetEpicId:null,targetStoryId:null,includedStoryCount:Object.keys(t.stories).length,includedEpicCount:Object.keys(t.epics).length,omittedStoryCount:0,omittedEpicCount:0,reason:"full-state",projectionMode:"full-compatible"}}const Sr="neocortex:menu:cache";async function Ro(e){try{const t=await e.get(Sr);if(!t)return null;const r=JSON.parse(t);return r.version!==je||Date.now()-r.cachedAt>Qt?null:r}catch{return null}}async function vo(e,t,r){try{const n={instructions:t,metadata:r,cachedAt:Date.now(),version:je};await e.set(Sr,JSON.stringify(n),Qt),bo()}catch{}}function bo(){try{Pe(Zt)&&Kr(Zt)}catch{}}function To(e){return e.execute({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},()=>jt(),()=>jt({strictReadOnly:!0}))}async function Ar(e,t,r){const n=r.mode==="strict";try{let o;if(n&&t)o=new ut({cacheDir:pt,passphrase:t,strictReadOnly:!0});else if(n)o=new Pt;else if(t){const m=ne(Ze,"cache");o=new ut({cacheDir:m,passphrase:t})}else process.stderr.write(`[neocortex] Warning: No license key in config. Run "neocortex activate" to re-authenticate.
10
- `),o=new Pt;const i=Yt(r,o,"auth-cache"),a=Yt(r,o,"tier-cache"),c=new Qr({serverUrl:e,licenseKey:t??"",cacheProvider:i,strictReadOnly:n});let l;if(n){const m=await c.inspectToken();if(m.status!=="authenticated")return m;l=m.token}else l=await c.getToken();if(!l)return{status:"not-configured"};const p=new en({cacheProvider:a,licenseClient:c});return{status:"authenticated",token:l,client:c,tierClient:p}}catch{return n&&t?{status:"refresh-required",reason:"unavailable"}:{status:"not-configured"}}}let wr=!1;function Oo(e){const t=e.errorBody?.error_code;if(typeof t=="string"&&t.trim().length>0)return t;if(e.status===429)return"RATE_LIMITED";if(e.status>=500)return"SERVER_ERROR"}const Rr=3,ot=50;function xo(e){return new Promise(t=>setTimeout(t,e))}function ko(e,t,r){return e.status>=500&&e.status<=599?!0:r&&e.status===409&&t.error_code==="SIGNATURE_REPLAYED"}async function We(e,t,r,n,o={}){const i=Math.max(1,Math.min(o.maxAttempts??Rr,Rr)),a=o.sleep??xo;let c=n,l=!1,p=!1,m=0;for(let w=1;w<=i;w+=1){const f=Math.max(Math.floor(Date.now()/1e3),m+1);m=f;const d=No(t,r,c,{nowSeconds:f}),I=new AbortController,A=setTimeout(()=>I.abort(),er);try{const C=await fetch(`${e}${t}`,{method:"POST",headers:d.headers,body:d.body,signal:I.signal}),j=await C.text().catch(()=>""),v=(()=>{try{return j?JSON.parse(j):{}}catch{return{}}})();if(C.status===401&&!l&&o.refreshToken&&(v.fallback_action==="refresh_token"||v.fallback_action==="re_authenticate")){l=!0;const U=await o.refreshToken();if(U&&w<i){c=U,o.onTokenChanged?.(U),await a(ot*w);continue}}if(C.status===401&&v.error_code==="SIGNATURE_EXPIRED"&&!p&&w<i){p=!0,await a(ot*w);continue}if(w<i&&ko(C,v,o.allowReplayRetry===!0)){await a(ot*w);continue}return{response:C,text:j,parsed:v,networkFailure:!1}}catch{if(w<i){await a(ot*w);continue}return{text:"",parsed:{},networkFailure:!0}}finally{clearTimeout(A)}}return{text:"",parsed:{},networkFailure:!0}}function No(e,t,r,n={}){const o=Buffer.from(JSON.stringify(t),"utf8"),i=_n({method:"POST",target:e,body:o,bearerToken:r,clientVersion:je,nowSeconds:n.nowSeconds,nonceBytes:n.nonceBytes});return{body:i.body,headers:{...i.headers,Authorization:`Bearer ${r}`}}}function vr(e){return Ne("sha256").update(e).digest("hex")}function Lo(){const e=Number(process.env.NEOCORTEX_INVOKE_CHUNK_BYTES??"49152");return Number.isFinite(e)&&e>=1024&&e<=98304?Math.floor(e):49152}function Po(e,t,r){return`args-${Ne("sha256").update("invoke-materialization:v1").update(e).update(String(t)).update(JSON.stringify(r)).digest("hex")}`}async function br(e,t,r,n,o={}){const i=await We(e,t,r,n,{...o,allowReplayRetry:!0});if(i.networkFailure||!i.response)throw new Error("NETWORK_ERROR: materialization request failed after bounded retries");const{response:a,parsed:c}=i;if(!a.ok){const l=typeof c.error_code=="string"?c.error_code:`HTTP_${a.status}`,p=typeof c.message=="string"?c.message:"materialization upload failed";throw new Error(`${l}: ${p}`)}return c}async function Do(e,t,r,n){const o=Buffer.from(t,"utf8"),i=Lo(),a=[];for(let I=0,A=0;I<o.byteLength;I+=i,A++){const C=o.subarray(I,Math.min(I+i,o.byteLength));a.push({index:A,sha256:vr(C),byteLength:C.byteLength})}const c=vr(o),l=Po(c,o.byteLength,a),p=Number(process.env.NEOCORTEX_INVOKE_CHUNK_TTL_SECONDS??"900");let m=r;const w={refreshToken:n,onTokenChanged(I){m=I}};for(const I of a){const A=I.index*i,C=o.subarray(A,A+I.byteLength);await br(e,"/api/v1/invoke/materialization/chunks",{manifestId:l,index:I.index,sha256:I.sha256,byteLength:I.byteLength,contentBase64:C.toString("base64"),ttlSeconds:p,idempotencyKey:`${l}:${I.index}:${I.sha256}`},m,w)}const d=(await br(e,"/api/v1/invoke/materialization/manifests",{manifestId:l,sha256:c,byteLength:o.byteLength,chunkCount:a.length,chunks:a,ttlSeconds:p,retry:{attempt:1,budget:3,idempotencyKey:l}},m,w)).argsRef;if(!d?.manifestId)throw new Error("MATERIALIZATION_RESPONSE_INVALID: missing argsRef");return{argsRef:d,chunks:a}}function Ve(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function jo(...e){const t=new Set,r=[];for(const n of e)for(const o of n??[]){const i=B(o);if(!(!i||t.has(i))&&(t.add(i),r.push(i),r.length>=16))return r}return r}function Mo(e){const t=e.graphRetrieval;if(!y(t))return{accepted:!1,itemCount:0};const r=Array.isArray(t.items)?t.items.length:0;return{accepted:r>0||typeof t.retrievalId=="string"||t.accepted===!0,itemCount:r}}function Ct(e,t=Ve(e),r=[],n={}){const o=e.stateSnapshot.scope,i=Object.keys(e.stateSnapshot.stories).length,a=Object.keys(e.stateSnapshot.epics).length,c=o?.kind??"full";return{schemaVersion:1,payloadBytes:t,limitBytes:n.limitBytes??rr,warningThresholdBytes:n.warningThresholdBytes??ft,scope:{kind:c,...o?.projectionMode?{projectionMode:o.projectionMode}:{},commandId:o?.commandId??null,stateProjectionPolicy:o?.stateProjectionPolicy??null},includedStories:o?.includedStoryCount??i,omittedStories:o?.omittedStoryCount??0,includedEpics:o?.includedEpicCount??a,omittedEpics:o?.omittedEpicCount??0,graphRetrieval:Mo(e.stateSnapshot),reasonCodes:jo(r,o?.reasonCodes),publicSafe:!0}}function Uo(e){const t=y(e.budget)?e.budget:void 0,r=typeof t?.maxPayloadBytes=="number"&&Number.isFinite(t.maxPayloadBytes)?t.maxPayloadBytes:12*1024;return Math.max(1024,Math.min(r,12*1024))}function Vo(e){return y(e)?{stableId:B(e.stableId)??"unknown",...y(e.source)?{source:e.source}:{},reasonCode:"budget_exceeded"}:{stableId:"unknown",reasonCode:"budget_exceeded"}}function Tr(e){const t=Array.isArray(e)?e.filter(r=>typeof r=="string"):[];return t.includes("budget_exceeded")?t:[...t,"budget_exceeded"]}function Bo(e){const t=e.graphRetrieval;if(!y(t)||!Array.isArray(t.items))return e;const r=Uo(t);let n=[...t.items],o=Array.isArray(t.skipped)?[...t.skipped]:[],i=t;for(;Buffer.byteLength(JSON.stringify(i),"utf8")>r&&n.length>0;){const a=n.pop();o=[...o,Vo(a)].slice(-32),i={...t,items:n,skipped:o,warnings:Tr(t.warnings)}}return Buffer.byteLength(JSON.stringify(i),"utf8")>r&&(i={...t,query:typeof t.query=="string"?t.query.slice(0,240):t.query,items:[],skipped:[],warnings:Tr(t.warnings)}),i===t?e:{...e,graphRetrieval:i}}function Or(e,t={}){const r=t.limitBytes??rr,n=t.warningThresholdBytes??Math.floor(r*nr),o=Ve(e);if(o<r)return{body:e,degraded:!1,telemetry:Ct(e,o,["payload-within-limit"],{limitBytes:r,warningThresholdBytes:n})};let i={...e,stateSnapshot:sn(e.stateSnapshot)},a=["payload-size-guardrail","state-degraded"],c=Ve(i);c>=r&&(i={...i,stateSnapshot:Bo(i.stateSnapshot)},a=[...a,"graph-retrieval-budget-enforced"],c=Ve(i));const l=Ct(i,c,a,{limitBytes:r,warningThresholdBytes:n});if(c>=r){const p=i.stateSnapshot.scope?.projectionMode;throw p==="yolo-story"||p==="yoloop-target"||p==="yoloop-session"||p==="yoloop-discovery"||p==="structural-required"?new Et(l):new It(l)}return{body:i,degraded:!0,telemetry:l}}function xr(e){const t=e.stateSnapshot.scope?.commandId??"resolved-command";return e.args!==void 0?t:`${t}:argsRef`}function $o(e){const t=Ve(e);if(t<ft)return t;const r=Ct(e,t,["payload-warning-threshold"]);return process.stderr.write(`[Neocortex] invoke payload near server limit: trigger=${xr(e)} scope=${r.scope.kind} mode=${r.scope.projectionMode??r.scope.kind} payloadBytes=${r.payloadBytes} limit=${r.limitBytes} includedStories=${r.includedStories} omittedStories=${r.omittedStories} includedEpics=${r.includedEpics} omittedEpics=${r.omittedEpics} graphRetrieval.accepted=${r.graphRetrieval.accepted} graphRetrieval.itemCount=${r.graphRetrieval.itemCount} reasonCodes=${r.reasonCodes.join(",")||"none"}
11
- `),t}function kr(e,t){process.stderr.write(`[Neocortex] invoke payload guardrail: trigger=${xr(e)} scope.kind=${t.scope.kind} payloadBytes=${t.payloadBytes} limit=${t.limitBytes} includedStories=${t.includedStories} omittedStories=${t.omittedStories} includedEpics=${t.includedEpics} omittedEpics=${t.omittedEpics} graphRetrieval.accepted=${t.graphRetrieval.accepted} graphRetrieval.itemCount=${t.graphRetrieval.itemCount} reasonCodes=${t.reasonCodes.join(",")||"none"}
12
- `)}async function Wo(e){const t=pn(e.args,{platformTarget:e.platformTarget,environment:e.environment??process.env});if(t.action==="skipped")return{shouldContinue:!0,attachToRequest:Ho(t),metadata:Nr(t)};const r=e.bootstrapper??hn;let n;try{n=await r({projectRoot:e.projectRoot,env:e.environment??process.env,effectAuthority:e.effectAuthority})}catch{n={ok:!1,attempted:!0,installed:!1,started:!1,cached:!1,projectKey:"unknown",reasonCodes:[fn.UNEXPECTED_ERROR],publicSummary:"runner scheduler bootstrap stopped unexpectedly.",publicSafe:!0}}const o=Nr(t,n);if(n.ok)return{shouldContinue:!0,attachToRequest:!0,metadata:o};const i=o.reasonCodes.slice(0,5).join(",");return t.failurePolicy==="fail-open"?{shouldContinue:!0,attachToRequest:!0,metadata:{...o,failOpenWarning:!0},warning:`Runner auto-bootstrap warning (${i}); continuing fail-open for operator command.`}:{shouldContinue:!1,attachToRequest:!1,metadata:o,errorCode:"RUNNER_BOOTSTRAP_REQUIRED_FAILED",error:`Runner auto-bootstrap required but failed (${i}). Run neocortex-runner doctor or retry after resolving scheduler setup.`,exitCode:1}}function Ho(e){return!e.reasonCodes.includes(ln.SKIPPED_NON_CONTINUITY_COMMAND)}function Nr(e,t){return{schemaVersion:1,action:e.action,failurePolicy:e.failurePolicy,command:e.command,operation:e.operation,attempted:t?.attempted??!1,ok:t?.ok??!0,cached:t?.cached??!1,installed:t?.installed??!1,started:t?.started??!1,...t?.projectKey?{projectKey:t.projectKey}:{},reasonCodes:re([...e.reasonCodes,...t?.reasonCodes??[]]),publicSummary:t?.publicSummary??e.publicSummary,publicSafe:!0}}function re(e){return Array.from(new Set(e.map(t=>t.slice(0,120))))}function it(e,t,r){const n=Math.floor(e??t);return Number.isFinite(n)?Math.max(1,Math.min(r,n)):t}function st(e,t){const r=process.env[e];if(!r)return t;const n=Number(r);return Number.isFinite(n)?n:t}function k(e,t=cr){const r=typeof e=="string"&&e.trim().length>0?e.trim():"unknown",n=de(r,t),o=so.test(n)?Ce:n;return o.length<=t?o:`${o.slice(0,t)}\u2026[TRUNCATED:${o.length-t}]`}function St(e,t=cr){if(!(typeof e!="string"||e.trim().length===0))return k(e,t)}function At(e,t,r,n){const o=St(e?.targetId??t,120),i=e?.selectorKind??(o?Rt(o):void 0),a=(e?.relatedJobIds??[]).map(c=>St(c,120)).filter(c=>!!c);return{schemaVersion:1,contractVersion:"continuity-v1",targetResolutionState:r,...i?{targetKind:i}:{},...o?{targetId:o}:{},...t?{targetJobId:k(t,120)}:{},...e?.jobId?{jobId:k(e.jobId,120)}:{},...e?.goalId?{goalId:k(e.goalId,120)}:{},...e?.loopId?{loopId:k(e.loopId,120)}:{},...a.length>0?{relatedJobIds:a}:{},relatedJobCount:a.length,reasonCodes:re(n.length>0?n:[x.OK]),publicSafe:!0}}function Ie(e,t,r,n,o=[]){const i=(e?.redactions?.length??0)>0,a=e?i?"unsafe":r&&n===0?"empty":"available":"unavailable",c=St(t[t.length-1]?.eventId,120),l=o.length>0?o:a==="unavailable"?[x.WATCH_SNAPSHOT_UNAVAILABLE]:a==="empty"?[x.WATCH_NO_SUMMARIES_YET]:[x.OK];return{schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:a,...e?.generatedAt?{generatedAt:k(e.generatedAt,80)}:{},renderedSummaryCount:n,...c?{latestEventId:c}:{},reasonCodes:re(l),publicSafe:!0}}function pe(e,t,r,n,o=[],i){const a=n[n.length-1],c=r??a?.cursor,l=!!(c&&c!==t&&n.length>0),p=i??(l?"advanced":t||c?"unchanged":"not_started"),m=o.length>0?o:p==="advanced"?[x.WATCH_CURSOR_ADVANCED]:p==="unavailable"?[x.WATCH_EVIDENCE_UNAVAILABLE]:[x.WATCH_CURSOR_UNCHANGED];return{schemaVersion:1,contractVersion:"continuity-v1",cursorState:p,...e?{initialCursor:k(e,200)}:{},...t?{currentCursor:k(t,200)}:{},...c?{nextCursor:k(c,200)}:{},cursorAdvanced:l,...a?.eventId?{eventId:k(a.eventId,120)}:{},reasonCodes:re(m),publicSafe:!0}}function fe(e){const t=e.targetEvidence;return{type:"watch_status",schemaVersion:1,contractVersion:"continuity-v1",recordType:"watch_status",command:"invoke",operation:"watch",watchStatus:e.watchStatus,active:e.active,...t?.targetResolutionState?{targetResolutionState:t.targetResolutionState}:{},...t?.targetKind?{targetKind:t.targetKind}:{},...t?.targetId?{targetId:t.targetId}:{},...t?{targetEvidence:t}:{},...e.snapshotEvidence?{snapshotEvidence:e.snapshotEvidence}:{},...e.cursorEvidence?{cursorEvidence:e.cursorEvidence}:{},...e.stopReason?{stopReason:e.stopReason}:{},reasonCodes:re([...e.reasonCodes??[],...t?.reasonCodes??[],...e.snapshotEvidence?.reasonCodes??[],...e.cursorEvidence?.reasonCodes??[]]),generatedAt:k(e.generatedAt??new Date().toISOString(),80),publicSafe:!0}}function Fo(e){const t=e.targetKind&&e.targetId?`${e.targetKind}/${e.targetId}`:e.targetId??"[unresolved]",r=e.snapshotEvidence?.renderedSummaryCount??0,n=e.targetEvidence?.relatedJobCount??0,o=e.cursorEvidence?.cursorState??"unavailable",i=e.cursorEvidence?.currentCursor??"[none]",a=e.cursorEvidence?.nextCursor??"[none]",c=e.snapshotEvidence?.snapshotStatus??"not_requested",l=e.snapshotEvidence?.generatedAt??e.generatedAt;return[`[watch-status] ${e.targetResolutionState==="unresolved"||e.stopReason==="target_unresolved"?"unresolved-target":r===0&&(e.watchStatus==="waiting"||e.watchStatus==="active")?"no-new-summary":e.watchStatus==="stopped"?"stopped":"lifecycle"}`,`status=${e.watchStatus}`,`active=${e.active}`,`target=${t}`,`resolution=${e.targetResolutionState??"unavailable"}`,`relatedJobs=${n}`,`summaries=${r}`,`snapshot=${c}`,`generatedAt=${l}`,`cursor=${o}`,`current=${k(i,200)}`,`next=${k(a,200)}`,`advanced=${e.cursorEvidence?.cursorAdvanced??!1}`,`stop=${e.stopReason??"not_stopped"}`,`reasons=${e.reasonCodes.join(",")}`].join(" ")}function he(e,t,r,n=!1){if(n){const o={type:"watch_status",watchStatus:e.watchStatus,active:e.active,renderedSummaryCount:e.snapshotEvidence?.renderedSummaryCount??0,stopReason:e.stopReason??"not_stopped",protectedProjection:!0,publicSafe:!0};r.write(t==="json"?`${JSON.stringify(o)}
13
- `:`[watch-status] status=${o.watchStatus} active=${o.active} summaries=${o.renderedSummaryCount} stop=${o.stopReason}
14
- `);return}if(t==="json"){r.write(JSON.stringify(e)+`
15
- `);return}r.write(Fo(e)+`
16
- `)}function Go(e,t,r){return{continuityInvokeWatch:{schemaVersion:1,contractVersion:"continuity-v1",command:"invoke",operation:"watch",watchStatus:e.watchStatus,stopReason:e.stopReason??"not_stopped",targetResolutionState:e.targetResolutionState,targetKind:e.targetKind,targetId:e.targetId,snapshotStatus:e.snapshotEvidence?.snapshotStatus,snapshotGeneratedAt:e.snapshotEvidence?.generatedAt,renderedSummaryCount:e.snapshotEvidence?.renderedSummaryCount??t,cursorState:e.cursorEvidence?.cursorState,cursorAdvanced:e.cursorEvidence?.cursorAdvanced,summariesEmitted:t,polls:r,statusRecord:e,publicSafe:!0}}}function Ee(e,t,r,n,o=!1){return o?{status:e,summariesEmitted:t,polls:r,reasonCodes:[],watchStatus:n.watchStatus,stopReason:n.stopReason,metadata:{continuityInvokeWatch:{schemaVersion:1,contractVersion:"continuity-v1",command:"invoke",operation:"watch",watchStatus:n.watchStatus,stopReason:n.stopReason??"not_stopped",summariesEmitted:t,polls:r,protectedProjection:!0,publicSafe:!0}},publicSafe:!0}:{status:e,summariesEmitted:t,polls:r,reasonCodes:n.reasonCodes,watchStatus:n.watchStatus,stopReason:n.stopReason,targetEvidence:n.targetEvidence,snapshotEvidence:n.snapshotEvidence,cursorEvidence:n.cursorEvidence,statusRecord:n,metadata:Go(n,t,r),publicSafe:!0}}function Yo(e){const t=e.reasonCode?` reason=${k(e.reasonCode,80)}`:"",r=e.goalId?` goal=${k(e.goalId,100)}`:"",n=e.loopId?` loop=${k(e.loopId,100)}`:"";return`[watch] ${k(e.createdAt,80)} event=${k(e.eventId,120)} job=${k(e.jobId,100)}${r}${n} execution=${k(e.executionId,120)}${t} -- ${k(e.publicSummary)}`}function Jo(e){return{type:"processing_summary",source:"local_continuity_sqlite",eventId:k(e.eventId,120),jobId:k(e.jobId,100),...e.goalId?{goalId:k(e.goalId,100)}:{},...e.loopId?{loopId:k(e.loopId,100)}:{},executionId:k(e.executionId,120),...e.reasonCode?{reasonCode:k(e.reasonCode,80)}:{},createdAt:k(e.createdAt,80),publicSummary:k(e.publicSummary),publicSafe:!0}}function zo(e,t,r,n=!1){if(n){r.write(t==="json"?`${JSON.stringify({type:"processing_summary",source:"local_continuity_sqlite",publicSummary:"A local processing update is available.",protectedProjection:!0,publicSafe:!0})}
7
+ `)}catch{}}}function Oc(){ln=!1}function dr(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function fi(e){return e==="active"||e==="archived"||e==="rolled-back"||e==="synthetic"||e==="orphan"?e:void 0}const mi=new Set(["goal","problem","desiredOutcome","rawIntent","context","users","surfaces","constraints","assumptions","risks","nonGoals","validationExpectations","debtRefs","repositoryEvidencePaths","journeyIds","screenIds","storybookStoryIds","backendContractIds","featureBlockerIds","remediationRefs","uiScope","remediationStory","examples","contracts"]),yi=/(?:[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|(?:token|api[_-]?key|secret|password|credential|license[_-]?key)\s*[:=]\s*\S+|https?:\/\/(?:localhost|127\.0\.0\.1|10\.\d+\.\d+\.\d+|192\.168\.\d+\.\d+|172\.(?:1[6-9]|2\d|3[0-1])\.\d+\.\d+|[^\s/]*internal[^\s/]*)\S*|private\s+prompt|raw\s+vendor\s+corpus|sk-[A-Za-z0-9_-]{12,})/i;function Ii(e,t){if(!(!h(e)||e.schemaVersion!==1||e.epicId!==t||!/^P\d+$/.test(t)))try{const a=JSON.stringify(e);if(Buffer.byteLength(a)>16384||yi.test(a))return;const r=(n,o)=>{if(Object.keys(n).some(s=>!o.includes(s)))throw new Error("planning-unknown-field")};if(r(e,["schemaVersion","epicId","intake","intakeRevision","diagnosisReceipt","researchReceipt","degradeAuthorization"]),!h(e.intake)||Object.keys(e.intake).some(n=>!mi.has(n)))return;for(const[n,o]of Object.entries(e.intake))if(["examples","contracts"].includes(n)){const s=n==="examples"?["id","title","actor","given","when","then","source","coveredRequirement","expectedValidation"]:["id","kind","description","path"];if(!Array.isArray(o)||o.length>16)return;for(const p of o)if(!h(p)||(r(p,s),Object.values(p).some(g=>typeof g!="string"||g.length>256)))return}else if(Array.isArray(o)){if(o.length>32||o.some(s=>typeof s!="string"||s.length>256))return}else if(typeof o=="string"){if(o.length>512)return}else if(typeof o!="boolean"||!["uiScope","remediationStory"].includes(n))return;const i=["schemaVersion","kind","epicId","intakeRevision","artifactSummary","artifactDigest","predecessorReceiptId","accepted","receiptId"];for(const n of[e.diagnosisReceipt,e.researchReceipt])if(n!==void 0&&(!h(n)||(r(n,i),Object.values(n).some(o=>typeof o=="string"&&o.length>1024))))return;if(e.degradeAuthorization!==void 0){if(!h(e.degradeAuthorization))return;r(e.degradeAuthorization,["approved","intakeRevision","reasonCodes","assumptionCodes"]);for(const n of["reasonCodes","assumptionCodes"]){const o=e.degradeAuthorization[n];if(!Array.isArray(o)||o.length>32||o.some(s=>typeof s!="string"||s.length>128))return}}return JSON.parse(a)}catch{return}}function ur(e){return e==="create-epic"||e==="discovered"?e:void 0}function be(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Ei(e){const t={};let a=!1;for(const r of["contracts","contract_refs","shared_surfaces","adr_refs","nfr_refs","acceptance_depends_on"]){if(e[r]===void 0)continue;const i=e[r];if(!Array.isArray(i)||i.length>128||i.some(n=>Vt(n)===void 0)){a=!0;continue}t[r]=i.map(n=>Vt(n))}if(e.planning!==void 0)try{if(!h(e.planning))throw new Error("planning-shape");const r=e.planning;for(const o of["claims","semanticArtifacts"]){if(r[o]===void 0)continue;const s=r[o];if(!Array.isArray(s)||s.length>128||s.some(p=>!h(p)||Vt(p.ref)===void 0))throw new Error("planning-refs")}if(r.attempts!==void 0&&(!Array.isArray(r.attempts)||r.attempts.length>32))throw new Error("planning-attempts");for(const o of r.attempts??[]){if(!h(o)||!Array.isArray(o.reasonCodes)||o.reasonCodes.length>32||o.reasonCodes.some(s=>typeof s!="string"||!/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$/.test(s)))throw new Error("planning-attempt-reasons");if(o.discoveredClaims!==void 0&&(!Array.isArray(o.discoveredClaims)||o.discoveredClaims.length>128||o.discoveredClaims.some(s=>!h(s)||Vt(s.ref)===void 0)))throw new Error("planning-attempt-claims")}const{graphRevision:i,...n}=Ua(r);t.planning=n}catch{a=!0}return a&&(t.planning={schemaVersion:1,dependencyBasis:"unknown",claims:[],semanticArtifacts:[]}),t}function h(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Xe(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:void 0}function re(e){if(typeof e!="string")return;const t=e.trim();if(t)return t.replace(/[^a-z0-9_.:-]+/gi,"_").slice(0,120)}function X(e){if(typeof e!="string")return;const t=e.trim(),a=re(e);return a===t?a:void 0}function ye(e){if(typeof e!="string")return;const t=e.trim();if(!(!t||t.length>240)&&/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(t)&&!(t.includes("..")||t.includes("//")||t.includes("@{")||t.endsWith("/")||t.endsWith("."))&&!t.split("/").some(a=>!a||a.startsWith(".")||a.endsWith(".lock")))return t}function R(e){return typeof e=="string"&&/^[0-9a-f]{7,64}$/i.test(e)?e:void 0}function Te(e){if(!(typeof e!="string"||e.length>64)&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/.test(e))return Number.isFinite(Date.parse(e))?e:void 0}function Qe(e){if(typeof e!="string")return;const t=e.trim();if(!(!t||t.length>240||t.includes("..")))return/^[A-Za-z0-9._:/#\-[\]]+$/.test(t)?t:void 0}function Wt(e){if(!h(e))return;const t=l=>typeof l=="string"&&/^[A-Za-z0-9][A-Za-z0-9._:-]{0,95}$/.test(l),a=l=>typeof l=="string"&&/^[a-f0-9]{64}$/.test(l),r=(l,m)=>Array.isArray(l)&&l.length<=m&&l.every(t)&&new Set(l).size===l.length?l:void 0,i=(l,m)=>{if(!(!h(l)||l.schemaVersion!==2||!t(l.requestId)||!t(l.stageCommand)||!a(l.requestHash)||!a(l.inputHash)||!a(l.stateHash)||!a(l.nonce)||!a(l.stageRevision)||!a(l.stageHash)||!a(l.catalogHash)||l.targetEpicId!==void 0&&!t(l.targetEpicId)||m&&(!a(l.outputHash)||!a(l.artifactHash))))return{schemaVersion:2,...l.targetEpicId?{targetEpicId:l.targetEpicId}:{},requestId:l.requestId,requestHash:l.requestHash,inputHash:l.inputHash,stateHash:l.stateHash,nonce:l.nonce,stageCommand:l.stageCommand,stageRevision:l.stageRevision,stageHash:l.stageHash,catalogHash:l.catalogHash,...m?{outputHash:l.outputHash,artifactHash:l.artifactHash}:{}}},n=(l,m)=>{if(!(!h(l)||l.schemaVersion!=="1.1"||l.kind!==m||!a(l.receiptId)||!a(l.graphHash)||!a(l.evidenceHash)||!t(l.elementId)||!t(l.caseId)||!t(l.category)))return{schemaVersion:"1.1",kind:m,receiptId:l.receiptId,graphHash:l.graphHash,elementId:l.elementId,caseId:l.caseId,category:l.category,evidenceHash:l.evidenceHash}},o=(l,m)=>{if(!h(l)||l.kind!==m||!a(l.receiptId)||!r(l.evidenceIds,24)||m==="architecture-stage-completion"&&!["succeeded","failed"].includes(String(l.status))||m==="architecture-stage-validation"&&!["passed","failed","pending"].includes(String(l.status)))return;const u=i(l,!0);if(!u)return;const S=m==="architecture-stage-validation"?n(l.isolated,"isolated"):void 0,C=m==="architecture-stage-validation"?n(l.regression,"regression"):void 0;if(!(m==="architecture-stage-validation"&&(!S||!C)))return{...u,kind:m,receiptId:l.receiptId,status:l.status,evidenceIds:l.evidenceIds,...S&&C?{isolated:S,regression:C}:{}}},s={};e.schemaVersion===1&&(s.schemaVersion=1),e.owner==="root"&&(s.owner="root"),t(e.currentStageCommand)&&(s.currentStageCommand=e.currentStageCommand),["ask-user","delegate","resume","advance","blocked","complete"].includes(String(e.continuationState))&&(s.continuationState=e.continuationState);const p=r(e.questionIds,16);p&&(s.questionIds=p),(e.childStatus==="succeeded"||e.childStatus==="failed")&&(s.childStatus=e.childStatus),(e.evidencePolicy==="legacy-compatible"||e.evidencePolicy==="v2-required")&&(s.evidencePolicy=e.evidencePolicy),t(e.targetEpicId)&&(s.targetEpicId=e.targetEpicId),a(e.graphRevision)&&(s.graphRevision=e.graphRevision),e.graphSource==="committed-epic-v1"&&(s.graphSource=e.graphSource),h(e.pactAnswerReceipt)&&Object.keys(e.pactAnswerReceipt).sort().join(",")===["schemaVersion","targetEpicId","graphRevision","stateSha256","answersSha256","questionIds","publicSafe"].sort().join(",")&&e.pactAnswerReceipt.schemaVersion==="PactAnswerReceipt/1"&&e.pactAnswerReceipt.targetEpicId===e.targetEpicId&&e.pactAnswerReceipt.graphRevision===e.graphRevision&&a(e.pactAnswerReceipt.stateSha256)&&a(e.pactAnswerReceipt.answersSha256)&&I(e.pactAnswerReceipt.questionIds,["PACT-Q1-CONSUMER","PACT-Q2-PROVIDER","PACT-Q3-BROKER","PACT-Q4-MATCHERS","PACT-Q5-VERIFY"])&&e.pactAnswerReceipt.publicSafe===!0&&(s.pactAnswerReceipt=e.pactAnswerReceipt);const g=i(e.evidenceExpectation,!1);g&&(s.evidenceExpectation=g);const E=o(e.completionEvidence,"architecture-stage-completion"),_=o(e.validationEvidence,"architecture-stage-validation");if(E&&(s.completionEvidence=E),_&&(s.validationEvidence=_),h(e.reviewDecision)&&Object.keys(e.reviewDecision).sort().join(",")===["schemaVersion","targetEpicId","graphRevision","artifactHash","completionReceiptId","validationReceiptId","decision","evidenceIds","publicSafe"].sort().join(",")&&e.reviewDecision.schemaVersion==="ArchitectureReviewDecision/1"&&e.reviewDecision.targetEpicId===e.targetEpicId&&e.reviewDecision.graphRevision===e.graphRevision&&a(e.reviewDecision.graphRevision)&&a(e.reviewDecision.artifactHash)&&a(e.reviewDecision.completionReceiptId)&&a(e.reviewDecision.validationReceiptId)&&["approved","changes-requested"].includes(String(e.reviewDecision.decision))&&e.reviewDecision.publicSafe===!0){const l=r(e.reviewDecision.evidenceIds,24);l&&l.length>0&&(s.reviewDecision={...e.reviewDecision,evidenceIds:l})}if(Qt(e.terminalMemoryCheckpoint,e))s.terminalMemoryCheckpoint=e.terminalMemoryCheckpoint;else if(h(e.terminalMemoryCheckpoint)&&e.terminalMemoryCheckpoint.schemaVersion===void 0&&["passed","failed","pending"].includes(String(e.terminalMemoryCheckpoint.status))){const l=r(e.terminalMemoryCheckpoint.evidenceIds,24);l&&(s.terminalMemoryCheckpoint={status:e.terminalMemoryCheckpoint.status,evidenceIds:l})}if(Array.isArray(e.acceptedStages)&&e.acceptedStages.length<=15){const l=e.acceptedStages.map(m=>{if(!h(m)||!t(m.targetEpicId)||!t(m.stageCommand))return;const u=o(m.completionEvidence,"architecture-stage-completion"),S=o(m.validationEvidence,"architecture-stage-validation");return u&&S?{targetEpicId:m.targetEpicId,stageCommand:m.stageCommand,completionEvidence:u,validationEvidence:S}:void 0});l.every(m=>m!==void 0)&&(s.acceptedStages=l)}if(h(e.accounting)&&e.accounting.schemaVersion===1&&t(e.accounting.contractVersion)&&t(e.accounting.accountingId)&&typeof e.accounting.charged=="boolean"&&Number.isInteger(e.accounting.chargedQuotaUnits)&&typeof e.accounting.chargedQuotaUnits=="number"&&e.accounting.chargedQuotaUnits>=0&&e.accounting.chargedQuotaUnits<=13){const l=r(e.accounting.receiptIds,32);l&&(s.accounting={schemaVersion:1,contractVersion:e.accounting.contractVersion,accountingId:e.accounting.accountingId,charged:e.accounting.charged,chargedQuotaUnits:e.accounting.chargedQuotaUnits,receiptIds:l,...["in-progress","aborted","timed-out","failed","complete"].includes(String(e.accounting.lastOutcome))?{lastOutcome:e.accounting.lastOutcome}:{}})}return JSON.stringify(s).length<=96e3?s:void 0}function Si(e){const t=h(e.metadata.archPlan)?e.metadata.archPlan.execution:void 0,a=h(t)?t.checkpoint:void 0,r=h(t)?t:void 0,i=h(a)?a:void 0,n=e.requestExecution,o=Array.isArray(i?.acceptedStages)?i.acceptedStages:[],s=n.currentStageCommand==="arch-prd"&&n.continuationState==="delegate"&&n.completionEvidence===void 0&&n.validationEvidence===void 0&&i?.currentStageCommand==="arch-prd"&&i.continuationState==="delegate"&&o.length===0&&r?.nextAction==="delegate",p=n.currentStageCommand==="arch-prd"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-architecture"&&i.continuationState==="advance"&&o.length===1&&h(o[0])&&o[0].stageCommand==="arch-prd"&&I(o[0].completionEvidence,n.completionEvidence)&&I(o[0].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",g=n.currentStageCommand==="arch-architecture"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-architecture"&&i.continuationState==="delegate"&&o.length===1&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",E=n.currentStageCommand==="arch-architecture"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-fitness-functions"&&i.continuationState==="advance"&&o.length===2&&h(o[0])&&h(o[1])&&o[0].stageCommand==="arch-prd"&&o[1].stageCommand==="arch-architecture"&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===1&&I(o[0],n.acceptedStages[0])&&I(o[1].completionEvidence,n.completionEvidence)&&I(o[1].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",_=n.currentStageCommand==="arch-fitness-functions"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-fitness-functions"&&i.continuationState==="delegate"&&o.length===2&&h(o[0])&&h(o[1])&&o[0].stageCommand==="arch-prd"&&o[1].stageCommand==="arch-architecture"&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",l=n.currentStageCommand==="arch-fitness-functions"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-api-contracts"&&i.continuationState==="advance"&&o.length===3&&h(o[0])&&h(o[1])&&h(o[2])&&o[0].stageCommand==="arch-prd"&&o[1].stageCommand==="arch-architecture"&&o[2].stageCommand==="arch-fitness-functions"&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===2&&I(o.slice(0,2),n.acceptedStages)&&I(o[2].completionEvidence,n.completionEvidence)&&I(o[2].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",m=n.currentStageCommand==="arch-api-contracts"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-api-contracts"&&i.continuationState==="delegate"&&o.length===3&&h(o[0])&&h(o[1])&&h(o[2])&&o[0].stageCommand==="arch-prd"&&o[1].stageCommand==="arch-architecture"&&o[2].stageCommand==="arch-fitness-functions"&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",u=["PACT-Q1-CONSUMER","PACT-Q2-PROVIDER","PACT-Q3-BROKER","PACT-Q4-MATCHERS","PACT-Q5-VERIFY"],S=n.currentStageCommand==="arch-api-contracts"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="generate-pacts"&&i.continuationState==="ask-user"&&o.length===4&&h(o[3])&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===3&&I(o.slice(0,3),n.acceptedStages)&&o[3].stageCommand==="arch-api-contracts"&&I(o[3].completionEvidence,n.completionEvidence)&&I(o[3].validationEvidence,n.validationEvidence)&&I(i.questionIds,u)&&I(r?.questionIds,u)&&r?.nextAction==="ask-user",C=n.currentStageCommand==="generate-pacts"&&n.continuationState==="ask-user"&&i?.currentStageCommand==="generate-pacts"&&i.continuationState==="delegate"&&o.length===4&&I(o,n.acceptedStages)&&I(n.questionIds,u)&&I(i.questionIds,[])&&I(i.pactAnswerReceipt,e.answerReceipt)&&I(r?.pactAnswerReceipt,e.answerReceipt)&&e.answerReceipt?.stateSha256===e.sourceStateSha256&&r?.nextAction==="resume",L=n.currentStageCommand==="generate-pacts"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&I(n.pactAnswerReceipt,e.pactRecordedReceipt)&&i?.currentStageCommand==="arch-api-integrations"&&i.continuationState==="advance"&&o.length===5&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===4&&I(o.slice(0,4),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts"&&h(o[4])&&I(o[4].completionEvidence,n.completionEvidence)&&I(o[4].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",b=n.currentStageCommand==="arch-api-integrations"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-api-integrations"&&i.continuationState==="delegate"&&o.length===5&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",Y=n.currentStageCommand==="arch-api-integrations"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-database"&&i.continuationState==="advance"&&o.length===6&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===5&&I(o.slice(0,5),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations"&&h(o[5])&&I(o[5].completionEvidence,n.completionEvidence)&&I(o[5].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",w=n.currentStageCommand==="arch-database"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-database"&&i.continuationState==="delegate"&&o.length===6&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",v=n.currentStageCommand==="arch-database"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-security"&&i.continuationState==="advance"&&o.length===7&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===6&&I(o.slice(0,6),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database"&&h(o[6])&&I(o[6].completionEvidence,n.completionEvidence)&&I(o[6].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",O=n.currentStageCommand==="arch-security"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-security"&&i.continuationState==="delegate"&&o.length===7&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",k=n.currentStageCommand==="arch-security"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-design-system"&&i.continuationState==="advance"&&o.length===8&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===7&&I(o.slice(0,7),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security"&&h(o[7])&&I(o[7].completionEvidence,n.completionEvidence)&&I(o[7].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",D=n.currentStageCommand==="arch-design-system"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-design-system"&&i.continuationState==="delegate"&&o.length===8&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",F=n.currentStageCommand==="arch-design-system"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-ux-design"&&i.continuationState==="advance"&&o.length===9&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===8&&I(o.slice(0,8),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security,arch-design-system"&&h(o[8])&&I(o[8].completionEvidence,n.completionEvidence)&&I(o[8].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",$=n.currentStageCommand==="arch-ux-design"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-ux-design"&&i.continuationState==="delegate"&&o.length===9&&I(o,n.acceptedStages)&&r?.nextAction==="blocked",j=n.currentStageCommand==="arch-ux-design"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-performance"&&i.continuationState==="advance"&&o.length===10&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===9&&I(o.slice(0,9),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security,arch-design-system,arch-ux-design"&&h(o[9])&&I(o[9].completionEvidence,n.completionEvidence)&&I(o[9].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",B=n.currentStageCommand==="arch-performance"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-performance"&&i.continuationState==="delegate"&&o.length===10&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",me=n.currentStageCommand==="arch-performance"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-testing"&&i.continuationState==="advance"&&o.length===11&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===10&&I(o.slice(0,10),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security,arch-design-system,arch-ux-design,arch-performance"&&h(o[10])&&I(o[10].completionEvidence,n.completionEvidence)&&I(o[10].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",ae=n.currentStageCommand==="arch-testing"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-testing"&&i.continuationState==="delegate"&&o.length===11&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",N=n.currentStageCommand==="arch-testing"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-infrastructure"&&i.continuationState==="advance"&&o.length===12&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===11&&I(o.slice(0,11),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security,arch-design-system,arch-ux-design,arch-performance,arch-testing"&&h(o[11])&&I(o[11].completionEvidence,n.completionEvidence)&&I(o[11].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",G=n.currentStageCommand==="arch-infrastructure"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-infrastructure"&&i.continuationState==="delegate"&&o.length===12&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",ze=n.currentStageCommand==="arch-infrastructure"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-review"&&i.continuationState==="advance"&&o.length===13&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===12&&I(o.slice(0,12),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security,arch-design-system,arch-ux-design,arch-performance,arch-testing,arch-infrastructure"&&h(o[12])&&I(o[12].completionEvidence,n.completionEvidence)&&I(o[12].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",$e=n.currentStageCommand==="arch-review"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-review"&&i.continuationState==="delegate"&&o.length===13&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",ke=n.currentStageCommand==="arch-review"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&n.reviewDecision===void 0&&i?.currentStageCommand==="arch-review"&&i.continuationState==="ask-user"&&o.length===13&&I(o,n.acceptedStages)&&I(i.questionIds,["ARCH-REVIEW-A09-APPROVAL"])&&I(i.completionEvidence,n.completionEvidence)&&I(i.validationEvidence,n.validationEvidence)&&r?.nextAction==="ask-user",st=n.currentStageCommand==="arch-review"&&n.continuationState==="ask-user"&&n.childStatus==="succeeded"&&h(n.reviewDecision)&&n.reviewDecision.decision==="approved"&&I(n.questionIds,["ARCH-REVIEW-A09-APPROVAL"])&&i?.currentStageCommand==="update-memory"&&i.continuationState==="advance"&&o.length===14&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===13&&I(o.slice(0,13),n.acceptedStages)&&h(o[13])&&o[13].stageCommand==="arch-review"&&I(o[13].completionEvidence,n.completionEvidence)&&I(o[13].validationEvidence,n.validationEvidence)&&I(i.reviewDecision,n.reviewDecision)&&r?.nextAction==="resume",Fe=n.currentStageCommand==="update-memory"&&n.continuationState==="advance"&&h(n.reviewDecision)&&n.reviewDecision.decision==="approved"&&i?.currentStageCommand==="update-memory"&&i.continuationState==="delegate"&&o.length===14&&I(o,n.acceptedStages)&&I(i.reviewDecision,n.reviewDecision)&&r?.nextAction==="delegate",Q=n.currentStageCommand==="update-memory"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="update-memory"&&i.continuationState==="complete"&&o.length===14&&I(o,n.acceptedStages)&&I(i.reviewDecision,n.reviewDecision)&&I(i.completionEvidence,n.completionEvidence)&&I(i.validationEvidence,n.validationEvidence)&&Qt(i.terminalMemoryCheckpoint,n)!==null&&I(i.terminalMemoryCheckpoint,n.terminalMemoryCheckpoint)&&r?.nextAction==="complete";if(e.metadata.mode!=="arch-plan"||e.metadata.resolvedTrigger!=="arch-plan"||!h(t)||!h(a)||t.owner!=="root"||t.currentStageCommand!==a.currentStageCommand||t.continuationState!==a.continuationState||a.owner!=="root"||a.evidencePolicy!=="v2-required"||a.targetEpicId!==n.targetEpicId||a.graphRevision!==n.graphRevision||a.graphSource!==n.graphSource||!/^P[1-9][0-9]{0,11}$/.test(String(a.targetEpicId))||!/^[a-f0-9]{64}$/.test(String(a.graphRevision))||!Array.isArray(a.acceptedStages)||!(s||p||g||E||_||l||m||S||C||L||b||Y||w||v||O||k||D||F||$||j||B||me||ae||N||G||ze||$e||ke||st||Fe||Q)||!h(a.accounting)||a.accounting.charged!==!0||!I(Wt(a),a))throw new Error("architecture-root-checkpoint-invalid");const de=K(e.projectRoot,".neocortex"),ie=K(de,"state.json"),tt=K(de,"state.json.architecture.lock"),De=_t(tt,"wx",384);let je;try{const P=ht(ie);if(!P.isFile()||P.isSymbolicLink())throw new Error("architecture-root-state-binding-invalid");const oe=Re(ie,"utf8");if(Be("sha256").update(oe).digest("hex")!==e.sourceStateSha256)throw new Error("architecture-root-state-conflict");const J=JSON.parse(oe),Ce=h(J)&&h(J.archPlan)?J.archPlan:{};if(!h(J)||!h(J.epics)||!Object.hasOwn(J.epics,a.targetEpicId)||(e.initialBinding?Ce.execution!==void 0||n.graphSource!=="committed-epic-v1":!I(Wt(Ce.execution),n))||h(J.scope)&&J.scope.kind==="projected")throw new Error("architecture-root-state-binding-invalid");if(n.graphSource==="committed-epic-v1"&&n.graphRevision!==vt(e.projectRoot,String(n.targetEpicId)))throw new Error("architecture-root-epic-binding-invalid");const ce=Lt(),z=Le("git",["rev-parse","--git-common-dir"],{cwd:e.projectRoot,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim(),St=zr(z)?On(z):On(e.projectRoot,z);if(Jr(St)!==St)throw new Error("architecture-root-backup-dir-invalid");const x=K(St,"neocortex-architecture");Ct(x,{recursive:!0,mode:448});const qe=ht(x);if(!qe.isDirectory()||qe.isSymbolicLink()||qe.uid!==process.getuid?.()||(qe.mode&63)!==0)throw new Error("architecture-root-backup-dir-invalid");const f=K(x,`state-backup-${ce}.json`),dt=_t(f,"wx",384);try{Dt(dt,oe),jt(dt)}finally{wt(dt)}const se=_t(x,"r");try{jt(se)}finally{wt(se)}const xt={...J,archPlan:{...Ce,execution:a}};je=K(de,`state.json.architecture-tmp-${ce}`);const nt=_t(je,"wx",384);try{Dt(nt,`${JSON.stringify(xt,null,2)}
8
+ `),jt(nt)}finally{wt(nt)}if(Q&&!I(n.terminalMemoryCheckpoint,kn(e.projectRoot,n)))throw new Error("architecture-root-state-conflict");if(n.graphSource==="committed-epic-v1"&&n.graphRevision!==vt(e.projectRoot,String(n.targetEpicId)))throw new Error("architecture-root-epic-binding-invalid");Pn(je,ie),je=void 0;const c=_t(de,"r");try{jt(c)}finally{wt(c)}}finally{if(je)try{Zt(je)}catch{}wt(De),Zt(tt)}}function Gt(e,t){if(!h(e))return;const a={};for(const r of t){const i=e[r];if(typeof i=="boolean")a[r]=i;else if(typeof i=="number"&&Number.isFinite(i))a[r]=i;else if(typeof i=="string"){const n=re(i);n&&(a[r]=n)}}return Object.keys(a).length>0?a:void 0}function Ft(e){return e==="epic"||e==="story"?e:void 0}function pr(e){if(!h(e)||e.schemaVersion!==1)return;const t=X(e.ownerStoryId),a=X(e.sessionId),r=X(e.idempotencyKey),i=Te(e.acquiredAt),n=Te(e.expiresAt);if(!(!t||!a||!r||!i||!n||Date.parse(n)<=Date.parse(i)))return{schemaVersion:1,ownerStoryId:t,sessionId:a,idempotencyKey:r,acquiredAt:i,expiresAt:n}}function lr(e){if(!h(e)||e.schemaVersion!==1)return;const t=X(e.storyId),a=X(e.epicId),r=ye(e.branch),i=R(e.baseSha),n=R(e.headSha),o=X(e.idempotencyKey),s=Te(e.recordedAt),p=be(e.commits).map(R).filter(L=>!!L).slice(0,256),g=be(e.receiptRefs).map(Qe).filter(L=>!!L).slice(0,256),E=e.dispatchId===void 0?void 0:X(e.dispatchId),_=e.bundleId===void 0?void 0:X(e.bundleId),l=e.bundleDigest===void 0?void 0:R(e.bundleDigest),m=e.graphRevision===void 0?void 0:R(e.graphRevision),u=e.claimRevision===void 0?void 0:X(e.claimRevision),S=vi(e.qaReceipt),C=Ci(e.reviewReceipt);if(!(!t||!a||!t.startsWith(`${a}.`)||!r||!i||!n||i===n||!o||!s||p.length===0||g.length===0||!Array.isArray(e.commits)||p.length!==e.commits.length||e.commits.length>256||!Array.isArray(e.receiptRefs)||g.length!==e.receiptRefs.length||e.receiptRefs.length>256||e.dispatchId!==void 0&&!E||e.bundleId!==void 0&&!_||e.bundleDigest!==void 0&&(!l||l.length!==64)||e.graphRevision!==void 0&&(!m||m.length!==64)||e.claimRevision!==void 0&&!u||e.qaVerdict!=="passed"&&e.qaVerdict!=="blocked"||!["approved","changes-requested","pending"].includes(String(e.reviewVerdict))||!S||e.reviewVerdict!=="pending"&&!C||e.reviewVerdict==="pending"&&C||S.verdict!==e.qaVerdict||C&&C.verdict!==e.reviewVerdict||!fr(S,{storyId:t,epicId:a,baseSha:i,headSha:n,bundleDigest:l,graphRevision:m})||C&&(!fr(C,{storyId:t,epicId:a,baseSha:i,headSha:n,bundleDigest:l,graphRevision:m})||C.qaReceiptRef!==S?.receiptRef||C.receiptRef===S?.receiptRef)||!g.includes(String(S.receiptRef))||C&&(!g.includes(String(C.receiptRef))||Date.parse(String(C.reviewedAt))<Date.parse(String(S.checkedAt)))))return{schemaVersion:1,storyId:t,epicId:a,branch:r,baseSha:i,headSha:n,idempotencyKey:o,...E?{dispatchId:E}:{},..._?{bundleId:_}:{},...l?{bundleDigest:l}:{},...m?{graphRevision:m}:{},...u?{claimRevision:u}:{},qaVerdict:e.qaVerdict,reviewVerdict:e.reviewVerdict,...S?{qaReceipt:S}:{},...C?{reviewReceipt:C}:{},recordedAt:s,commits:p,receiptRefs:g}}function vi(e){if(!h(e)||e.schemaVersion!==1||e.kind!=="story_qa_evidence"||e.producer!=="local-yolo-tdd"||e.evidenceVersion!==void 0&&e.evidenceVersion!=="git-immutable-v1"&&e.evidenceVersion!=="p205-execution-v2"||!["passed","blocked"].includes(String(e.verdict)))return;const t=X(e.storyId),a=X(e.epicId),r=R(e.baseSha),i=R(e.headSha),n=R(e.bundleDigest),o=R(e.graphRevision),s=R(e.sourceEvidenceDigest),p=Te(e.checkedAt),g=Qe(e.receiptRef),E=e.evidenceVersion==="p205-execution-v2"&&e.contract==="P205-CI-02"?e.contract:void 0,_=e.evidenceVersion==="p205-execution-v2"&&e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,l=e.evidenceVersion==="p205-execution-v2"?R(e.manifestDigest):void 0,m=e.evidenceVersion==="p205-execution-v2"?R(e.resultDigest):void 0,u=e.evidenceVersion==="p205-execution-v2"?be(e.gateIds).map(X).filter(S=>!!S).slice(0,64):void 0;if(!(!t||!a||!r||!i||!n||n.length!==64||!o||o.length!==64||!s||s.length!==64||!p||!g||e.evidenceVersion==="p205-execution-v2"&&(!E||_!=="node scripts/test-root.mjs --gate complete"||!l||l.length!==64||!m||m.length!==64||!Array.isArray(e.gateIds)||!u||u.length===0||u.length!==e.gateIds.length)))return{schemaVersion:1,kind:"story_qa_evidence",producer:"local-yolo-tdd",...e.evidenceVersion?{evidenceVersion:e.evidenceVersion}:{},storyId:t,epicId:a,...e.evidenceVersion==="p205-execution-v2"?{contract:E,command:_,manifestDigest:l,gateIds:u,resultDigest:m}:{},baseSha:r,headSha:i,bundleDigest:n,graphRevision:o,sourceEvidenceDigest:s,verdict:e.verdict,checkedAt:p,receiptRef:g}}function hr(e){if(!h(e)||e.schemaVersion!==1||e.kind!=="story_checkpoint_physical_verification"||e.producer!=="client-p205-transient-v1"||e.publicSafe!==!0||e.verdict!=="verified"&&e.verdict!=="rejected")return;const t=X(e.storyId),a=X(e.epicId),r=ye(e.branch),i=R(e.baseSha),n=R(e.headSha),o=R(e.aggregateHeadSha),s=R(e.commitBodyDigest),p=R(e.changedPathsDigest),g=e.claimVerification==="canonical"||e.claimVerification==="legacy-migration"?e.claimVerification:void 0,E=R(e.effectiveClaimRevision),_=e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,l=R(e.manifestDigest),m=be(e.gateIds).map(X).filter(w=>!!w).slice(0,64),u=R(e.resultDigest),S=R(e.graphRevision),C=R(e.executionEvidenceDigest),L=R(e.sourceEvidenceDigest),b=Te(e.verifiedAt),Y=be(e.reasonCodes).map(X).filter(w=>!!w).slice(0,16);if(!(!t||!a||!r||!i||i.length<40||!n||n.length<40||!o||o.length<40||!s||s.length!==64||!p||p.length!==64||!g||!E||E.length!==64||!_||!l||l.length!==64||!Array.isArray(e.gateIds)||m.length!==e.gateIds.length||!u||u.length!==64||!S||S.length!==64||!C||C.length!==64||!L||L.length!==64||!b||Y.length===0||e.verdict==="verified"&&(m.length===0||!Y.includes("checkpoint-p205-transient-verified"))))return{schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:t,epicId:a,branch:r,baseSha:i,headSha:n,aggregateHeadSha:o,commitBodyDigest:s,changedPathsDigest:p,claimVerification:g,effectiveClaimRevision:E,command:_,manifestDigest:l,gateIds:m,resultDigest:u,graphRevision:S,executionEvidenceDigest:C,sourceEvidenceDigest:L,verifiedAt:b,verdict:e.verdict,reasonCodes:Y,publicSafe:!0}}function gr(e){const t=["schemaVersion","kind","producer","storyId","epicId","branch","baseSha","headSha","graphRevision","effectiveClaimRevision","sourceEvidenceDigest","verifiedAt","reasonCodes","integrationAuthorized","publicSafe"];if(!h(e)||Object.keys(e).some(l=>!t.includes(l))||e.schemaVersion!==1||e.kind!=="story_scheduling_checkpoint_evidence"||e.producer!=="client-git-physical-v1"||e.integrationAuthorized!==!1||e.publicSafe!==!0)return;const a=X(e.storyId),r=X(e.epicId),i=ye(e.branch),n=R(e.baseSha),o=R(e.headSha),s=R(e.graphRevision),p=R(e.effectiveClaimRevision),g=R(e.sourceEvidenceDigest),E=Te(e.verifiedAt),_=be(e.reasonCodes).map(X).filter(l=>!!l);if(!(!a||!r||!i||!n||n.length<40||!o||o.length<40||!s||s.length!==64||!p||p.length!==64||!g||g.length!==64||!E||!Array.isArray(e.reasonCodes)||_.length!==1||_[0]!=="checkpoint-git-scheduling-verified"))return{schemaVersion:1,kind:"story_scheduling_checkpoint_evidence",producer:"client-git-physical-v1",storyId:a,epicId:r,branch:i,baseSha:n,headSha:o,graphRevision:s,effectiveClaimRevision:p,sourceEvidenceDigest:g,verifiedAt:E,reasonCodes:_,integrationAuthorized:!1,publicSafe:!0}}function Ci(e){if(!h(e)||e.schemaVersion!==1||e.kind!=="story_review_evidence"||e.producer!=="root-commit-range-review"||!["approved","changes-requested"].includes(String(e.verdict)))return;const t=X(e.storyId),a=X(e.epicId),r=R(e.baseSha),i=R(e.headSha),n=R(e.bundleDigest),o=R(e.graphRevision),s=R(e.sourceEvidenceDigest),p=Qe(e.qaReceiptRef),g=Te(e.reviewedAt),E=Qe(e.receiptRef);if(!(!t||!a||!r||!i||!n||n.length!==64||!o||o.length!==64||!s||s.length!==64||!p||!g||!E))return{schemaVersion:1,kind:"story_review_evidence",producer:"root-commit-range-review",storyId:t,epicId:a,baseSha:r,headSha:i,bundleDigest:n,graphRevision:o,sourceEvidenceDigest:s,qaReceiptRef:p,verdict:e.verdict,reviewedAt:g,receiptRef:E}}function fr(e,t){return["storyId","epicId","baseSha","headSha","bundleDigest","graphRevision"].every(a=>e[a]===t[a])}function mr(e){if(!h(e)||e.schemaVersion!==1||e.capturedFromCurrentCheckout!==!0)return;const t=ye(e.originBranch),a=R(e.originHeadSha),r=ye(e.executionBranch),i=Te(e.capturedAt);if(!(!t||!a||a.length<40||!r||!i||t===r))return{schemaVersion:1,originBranch:t,originHeadSha:a,executionBranch:r,capturedFromCurrentCheckout:!0,capturedAt:i}}function yr(e){if(!h(e)||e.schemaVersion!==1||e.verdict!=="passed")return;const t=R(e.executionHeadSha),a=R(e.graphRevision),r=Te(e.checkedAt),i=Qe(e.receiptRef),n=be(e.gateIds).map(X).filter(E=>!!E).slice(0,128),o=e.evidenceVersion==="p205-execution-v2"&&e.producer==="local-yolo-tdd"&&e.contract==="P205-CI-02"&&e.command==="node scripts/test-root.mjs --gate complete",s=e.evidenceVersion===void 0&&e.producer===void 0&&e.contract===void 0&&e.command===void 0&&e.manifestDigest===void 0&&e.resultDigest===void 0,p=o?R(e.manifestDigest):void 0,g=o?R(e.resultDigest):void 0;if(!(!t||t.length<40||!a||a.length!==64||!r||!i||n.length===0||!Array.isArray(e.gateIds)||n.length!==e.gateIds.length||e.gateIds.length>128||!s&&!o||o&&(!p||p.length!==64||!g||g.length!==64)))return{schemaVersion:1,...o?{evidenceVersion:"p205-execution-v2",producer:"local-yolo-tdd",contract:"P205-CI-02",command:"node scripts/test-root.mjs --gate complete",manifestDigest:p,resultDigest:g}:{},verdict:"passed",executionHeadSha:t,graphRevision:a,checkedAt:r,receiptRef:i,gateIds:n}}function hn(e){if(!h(e)||e.schemaVersion!==1)return;const t=Gt(e,["schemaVersion","kind","storyId","epicId","baseSha","headSha","originalBaseSha","originalHeadSha","gitPullRequest","preservesLaterCommits","historyRewrite","recordedAt"])??{},a=be(e.receiptRefs).map(Qe).filter(i=>!!i).slice(0,256),r=be(e.revertCommits).map(re).filter(i=>!!i).slice(0,256);return{...t,...a.length?{receiptRefs:a}:{},...r.length?{revertCommits:r}:{}}}function _i(e){if(!(!h(e)||Object.keys(e).sort().join(",")!=="gitPullRequest,headSha,kind,prNumber,reviewEvidenceDigest,schemaVersion"||e.schemaVersion!==1||e.kind!=="git-pull-request"||e.gitPullRequest!==!0||!Number.isSafeInteger(e.prNumber)||Number(e.prNumber)<=0||typeof e.headSha!="string"||!/^[a-f0-9]{40}$/.test(e.headSha)||typeof e.reviewEvidenceDigest!="string"||!/^[a-f0-9]{64}$/.test(e.reviewEvidenceDigest)))return{schemaVersion:1,kind:"git-pull-request",gitPullRequest:!0,prNumber:e.prNumber,headSha:e.headSha,reviewEvidenceDigest:e.reviewEvidenceDigest}}function Ir(e){if(!h(e)||e.schemaVersion!==1||e.publicSafe!==!0)return;const t=X(e.epicId),a=ye(e.executionBranch),r=ye(e.originBranch),i=R(e.baseSha),n=R(e.executionHeadSha),o=e.mergeSha===void 0?void 0:R(e.mergeSha),s=e.pushedSha===void 0?void 0:R(e.pushedSha),p=X(e.idempotencyKey),g=Te(e.attemptStartedAt),E=e.completedAt===void 0?void 0:Te(e.completedAt),_=be(e.localGateReceiptRefs).map(Qe).filter(S=>!!S).slice(0,256),l=be(e.reasonCodes).map(X).filter(S=>!!S).slice(0,64),m=Ai(e.candidateQa),u=wi(e.providerGuard);if(!(!t||!a||!r||!i||!n||!p||!g||_.length===0||l.length===0||!["direct","single_pr"].includes(String(e.strategy))||!["prepared","merged","pushed","denied_external_gate","blocked_local_or_repo"].includes(String(e.physicalStatus))||typeof e.retryEligible!="boolean"||e.providerGuard!==void 0&&!u||u&&(e.strategy!=="single_pr"||e.physicalStatus!=="pushed"||u.prHeadSha!==o||u.originHeadSha!==i)))return{schemaVersion:1,epicId:t,executionBranch:a,originBranch:r,baseSha:i,executionHeadSha:n,...o?{mergeSha:o}:{},...s?{pushedSha:s}:{},strategy:e.strategy,...Xe(e.prNumber)?{prNumber:Xe(e.prNumber)}:{},physicalStatus:e.physicalStatus,localGateReceiptRefs:_,idempotencyKey:p,attemptStartedAt:g,...m?{candidateQa:m}:{},...u?{providerGuard:u}:{},...E?{completedAt:E}:{},retryEligible:e.retryEligible,reasonCodes:l,publicSafe:!0}}function wi(e){if(!h(e)||e.schemaVersion!==1||e.provider!=="github"||e.publicSafe!==!0)return;const t=String(e.mode),a=String(e.source),r=t==="recovered_exact_tree"?a==="physical_recovery":t==="strict_up_to_date_expected_head"&&["branch_protection","ruleset","branch_protection_and_ruleset"].includes(a),i=R(e.prHeadSha),n=R(e.originHeadSha),o=Te(e.checkedAt);if(!(!r||!i||!n||!o))return{schemaVersion:1,provider:"github",mode:t,source:a,prHeadSha:i,originHeadSha:n,checkedAt:o,publicSafe:!0}}function Ai(e){if(!h(e)||e.schemaVersion!==1||e.kind!=="epic_merge_candidate_qa"||e.contract!=="P205-CI-02"||e.command!==Ga)return;const a=Object.fromEntries(["originHeadSha","executionHeadSha","mergeSha","treeSha","graphRevision","manifestDigest","resultDigest"].map(o=>[o,R(e[o])])),r=Te(e.checkedAt),i=Qe(e.receiptRef),n=be(e.gateIds).filter(o=>/^[a-z0-9-]+$/.test(o)).slice(0,128);if(!(Object.values(a).some(o=>!o)||!r||!i||n.length===0))return{schemaVersion:1,kind:e.kind,contract:e.contract,command:e.command,...a,checkedAt:r,receiptRef:i,gateIds:n}}function Ri(e){if(!h(e))return;const t={...re(e.active_epic_id??e.activeEpicId)?{active_epic_id:re(e.active_epic_id??e.activeEpicId)}:{},...re(e.active_story_id??e.activeStoryId)?{active_story_id:re(e.active_story_id??e.activeStoryId)}:{},...re(e.active_step_id??e.activeStepId)?{active_step_id:re(e.active_step_id??e.activeStepId)}:{},...re(e.session_id??e.sessionId)?{session_id:re(e.session_id??e.sessionId)}:{},...re(e.started_at??e.startedAt)?{started_at:re(e.started_at??e.startedAt)}:{}};return Object.keys(t).length>0?t:void 0}function bi(e){const t=Gt(e.completionEvidence??e.completion_evidence,["prNumber","pr_number","prState","pr_state","pullRequestState","merged","mergedAt","issueNumber","issue_number","issueState","issue_state","closedAt"]),a=Gt(e.issueCloseAudit??e.issue_close_audit,["schema_version","event","storyId","epicId","issueNumber","closedAt","publicSafe","rawLogStorage"]),r=Gt(e.scopedCiEvidence??e.scoped_ci_evidence,["schema_version","storyId","epicId","prNumber","finalState","publicSafe","rawLogStorage"]);return{...typeof e.merged=="boolean"?{merged:e.merged}:{},...typeof e.safeToContinueYoloop=="boolean"?{safeToContinueYoloop:e.safeToContinueYoloop}:{},...typeof e.mergeBlockedRemotely=="boolean"?{mergeBlockedRemotely:e.mergeBlockedRemotely}:{},...re(e.physicalMergeStatus)?{physicalMergeStatus:re(e.physicalMergeStatus)}:{},...re(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)?{pr_state:re(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)}:{},...re(e.issue_state??e.issueState??e.workflow_issue_state)?{issue_state:re(e.issue_state??e.issueState??e.workflow_issue_state)}:{},...Xe(e.issue_number??e.issueNumber)?{issue_number:Xe(e.issue_number??e.issueNumber)}:{},...t?{completionEvidence:t}:{},...a?{issueCloseAudit:a}:{},...r?{scopedCiEvidence:r}:{}}}class Ze extends Error{reasonCode;constructor(t){super(t),this.name="StateSnapshotIntegrityError",this.reasonCode=t}}const Ti=new Set(["yolo","yoloop","finalize-epic","audit"]);function Er(e){return typeof e=="string"&&Ti.has(e)}function Sr(e,t={}){const a=K(e,".neocortex","state.json");if(!lt(a))throw new Ze("git-lifecycle-state-missing");let r;try{r=JSON.parse(Re(a,"utf8"))}catch{throw new Ze("git-lifecycle-state-corrupt")}if(!h(r)||!h(r.epics)||!h(r.stories))throw new Ze("git-lifecycle-state-shape-invalid");const i=Object.values(r.epics).some(n=>h(n)&&(n.branch_mode==="epic"||ye(n.execution_branch)!==void 0));if(i)try{Ut(e,{required:!0})}catch(n){const o=n instanceof Error&&/^git-lifecycle-/.test(n.message)?n.message:"git-lifecycle-runtime-invalid";if(t.allowMissingRuntime&&o==="git-lifecycle-runtime-missing")return{lifecycleDeclared:!0,runtimeMissing:!0};throw new Ze(o)}return{lifecycleDeclared:i,runtimeMissing:!1}}function vr(e,t={}){const a=K(e,".neocortex","state.json");if(!lt(a)){if(t.epicAware&&!t.projectless)throw new Ze("git-lifecycle-state-missing");return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}let r;try{const m=Re(a,"utf-8"),u=JSON.parse(m),S=h(u.epics)?u.epics:{},C=Object.values(S).some(v=>h(v)&&(v.branch_mode==="epic"||ye(v.execution_branch)!==void 0)),L=Ut(e,{required:!!(t.epicAware&&C&&!t.projectless)});r=Kn(u,L);const b=h(r.stories)?r.stories:{},Y=h(r.epics)?r.epics:{},w=h(u.stories)?u.stories:{};for(const[v,O]of Object.entries(b)){const k=h(O)?O:void 0;if(!k?.checkpoint)continue;const D=typeof k.epic_id=="string"?k.epic_id:v.split(".")[0],F=h(Y[D])?Y[D]:void 0,$=ye(F?.execution_branch);if(!$)continue;const j=$a(e,k.checkpoint,v,D,$,t.p205Authorities?.[v],Xn(v,k,h(k.checkpoint)?k.checkpoint:void 0));if(j.kind==="integration-authorized")k.checkpoint_verification=j.verification,delete k.scheduling_checkpoint_evidence;else if(j.kind==="scheduling-only")k.scheduling_checkpoint_evidence=j.evidence,delete k.checkpoint,delete k.checkpoint_verification;else if(j.kind==="rejected"){k.checkpoint_verification=j.verification,delete k.scheduling_checkpoint_evidence;const B=h(w[v])?w[v]:void 0;if(delete k.checkpoint,L.stories[v]?.checkpoint!==void 0)for(const me of["status","last_step","steps_completed"])B&&Object.prototype.hasOwnProperty.call(B,me)?k[me]=structuredClone(B[me]):delete k[me];["done","completed","merged"].includes(String(k.status).toLowerCase())&&(k.status="blocked")}}}catch(m){if(t.epicAware&&!t.projectless){const u=m instanceof Error&&/^git-lifecycle-/.test(m.message)?m.message:"git-lifecycle-state-corrupt";throw new Ze(u)}return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}try{const m=hi(r);m.length>0&&gi(m)}catch{}const i=r.config??r.project??{},n=r.stories??{},o={};for(const[m,u]of Object.entries(n)){const S=h(u.review_request)&&u.review_request.kind==="git-pull-request"?_i(u.review_request):hn(u.review_request);o[m]={id:u.id??m,title:u.title,epic_id:u.epic_id,status:u.status??"backlog",...ur(u.source)?{source:ur(u.source)}:{},steps_completed:u.steps_completed??[],last_step:u.last_step??null,branch_name:u.branch_name??null,pr_number:u.pr_number,...Ft(u.branch_mode)?{branch_mode:Ft(u.branch_mode)}:{},...lr(u.checkpoint)?{checkpoint:lr(u.checkpoint)}:{},...hr(u.checkpoint_verification)?{checkpoint_verification:hr(u.checkpoint_verification)}:{},...gr(u.scheduling_checkpoint_evidence)?{scheduling_checkpoint_evidence:gr(u.scheduling_checkpoint_evidence)}:{},...S?{review_request:S}:{},...hn(u.rollback_receipt)?{rollback_receipt:hn(u.rollback_receipt)}:{},...Xe(u.workflow_issue)?{workflow_issue:Xe(u.workflow_issue)}:{},...bi(u),depends_on:dr(u.depends_on),files_to_modify:be(u.files_to_modify),...Ei(u),risk:typeof u.risk=="string"?u.risk:void 0,blast_radius:typeof u.blast_radius=="number"?u.blast_radius:void 0}}const s=r.epics??{},p={};for(const[m,u]of Object.entries(s)){const S=fi(u.lifecycle_classification),C=Ii(u.createEpicPlanning,m);let L,b;if(C&&h(u.createEpicPlanningClaim)&&typeof u.createEpicPlanningClaim.claimId=="string"&&h(u.createEpicPlanningPhysical))try{Nn(r,u.createEpicPlanningClaim.claimId,m,!0),L=JSON.parse(JSON.stringify(u.createEpicPlanningPhysical))}catch{}if(L&&h(u.createEpicPlanningClaim)&&typeof u.createEpicPlanningClaim.claimId=="string"&&h(u.createEpicPlanningResearchPhysical))try{Ln(r,u.createEpicPlanningClaim.claimId,m),b=JSON.parse(JSON.stringify(u.createEpicPlanningResearchPhysical))}catch{}p[m]={id:u.id??m,title:u.title,...C?{createEpicPlanning:C}:{},...L?{createEpicPlanningPhysical:L}:{},...b?{createEpicPlanningResearchPhysical:b}:{},status:u.status,stories:u.stories,total_stories:u.total_stories,completed_stories:u.completed_stories,depends_on:dr(u.depends_on),...Ft(u.branch_mode)?{branch_mode:Ft(u.branch_mode)}:{},...ye(u.execution_branch)?{execution_branch:ye(u.execution_branch)}:{},...ye(u.origin_branch)?{origin_branch:ye(u.origin_branch)}:{},...pr(u.branch_lease)?{branch_lease:pr(u.branch_lease)}:{},...mr(u.origin_binding)?{origin_binding:mr(u.origin_binding)}:{},...yr(u.aggregate_qa_receipt)?{aggregate_qa_receipt:yr(u.aggregate_qa_receipt)}:{},...Xe(u.pr_number)?{pr_number:Xe(u.pr_number)}:{},...re(u.physicalMergeStatus)?{physicalMergeStatus:re(u.physicalMergeStatus)}:{},...R(u.graph_revision)?{graph_revision:R(u.graph_revision)}:{},...Ir(u.terminal_git_receipt)?{terminal_git_receipt:Ir(u.terminal_git_receipt)}:{},...S?{lifecycle_classification:S}:{}}}const g=Ri(r.current_session??r.currentSession),E=h(r.archPlan)?Wt(r.archPlan.execution):void 0,_=r.epic_id_ledger,l=Array.isArray(_?.reserved_ids)?[...new Set(_.reserved_ids.filter(m=>typeof m=="string"&&/^P\d+$/.test(m)))].slice(0,2048):[];return{schema_version:typeof r.schema_version=="number"?r.schema_version:void 0,config:{project_name:i.project_name??i.name??"unknown",default_branch:i.default_branch??"main",language:i.language??"pt-BR",yolo_mode:i.yolo_mode,user_name:i.user_name,worktree_base:i.worktree_base,max_parallel_stories:i.max_parallel_stories,project_id:typeof i.project_id=="string"?i.project_id:void 0},stories:o,epics:p,...l.length>0?{epic_id_ledger:{schema_version:1,reserved_ids:l}}:{},...g?{current_session:g}:{},...E?{archPlan:{execution:E}}:{}}}const gn=[["P222.01","fbc3176b33687b13a8fadf8c7ea7cc06b6b6c500"],["P222.02","c7d3feb9a168f9e15b35516a972c767f3aa357da"],["P222.03","4d9bd4f2a1a3a1dc6399c572eb84b8b74c017806"],["P222.04","66590ef2f706c9d036f42edf5e517b237724f74f"],["P222.05","3ee2662538311e9788796340ed11b65864a8d8d5"],["P222.06","8660d07e3f68503a9ceb24dc138d24f62ab6cb45"],["P222.07","d99c80feacee8ea4033aa3322990147fffa2df91"],["P222.08","1f9e37dc922d87908efefb9595db32d32db30b00"],["P222.09","5ae12e485900992658e346cf3e38568fda1c2eeb"],["P222.10","6c5b8dc4f03d629fea4b62a33f4794af8e27e4f0"],["P222.11","cfe90f2f955c0027c57e4c621141d17912db65cc"],["P222.12","65f253c5cb600a8ee1dd94a1efdfef2fa5cd1629"],["P222.13","1e78c75b393515803a55d1a9b63a7fec23f710c9"],["P222.14","3f3e0bfd247a8581170df2a23c89497b5ae3641e"],["P222.15","1fd6dd25fffa5714d4ffa8b4303735e417f93de6"]],fn="6a41a47ff2521f80c2296ed811b0f0b304c54750",mn="dbc6d4670b2b7868a01973b1240e24589f1c5b7d",Cr="30dccfff07f9c969be11ae1d28e62a09731a0768";function xi(e,t){try{const a=t.indexOf(Cr);if(a<1||t[a-1]!==fn)return new Map;const r=Le("git",["show","--no-patch","--format=%P",Cr],{cwd:e,encoding:"utf8",maxBuffer:1024}).trim(),i=Le("git",["show","--no-patch","--format=%P",mn],{cwd:e,encoding:"utf8",maxBuffer:1024}).trim();if(r!==`${fn} ${mn}`||i!==`${gn.at(-1)[1]} ${fn}`)return new Map;const n=Le("git",["rev-list","--first-parent","--reverse",mn],{cwd:e,encoding:"utf8",maxBuffer:32*1024*1024}).trim().split(`
9
+ `),o=new Map;let s=-1;for(const[p,[g,E]]of gn.entries()){const _=n.indexOf(E);if(_<=s)return new Map;s=_,o.set(g,{headSha:E,position:p-gn.length})}return o}catch{return new Map}}async function ki(e,t,a){if(!Er(a))return{};if(oa(t,a))return{};try{const r=JSON.parse(Re(K(e,".neocortex","state.json"),"utf8")),i=Ut(e,{required:!0}),n=Kn(r,i),o=h(n.stories)?n.stories:{},s=h(n.epics)?n.epics:{},p=Le("git",["rev-parse","HEAD"],{cwd:e,encoding:"utf8"}).trim(),g=Le("git",["symbolic-ref","--quiet","--short","HEAD"],{cwd:e,encoding:"utf8"}).trim(),E=Le("git",["rev-list","--first-parent","--reverse",p],{cwd:e,encoding:"utf8",maxBuffer:32*1024*1024}).trim().split(`
10
+ `).filter(Boolean),_=new Map(E.map((v,O)=>[v,O])),l=xi(e,E),m=t.match(/(?:^|\s)@?docs\/stories\/([A-Za-z][A-Za-z0-9._-]*)\.story\.md(?:\s|$)/)?.[1],u=a==="yoloop"?t.match(/(?:^|[\s/@])epic-(P[1-9][0-9]*)\.md(?:\s|$)/i)?.[1]?.toUpperCase():void 0,S=new Set,C=Object.entries(o).flatMap(([v,O])=>{if(m&&v!==m)return[];const k=h(O)?O:void 0,D=h(k?.checkpoint)?k.checkpoint:void 0;if(!D)return[];const F=typeof k?.epic_id=="string"?k.epic_id:v.split(".")[0];if(u&&F!==u)return[];const $=R(D?.headSha),j=F==="P222"?l.get(v):void 0,B=_.get($??"")??(j&&j.headSha===$?j.position:void 0);if(!$||$.length<40||B===void 0)return S.add(F),[];const me=h(s[F])?s[F]:void 0;if(me?.branch_mode!=="epic"||ye(me.execution_branch)!==g||ye(D.branch)!==g)return S.add(F),[];const ae=R(D.graphRevision);if(!ae||ae.length!==64)return S.add(F),[];const N=R(D.claimRevision),G=[...Xn(v,k,D)].sort(),ze=Fa(e,D,v,F,g,G);if(!ze&&N){if(G.length===0)return S.add(F),[];const $e=Le("git",["diff-tree","--no-commit-id","--name-only","-r","-z",$],{cwd:e,encoding:"utf8"}).split("\0").filter(Boolean);if($e.length===0||$e.some(Fe=>!G.some(Q=>Q===Fe||Q.endsWith("/")&&Fe.startsWith(Q))))return S.add(F),[];const ke=Be("sha256").update(G.join("\0")).digest("hex"),st=Be("sha256").update(JSON.stringify(G)).digest("hex");if(N!==ke&&N!==st)return S.add(F),[]}else if(!ze)return S.add(F),[];return ae?.length===64?[{storyId:v,epicId:F,graphRevision:ae,checkpointHead:$,position:B}]:[]}),L=new Set(S);for(const[v,O]of Object.entries(s)){const k=h(O)?O:void 0,D=Array.isArray(k?.stories)?k.stories.filter(B=>typeof B=="string"):Object.keys(o).filter(B=>B.startsWith(`${v}.`)),F=C.filter(B=>B.epicId===v),$=D.filter(B=>F.some(me=>me.storyId===B)),j=[...F].sort((B,me)=>B.position-me.position).map(B=>B.storyId);(JSON.stringify($)!==JSON.stringify(j)||new Set(j).size!==j.length)&&L.add(v)}const b={},Y=[...new Set(C.filter(v=>!L.has(v.epicId)).map(v=>v.graphRevision))],w=Y.length>0?await Ha(e,{headSha:p,graphRevisions:Y}):new Map;for(const v of C){if(L.has(v.epicId))continue;const O=w.get(v.graphRevision);if(!O)throw new Error("p205-transient-authority-missing");b[v.storyId]=O}return b}catch(r){const i=r instanceof Error&&/^(?:p205|git-lifecycle)-[a-z0-9-]+$/.test(r.message)?r.message:"p205-transient-execution-failed";return process.stderr.write(`[Neocortex] ${i}. Checkpoint projection remains fail-closed.
11
+ `),{}}}function Nc(e,t){return{kind:"full",trigger:e,targetEpicId:null,targetStoryId:null,includedStoryCount:Object.keys(t.stories).length,includedEpicCount:Object.keys(t.epics).length,omittedStoryCount:0,omittedEpicCount:0,reason:"full-state",projectionMode:"full-compatible"}}const _r="neocortex:menu:cache";async function Pi(e){try{const t=await e.get(_r);if(!t)return null;const a=JSON.parse(t);return a.version!==gt||Date.now()-a.cachedAt>Zn?null:a}catch{return null}}async function Oi(e,t,a){try{const r={instructions:t,metadata:a,cachedAt:Date.now(),version:gt};await e.set(_r,JSON.stringify(r),Zn),Ni()}catch{}}function Ni(){try{lt(Qn)&&Zt(Qn)}catch{}}function Li(e){return e.execute({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},()=>jn(),()=>jn({strictReadOnly:!0}))}async function wr(e,t,a){const r=a.mode==="strict";try{let i;if(r&&t)i=new en({cacheDir:rn,passphrase:t,strictReadOnly:!0});else if(r)i=new Dn;else if(t){const E=K($t,"cache");i=new en({cacheDir:E,passphrase:t})}else process.stderr.write(`[neocortex] Warning: No license key in config. Run "neocortex activate" to re-authenticate.
12
+ `),i=new Dn;const n=qn(a,i,"auth-cache"),o=qn(a,i,"tier-cache"),s=new Xr({serverUrl:e,licenseKey:t??"",cacheProvider:n,strictReadOnly:r});let p;if(r){const E=await s.inspectToken();if(E.status!=="authenticated")return E;p=E.token}else p=await s.getToken();if(!p)return{status:"not-configured"};const g=new Qr({cacheProvider:o,licenseClient:s});return{status:"authenticated",token:p,client:s,tierClient:g}}catch{return r&&t?{status:"refresh-required",reason:"unavailable"}:{status:"not-configured"}}}let Ar=!1;function Di(e){const t=e.errorBody?.error_code;if(typeof t=="string"&&t.trim().length>0)return t;if(e.status===429)return"RATE_LIMITED";if(e.status>=500)return"SERVER_ERROR"}const Rr=3,qt=50;function ji(e){return new Promise(t=>setTimeout(t,e))}function Mi(e,t,a){return e.status>=500&&e.status<=599?!0:a&&e.status===409&&t.error_code==="SIGNATURE_REPLAYED"}async function Rt(e,t,a,r,i={}){const n=Math.max(1,Math.min(i.maxAttempts??Rr,Rr)),o=i.sleep??ji;let s=r,p=!1,g=!1,E=0;for(let _=1;_<=n;_+=1){const l=Math.max(Math.floor(Date.now()/1e3),E+1);E=l;const m=Vi(t,a,s,{nowSeconds:l}),u=new AbortController,S=setTimeout(()=>u.abort(),er);try{const C=await fetch(`${e}${t}`,{method:"POST",headers:m.headers,body:m.body,signal:u.signal}),L=await C.text().catch(()=>""),b=(()=>{try{return L?JSON.parse(L):{}}catch{return{}}})();if(C.status===401&&!p&&i.refreshToken&&(b.fallback_action==="refresh_token"||b.fallback_action==="re_authenticate")){p=!0;const Y=await i.refreshToken();if(Y&&_<n){s=Y,i.onTokenChanged?.(Y),await o(qt*_);continue}}if(C.status===401&&b.error_code==="SIGNATURE_EXPIRED"&&!g&&_<n){g=!0,await o(qt*_);continue}if(_<n&&Mi(C,b,i.allowReplayRetry===!0)){await o(qt*_);continue}return{response:C,text:L,parsed:b,networkFailure:!1}}catch{if(_<n){await o(qt*_);continue}return{text:"",parsed:{},networkFailure:!0}}finally{clearTimeout(S)}}return{text:"",parsed:{},networkFailure:!0}}function Vi(e,t,a,r={}){const i=Buffer.from(JSON.stringify(t),"utf8"),n=va({method:"POST",target:e,body:i,bearerToken:a,clientVersion:gt,nowSeconds:r.nowSeconds,nonceBytes:r.nonceBytes});return{body:n.body,headers:{...n.headers,Authorization:`Bearer ${a}`}}}function br(e){return Be("sha256").update(e).digest("hex")}function Ui(){const e=Number(process.env.NEOCORTEX_INVOKE_CHUNK_BYTES??"49152");return Number.isFinite(e)&&e>=1024&&e<=98304?Math.floor(e):49152}function $i(e,t,a){return`args-${Be("sha256").update("invoke-materialization:v1").update(e).update(String(t)).update(JSON.stringify(a)).digest("hex")}`}async function Tr(e,t,a,r,i={}){const n=await Rt(e,t,a,r,{...i,allowReplayRetry:!0});if(n.networkFailure||!n.response)throw new Error("NETWORK_ERROR: materialization request failed after bounded retries");const{response:o,parsed:s}=n;if(!o.ok){const p=typeof s.error_code=="string"?s.error_code:`HTTP_${o.status}`,g=typeof s.message=="string"?s.message:"materialization upload failed";throw new Error(`${p}: ${g}`)}return s}async function Bi(e,t,a,r){const i=Buffer.from(t,"utf8"),n=Ui(),o=[];for(let u=0,S=0;u<i.byteLength;u+=n,S++){const C=i.subarray(u,Math.min(u+n,i.byteLength));o.push({index:S,sha256:br(C),byteLength:C.byteLength})}const s=br(i),p=$i(s,i.byteLength,o),g=Number(process.env.NEOCORTEX_INVOKE_CHUNK_TTL_SECONDS??"900");let E=a;const _={refreshToken:r,onTokenChanged(u){E=u}};for(const u of o){const S=u.index*n,C=i.subarray(S,S+u.byteLength);await Tr(e,"/api/v1/invoke/materialization/chunks",{manifestId:p,index:u.index,sha256:u.sha256,byteLength:u.byteLength,contentBase64:C.toString("base64"),ttlSeconds:g,idempotencyKey:`${p}:${u.index}:${u.sha256}`},E,_)}const m=(await Tr(e,"/api/v1/invoke/materialization/manifests",{manifestId:p,sha256:s,byteLength:i.byteLength,chunkCount:o.length,chunks:o,ttlSeconds:g,retry:{attempt:1,budget:3,idempotencyKey:p}},E,_)).argsRef;if(!m?.manifestId)throw new Error("MATERIALIZATION_RESPONSE_INVALID: missing argsRef");return{argsRef:m,chunks:o}}function yt(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function Hi(...e){const t=new Set,a=[];for(const r of e)for(const i of r??[]){const n=re(i);if(!(!n||t.has(n))&&(t.add(n),a.push(n),a.length>=16))return a}return a}function Wi(e){const t=e.graphRetrieval;if(!h(t))return{accepted:!1,itemCount:0};const a=Array.isArray(t.items)?t.items.length:0;return{accepted:a>0||typeof t.retrievalId=="string"||t.accepted===!0,itemCount:a}}function yn(e,t=yt(e),a=[],r={}){const i=e.stateSnapshot.scope,n=Object.keys(e.stateSnapshot.stories).length,o=Object.keys(e.stateSnapshot.epics).length,s=i?.kind??"full";return{schemaVersion:1,payloadBytes:t,limitBytes:r.limitBytes??nr,warningThresholdBytes:r.warningThresholdBytes??an,scope:{kind:s,...i?.projectionMode?{projectionMode:i.projectionMode}:{},commandId:i?.commandId??null,stateProjectionPolicy:i?.stateProjectionPolicy??null},includedStories:i?.includedStoryCount??n,omittedStories:i?.omittedStoryCount??0,includedEpics:i?.includedEpicCount??o,omittedEpics:i?.omittedEpicCount??0,graphRetrieval:Wi(e.stateSnapshot),reasonCodes:Hi(a,i?.reasonCodes),publicSafe:!0}}function Gi(e){const t=h(e.budget)?e.budget:void 0,a=typeof t?.maxPayloadBytes=="number"&&Number.isFinite(t.maxPayloadBytes)?t.maxPayloadBytes:12*1024;return Math.max(1024,Math.min(a,12*1024))}function Fi(e){return h(e)?{stableId:re(e.stableId)??"unknown",...h(e.source)?{source:e.source}:{},reasonCode:"budget_exceeded"}:{stableId:"unknown",reasonCode:"budget_exceeded"}}function xr(e){const t=Array.isArray(e)?e.filter(a=>typeof a=="string"):[];return t.includes("budget_exceeded")?t:[...t,"budget_exceeded"]}function qi(e){const t=e.graphRetrieval;if(!h(t)||!Array.isArray(t.items))return e;const a=Gi(t);let r=[...t.items],i=Array.isArray(t.skipped)?[...t.skipped]:[],n=t;for(;Buffer.byteLength(JSON.stringify(n),"utf8")>a&&r.length>0;){const o=r.pop();i=[...i,Fi(o)].slice(-32),n={...t,items:r,skipped:i,warnings:xr(t.warnings)}}return Buffer.byteLength(JSON.stringify(n),"utf8")>a&&(n={...t,query:typeof t.query=="string"?t.query.slice(0,240):t.query,items:[],skipped:[],warnings:xr(t.warnings)}),n===t?e:{...e,graphRetrieval:n}}function kr(e,t={}){const a=t.limitBytes??nr,r=t.warningThresholdBytes??Math.floor(a*rr),i=yt(e);if(i<a)return{body:e,degraded:!1,telemetry:yn(e,i,["payload-within-limit"],{limitBytes:a,warningThresholdBytes:r})};let n={...e,stateSnapshot:aa(e.stateSnapshot)},o=["payload-size-guardrail","state-degraded"],s=yt(n);s>=a&&(n={...n,stateSnapshot:qi(n.stateSnapshot)},o=[...o,"graph-retrieval-budget-enforced"],s=yt(n));const p=yn(n,s,o,{limitBytes:a,warningThresholdBytes:r});if(s>=a){const g=n.stateSnapshot.scope?.projectionMode;throw g==="yolo-story"||g==="yoloop-target"||g==="yoloop-session"||g==="yoloop-discovery"||g==="structural-required"?new pn(p):new un(p)}return{body:n,degraded:!0,telemetry:p}}function Pr(e){const t=e.stateSnapshot.scope?.commandId??"resolved-command";return e.args!==void 0?t:`${t}:argsRef`}function Yi(e){const t=yt(e);if(t<an)return t;const a=yn(e,t,["payload-warning-threshold"]);return process.stderr.write(`[Neocortex] invoke payload near server limit: trigger=${Pr(e)} scope=${a.scope.kind} mode=${a.scope.projectionMode??a.scope.kind} payloadBytes=${a.payloadBytes} limit=${a.limitBytes} includedStories=${a.includedStories} omittedStories=${a.omittedStories} includedEpics=${a.includedEpics} omittedEpics=${a.omittedEpics} graphRetrieval.accepted=${a.graphRetrieval.accepted} graphRetrieval.itemCount=${a.graphRetrieval.itemCount} reasonCodes=${a.reasonCodes.join(",")||"none"}
13
+ `),t}function Or(e,t){process.stderr.write(`[Neocortex] invoke payload guardrail: trigger=${Pr(e)} scope.kind=${t.scope.kind} payloadBytes=${t.payloadBytes} limit=${t.limitBytes} includedStories=${t.includedStories} omittedStories=${t.omittedStories} includedEpics=${t.includedEpics} omittedEpics=${t.omittedEpics} graphRetrieval.accepted=${t.graphRetrieval.accepted} graphRetrieval.itemCount=${t.graphRetrieval.itemCount} reasonCodes=${t.reasonCodes.join(",")||"none"}
14
+ `)}async function Ji(e){const t=la(e.args,{platformTarget:e.platformTarget,environment:e.environment??process.env});if(t.action==="skipped")return{shouldContinue:!0,attachToRequest:zi(t),metadata:Nr(t)};const a=e.bootstrapper??ga;let r;try{r=await a({projectRoot:e.projectRoot,env:e.environment??process.env,effectAuthority:e.effectAuthority})}catch{r={ok:!1,attempted:!0,installed:!1,started:!1,cached:!1,projectKey:"unknown",reasonCodes:[ha.UNEXPECTED_ERROR],publicSummary:"runner scheduler bootstrap stopped unexpectedly.",publicSafe:!0}}const i=Nr(t,r);if(r.ok)return{shouldContinue:!0,attachToRequest:!0,metadata:i};const n=i.reasonCodes.slice(0,5).join(",");return t.failurePolicy==="fail-open"?{shouldContinue:!0,attachToRequest:!0,metadata:{...i,failOpenWarning:!0},warning:`Runner auto-bootstrap warning (${n}); continuing fail-open for operator command.`}:{shouldContinue:!1,attachToRequest:!1,metadata:i,errorCode:"RUNNER_BOOTSTRAP_REQUIRED_FAILED",error:`Runner auto-bootstrap required but failed (${n}). Run neocortex-runner doctor or retry after resolving scheduler setup.`,exitCode:1}}function zi(e){return!e.reasonCodes.includes(pa.SKIPPED_NON_CONTINUITY_COMMAND)}function Nr(e,t){return{schemaVersion:1,action:e.action,failurePolicy:e.failurePolicy,command:e.command,operation:e.operation,attempted:t?.attempted??!1,ok:t?.ok??!0,cached:t?.cached??!1,installed:t?.installed??!1,started:t?.started??!1,...t?.projectKey?{projectKey:t.projectKey}:{},reasonCodes:we([...e.reasonCodes,...t?.reasonCodes??[]]),publicSummary:t?.publicSummary??e.publicSummary,publicSafe:!0}}function we(e){return Array.from(new Set(e.map(t=>t.slice(0,120))))}function Yt(e,t,a){const r=Math.floor(e??t);return Number.isFinite(r)?Math.max(1,Math.min(a,r)):t}function Jt(e,t){const a=process.env[e];if(!a)return t;const r=Number(a);return Number.isFinite(r)?r:t}function W(e,t=sr){const a=typeof e=="string"&&e.trim().length>0?e.trim():"unknown",r=Ve(a,t),i=ci.test(r)?Ke:r;return i.length<=t?i:`${i.slice(0,t)}\u2026[TRUNCATED:${i.length-t}]`}function In(e,t=sr){if(!(typeof e!="string"||e.trim().length===0))return W(e,t)}function En(e,t,a,r){const i=In(e?.targetId??t,120),n=e?.selectorKind??(i?vn(i):void 0),o=(e?.relatedJobIds??[]).map(s=>In(s,120)).filter(s=>!!s);return{schemaVersion:1,contractVersion:"continuity-v1",targetResolutionState:a,...n?{targetKind:n}:{},...i?{targetId:i}:{},...t?{targetJobId:W(t,120)}:{},...e?.jobId?{jobId:W(e.jobId,120)}:{},...e?.goalId?{goalId:W(e.goalId,120)}:{},...e?.loopId?{loopId:W(e.loopId,120)}:{},...o.length>0?{relatedJobIds:o}:{},relatedJobCount:o.length,reasonCodes:we(r.length>0?r:[H.OK]),publicSafe:!0}}function Ye(e,t,a,r,i=[]){const n=(e?.redactions?.length??0)>0,o=e?n?"unsafe":a&&r===0?"empty":"available":"unavailable",s=In(t[t.length-1]?.eventId,120),p=i.length>0?i:o==="unavailable"?[H.WATCH_SNAPSHOT_UNAVAILABLE]:o==="empty"?[H.WATCH_NO_SUMMARIES_YET]:[H.OK];return{schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:o,...e?.generatedAt?{generatedAt:W(e.generatedAt,80)}:{},renderedSummaryCount:r,...s?{latestEventId:s}:{},reasonCodes:we(p),publicSafe:!0}}function He(e,t,a,r,i=[],n){const o=r[r.length-1],s=a??o?.cursor,p=!!(s&&s!==t&&r.length>0),g=n??(p?"advanced":t||s?"unchanged":"not_started"),E=i.length>0?i:g==="advanced"?[H.WATCH_CURSOR_ADVANCED]:g==="unavailable"?[H.WATCH_EVIDENCE_UNAVAILABLE]:[H.WATCH_CURSOR_UNCHANGED];return{schemaVersion:1,contractVersion:"continuity-v1",cursorState:g,...e?{initialCursor:W(e,200)}:{},...t?{currentCursor:W(t,200)}:{},...s?{nextCursor:W(s,200)}:{},cursorAdvanced:p,...o?.eventId?{eventId:W(o.eventId,120)}:{},reasonCodes:we(E),publicSafe:!0}}function We(e){const t=e.targetEvidence;return{type:"watch_status",schemaVersion:1,contractVersion:"continuity-v1",recordType:"watch_status",command:"invoke",operation:"watch",watchStatus:e.watchStatus,active:e.active,...t?.targetResolutionState?{targetResolutionState:t.targetResolutionState}:{},...t?.targetKind?{targetKind:t.targetKind}:{},...t?.targetId?{targetId:t.targetId}:{},...t?{targetEvidence:t}:{},...e.snapshotEvidence?{snapshotEvidence:e.snapshotEvidence}:{},...e.cursorEvidence?{cursorEvidence:e.cursorEvidence}:{},...e.stopReason?{stopReason:e.stopReason}:{},reasonCodes:we([...e.reasonCodes??[],...t?.reasonCodes??[],...e.snapshotEvidence?.reasonCodes??[],...e.cursorEvidence?.reasonCodes??[]]),generatedAt:W(e.generatedAt??new Date().toISOString(),80),publicSafe:!0}}function Ki(e){const t=e.targetKind&&e.targetId?`${e.targetKind}/${e.targetId}`:e.targetId??"[unresolved]",a=e.snapshotEvidence?.renderedSummaryCount??0,r=e.targetEvidence?.relatedJobCount??0,i=e.cursorEvidence?.cursorState??"unavailable",n=e.cursorEvidence?.currentCursor??"[none]",o=e.cursorEvidence?.nextCursor??"[none]",s=e.snapshotEvidence?.snapshotStatus??"not_requested",p=e.snapshotEvidence?.generatedAt??e.generatedAt;return[`[watch-status] ${e.targetResolutionState==="unresolved"||e.stopReason==="target_unresolved"?"unresolved-target":a===0&&(e.watchStatus==="waiting"||e.watchStatus==="active")?"no-new-summary":e.watchStatus==="stopped"?"stopped":"lifecycle"}`,`status=${e.watchStatus}`,`active=${e.active}`,`target=${t}`,`resolution=${e.targetResolutionState??"unavailable"}`,`relatedJobs=${r}`,`summaries=${a}`,`snapshot=${s}`,`generatedAt=${p}`,`cursor=${i}`,`current=${W(n,200)}`,`next=${W(o,200)}`,`advanced=${e.cursorEvidence?.cursorAdvanced??!1}`,`stop=${e.stopReason??"not_stopped"}`,`reasons=${e.reasonCodes.join(",")}`].join(" ")}function Ge(e,t,a,r=!1){if(r){const i={type:"watch_status",watchStatus:e.watchStatus,active:e.active,renderedSummaryCount:e.snapshotEvidence?.renderedSummaryCount??0,stopReason:e.stopReason??"not_stopped",protectedProjection:!0,publicSafe:!0};a.write(t==="json"?`${JSON.stringify(i)}
15
+ `:`[watch-status] status=${i.watchStatus} active=${i.active} summaries=${i.renderedSummaryCount} stop=${i.stopReason}
16
+ `);return}if(t==="json"){a.write(JSON.stringify(e)+`
17
+ `);return}a.write(Ki(e)+`
18
+ `)}function Xi(e,t,a){return{continuityInvokeWatch:{schemaVersion:1,contractVersion:"continuity-v1",command:"invoke",operation:"watch",watchStatus:e.watchStatus,stopReason:e.stopReason??"not_stopped",targetResolutionState:e.targetResolutionState,targetKind:e.targetKind,targetId:e.targetId,snapshotStatus:e.snapshotEvidence?.snapshotStatus,snapshotGeneratedAt:e.snapshotEvidence?.generatedAt,renderedSummaryCount:e.snapshotEvidence?.renderedSummaryCount??t,cursorState:e.cursorEvidence?.cursorState,cursorAdvanced:e.cursorEvidence?.cursorAdvanced,summariesEmitted:t,polls:a,statusRecord:e,publicSafe:!0}}}function Je(e,t,a,r,i=!1){return i?{status:e,summariesEmitted:t,polls:a,reasonCodes:[],watchStatus:r.watchStatus,stopReason:r.stopReason,metadata:{continuityInvokeWatch:{schemaVersion:1,contractVersion:"continuity-v1",command:"invoke",operation:"watch",watchStatus:r.watchStatus,stopReason:r.stopReason??"not_stopped",summariesEmitted:t,polls:a,protectedProjection:!0,publicSafe:!0}},publicSafe:!0}:{status:e,summariesEmitted:t,polls:a,reasonCodes:r.reasonCodes,watchStatus:r.watchStatus,stopReason:r.stopReason,targetEvidence:r.targetEvidence,snapshotEvidence:r.snapshotEvidence,cursorEvidence:r.cursorEvidence,statusRecord:r,metadata:Xi(r,t,a),publicSafe:!0}}function Qi(e){const t=e.reasonCode?` reason=${W(e.reasonCode,80)}`:"",a=e.goalId?` goal=${W(e.goalId,100)}`:"",r=e.loopId?` loop=${W(e.loopId,100)}`:"";return`[watch] ${W(e.createdAt,80)} event=${W(e.eventId,120)} job=${W(e.jobId,100)}${a}${r} execution=${W(e.executionId,120)}${t} -- ${W(e.publicSummary)}`}function Zi(e){return{type:"processing_summary",source:"local_continuity_sqlite",eventId:W(e.eventId,120),jobId:W(e.jobId,100),...e.goalId?{goalId:W(e.goalId,100)}:{},...e.loopId?{loopId:W(e.loopId,100)}:{},executionId:W(e.executionId,120),...e.reasonCode?{reasonCode:W(e.reasonCode,80)}:{},createdAt:W(e.createdAt,80),publicSummary:W(e.publicSummary),publicSafe:!0}}function eo(e,t,a,r=!1){if(r){a.write(t==="json"?`${JSON.stringify({type:"processing_summary",source:"local_continuity_sqlite",publicSummary:"A local processing update is available.",protectedProjection:!0,publicSafe:!0})}
17
19
  `:`[watch] A local processing update is available.
18
- `);return}if(t==="json"){r.write(JSON.stringify(Jo(e))+`
19
- `);return}r.write(Yo(e)+`
20
- `)}function wt(e){return oo.has(e.status)}function qo(e,t,r){if(t){const o=e.find(i=>i.jobId===t);return!!(o&&wt(o))}return r<=0?!1:e.filter(o=>!wt(o)).length===0}function Ko(e,t,r,n){return r<n?!1:t?!e.some(o=>o.jobId===t&&!wt(o)):e.length===0}function Xo(e,t){return t?.aborted?Promise.resolve():new Promise(r=>{const n=setTimeout(o,e);function o(){clearTimeout(n),t?.removeEventListener("abort",o),r()}t?.addEventListener("abort",o,{once:!0})})}function Zo(e){return e.includes(X.MALFORMED)?"malformed":e.includes(X.AMBIGUOUS)?"ambiguous":e.includes("watch-target-multiple")?"multiple":e.includes("watch-evidence-unsafe")?"unsafe":e.includes(X.MISSING)||e.includes(Y.TARGET_UNRESOLVED)?"unresolved":"unavailable"}function Lr(e,t){const r=t?He(t):void 0,n=re([...e,Y.TARGET_UNRESOLVED,x.WATCH_TARGET_UNRESOLVED]),o=At(r,r?.targetId,Zo(n),n),i=Ie({generatedAt:new Date().toISOString()},[],!1,0,[x.WATCH_TARGET_UNRESOLVED]),a=pe(void 0,void 0,void 0,[],[x.WATCH_TARGET_UNRESOLVED],"unavailable");return fe({watchStatus:"blocked",active:!1,targetEvidence:o,snapshotEvidence:i,cursorEvidence:a,stopReason:"target_unresolved",reasonCodes:n,generatedAt:i.generatedAt})}function Qo(e,t,r,n,o=!1){const i=Lr(e,Dr(t));return he(i,r,n,o),Ee("target-unresolved",0,0,i,o)}async function ei(e){if(e.signal?.aborted){const h=At(e.target??He(e.targetJobId),e.targetJobId,e.target??e.targetJobId?"resolved":"unresolved",[Y.CANCELLED]),R=Ie(void 0,[],!1,0),_=pe(e.initialCursor,e.initialCursor,e.initialCursor,[],[Y.CANCELLED],"unavailable"),V=fe({watchStatus:"stopped",active:!1,targetEvidence:h,snapshotEvidence:R,cursorEvidence:_,stopReason:"cancelled",reasonCodes:[Y.CANCELLED]});return Ee("cancelled",0,0,V,e.protectedOutput)}const t=e.target??He(e.targetJobId),r=e.targetJobId??t?.targetId,n=e.stdout??process.stdout;if(!t){const h=Lr([X.MISSING,Y.TARGET_UNRESOLVED]);return he(h,e.format,n,e.protectedOutput),Ee("target-unresolved",0,0,h,e.protectedOutput)}const o=it(e.limit??st("NEOCORTEX_INVOKE_WATCH_LIMIT",Wt),Wt,50),i=Math.max(50,it(e.pollIntervalMs??st("NEOCORTEX_INVOKE_WATCH_POLL_INTERVAL_MS",Gt),Gt,6e4)),a=it(e.maxIdlePolls??st("NEOCORTEX_INVOKE_WATCH_MAX_IDLE_POLLS",Ht),Ht,120),c=it(e.maxPolls??st("NEOCORTEX_INVOKE_WATCH_MAX_POLLS",Ft),Ft,86400),l=e.sleep??Xo;let p=e.initialCursor,m=0,w=0,f=0;const d=At(t,r,"resolved",[x.OK]),I={schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:"pending",renderedSummaryCount:0,reasonCodes:[x.WATCH_RENDER_PENDING],publicSafe:!0},A=pe(e.initialCursor,p,p,[],e.initialCursor?[x.WATCH_CURSOR_UNCHANGED]:[x.WATCH_NO_SUMMARIES_YET],e.initialCursor?"unchanged":"not_started");he(fe({watchStatus:"active",active:!0,targetEvidence:d,snapshotEvidence:I,cursorEvidence:A,stopReason:"not_stopped",reasonCodes:[x.OK]}),e.format,n,e.protectedOutput);let C;try{C=await gn({projectRoot:e.projectRoot,strictReadOnly:e.strictReadOnly})}catch{const h=Ie(void 0,[],!1,m,[x.WATCH_SNAPSHOT_UNAVAILABLE]),R=pe(e.initialCursor,p,p,[],[x.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),_=fe({watchStatus:"blocked",active:!1,targetEvidence:d,snapshotEvidence:h,cursorEvidence:R,stopReason:"unavailable_evidence",reasonCodes:[Y.STORE_UNAVAILABLE]});return he(_,e.format,n,e.protectedOutput),Ee("store-unavailable",m,f,_,e.protectedOutput)}try{for(;!e.signal?.aborted&&f<c;){f+=1;const h=p,R=C.collectProcessingOutputSummaryCursor({...p?{cursor:p}:{},...t?{target:t}:{},...r?{jobId:r}:{},limit:o}),_=C.collectSnapshot({jobLimit:50,processingSummaryLimit:1}),V=_.jobs;if(R.summaries.length>0){for(const $ of R.summaries)zo($,e.format,n,e.protectedOutput),m+=1;p=R.nextCursor??R.summaries[R.summaries.length-1]?.cursor??p,w=0}else p=R.nextCursor??p,w+=1;const N=Ie(_,R.summaries,!0,R.summaries.length),P=pe(e.initialCursor,h,p,R.summaries,R.summaries.length>0?[x.WATCH_CURSOR_ADVANCED]:[x.WATCH_NO_SUMMARIES_YET]);if(he(fe({watchStatus:R.summaries.length>0?"polling":"waiting",active:!0,targetEvidence:d,snapshotEvidence:N,cursorEvidence:P,stopReason:"not_stopped",reasonCodes:R.summaries.length>0?[x.WATCH_CURSOR_ADVANCED]:[x.WATCH_NO_SUMMARIES_YET],generatedAt:_.generatedAt}),e.format,n,e.protectedOutput),!R.hasMore&&qo(V,r,m)){const $=Ie(_,R.summaries,!1,m,[Y.COMPLETED]),D=pe(e.initialCursor,h,p,R.summaries,[Y.COMPLETED],"exhausted"),O=fe({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:$,cursorEvidence:D,stopReason:"not_stopped",reasonCodes:[Y.COMPLETED],generatedAt:_.generatedAt});return he(O,e.format,n,e.protectedOutput),Ee("completed",m,f,O,e.protectedOutput)}if(!R.hasMore&&Ko(V,r,w,a)){const $=Ie(_,R.summaries,!1,m,[x.WATCH_STOP_IDLE_LIMIT_REACHED]),D=pe(e.initialCursor,h,p,R.summaries,[x.WATCH_STOP_IDLE_LIMIT_REACHED],"exhausted"),O=fe({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:$,cursorEvidence:D,stopReason:"idle_limit_reached",reasonCodes:[Y.IDLE_TIMEOUT,x.WATCH_STOP_IDLE_LIMIT_REACHED],generatedAt:_.generatedAt});return he(O,e.format,n,e.protectedOutput),Ee("idle-timeout",m,f,O,e.protectedOutput)}R.hasMore||await l(i,e.signal)}}catch{const h=Ie(void 0,[],!1,m,[x.WATCH_SNAPSHOT_UNAVAILABLE]),R=pe(e.initialCursor,p,p,[],[x.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),_=fe({watchStatus:"blocked",active:!1,targetEvidence:d,snapshotEvidence:h,cursorEvidence:R,stopReason:"unavailable_evidence",reasonCodes:[Y.STORE_UNAVAILABLE]});return he(_,e.format,n,e.protectedOutput),Ee("store-unavailable",m,f,_,e.protectedOutput)}finally{C.close()}if(e.signal?.aborted){const h=Ie(void 0,[],!1,m,[Y.CANCELLED]),R=pe(e.initialCursor,p,p,[],[Y.CANCELLED],"unavailable"),_=fe({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:h,cursorEvidence:R,stopReason:"cancelled",reasonCodes:[Y.CANCELLED]});return he(_,e.format,n,e.protectedOutput),Ee("cancelled",m,f,_,e.protectedOutput)}const j=Ie(void 0,[],!1,m,[x.WATCH_STOP_MAX_POLLS_REACHED]),v=pe(e.initialCursor,p,p,[],[x.WATCH_STOP_MAX_POLLS_REACHED],"exhausted"),U=fe({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:j,cursorEvidence:v,stopReason:"max_polls_reached",reasonCodes:[Y.MAX_POLLS,x.WATCH_STOP_MAX_POLLS_REACHED]});return he(U,e.format,n,e.protectedOutput),Ee("max-polls",m,f,U,e.protectedOutput)}function ue(e){const t=e.trim().replace(/^@/,"").match(/^(job|goal|loop)-([JGL])(\d{3,})$/i);if(!t)return;const r=t[1].toLowerCase(),n=t[2].toUpperCase();if(!(r==="job"&&n!=="J"||r==="goal"&&n!=="G"||r==="loop"&&n!=="L"))return`${r}-${n}${t[3]}`}function Rt(e){if(e.startsWith("job-J"))return"job";if(e.startsWith("goal-G"))return"goal";if(e.startsWith("loop-L"))return"loop"}function Pr(e){const t=[],r=/(?:^|[\s"'([,{])@?(job-[Jj]\d{3,}|goal-[Gg]\d{3,}|loop-[Ll]\d{3,})(?=$|[\s"')\]},.;:!?])/g;let n;for(;(n=r.exec(e))!==null;){const o=ue(n[1]);o&&t.push(o)}return re(t)}function Dr(e){return Pr(e)[0]}function He(e){const t=e?ue(e):void 0;if(t){if(t.startsWith("job-J"))return{selectorKind:"job",targetId:t,jobId:t,publicSafe:!0};if(t.startsWith("goal-G"))return{selectorKind:"goal",targetId:t,goalId:t,publicSafe:!0};if(t.startsWith("loop-L"))return{selectorKind:"loop",targetId:t,loopId:t,publicSafe:!0}}}function vt(e){return re(e.filter(t=>typeof t=="string").map(t=>ue(t)).filter(t=>!!t?.startsWith("job-J")))}function ti(e,t){const r=vt(t).filter(n=>n!==e.targetId&&n!==e.jobId);return r.length>0?{...e,relatedJobIds:r}:e}function ri(e){if(!e)return;const t=y(e.target)?e.target:void 0,r=typeof e.selectorKind=="string"?e.selectorKind:typeof t?.selectorKind=="string"?t.selectorKind:void 0,n=typeof e.targetId=="string"?ue(e.targetId):typeof t?.targetId=="string"?ue(t.targetId):typeof e.targetJobId=="string"?ue(e.targetJobId):void 0,o=He(n);if(!o||r&&r!==o.selectorKind)return;const i=Array.isArray(e.relatedJobIds)?e.relatedJobIds:Array.isArray(t?.relatedJobIds)?t.relatedJobIds:void 0,a=vt([...i??[],e.jobId,t?.jobId,e.targetJobId,t?.targetJobId]).filter(c=>c!==o.targetId&&c!==o.jobId);return{...o,...typeof(e.jobId??t?.jobId)=="string"?{jobId:ue(e.jobId??t?.jobId)??o.jobId}:{},...typeof(e.goalId??t?.goalId)=="string"?{goalId:ue(e.goalId??t?.goalId)??o.goalId}:{},...typeof(e.loopId??t?.loopId)=="string"?{loopId:ue(e.loopId??t?.loopId)??o.loopId}:{},...a.length>0?{relatedJobIds:a}:{}}}function jr(e){const t=e.trim().split(/\s+/).filter(Boolean),r=t[0]?.replace(/^\*/,"").toLowerCase(),n=t[1]?.replace(/^--/,"").toLowerCase();return(r==="jobs"||r==="job"||r==="continuity-jobs"||r==="61")&&n==="watch"}const K=Object.freeze({ACTIVE:"command-level-watch-active",INACTIVE:"command-level-watch-inactive",DUPLICATE:"command-level-watch-duplicate",AMBIGUOUS:"command-level-watch-ambiguous",QUOTED:"command-level-watch-quoted",MALFORMED:"command-level-watch-malformed",NON_FINAL:"command-level-watch-non-final",UNRESOLVED:"command-level-watch-unresolved",UNSUPPORTED:"command-level-watch-unsupported",TARGET_INVALID:"command-level-watch-target-invalid"}),ni=new Set(["create","start","resume"]),oi=new Set(["create","resume","run-once"]);function bt(e,t,r,n,o){return{schemaVersion:1,contractVersion:"continuity-v1",...r?{command:r}:{},...n?{operation:n}:{},active:e,...o?{watchToken:o}:{},reasonCodes:re(t),serverHeldStream:!1,allJobsPolling:!1,targetResolution:e?"required-after-dispatch":"inactive",publicSafe:!0}}function Z(e,t=[],r,n){const o=t.length>0?t:[K.INACTIVE];return{args:e,watch:!1,reasonCodes:o,metadata:bt(!1,o,r,n),publicSafe:!0}}function ii(e){const t=e.trim().split(/\s+/).filter(Boolean),r=t.slice(2).filter(i=>i==="--watch").length;if(r===0)return Z(e,[],"jobs","watch");if(r!==1)return Z(e,[K.AMBIGUOUS],"jobs","watch");const n=t.filter((i,a)=>a<2||i!=="--watch").join(" ");return jr(n)?n.trim().split(/\s+/).filter(Boolean).slice(2).length!==1?Z(e,[K.AMBIGUOUS],"jobs","watch"):Dr(n)?{args:n,watch:!0,reasonCodes:[K.ACTIVE],metadata:bt(!0,[K.ACTIVE],"jobs","watch"),publicSafe:!0}:Z(e,[K.TARGET_INVALID],"jobs","watch"):Z(e,[K.UNSUPPORTED],"jobs","watch")}function si(e){const t=[];let r=!1,n=0;for(;n<e.length;){for(;n<e.length&&/\s/.test(e[n]);)n+=1;if(n>=e.length)break;const o=n;let i="",a=!1,c=null;for(;n<e.length;){const l=e[n];if(c){if(l===c){a=!0,c=null,n+=1;continue}if(l==="\\"&&n+1<e.length){i+=e[n+1],n+=2;continue}i+=l,n+=1;continue}if(/\s/.test(l))break;if(l==='"'||l==="'"){a=!0,c=l,n+=1;continue}i+=l,n+=1}c&&(r=!0),t.push({value:i,start:o,end:n,quoted:a})}return{tokens:t,malformed:r}}function ai(e){if(!e||e.quoted)return;const t=e.value.replace(/^\*/,"").toLowerCase();return t==="goal"||t==="loop"?t:void 0}function ci(e,t){if(!e||e==="jobs"||!t||t.quoted)return;const r=t.value.toLowerCase();return(e==="goal"?ni:oi).has(r)?r:void 0}function di(e){return!e.quoted&&e.value!=="--watch"&&e.value.toLowerCase().startsWith("--watch")}function ui(e){const{tokens:t,malformed:r}=si(e),n=ai(t[0]),o=ci(n,t[1]);if(r)return Z(e,[K.MALFORMED],n,o);const i=t.filter(f=>f.value==="--watch"&&!f.quoted),a=t.filter(f=>f.value==="--watch"&&f.quoted),c=t.filter(di);if(!(i.length>0||a.length>0||c.length>0))return Z(e,[],n,o);if(i.length>1)return Z(e,[K.DUPLICATE],n,o);if(i.length===1&&(a.length>0||c.length>0))return Z(e,[K.AMBIGUOUS],n,o);if(a.length>0)return Z(e,[K.QUOTED],n,o);if(c.length>0)return Z(e,[K.MALFORMED],n,o);const p=i[0];if(!p)return Z(e,[],n,o);if(t[t.length-1]!==p)return Z(e,[K.NON_FINAL],n,o);if(!n||!o)return Z(e,[K.UNRESOLVED],n,o);const m=`${e.slice(0,p.start)}${e.slice(p.end)}`.trim(),w={literal:"--watch",position:"final",start:p.start,end:p.end,quoted:!1,publicSafe:!0};return{args:m,watch:!0,reasonCodes:[K.ACTIVE],metadata:bt(!0,[K.ACTIVE],n,o,w),publicSafe:!0}}function li(e){return jr(e)?ii(e):ui(e)}function pi(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&io.has(t)):[]}function Be(e){return{disabled:!0,reasonCodes:re(e.length>0?e:[X.MISSING])}}function Tt(e,t,r=[],n){const o=He(t);if(o)return{source:e,target:ti(o,r),targetJobId:o.targetId,...n?{initialCursor:n}:{},serverHeldStream:!1}}function fi(e){const t=new Map;for(const r of e){const n=`${r.target.selectorKind}:${r.target.targetId}`,o=t.get(n);if(!o){t.set(n,r);continue}const i=re([...o.target.relatedJobIds??[],...r.target.relatedJobIds??[]]);t.set(n,{...o,target:i.length>0?{...o.target,relatedJobIds:i}:o.target,initialCursor:o.initialCursor??r.initialCursor})}return Array.from(t.values())}function Re(e,t,r,n){return{source:e,hasEvidence:t,candidates:fi(r.filter(o=>!!o)),...n&&n.length>0?{disabledReasonCodes:re(n)}:{}}}function hi(e,t){return e.target.selectorKind===t.target.selectorKind&&e.target.targetId===t.target.targetId}function Fe(e,t){const r=re(e.filter(n=>typeof n=="string").map(n=>ue(n)).filter(n=>!!n));if(t){const n=r.find(o=>Rt(o)===t);if(n)return n}return r[0]}function at(e,t){return re(e.filter(r=>typeof r=="string").map(r=>ue(r)).filter(r=>!!r)).find(r=>Rt(r)===t)}function gi(e){const t=y(e?.continuity)?e.continuity:void 0,r=y(t?.jobs)?t.jobs:void 0,n=y(r?.watcher)?r.watcher:void 0,o=pi(n?.reasonCodes??r?.reasonCodes);if(!n)return Re("watcher-metadata",o.length>0,[],o);if(n.active===!1||o.length>0)return Re("watcher-metadata",!0,[],o.length>0?o:[X.MALFORMED]);if(n.serverHeldStream!==!1)return Re("watcher-metadata",!0,[],[X.SERVER_HELD_STREAM]);const i=ri(n);if(!i)return Re("watcher-metadata",!0,[],[X.MISSING]);const a=typeof n.initialCursor=="string"?n.initialCursor:void 0;return Re("watcher-metadata",!0,[{source:"watcher-metadata",target:i,targetJobId:i.targetId,...a?{initialCursor:a}:{},serverHeldStream:!1}])}function Mr(e,t){const r=y(e.loopJobPlan)?e.loopJobPlan:void 0,n=y(r?.metadata)?r.metadata:void 0,o=y(e.metadata)?e.metadata:void 0,a=(t==="goal"?Fe([e.goalId,e.targetGoalId,e.campaignId,e.jobId,e.targetJobId,o?.goalId,o?.campaignId,o?.jobId],"goal"):Fe([e.loopId,e.targetLoopId,e.jobId,e.targetJobId,o?.loopId,o?.jobId,n?.loopId,n?.jobId],"loop"))??Fe([e.jobId,e.targetJobId,o?.jobId,n?.jobId]);return Tt("goal-loop-continuity-metadata",a,[e.jobId,e.targetJobId,o?.jobId,n?.jobId])}function mi(e){const t=y(e?.continuity)?e.continuity:void 0,r=y(t?.goal)?t.goal:void 0,n=y(t?.loop)?t.loop:void 0,o=[r?Mr(r,"goal"):void 0,n?Mr(n,"loop"):void 0],i=!!(r||n);return Re("goal-loop-continuity-metadata",i,o,i&&o.every(a=>!a)?[X.MISSING]:void 0)}function yi(e){return Array.isArray(e)?e.filter(y):y(e)?Array.isArray(e.operationLogs)?e.operationLogs.filter(y):y(e.operationLog)?[e.operationLog]:Array.isArray(e.operations)?[e]:[]:[]}function Ur(e,t){const r=y(t.metadata)?t.metadata:void 0,n=at([t.goalId,t.targetGoalId,t.campaignId,r?.goalId,r?.campaignId,t.jobId,r?.jobId],"goal"),o=at([t.loopId,t.targetLoopId,r?.loopId,t.jobId,r?.jobId],"loop"),i=Fe([t.jobId,t.targetJobId,r?.jobId],"job"),a=n??o??i;if(!a)return;const c=e.get(a)??{targetId:a,relatedJobIds:[]};c.relatedJobIds.push(...vt([i,t.jobId,t.targetJobId,r?.jobId])),e.set(a,c)}function Ii(e){const t=y(e.metadata)?e.metadata:void 0;return!!(at([e.goalId,e.targetGoalId,e.campaignId,t?.goalId,t?.campaignId,e.jobId,t?.jobId],"goal")??at([e.loopId,e.targetLoopId,t?.loopId,e.jobId,t?.jobId],"loop"))}function Ei(e){const t=y(e.metadata)?e.metadata:void 0;return!!Fe([e.goalId,e.targetGoalId,e.campaignId,e.loopId,e.targetLoopId,e.jobId,e.targetJobId,t?.goalId,t?.campaignId,t?.loopId,t?.jobId])}function Vr(e,t){const r=[];for(const a of["metadata","job","event","receipt","processingOutputSummary"]){const c=t[a];y(c)&&r.push(c)}const n=y(t.event)?t.event:void 0;y(n?.metadata)&&r.push(n.metadata),y(n?.processingOutputSummary)&&r.push(n.processingOutputSummary);const o=y(t.receipt)?t.receipt:void 0;y(o?.metadata)&&r.push(o.metadata);const i=r.some(Ei);for(const a of r)Ur(e,a);(!i||Ii(t))&&Ur(e,t)}function _i(e){const t=yi(e?.continuityStateUpdate),r=new Map;for(const o of t){Vr(r,o);const i=Array.isArray(o.operations)?o.operations.filter(y):[];for(const a of i)Vr(r,a)}const n=Array.from(r.values()).map(o=>Tt("continuity-state-update-operation-log",o.targetId,o.relatedJobIds));return Re("continuity-state-update-operation-log",t.length>0,n,t.length>0&&n.every(o=>!o)?[X.MISSING]:void 0)}function Ci(e){const t=Pr(e);return Re("explicit-args",t.length>0,t.map(r=>Tt("explicit-args",r)))}function Si(e,t){const r=[gi(e),mi(e),_i(e),Ci(t)];for(let n=0;n<r.length;n+=1){const o=r[n];if(!o.hasEvidence)continue;if(o.disabledReasonCodes&&o.disabledReasonCodes.length>0)return Be(o.disabledReasonCodes);if(o.candidates.length!==1)return Be([o.candidates.length>1?X.AMBIGUOUS:X.MISSING]);const i=o.candidates[0];for(const a of r.slice(n+1)){if(!a.hasEvidence)continue;if(a.disabledReasonCodes&&a.disabledReasonCodes.length>0)return Be(a.disabledReasonCodes);if(a.candidates.length>1)return Be([X.AMBIGUOUS]);const c=a.candidates[0];if(c&&!hi(i,c))return Be([X.CONFLICT])}return{target:i.target,targetJobId:i.targetJobId,...i.initialCursor?{initialCursor:i.initialCursor}:{},source:i.source,serverHeldStream:!1}}return Be([X.MISSING])}async function Br(e,t,r,n={}){const i=await We(e,"/api/v1/invoke",t,r,t.privateExecution?{...n,maxAttempts:1,allowReplayRetry:!1}:n);if(i.networkFailure||!i.response)return{ok:!1,status:0,error:"Network error after bounded retries"};const{response:a,text:c,parsed:l}=i;try{if(!a.ok)return t.privateExecution?{ok:!1,status:a.status,error:"private-execution-invoke-unavailable"}:{ok:!1,status:a.status,error:Object.keys(l).length>0?`${l.error_code??"ERROR"}: ${l.message??c}`:`HTTP ${a.status}: ${c}`,errorBody:Object.keys(l).length>0?l:void 0};const p=l,m=a.headers.get("X-Client-Version-Warning");return m&&!wr&&(wr=!0,process.stderr.write(`
21
- [Neocortex] ${m}
22
-
23
- `)),{ok:!0,status:a.status,data:p}}catch(p){return{ok:!1,status:0,error:(p instanceof Error?p.message:String(p)).includes("abort")?`Request timeout after ${er/1e3}s`:"Network error: invalid response"}}}async function Ai(e,t,r){const n=await We(e,"/api/v1/invoke/private-execution/consume",t,r,{maxAttempts:1,allowReplayRetry:!1});if(n.networkFailure||!n.response||!n.response.ok)throw new Error("private-execution-delivery-unavailable");return n.parsed}async function Is(e,t,r){const n=await We(e,"/api/v1/invoke/private-execution/cancel",t,r,{maxAttempts:1,allowReplayRetry:!1});return!!n.response?.ok&&n.parsed.status==="cancelled"}async function wi(e,t,r,n={}){const o=await We(e,"/api/v1/invoke/epic-claims/acknowledge",{...r,registryVersion:xe,registryChecksum:Oe},t,n);return!!o.response?.ok&&o.parsed.status==="ok"&&o.parsed.claimOutcome===r.status}async function Ri(e,t,r,n,o,i={}){if(!o)return 0;const a=Qe(e);let c=0;for(const[l,p]of Object.entries(a.operations))!p.claimId||!p.epicId||!t.epics?.[p.epicId]||!await wi(r,n,{claimId:p.claimId,projectId:o,epicId:p.epicId,status:"materialized"},i)||(to(e,l),c+=1);return c}function vi(e,t){const r=t.state.pendingContinuationAuthorities,n=t.state.continuationSession;if(t.state.continuationPolicy!=="p205-finite-resume-v2"||r?.length!==1||!n)return;const o=r[0],i=o.certificate,a=i?.expectedTransition;if(o.storyIds!=="[CIRCULAR]"||i?.rank!=="[CIRCULAR]"||a?.selectedStoryIds!=="[CIRCULAR]")return;const c=typeof n.epicId=="string"?n.epicId:"",l=e.epics[c],p=Array.isArray(a.storyLifecycle)?a.storyLifecycle:[],m=p.length===1&&typeof p[0]?.storyId=="string"?p[0].storyId:"",f=e.stories[m]?.checkpoint;if(!l||l.branch_mode!=="epic"||typeof l.execution_branch!="string"||typeof l.origin_branch!="string"||l.branch_lease!==void 0&&l.branch_lease!==null||!f||f.qaVerdict!=="passed"||f.reviewVerdict!=="approved"||!Array.isArray(f.receiptRefs))return;const I=(Array.isArray(l.stories)?l.stories.filter(A=>typeof A=="string"):[]).find(A=>{const C=e.stories[A];return!C||["done","completed","merged"].includes(String(C.status))?!1:(Array.isArray(C.depends_on)?C.depends_on.filter(v=>typeof v=="string"):[]).every(v=>["done","completed","merged"].includes(String(e.stories[v]?.status)))});if(I)return{epicId:c,expectedNextStoryId:I,branchMode:"epic",executionBranch:l.execution_branch,originBranch:l.origin_branch,branchLeaseReleased:!0,checkpoint:{schemaVersion:1,storyId:f.storyId,epicId:f.epicId,branch:f.branch,baseSha:f.baseSha,headSha:f.headSha,receiptRefs:[...f.receiptRefs],qaVerdict:"passed",reviewVerdict:"approved"}}}async function bi(e){let t;try{if(t=e.inputEnvelope??qe(e.inputSource??"args",e.args),Tn(t),t.rawArgs!==e.args)throw new Error("INVOKE_INPUT_ENVELOPE_ARGUMENT_CONFLICT")}catch{return{success:!1,error:"INVOCATION_MALFORMED_INPUT: explicit input integrity could not be verified.",errorCode:"INVOCATION_MALFORMED_INPUT",metadata:{invocationInput:{reason:"input-integrity-conflict",remediation:"Retry with exactly one of --args, --stdin or --args-file.",publicSafe:!0}},exitCode:1}}const r=t.rawArgs,n=qt(t);let o=r,i=n;const a=no(r);if(a.outcome!=="resolved"){const s=xn(a,"client"),u=a.outcome==="malformed_input"?a.reason==="input_limit"||a.reason==="token_limit"||a.reason==="token_size_limit"?"input-limit-exceeded":a.reason==="invalid_control"||a.reason==="invalid_surrogate"?"invalid-control-character":a.reason==="unterminated_quote"||a.reason==="trailing_escape"||a.reason==="unsupported_escape"?"unterminated-quote":void 0:void 0,g=u?{code:"INVOCATION_MALFORMED_INPUT",reason:u,source:t.source,byteLength:t.byteLength,remediation:u==="input-limit-exceeded"?"Reduce the explicit command input or split the requested work into bounded invocations.":u==="invalid-control-character"?"Remove invalid control characters and retry with valid UTF-8 text.":"Close quotes and escapes, or use --stdin/--args-file for multiline content."}:void 0;return{success:!1,error:`INVOCATION_${a.outcome.toUpperCase()}`,errorCode:`INVOCATION_${a.outcome.toUpperCase()}`,metadata:{invocationAdmission:s,...g?{invocationInput:g}:{}},exitCode:1}}const c=gt(e.projectRoot),l=a.selection.commandId,p=tn.find(s=>s.id===l),m=p?.subcommands.find(s=>s.id===a.selection.operationId),w=m?m.policy.strictReadOnly==="allow":p?.policy.strictReadOnly==="allow",f=l==="diagnose";let d;try{d=Rn({invocationId:dt(),intent:e.strictReadOnly||f?{schemaVersion:1,policy:Sn,registryVersion:xe,registryChecksum:Oe}:void 0,registryVersion:xe,registryChecksum:Oe,registryAllowsStrict:w,requestCanonicalBytes:JSON.stringify({command:l})})}catch(s){if(s instanceof Me)return{success:!1,error:s.code,errorCode:s.code,exitCode:1};throw s}{d.beginProjection();for(const s of zt)d.project(s);for(const s of An)d.project(s);d.seal()}const I=d.mode==="strict";if(l==="create-epic")try{const s=jn(c);if(s&&s!=="finalized")return{success:!1,error:'PROJECT_IDENTITY_MIGRATION_INCOMPLETE: retry `neocortex-client invoke --args "*migrate-project-id"` before create-epic.',errorCode:"PROJECT_IDENTITY_MIGRATION_INCOMPLETE",metadata:{projectIdentityMigration:{phase:s,publicSafe:!0}},exitCode:1}}catch(s){const u=s instanceof lt?s.code:"PROJECT_IDENTITY_MIGRATION_STATE_CORRUPT";return{success:!1,error:u,errorCode:u,exitCode:1}}const A=e.environment??process.env;if(e.privateExecutionBeta&&(l!=="yolo"&&l!=="research"&&l!=="write-spec"&&l!=="exec"&&l!=="create-epic"||I||e.platformTarget!==void 0&&e.platformTarget!=="codex"))return{success:!1,error:"PRIVATE_EXECUTION_BETA_UNSUPPORTED",errorCode:"PRIVATE_EXECUTION_BETA_UNSUPPORTED",exitCode:1};const C=En({cwd:c,env:A,targetFlag:e.privateExecutionBeta?"codex":e.platformTarget}),j=C.targetId,v=e.privateExecutionBeta?void 0:In({cwd:c,env:A,targetFlag:e.platformTarget,nativeHostVersion:po(C,A)},C);l!=="migrate-project-id"&&d.execute({phase:"client-preflight",domain:"client-persistence",category:"first-run-marker",operation:"create"},()=>ro(),()=>{});const U=To(d),h=(e.serverUrl??U?.serverUrl??rn).replace(/\/+$/,"");if(l==="migrate-project-id"){const s=await Mn(h);if(!s.supported)return{success:!1,error:"PROJECT_IDENTITY_MIGRATION_CAPABILITY_UNAVAILABLE: the server did not advertise the versioned migration capability; no local state was changed.",errorCode:"PROJECT_IDENTITY_MIGRATION_CAPABILITY_UNAVAILABLE",metadata:{projectIdentityMigrationCapability:s},exitCode:1};const u=[];let g;try{g=Dn(c)}catch(b){const ee=b instanceof lt?b.code:"PROJECT_IDENTITY_MIGRATION_PREPARE_FAILED";return{success:!1,error:ee,errorCode:ee,exitCode:1}}u.push(Ue({phase:"prepare",outcome:g.changed&&g.document.phase==="prepared"?"prepared":"retry",floor:g.document.legacyEpicFloor,licenseId:"local-client",projectId:g.document.projectId}));const T=Cr(c);if(T.config.project_id!==g.document.projectId)return{success:!1,error:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",errorCode:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",metadata:{invocationDiagnostics:u},exitCode:1};const G=await Ar(h,U?.licenseKey,d);if(G.status!=="authenticated"){const b=G.status==="refresh-required";return{success:!1,error:b?"Authentication refresh required. Run: neocortex activate YOUR-LICENSE-KEY":"Not authenticated. Visit https://neocortex.sh/portal/login to get your license key, then run: neocortex activate YOUR-LICENSE-KEY",errorCode:b?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",metadata:{invocationDiagnostics:u},exitCode:b?1:2}}let ae;try{ae=Bt(e.args.trim(),T)}catch(b){const ee=b instanceof $t?b.code:"PROJECT_IDENTITY_MIGRATION_PROJECTION_FAILED";return{success:!1,error:ee,errorCode:ee,metadata:{invocationDiagnostics:u},exitCode:1}}let le={args:r,projectRoot:c.replace(De(),"~"),stateSnapshot:ae,platformTarget:j,...v?{nativeHostAttestation:v}:{},projectId:g.document.projectId,projectIdentityMigration:g.request,inputEvidence:n,idempotencyKey:g.document.operationId,registryVersion:xe,registryChecksum:Oe};try{le=Or(le).body}catch(b){if(b instanceof It||b instanceof Et)return{success:!1,error:b.message,errorCode:b.code,metadata:{invokePayload:b.telemetry,invocationDiagnostics:u},exitCode:1};throw b}const z=await Jt("invoke-query",()=>Br(h,le,G.token,{refreshToken:()=>G.client.forceRefresh()}));if(!z.ok||!z.data)return u.push(Ue({phase:"seed",outcome:"rejected",floor:g.document.legacyEpicFloor,licenseId:"local-client",projectId:g.document.projectId})),{success:!1,error:de(z.error??"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",ke),errorCode:typeof z.errorBody?.error_code=="string"?z.errorBody.error_code:"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",metadata:{invocationDiagnostics:u},exitCode:z.status===401?2:1};const Q=z.data.metadata?.projectIdentityMigration;try{On(Q),u.push(Ue({phase:"seed",outcome:Q.status,floor:Q.acceptedLegacyFloor,licenseId:"local-client",projectId:Q.projectId})),Ln(c,Q),u.push(Ue({phase:"remote-acknowledged",outcome:Q.status,floor:Q.acceptedLegacyFloor,licenseId:"local-client",projectId:Q.projectId})),Pn(c,Q),u.push(Ue({phase:"finalize",outcome:"finalized",floor:Q.acceptedLegacyFloor,licenseId:"local-client",projectId:Q.projectId}))}catch(b){u.push(Ue({phase:"reconcile",outcome:"rejected",floor:g.document.legacyEpicFloor,licenseId:"local-client",projectId:g.document.projectId}));const ee=b instanceof lt?b.code:b instanceof Error?b.message:"PROJECT_IDENTITY_MIGRATION_RECEIPT_INVALID";return{success:!1,error:ee,errorCode:ee,metadata:{invocationDiagnostics:u},exitCode:1}}return d.complete(),{success:!0,instructions:z.data.instructions,metadata:{...z.data.metadata,invocationDiagnostics:u},exitCode:0}}try{const{normalizeYoloopTargetArgs:s}=await import("../yoloop/target-normalization.js"),u=s(e.args,{projectRoot:c});if(!u.ok)return process.stderr.write(`${u.message} reason=${u.reasonCode}
24
- `),{success:!1,error:u.message,exitCode:1};u.changed&&(e={...e,args:u.args},process.stderr.write(`[Neocortex] yoloop target normalized: ${u.reasonCodes.join(",")}
25
- `))}catch{const s="INVALID_YOLOOP_TARGET: yoloop target normalization was unavailable; no request was sent.";return process.stderr.write(`${s}
26
- `),{success:!1,error:s,exitCode:1}}const R=Er(l);if(R)try{_r(c,{allowMissingRuntime:!0}).runtimeMissing&&(await d.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},async()=>Bn(c),async()=>{}),_r(c))}catch(s){const u=s instanceof we?s.reasonCode:"git-lifecycle-state-corrupt";return process.stderr.write(`[Neocortex] ${u}. No request was sent; repair the canonical project state and retry.
27
- `),{success:!1,error:u,errorCode:"GIT_LIFECYCLE_STATE_INVALID",exitCode:1}}try{d.execute({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},()=>dn(c,{args:e.args,canonicalCommandId:l}),()=>{})}catch(s){if(s instanceof un)return process.stderr.write(`${s.message}
28
- `),{success:!1,error:s.message,exitCode:1};const u=s instanceof Error?s.message:String(s);return process.stderr.write(`[Neocortex] state.json repair stopped unexpectedly: ${u}. No request was sent; inspect .neocortex/state.json and rerun.
29
- `),{success:!1,error:u,exitCode:1}}let _;try{const s=await wo(c,e.args,l);_=Cr(c,{epicAware:R,p205Authorities:s})}catch(s){const u=s instanceof we?s.reasonCode:"git-lifecycle-state-corrupt";return process.stderr.write(`[Neocortex] ${u}. No request was sent; repair the canonical project state/runtime sidecar and retry.
30
- `),{success:!1,error:u,errorCode:"GIT_LIFECYCLE_STATE_INVALID",exitCode:1}}try{const{maybeAutoResolveYoloopArgs:s}=await import("../yoloop/invoke-hooks.js"),u={args:e.args,projectRoot:c,logger:{info:g=>process.stderr.write(`${g}
31
- `),warn:g=>process.stderr.write(`${g}
32
- `)}};s(u),u.args!==e.args&&(e={...e,args:u.args},o=u.args,i=qt(qe(t.source,o)))}catch(s){const u=s instanceof Error?s.message:String(s);process.stderr.write(`[Neocortex] Auto-resolve hook (P121.05) failed: ${u}. Proceeding with raw args.
33
- `)}try{const{readYoloopForRequest:s}=await import("../yoloop/invoke-hooks.js"),u=await s(e.args,c);if(u){const g=vi(_,u);_.yoloop=g?{...u,continuationRecoveryEvidence:g}:u}}catch(s){if(/^\s*\*?(?:yoloop|auto-yolo|epic-runner|story-runner|loop-yolo|auto-epic)\b/i.test(e.args)){const g=s instanceof Error?s.message.match(/\bYOLOOP_[A-Z0-9_]+\b/)?.[0]??"YOLOOP_STATE_READ_FAILED":"YOLOOP_STATE_READ_FAILED";return process.stderr.write(`[Neocortex] ${g}. No yoloop request was sent and no state was mutated.
34
- `),{success:!1,error:g,errorCode:g,exitCode:1}}}try{const{readContinuityForRequest:s}=await import("../continuity/invoke-hooks.js"),u=await s(e.args,c,void 0,d,{includeExistingStore:!f});u&&(_.continuity=u)}catch(s){if(s instanceof Me)return{success:!1,error:s.code,errorCode:s.code,exitCode:1};const u=s instanceof Error?s.message:String(s);process.stderr.write(`[Neocortex] continuity snapshot hook failed: ${u}. Proceeding without continuity state.
35
- `)}try{const{maybeRunDiscoveryHook:s}=await import("../yoloop/invoke-hooks.js");await s({args:e.args,projectRoot:c,stateSnapshot:_,featureFlag:process.env.YOLOOP_AUTO_DISCOVERY!=="off",logger:{warn:u=>{console.warn(u)},info:u=>{console.error(u)}}})}catch(s){const u=s instanceof Error?s.message:String(s);process.stderr.write(`[Neocortex] discovery hook failed: ${u}. Proceeding without enrichment.
36
- `)}try{const{readArchitecturePolicy:s}=await import("../policy/architecture-policy.js"),u=await s(c);u&&(_.architecture_policy=u)}catch(s){const u=s instanceof Error?s.message:String(s);console.warn(`[Neocortex] architecture-policy hook failed: ${u}. Proceeding without policy.`)}try{const s=/^(1|true|on|yes)$/i.test(process.env.NEOCORTEX_GRAPH_RETRIEVAL??""),{maybeRunGraphRetrievalHook:u}=await import("../yoloop/invoke-hooks.js"),g=await u({args:e.args,projectRoot:c,featureFlag:s,logger:{warn:T=>process.stderr.write(`${T}
37
- `)}});g.applied&&g.metadata&&(_.graphRetrieval=g.metadata)}catch(s){const u=s instanceof Error?s.message:String(s);process.stderr.write(`[Neocortex] graph retrieval hook failed: ${u}. Proceeding without enrichment.
38
- `)}try{if(co(e.args)){const{collectProjectEvidence:s}=await import("../evidence/collector.js"),u=a.selection.uiUxReview?.architectureDir,g=s({projectRoot:c,...u?{candidatePaths:[u],includeFallbackInventory:!0}:{}});(g.evidence.length>0||g.exclusions.length>0)&&(_.projectEvidence=g)}}catch(s){const u=s instanceof Error?s.message:String(s);process.stderr.write(`[Neocortex] project evidence collection failed: ${u}. Proceeding without local project evidence.
39
- `)}try{const s=await d.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"checkpoint-consume",operation:"consume"},async()=>{const{readAndConsumeCheckpoint:u}=await import("../checkpoint/index.js");return u(c)},async()=>{});s&&(_.implementCheckpoint=s)}catch(s){const u=s instanceof Error?s.message:String(s);process.stderr.write(`[Neocortex] checkpoint hook failed: ${u}. Proceeding without checkpoint.
40
- `)}const V=U?.licenseKey?new ut({cacheDir:pt,passphrase:U.licenseKey,strictReadOnly:I}):null,N=o.trim();if(!N&&V){const s=await d.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"auth-cache",operation:"update"},()=>Ro(V),async()=>null);if(s)return d.complete(),{success:!0,instructions:s.instructions,metadata:s.metadata,exitCode:0}}const P=await Ar(h,U?.licenseKey,d);if(P.status!=="authenticated"){const s=P.status==="refresh-required",u=!s&&U&&!U.licenseKey?" This may be caused by a machine fingerprint change (e.g., hardware or hostname change).":"";try{const g=Vt(),T=Mt(s?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",g);T&&process.stderr.write(Ut(T,g))}catch{}return{success:!1,error:s?"Authentication refresh required. Run: neocortex activate YOUR-LICENSE-KEY":`Not authenticated.${u} Visit https://neocortex.sh/portal/login to get your license key, then run: neocortex activate YOUR-LICENSE-KEY`,errorCode:s?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",exitCode:s?1:2}}const $=_.config.project_id;try{await d.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>Ri(c,_,h,P.token,$,{refreshToken:()=>P.client.forceRefresh()}),async()=>0)}catch{}const D=Ti(N);if(D&&!f)try{const s=await P.tierClient.preFlightCheck(D);if(!s.allowed)return process.stderr.write(`[neocortex] ${s.message}
41
- `),{success:!1,error:s.message??"Trigger not available on your plan",exitCode:1}}catch{}const O=await Wo({args:N,projectRoot:c,platformTarget:j,environment:e.environment??process.env,bootstrapper:e.runnerBootstrapper,effectAuthority:d});if(O.attachToRequest&&(_.runnerBootstrap=O.metadata),O.warning&&process.stderr.write(`[Neocortex] ${O.warning}
42
- `),!O.shouldContinue)return O.error&&process.stderr.write(`[Neocortex] ${O.error}
43
- `),{success:!1,error:O.error??"Runner auto-bootstrap required but failed.",errorCode:O.errorCode,exitCode:O.exitCode??1};let J;try{const s=an(N,_);if(s&&!s.ok){const u=`${s.code}: structural projection failed closed; select a valid target or repair the dependency DAG.`;return process.stderr.write(`${u}
44
- `),{success:!1,error:u,errorCode:s.code,metadata:{stateProjection:s,publicSafe:!0},exitCode:1}}J=s?.snapshot??Bt(N,_)}catch(s){if(s instanceof $t){const u=`${s.code}: structural projection failed closed; select a valid target or repair the dependency DAG.`;return process.stderr.write(`${u}
45
- `),{success:!1,error:u,errorCode:s.code,metadata:{structuralProjection:{...s.publicDetails,publicSafe:!0}},exitCode:1}}throw s}if(!I)try{const{openNativeAgentPrivateStore:s,resolveNativeAgentPrivateRuntimePaths:u}=await import("../continuity/native-agent-store.js"),g=u(c);if(Pe(g.databasePath)){const T=await s(c);try{const G=T.store.listRecentNativeAgentDispatches(20);G.length>0&&(J.nativeAgentDispatches=G)}finally{T.store.close()}}}catch{}const ve=Dt(N),_e=$;if(ve==="create-epic"&&!_e){const s='EPIC_PROJECT_ID_REQUIRED: run `neocortex-client invoke --args "*migrate-project-id"` and retry create-epic. No repository checkout or database credentials are required.';return process.stderr.write(`${s}
46
- `),{success:!1,error:s,errorCode:"EPIC_PROJECT_ID_REQUIRED",exitCode:1}}let ge;try{ge=d.execute({phase:"client-preflight",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>ve==="create-epic"?eo(c,N):void 0,()=>{})}catch{return{success:!1,error:"EPIC_CLAIM_INTEGRITY_FAILURE",errorCode:"EPIC_CLAIM_INTEGRITY_FAILURE",exitCode:1}}const Ge=ge?.key,be=I?{schemaVersion:1,invocationId:d.invocationId,intent:d.intent,clientProjection:wn(zt.map(s=>({...s,count:1})))}:void 0;let W;if(e.privateExecutionBeta)try{const{preflightPrivateCodexExecutor:s}=await import("../private-execution/codex-executor.js");W=await s(c)}catch(s){const u=s instanceof Error&&/^private-codex-[a-z-]+$/.test(s.message)?s.message:"private-codex-preflight-unavailable";return{success:!1,error:u,errorCode:u,exitCode:1}}const Ye=W?{schemaVersion:1,hostKind:"codex-cli",hostVersion:W.hostVersion,sandboxProof:{schemaVersion:5,trust:"client-self-attested",credentialKind:"chatgpt-subscription",authIsolation:"passed",workspaceWrite:"passed",gitControlWriteDenied:"passed",gitLifecycleReadDenied:"passed",mcpIsolation:"passed",environmentIsolation:"passed",networkDenied:"passed",observedAtMs:W.observedAtMs}}:void 0;let H={args:o,projectRoot:c.replace(De(),"~"),stateSnapshot:J,platformTarget:j,...v?{nativeHostAttestation:v}:{},...Ye?{privateExecution:Ye}:{},projectId:_e,inputEvidence:i,idempotencyKey:Ge,registryVersion:xe,registryChecksum:Oe,...be?{strictReadOnly:be}:{}};const Hr=Ve(H);if(!I&&e.inputSource&&e.inputSource!=="args"&&Hr>=ft)try{H={argsRef:(await Cn(d,"secondary-mutation",()=>Do(h,o,P.token,()=>P.client.forceRefresh()),async()=>{throw new Me("readonly-physical-boundary-unsafe","boundary")})).argsRef,projectRoot:c.replace(De(),"~"),stateSnapshot:J,platformTarget:j,...v?{nativeHostAttestation:v}:{},...Ye?{privateExecution:Ye}:{},projectId:_e,inputEvidence:i,idempotencyKey:Ge,registryVersion:xe,registryChecksum:Oe,...be?{strictReadOnly:be}:{}}}catch(s){return s instanceof Me?{success:!1,error:s.code,errorCode:s.code,exitCode:1}:{success:!1,error:`INVOKE_MATERIALIZATION_FAILED: ${s instanceof Error?s.message:String(s)}`,errorCode:"INVOKE_MATERIALIZATION_FAILED",exitCode:1}}if(ve==="yolo"&&J.scope?.projectionMode==="yolo-story"){const s=J.scope?.targetStoryId,u=J.scope?.targetEpicId;if(!s||!u)return{success:!1,error:"yolo-spec-envelope-target-mismatch",errorCode:"yolo-spec-envelope-target-mismatch",exitCode:1};try{const{collectYoloSpecEnvelope:g}=await import("../yolo/spec-envelope-collector.js"),T=g({projectRoot:c,storyId:s,epicId:u,inputSha256:i.sha256});if(/\sbranchless-preparation\s*$/.test(o))H={...H,yoloSpecEnvelope:T};else{const{collectYoloChangeEvidence:G}=await import("../yolo/change-evidence-collector.js"),ae=G({projectRoot:c,defaultBranch:J.config.default_branch,expectedHeadSha:T.sourceRevision.headSha});H={...H,yoloSpecEnvelope:T,yoloChangeEvidence:ae}}}catch(g){const T=g instanceof Error&&/^yolo-(?:spec-envelope|change-evidence)-[a-z-]+$/.test(g.message)?g.message:"yolo-spec-envelope-unsafe";return{success:!1,error:T,errorCode:T,exitCode:1}}}try{const s=Or(H);H=s.body,s.degraded?kr(H,s.telemetry):$o(H)}catch(s){if(s instanceof It||s instanceof Et)return kr(H,s.telemetry),process.stderr.write(`[Neocortex] ${s.message}
47
- `),{success:!1,error:s.message,errorCode:s.code,metadata:{invokePayload:s.telemetry},exitCode:1};throw s}if(ve==="yolo"&&H.yoloSpecEnvelope)try{const{collectYoloSpecEnvelope:s}=await import("../yolo/spec-envelope-collector.js"),u=s({projectRoot:c,storyId:H.yoloSpecEnvelope.storyId,epicId:H.yoloSpecEnvelope.epicId,inputSha256:i.sha256,collectedAt:H.yoloSpecEnvelope.collectedAt});if(u.envelopeSha256!==H.yoloSpecEnvelope.envelopeSha256)throw new Error("yolo-spec-envelope-stale");if(H.yoloChangeEvidence){const{collectYoloChangeEvidence:g}=await import("../yolo/change-evidence-collector.js"),T=g({projectRoot:c,defaultBranch:J.config.default_branch,expectedHeadSha:u.sourceRevision.headSha});if(T.pathsSha256!==H.yoloChangeEvidence.pathsSha256||T.baseSha!==H.yoloChangeEvidence.baseSha)throw new Error("yolo-spec-envelope-stale")}}catch{return{success:!1,error:"yolo-spec-envelope-stale",errorCode:"yolo-spec-envelope-stale",exitCode:1}}let E=await Jt("invoke-query",()=>Br(h,H,P.token,{refreshToken:()=>P.client.forceRefresh()})),Ot;if(I&&E.ok)try{if(f){const u=E.data?.metadata;if(u&&["stateUpdate","stateMutated","yoloopStateUpdate","continuityStateUpdate","checkpoint","schedulerStateUpdate","quotaCacheUpdate","projectIdentityMigration","epicClaim","gitLifecycleGraphAuthority"].some(T=>u[T]!==void 0))throw new Me("readonly-response-conflict")}const s=E.data?.metadata.strictReadOnly;vn(d,s),f&&kn(E.data?.metadata.strictDiagnose,r,E.data?.instructions??""),Ot=s.security}catch(s){const u=s instanceof Me?s.code:"readonly-receipt-mismatch";return{success:!1,error:u,errorCode:u,exitCode:1}}if(!E.ok&&E.status===426){const s=E.errorBody,u=s?.upgrade_command??"npm install -g @ornexus/neocortex@latest",g=s?.min_version??"unknown";return process.stderr.write(`
20
+ `);return}if(t==="json"){a.write(JSON.stringify(Zi(e))+`
21
+ `);return}a.write(Qi(e)+`
22
+ `)}function Sn(e){return ii.has(e.status)}function to(e,t,a){if(t){const i=e.find(n=>n.jobId===t);return!!(i&&Sn(i))}return a<=0?!1:e.filter(i=>!Sn(i)).length===0}function no(e,t,a,r){return a<r?!1:t?!e.some(i=>i.jobId===t&&!Sn(i)):e.length===0}function ro(e,t){return t?.aborted?Promise.resolve():new Promise(a=>{const r=setTimeout(i,e);function i(){clearTimeout(r),t?.removeEventListener("abort",i),a()}t?.addEventListener("abort",i,{once:!0})})}function ao(e){return e.includes(Se.MALFORMED)?"malformed":e.includes(Se.AMBIGUOUS)?"ambiguous":e.includes("watch-target-multiple")?"multiple":e.includes("watch-evidence-unsafe")?"unsafe":e.includes(Se.MISSING)||e.includes(fe.TARGET_UNRESOLVED)?"unresolved":"unavailable"}function Lr(e,t){const a=t?bt(t):void 0,r=we([...e,fe.TARGET_UNRESOLVED,H.WATCH_TARGET_UNRESOLVED]),i=En(a,a?.targetId,ao(r),r),n=Ye({generatedAt:new Date().toISOString()},[],!1,0,[H.WATCH_TARGET_UNRESOLVED]),o=He(void 0,void 0,void 0,[],[H.WATCH_TARGET_UNRESOLVED],"unavailable");return We({watchStatus:"blocked",active:!1,targetEvidence:i,snapshotEvidence:n,cursorEvidence:o,stopReason:"target_unresolved",reasonCodes:r,generatedAt:n.generatedAt})}function io(e,t,a,r,i=!1){const n=Lr(e,jr(t));return Ge(n,a,r,i),Je("target-unresolved",0,0,n,i)}async function oo(e){if(e.signal?.aborted){const w=En(e.target??bt(e.targetJobId),e.targetJobId,e.target??e.targetJobId?"resolved":"unresolved",[fe.CANCELLED]),v=Ye(void 0,[],!1,0),O=He(e.initialCursor,e.initialCursor,e.initialCursor,[],[fe.CANCELLED],"unavailable"),k=We({watchStatus:"stopped",active:!1,targetEvidence:w,snapshotEvidence:v,cursorEvidence:O,stopReason:"cancelled",reasonCodes:[fe.CANCELLED]});return Je("cancelled",0,0,k,e.protectedOutput)}const t=e.target??bt(e.targetJobId),a=e.targetJobId??t?.targetId,r=e.stdout??process.stdout;if(!t){const w=Lr([Se.MISSING,fe.TARGET_UNRESOLVED]);return Ge(w,e.format,r,e.protectedOutput),Je("target-unresolved",0,0,w,e.protectedOutput)}const i=Yt(e.limit??Jt("NEOCORTEX_INVOKE_WATCH_LIMIT",Hn),Hn,50),n=Math.max(50,Yt(e.pollIntervalMs??Jt("NEOCORTEX_INVOKE_WATCH_POLL_INTERVAL_MS",Fn),Fn,6e4)),o=Yt(e.maxIdlePolls??Jt("NEOCORTEX_INVOKE_WATCH_MAX_IDLE_POLLS",Wn),Wn,120),s=Yt(e.maxPolls??Jt("NEOCORTEX_INVOKE_WATCH_MAX_POLLS",Gn),Gn,86400),p=e.sleep??ro;let g=e.initialCursor,E=0,_=0,l=0;const m=En(t,a,"resolved",[H.OK]),u={schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:"pending",renderedSummaryCount:0,reasonCodes:[H.WATCH_RENDER_PENDING],publicSafe:!0},S=He(e.initialCursor,g,g,[],e.initialCursor?[H.WATCH_CURSOR_UNCHANGED]:[H.WATCH_NO_SUMMARIES_YET],e.initialCursor?"unchanged":"not_started");Ge(We({watchStatus:"active",active:!0,targetEvidence:m,snapshotEvidence:u,cursorEvidence:S,stopReason:"not_stopped",reasonCodes:[H.OK]}),e.format,r,e.protectedOutput);let C;try{C=await ma({projectRoot:e.projectRoot,strictReadOnly:e.strictReadOnly})}catch{const w=Ye(void 0,[],!1,E,[H.WATCH_SNAPSHOT_UNAVAILABLE]),v=He(e.initialCursor,g,g,[],[H.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),O=We({watchStatus:"blocked",active:!1,targetEvidence:m,snapshotEvidence:w,cursorEvidence:v,stopReason:"unavailable_evidence",reasonCodes:[fe.STORE_UNAVAILABLE]});return Ge(O,e.format,r,e.protectedOutput),Je("store-unavailable",E,l,O,e.protectedOutput)}try{for(;!e.signal?.aborted&&l<s;){l+=1;const w=g,v=C.collectProcessingOutputSummaryCursor({...g?{cursor:g}:{},...t?{target:t}:{},...a?{jobId:a}:{},limit:i}),O=C.collectSnapshot({jobLimit:50,processingSummaryLimit:1}),k=O.jobs;if(v.summaries.length>0){for(const $ of v.summaries)eo($,e.format,r,e.protectedOutput),E+=1;g=v.nextCursor??v.summaries[v.summaries.length-1]?.cursor??g,_=0}else g=v.nextCursor??g,_+=1;const D=Ye(O,v.summaries,!0,v.summaries.length),F=He(e.initialCursor,w,g,v.summaries,v.summaries.length>0?[H.WATCH_CURSOR_ADVANCED]:[H.WATCH_NO_SUMMARIES_YET]);if(Ge(We({watchStatus:v.summaries.length>0?"polling":"waiting",active:!0,targetEvidence:m,snapshotEvidence:D,cursorEvidence:F,stopReason:"not_stopped",reasonCodes:v.summaries.length>0?[H.WATCH_CURSOR_ADVANCED]:[H.WATCH_NO_SUMMARIES_YET],generatedAt:O.generatedAt}),e.format,r,e.protectedOutput),!v.hasMore&&to(k,a,E)){const $=Ye(O,v.summaries,!1,E,[fe.COMPLETED]),j=He(e.initialCursor,w,g,v.summaries,[fe.COMPLETED],"exhausted"),B=We({watchStatus:"stopped",active:!1,targetEvidence:m,snapshotEvidence:$,cursorEvidence:j,stopReason:"not_stopped",reasonCodes:[fe.COMPLETED],generatedAt:O.generatedAt});return Ge(B,e.format,r,e.protectedOutput),Je("completed",E,l,B,e.protectedOutput)}if(!v.hasMore&&no(k,a,_,o)){const $=Ye(O,v.summaries,!1,E,[H.WATCH_STOP_IDLE_LIMIT_REACHED]),j=He(e.initialCursor,w,g,v.summaries,[H.WATCH_STOP_IDLE_LIMIT_REACHED],"exhausted"),B=We({watchStatus:"stopped",active:!1,targetEvidence:m,snapshotEvidence:$,cursorEvidence:j,stopReason:"idle_limit_reached",reasonCodes:[fe.IDLE_TIMEOUT,H.WATCH_STOP_IDLE_LIMIT_REACHED],generatedAt:O.generatedAt});return Ge(B,e.format,r,e.protectedOutput),Je("idle-timeout",E,l,B,e.protectedOutput)}v.hasMore||await p(n,e.signal)}}catch{const w=Ye(void 0,[],!1,E,[H.WATCH_SNAPSHOT_UNAVAILABLE]),v=He(e.initialCursor,g,g,[],[H.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),O=We({watchStatus:"blocked",active:!1,targetEvidence:m,snapshotEvidence:w,cursorEvidence:v,stopReason:"unavailable_evidence",reasonCodes:[fe.STORE_UNAVAILABLE]});return Ge(O,e.format,r,e.protectedOutput),Je("store-unavailable",E,l,O,e.protectedOutput)}finally{C.close()}if(e.signal?.aborted){const w=Ye(void 0,[],!1,E,[fe.CANCELLED]),v=He(e.initialCursor,g,g,[],[fe.CANCELLED],"unavailable"),O=We({watchStatus:"stopped",active:!1,targetEvidence:m,snapshotEvidence:w,cursorEvidence:v,stopReason:"cancelled",reasonCodes:[fe.CANCELLED]});return Ge(O,e.format,r,e.protectedOutput),Je("cancelled",E,l,O,e.protectedOutput)}const L=Ye(void 0,[],!1,E,[H.WATCH_STOP_MAX_POLLS_REACHED]),b=He(e.initialCursor,g,g,[],[H.WATCH_STOP_MAX_POLLS_REACHED],"exhausted"),Y=We({watchStatus:"stopped",active:!1,targetEvidence:m,snapshotEvidence:L,cursorEvidence:b,stopReason:"max_polls_reached",reasonCodes:[fe.MAX_POLLS,H.WATCH_STOP_MAX_POLLS_REACHED]});return Ge(Y,e.format,r,e.protectedOutput),Je("max-polls",E,l,Y,e.protectedOutput)}function Ue(e){const t=e.trim().replace(/^@/,"").match(/^(job|goal|loop)-([JGL])(\d{3,})$/i);if(!t)return;const a=t[1].toLowerCase(),r=t[2].toUpperCase();if(!(a==="job"&&r!=="J"||a==="goal"&&r!=="G"||a==="loop"&&r!=="L"))return`${a}-${r}${t[3]}`}function vn(e){if(e.startsWith("job-J"))return"job";if(e.startsWith("goal-G"))return"goal";if(e.startsWith("loop-L"))return"loop"}function Dr(e){const t=[],a=/(?:^|[\s"'([,{])@?(job-[Jj]\d{3,}|goal-[Gg]\d{3,}|loop-[Ll]\d{3,})(?=$|[\s"')\]},.;:!?])/g;let r;for(;(r=a.exec(e))!==null;){const i=Ue(r[1]);i&&t.push(i)}return we(t)}function jr(e){return Dr(e)[0]}function bt(e){const t=e?Ue(e):void 0;if(t){if(t.startsWith("job-J"))return{selectorKind:"job",targetId:t,jobId:t,publicSafe:!0};if(t.startsWith("goal-G"))return{selectorKind:"goal",targetId:t,goalId:t,publicSafe:!0};if(t.startsWith("loop-L"))return{selectorKind:"loop",targetId:t,loopId:t,publicSafe:!0}}}function Cn(e){return we(e.filter(t=>typeof t=="string").map(t=>Ue(t)).filter(t=>!!t?.startsWith("job-J")))}function co(e,t){const a=Cn(t).filter(r=>r!==e.targetId&&r!==e.jobId);return a.length>0?{...e,relatedJobIds:a}:e}function so(e){if(!e)return;const t=h(e.target)?e.target:void 0,a=typeof e.selectorKind=="string"?e.selectorKind:typeof t?.selectorKind=="string"?t.selectorKind:void 0,r=typeof e.targetId=="string"?Ue(e.targetId):typeof t?.targetId=="string"?Ue(t.targetId):typeof e.targetJobId=="string"?Ue(e.targetJobId):void 0,i=bt(r);if(!i||a&&a!==i.selectorKind)return;const n=Array.isArray(e.relatedJobIds)?e.relatedJobIds:Array.isArray(t?.relatedJobIds)?t.relatedJobIds:void 0,o=Cn([...n??[],e.jobId,t?.jobId,e.targetJobId,t?.targetJobId]).filter(s=>s!==i.targetId&&s!==i.jobId);return{...i,...typeof(e.jobId??t?.jobId)=="string"?{jobId:Ue(e.jobId??t?.jobId)??i.jobId}:{},...typeof(e.goalId??t?.goalId)=="string"?{goalId:Ue(e.goalId??t?.goalId)??i.goalId}:{},...typeof(e.loopId??t?.loopId)=="string"?{loopId:Ue(e.loopId??t?.loopId)??i.loopId}:{},...o.length>0?{relatedJobIds:o}:{}}}function Mr(e){const t=e.trim().split(/\s+/).filter(Boolean),a=t[0]?.replace(/^\*/,"").toLowerCase(),r=t[1]?.replace(/^--/,"").toLowerCase();return(a==="jobs"||a==="job"||a==="continuity-jobs"||a==="61")&&r==="watch"}const Ie=Object.freeze({ACTIVE:"command-level-watch-active",INACTIVE:"command-level-watch-inactive",DUPLICATE:"command-level-watch-duplicate",AMBIGUOUS:"command-level-watch-ambiguous",QUOTED:"command-level-watch-quoted",MALFORMED:"command-level-watch-malformed",NON_FINAL:"command-level-watch-non-final",UNRESOLVED:"command-level-watch-unresolved",UNSUPPORTED:"command-level-watch-unsupported",TARGET_INVALID:"command-level-watch-target-invalid"}),uo=new Set(["create","start","resume"]),po=new Set(["create","resume","run-once"]);function _n(e,t,a,r,i){return{schemaVersion:1,contractVersion:"continuity-v1",...a?{command:a}:{},...r?{operation:r}:{},active:e,...i?{watchToken:i}:{},reasonCodes:we(t),serverHeldStream:!1,allJobsPolling:!1,targetResolution:e?"required-after-dispatch":"inactive",publicSafe:!0}}function ve(e,t=[],a,r){const i=t.length>0?t:[Ie.INACTIVE];return{args:e,watch:!1,reasonCodes:i,metadata:_n(!1,i,a,r),publicSafe:!0}}function lo(e){const t=e.trim().split(/\s+/).filter(Boolean),a=t.slice(2).filter(n=>n==="--watch").length;if(a===0)return ve(e,[],"jobs","watch");if(a!==1)return ve(e,[Ie.AMBIGUOUS],"jobs","watch");const r=t.filter((n,o)=>o<2||n!=="--watch").join(" ");return Mr(r)?r.trim().split(/\s+/).filter(Boolean).slice(2).length!==1?ve(e,[Ie.AMBIGUOUS],"jobs","watch"):jr(r)?{args:r,watch:!0,reasonCodes:[Ie.ACTIVE],metadata:_n(!0,[Ie.ACTIVE],"jobs","watch"),publicSafe:!0}:ve(e,[Ie.TARGET_INVALID],"jobs","watch"):ve(e,[Ie.UNSUPPORTED],"jobs","watch")}function ho(e){const t=[];let a=!1,r=0;for(;r<e.length;){for(;r<e.length&&/\s/.test(e[r]);)r+=1;if(r>=e.length)break;const i=r;let n="",o=!1,s=null;for(;r<e.length;){const p=e[r];if(s){if(p===s){o=!0,s=null,r+=1;continue}if(p==="\\"&&r+1<e.length){n+=e[r+1],r+=2;continue}n+=p,r+=1;continue}if(/\s/.test(p))break;if(p==='"'||p==="'"){o=!0,s=p,r+=1;continue}n+=p,r+=1}s&&(a=!0),t.push({value:n,start:i,end:r,quoted:o})}return{tokens:t,malformed:a}}function go(e){if(!e||e.quoted)return;const t=e.value.replace(/^\*/,"").toLowerCase();return t==="goal"||t==="loop"?t:void 0}function fo(e,t){if(!e||e==="jobs"||!t||t.quoted)return;const a=t.value.toLowerCase();return(e==="goal"?uo:po).has(a)?a:void 0}function mo(e){return!e.quoted&&e.value!=="--watch"&&e.value.toLowerCase().startsWith("--watch")}function yo(e){const{tokens:t,malformed:a}=ho(e),r=go(t[0]),i=fo(r,t[1]);if(a)return ve(e,[Ie.MALFORMED],r,i);const n=t.filter(l=>l.value==="--watch"&&!l.quoted),o=t.filter(l=>l.value==="--watch"&&l.quoted),s=t.filter(mo);if(!(n.length>0||o.length>0||s.length>0))return ve(e,[],r,i);if(n.length>1)return ve(e,[Ie.DUPLICATE],r,i);if(n.length===1&&(o.length>0||s.length>0))return ve(e,[Ie.AMBIGUOUS],r,i);if(o.length>0)return ve(e,[Ie.QUOTED],r,i);if(s.length>0)return ve(e,[Ie.MALFORMED],r,i);const g=n[0];if(!g)return ve(e,[],r,i);if(t[t.length-1]!==g)return ve(e,[Ie.NON_FINAL],r,i);if(!r||!i)return ve(e,[Ie.UNRESOLVED],r,i);const E=`${e.slice(0,g.start)}${e.slice(g.end)}`.trim(),_={literal:"--watch",position:"final",start:g.start,end:g.end,quoted:!1,publicSafe:!0};return{args:E,watch:!0,reasonCodes:[Ie.ACTIVE],metadata:_n(!0,[Ie.ACTIVE],r,i,_),publicSafe:!0}}function Io(e){return Mr(e)?lo(e):yo(e)}function Eo(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&oi.has(t)):[]}function It(e){return{disabled:!0,reasonCodes:we(e.length>0?e:[Se.MISSING])}}function wn(e,t,a=[],r){const i=bt(t);if(i)return{source:e,target:co(i,a),targetJobId:i.targetId,...r?{initialCursor:r}:{},serverHeldStream:!1}}function So(e){const t=new Map;for(const a of e){const r=`${a.target.selectorKind}:${a.target.targetId}`,i=t.get(r);if(!i){t.set(r,a);continue}const n=we([...i.target.relatedJobIds??[],...a.target.relatedJobIds??[]]);t.set(r,{...i,target:n.length>0?{...i.target,relatedJobIds:n}:i.target,initialCursor:i.initialCursor??a.initialCursor})}return Array.from(t.values())}function et(e,t,a,r){return{source:e,hasEvidence:t,candidates:So(a.filter(i=>!!i)),...r&&r.length>0?{disabledReasonCodes:we(r)}:{}}}function vo(e,t){return e.target.selectorKind===t.target.selectorKind&&e.target.targetId===t.target.targetId}function Tt(e,t){const a=we(e.filter(r=>typeof r=="string").map(r=>Ue(r)).filter(r=>!!r));if(t){const r=a.find(i=>vn(i)===t);if(r)return r}return a[0]}function zt(e,t){return we(e.filter(a=>typeof a=="string").map(a=>Ue(a)).filter(a=>!!a)).find(a=>vn(a)===t)}function Co(e){const t=h(e?.continuity)?e.continuity:void 0,a=h(t?.jobs)?t.jobs:void 0,r=h(a?.watcher)?a.watcher:void 0,i=Eo(r?.reasonCodes??a?.reasonCodes);if(!r)return et("watcher-metadata",i.length>0,[],i);if(r.active===!1||i.length>0)return et("watcher-metadata",!0,[],i.length>0?i:[Se.MALFORMED]);if(r.serverHeldStream!==!1)return et("watcher-metadata",!0,[],[Se.SERVER_HELD_STREAM]);const n=so(r);if(!n)return et("watcher-metadata",!0,[],[Se.MISSING]);const o=typeof r.initialCursor=="string"?r.initialCursor:void 0;return et("watcher-metadata",!0,[{source:"watcher-metadata",target:n,targetJobId:n.targetId,...o?{initialCursor:o}:{},serverHeldStream:!1}])}function Vr(e,t){const a=h(e.loopJobPlan)?e.loopJobPlan:void 0,r=h(a?.metadata)?a.metadata:void 0,i=h(e.metadata)?e.metadata:void 0,o=(t==="goal"?Tt([e.goalId,e.targetGoalId,e.campaignId,e.jobId,e.targetJobId,i?.goalId,i?.campaignId,i?.jobId],"goal"):Tt([e.loopId,e.targetLoopId,e.jobId,e.targetJobId,i?.loopId,i?.jobId,r?.loopId,r?.jobId],"loop"))??Tt([e.jobId,e.targetJobId,i?.jobId,r?.jobId]);return wn("goal-loop-continuity-metadata",o,[e.jobId,e.targetJobId,i?.jobId,r?.jobId])}function _o(e){const t=h(e?.continuity)?e.continuity:void 0,a=h(t?.goal)?t.goal:void 0,r=h(t?.loop)?t.loop:void 0,i=[a?Vr(a,"goal"):void 0,r?Vr(r,"loop"):void 0],n=!!(a||r);return et("goal-loop-continuity-metadata",n,i,n&&i.every(o=>!o)?[Se.MISSING]:void 0)}function wo(e){return Array.isArray(e)?e.filter(h):h(e)?Array.isArray(e.operationLogs)?e.operationLogs.filter(h):h(e.operationLog)?[e.operationLog]:Array.isArray(e.operations)?[e]:[]:[]}function Ur(e,t){const a=h(t.metadata)?t.metadata:void 0,r=zt([t.goalId,t.targetGoalId,t.campaignId,a?.goalId,a?.campaignId,t.jobId,a?.jobId],"goal"),i=zt([t.loopId,t.targetLoopId,a?.loopId,t.jobId,a?.jobId],"loop"),n=Tt([t.jobId,t.targetJobId,a?.jobId],"job"),o=r??i??n;if(!o)return;const s=e.get(o)??{targetId:o,relatedJobIds:[]};s.relatedJobIds.push(...Cn([n,t.jobId,t.targetJobId,a?.jobId])),e.set(o,s)}function Ao(e){const t=h(e.metadata)?e.metadata:void 0;return!!(zt([e.goalId,e.targetGoalId,e.campaignId,t?.goalId,t?.campaignId,e.jobId,t?.jobId],"goal")??zt([e.loopId,e.targetLoopId,t?.loopId,e.jobId,t?.jobId],"loop"))}function Ro(e){const t=h(e.metadata)?e.metadata:void 0;return!!Tt([e.goalId,e.targetGoalId,e.campaignId,e.loopId,e.targetLoopId,e.jobId,e.targetJobId,t?.goalId,t?.campaignId,t?.loopId,t?.jobId])}function $r(e,t){const a=[];for(const o of["metadata","job","event","receipt","processingOutputSummary"]){const s=t[o];h(s)&&a.push(s)}const r=h(t.event)?t.event:void 0;h(r?.metadata)&&a.push(r.metadata),h(r?.processingOutputSummary)&&a.push(r.processingOutputSummary);const i=h(t.receipt)?t.receipt:void 0;h(i?.metadata)&&a.push(i.metadata);const n=a.some(Ro);for(const o of a)Ur(e,o);(!n||Ao(t))&&Ur(e,t)}function bo(e){const t=wo(e?.continuityStateUpdate),a=new Map;for(const i of t){$r(a,i);const n=Array.isArray(i.operations)?i.operations.filter(h):[];for(const o of n)$r(a,o)}const r=Array.from(a.values()).map(i=>wn("continuity-state-update-operation-log",i.targetId,i.relatedJobIds));return et("continuity-state-update-operation-log",t.length>0,r,t.length>0&&r.every(i=>!i)?[Se.MISSING]:void 0)}function To(e){const t=Dr(e);return et("explicit-args",t.length>0,t.map(a=>wn("explicit-args",a)))}function xo(e,t){const a=[Co(e),_o(e),bo(e),To(t)];for(let r=0;r<a.length;r+=1){const i=a[r];if(!i.hasEvidence)continue;if(i.disabledReasonCodes&&i.disabledReasonCodes.length>0)return It(i.disabledReasonCodes);if(i.candidates.length!==1)return It([i.candidates.length>1?Se.AMBIGUOUS:Se.MISSING]);const n=i.candidates[0];for(const o of a.slice(r+1)){if(!o.hasEvidence)continue;if(o.disabledReasonCodes&&o.disabledReasonCodes.length>0)return It(o.disabledReasonCodes);if(o.candidates.length>1)return It([Se.AMBIGUOUS]);const s=o.candidates[0];if(s&&!vo(n,s))return It([Se.CONFLICT])}return{target:n.target,targetJobId:n.targetJobId,...n.initialCursor?{initialCursor:n.initialCursor}:{},source:n.source,serverHeldStream:!1}}return It([Se.MISSING])}async function Br(e,t,a,r={}){const n=await Rt(e,"/api/v1/invoke",t,a,t.privateExecution?{...r,maxAttempts:1,allowReplayRetry:!1}:r);if(n.networkFailure||!n.response)return{ok:!1,status:0,error:"Network error after bounded retries"};const{response:o,text:s,parsed:p}=n;try{if(!o.ok)return t.privateExecution?{ok:!1,status:o.status,error:"private-execution-invoke-unavailable"}:{ok:!1,status:o.status,error:Object.keys(p).length>0?`${p.error_code??"ERROR"}: ${p.message??s}`:`HTTP ${o.status}: ${s}`,errorBody:Object.keys(p).length>0?p:void 0};const g=p,E=o.headers.get("X-Client-Version-Warning");return E&&!Ar&&(Ar=!0,process.stderr.write(`
23
+ [Neocortex] ${E}
24
+
25
+ `)),{ok:!0,status:o.status,data:g}}catch(g){return{ok:!1,status:0,error:(g instanceof Error?g.message:String(g)).includes("abort")?`Request timeout after ${er/1e3}s`:"Network error: invalid response"}}}async function ko(e,t,a){const r=await Rt(e,"/api/v1/invoke/private-execution/consume",t,a,{maxAttempts:1,allowReplayRetry:!1});if(r.networkFailure||!r.response||!r.response.ok)throw new Error("private-execution-delivery-unavailable");return r.parsed}async function Lc(e,t,a){const r=await Rt(e,"/api/v1/invoke/private-execution/cancel",t,a,{maxAttempts:1,allowReplayRetry:!1});return!!r.response?.ok&&r.parsed.status==="cancelled"}async function Po(e,t,a,r={}){const i=await Rt(e,"/api/v1/invoke/epic-claims/acknowledge",{...a,registryVersion:ot,registryChecksum:it},t,r);return!!i.response?.ok&&i.parsed.status==="ok"&&i.parsed.claimOutcome===a.status}async function Oo(e,t,a,r,i,n={}){if(!i)return 0;const o=Bt(e);let s=0;for(const[p,g]of Object.entries(o.operations))!g.claimId||!g.epicId||!t.epics?.[g.epicId]||!await Po(a,r,{claimId:g.claimId,projectId:i,epicId:g.epicId,status:"materialized"},n)||(ni(e,p),s+=1);return s}function No(e,t){const a=t.state.pendingContinuationAuthorities,r=t.state.continuationSession;if(t.state.continuationPolicy!=="p205-finite-resume-v2"||a?.length!==1||!r)return;const i=a[0],n=i.certificate,o=n?.expectedTransition;if(i.storyIds!=="[CIRCULAR]"||n?.rank!=="[CIRCULAR]"||o?.selectedStoryIds!=="[CIRCULAR]")return;const s=typeof r.epicId=="string"?r.epicId:"",p=e.epics[s],g=Array.isArray(o.storyLifecycle)?o.storyLifecycle:[],E=g.length===1&&typeof g[0]?.storyId=="string"?g[0].storyId:"",l=e.stories[E]?.checkpoint;if(!p||p.branch_mode!=="epic"||typeof p.execution_branch!="string"||typeof p.origin_branch!="string"||p.branch_lease!==void 0&&p.branch_lease!==null||!l||l.qaVerdict!=="passed"||l.reviewVerdict!=="approved"||!Array.isArray(l.receiptRefs))return;const u=(Array.isArray(p.stories)?p.stories.filter(S=>typeof S=="string"):[]).find(S=>{const C=e.stories[S];return!C||["done","completed","merged"].includes(String(C.status))?!1:(Array.isArray(C.depends_on)?C.depends_on.filter(b=>typeof b=="string"):[]).every(b=>["done","completed","merged"].includes(String(e.stories[b]?.status)))});if(u)return{epicId:s,expectedNextStoryId:u,branchMode:"epic",executionBranch:p.execution_branch,originBranch:p.origin_branch,branchLeaseReleased:!0,checkpoint:{schemaVersion:1,storyId:l.storyId,epicId:l.epicId,branch:l.branch,baseSha:l.baseSha,headSha:l.headSha,receiptRefs:[...l.receiptRefs],qaVerdict:"passed",reviewVerdict:"approved"}}}async function Lo(e){let t;try{if(t=e.inputEnvelope??Mt(e.inputSource??"args",e.args),xa(t),t.rawArgs!==e.args)throw new Error("INVOKE_INPUT_ENVELOPE_ARGUMENT_CONFLICT")}catch{return{success:!1,error:"INVOCATION_MALFORMED_INPUT: explicit input integrity could not be verified.",errorCode:"INVOCATION_MALFORMED_INPUT",metadata:{invocationInput:{reason:"input-integrity-conflict",remediation:"Retry with exactly one of --args, --stdin or --args-file.",publicSafe:!0}},exitCode:1}}const a=t.rawArgs,r=zn(t);let i=a,n=r;const o=ai(a);if(o.outcome!=="resolved"){const c=Pa(o,"client"),d=o.outcome==="malformed_input"?o.reason==="input_limit"||o.reason==="token_limit"||o.reason==="token_size_limit"?"input-limit-exceeded":o.reason==="invalid_control"||o.reason==="invalid_surrogate"?"invalid-control-character":o.reason==="unterminated_quote"||o.reason==="trailing_escape"||o.reason==="unsupported_escape"?"unterminated-quote":void 0:void 0,y=d?{code:"INVOCATION_MALFORMED_INPUT",reason:d,source:t.source,byteLength:t.byteLength,remediation:d==="input-limit-exceeded"?"Reduce the explicit command input or split the requested work into bounded invocations.":d==="invalid-control-character"?"Remove invalid control characters and retry with valid UTF-8 text.":"Close quotes and escapes, or use --stdin/--args-file for multiline content."}:void 0;return{success:!1,error:`INVOCATION_${o.outcome.toUpperCase()}`,errorCode:`INVOCATION_${o.outcome.toUpperCase()}`,metadata:{invocationAdmission:c,...y?{invocationInput:y}:{}},exitCode:1}}const s=cn(e.projectRoot),p=o.selection.commandId,g=p==="tech-debt"&&o.selection.positionals.length===0&&(o.selection.operationId==="scan"&&Object.keys(o.selection.options).length===0||o.selection.operationId===void 0&&o.selection.options.scan===!0&&Object.keys(o.selection.options).length===1),E=Zr.find(c=>c.id===p),_=E?.subcommands.find(c=>c.id===o.selection.operationId),l=_?_.policy.strictReadOnly==="allow":E?.policy.strictReadOnly==="allow",m=p==="diagnose";let u;try{u=Ra({invocationId:Lt(),intent:e.strictReadOnly||m?{schemaVersion:1,policy:_a,registryVersion:ot,registryChecksum:it}:void 0,registryVersion:ot,registryChecksum:it,registryAllowsStrict:l,requestCanonicalBytes:JSON.stringify({command:p})})}catch(c){if(c instanceof ft)return{success:!1,error:c.code,errorCode:c.code,exitCode:1};throw c}{u.beginProjection();for(const c of Jn)u.project(c);for(const c of wa)u.project(c);u.seal()}const S=u.mode==="strict";if(p==="create-epic"||p==="idea-diagnose")try{const c=Ma(s);if(c&&c!=="finalized")return{success:!1,error:'PROJECT_IDENTITY_MIGRATION_INCOMPLETE: retry `neocortex-client invoke --args "*migrate-project-id"` before create-epic.',errorCode:"PROJECT_IDENTITY_MIGRATION_INCOMPLETE",metadata:{projectIdentityMigration:{phase:c,publicSafe:!0}},exitCode:1}}catch(c){const d=c instanceof nn?c.code:"PROJECT_IDENTITY_MIGRATION_STATE_CORRUPT";return{success:!1,error:d,errorCode:d,exitCode:1}}const C=e.environment??process.env;if(e.privateExecutionBeta&&(p!=="yolo"&&p!=="research"&&p!=="write-spec"&&p!=="create-tasks"&&p!=="implement"&&p!=="exec"&&p!=="create-epic"&&p!=="idea-diagnose"&&p!=="idea-research"&&p!=="generate-epic"&&p!=="sync-openapi"&&p!=="arch-prd"&&p!=="arch-architecture"&&p!=="arch-fitness-functions"&&p!=="arch-api-contracts"&&p!=="arch-api-integrations"&&p!=="arch-database"&&p!=="arch-security"&&p!=="arch-design-system"&&p!=="arch-performance"&&p!=="arch-testing"&&p!=="arch-infrastructure"&&p!=="arch-review"&&p!=="update-memory"&&p!=="arch-ux-design"&&p!=="generate-pacts"&&!g||S||e.platformTarget!==void 0&&e.platformTarget!=="codex"))return{success:!1,error:"PRIVATE_EXECUTION_BETA_UNSUPPORTED",errorCode:"PRIVATE_EXECUTION_BETA_UNSUPPORTED",exitCode:1};const L=Sa({cwd:s,env:C,targetFlag:e.privateExecutionBeta?"codex":e.platformTarget}),b=L.targetId,Y=e.privateExecutionBeta?void 0:Ea({cwd:s,env:C,targetFlag:e.platformTarget,nativeHostVersion:li(L,C)},L);p!=="migrate-project-id"&&u.execute({phase:"client-preflight",domain:"client-persistence",category:"first-run-marker",operation:"create"},()=>ri(),()=>{});const w=Li(u),v=(e.serverUrl??w?.serverUrl??ta).replace(/\/+$/,"");if(p==="migrate-project-id"){const c=await Va(v);if(!c.supported)return{success:!1,error:"PROJECT_IDENTITY_MIGRATION_CAPABILITY_UNAVAILABLE: the server did not advertise the versioned migration capability; no local state was changed.",errorCode:"PROJECT_IDENTITY_MIGRATION_CAPABILITY_UNAVAILABLE",metadata:{projectIdentityMigrationCapability:c},exitCode:1};const d=[];let y;try{y=ja(s)}catch(M){const ue=M instanceof nn?M.code:"PROJECT_IDENTITY_MIGRATION_PREPARE_FAILED";return{success:!1,error:ue,errorCode:ue,exitCode:1}}d.push(mt({phase:"prepare",outcome:y.changed&&y.document.phase==="prepared"?"prepared":"retry",floor:y.document.legacyEpicFloor,licenseId:"local-client",projectId:y.document.projectId}));const T=vr(s);if(T.config.project_id!==y.document.projectId)return{success:!1,error:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",errorCode:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",metadata:{invocationDiagnostics:d},exitCode:1};const q=await wr(v,w?.licenseKey,u);if(q.status!=="authenticated"){const M=q.status==="refresh-required";return{success:!1,error:M?"Authentication refresh required. Run: neocortex activate YOUR-LICENSE-KEY":"Not authenticated. Visit https://neocortex.sh/portal/login to get your license key, then run: neocortex activate YOUR-LICENSE-KEY",errorCode:M?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",metadata:{invocationDiagnostics:d},exitCode:M?1:2}}let _e;try{_e=$n(e.args.trim(),T)}catch(M){const ue=M instanceof Bn?M.code:"PROJECT_IDENTITY_MIGRATION_PROJECTION_FAILED";return{success:!1,error:ue,errorCode:ue,metadata:{invocationDiagnostics:d},exitCode:1}}let te={args:a,projectRoot:s.replace(At(),"~"),stateSnapshot:_e,platformTarget:b,...Y?{nativeHostAttestation:Y}:{},projectId:y.document.projectId,projectIdentityMigration:y.request,inputEvidence:r,idempotencyKey:y.document.operationId,registryVersion:ot,registryChecksum:it};try{te=kr(te).body}catch(M){if(M instanceof un||M instanceof pn)return{success:!1,error:M.message,errorCode:M.code,metadata:{invokePayload:M.telemetry,invocationDiagnostics:d},exitCode:1};throw M}const Z=await Yn("invoke-query",()=>Br(v,te,q.token,{refreshToken:()=>q.client.forceRefresh()}));if(!Z.ok||!Z.data)return d.push(mt({phase:"seed",outcome:"rejected",floor:y.document.legacyEpicFloor,licenseId:"local-client",projectId:y.document.projectId})),{success:!1,error:Ve(Z.error??"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",ct),errorCode:typeof Z.errorBody?.error_code=="string"?Z.errorBody.error_code:"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",metadata:{invocationDiagnostics:d},exitCode:Z.status===401?2:1};const ee=Z.data.metadata?.projectIdentityMigration;try{ka(ee),d.push(mt({phase:"seed",outcome:ee.status,floor:ee.acceptedLegacyFloor,licenseId:"local-client",projectId:ee.projectId})),La(s,ee),d.push(mt({phase:"remote-acknowledged",outcome:ee.status,floor:ee.acceptedLegacyFloor,licenseId:"local-client",projectId:ee.projectId})),Da(s,ee),d.push(mt({phase:"finalize",outcome:"finalized",floor:ee.acceptedLegacyFloor,licenseId:"local-client",projectId:ee.projectId}))}catch(M){d.push(mt({phase:"reconcile",outcome:"rejected",floor:y.document.legacyEpicFloor,licenseId:"local-client",projectId:y.document.projectId}));const ue=M instanceof nn?M.code:M instanceof Error?M.message:"PROJECT_IDENTITY_MIGRATION_RECEIPT_INVALID";return{success:!1,error:ue,errorCode:ue,metadata:{invocationDiagnostics:d},exitCode:1}}return u.complete(),{success:!0,instructions:Z.data.instructions,metadata:{...Z.data.metadata,invocationDiagnostics:d},exitCode:0}}try{const{normalizeYoloopTargetArgs:c}=await import("../yoloop/target-normalization.js"),d=c(e.args,{projectRoot:s});if(!d.ok)return process.stderr.write(`${d.message} reason=${d.reasonCode}
26
+ `),{success:!1,error:d.message,exitCode:1};d.changed&&(e={...e,args:d.args},process.stderr.write(`[Neocortex] yoloop target normalized: ${d.reasonCodes.join(",")}
27
+ `))}catch{const c="INVALID_YOLOOP_TARGET: yoloop target normalization was unavailable; no request was sent.";return process.stderr.write(`${c}
28
+ `),{success:!1,error:c,exitCode:1}}const O=Er(p);if(O)try{Sr(s,{allowMissingRuntime:!0}).runtimeMissing&&(await u.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},async()=>Ba(s),async()=>{}),Sr(s))}catch(c){const d=c instanceof Ze?c.reasonCode:"git-lifecycle-state-corrupt";return process.stderr.write(`[Neocortex] ${d}. No request was sent; repair the canonical project state and retry.
29
+ `),{success:!1,error:d,errorCode:"GIT_LIFECYCLE_STATE_INVALID",exitCode:1}}if(p!=="migrate-state")try{u.execute({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},()=>ca(s,{args:e.args,canonicalCommandId:p}),()=>{})}catch(c){if(c instanceof sa)return process.stderr.write(`${c.message}
30
+ `),{success:!1,error:c.message,exitCode:1};const d=c instanceof Error?c.message:String(c);return process.stderr.write(`[Neocortex] state.json repair stopped unexpectedly: ${d}. No request was sent; inspect .neocortex/state.json and rerun.
31
+ `),{success:!1,error:d,exitCode:1}}let k;if(e.privateExecutionBeta&&(p==="sync-openapi"||p==="arch-prd"||p==="arch-architecture"||p==="arch-fitness-functions"||p==="arch-api-contracts"||p==="arch-api-integrations"||p==="arch-database"||p==="arch-security"||p==="arch-design-system"||p==="arch-performance"||p==="arch-testing"||p==="arch-infrastructure"||p==="arch-review"||p==="update-memory"||p==="arch-ux-design"||p==="generate-pacts"||g))try{const{capturePrivateProjectStepBaseline:c}=await import("../private-execution/isolated-workspace.js");k=c(s)}catch{const c="private-execution-project-snapshot-unverified";return{success:!1,error:c,errorCode:c,exitCode:1}}let D;try{const c=await ki(s,e.args,p);D=vr(s,{epicAware:O,p205Authorities:c})}catch(c){const d=c instanceof Ze?c.reasonCode:"git-lifecycle-state-corrupt";return process.stderr.write(`[Neocortex] ${d}. No request was sent; repair the canonical project state/runtime sidecar and retry.
32
+ `),{success:!1,error:d,errorCode:"GIT_LIFECYCLE_STATE_INVALID",exitCode:1}}try{const{maybeAutoResolveYoloopArgs:c}=await import("../yoloop/invoke-hooks.js"),d={args:e.args,projectRoot:s,logger:{info:y=>process.stderr.write(`${y}
33
+ `),warn:y=>process.stderr.write(`${y}
34
+ `)}};c(d),d.args!==e.args&&(e={...e,args:d.args},i=d.args,n=zn(Mt(t.source,i)))}catch(c){const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] Auto-resolve hook (P121.05) failed: ${d}. Proceeding with raw args.
35
+ `)}try{const{readYoloopForRequest:c}=await import("../yoloop/invoke-hooks.js"),d=await c(e.args,s);if(d){const y=No(D,d);D.yoloop=y?{...d,continuationRecoveryEvidence:y}:d}}catch(c){if(/^\s*\*?(?:yoloop|auto-yolo|epic-runner|story-runner|loop-yolo|auto-epic)\b/i.test(e.args)){const y=c instanceof Error?c.message.match(/\bYOLOOP_[A-Z0-9_]+\b/)?.[0]??"YOLOOP_STATE_READ_FAILED":"YOLOOP_STATE_READ_FAILED";return process.stderr.write(`[Neocortex] ${y}. No yoloop request was sent and no state was mutated.
36
+ `),{success:!1,error:y,errorCode:y,exitCode:1}}}try{const{readContinuityForRequest:c}=await import("../continuity/invoke-hooks.js"),d=await c(e.args,s,void 0,u,{includeExistingStore:!m});d&&(D.continuity=d)}catch(c){if(c instanceof ft)return{success:!1,error:c.code,errorCode:c.code,exitCode:1};const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] continuity snapshot hook failed: ${d}. Proceeding without continuity state.
37
+ `)}try{const{maybeRunDiscoveryHook:c}=await import("../yoloop/invoke-hooks.js");await c({args:e.args,projectRoot:s,stateSnapshot:D,featureFlag:process.env.YOLOOP_AUTO_DISCOVERY!=="off",logger:{warn:d=>{console.warn(d)},info:d=>{console.error(d)}}})}catch(c){const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] discovery hook failed: ${d}. Proceeding without enrichment.
38
+ `)}try{const{readArchitecturePolicy:c}=await import("../policy/architecture-policy.js"),d=await c(s);d&&(D.architecture_policy=d)}catch(c){const d=c instanceof Error?c.message:String(c);console.warn(`[Neocortex] architecture-policy hook failed: ${d}. Proceeding without policy.`)}try{const c=/^(1|true|on|yes)$/i.test(process.env.NEOCORTEX_GRAPH_RETRIEVAL??""),{maybeRunGraphRetrievalHook:d}=await import("../yoloop/invoke-hooks.js"),y=await d({args:e.args,projectRoot:s,featureFlag:c,logger:{warn:T=>process.stderr.write(`${T}
39
+ `)}});y.applied&&y.metadata&&(D.graphRetrieval=y.metadata)}catch(c){const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] graph retrieval hook failed: ${d}. Proceeding without enrichment.
40
+ `)}try{if(di(e.args)){const{collectProjectEvidence:c}=await import("../evidence/collector.js"),d=o.selection.uiUxReview?.architectureDir,y=c({projectRoot:s,...d?{candidatePaths:[d],includeFallbackInventory:!0}:{}});(y.evidence.length>0||y.exclusions.length>0)&&(D.projectEvidence=y)}}catch(c){const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] project evidence collection failed: ${d}. Proceeding without local project evidence.
41
+ `)}try{const c=await u.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"checkpoint-consume",operation:"consume"},async()=>{const{readAndConsumeCheckpoint:d}=await import("../checkpoint/index.js");return d(s)},async()=>{});c&&(D.implementCheckpoint=c)}catch(c){const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] checkpoint hook failed: ${d}. Proceeding without checkpoint.
42
+ `)}const F=w?.licenseKey?new en({cacheDir:rn,passphrase:w.licenseKey,strictReadOnly:S}):null,$=i.trim();if(!$&&F){const c=await u.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"auth-cache",operation:"update"},()=>Pi(F),async()=>null);if(c)return u.complete(),{success:!0,instructions:c.instructions,metadata:c.metadata,exitCode:0}}const j=await wr(v,w?.licenseKey,u);if(j.status!=="authenticated"){const c=j.status==="refresh-required",d=!c&&w&&!w.licenseKey?" This may be caused by a machine fingerprint change (e.g., hardware or hostname change).":"";try{const y=Un(),T=Mn(c?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",y);T&&process.stderr.write(Vn(T,y))}catch{}return{success:!1,error:c?"Authentication refresh required. Run: neocortex activate YOUR-LICENSE-KEY":`Not authenticated.${d} Visit https://neocortex.sh/portal/login to get your license key, then run: neocortex activate YOUR-LICENSE-KEY`,errorCode:c?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",exitCode:c?1:2}}const B=D.config.project_id;try{await u.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>Oo(s,D,v,j.token,B,{refreshToken:()=>j.client.forceRefresh()}),async()=>0)}catch{}const me=Do($);if(me&&!m)try{const c=await j.tierClient.preFlightCheck(me);if(!c.allowed)return process.stderr.write(`[neocortex] ${c.message}
43
+ `),{success:!1,error:c.message??"Trigger not available on your plan",exitCode:1}}catch{}const ae=await Ji({args:$,projectRoot:s,platformTarget:b,environment:e.environment??process.env,bootstrapper:e.runnerBootstrapper,effectAuthority:u});if(ae.attachToRequest&&(D.runnerBootstrap=ae.metadata),ae.warning&&process.stderr.write(`[Neocortex] ${ae.warning}
44
+ `),!ae.shouldContinue)return ae.error&&process.stderr.write(`[Neocortex] ${ae.error}
45
+ `),{success:!1,error:ae.error??"Runner auto-bootstrap required but failed.",errorCode:ae.errorCode,exitCode:ae.exitCode??1};if(ae.metadata.command==="runner"&&(ae.metadata.operation==="status"||ae.metadata.operation==="doctor"))try{const c=e.runnerObserver??fa;D.runnerOperationalStatus=await c(ae.metadata.operation,{projectRoot:s,env:e.environment??process.env,effectAuthority:u})}catch{}let N;try{const c=ia($,D);if(c&&!c.ok){const d=`${c.code}: structural projection failed closed; select a valid target or repair the dependency DAG.`;return process.stderr.write(`${d}
46
+ `),{success:!1,error:d,errorCode:c.code,metadata:{stateProjection:c,publicSafe:!0},exitCode:1}}N=c?.snapshot??$n($,D),tn($)==="migrate-state"&&(N={...N,migrationAuthority:da(s)})}catch(c){if(c instanceof ua)return{success:!1,error:c.reasonCode,errorCode:c.reasonCode,exitCode:1};if(c instanceof Bn){const d=`${c.code}: structural projection failed closed; select a valid target or repair the dependency DAG.`;return process.stderr.write(`${d}
47
+ `),{success:!1,error:d,errorCode:c.code,metadata:{structuralProjection:{...c.publicDetails,publicSafe:!0}},exitCode:1}}throw c}if(!S)try{const{openNativeAgentPrivateStore:c,resolveNativeAgentPrivateRuntimePaths:d}=await import("../continuity/native-agent-store.js"),y=d(s);if(lt(y.databasePath)){const T=await c(s);try{const q=T.store.listRecentNativeAgentDispatches(20);q.length>0&&(N.nativeAgentDispatches=q)}finally{T.store.close()}}}catch{}const G=tn($);let ze=!1;if(G==="arch-plan"&&!S&&N.archPlan?.execution===void 0){const c=Fr(i);if(c)try{if(!Object.hasOwn(D.epics,c)||!Object.hasOwn(N.epics,c))throw new Error("architecture-root-epic-binding-invalid");const d=vt(s,c);N={...N,archPlan:{execution:{schemaVersion:1,owner:"root",currentStageCommand:"arch-prd",continuationState:"delegate",evidencePolicy:"v2-required",targetEpicId:c,graphRevision:d,graphSource:"committed-epic-v1",acceptedStages:[]}}},ze=!0}catch{return{success:!1,error:"architecture-root-epic-binding-invalid",errorCode:"architecture-root-epic-binding-invalid",exitCode:1}}}if((G==="arch-plan"||G?.startsWith("arch-")||G==="generate-pacts"||G==="update-memory")&&N.archPlan?.execution?.graphSource==="committed-epic-v1")try{const c=N.archPlan.execution;if(typeof c.targetEpicId!="string"||typeof c.graphRevision!="string"||c.graphRevision!==vt(s,c.targetEpicId))throw new Error("architecture-root-epic-binding-invalid")}catch{return{success:!1,error:"architecture-root-epic-binding-invalid",errorCode:"architecture-root-epic-binding-invalid",exitCode:1}}const $e=B;if((G==="create-epic"||G==="idea-diagnose")&&!$e){const c='EPIC_PROJECT_ID_REQUIRED: run `neocortex-client invoke --args "*migrate-project-id"` and retry the planning command. No repository checkout or database credentials are required.';return process.stderr.write(`${c}
48
+ `),{success:!1,error:c,errorCode:"EPIC_PROJECT_ID_REQUIRED",exitCode:1}}let ke;try{ke=u.execute({phase:"client-preflight",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>G==="create-epic"||G==="idea-diagnose"?ti(s,$,G):void 0,()=>{})}catch{return{success:!1,error:"EPIC_CLAIM_INTEGRITY_FAILURE",errorCode:"EPIC_CLAIM_INTEGRITY_FAILURE",exitCode:1}}const st=ke?.key,Fe=S?{schemaVersion:1,invocationId:u.invocationId,intent:u.intent,clientProjection:Aa(Jn.map(c=>({...c,count:1})))}:void 0;let Q,de,ie;if(e.privateExecutionBeta&&G==="idea-research")try{const c=N.scope?.targetEpicId,d=c?N.epics[c]:void 0,y=h(d?.createEpicPlanningPhysical)?d.createEpicPlanningPhysical:void 0;if(!c||!y||typeof y.claimId!="string"||typeof y.receiptId!="string")throw new Error("planning-research-predecessor-unavailable");const T=K(s,".neocortex/state.json"),q=ht(T);if(!q.isFile()||q.isSymbolicLink()||q.size>8*1024*1024)throw new Error("planning-research-state-unavailable");const _e=Re(T),te=JSON.parse(_e.toString("utf8")),Z=Nn(te,y.claimId,c),ee=h(te)&&h(te.epics)&&h(te.epics[c])?te.epics[c]:void 0,M=h(ee?.createEpicPlanningPhysical)?ee.createEpicPlanningPhysical:void 0;if(M?.receiptId!==y.receiptId||!I(M,y))throw new Error("planning-research-predecessor-drift");const ue=[".neocortex/state.json",".neocortex/planning/planning.json",`.neocortex/planning/epic-${c}/idea.json`,`.neocortex/planning/epic-${c}/diagnosis.md`,`.neocortex/planning/epic-${c}/enriched-prompt.md`],V={...process.env};for(const pe of["GIT_DIR","GIT_WORK_TREE","GIT_INDEX_FILE","GIT_OBJECT_DIRECTORY","GIT_ALTERNATE_OBJECT_DIRECTORIES","GIT_COMMON_DIR","GIT_NAMESPACE","GIT_CEILING_DIRECTORIES"])delete V[pe];for(const pe of ue){const ge=ht(K(s,pe));if(!ge.isFile()||ge.isSymbolicLink()||ge.size>8*1024*1024)throw new Error("planning-research-source-unavailable");const Pe=Le("git",["show",`HEAD:${pe}`],{cwd:s,env:V,stdio:["ignore","pipe","ignore"],timeout:3e4,maxBuffer:8*1024*1024});if(!Re(K(s,pe)).equals(Pe))throw new Error("planning-research-source-uncommitted")}de={claimId:y.claimId,epicId:c,diagnosisReceiptId:Z.diagnosisReceiptId,intakeRevision:Z.intakeRevision,physicalAcceptanceReceiptId:y.receiptId,sourceStateSha256:Be("sha256").update(_e).digest("hex")}}catch{return{success:!1,error:"private-execution-planning-predecessor-unavailable",errorCode:"private-execution-planning-predecessor-unavailable",exitCode:1}}if(e.privateExecutionBeta&&G==="generate-epic")try{const c=N.scope?.targetEpicId,d=c?N.epics[c]:void 0,y=h(d?.createEpicPlanningResearchPhysical)?d.createEpicPlanningResearchPhysical:void 0;if(!c||!y||typeof y.claimId!="string"||typeof y.receiptId!="string")throw new Error("planning-generation-predecessor-unavailable");const T=K(s,".neocortex/state.json"),q=ht(T);if(!q.isFile()||q.isSymbolicLink()||q.size>8*1024*1024)throw new Error("planning-generation-state-unavailable");const _e=Re(T),te=JSON.parse(_e.toString("utf8")),Z=Ln(te,y.claimId,c),ee=h(te)&&h(te.epics)&&h(te.epics[c])?te.epics[c]:void 0,M=h(ee?.createEpicPlanningResearchPhysical)?ee.createEpicPlanningResearchPhysical:void 0;if(M?.receiptId!==y.receiptId||!I(M,y))throw new Error("planning-generation-predecessor-drift");const ue=[".neocortex/state.json",".neocortex/planning/planning.json",`.neocortex/planning/epic-${c}/idea.json`,`.neocortex/planning/epic-${c}/diagnosis.md`,`.neocortex/planning/epic-${c}/enriched-prompt.md`,`.neocortex/planning/epic-${c}/research.md`],V={...process.env};for(const pe of["GIT_DIR","GIT_WORK_TREE","GIT_INDEX_FILE","GIT_OBJECT_DIRECTORY","GIT_ALTERNATE_OBJECT_DIRECTORIES","GIT_COMMON_DIR","GIT_NAMESPACE","GIT_CEILING_DIRECTORIES"])delete V[pe];for(const pe of ue){const ge=ht(K(s,pe));if(!ge.isFile()||ge.isSymbolicLink()||ge.size>8*1024*1024)throw new Error("planning-generation-source-unavailable");const Pe=Le("git",["show",`HEAD:${pe}`],{cwd:s,env:V,stdio:["ignore","pipe","ignore"],timeout:3e4,maxBuffer:8*1024*1024});if(!Re(K(s,pe)).equals(Pe))throw new Error("planning-generation-source-uncommitted")}ie={claimId:y.claimId,epicId:c,diagnosisReceiptId:Z.diagnosisReceiptId,researchReceiptId:Z.researchReceiptId,intakeRevision:Z.intakeRevision,physicalAcceptanceReceiptId:Z.physicalAcceptanceReceiptId,sourceStateSha256:Be("sha256").update(_e).digest("hex")}}catch{return{success:!1,error:"private-execution-planning-predecessor-unavailable",errorCode:"private-execution-planning-predecessor-unavailable",exitCode:1}}if(e.privateExecutionBeta)try{const{preflightPrivateCodexExecutor:c}=await import("../private-execution/codex-executor.js");Q=await c(s)}catch(c){const d=c instanceof Error&&/^private-codex-[a-z-]+$/.test(c.message)?c.message:"private-codex-preflight-unavailable";return{success:!1,error:d,errorCode:d,exitCode:1}}const tt=Q?{schemaVersion:1,hostKind:"codex-cli",hostVersion:Q.hostVersion,sandboxProof:{schemaVersion:5,trust:"client-self-attested",credentialKind:"chatgpt-subscription",authIsolation:"passed",workspaceWrite:"passed",gitControlWriteDenied:"passed",gitLifecycleReadDenied:"passed",mcpIsolation:"passed",environmentIsolation:"passed",networkDenied:"passed",observedAtMs:Q.observedAtMs}}:void 0;let De;if(G==="arch-plan"&&N.archPlan?.execution?.currentStageCommand==="generate-pacts"&&N.archPlan.execution.continuationState==="ask-user")try{if(De=xn(s),!De)throw new Error("architecture-answers-required")}catch(c){const d=c instanceof Error&&/^architecture-answers-[a-z-]+$/.test(c.message)?c.message:"architecture-answers-failed";return{success:!1,error:d,errorCode:d,exitCode:1}}let je;if(G==="arch-plan"&&N.archPlan?.execution?.currentStageCommand==="generate-pacts"&&N.archPlan.execution.continuationState==="delegate"&&N.archPlan.execution.childStatus==="succeeded")try{if(je=xn(s),!je||!I(N.archPlan.execution.pactAnswerReceipt,je))throw new Error("architecture-answers-conflict")}catch{return{success:!1,error:"architecture-answers-conflict",errorCode:"architecture-answers-conflict",exitCode:1}}let P,oe,J;if(e.privateExecutionBeta&&G==="generate-pacts")try{const c=i.trim().match(/^\*?generate-pacts (P[1-9][0-9]{0,11})$/)?.[1],d=N.archPlan?.execution;if(oe=Gr(s),!c||!d||d.currentStageCommand!=="generate-pacts"||d.continuationState!=="delegate"||d.targetEpicId!==c||!oe||!I(d.pactAnswerReceipt,oe.receipt))throw new Error("private-execution-pact-admission-unverified");const y=qr(s,oe.answers.generateProvider);if(y.outcome!=="ready")throw new Error("private-execution-pact-admission-unverified");P=y.writeSet,J={schemaVersion:1,targetEpicId:c,graphRevision:oe.receipt.graphRevision,answersSha256:oe.receipt.answersSha256,specSha256:P.specSha256,pathsSha256:P.pathsSha256,endpointCount:P.endpointCount,pathCount:P.paths.length,publicSafe:!0}}catch{const c="private-execution-pact-admission-unverified";return{success:!1,error:c,errorCode:c,exitCode:1}}let Ce,ce;if(e.privateExecutionBeta&&G==="arch-ux-design")try{const c=i.trim().match(/^\*?arch-ux-design (P[1-9][0-9]{0,11})$/)?.[1],d=N.archPlan?.execution;if(!c||!d||d.currentStageCommand!=="arch-ux-design"||d.continuationState!=="delegate"||d.targetEpicId!==c||typeof d.graphRevision!="string"||!/^[a-f0-9]{64}$/.test(d.graphRevision))throw new Error("private-execution-ux-admission-unverified");const{deriveUxWriteSet:y}=await import("../private-execution/ux-write-set.js");Ce=y(s,c),ce={schemaVersion:1,targetEpicId:c,graphRevision:d.graphRevision,adapterId:Ce.adapterId,authoritySha256:Ce.authoritySha256,pathsSha256:Ce.pathsSha256,screenCount:Ce.screenCount,pathCount:Ce.pathCount,publicSafe:!0}}catch{const c="private-execution-ux-admission-unverified";return{success:!1,error:c,errorCode:c,exitCode:1}}let z={args:i,projectRoot:s.replace(At(),"~"),stateSnapshot:N,...De?{architectureAnswerReceipt:De}:{},...J?{pactExecutionInput:J}:{},...ce?{uxExecutionInput:ce}:{},platformTarget:b,...Y?{nativeHostAttestation:Y}:{},...tt?{privateExecution:tt}:{},projectId:$e,inputEvidence:n,idempotencyKey:st,registryVersion:ot,registryChecksum:it,...Fe?{strictReadOnly:Fe}:{}};const St=yt(z);if(!S&&e.inputSource&&e.inputSource!=="args"&&St>=an)try{z={argsRef:(await Ca(u,"secondary-mutation",()=>Bi(v,i,j.token,()=>j.client.forceRefresh()),async()=>{throw new ft("readonly-physical-boundary-unsafe","boundary")})).argsRef,projectRoot:s.replace(At(),"~"),stateSnapshot:N,...De?{architectureAnswerReceipt:De}:{},platformTarget:b,...Y?{nativeHostAttestation:Y}:{},...tt?{privateExecution:tt}:{},projectId:$e,inputEvidence:n,idempotencyKey:st,registryVersion:ot,registryChecksum:it,...Fe?{strictReadOnly:Fe}:{}}}catch(c){return c instanceof ft?{success:!1,error:c.code,errorCode:c.code,exitCode:1}:{success:!1,error:`INVOKE_MATERIALIZATION_FAILED: ${c instanceof Error?c.message:String(c)}`,errorCode:"INVOKE_MATERIALIZATION_FAILED",exitCode:1}}if(G==="yolo"&&N.scope?.projectionMode==="yolo-story"){const c=N.scope?.targetStoryId,d=N.scope?.targetEpicId;if(!c||!d)return{success:!1,error:"yolo-spec-envelope-target-mismatch",errorCode:"yolo-spec-envelope-target-mismatch",exitCode:1};try{const{collectYoloSpecEnvelope:y}=await import("../yolo/spec-envelope-collector.js"),T=y({projectRoot:s,storyId:c,epicId:d,inputSha256:n.sha256,onOmittedReferences:q=>process.stderr.write(`[Neocortex] yolo-spec-supporting-references-omitted count=${q}; core story artifacts preserved.
49
+ `)});if(/\sbranchless-preparation\s*$/.test(i))z={...z,yoloSpecEnvelope:T};else{const{collectYoloChangeEvidence:q,reconcileYoloChangeEvidenceLease:_e}=await import("../yolo/change-evidence-collector.js");await _e({projectRoot:s,storyId:c,epicId:d});const te=q({projectRoot:s,defaultBranch:N.config.default_branch,expectedHeadSha:T.sourceRevision.headSha,storyId:c,epicId:d});z={...z,yoloSpecEnvelope:T,yoloChangeEvidence:te}}}catch(y){const T=y instanceof Error&&/^yolo-(?:spec-envelope|change-evidence)-[a-z-]+$/.test(y.message)?y.message:"yolo-spec-envelope-unsafe";return{success:!1,error:T,errorCode:T,exitCode:1}}}try{const c=kr(z);if(G==="migrate-state"&&c.degraded)return{success:!1,error:"state_migration_payload_degraded",errorCode:"state_migration_payload_degraded",exitCode:1};z=c.body,c.degraded?Or(z,c.telemetry):Yi(z)}catch(c){if(c instanceof un||c instanceof pn)return Or(z,c.telemetry),process.stderr.write(`[Neocortex] ${c.message}
50
+ `),{success:!1,error:c.message,errorCode:c.code,metadata:{invokePayload:c.telemetry},exitCode:1};throw c}if(G==="yolo"&&z.yoloSpecEnvelope)try{const{collectYoloSpecEnvelope:c}=await import("../yolo/spec-envelope-collector.js"),d=c({projectRoot:s,storyId:z.yoloSpecEnvelope.storyId,epicId:z.yoloSpecEnvelope.epicId,inputSha256:n.sha256,collectedAt:z.yoloSpecEnvelope.collectedAt});if(d.envelopeSha256!==z.yoloSpecEnvelope.envelopeSha256)throw new Error("yolo-spec-envelope-stale");if(z.yoloChangeEvidence){const{collectYoloChangeEvidence:y}=await import("../yolo/change-evidence-collector.js"),T=y({projectRoot:s,defaultBranch:N.config.default_branch,expectedHeadSha:d.sourceRevision.headSha,storyId:d.storyId,epicId:d.epicId});if(T.pathsSha256!==z.yoloChangeEvidence.pathsSha256||T.baseSha!==z.yoloChangeEvidence.baseSha)throw new Error("yolo-spec-envelope-stale")}}catch{return{success:!1,error:"yolo-spec-envelope-stale",errorCode:"yolo-spec-envelope-stale",exitCode:1}}const x=G==="arch-plan"?z.stateSnapshot.archPlan?.execution:void 0;let qe;if(x?.owner==="root"&&(x.currentStageCommand==="arch-prd"||x.currentStageCommand==="arch-architecture"||x.currentStageCommand==="arch-fitness-functions"||x.currentStageCommand==="arch-api-contracts"||x.currentStageCommand==="generate-pacts"||x.currentStageCommand==="arch-api-integrations"||x.currentStageCommand==="arch-database"||x.currentStageCommand==="arch-security"||x.currentStageCommand==="arch-design-system"||x.currentStageCommand==="arch-ux-design"||x.currentStageCommand==="arch-performance"||x.currentStageCommand==="arch-testing"||x.currentStageCommand==="arch-infrastructure"||x.currentStageCommand==="arch-review"||x.currentStageCommand==="update-memory")&&(x.continuationState==="delegate"||x.continuationState==="advance"||x.currentStageCommand==="arch-review"&&x.continuationState==="ask-user"||x.currentStageCommand==="generate-pacts"&&x.continuationState==="ask-user"))try{const c=Re(K(s,".neocortex","state.json"),"utf8"),d=JSON.parse(c),y=h(d.archPlan)?d.archPlan.execution:void 0;if(ze?y!==void 0||!h(d.epics)||!Object.hasOwn(d.epics,String(x.targetEpicId))||x.graphSource!=="committed-epic-v1"||x.graphRevision!==vt(s,String(x.targetEpicId)):!I(Wt(y),x))throw new Error("architecture-root-state-binding-invalid");if(qe=Be("sha256").update(c).digest("hex"),De&&De.stateSha256!==qe)throw new Error("architecture-root-state-binding-invalid");if(x.currentStageCommand==="update-memory"&&x.childStatus==="succeeded"&&(!Qt(x.terminalMemoryCheckpoint,x)||!I(x.terminalMemoryCheckpoint,kn(s,x))))throw new Error("architecture-terminal-memory-physical-invalid")}catch{return{success:!1,error:"architecture-root-state-binding-invalid",errorCode:"architecture-root-state-binding-invalid",exitCode:1}}let f=await Yn("invoke-query",()=>Br(v,z,j.token,{refreshToken:()=>j.client.forceRefresh()})),dt;if(S&&f.ok)try{if(m){const d=f.data?.metadata;if(d&&["stateUpdate","stateMutated","yoloopStateUpdate","continuityStateUpdate","checkpoint","schedulerStateUpdate","quotaCacheUpdate","projectIdentityMigration","epicClaim","gitLifecycleGraphAuthority"].some(T=>d[T]!==void 0))throw new ft("readonly-response-conflict")}const c=f.data?.metadata.strictReadOnly;ba(u,c),m&&Oa(f.data?.metadata.strictDiagnose,a,f.data?.instructions??""),dt=c.security}catch(c){const d=c instanceof ft?c.code:"readonly-receipt-mismatch";return{success:!1,error:d,errorCode:d,exitCode:1}}if(!f.ok&&f.status===426){const c=f.errorBody,d=c?.upgrade_command??"npm install -g @ornexus/neocortex@latest",y=c?.min_version??"unknown";return process.stderr.write(`
48
51
  `),process.stderr.write(`==================================================
49
52
  `),process.stderr.write(` UPGRADE REQUIRED
50
53
  `),process.stderr.write(`==================================================
51
54
  `),process.stderr.write(`
52
- Your Neocortex version (${je}) is no longer supported.
53
- `),process.stderr.write(` Minimum required: ${g}
55
+ Your Neocortex version (${gt}) is no longer supported.
56
+ `),process.stderr.write(` Minimum required: ${y}
54
57
 
55
58
  `),process.stderr.write(` Run this command to update:
56
59
 
57
- `),process.stderr.write(` ${u}
60
+ `),process.stderr.write(` ${d}
58
61
 
59
62
  `),process.stderr.write(` After updating, re-run your command.
60
63
  `),process.stderr.write(`==================================================
61
64
 
62
- `),{success:!1,error:`UPGRADE_REQUIRED: Client version ${je} is below minimum ${g}. Run: ${u}`,exitCode:3}}if(!E.ok||!E.data){const s=E.status===401?2:(E.status===429||E.status>=500,1),u=Oo(E);try{if(u){const g=Vt(),T=Mt(u,g);T&&process.stderr.write(Ut(T,g))}}catch{}return{success:!1,error:de(E.error??"Unknown error from server",ke),...u?{errorCode:u}:{},exitCode:s}}if(e.privateExecutionBeta&&!Zr(E.data))return{success:!1,error:"private-execution-public-envelope-invalid",errorCode:"private-execution-public-envelope-invalid",exitCode:1};if(!N&&E.data.metadata?.mode==="menu"&&V&&await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"auth-cache",operation:"update"},()=>vo(V,E.data.instructions,E.data.metadata),async()=>{}).catch(()=>{}),E.data.metadata&&await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"tier-cache",operation:"update"},()=>P.tierClient.updateQuotaFromResponse(E.data.metadata),async()=>{}).catch(()=>{}),E.data.metadata?.stateMutated===!0)try{const s=await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},async()=>{const{persistMigratedStateFromResponse:u}=await import("../yoloop/invoke-hooks.js");return u(E.data.metadata,c)},async()=>({applied:!1,blocking:!1,reasonCode:"state-writeback-effect-skipped"}));if(s.blocking){const u=`STATE_WRITEBACK_BLOCKED: ${s.reasonCode}. Canonical state was not replaced.`;return process.stderr.write(`${u}
63
- `),{success:!1,error:u,errorCode:"STATE_WRITEBACK_BLOCKED",exitCode:1}}}catch(s){if(E.data.metadata?.stateMutationReason==="inline-yolo-materialized-synthetic-story"){const u=s instanceof Error?s.message:String(s),g=`STATE_WRITEBACK_BLOCKED: inline-yolo persistence failed (${de(u,ke)}).`;return process.stderr.write(`${g}
64
- `),{success:!1,error:g,errorCode:"STATE_WRITEBACK_BLOCKED",exitCode:1}}}if(E.data.metadata?.gitLifecycleGraphAuthority)try{await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},()=>Wn(c,E.data.metadata.gitLifecycleGraphAuthority),async()=>{throw new Error("git-lifecycle-graph-authority-effect-skipped")})}catch(s){const u=s instanceof Error&&/^git-lifecycle-/.test(s.message)?s.message:"git-lifecycle-graph-authority-persist-failed";return process.stderr.write(`[Neocortex] ${u}. Graph authority was not persisted; no YOLO checkpoint instruction was released.
65
- `),{success:!1,error:u,errorCode:"GIT_LIFECYCLE_GRAPH_AUTHORITY_INVALID",exitCode:1}}if(E.data.metadata?.mode==="error"&&E.data.metadata?.errorCode==="CLIENT_UPGRADE_REQUIRED")return process.stderr.write(`
65
+ `),{success:!1,error:`UPGRADE_REQUIRED: Client version ${gt} is below minimum ${y}. Run: ${d}`,exitCode:3}}if(!f.ok||!f.data){const c=f.status===401?2:(f.status===429||f.status>=500,1),d=Di(f);try{if(d){const y=Un(),T=Mn(d,y);T&&process.stderr.write(Vn(T,y))}}catch{}return{success:!1,error:Ve(f.error??"Unknown error from server",ct),...d?{errorCode:d}:{},exitCode:c}}if(e.privateExecutionBeta&&!Kr(f.data))return{success:!1,error:"private-execution-public-envelope-invalid",errorCode:"private-execution-public-envelope-invalid",exitCode:1};if(qe&&x&&f.data.metadata?.mode==="arch-plan"&&h(f.data.metadata.archPlan)&&h(f.data.metadata.archPlan.execution)&&(f.data.metadata.archPlan.execution.nextAction==="delegate"||f.data.metadata.archPlan.execution.nextAction==="resume"||f.data.metadata.archPlan.execution.nextAction==="ask-user"||f.data.metadata.archPlan.execution.nextAction==="complete"&&f.data.metadata.archPlan.execution.currentStageCommand==="update-memory"||f.data.metadata.archPlan.execution.nextAction==="blocked"&&(f.data.metadata.archPlan.execution.currentStageCommand==="arch-ux-design"||f.data.metadata.archPlan.execution.currentStageCommand==="arch-performance"||f.data.metadata.archPlan.execution.currentStageCommand==="arch-testing"||f.data.metadata.archPlan.execution.currentStageCommand==="arch-infrastructure"||f.data.metadata.archPlan.execution.currentStageCommand==="arch-review")))try{await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},async()=>Si({projectRoot:s,sourceStateSha256:qe,requestExecution:x,initialBinding:ze,answerReceipt:De,pactRecordedReceipt:je,metadata:f.data.metadata}),async()=>{throw new Error("architecture-root-writeback-effect-skipped")})}catch(c){const d=c instanceof Error&&/^architecture-root-[a-z-]+$/.test(c.message)?c.message:"architecture-root-writeback-failed";return process.stderr.write(`[Neocortex] ${d}. Root stage instruction was not released.
66
+ `),{success:!1,error:d,errorCode:d,exitCode:1}}if(!$&&f.data.metadata?.mode==="menu"&&F&&await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"auth-cache",operation:"update"},()=>Oi(F,f.data.instructions,f.data.metadata),async()=>{}).catch(()=>{}),f.data.metadata&&await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"tier-cache",operation:"update"},()=>j.tierClient.updateQuotaFromResponse(f.data.metadata),async()=>{}).catch(()=>{}),f.data.metadata?.stateMutated===!0)try{const c=await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},async()=>{const{persistMigratedStateFromResponse:d}=await import("../yoloop/invoke-hooks.js");return d(f.data.metadata,s)},async()=>({applied:!1,blocking:!1,reasonCode:"state-writeback-effect-skipped"}));if(c.blocking){const d=`STATE_WRITEBACK_BLOCKED: ${c.reasonCode}. Canonical state was not replaced.`;return process.stderr.write(`${d}
67
+ `),{success:!1,error:d,errorCode:"STATE_WRITEBACK_BLOCKED",exitCode:1}}}catch(c){if(f.data.metadata?.stateMutationReason==="inline-yolo-materialized-synthetic-story"){const d=c instanceof Error?c.message:String(c),y=`STATE_WRITEBACK_BLOCKED: inline-yolo persistence failed (${Ve(d,ct)}).`;return process.stderr.write(`${y}
68
+ `),{success:!1,error:y,errorCode:"STATE_WRITEBACK_BLOCKED",exitCode:1}}}if(f.data.metadata?.gitLifecycleGraphAuthority)try{await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},()=>Wa(s,f.data.metadata.gitLifecycleGraphAuthority),async()=>{throw new Error("git-lifecycle-graph-authority-effect-skipped")})}catch(c){const d=c instanceof Error&&/^git-lifecycle-/.test(c.message)?c.message:"git-lifecycle-graph-authority-persist-failed";return process.stderr.write(`[Neocortex] ${d}. Graph authority was not persisted; no YOLO checkpoint instruction was released.
69
+ `),{success:!1,error:d,errorCode:"GIT_LIFECYCLE_GRAPH_AUTHORITY_INVALID",exitCode:1}}if(f.data.metadata?.mode==="error"&&f.data.metadata?.errorCode==="CLIENT_UPGRADE_REQUIRED")return process.stderr.write(`
66
70
  `),process.stderr.write(`==================================================
67
71
  `),process.stderr.write(` YOLOOP CLIENT UPGRADE REQUIRED
68
72
  `),process.stderr.write(`==================================================
69
73
  `),process.stderr.write(`
70
- Your Neocortex client version (${je}) does not
74
+ Your Neocortex client version (${gt}) does not
71
75
  `),process.stderr.write(` support client-side yoloop state persistence.
72
76
 
73
77
  `),process.stderr.write(` Run this command to upgrade:
@@ -77,18 +81,42 @@ ${t}
77
81
  `),process.stderr.write(` After upgrading, re-run your yoloop command.
78
82
  `),process.stderr.write(`==================================================
79
83
 
80
- `),{success:!1,error:"CLIENT_UPGRADE_REQUIRED: This client does not support yoloop client-side persistence. Run: npm install -g @ornexus/neocortex@latest",exitCode:3};if(E.data.metadata?.yoloopStateUpdate){const u=(E.data.metadata.yoloopStateUpdate.operations??[]).some(g=>g.type==="rollover_session");try{const g=await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},async()=>{const{persistYoloopFromResponse:T}=await import("../yoloop/invoke-hooks.js");return T(E.data.metadata,c)},async()=>({ok:!0,authoritative:!1,reasonCodes:[]}));if(g&&g.ok===!1){const T=g.reasonCodes[0]??"YOLOOP_AUTHORITATIVE_WRITEBACK_FAILED";return process.stderr.write(`[Neocortex] ${T}. No yoloop continuation instructions were released.
81
- `),{success:!1,error:T,errorCode:T,exitCode:1}}}catch(g){if(u){const T=g instanceof Error?g.message.match(/\bYOLOOP_[A-Z0-9_]+\b/)?.[0]??"YOLOOP_AUTHORITATIVE_WRITEBACK_FAILED":"YOLOOP_AUTHORITATIVE_WRITEBACK_FAILED";return process.stderr.write(`[Neocortex] ${T}. No yoloop continuation instructions were released.
82
- `),{success:!1,error:T,errorCode:T,exitCode:1}}}}if(E.data.metadata?.continuityStateUpdate)try{const s=await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"continuity-store",operation:"update"},async()=>{const{persistContinuityFromResponse:u}=await import("../continuity/invoke-hooks.js");return u(E.data.metadata,c)},async()=>({ok:!0,reasonCodes:[]}));if(!s.ok){const u=s.reasonCodes.join(",");return process.stderr.write(`[Neocortex] continuity persistence failed: ${u}. No continuity mutation was committed.
83
- `),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${u}`,errorCode:"CONTINUITY_PERSISTENCE_FAILED",exitCode:1}}}catch(s){const u=s instanceof Error?s.message:String(s);return process.stderr.write(`[Neocortex] continuity persistence hook failed: ${u}. No continuity mutation was committed.
84
- `),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${de(u,ke)}`,errorCode:"CONTINUITY_PERSISTENCE_FAILED",exitCode:1}}if(E.data.metadata?.tier_changed){const s=E.data.metadata.current_tier;try{await P.client.forceRefresh()?(await P.tierClient.invalidateTierCache(),process.stderr.write(`[Neocortex] Token atualizado automaticamente para tier ${s}
85
- `)):process.stderr.write(`[Neocortex] Seu tier foi atualizado para ${s}! Execute "neocortex activate" para obter um token atualizado.
86
- `)}catch{process.stderr.write(`[Neocortex] Seu tier foi atualizado para ${s}! Execute "neocortex activate" para obter um token atualizado.
87
- `)}}let me,xt=!1;if(e.privateExecutionBeta)try{if(!W||!E.data.metadata?.privateExecution||!_e||E.data.metadata?.mode!=="yolo"&&E.data.metadata?.mode!=="step"&&E.data.metadata?.mode!=="pipeline"&&E.data.metadata?.mode!=="create-epic"||typeof E.data.metadata.stepId!="string")throw new Error("private-execution-descriptor-unavailable");const{consumePrivateExecutionDelivery:s,privateExecutionStateSnapshotSha256:u}=await import("../private-execution/delivery.js"),{preflightPrivateCodexExecutor:g,runPrivateCodexStep:T}=await import("../private-execution/codex-executor.js"),G=E.data.metadata.mode==="yolo",ae=E.data.metadata.mode==="create-epic";let le,z,Q;const b=E.data.metadata.gitLifecycleGraphAuthority,ee=E.data.metadata.privateExecutionRootAction;let Je;if(G){if(!b||typeof b.storyId!="string"||typeof b.graphRevision!="string"||typeof b.executionBranch!="string")throw new Error("private-execution-graph-unavailable");if(Je=b.storyId,ee?.action==="prepare-epic-checkout"){const{prepareDirectYoloSetup:Gr}=await import("../git/direct-yolo-checkpoint.js"),{capturePrivateYoloCleanHead:Yr,recordPrivateYoloCleanBaseline:Jr}=await import("../private-execution/clean-baseline.js"),zr=Yr(c),Nt=await Gr({projectRoot:c,storyId:ee.storyId});if(!Nt.ok)throw new Error("private-execution-root-setup-denied");await Jr(c,Nt.value,zr)}let F;try{F=Le("git",["symbolic-ref","--quiet","--short","HEAD"],{cwd:c,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch{throw new Error("private-execution-execution-branch-mismatch")}if(F!==b.executionBranch)throw new Error("private-execution-execution-branch-mismatch");const te=Xe(c,{required:!0}),L=typeof b.epicId=="string"?te.epics[b.epicId]:void 0,ce=y(L?.branch_lease)?L.branch_lease:void 0;if(!L||L.graph_revision!==b.graphRevision||!ce||ce.ownerStoryId!==b.storyId||typeof ce.expiresAt!="string"||!Number.isFinite(Date.parse(ce.expiresAt))||Date.parse(ce.expiresAt)<=Date.now())throw new Error("private-execution-writer-lease-unavailable")}else if(E.data.metadata.mode==="step"&&(E.data.metadata.resolvedTrigger==="research"||E.data.metadata.resolvedTrigger==="write-spec")||E.data.metadata.mode==="pipeline"&&E.data.metadata.resolvedTrigger==="exec"||ae&&E.data.metadata.resolvedTrigger==="create-epic"){if(!ae&&typeof E.data.metadata.storyId!="string")throw new Error("private-execution-descriptor-unavailable")}else throw new Error("private-execution-descriptor-unavailable");if(G){const{ensurePrivateYoloIsolatedSession:F,reconcilePrivateYoloIsolatedSession:te}=await import("../private-execution/isolated-session.js");if(ee?.action==="checkpoint-epic-story")await te(c,Je,b.graphRevision);else{const L=await F(c,Je,b.graphRevision,e.privateExecutionWorkspaceParent),ce=await g(L.workspace.workspacePath);if(ce.hostVersion!==W.hostVersion)throw new Error("private-codex-version-drift");W=ce}}if(Date.now()-W.observedAtMs>2e4){const F=await g(W.projectRoot);if(F.hostVersion!==W.hostVersion)throw new Error("private-codex-version-drift");W=F}const kt=await P.client.getToken();if(!kt)throw new Error("private-execution-auth-unavailable");const ye=ae?E.data.metadata.epicClaim:void 0;if(ae&&(!ye||typeof ye.claimId!="string"||typeof ye.epicId!="string"))throw new Error("private-execution-descriptor-unavailable");if(ae){if(!ge)throw new Error("private-execution-epic-claim-admission-unverified");d.execute({phase:"client-writeback",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>ar(c,ge.fingerprint,ye.claimId,ye.epicId),()=>{}),xt=!0;const{preparePrivateYoloIsolatedWorkspace:F,PRIVATE_EPIC_PENDING_SIDECAR:te}=await import("../private-execution/isolated-workspace.js"),L=e.privateExecutionWorkspaceParent??ne(De(),".local","share","neocortex","private-epic-workspaces");e.privateExecutionWorkspaceParent||ze(L,{recursive:!0,mode:448}),le=F(c,L,!0),Q=Ne("sha256").update(Te(ne(c,te))).digest("hex");const ce=await g(le.workspacePath);if(ce.hostVersion!==W.hostVersion)throw new Error("private-codex-version-drift");W=ce}else if(!G){const{preparePrivateYoloIsolatedWorkspace:F}=await import("../private-execution/isolated-workspace.js"),te=e.privateExecutionWorkspaceParent??ne(De(),".local","share","neocortex","private-step-workspaces");e.privateExecutionWorkspaceParent||ze(te,{recursive:!0,mode:448}),z=F(c,te);const L=await g(z.workspacePath);if(L.hostVersion!==W.hostVersion)throw new Error("private-codex-version-drift");W=L}const Fr=await s(E.data.metadata.privateExecution,{projectId:_e,commandId:G?"yolo":ae?"create-epic":E.data.metadata.mode==="pipeline"?"exec":E.data.metadata.resolvedTrigger==="write-spec"?"write-spec":"research",stepId:E.data.metadata.stepId,...G?{graphRevision:b.graphRevision}:{...ae?{claimId:ye.claimId,epicId:ye.epicId}:{storyId:E.data.metadata.storyId},stateSnapshotSha256:u(J)},inputSha256:i.sha256,hostKind:"codex-cli",hostVersion:W.hostVersion},F=>Ai(h,{...F},kt));if(ee?.action==="checkpoint-epic-story"){const{runPrivateYoloRootCheckpoint:F}=await import("../private-execution/root-checkpoint.js");me={...await F(c,ee)}}else{const F=await T(Fr,W,{requireWorkspaceEffect:!0,...G?{expectedExecutionBranch:b.executionBranch}:le?{expectedExecutionBranch:le.executionBranch}:z?{expectedExecutionBranch:z.executionBranch}:{}});if(G){const{admitPrivateYoloIsolatedSessionStep:te}=await import("../private-execution/isolated-session.js"),L=await te(c,Je,b.graphRevision);me={...F,isolation:{schemaVersion:1,outcome:L.admission.outcome,sequence:L.session.sequence,snapshotSha:L.session.snapshotSha,patchSha256:L.admission.patchSha256,changedPathCount:L.admission.changedPaths.length}}}else if(le){const{admitPrivateEpicClaimWorkspace:te}=await import("../private-execution/isolated-admission.js"),L=te(le,ye.claimId,ye.epicId,ge.fingerprint,Q);me={...F,isolation:{schemaVersion:1,outcome:L.outcome,baseSha:L.baseSha,patchSha256:L.patchSha256,changedPathCount:L.changedPaths.length}}}else if(z){const{admitPrivateStateBoundStepWorkspace:te}=await import("../private-execution/isolated-admission.js"),L=te(z,E.data.metadata.storyId);me={...F,isolation:{schemaVersion:1,outcome:L.outcome,baseSha:L.baseSha,patchSha256:L.patchSha256,changedPathCount:L.changedPaths.length}}}else me={...F}}}catch(s){const u=s instanceof Error&&/^(private-execution|private-codex)-[a-z-]+$/.test(s.message)?s.message:"private-execution-unverified";return{success:!1,error:u,errorCode:u,exitCode:1}}const ct=yt(E.data.instructions,E.data.metadata);if(ge&&!xt&&E.data.metadata?.mode!=="error")try{const s=E.data.metadata?.epicClaim;if(!s||typeof s!="object"||Array.isArray(s))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const u=s;if(u.outcome!=="reserved"||typeof u.claimId!="string"||typeof u.epicId!="string")throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");d.execute({phase:"client-writeback",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>ar(c,ge.fingerprint,u.claimId,u.epicId),()=>{})}catch{}return d.complete(Ot),{success:!0,instructions:me?me.outcome==="checkpoint-validated"?`# Checkpoint da story validado
84
+ `),{success:!1,error:"CLIENT_UPGRADE_REQUIRED: This client does not support yoloop client-side persistence. Run: npm install -g @ornexus/neocortex@latest",exitCode:3};if(f.data.metadata?.yoloopStateUpdate){const d=(f.data.metadata.yoloopStateUpdate.operations??[]).some(y=>y.type==="rollover_session");try{const y=await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},async()=>{const{persistYoloopFromResponse:T}=await import("../yoloop/invoke-hooks.js");return T(f.data.metadata,s)},async()=>({ok:!0,authoritative:!1,reasonCodes:[]}));if(y&&y.ok===!1){const T=y.reasonCodes[0]??"YOLOOP_AUTHORITATIVE_WRITEBACK_FAILED";return process.stderr.write(`[Neocortex] ${T}. No yoloop continuation instructions were released.
85
+ `),{success:!1,error:T,errorCode:T,exitCode:1}}}catch(y){if(d){const T=y instanceof Error?y.message.match(/\bYOLOOP_[A-Z0-9_]+\b/)?.[0]??"YOLOOP_AUTHORITATIVE_WRITEBACK_FAILED":"YOLOOP_AUTHORITATIVE_WRITEBACK_FAILED";return process.stderr.write(`[Neocortex] ${T}. No yoloop continuation instructions were released.
86
+ `),{success:!1,error:T,errorCode:T,exitCode:1}}}}if(f.data.metadata?.continuityStateUpdate)try{const c=await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"continuity-store",operation:"update"},async()=>{const{persistContinuityFromResponse:d}=await import("../continuity/invoke-hooks.js");return d(f.data.metadata,s)},async()=>({ok:!0,reasonCodes:[]}));if(!c.ok){const d=c.reasonCodes.join(",");return process.stderr.write(`[Neocortex] continuity persistence failed: ${d}. No continuity mutation was committed.
87
+ `),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${d}`,errorCode:"CONTINUITY_PERSISTENCE_FAILED",exitCode:1}}}catch(c){const d=c instanceof Error?c.message:String(c);return process.stderr.write(`[Neocortex] continuity persistence hook failed: ${d}. No continuity mutation was committed.
88
+ `),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${Ve(d,ct)}`,errorCode:"CONTINUITY_PERSISTENCE_FAILED",exitCode:1}}if(f.data.metadata?.tier_changed){const c=f.data.metadata.current_tier;try{await j.client.forceRefresh()?(await j.tierClient.invalidateTierCache(),process.stderr.write(`[Neocortex] Token atualizado automaticamente para tier ${c}
89
+ `)):process.stderr.write(`[Neocortex] Seu tier foi atualizado para ${c}! Execute "neocortex activate" para obter um token atualizado.
90
+ `)}catch{process.stderr.write(`[Neocortex] Seu tier foi atualizado para ${c}! Execute "neocortex activate" para obter um token atualizado.
91
+ `)}}let se,xt=!1;if(e.privateExecutionBeta)try{if(!Q||!f.data.metadata?.privateExecution||!$e||f.data.metadata?.mode!=="yolo"&&f.data.metadata?.mode!=="step"&&f.data.metadata?.mode!=="pipeline"&&f.data.metadata?.mode!=="create-epic"&&f.data.metadata?.mode!=="utility"&&f.data.metadata?.mode!=="tech-debt"||typeof f.data.metadata.stepId!="string")throw new Error("private-execution-descriptor-unavailable");const{consumePrivateExecutionDelivery:c,privateExecutionStateSnapshotSha256:d}=await import("../private-execution/delivery.js"),{preflightPrivateCodexExecutor:y,runPrivateCodexStep:T}=await import("../private-execution/codex-executor.js"),q=f.data.metadata.mode==="yolo",_e=f.data.metadata.mode==="create-epic",te=f.data.metadata.mode==="step"&&f.data.metadata.resolvedTrigger==="idea-diagnose",Z=f.data.metadata.mode==="step"&&f.data.metadata.resolvedTrigger==="idea-research",ee=f.data.metadata.mode==="step"&&f.data.metadata.resolvedTrigger==="generate-epic",M=_e||te;if(Z&&!de||ee&&!ie)throw new Error("private-execution-planning-predecessor-unavailable");const ue=f.data.metadata.mode==="utility"&&f.data.metadata.resolvedTrigger==="sync-openapi"||g&&f.data.metadata.mode==="tech-debt"&&f.data.metadata.resolvedTrigger==="tech-debt",V=f.data.metadata.mode==="step"&&(f.data.metadata.resolvedTrigger==="arch-prd"||f.data.metadata.resolvedTrigger==="arch-architecture"||f.data.metadata.resolvedTrigger==="arch-fitness-functions"||f.data.metadata.resolvedTrigger==="arch-api-contracts"||f.data.metadata.resolvedTrigger==="arch-api-integrations"||f.data.metadata.resolvedTrigger==="arch-database"||f.data.metadata.resolvedTrigger==="arch-security"||f.data.metadata.resolvedTrigger==="arch-design-system"||f.data.metadata.resolvedTrigger==="arch-performance"||f.data.metadata.resolvedTrigger==="arch-testing"||f.data.metadata.resolvedTrigger==="arch-infrastructure"||f.data.metadata.resolvedTrigger==="arch-review"||f.data.metadata.resolvedTrigger==="update-memory")?f.data.metadata.resolvedTrigger:void 0,pe=V!==void 0,ge=f.data.metadata.mode==="step"&&f.data.metadata.resolvedTrigger==="generate-pacts",Pe=f.data.metadata.mode==="step"&&f.data.metadata.resolvedTrigger==="arch-ux-design",An=g?"tech-debt":"sync-openapi",Rn=g?"tech-debt-registry-v1":"sync-openapi-contract-v1",Oe=N.archPlan?.execution,kt=Oe?.targetEpicId,Pt=Oe?.graphRevision;if(pe&&(Oe?.currentStageCommand!==V||typeof kt!="string"||!/^P[1-9][0-9]{0,11}$/.test(kt)||typeof Pt!="string"||!/^[a-f0-9]{64}$/.test(Pt)))throw new Error("private-execution-architecture-admission-unverified");if(ge&&(!J||!P||!oe||Oe?.currentStageCommand!=="generate-pacts"||Oe.continuationState!=="delegate"||Oe.targetEpicId!==J.targetEpicId||Oe.graphRevision!==J.graphRevision||!I(Oe.pactAnswerReceipt,oe.receipt)))throw new Error("private-execution-pact-admission-unverified");if(Pe&&(!ce||!Ce||Oe?.currentStageCommand!=="arch-ux-design"||Oe.continuationState!=="delegate"||Oe.targetEpicId!==ce.targetEpicId||Oe.graphRevision!==ce.graphRevision))throw new Error("private-execution-ux-admission-unverified");let bn;if(ge){const{planPactToolchainManifest:he,preparePactToolchainCandidate:ne}=await import("../private-execution/pact-toolchain.js");try{he(s,oe.answers.generateProvider),bn=ne(s,oe.answers.generateProvider)}catch(U){if(U.message!=="pact-toolchain-manifest-unsupported")throw U}}let rt,le,Kt;const Ee=f.data.metadata.gitLifecycleGraphAuthority,at=f.data.metadata.privateExecutionRootAction;let Ot;if(q){if(!Ee||typeof Ee.storyId!="string"||typeof Ee.graphRevision!="string"||typeof Ee.executionBranch!="string")throw new Error("private-execution-graph-unavailable");if(Ot=Ee.storyId,at?.action==="prepare-epic-checkout"){const{prepareDirectYoloSetup:Me}=await import("../git/direct-yolo-checkpoint.js"),{capturePrivateYoloCleanHead:pt,recordPrivateYoloCleanBaseline:Ne}=await import("../private-execution/clean-baseline.js"),Xt=pt(s),Nt=await Me({projectRoot:s,storyId:at.storyId});if(!Nt.ok)throw new Error("private-execution-root-setup-denied");await Ne(s,Nt.value,Xt)}let he;try{he=Le("git",["symbolic-ref","--quiet","--short","HEAD"],{cwd:s,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch{throw new Error("private-execution-execution-branch-mismatch")}if(he!==Ee.executionBranch)throw new Error("private-execution-execution-branch-mismatch");const ne=Ut(s,{required:!0}),U=typeof Ee.epicId=="string"?ne.epics[Ee.epicId]:void 0,A=h(U?.branch_lease)?U.branch_lease:void 0;if(!U||U.graph_revision!==Ee.graphRevision||!A||A.ownerStoryId!==Ee.storyId||typeof A.expiresAt!="string"||!Number.isFinite(Date.parse(A.expiresAt))||Date.parse(A.expiresAt)<=Date.now())throw new Error("private-execution-writer-lease-unavailable")}else if(f.data.metadata.mode==="step"&&(f.data.metadata.resolvedTrigger==="research"||f.data.metadata.resolvedTrigger==="write-spec"||f.data.metadata.resolvedTrigger==="create-tasks"||f.data.metadata.resolvedTrigger==="implement")||f.data.metadata.mode==="pipeline"&&f.data.metadata.resolvedTrigger==="exec"||_e&&f.data.metadata.resolvedTrigger==="create-epic"||te||Z||ee||ue||pe||ge||Pe){if(!M&&!Z&&!ee&&!ue&&!pe&&!ge&&!Pe&&typeof f.data.metadata.storyId!="string")throw new Error("private-execution-descriptor-unavailable")}else throw new Error("private-execution-descriptor-unavailable");if(q){const{ensurePrivateYoloIsolatedSession:he,reconcilePrivateYoloIsolatedSession:ne}=await import("../private-execution/isolated-session.js");if(at?.action==="checkpoint-epic-story")await ne(s,Ot,Ee.graphRevision);else{const U=await he(s,Ot,Ee.graphRevision,e.privateExecutionWorkspaceParent),A=await y(U.workspace.workspacePath);if(A.hostVersion!==Q.hostVersion)throw new Error("private-codex-version-drift");Q=A}}if(Date.now()-Q.observedAtMs>2e4){const he=await y(Q.projectRoot);if(he.hostVersion!==Q.hostVersion)throw new Error("private-codex-version-drift");Q=he}const Tn=await j.client.getToken();if(!Tn)throw new Error("private-execution-auth-unavailable");const Ae=M?f.data.metadata.epicClaim:void 0;if(M&&(!Ae||typeof Ae.claimId!="string"||typeof Ae.epicId!="string"))throw new Error("private-execution-descriptor-unavailable");if(M){if(!ke)throw new Error("private-execution-epic-claim-admission-unverified");u.execute({phase:"client-writeback",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>cr(s,ke.fingerprint,Ae.claimId,Ae.epicId),()=>{}),xt=!0;const{preparePrivateYoloIsolatedWorkspace:he,PRIVATE_EPIC_PENDING_SIDECAR:ne}=await import("../private-execution/isolated-workspace.js"),U=e.privateExecutionWorkspaceParent??K(At(),".local","share","neocortex","private-epic-workspaces");e.privateExecutionWorkspaceParent||Ct(U,{recursive:!0,mode:448}),rt=he(s,U,!0),Kt=Be("sha256").update(Re(K(s,ne))).digest("hex");const A=await y(rt.workspacePath);if(A.hostVersion!==Q.hostVersion)throw new Error("private-codex-version-drift");Q=A}else if(!q){const{preparePrivateYoloIsolatedWorkspace:he}=await import("../private-execution/isolated-workspace.js"),ne=e.privateExecutionWorkspaceParent??K(At(),".local","share","neocortex","private-step-workspaces");if(e.privateExecutionWorkspaceParent||Ct(ne,{recursive:!0,mode:448}),le=he(s,ne),ue||pe||ge||Pe){if(!k)throw new Error("private-execution-project-snapshot-unverified");const{assertPrivateProjectStepBaseline:A}=await import("../private-execution/isolated-workspace.js");A(le,k)}const U=await y(le.workspacePath);if(U.hostVersion!==Q.hostVersion)throw new Error("private-codex-version-drift");Q=U}const ut=await c(f.data.metadata.privateExecution,{projectId:$e,commandId:q?"yolo":_e?"create-epic":pe?V:ge?"generate-pacts":Pe?"arch-ux-design":ue?An:f.data.metadata.mode==="pipeline"?"exec":f.data.metadata.resolvedTrigger,stepId:f.data.metadata.stepId,...q?{graphRevision:Ee.graphRevision}:{...M?{claimId:Ae.claimId,epicId:Ae.epicId,...te?{writeSetId:"idea-diagnosis-v1"}:{}}:Z?{claimId:de.claimId,epicId:de.epicId,diagnosisReceiptId:de.diagnosisReceiptId,intakeRevision:de.intakeRevision,physicalAcceptanceReceiptId:de.physicalAcceptanceReceiptId,writeSetId:"idea-research-v1"}:ee?{claimId:ie.claimId,epicId:ie.epicId,diagnosisReceiptId:ie.diagnosisReceiptId,researchReceiptId:ie.researchReceiptId,intakeRevision:ie.intakeRevision,physicalAcceptanceReceiptId:ie.physicalAcceptanceReceiptId,writeSetId:"generate-epic-v1"}:ue?{writeSetId:Rn}:pe?{targetEpicId:kt,graphRevision:Pt,writeSetId:V==="arch-prd"?"arch-prd-docs-v1":V==="update-memory"?"arch-memory-canonical-v1":V==="arch-review"?"arch-review-doc-v1":V==="arch-infrastructure"?"arch-infrastructure-doc-v1":V==="arch-testing"?"arch-testing-doc-v1":V==="arch-performance"?"arch-performance-doc-v1":V==="arch-design-system"?"arch-design-system-doc-v1":V==="arch-security"?"arch-security-doc-v1":V==="arch-database"?"arch-database-doc-v1":V==="arch-api-integrations"?"arch-api-integrations-doc-v1":V==="arch-api-contracts"?"arch-api-contracts-docs-v1":V==="arch-fitness-functions"?"arch-fitness-tools-v1":"arch-architecture-doc-v1"}:ge?{targetEpicId:J.targetEpicId,graphRevision:J.graphRevision,answersSha256:J.answersSha256,specSha256:J.specSha256,pathsSha256:J.pathsSha256,endpointCount:J.endpointCount,pathCount:J.pathCount}:Pe?{targetEpicId:ce.targetEpicId,graphRevision:ce.graphRevision,adapterId:ce.adapterId,authoritySha256:ce.authoritySha256,pathsSha256:ce.pathsSha256,screenCount:ce.screenCount,pathCount:ce.pathCount}:{storyId:f.data.metadata.storyId},stateSnapshotSha256:d(N)},inputSha256:n.sha256,hostKind:"codex-cli",hostVersion:Q.hostVersion},he=>ko(v,{...he},Tn));if(at?.action==="checkpoint-epic-story"){const{runPrivateYoloRootCheckpoint:he}=await import("../private-execution/root-checkpoint.js");se={...await he(s,at)}}else{const he=te?`${ut}
88
92
 
89
- O root registrou o commit e a valida\xE7\xE3o f\xEDsica no branch do epic.`:`# Execu\xE7\xE3o privada conclu\xEDda; valida\xE7\xE3o f\xEDsica pendente
93
+ Private P01 handoff (local only):
94
+ The durable reserved epic ID is ${Ae.epicId}. Complete only the diagnosis for this exact ID. Write exactly .neocortex/planning/epic-${Ae.epicId}/idea.json, diagnosis.md, enriched-prompt.md and the matching entry in .neocortex/planning/planning.json. Do not write state.json, Git controls, another epic, or P02/P03 artifacts; do not auto-continue to the next step. The root will independently review and persist the accepted planning checkpoint.
95
+ `:Z?`${ut}
90
96
 
91
- O executor Codex retornou sem erro. Nenhum checkpoint ou aprova\xE7\xE3o da story foi emitido.`:ct.instructions,metadata:me?{...ct.metadata,privateExecutionReceipt:me}:ct.metadata,exitCode:0}}function Ti(e){const[t]=e.trim().split(/\s+/,1);return t?/^@?epic-[a-z0-9][a-z0-9._-]*$/i.test(t)?"epic":Dt(t):null}const $r="Provide exactly one invoke input source: --args <string>, --stdin, or --args-file <path>.",Oi=`
97
+ Private P02 handoff (local only):
98
+ The admitted epic is ${de.epicId}. Research only this exact diagnosed epic. Write exactly .neocortex/planning/epic-${de.epicId}/research.md and its transition in .neocortex/planning/planning.json. Do not write state.json, Git controls, another epic, or P03 artifacts; do not auto-continue. The root will independently review and seal the research candidate.
99
+ `:ee?`${ut}
100
+
101
+ Private P03 handoff (local only):
102
+ The admitted epic is ${ie.epicId}. Generate exactly docs/epics/epic-${ie.epicId}.md, 1 to 24 contiguous docs/stories/${ie.epicId}.NN.story.md files (01 through 24), and the matching transition in .neocortex/planning/planning.json. Do not write state.json, Git controls, another epic, or subsequent-stage artifacts; do not auto-continue. The root will independently review and seal the generated candidate.
103
+ `:ge?`${ut}
104
+
105
+ Private A03.5 handoff (local only):
106
+ ${JSON.stringify({consumer:oe.answers.consumer,provider:oe.answers.provider,matchersAggressive:oe.answers.matchersAggressive,generateProvider:oe.answers.generateProvider,brokerConfigured:oe.answers.brokerUrl!==null,allowedPaths:P.paths})}
107
+ Read docs/api/openapi.yaml. Write only the listed new test files. Do not write package files, CI, Git, graph, or tracked configuration. Never embed a broker URL; provider verification must read PACT_BROKER_URL at runtime.
108
+ `:Pe?`${ut}
109
+
110
+ Private A08 handoff (local only):
111
+ ${JSON.stringify({targetEpicId:ce.targetEpicId,graphRevision:ce.graphRevision,adapterId:ce.adapterId,approvedScreens:Ce.screens,allowedPaths:Ce.paths})}
112
+ Write only the approved paths. Keep synthetic fixtures and the canonical approved-story manifest. No Git, graph, QA or configuration effects.
113
+ `:ut,ne=await T(he,Q,{requireWorkspaceEffect:!0,...q?{expectedExecutionBranch:Ee.executionBranch}:rt?{expectedExecutionBranch:rt.executionBranch}:le?{expectedExecutionBranch:le.executionBranch}:{}});if(q){const{admitPrivateYoloIsolatedSessionStep:U}=await import("../private-execution/isolated-session.js"),A=await U(s,Ot,Ee.graphRevision),Me={schemaVersion:1,outcome:A.admission.outcome,sequence:A.session.sequence,snapshotSha:A.session.snapshotSha,patchSha256:A.admission.patchSha256,changedPathCount:A.admission.changedPaths.length};if(at?.action==="prepare-epic-checkout"){const{acceptDirectYoloSetupCheckpoint:pt}=await import("../git/direct-yolo-checkpoint.js"),Ne=await pt({projectRoot:s,storyId:at.storyId});if(!Ne.ok)throw new Error(`private-execution-root-setup-checkpoint-denied:${Ne.reasonCode}`);se={...ne,outcome:"setup-accepted",executorOutcome:ne.outcome,isolation:Me,setup:Ne.value}}else se={...ne,isolation:Me}}else if(rt){const{admitPrivateEpicClaimWorkspace:U,admitPrivateIdeaDiagnosisWorkspace:A}=await import("../private-execution/isolated-admission.js"),Me=te?A(rt,Ae.claimId,Ae.epicId,ke.fingerprint,Kt,o.selection.positionals.join(" ").replace(/^[-:–—]\s+/,"")):U(rt,Ae.claimId,Ae.epicId,ke.fingerprint,Kt);se={...ne,isolation:{schemaVersion:1,outcome:Me.outcome,baseSha:Me.baseSha,patchSha256:Me.patchSha256,changedPathCount:Me.changedPaths.length}}}else if(le&&Z){const{admitPrivateIdeaResearchWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,de.claimId,de.epicId,de.diagnosisReceiptId,de.intakeRevision,de.sourceStateSha256);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else if(le&&ee){const{admitPrivateGenerateEpicWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,ie.claimId,ie.epicId,ie.diagnosisReceiptId,ie.researchReceiptId,ie.intakeRevision,ie.sourceStateSha256);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else if(le&&ge){const{admitPrivatePactWorkspace:U}=await import("../private-execution/isolated-admission.js"),{inspectPactToolchain:A}=await import("../private-execution/pact-toolchain.js"),{verifyPactConsumerRuntime:Me}=await import("../private-execution/pact-consumer-runtime.js"),pt=oe.answers.generateProvider,Ne=U(le,J.targetEpicId,J.graphRevision,oe.receipt,P,bn),Xt=A(s,pt),Nt=Me(s,P,pt);se={...ne,isolation:{schemaVersion:1,outcome:Ne.outcome,baseSha:Ne.baseSha,patchSha256:Ne.patchSha256,changedPathCount:Ne.changedPaths.length,consumerBindingCandidateCount:Ne.consumerBindingCandidateCount,consumerScaffoldCount:Ne.consumerScaffoldCount,toolchain:Xt,consumerRuntime:Nt}}}else if(le&&Pe){const{admitPrivateUxWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,ce.targetEpicId,ce.graphRevision,Ce);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else if(le&&pe){const{admitPrivateArchitectureStageWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,V,V==="arch-prd"?"arch-prd-docs-v1":V==="update-memory"?"arch-memory-canonical-v1":V==="arch-review"?"arch-review-doc-v1":V==="arch-infrastructure"?"arch-infrastructure-doc-v1":V==="arch-testing"?"arch-testing-doc-v1":V==="arch-performance"?"arch-performance-doc-v1":V==="arch-design-system"?"arch-design-system-doc-v1":V==="arch-security"?"arch-security-doc-v1":V==="arch-database"?"arch-database-doc-v1":V==="arch-api-integrations"?"arch-api-integrations-doc-v1":V==="arch-api-contracts"?"arch-api-contracts-docs-v1":V==="arch-fitness-functions"?"arch-fitness-tools-v1":"arch-architecture-doc-v1",kt,Pt);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else if(le&&ue){const{admitPrivateProjectStepWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,An,Rn);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else if(le){const{admitPrivateStateBoundStepWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,f.data.metadata.storyId);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else se={...ne}}}catch(c){const d=c instanceof Error&&/^(private-execution|private-codex)-[a-z-]+$/.test(c.message)?c.message:"private-execution-unverified";return{success:!1,error:d,errorCode:d,exitCode:1}}const nt=dn(f.data.instructions,f.data.metadata);if(ke&&!xt&&f.data.metadata?.mode!=="error")try{const c=f.data.metadata?.epicClaim;if(!c||typeof c!="object"||Array.isArray(c))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const d=c;if(d.outcome!=="reserved"||typeof d.claimId!="string"||typeof d.epicId!="string")throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");u.execute({phase:"client-writeback",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>cr(s,ke.fingerprint,d.claimId,d.epicId),()=>{})}catch{}return u.complete(dt),{success:!0,instructions:se?se.outcome==="checkpoint-validated"?`# Checkpoint da story validado
114
+
115
+ O root registrou o commit e a valida\xE7\xE3o f\xEDsica no branch do epic.`:se.outcome==="setup-accepted"?`# Setup do branch validado
116
+
117
+ O root confirmou o checkpoint C01 no branch do \xE9pico. Reexecute o mesmo YOLO para avan\xE7ar \xE0 pr\xF3xima etapa.`:`# Execu\xE7\xE3o privada conclu\xEDda; valida\xE7\xE3o f\xEDsica pendente
118
+
119
+ O executor Codex retornou sem erro. Nenhum checkpoint ou aprova\xE7\xE3o da story foi emitido.`:nt.instructions,metadata:se?{...nt.metadata,privateExecutionReceipt:se}:nt.metadata,exitCode:0}}function Do(e){const[t]=e.trim().split(/\s+/,1);return t?/^@?epic-[a-z0-9][a-z0-9._-]*$/i.test(t)?"epic":tn(t):null}const Hr="Provide exactly one invoke input source: --args <string>, --stdin, or --args-file <path>.",jo=`
92
120
  neocortex-client invoke - Send orchestration request to server
93
121
 
94
122
  Usage:
@@ -111,7 +139,7 @@ Options:
111
139
  --server-url <url> Server URL override
112
140
  --platform-target <id> Explicit platform target override (default: runtime detection; unknown on no match)
113
141
  --strict-read-only Request exact signed strict-read-only-v1 execution (registry-gated)
114
- --private-execution-beta Run an explicit *yolo, *exec, *research, *write-spec or *create-epic step through the isolated Codex CLI beta executor
142
+ --private-execution-beta Isolated Codex beta: *yolo, *exec, *research, *write-spec, *create-tasks, *implement, *create-epic, *sync-openapi, *arch-prd, *arch-architecture, *arch-fitness-functions, *arch-api-contracts, *arch-api-integrations, *arch-database, *arch-security, *arch-design-system, *arch-performance, *arch-testing, *arch-infrastructure, *arch-review, *update-memory (delegated architecture), *tech-debt scan
115
143
 
116
144
  Invocation payload boundary:
117
145
  Select only the explicit user-intended Neocortex command and arguments after
@@ -158,12 +186,12 @@ Safety:
158
186
  Jobs console is Plane B/local-only: no hosted server call for raw output, no server-held stream, no raw persistence, and stdin requires explicit local confirmation.
159
187
  Jobs, goal and loop watch use serverHeldStream=false and foreground local SQLite polling of public processing summaries only.
160
188
  Unresolved targets disable polling with public reason codes; there is no all-jobs fallback.
161
- `.trim();function xi(e){return e.includes("--help")||e.includes("-h")||e.includes("help")}function se(e,t,r,n){return new et("INVOCATION_MALFORMED_INPUT",t,e,r,n)}function $e(e){return se("missing-input-value",`${e} requires a value. ${$r}`)}function ki(e){try{if(!Xr(e).isFile())throw se("missing-input-value","--args-file must point to a readable UTF-8 text file.","args-file");return Te(e)}catch(t){throw t instanceof et?t:se("missing-input-value","--args-file could not be read as UTF-8 text. Check the path and permissions.","args-file")}}function Ni(){try{if(process.stdin.isTTY)throw se("missing-input-value","--stdin requires piped UTF-8 text, for example: neocortex-client invoke --stdin < synthetic.story.md","stdin");return Te(0)}catch(e){throw e instanceof et?e:se("missing-input-value","--stdin could not be read as UTF-8 text. Pipe command text into stdin and retry.","stdin")}}function Li(e,t={}){let r,n=!1,o,i,a="plain",c=!1,l,p,m=!1,w=!1;for(let v=0;v<e.length;v++)switch(e[v]){case"--args":{const h=e[++v];if(h===void 0)throw $e("--args");if(r!==void 0)throw se("multiple-input-sources","Provide --args only once. Use one explicit invoke input source.","args");r=h;break}case"--stdin":if(n)throw se("multiple-input-sources","Provide --stdin only once. Use one explicit invoke input source.","stdin");n=!0;break;case"--args-file":{const h=e[++v];if(h===void 0)throw $e("--args-file");if(o!==void 0)throw se("multiple-input-sources","Provide --args-file only once. Use one explicit invoke input source.","args-file");o=h;break}case"--project-root":{const h=e[++v];if(h===void 0)throw $e("--project-root");i=h;break}case"--format":{const h=e[++v];if(h===void 0)throw $e("--format");if(h!=="json"&&h!=="plain")throw se("unexpected-cli-token","--format accepts only json or plain.");a=h;break}case"--watch":c=!0;break;case"--server-url":{const h=e[++v];if(h===void 0)throw $e("--server-url");l=h;break}case"--platform-target":{const h=e[++v];if(h===void 0)throw $e("--platform-target");p=h;break}case"--strict-read-only":m=!0;break;case"--private-execution-beta":w=!0;break;default:throw se("unexpected-cli-token","Unexpected top-level CLI token. Quote the complete --args payload or use --stdin/--args-file for multiline content.")}const f=[r!==void 0?"args":void 0,n?"stdin":void 0,o!==void 0?"args-file":void 0].filter(v=>v!==void 0);if(f.length===0)throw se("missing-input-value",$r);if(f.length>1)throw se("multiple-input-sources",`Choose only one invoke input source; received ${f.join(", ")}.`);const d=f[0],I=d==="args"?r:d==="stdin"?(t.readStdin??Ni)():(t.readArgsFile??ki)(o);let A;try{A=qe(d,I)}catch(v){throw v instanceof Nn?se("invalid-utf8",v.message,d):v}const C=d==="args"?li(A.rawArgs):Z(A.rawArgs),j=C.args===A.rawArgs?A:qe(d,C.args);return{args:C.args,inputSource:d,inputEnvelope:j,projectRoot:i,format:a,watch:c||C.watch,commandLevelWatch:C.metadata,serverUrl:l,platformTarget:p,strictReadOnly:m,privateExecutionBeta:w}}function Wr(e,t){return t?.active?{...e??{},commandLevelWatch:t,serverHeldStream:!1}:e}function Pi(e,t,r=process.stdout,n=process.stderr){if(t.format==="json"){const a=yt(e.instructions,e.metadata),c=Wr(a.metadata,t.commandLevelWatch);if(t.watch){r.write(JSON.stringify({type:"invoke_result",instructions:a.instructions,metadata:c,publicSafe:!0})+`
162
- `);return}r.write(JSON.stringify({instructions:a.instructions,metadata:c})+`
163
- `);return}const o=yt(e.instructions,e.metadata),i=Wr(o.metadata,t.commandLevelWatch);r.write(o.instructions+`
164
- `),i&&n.write(JSON.stringify(i)+`
165
- `)}function Di(e){const t=()=>e.abort();return process.once("SIGINT",t),process.once("SIGTERM",t),()=>{process.removeListener("SIGINT",t),process.removeListener("SIGTERM",t)}}async function Es(e){if(xi(e))return process.stdout.write(`${Oi}
166
- `),0;let t;try{t=Li(e)}catch(n){if(n instanceof et)return process.stderr.write(JSON.stringify({error_code:n.code,reason:n.reason,source:n.source,byte_length:n.byteLength,message:n.message,remediation:n.message})+`
167
- `),1;throw n}if(mn(t.args))return t.strictReadOnly?(process.stderr.write(JSON.stringify({error_code:"readonly-registry-denied",message:"Strict read-only policy is not eligible for the local jobs console."})+`
168
- `),1):(await yn({args:t.args,projectRoot:gt(t.projectRoot),format:t.format,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})).exitCode;const r=await bi({args:t.args,inputSource:t.inputSource,inputEnvelope:t.inputEnvelope,watch:t.watch,projectRoot:t.projectRoot,format:t.format,serverUrl:t.serverUrl,platformTarget:t.platformTarget,strictReadOnly:t.strictReadOnly,privateExecutionBeta:t.privateExecutionBeta});if(!r.success){const n=r.metadata?.invocationInput,o=n&&typeof n=="object"&&!Array.isArray(n)?n:void 0;return process.stderr.write(JSON.stringify({error_code:r.errorCode??(r.exitCode===2?"NOT_CONFIGURED":"INVOKE_ERROR"),message:de(r.error??"",ke),...typeof o?.reason=="string"?{reason:de(o.reason,80)}:{},...typeof o?.source=="string"?{source:de(o.source,20)}:{},...Number.isSafeInteger(o?.byteLength)?{byte_length:o.byteLength}:{},...typeof o?.remediation=="string"?{remediation:de(o.remediation,ke)}:{}})+`
169
- `),r.exitCode}if(Pi(r,t),t.watch){const n=new AbortController,o=Di(n);try{const i=Si(r.metadata,t.args);i.disabled?Qo(i.reasonCodes??[Y.TARGET_UNRESOLVED],t.args,t.format,process.stdout,t.privateExecutionBeta):await ei({projectRoot:gt(t.projectRoot),format:t.format,strictReadOnly:t.strictReadOnly,protectedOutput:t.privateExecutionBeta,...i,signal:n.signal})}finally{o()}}return 0}export{Oi as INVOKE_HELP_TEXT,rr as INVOKE_PAYLOAD_LIMIT_BYTES,ft as INVOKE_PAYLOAD_WARNING_THRESHOLD_BYTES,et as InvokeCliInputError,It as InvokePayloadTooLargeError,Et as InvokeStructuralContextTooLargeError,we as StateSnapshotIntegrityError,ms as __resetSchemaDriftWarnedForTests,Ri as acknowledgeMaterializedPendingEpicClaims,no as admitClientInvocation,_r as assertEpicAwareStateShapeBeforeRepair,No as buildSignedInvokeAttempt,to as clearPendingEpicIdempotencyKey,wo as collectInvokeP205Authorities,Cr as collectStateSnapshot,Ve as computeInvokeRequestBodySizeBytes,ys as createFullStateSnapshotScope,Ct as createInvokePayloadTelemetry,fo as detectStateSchemaDrift,Ti as extractPreFlightTrigger,eo as getOrCreatePendingEpicIdempotencyKey,Or as guardInvokeRequestBodySize,bi as invoke,Es as invokeCliHandler,Er as isEpicAwareCommandId,$o as maybeEmitInvokePayloadSizeWarning,Wo as maybeRunInvokeRunnerAutoBootstrap,Li as parseInvokeCliOptions,br as postMaterializationJson,ar as recordPendingEpicReservation,li as resolveInvokeCommandLevelWatch,gt as resolveInvokeProjectRoot,Oo as resolveInvokeTransportErrorCode,Si as resolveInvokeWatchTarget,yt as sanitizeInvokeCliOutput,wi as sendEpicClaimAcknowledgement,Br as sendInvokeRequest,Is as sendPrivateExecutionCancelRequest,Ai as sendPrivateExecutionConsumeRequest,co as shouldCollectProjectEvidenceForInvoke,ei as watchContinuityProcessingSummaries,Pi as writeInvokeCliSuccessOutput};
189
+ `.trim();function Mo(e){return e.includes("--help")||e.includes("-h")||e.includes("help")}function xe(e,t,a,r){return new Ht("INVOCATION_MALFORMED_INPUT",t,e,a,r)}function Et(e){return xe("missing-input-value",`${e} requires a value. ${Hr}`)}function Vo(e){try{if(!Yr(e).isFile())throw xe("missing-input-value","--args-file must point to a readable UTF-8 text file.","args-file");return Re(e)}catch(t){throw t instanceof Ht?t:xe("missing-input-value","--args-file could not be read as UTF-8 text. Check the path and permissions.","args-file")}}function Uo(){try{if(process.stdin.isTTY)throw xe("missing-input-value","--stdin requires piped UTF-8 text, for example: neocortex-client invoke --stdin < synthetic.story.md","stdin");return Re(0)}catch(e){throw e instanceof Ht?e:xe("missing-input-value","--stdin could not be read as UTF-8 text. Pipe command text into stdin and retry.","stdin")}}function $o(e,t={}){let a,r=!1,i,n,o="plain",s=!1,p,g,E=!1,_=!1;for(let b=0;b<e.length;b++)switch(e[b]){case"--args":{const w=e[++b];if(w===void 0)throw Et("--args");if(a!==void 0)throw xe("multiple-input-sources","Provide --args only once. Use one explicit invoke input source.","args");a=w;break}case"--stdin":if(r)throw xe("multiple-input-sources","Provide --stdin only once. Use one explicit invoke input source.","stdin");r=!0;break;case"--args-file":{const w=e[++b];if(w===void 0)throw Et("--args-file");if(i!==void 0)throw xe("multiple-input-sources","Provide --args-file only once. Use one explicit invoke input source.","args-file");i=w;break}case"--project-root":{const w=e[++b];if(w===void 0)throw Et("--project-root");n=w;break}case"--format":{const w=e[++b];if(w===void 0)throw Et("--format");if(w!=="json"&&w!=="plain")throw xe("unexpected-cli-token","--format accepts only json or plain.");o=w;break}case"--watch":s=!0;break;case"--server-url":{const w=e[++b];if(w===void 0)throw Et("--server-url");p=w;break}case"--platform-target":{const w=e[++b];if(w===void 0)throw Et("--platform-target");g=w;break}case"--strict-read-only":E=!0;break;case"--private-execution-beta":_=!0;break;default:throw xe("unexpected-cli-token","Unexpected top-level CLI token. Quote the complete --args payload or use --stdin/--args-file for multiline content.")}const l=[a!==void 0?"args":void 0,r?"stdin":void 0,i!==void 0?"args-file":void 0].filter(b=>b!==void 0);if(l.length===0)throw xe("missing-input-value",Hr);if(l.length>1)throw xe("multiple-input-sources",`Choose only one invoke input source; received ${l.join(", ")}.`);const m=l[0],u=m==="args"?a:m==="stdin"?(t.readStdin??Uo)():(t.readArgsFile??Vo)(i);let S;try{S=Mt(m,u)}catch(b){throw b instanceof Na?xe("invalid-utf8",b.message,m):b}const C=m==="args"?Io(S.rawArgs):ve(S.rawArgs),L=C.args===S.rawArgs?S:Mt(m,C.args);return{args:C.args,inputSource:m,inputEnvelope:L,projectRoot:n,format:o,watch:s||C.watch,commandLevelWatch:C.metadata,serverUrl:p,platformTarget:g,strictReadOnly:E,privateExecutionBeta:_}}function Wr(e,t){return t?.active?{...e??{},commandLevelWatch:t,serverHeldStream:!1}:e}function Bo(e,t,a=process.stdout,r=process.stderr){if(t.format==="json"){const o=dn(e.instructions,e.metadata),s=Wr(o.metadata,t.commandLevelWatch);if(t.watch){a.write(JSON.stringify({type:"invoke_result",instructions:o.instructions,metadata:s,publicSafe:!0})+`
190
+ `);return}a.write(JSON.stringify({instructions:o.instructions,metadata:s})+`
191
+ `);return}const i=dn(e.instructions,e.metadata),n=Wr(i.metadata,t.commandLevelWatch);a.write(i.instructions+`
192
+ `),n&&r.write(JSON.stringify(n)+`
193
+ `)}function Ho(e){const t=()=>e.abort();return process.once("SIGINT",t),process.once("SIGTERM",t),()=>{process.removeListener("SIGINT",t),process.removeListener("SIGTERM",t)}}async function Dc(e){if(Mo(e))return process.stdout.write(`${jo}
194
+ `),0;let t;try{t=$o(e)}catch(r){if(r instanceof Ht)return process.stderr.write(JSON.stringify({error_code:r.code,reason:r.reason,source:r.source,byte_length:r.byteLength,message:r.message,remediation:r.message})+`
195
+ `),1;throw r}if(ya(t.args))return t.strictReadOnly?(process.stderr.write(JSON.stringify({error_code:"readonly-registry-denied",message:"Strict read-only policy is not eligible for the local jobs console."})+`
196
+ `),1):(await Ia({args:t.args,projectRoot:cn(t.projectRoot),format:t.format,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})).exitCode;const a=await Lo({args:t.args,inputSource:t.inputSource,inputEnvelope:t.inputEnvelope,watch:t.watch,projectRoot:t.projectRoot,format:t.format,serverUrl:t.serverUrl,platformTarget:t.platformTarget,strictReadOnly:t.strictReadOnly,privateExecutionBeta:t.privateExecutionBeta});if(!a.success){const r=a.metadata?.invocationInput,i=r&&typeof r=="object"&&!Array.isArray(r)?r:void 0;return process.stderr.write(JSON.stringify({error_code:a.errorCode??(a.exitCode===2?"NOT_CONFIGURED":"INVOKE_ERROR"),message:Ve(a.error??"",ct),...typeof i?.reason=="string"?{reason:Ve(i.reason,80)}:{},...typeof i?.source=="string"?{source:Ve(i.source,20)}:{},...Number.isSafeInteger(i?.byteLength)?{byte_length:i.byteLength}:{},...typeof i?.remediation=="string"?{remediation:Ve(i.remediation,ct)}:{}})+`
197
+ `),a.exitCode}if(Bo(a,t),t.watch){const r=new AbortController,i=Ho(r);try{const n=xo(a.metadata,t.args);n.disabled?io(n.reasonCodes??[fe.TARGET_UNRESOLVED],t.args,t.format,process.stdout,t.privateExecutionBeta):await oo({projectRoot:cn(t.projectRoot),format:t.format,strictReadOnly:t.strictReadOnly,protectedOutput:t.privateExecutionBeta,...n,signal:r.signal})}finally{i()}}return 0}export{jo as INVOKE_HELP_TEXT,nr as INVOKE_PAYLOAD_LIMIT_BYTES,an as INVOKE_PAYLOAD_WARNING_THRESHOLD_BYTES,Ht as InvokeCliInputError,un as InvokePayloadTooLargeError,pn as InvokeStructuralContextTooLargeError,Ze as StateSnapshotIntegrityError,Oc as __resetSchemaDriftWarnedForTests,Oo as acknowledgeMaterializedPendingEpicClaims,ai as admitClientInvocation,Sr as assertEpicAwareStateShapeBeforeRepair,xi as boundedP222PremergeCheckpointPositions,Vi as buildSignedInvokeAttempt,ni as clearPendingEpicIdempotencyKey,ki as collectInvokeP205Authorities,vr as collectStateSnapshot,yt as computeInvokeRequestBodySizeBytes,Nc as createFullStateSnapshotScope,yn as createInvokePayloadTelemetry,hi as detectStateSchemaDrift,Do as extractPreFlightTrigger,ti as getOrCreatePendingEpicIdempotencyKey,kr as guardInvokeRequestBodySize,Lo as invoke,Dc as invokeCliHandler,Er as isEpicAwareCommandId,Yi as maybeEmitInvokePayloadSizeWarning,Ji as maybeRunInvokeRunnerAutoBootstrap,$o as parseInvokeCliOptions,Tr as postMaterializationJson,cr as recordPendingEpicReservation,Io as resolveInvokeCommandLevelWatch,cn as resolveInvokeProjectRoot,Di as resolveInvokeTransportErrorCode,xo as resolveInvokeWatchTarget,dn as sanitizeInvokeCliOutput,Po as sendEpicClaimAcknowledgement,Br as sendInvokeRequest,Lc as sendPrivateExecutionCancelRequest,ko as sendPrivateExecutionConsumeRequest,di as shouldCollectProjectEvidenceForInvoke,oo as watchContinuityProcessingSummaries,Bo as writeInvokeCliSuccessOutput};