@ornexus/neocortex 4.60.43 → 4.60.45

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 (37) hide show
  1. package/dist/sbom.cdx.json +23 -23
  2. package/install.js +16 -1
  3. package/install.ps1 +57 -401
  4. package/install.sh +30 -37
  5. package/package.json +2 -2
  6. package/packages/client/dist/commands/invoke.js +39 -39
  7. package/packages/client/dist/errors/error-messages.js +2 -2
  8. package/packages/client/dist/evidence/collector.d.ts +2 -0
  9. package/packages/client/dist/evidence/collector.js +1 -1
  10. package/packages/client/dist/license/license-client.d.ts +11 -0
  11. package/packages/client/dist/license/license-client.js +1 -1
  12. package/packages/client/dist/runner/headless/run-yoloop.d.ts +9 -0
  13. package/packages/client/dist/runner/headless/run-yoloop.js +5 -3
  14. package/packages/client/dist/yoloop/index.d.ts +1 -1
  15. package/packages/client/dist/yoloop/invoke-hooks.js +10 -8
  16. package/packages/client/dist/yoloop/shared-yoloop-types.d.ts +61 -0
  17. package/packages/client/dist/yoloop/yoloop-client-state-store.d.ts +23 -0
  18. package/packages/client/dist/yoloop/yoloop-client-state-store.js +1 -1
  19. package/packages/shared/dist/invocation/index.js +9 -2
  20. package/targets-stubs/antigravity/gemini.md +1 -1
  21. package/targets-stubs/antigravity/install-antigravity.sh +10 -101
  22. package/targets-stubs/antigravity/skill/SKILL.md +1 -1
  23. package/targets-stubs/claude-code/neocortex-root.agent.yaml +1 -1
  24. package/targets-stubs/claude-code/neocortex-root.md +2 -2
  25. package/targets-stubs/claude-code/neocortex.agent.yaml +1 -1
  26. package/targets-stubs/claude-code/neocortex.md +2 -2
  27. package/targets-stubs/codex/AGENTS.md +1 -1
  28. package/targets-stubs/codex/install-codex.sh +4 -1
  29. package/targets-stubs/cursor/agent.md +2 -2
  30. package/targets-stubs/cursor/install-cursor.sh +4 -1
  31. package/targets-stubs/gemini-cli/agent.md +2 -2
  32. package/targets-stubs/gemini-cli/install-gemini.sh +4 -1
  33. package/targets-stubs/grok/install-grok.sh +4 -1
  34. package/targets-stubs/lib/mcp-merge.js +220 -20
  35. package/targets-stubs/opencode/neocortex-root.md +1 -1
  36. package/targets-stubs/vscode/install-vscode.sh +4 -1
  37. package/targets-stubs/vscode/neocortex.agent.md +2 -2
@@ -1,51 +1,51 @@
1
- import{createHash as be,randomUUID as Ye}from"node:crypto";import{execFileSync as ke}from"node:child_process";import{existsSync as ve,readFileSync as _e,renameSync as vn,unlinkSync as On,writeFileSync as yt,mkdirSync as _t,statSync as Nn}from"node:fs";import{join as ee}from"node:path";import{homedir as Le}from"node:os";import{LicenseClient as kn}from"../license/license-client.js";import{EncryptedCache as Ke}from"../cache/encrypted-cache.js";import{NoOpCache as Et}from"../types/index.js";import{resolveClientPreFlightTrigger as Ct,TierAwareClient as Ln}from"../tier/tier-aware-client.js";import{COMMAND_REGISTRY_CHECKSUM as he,COMMAND_REGISTRY_VERSION as me,GENERATED_CLIENT_COMMANDS as xn}from"../generated/command-registry.generated.js";import{loadSecureConfig as St}from"../config/secure-config.js";import{DEFAULT_SERVER_URL as Dn}from"../constants.js";import{detectFirstRunLocale as Pn,renderFirstRunMessage as jn}from"../i18n/first-run.js";import{humanizeError as At,formatHumanizedError as Rt,detectErrorLocale as wt}from"../errors/error-messages.js";import{degradeStateSnapshotForPayloadLimit as Mn,projectStateSnapshotForInvoke as Tt,projectStateSnapshotResultV2ForInvoke as Un}from"../state/project-state-snapshot.js";import{isInlineYoloMaterialization as Vn,maybeRepairStateJsonBeforeInvoke as Bn,StateRepairHardStopError as $n}from"../state/state-json-repair.js";import{StructuralDagError as bt}from"../state/structural-dag-projection.js";import{RUNNER_BOOTSTRAP_POLICY_REASON_CODES as Wn,classifyRunnerBootstrapPolicyFromArgs as Gn}from"../continuity/runner-bootstrap-policy.js";import{RUNNER_SCHEDULER_BOOTSTRAP_REASON_CODES as Hn,ensureRunnerSchedulerBootstrap as Fn}from"../runner/scheduler.js";import{CONTINUITY_INVOKE_WATCH_DEFAULT_LIMIT as vt,CONTINUITY_INVOKE_WATCH_DEFAULT_MAX_IDLE_POLLS as Ot,CONTINUITY_INVOKE_WATCH_DEFAULT_MAX_POLLS as Nt,CONTINUITY_INVOKE_WATCH_DEFAULT_POLL_INTERVAL_MS as kt,openContinuityClientStateStore as Jn}from"../continuity/continuity-client-state-store.js";import{isLocalJobsConsoleArgs as zn,runLocalJobsConsoleCommand as Yn}from"../runner/local-console.js";import{detectPlatform as Kn}from"../adapters/platform-detector.js";import{signNxInvokeRequest as qn}from"../../../shared/dist/nx-invoke-signature.js";import{CLIENT_VERSION as Ee}from"../version.js";import{createCapabilityCache as Lt,executeInvokeQueryTransport as xt,executeSecondaryNetworkMutation as Xn}from"../effects/invoke-effect-gateways.js";import{STRICT_READ_ONLY_POLICY as Qn,STRICT_READ_ONLY_CLIENT_PROJECTION as Dt,STRICT_READ_ONLY_SERVER_PROJECTION as Zn,StrictReadOnlyError as Ce,canonicalizeInvokeEffects as er,createInvokeEffectContext as tr,verifyStrictReadOnlyReceipt as nr}from"../../../shared/dist/strict-readonly.js";import{admitInvocation as rr,assertInvokeInputEnvelopeV2 as or,assertProjectIdentityMigrationReceiptV1 as ir,buildProjectIdentityPublicDiagnostic as Se,createInvocationAdmissionReceipt as sr,projectInvokeInputEvidenceV1 as Pt,verifyStrictDiagnoseReceiptV1 as ar}from"../../../shared/dist/invocation/index.js";import{buildInvokeInputEnvelope as xe,InvokeInputDecodeError as cr}from"../invocation/invoke-input.js";import{acknowledgeProjectIdentityMigration as dr,finalizeProjectIdentityMigration as ur,prepareProjectIdentityMigration as lr,ProjectIdentityMigrationError as qe,readProjectIdentityMigrationPhase as pr}from"../migrations/project-identity.js";import{probeProjectIdentityMigrationCapability as fr}from"../migrations/project-identity-capability.js";import{normalizeYoloopStoryPlanningEvidence as gr}from"../../../shared/dist/yoloop/planning-graph.js";import{normalizeContinuousWriteRef as De}from"../../../shared/dist/yoloop/wave-decision-receipt.js";import{applyGitLifecycleRuntimeOverlay as jt,ensureGitLifecycleRuntimeInitialized as hr,executeP205TransientAuthorities as mr,persistGitLifecycleGraphAuthority as Ir,P205_COMPLETE_COMMAND as yr,gitLifecycleStoryWriteSet as Mt,readGitLifecycleRuntimeSync as Xe,verifyAcceptedGitLifecycleStoryCheckpointSync as _r,verifyLegacyCheckpointMigrationCandidateSync as Er}from"../git/git-lifecycle-store.js";const Pe=ee(Le(),".neocortex"),Qe=ee(Pe,"cache"),Ut=ee(Qe,"menu-cache.json"),Vt=1440*60*1e3,Bt=3e4,$t=256*1024,Wt=$t,Gt=.8,de="[REDACTED]",Cr=1e5,Ie=2e3,Sr=200,Ar=200,Rr=12,wr=/(?:promptBody|workflow|workflowGraph|stepBody|privateUrl|rawLog|secret|credential|licenseKey|apiKey|internalRouting|serverOnly|proprietary|protected)/i,Tr=/(?:PRIVATE|PROTECTED|SERVER_ONLY)[-_\s]*(?:PROMPT|PROMPT_BODY|WORKFLOW|WORKFLOW_GRAPH|STEP_BODY|STEP|ROUTING)\s*[:=][^\n\r]*/gi,br=/(?: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,Ze=Math.floor($t*Gt),Ht=ee(Pe,".first-run-shown"),vr="pending-epic-claims.json",Ft=64;function Jt(e){return ee(e,".neocortex",vr)}function je(e){const t=Jt(e);if(!ve(t))return{schemaVersion:1,operations:{}};const n=JSON.parse(_e(t,"utf8"));if(!n||typeof n!="object"||Array.isArray(n))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const r=n;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>Ft)throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");for(const[o,i]of Object.entries(r.operations)){if(!/^[a-f0-9]{64}$/.test(o)||!i||typeof i!="object"||Array.isArray(i))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const s=i;if(typeof s.idempotencyKey!="string"||!/^[0-9a-f-]{36}$/.test(s.idempotencyKey)||typeof s.createdAt!="string")throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(s.claimId!==void 0&&(typeof s.claimId!="string"||!/^[0-9a-f-]{36}$/.test(s.claimId))||s.epicId!==void 0&&(typeof s.epicId!="string"||!/^P[1-9][0-9]*$/.test(s.epicId))||s.claimId===void 0!=(s.epicId===void 0))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE")}return n}function et(e,t){const n=Jt(e);_t(ee(e,".neocortex"),{recursive:!0,mode:448});const r=`${n}.${process.pid}.${Ye()}.tmp`;yt(r,`${JSON.stringify(t)}
2
- `,{encoding:"utf8",mode:384,flag:"wx"}),vn(r,n)}function Or(e){return be("sha256").update(`nx-epic-logical-operation-v1\0${JSON.stringify({command:"create-epic",args:e})}`,"utf8").digest("hex")}function Nr(e,t){const n=Or(t),r=je(e),o=r.operations[n];if(o)return{key:o.idempotencyKey,fingerprint:n};if(Object.keys(r.operations).length>=Ft)throw new Error("EPIC_CLAIM_CAPACITY_EXCEEDED");const i=Ye(),s={...r.operations,[n]:{idempotencyKey:i,createdAt:new Date().toISOString()}};return et(e,{schemaVersion:1,operations:s}),{key:i,fingerprint:n}}function kr(e,t){const n=je(e);if(!n.operations[t])return;const r={...n.operations};delete r[t],et(e,{schemaVersion:1,operations:r})}function Lr(e,t,n,r){if(!/^[0-9a-f-]{36}$/.test(n)||!/^P[1-9][0-9]*$/.test(r))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const o=je(e),i=o.operations[t];if(!i)throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");et(e,{schemaVersion:1,operations:{...o.operations,[t]:{...i,claimId:n,epicId:r}}})}function xr(){try{if(ve(Ht))return;const e=Pn(),t=jn(e);process.stderr.write(t);try{_t(Pe,{recursive:!0}),yt(Ht,new Date().toISOString(),"utf-8")}catch{}}catch{}}function tt(e,t=process.cwd()){return e&&e.trim().length>0?e:t}function Dr(e){return rr(e,{registryVersion:me,registryChecksum:he})}const Pr=new Set(["completed","aborted","cancelled"]),jr=new Set(["watch-target-missing","watch-target-malformed","watch-target-ambiguous","watch-target-multiple"]),B=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"}),W=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"}),O=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"}),zt=240,Mr=/(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 Ur(e){return e.replace(/[\w.+-]+@[\w-]+\.[\w.-]+/g,de).replace(/(?:sk|pk|whsec|nxk)[-_](?:test|live|ant|proj|pro|free|enterprise)?[-_]?[A-Za-z0-9_-]{16,}/g,de).replace(/NX-[FPE]-[a-f0-9]{24}-[a-f0-9]{4}/g,de).replace(/eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g,de).replace(Tr,de).replace(br,de)}function q(e,t){const n=Ur(e);return n.length<=t?n:`${n.slice(0,t)}\u2026[TRUNCATED:${n.length-t}]`}function nt(e,t=0,n=new WeakSet){if(t>Rr)return"[MAX_DEPTH]";if(e==null)return e;if(typeof e=="string")return q(e,Ie);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(n.has(e))return"[CIRCULAR]";n.add(e);try{if(Array.isArray(e))return e.slice(0,Sr).map(o=>nt(o,t+1,n));const r={};for(const[o,i]of Object.entries(e).slice(0,Ar)){if(wr.test(o)){r[o]=de;continue}const s=nt(i,t+1,n);s!==void 0&&(r[o]=s)}return r}finally{n.delete(e)}}}function rt(e,t){return{instructions:q(e??"",Cr),metadata:t?nt(t):void 0}}class Me extends Error{reason;source;byteLength;code;constructor(t,n,r,o,i){super(n),this.reason=r,this.source=o,this.byteLength=i,this.name="InvokeCliInputError",this.code=t}}function Vr(e){return/^\s*\*?(?:arch-plan|ui-ux-review)(?:\s|$)/i.test(e)&&Br(e,"--project-evidence")}function Br(e,t){let n=null,r=-1,o=!1,i=!1;for(let s=0;s<=e.length;s+=1){const c=e[s];if(s===e.length||!n&&/\s/.test(c??"")){if(r>=0&&!o&&e.slice(r,s)===t)return!0;r=-1,o=!1,i=!1;continue}if(r<0&&(r=s),i){i=!1;continue}if(c==="\\"){i=!0;continue}(c==='"'||c==="'")&&(o=!0,n=n===c?null:n??c)}return!1}class ot 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 it 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 st=!1;function $r(e){const t=[];if(!e||typeof e!="object")return t;const n=e,r=n.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(n.stories)&&t.push({code:"STORIES_AS_ARRAY",message:"`stories` is an Array (expected Object keyed by story ID)"}),n.epics&&typeof n.epics=="object"&&!Array.isArray(n.epics))for(const[i,s]of Object.entries(n.epics)){const c=s;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=n.epics&&typeof n.epics=="object"&&Object.keys(n.epics).length>0||n.stories&&typeof n.stories=="object"&&!Array.isArray(n.stories)&&Object.keys(n.stories).length>0||Array.isArray(n.stories)||r&&r.current!==void 0;return n.schema_version===void 0?o&&t.push({code:"SCHEMA_VERSION_MISSING",message:"`schema_version` field missing (expected: `schema_version: 1`)"}):n.schema_version!==1&&t.push({code:"SCHEMA_VERSION_OUTDATED",message:`schema_version=${String(n.schema_version)} (expected: 1)`}),t}function Wr(e){if(!(st||e.length===0)){st=!0;try{const t=e.map(n=>` - ${n.message}`).join(`
1
+ import{createHash as be,randomUUID as ze}from"node:crypto";import{execFileSync as Le}from"node:child_process";import{existsSync as ve,readFileSync as _e,renameSync as vn,unlinkSync as On,writeFileSync as yt,mkdirSync as _t,statSync as Nn}from"node:fs";import{join as te}from"node:path";import{homedir as xe}from"node:os";import{LicenseClient as kn}from"../license/license-client.js";import{EncryptedCache as qe}from"../cache/encrypted-cache.js";import{NoOpCache as Et}from"../types/index.js";import{resolveClientPreFlightTrigger as Ct,TierAwareClient as Ln}from"../tier/tier-aware-client.js";import{COMMAND_REGISTRY_CHECKSUM as he,COMMAND_REGISTRY_VERSION as me,GENERATED_CLIENT_COMMANDS as xn}from"../generated/command-registry.generated.js";import{loadSecureConfig as St}from"../config/secure-config.js";import{DEFAULT_SERVER_URL as Dn}from"../constants.js";import{detectFirstRunLocale as Pn,renderFirstRunMessage as jn}from"../i18n/first-run.js";import{humanizeError as At,formatHumanizedError as Rt,detectErrorLocale as wt}from"../errors/error-messages.js";import{degradeStateSnapshotForPayloadLimit as Mn,projectStateSnapshotForInvoke as Tt,projectStateSnapshotResultV2ForInvoke as Un}from"../state/project-state-snapshot.js";import{isInlineYoloMaterialization as Vn,maybeRepairStateJsonBeforeInvoke as Bn,StateRepairHardStopError as $n}from"../state/state-json-repair.js";import{StructuralDagError as bt}from"../state/structural-dag-projection.js";import{RUNNER_BOOTSTRAP_POLICY_REASON_CODES as Wn,classifyRunnerBootstrapPolicyFromArgs as Hn}from"../continuity/runner-bootstrap-policy.js";import{RUNNER_SCHEDULER_BOOTSTRAP_REASON_CODES as Gn,ensureRunnerSchedulerBootstrap as Fn}from"../runner/scheduler.js";import{CONTINUITY_INVOKE_WATCH_DEFAULT_LIMIT as vt,CONTINUITY_INVOKE_WATCH_DEFAULT_MAX_IDLE_POLLS as Ot,CONTINUITY_INVOKE_WATCH_DEFAULT_MAX_POLLS as Nt,CONTINUITY_INVOKE_WATCH_DEFAULT_POLL_INTERVAL_MS as kt,openContinuityClientStateStore as Jn}from"../continuity/continuity-client-state-store.js";import{isLocalJobsConsoleArgs as Yn,runLocalJobsConsoleCommand as zn}from"../runner/local-console.js";import{detectPlatform as qn}from"../adapters/platform-detector.js";import{signNxInvokeRequest as Kn}from"../../../shared/dist/nx-invoke-signature.js";import{CLIENT_VERSION as Ee}from"../version.js";import{createCapabilityCache as Lt,executeInvokeQueryTransport as xt,executeSecondaryNetworkMutation as Xn}from"../effects/invoke-effect-gateways.js";import{STRICT_READ_ONLY_POLICY as Qn,STRICT_READ_ONLY_CLIENT_PROJECTION as Dt,STRICT_READ_ONLY_SERVER_PROJECTION as Zn,StrictReadOnlyError as Ce,canonicalizeInvokeEffects as er,createInvokeEffectContext as tr,verifyStrictReadOnlyReceipt as nr}from"../../../shared/dist/strict-readonly.js";import{admitInvocation as rr,assertInvokeInputEnvelopeV2 as or,assertProjectIdentityMigrationReceiptV1 as ir,buildProjectIdentityPublicDiagnostic as Se,createInvocationAdmissionReceipt as sr,projectInvokeInputEvidenceV1 as Pt,verifyStrictDiagnoseReceiptV1 as ar}from"../../../shared/dist/invocation/index.js";import{buildInvokeInputEnvelope as De,InvokeInputDecodeError as cr}from"../invocation/invoke-input.js";import{acknowledgeProjectIdentityMigration as dr,finalizeProjectIdentityMigration as ur,prepareProjectIdentityMigration as lr,ProjectIdentityMigrationError as Ke,readProjectIdentityMigrationPhase as pr}from"../migrations/project-identity.js";import{probeProjectIdentityMigrationCapability as fr}from"../migrations/project-identity-capability.js";import{normalizeYoloopStoryPlanningEvidence as gr}from"../../../shared/dist/yoloop/planning-graph.js";import{normalizeContinuousWriteRef as Pe}from"../../../shared/dist/yoloop/wave-decision-receipt.js";import{applyGitLifecycleRuntimeOverlay as jt,ensureGitLifecycleRuntimeInitialized as hr,executeP205TransientAuthorities as mr,persistGitLifecycleGraphAuthority as Ir,P205_COMPLETE_COMMAND as yr,gitLifecycleStoryWriteSet as Mt,readGitLifecycleRuntimeSync as Xe,verifyAcceptedGitLifecycleStoryCheckpointSync as _r,verifyLegacyCheckpointMigrationCandidateSync as Er}from"../git/git-lifecycle-store.js";const je=te(xe(),".neocortex"),Qe=te(je,"cache"),Ut=te(Qe,"menu-cache.json"),Vt=1440*60*1e3,Bt=3e4,$t=256*1024,Wt=$t,Ht=.8,de="[REDACTED]",Cr=1e5,Ie=2e3,Sr=200,Ar=200,Rr=12,wr=/(?:promptBody|workflow|workflowGraph|stepBody|privateUrl|rawLog|secret|credential|licenseKey|apiKey|internalRouting|serverOnly|proprietary|protected)/i,Tr=/(?:PRIVATE|PROTECTED|SERVER_ONLY)[-_\s]*(?:PROMPT|PROMPT_BODY|WORKFLOW|WORKFLOW_GRAPH|STEP_BODY|STEP|ROUTING)\s*[:=][^\n\r]*/gi,br=/(?: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,Ze=Math.floor($t*Ht),Gt=te(je,".first-run-shown"),vr="pending-epic-claims.json",Ft=64;function Jt(e){return te(e,".neocortex",vr)}function Me(e){const t=Jt(e);if(!ve(t))return{schemaVersion:1,operations:{}};const n=JSON.parse(_e(t,"utf8"));if(!n||typeof n!="object"||Array.isArray(n))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const r=n;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>Ft)throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");for(const[o,i]of Object.entries(r.operations)){if(!/^[a-f0-9]{64}$/.test(o)||!i||typeof i!="object"||Array.isArray(i))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const s=i;if(typeof s.idempotencyKey!="string"||!/^[0-9a-f-]{36}$/.test(s.idempotencyKey)||typeof s.createdAt!="string")throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(s.claimId!==void 0&&(typeof s.claimId!="string"||!/^[0-9a-f-]{36}$/.test(s.claimId))||s.epicId!==void 0&&(typeof s.epicId!="string"||!/^P[1-9][0-9]*$/.test(s.epicId))||s.claimId===void 0!=(s.epicId===void 0))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE")}return n}function et(e,t){const n=Jt(e);_t(te(e,".neocortex"),{recursive:!0,mode:448});const r=`${n}.${process.pid}.${ze()}.tmp`;yt(r,`${JSON.stringify(t)}
2
+ `,{encoding:"utf8",mode:384,flag:"wx"}),vn(r,n)}function Or(e){return be("sha256").update(`nx-epic-logical-operation-v1\0${JSON.stringify({command:"create-epic",args:e})}`,"utf8").digest("hex")}function Nr(e,t){const n=Or(t),r=Me(e),o=r.operations[n];if(o)return{key:o.idempotencyKey,fingerprint:n};if(Object.keys(r.operations).length>=Ft)throw new Error("EPIC_CLAIM_CAPACITY_EXCEEDED");const i=ze(),s={...r.operations,[n]:{idempotencyKey:i,createdAt:new Date().toISOString()}};return et(e,{schemaVersion:1,operations:s}),{key:i,fingerprint:n}}function kr(e,t){const n=Me(e);if(!n.operations[t])return;const r={...n.operations};delete r[t],et(e,{schemaVersion:1,operations:r})}function Lr(e,t,n,r){if(!/^[0-9a-f-]{36}$/.test(n)||!/^P[1-9][0-9]*$/.test(r))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const o=Me(e),i=o.operations[t];if(!i)throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");et(e,{schemaVersion:1,operations:{...o.operations,[t]:{...i,claimId:n,epicId:r}}})}function xr(){try{if(ve(Gt))return;const e=Pn(),t=jn(e);process.stderr.write(t);try{_t(je,{recursive:!0}),yt(Gt,new Date().toISOString(),"utf-8")}catch{}}catch{}}function tt(e,t=process.cwd()){return e&&e.trim().length>0?e:t}function Dr(e){return rr(e,{registryVersion:me,registryChecksum:he})}const Pr=new Set(["completed","aborted","cancelled"]),jr=new Set(["watch-target-missing","watch-target-malformed","watch-target-ambiguous","watch-target-multiple"]),B=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"}),W=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"}),O=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"}),Yt=240,Mr=/(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 Ur(e){return e.replace(/[\w.+-]+@[\w-]+\.[\w.-]+/g,de).replace(/(?:sk|pk|whsec|nxk)[-_](?:test|live|ant|proj|pro|free|enterprise)?[-_]?[A-Za-z0-9_-]{16,}/g,de).replace(/NX-[FPE]-[a-f0-9]{24}-[a-f0-9]{4}/g,de).replace(/eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g,de).replace(Tr,de).replace(br,de)}function X(e,t){const n=Ur(e);return n.length<=t?n:`${n.slice(0,t)}\u2026[TRUNCATED:${n.length-t}]`}function nt(e,t=0,n=new WeakSet){if(t>Rr)return"[MAX_DEPTH]";if(e==null)return e;if(typeof e=="string")return X(e,Ie);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(n.has(e))return"[CIRCULAR]";n.add(e);try{if(Array.isArray(e))return e.slice(0,Sr).map(o=>nt(o,t+1,n));const r={};for(const[o,i]of Object.entries(e).slice(0,Ar)){if(wr.test(o)){r[o]=de;continue}const s=nt(i,t+1,n);s!==void 0&&(r[o]=s)}return r}finally{n.delete(e)}}}function rt(e,t){return{instructions:X(e??"",Cr),metadata:t?nt(t):void 0}}class Ue extends Error{reason;source;byteLength;code;constructor(t,n,r,o,i){super(n),this.reason=r,this.source=o,this.byteLength=i,this.name="InvokeCliInputError",this.code=t}}function Vr(e){return/^\s*\*?(?:arch-plan|ui-ux-review)(?:\s|$)/i.test(e)&&Br(e,"--project-evidence")}function Br(e,t){let n=null,r=-1,o=!1,i=!1;for(let s=0;s<=e.length;s+=1){const c=e[s];if(s===e.length||!n&&/\s/.test(c??"")){if(r>=0&&!o&&e.slice(r,s)===t)return!0;r=-1,o=!1,i=!1;continue}if(r<0&&(r=s),i){i=!1;continue}if(c==="\\"){i=!0;continue}(c==='"'||c==="'")&&(o=!0,n=n===c?null:n??c)}return!1}class ot 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 it 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 st=!1;function $r(e){const t=[];if(!e||typeof e!="object")return t;const n=e,r=n.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(n.stories)&&t.push({code:"STORIES_AS_ARRAY",message:"`stories` is an Array (expected Object keyed by story ID)"}),n.epics&&typeof n.epics=="object"&&!Array.isArray(n.epics))for(const[i,s]of Object.entries(n.epics)){const c=s;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=n.epics&&typeof n.epics=="object"&&Object.keys(n.epics).length>0||n.stories&&typeof n.stories=="object"&&!Array.isArray(n.stories)&&Object.keys(n.stories).length>0||Array.isArray(n.stories)||r&&r.current!==void 0;return n.schema_version===void 0?o&&t.push({code:"SCHEMA_VERSION_MISSING",message:"`schema_version` field missing (expected: `schema_version: 1`)"}):n.schema_version!==1&&t.push({code:"SCHEMA_VERSION_OUTDATED",message:`schema_version=${String(n.schema_version)} (expected: 1)`}),t}function Wr(e){if(!(st||e.length===0)){st=!0;try{const t=e.map(n=>` - ${n.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 Gi(){st=!1}function Yt(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Gr(e){return e==="active"||e==="archived"||e==="rolled-back"||e==="synthetic"||e==="orphan"?e:void 0}function Kt(e){return e==="create-epic"||e==="discovered"?e:void 0}function z(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Hr(e){const t={};let n=!1;for(const r of["contracts","contract_refs","shared_surfaces","adr_refs","nfr_refs","acceptance_depends_on"]){if(e[r]===void 0)continue;const o=e[r];if(!Array.isArray(o)||o.length>128||o.some(i=>De(i)===void 0)){n=!0;continue}t[r]=o.map(i=>De(i))}if(e.planning!==void 0)try{if(!h(e.planning))throw new Error("planning-shape");const r=e.planning;for(const s of["claims","semanticArtifacts"]){if(r[s]===void 0)continue;const c=r[s];if(!Array.isArray(c)||c.length>128||c.some(p=>!h(p)||De(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 s of r.attempts??[]){if(!h(s)||!Array.isArray(s.reasonCodes)||s.reasonCodes.length>32||s.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(s.discoveredClaims!==void 0&&(!Array.isArray(s.discoveredClaims)||s.discoveredClaims.length>128||s.discoveredClaims.some(c=>!h(c)||De(c.ref)===void 0)))throw new Error("planning-attempt-claims")}const{graphRevision:o,...i}=gr(r);t.planning=i}catch{n=!0}return n&&(t.planning={schemaVersion:1,dependencyBasis:"unknown",claims:[],semanticArtifacts:[]}),t}function h(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ue(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:void 0}function x(e){if(typeof e!="string")return;const t=e.trim();if(t)return t.replace(/[^a-z0-9_.:-]+/gi,"_").slice(0,120)}function j(e){if(typeof e!="string")return;const t=e.trim(),n=x(e);return n===t?n:void 0}function G(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(n=>!n||n.startsWith(".")||n.endsWith(".lock")))return t}function R(e){return typeof e=="string"&&/^[0-9a-f]{7,64}$/i.test(e)?e:void 0}function Y(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 le(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 Ue(e,t){if(!h(e))return;const n={};for(const r of t){const o=e[r];if(typeof o=="boolean")n[r]=o;else if(typeof o=="number"&&Number.isFinite(o))n[r]=o;else if(typeof o=="string"){const i=x(o);i&&(n[r]=i)}}return Object.keys(n).length>0?n:void 0}function Ve(e){return e==="epic"||e==="story"?e:void 0}function qt(e){if(!h(e)||e.schemaVersion!==1)return;const t=j(e.ownerStoryId),n=j(e.sessionId),r=j(e.idempotencyKey),o=Y(e.acquiredAt),i=Y(e.expiresAt);if(!(!t||!n||!r||!o||!i||Date.parse(i)<=Date.parse(o)))return{schemaVersion:1,ownerStoryId:t,sessionId:n,idempotencyKey:r,acquiredAt:o,expiresAt:i}}function Xt(e){if(!h(e)||e.schemaVersion!==1)return;const t=j(e.storyId),n=j(e.epicId),r=G(e.branch),o=R(e.baseSha),i=R(e.headSha),s=j(e.idempotencyKey),c=Y(e.recordedAt),p=z(e.commits).map(R).filter(w=>!!w).slice(0,256),l=z(e.receiptRefs).map(le).filter(w=>!!w).slice(0,256),m=e.dispatchId===void 0?void 0:j(e.dispatchId),A=e.bundleId===void 0?void 0:j(e.bundleId),f=e.bundleDigest===void 0?void 0:R(e.bundleDigest),d=e.graphRevision===void 0?void 0:R(e.graphRevision),g=e.claimRevision===void 0?void 0:j(e.claimRevision),E=Fr(e.qaReceipt),I=Jr(e.reviewReceipt);if(!(!t||!n||!t.startsWith(`${n}.`)||!r||!o||!i||o===i||!s||!c||p.length===0||l.length===0||!Array.isArray(e.commits)||p.length!==e.commits.length||e.commits.length>256||!Array.isArray(e.receiptRefs)||l.length!==e.receiptRefs.length||e.receiptRefs.length>256||e.dispatchId!==void 0&&!m||e.bundleId!==void 0&&!A||e.bundleDigest!==void 0&&(!f||f.length!==64)||e.graphRevision!==void 0&&(!d||d.length!==64)||e.claimRevision!==void 0&&!g||e.qaVerdict!=="passed"&&e.qaVerdict!=="blocked"||!["approved","changes-requested","pending"].includes(String(e.reviewVerdict))||!E||e.reviewVerdict!=="pending"&&!I||e.reviewVerdict==="pending"&&I||E.verdict!==e.qaVerdict||I&&I.verdict!==e.reviewVerdict||!Zt(E,{storyId:t,epicId:n,baseSha:o,headSha:i,bundleDigest:f,graphRevision:d})||I&&(!Zt(I,{storyId:t,epicId:n,baseSha:o,headSha:i,bundleDigest:f,graphRevision:d})||I.qaReceiptRef!==E?.receiptRef||I.receiptRef===E?.receiptRef)||!l.includes(String(E.receiptRef))||I&&(!l.includes(String(I.receiptRef))||Date.parse(String(I.reviewedAt))<Date.parse(String(E.checkedAt)))))return{schemaVersion:1,storyId:t,epicId:n,branch:r,baseSha:o,headSha:i,idempotencyKey:s,...m?{dispatchId:m}:{},...A?{bundleId:A}:{},...f?{bundleDigest:f}:{},...d?{graphRevision:d}:{},...g?{claimRevision:g}:{},qaVerdict:e.qaVerdict,reviewVerdict:e.reviewVerdict,...E?{qaReceipt:E}:{},...I?{reviewReceipt:I}:{},recordedAt:c,commits:p,receiptRefs:l}}function Fr(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=j(e.storyId),n=j(e.epicId),r=R(e.baseSha),o=R(e.headSha),i=R(e.bundleDigest),s=R(e.graphRevision),c=R(e.sourceEvidenceDigest),p=Y(e.checkedAt),l=le(e.receiptRef),m=e.evidenceVersion==="p205-execution-v2"&&e.contract==="P205-CI-02"?e.contract:void 0,A=e.evidenceVersion==="p205-execution-v2"&&e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,f=e.evidenceVersion==="p205-execution-v2"?R(e.manifestDigest):void 0,d=e.evidenceVersion==="p205-execution-v2"?R(e.resultDigest):void 0,g=e.evidenceVersion==="p205-execution-v2"?z(e.gateIds).map(j).filter(E=>!!E).slice(0,64):void 0;if(!(!t||!n||!r||!o||!i||i.length!==64||!s||s.length!==64||!c||c.length!==64||!p||!l||e.evidenceVersion==="p205-execution-v2"&&(!m||A!=="node scripts/test-root.mjs --gate complete"||!f||f.length!==64||!d||d.length!==64||!Array.isArray(e.gateIds)||!g||g.length===0||g.length!==e.gateIds.length)))return{schemaVersion:1,kind:"story_qa_evidence",producer:"local-yolo-tdd",...e.evidenceVersion?{evidenceVersion:e.evidenceVersion}:{},storyId:t,epicId:n,...e.evidenceVersion==="p205-execution-v2"?{contract:m,command:A,manifestDigest:f,gateIds:g,resultDigest:d}:{},baseSha:r,headSha:o,bundleDigest:i,graphRevision:s,sourceEvidenceDigest:c,verdict:e.verdict,checkedAt:p,receiptRef:l}}function Qt(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=j(e.storyId),n=j(e.epicId),r=G(e.branch),o=R(e.baseSha),i=R(e.headSha),s=R(e.aggregateHeadSha),c=R(e.commitBodyDigest),p=R(e.changedPathsDigest),l=e.claimVerification==="canonical"||e.claimVerification==="legacy-migration"?e.claimVerification:void 0,m=R(e.effectiveClaimRevision),A=e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,f=R(e.manifestDigest),d=z(e.gateIds).map(j).filter(y=>!!y).slice(0,64),g=R(e.resultDigest),E=R(e.graphRevision),I=R(e.executionEvidenceDigest),w=R(e.sourceEvidenceDigest),k=Y(e.verifiedAt),C=z(e.reasonCodes).map(j).filter(y=>!!y).slice(0,16);if(!(!t||!n||!r||!o||o.length<40||!i||i.length<40||!s||s.length<40||!c||c.length!==64||!p||p.length!==64||!l||!m||m.length!==64||!A||!f||f.length!==64||!Array.isArray(e.gateIds)||d.length!==e.gateIds.length||!g||g.length!==64||!E||E.length!==64||!I||I.length!==64||!w||w.length!==64||!k||C.length===0||e.verdict==="verified"&&(d.length===0||!C.includes("checkpoint-p205-transient-verified"))))return{schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:t,epicId:n,branch:r,baseSha:o,headSha:i,aggregateHeadSha:s,commitBodyDigest:c,changedPathsDigest:p,claimVerification:l,effectiveClaimRevision:m,command:A,manifestDigest:f,gateIds:d,resultDigest:g,graphRevision:E,executionEvidenceDigest:I,sourceEvidenceDigest:w,verifiedAt:k,verdict:e.verdict,reasonCodes:C,publicSafe:!0}}function Jr(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=j(e.storyId),n=j(e.epicId),r=R(e.baseSha),o=R(e.headSha),i=R(e.bundleDigest),s=R(e.graphRevision),c=R(e.sourceEvidenceDigest),p=le(e.qaReceiptRef),l=Y(e.reviewedAt),m=le(e.receiptRef);if(!(!t||!n||!r||!o||!i||i.length!==64||!s||s.length!==64||!c||c.length!==64||!p||!l||!m))return{schemaVersion:1,kind:"story_review_evidence",producer:"root-commit-range-review",storyId:t,epicId:n,baseSha:r,headSha:o,bundleDigest:i,graphRevision:s,sourceEvidenceDigest:c,qaReceiptRef:p,verdict:e.verdict,reviewedAt:l,receiptRef:m}}function Zt(e,t){return["storyId","epicId","baseSha","headSha","bundleDigest","graphRevision"].every(n=>e[n]===t[n])}function en(e){if(!h(e)||e.schemaVersion!==1||e.capturedFromCurrentCheckout!==!0)return;const t=G(e.originBranch),n=R(e.originHeadSha),r=G(e.executionBranch),o=Y(e.capturedAt);if(!(!t||!n||n.length<40||!r||!o||t===r))return{schemaVersion:1,originBranch:t,originHeadSha:n,executionBranch:r,capturedFromCurrentCheckout:!0,capturedAt:o}}function tn(e){if(!h(e)||e.schemaVersion!==1||e.verdict!=="passed")return;const t=R(e.executionHeadSha),n=R(e.graphRevision),r=Y(e.checkedAt),o=le(e.receiptRef),i=z(e.gateIds).map(j).filter(m=>!!m).slice(0,128),s=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,p=s?R(e.manifestDigest):void 0,l=s?R(e.resultDigest):void 0;if(!(!t||t.length<40||!n||n.length!==64||!r||!o||i.length===0||!Array.isArray(e.gateIds)||i.length!==e.gateIds.length||e.gateIds.length>128||!c&&!s||s&&(!p||p.length!==64||!l||l.length!==64)))return{schemaVersion:1,...s?{evidenceVersion:"p205-execution-v2",producer:"local-yolo-tdd",contract:"P205-CI-02",command:"node scripts/test-root.mjs --gate complete",manifestDigest:p,resultDigest:l}:{},verdict:"passed",executionHeadSha:t,graphRevision:n,checkedAt:r,receiptRef:o,gateIds:i}}function Be(e){if(!h(e)||e.schemaVersion!==1)return;const t=Ue(e,["schemaVersion","kind","storyId","epicId","baseSha","headSha","originalBaseSha","originalHeadSha","gitPullRequest","preservesLaterCommits","historyRewrite","recordedAt"])??{},n=z(e.receiptRefs).map(le).filter(o=>!!o).slice(0,256),r=z(e.revertCommits).map(x).filter(o=>!!o).slice(0,256);return{...t,...n.length?{receiptRefs:n}:{},...r.length?{revertCommits:r}:{}}}function nn(e){if(!h(e)||e.schemaVersion!==1||e.publicSafe!==!0)return;const t=j(e.epicId),n=G(e.executionBranch),r=G(e.originBranch),o=R(e.baseSha),i=R(e.executionHeadSha),s=e.mergeSha===void 0?void 0:R(e.mergeSha),c=e.pushedSha===void 0?void 0:R(e.pushedSha),p=j(e.idempotencyKey),l=Y(e.attemptStartedAt),m=e.completedAt===void 0?void 0:Y(e.completedAt),A=z(e.localGateReceiptRefs).map(le).filter(E=>!!E).slice(0,256),f=z(e.reasonCodes).map(j).filter(E=>!!E).slice(0,64),d=Yr(e.candidateQa),g=zr(e.providerGuard);if(!(!t||!n||!r||!o||!i||!p||!l||A.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&&!g||g&&(e.strategy!=="single_pr"||e.physicalStatus!=="pushed"||g.prHeadSha!==s||g.originHeadSha!==o)))return{schemaVersion:1,epicId:t,executionBranch:n,originBranch:r,baseSha:o,executionHeadSha:i,...s?{mergeSha:s}:{},...c?{pushedSha:c}:{},strategy:e.strategy,...ue(e.prNumber)?{prNumber:ue(e.prNumber)}:{},physicalStatus:e.physicalStatus,localGateReceiptRefs:A,idempotencyKey:p,attemptStartedAt:l,...d?{candidateQa:d}:{},...g?{providerGuard:g}:{},...m?{completedAt:m}:{},retryEligible:e.retryEligible,reasonCodes:f,publicSafe:!0}}function zr(e){if(!h(e)||e.schemaVersion!==1||e.provider!=="github"||e.publicSafe!==!0)return;const t=String(e.mode),n=String(e.source),r=t==="recovered_exact_tree"?n==="physical_recovery":t==="strict_up_to_date_expected_head"&&["branch_protection","ruleset","branch_protection_and_ruleset"].includes(n),o=R(e.prHeadSha),i=R(e.originHeadSha),s=Y(e.checkedAt);if(!(!r||!o||!i||!s))return{schemaVersion:1,provider:"github",mode:t,source:n,prHeadSha:o,originHeadSha:i,checkedAt:s,publicSafe:!0}}function Yr(e){if(!h(e)||e.schemaVersion!==1||e.kind!=="epic_merge_candidate_qa"||e.contract!=="P205-CI-02"||e.command!==yr)return;const n=Object.fromEntries(["originHeadSha","executionHeadSha","mergeSha","treeSha","graphRevision","manifestDigest","resultDigest"].map(s=>[s,R(e[s])])),r=Y(e.checkedAt),o=le(e.receiptRef),i=z(e.gateIds).filter(s=>/^[a-z0-9-]+$/.test(s)).slice(0,128);if(!(Object.values(n).some(s=>!s)||!r||!o||i.length===0))return{schemaVersion:1,kind:e.kind,contract:e.contract,command:e.command,...n,checkedAt:r,receiptRef:o,gateIds:i}}function Kr(e){if(!h(e))return;const t={...x(e.active_epic_id??e.activeEpicId)?{active_epic_id:x(e.active_epic_id??e.activeEpicId)}:{},...x(e.active_story_id??e.activeStoryId)?{active_story_id:x(e.active_story_id??e.activeStoryId)}:{},...x(e.active_step_id??e.activeStepId)?{active_step_id:x(e.active_step_id??e.activeStepId)}:{},...x(e.session_id??e.sessionId)?{session_id:x(e.session_id??e.sessionId)}:{},...x(e.started_at??e.startedAt)?{started_at:x(e.started_at??e.startedAt)}:{}};return Object.keys(t).length>0?t:void 0}function qr(e){const t=Ue(e.completionEvidence??e.completion_evidence,["prNumber","pr_number","prState","pr_state","pullRequestState","merged","mergedAt","issueNumber","issue_number","issueState","issue_state","closedAt"]),n=Ue(e.issueCloseAudit??e.issue_close_audit,["schema_version","event","storyId","epicId","issueNumber","closedAt","publicSafe","rawLogStorage"]),r=Ue(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}:{},...x(e.physicalMergeStatus)?{physicalMergeStatus:x(e.physicalMergeStatus)}:{},...x(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)?{pr_state:x(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)}:{},...x(e.issue_state??e.issueState??e.workflow_issue_state)?{issue_state:x(e.issue_state??e.issueState??e.workflow_issue_state)}:{},...ue(e.issue_number??e.issueNumber)?{issue_number:ue(e.issue_number??e.issueNumber)}:{},...t?{completionEvidence:t}:{},...n?{issueCloseAudit:n}:{},...r?{scopedCiEvidence:r}:{}}}class pe extends Error{reasonCode;constructor(t){super(t),this.name="StateSnapshotIntegrityError",this.reasonCode=t}}const Xr=new Set(["yolo","yoloop","finalize-epic","audit"]);function rn(e){return typeof e=="string"&&Xr.has(e)}function on(e,t={}){const n=ee(e,".neocortex","state.json");if(!ve(n))throw new pe("git-lifecycle-state-missing");let r;try{r=JSON.parse(_e(n,"utf8"))}catch{throw new pe("git-lifecycle-state-corrupt")}if(!h(r)||!h(r.epics)||!h(r.stories))throw new pe("git-lifecycle-state-shape-invalid");const o=Object.values(r.epics).some(i=>h(i)&&(i.branch_mode==="epic"||G(i.execution_branch)!==void 0));if(o)try{Xe(e,{required:!0})}catch(i){const s=i instanceof Error&&/^git-lifecycle-/.test(i.message)?i.message:"git-lifecycle-runtime-invalid";if(t.allowMissingRuntime&&s==="git-lifecycle-runtime-missing")return{lifecycleDeclared:!0,runtimeMissing:!0};throw new pe(s)}return{lifecycleDeclared:o,runtimeMissing:!1}}function sn(e,t={}){const n=ee(e,".neocortex","state.json");if(!ve(n)){if(t.epicAware&&!t.projectless)throw new pe("git-lifecycle-state-missing");return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}let r;try{const f=_e(n,"utf-8"),d=JSON.parse(f),g=h(d.epics)?d.epics:{},E=Object.values(g).some(y=>h(y)&&(y.branch_mode==="epic"||G(y.execution_branch)!==void 0)),I=Xe(e,{required:!!(t.epicAware&&E&&!t.projectless)});r=jt(d,I);const w=h(r.stories)?r.stories:{},k=h(r.epics)?r.epics:{},C=h(d.stories)?d.stories:{};for(const[y,S]of Object.entries(w)){const _=h(S)?S:void 0;if(!_?.checkpoint)continue;const M=typeof _.epic_id=="string"?_.epic_id:y.split(".")[0],D=h(k[M])?k[M]:void 0,L=G(D?.execution_branch);if(!L)continue;const U=_r(e,_.checkpoint,y,M,L,t.p205Authorities?.[y]??null,Mt(y,_,h(_.checkpoint)?_.checkpoint:void 0));if(_.checkpoint_verification=U,U.verdict==="rejected"){const v=h(C[y])?C[y]:void 0;if(v?.checkpoint?_.checkpoint=structuredClone(v.checkpoint):delete _.checkpoint,I.stories[y]?.checkpoint!==void 0)for(const P of["status","last_step","steps_completed"])v&&Object.prototype.hasOwnProperty.call(v,P)?_[P]=structuredClone(v[P]):delete _[P]}}}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 pe(d)}return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}try{const f=$r(r);f.length>0&&Wr(f)}catch{}const o=r.config??r.project??{},i=r.stories??{},s={};for(const[f,d]of Object.entries(i))s[f]={id:d.id??f,title:d.title,epic_id:d.epic_id,status:d.status??"backlog",...Kt(d.source)?{source:Kt(d.source)}:{},steps_completed:d.steps_completed??[],last_step:d.last_step??null,branch_name:d.branch_name??null,pr_number:d.pr_number,...Ve(d.branch_mode)?{branch_mode:Ve(d.branch_mode)}:{},...Xt(d.checkpoint)?{checkpoint:Xt(d.checkpoint)}:{},...Qt(d.checkpoint_verification)?{checkpoint_verification:Qt(d.checkpoint_verification)}:{},...Be(d.review_request)?{review_request:Be(d.review_request)}:{},...Be(d.rollback_receipt)?{rollback_receipt:Be(d.rollback_receipt)}:{},...ue(d.workflow_issue)?{workflow_issue:ue(d.workflow_issue)}:{},...qr(d),depends_on:Yt(d.depends_on),files_to_modify:z(d.files_to_modify),...Hr(d),risk:typeof d.risk=="string"?d.risk:void 0,blast_radius:typeof d.blast_radius=="number"?d.blast_radius:void 0};const c=r.epics??{},p={};for(const[f,d]of Object.entries(c)){const g=Gr(d.lifecycle_classification);p[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:Yt(d.depends_on),...Ve(d.branch_mode)?{branch_mode:Ve(d.branch_mode)}:{},...G(d.execution_branch)?{execution_branch:G(d.execution_branch)}:{},...G(d.origin_branch)?{origin_branch:G(d.origin_branch)}:{},...qt(d.branch_lease)?{branch_lease:qt(d.branch_lease)}:{},...en(d.origin_binding)?{origin_binding:en(d.origin_binding)}:{},...tn(d.aggregate_qa_receipt)?{aggregate_qa_receipt:tn(d.aggregate_qa_receipt)}:{},...ue(d.pr_number)?{pr_number:ue(d.pr_number)}:{},...x(d.physicalMergeStatus)?{physicalMergeStatus:x(d.physicalMergeStatus)}:{},...R(d.graph_revision)?{graph_revision:R(d.graph_revision)}:{},...nn(d.terminal_git_receipt)?{terminal_git_receipt:nn(d.terminal_git_receipt)}:{},...g?{lifecycle_classification:g}:{}}}const l=Kr(r.current_session??r.currentSession),m=r.epic_id_ledger,A=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 r.schema_version=="number"?r.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:s,epics:p,...A.length>0?{epic_id_ledger:{schema_version:1,reserved_ids:A}}:{},...l?{current_session:l}:{}}}async function Qr(e,t,n){if(!rn(n))return{};if(Vn(t,n))return{};try{const r=JSON.parse(_e(ee(e,".neocortex","state.json"),"utf8")),o=Xe(e,{required:!0}),i=jt(r,o),s=h(i.stories)?i.stories:{},c=h(i.epics)?i.epics:{},p=ke("git",["rev-parse","HEAD"],{cwd:e,encoding:"utf8"}).trim(),l=ke("git",["symbolic-ref","--quiet","--short","HEAD"],{cwd:e,encoding:"utf8"}).trim(),m=ke("git",["rev-list","--first-parent","--reverse",p],{cwd:e,encoding:"utf8",maxBuffer:32*1024*1024}).trim().split(`
8
- `).filter(Boolean),A=new Map(m.map((y,S)=>[y,S])),f=t.match(/(?:^|\s)@?docs\/stories\/([A-Za-z][A-Za-z0-9._-]*)\.story\.md(?:\s|$)/)?.[1],d=n==="yoloop"?t.match(/(?:^|[\s/@])epic-(P[1-9][0-9]*)\.md(?:\s|$)/i)?.[1]?.toUpperCase():void 0,g=new Set,E=Object.entries(s).flatMap(([y,S])=>{if(f&&y!==f)return[];const _=h(S)?S:void 0,M=h(_?.checkpoint)?_.checkpoint:void 0;if(!M)return[];const D=typeof _?.epic_id=="string"?_.epic_id:y.split(".")[0];if(d&&D!==d)return[];const L=R(M?.headSha);if(!L||L.length<40||A.get(L)===void 0)return g.add(D),[];const U=h(c[D])?c[D]:void 0;if(U?.branch_mode!=="epic"||G(U.execution_branch)!==l||G(M.branch)!==l)return g.add(D),[];const v=R(M.graphRevision);if(!v||v.length!==64)return g.add(D),[];const P=R(M.claimRevision),Q=[...Mt(y,_,M)].sort(),Te=Er(e,M,y,D,l,Q);if(!Te&&P){if(Q.length===0)return g.add(D),[];const ge=ke("git",["diff-tree","--no-commit-id","--name-only","-r","-z",L],{cwd:e,encoding:"utf8"}).split("\0").filter(Boolean);if(ge.length===0||ge.some(T=>!Q.some(ye=>ye===T||ye.endsWith("/")&&T.startsWith(ye))))return g.add(D),[];const Z=be("sha256").update(Q.join("\0")).digest("hex"),Fe=be("sha256").update(JSON.stringify(Q)).digest("hex");if(P!==Z&&P!==Fe)return g.add(D),[]}else if(!Te)return g.add(D),[];return v?.length===64?[{storyId:y,epicId:D,graphRevision:v,checkpointHead:L,position:A.get(L)}]:[]}),I=new Set(g);for(const[y,S]of Object.entries(c)){const _=h(S)?S:void 0,M=Array.isArray(_?.stories)?_.stories.filter(v=>typeof v=="string"):Object.keys(s).filter(v=>v.startsWith(`${y}.`)),D=E.filter(v=>v.epicId===y),L=M.filter(v=>D.some(P=>P.storyId===v)),U=[...D].sort((v,P)=>v.position-P.position).map(v=>v.storyId);(JSON.stringify(L)!==JSON.stringify(U)||new Set(U).size!==U.length)&&I.add(y)}const w={},k=[...new Set(E.filter(y=>!I.has(y.epicId)).map(y=>y.graphRevision))],C=k.length>0?await mr(e,{headSha:p,graphRevisions:k}):new Map;for(const y of E){if(I.has(y.epicId))continue;const S=C.get(y.graphRevision);if(!S)throw new Error("p205-transient-authority-missing");w[y.storyId]=S}return w}catch(r){const o=r instanceof Error&&/^(?:p205|git-lifecycle)-[a-z0-9-]+$/.test(r.message)?r.message:"p205-transient-execution-failed";return process.stderr.write(`[Neocortex] ${o}. Checkpoint projection remains fail-closed.
9
- `),{}}}function Hi(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 an="neocortex:menu:cache";async function Zr(e){try{const t=await e.get(an);if(!t)return null;const n=JSON.parse(t);return n.version!==Ee||Date.now()-n.cachedAt>Vt?null:n}catch{return null}}async function eo(e,t,n){try{const r={instructions:t,metadata:n,cachedAt:Date.now(),version:Ee};await e.set(an,JSON.stringify(r),Vt),to()}catch{}}function to(){try{ve(Ut)&&On(Ut)}catch{}}function no(e){return e.execute({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},()=>St(),()=>St({strictReadOnly:!0}))}async function cn(e,t,n){try{let r;const o=n.mode==="strict";if(o&&t)r=new Ke({cacheDir:Qe,passphrase:t,strictReadOnly:!0});else if(o)r=new Et;else if(t){const m=ee(Pe,"cache");r=new Ke({cacheDir:m,passphrase:t})}else process.stderr.write(`[neocortex] Warning: No license key in config. Run "neocortex activate" to re-authenticate.
10
- `),r=new Et;const i=Lt(n,r,"auth-cache"),s=Lt(n,r,"tier-cache"),c=new kn({serverUrl:e,licenseKey:t??"",cacheProvider:i,strictReadOnly:o}),p=await c.getToken();if(!p)return null;const l=new Ln({cacheProvider:s,licenseClient:c});return{token:p,client:c,tierClient:l}}catch{return null}}let dn=!1;function ro(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 un=3,$e=50;function oo(e){return new Promise(t=>setTimeout(t,e))}function io(e,t,n){return e.status>=500&&e.status<=599?!0:n&&e.status===409&&t.error_code==="SIGNATURE_REPLAYED"}async function at(e,t,n,r,o={}){const i=Math.max(1,Math.min(o.maxAttempts??un,un)),s=o.sleep??oo;let c=r,p=!1,l=!1,m=0;for(let A=1;A<=i;A+=1){const f=Math.max(Math.floor(Date.now()/1e3),m+1);m=f;const d=so(t,n,c,{nowSeconds:f}),g=new AbortController,E=setTimeout(()=>g.abort(),Bt);try{const I=await fetch(`${e}${t}`,{method:"POST",headers:d.headers,body:d.body,signal:g.signal}),w=await I.text().catch(()=>""),k=(()=>{try{return w?JSON.parse(w):{}}catch{return{}}})();if(I.status===401&&!p&&o.refreshToken&&(k.fallback_action==="refresh_token"||k.fallback_action==="re_authenticate")){p=!0;const C=await o.refreshToken();if(C&&A<i){c=C,o.onTokenChanged?.(C),await s($e*A);continue}}if(I.status===401&&k.error_code==="SIGNATURE_EXPIRED"&&!l&&A<i){l=!0,await s($e*A);continue}if(A<i&&io(I,k,o.allowReplayRetry===!0)){await s($e*A);continue}return{response:I,text:w,parsed:k,networkFailure:!1}}catch{if(A<i){await s($e*A);continue}return{text:"",parsed:{},networkFailure:!0}}finally{clearTimeout(E)}}return{text:"",parsed:{},networkFailure:!0}}function so(e,t,n,r={}){const o=Buffer.from(JSON.stringify(t),"utf8"),i=qn({method:"POST",target:e,body:o,bearerToken:n,clientVersion:Ee,nowSeconds:r.nowSeconds,nonceBytes:r.nonceBytes});return{body:i.body,headers:{...i.headers,Authorization:`Bearer ${n}`}}}function ln(e){return be("sha256").update(e).digest("hex")}function ao(){const e=Number(process.env.NEOCORTEX_INVOKE_CHUNK_BYTES??"49152");return Number.isFinite(e)&&e>=1024&&e<=98304?Math.floor(e):49152}function co(e,t,n){return`args-${be("sha256").update("invoke-materialization:v1").update(e).update(String(t)).update(JSON.stringify(n)).digest("hex")}`}async function pn(e,t,n,r,o={}){const i=await at(e,t,n,r,{...o,allowReplayRetry:!0});if(i.networkFailure||!i.response)throw new Error("NETWORK_ERROR: materialization request failed after bounded retries");const{response:s,parsed:c}=i;if(!s.ok){const p=typeof c.error_code=="string"?c.error_code:`HTTP_${s.status}`,l=typeof c.message=="string"?c.message:"materialization upload failed";throw new Error(`${p}: ${l}`)}return c}async function uo(e,t,n,r){const o=Buffer.from(t,"utf8"),i=ao(),s=[];for(let g=0,E=0;g<o.byteLength;g+=i,E++){const I=o.subarray(g,Math.min(g+i,o.byteLength));s.push({index:E,sha256:ln(I),byteLength:I.byteLength})}const c=ln(o),p=co(c,o.byteLength,s),l=Number(process.env.NEOCORTEX_INVOKE_CHUNK_TTL_SECONDS??"900");let m=n;const A={refreshToken:r,onTokenChanged(g){m=g}};for(const g of s){const E=g.index*i,I=o.subarray(E,E+g.byteLength);await pn(e,"/api/v1/invoke/materialization/chunks",{manifestId:p,index:g.index,sha256:g.sha256,byteLength:g.byteLength,contentBase64:I.toString("base64"),ttlSeconds:l,idempotencyKey:`${p}:${g.index}:${g.sha256}`},m,A)}const d=(await pn(e,"/api/v1/invoke/materialization/manifests",{manifestId:p,sha256:c,byteLength:o.byteLength,chunkCount:s.length,chunks:s,ttlSeconds:l,retry:{attempt:1,budget:3,idempotencyKey:p}},m,A)).argsRef;if(!d?.manifestId)throw new Error("MATERIALIZATION_RESPONSE_INVALID: missing argsRef");return{argsRef:d,chunks:s}}function Ae(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function lo(...e){const t=new Set,n=[];for(const r of e)for(const o of r??[]){const i=x(o);if(!(!i||t.has(i))&&(t.add(i),n.push(i),n.length>=16))return n}return n}function po(e){const t=e.graphRetrieval;if(!h(t))return{accepted:!1,itemCount:0};const n=Array.isArray(t.items)?t.items.length:0;return{accepted:n>0||typeof t.retrievalId=="string"||t.accepted===!0,itemCount:n}}function ct(e,t=Ae(e),n=[],r={}){const o=e.stateSnapshot.scope,i=Object.keys(e.stateSnapshot.stories).length,s=Object.keys(e.stateSnapshot.epics).length,c=o?.kind??"full";return{schemaVersion:1,payloadBytes:t,limitBytes:r.limitBytes??Wt,warningThresholdBytes:r.warningThresholdBytes??Ze,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??s,omittedEpics:o?.omittedEpicCount??0,graphRetrieval:po(e.stateSnapshot),reasonCodes:lo(n,o?.reasonCodes),publicSafe:!0}}function fo(e){const t=h(e.budget)?e.budget:void 0,n=typeof t?.maxPayloadBytes=="number"&&Number.isFinite(t.maxPayloadBytes)?t.maxPayloadBytes:12*1024;return Math.max(1024,Math.min(n,12*1024))}function go(e){return h(e)?{stableId:x(e.stableId)??"unknown",...h(e.source)?{source:e.source}:{},reasonCode:"budget_exceeded"}:{stableId:"unknown",reasonCode:"budget_exceeded"}}function fn(e){const t=Array.isArray(e)?e.filter(n=>typeof n=="string"):[];return t.includes("budget_exceeded")?t:[...t,"budget_exceeded"]}function ho(e){const t=e.graphRetrieval;if(!h(t)||!Array.isArray(t.items))return e;const n=fo(t);let r=[...t.items],o=Array.isArray(t.skipped)?[...t.skipped]:[],i=t;for(;Buffer.byteLength(JSON.stringify(i),"utf8")>n&&r.length>0;){const s=r.pop();o=[...o,go(s)].slice(-32),i={...t,items:r,skipped:o,warnings:fn(t.warnings)}}return Buffer.byteLength(JSON.stringify(i),"utf8")>n&&(i={...t,query:typeof t.query=="string"?t.query.slice(0,240):t.query,items:[],skipped:[],warnings:fn(t.warnings)}),i===t?e:{...e,graphRetrieval:i}}function gn(e,t={}){const n=t.limitBytes??Wt,r=t.warningThresholdBytes??Math.floor(n*Gt),o=Ae(e);if(o<n)return{body:e,degraded:!1,telemetry:ct(e,o,["payload-within-limit"],{limitBytes:n,warningThresholdBytes:r})};let i={...e,stateSnapshot:Mn(e.stateSnapshot)},s=["payload-size-guardrail","state-degraded"],c=Ae(i);c>=n&&(i={...i,stateSnapshot:ho(i.stateSnapshot)},s=[...s,"graph-retrieval-budget-enforced"],c=Ae(i));const p=ct(i,c,s,{limitBytes:n,warningThresholdBytes:r});if(c>=n){const l=i.stateSnapshot.scope?.projectionMode;throw l==="yolo-story"||l==="yoloop-target"||l==="yoloop-session"||l==="yoloop-discovery"||l==="structural-required"?new it(p):new ot(p)}return{body:i,degraded:!0,telemetry:p}}function hn(e){const t=e.stateSnapshot.scope?.commandId??"resolved-command";return e.args!==void 0?t:`${t}:argsRef`}function mo(e){const t=Ae(e);if(t<Ze)return t;const n=ct(e,t,["payload-warning-threshold"]);return process.stderr.write(`[Neocortex] invoke payload near server limit: trigger=${hn(e)} scope=${n.scope.kind} mode=${n.scope.projectionMode??n.scope.kind} payloadBytes=${n.payloadBytes} limit=${n.limitBytes} includedStories=${n.includedStories} omittedStories=${n.omittedStories} includedEpics=${n.includedEpics} omittedEpics=${n.omittedEpics} graphRetrieval.accepted=${n.graphRetrieval.accepted} graphRetrieval.itemCount=${n.graphRetrieval.itemCount} reasonCodes=${n.reasonCodes.join(",")||"none"}
7
+ `)}catch{}}}function Hi(){st=!1}function zt(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Hr(e){return e==="active"||e==="archived"||e==="rolled-back"||e==="synthetic"||e==="orphan"?e:void 0}function qt(e){return e==="create-epic"||e==="discovered"?e:void 0}function z(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Gr(e){const t={};let n=!1;for(const r of["contracts","contract_refs","shared_surfaces","adr_refs","nfr_refs","acceptance_depends_on"]){if(e[r]===void 0)continue;const o=e[r];if(!Array.isArray(o)||o.length>128||o.some(i=>Pe(i)===void 0)){n=!0;continue}t[r]=o.map(i=>Pe(i))}if(e.planning!==void 0)try{if(!m(e.planning))throw new Error("planning-shape");const r=e.planning;for(const s of["claims","semanticArtifacts"]){if(r[s]===void 0)continue;const c=r[s];if(!Array.isArray(c)||c.length>128||c.some(l=>!m(l)||Pe(l.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 s of r.attempts??[]){if(!m(s)||!Array.isArray(s.reasonCodes)||s.reasonCodes.length>32||s.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(s.discoveredClaims!==void 0&&(!Array.isArray(s.discoveredClaims)||s.discoveredClaims.length>128||s.discoveredClaims.some(c=>!m(c)||Pe(c.ref)===void 0)))throw new Error("planning-attempt-claims")}const{graphRevision:o,...i}=gr(r);t.planning=i}catch{n=!0}return n&&(t.planning={schemaVersion:1,dependencyBasis:"unknown",claims:[],semanticArtifacts:[]}),t}function m(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ue(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:void 0}function x(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(),n=x(e);return n===t?n:void 0}function H(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(n=>!n||n.startsWith(".")||n.endsWith(".lock")))return t}function R(e){return typeof e=="string"&&/^[0-9a-f]{7,64}$/i.test(e)?e:void 0}function q(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 le(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 Ve(e,t){if(!m(e))return;const n={};for(const r of t){const o=e[r];if(typeof o=="boolean")n[r]=o;else if(typeof o=="number"&&Number.isFinite(o))n[r]=o;else if(typeof o=="string"){const i=x(o);i&&(n[r]=i)}}return Object.keys(n).length>0?n:void 0}function Be(e){return e==="epic"||e==="story"?e:void 0}function Kt(e){if(!m(e)||e.schemaVersion!==1)return;const t=M(e.ownerStoryId),n=M(e.sessionId),r=M(e.idempotencyKey),o=q(e.acquiredAt),i=q(e.expiresAt);if(!(!t||!n||!r||!o||!i||Date.parse(i)<=Date.parse(o)))return{schemaVersion:1,ownerStoryId:t,sessionId:n,idempotencyKey:r,acquiredAt:o,expiresAt:i}}function Xt(e){if(!m(e)||e.schemaVersion!==1)return;const t=M(e.storyId),n=M(e.epicId),r=H(e.branch),o=R(e.baseSha),i=R(e.headSha),s=M(e.idempotencyKey),c=q(e.recordedAt),l=z(e.commits).map(R).filter(T=>!!T).slice(0,256),p=z(e.receiptRefs).map(le).filter(T=>!!T).slice(0,256),g=e.dispatchId===void 0?void 0:M(e.dispatchId),A=e.bundleId===void 0?void 0:M(e.bundleId),f=e.bundleDigest===void 0?void 0:R(e.bundleDigest),d=e.graphRevision===void 0?void 0:R(e.graphRevision),h=e.claimRevision===void 0?void 0:M(e.claimRevision),E=Fr(e.qaReceipt),I=Jr(e.reviewReceipt);if(!(!t||!n||!t.startsWith(`${n}.`)||!r||!o||!i||o===i||!s||!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&&!g||e.bundleId!==void 0&&!A||e.bundleDigest!==void 0&&(!f||f.length!==64)||e.graphRevision!==void 0&&(!d||d.length!==64)||e.claimRevision!==void 0&&!h||e.qaVerdict!=="passed"&&e.qaVerdict!=="blocked"||!["approved","changes-requested","pending"].includes(String(e.reviewVerdict))||!E||e.reviewVerdict!=="pending"&&!I||e.reviewVerdict==="pending"&&I||E.verdict!==e.qaVerdict||I&&I.verdict!==e.reviewVerdict||!Zt(E,{storyId:t,epicId:n,baseSha:o,headSha:i,bundleDigest:f,graphRevision:d})||I&&(!Zt(I,{storyId:t,epicId:n,baseSha:o,headSha:i,bundleDigest:f,graphRevision:d})||I.qaReceiptRef!==E?.receiptRef||I.receiptRef===E?.receiptRef)||!p.includes(String(E.receiptRef))||I&&(!p.includes(String(I.receiptRef))||Date.parse(String(I.reviewedAt))<Date.parse(String(E.checkedAt)))))return{schemaVersion:1,storyId:t,epicId:n,branch:r,baseSha:o,headSha:i,idempotencyKey:s,...g?{dispatchId:g}:{},...A?{bundleId:A}:{},...f?{bundleDigest:f}:{},...d?{graphRevision:d}:{},...h?{claimRevision:h}:{},qaVerdict:e.qaVerdict,reviewVerdict:e.reviewVerdict,...E?{qaReceipt:E}:{},...I?{reviewReceipt:I}:{},recordedAt:c,commits:l,receiptRefs:p}}function Fr(e){if(!m(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),n=M(e.epicId),r=R(e.baseSha),o=R(e.headSha),i=R(e.bundleDigest),s=R(e.graphRevision),c=R(e.sourceEvidenceDigest),l=q(e.checkedAt),p=le(e.receiptRef),g=e.evidenceVersion==="p205-execution-v2"&&e.contract==="P205-CI-02"?e.contract:void 0,A=e.evidenceVersion==="p205-execution-v2"&&e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,f=e.evidenceVersion==="p205-execution-v2"?R(e.manifestDigest):void 0,d=e.evidenceVersion==="p205-execution-v2"?R(e.resultDigest):void 0,h=e.evidenceVersion==="p205-execution-v2"?z(e.gateIds).map(M).filter(E=>!!E).slice(0,64):void 0;if(!(!t||!n||!r||!o||!i||i.length!==64||!s||s.length!==64||!c||c.length!==64||!l||!p||e.evidenceVersion==="p205-execution-v2"&&(!g||A!=="node scripts/test-root.mjs --gate complete"||!f||f.length!==64||!d||d.length!==64||!Array.isArray(e.gateIds)||!h||h.length===0||h.length!==e.gateIds.length)))return{schemaVersion:1,kind:"story_qa_evidence",producer:"local-yolo-tdd",...e.evidenceVersion?{evidenceVersion:e.evidenceVersion}:{},storyId:t,epicId:n,...e.evidenceVersion==="p205-execution-v2"?{contract:g,command:A,manifestDigest:f,gateIds:h,resultDigest:d}:{},baseSha:r,headSha:o,bundleDigest:i,graphRevision:s,sourceEvidenceDigest:c,verdict:e.verdict,checkedAt:l,receiptRef:p}}function Qt(e){if(!m(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),n=M(e.epicId),r=H(e.branch),o=R(e.baseSha),i=R(e.headSha),s=R(e.aggregateHeadSha),c=R(e.commitBodyDigest),l=R(e.changedPathsDigest),p=e.claimVerification==="canonical"||e.claimVerification==="legacy-migration"?e.claimVerification:void 0,g=R(e.effectiveClaimRevision),A=e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,f=R(e.manifestDigest),d=z(e.gateIds).map(M).filter(y=>!!y).slice(0,64),h=R(e.resultDigest),E=R(e.graphRevision),I=R(e.executionEvidenceDigest),T=R(e.sourceEvidenceDigest),k=q(e.verifiedAt),C=z(e.reasonCodes).map(M).filter(y=>!!y).slice(0,16);if(!(!t||!n||!r||!o||o.length<40||!i||i.length<40||!s||s.length<40||!c||c.length!==64||!l||l.length!==64||!p||!g||g.length!==64||!A||!f||f.length!==64||!Array.isArray(e.gateIds)||d.length!==e.gateIds.length||!h||h.length!==64||!E||E.length!==64||!I||I.length!==64||!T||T.length!==64||!k||C.length===0||e.verdict==="verified"&&(d.length===0||!C.includes("checkpoint-p205-transient-verified"))))return{schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:t,epicId:n,branch:r,baseSha:o,headSha:i,aggregateHeadSha:s,commitBodyDigest:c,changedPathsDigest:l,claimVerification:p,effectiveClaimRevision:g,command:A,manifestDigest:f,gateIds:d,resultDigest:h,graphRevision:E,executionEvidenceDigest:I,sourceEvidenceDigest:T,verifiedAt:k,verdict:e.verdict,reasonCodes:C,publicSafe:!0}}function Jr(e){if(!m(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),n=M(e.epicId),r=R(e.baseSha),o=R(e.headSha),i=R(e.bundleDigest),s=R(e.graphRevision),c=R(e.sourceEvidenceDigest),l=le(e.qaReceiptRef),p=q(e.reviewedAt),g=le(e.receiptRef);if(!(!t||!n||!r||!o||!i||i.length!==64||!s||s.length!==64||!c||c.length!==64||!l||!p||!g))return{schemaVersion:1,kind:"story_review_evidence",producer:"root-commit-range-review",storyId:t,epicId:n,baseSha:r,headSha:o,bundleDigest:i,graphRevision:s,sourceEvidenceDigest:c,qaReceiptRef:l,verdict:e.verdict,reviewedAt:p,receiptRef:g}}function Zt(e,t){return["storyId","epicId","baseSha","headSha","bundleDigest","graphRevision"].every(n=>e[n]===t[n])}function en(e){if(!m(e)||e.schemaVersion!==1||e.capturedFromCurrentCheckout!==!0)return;const t=H(e.originBranch),n=R(e.originHeadSha),r=H(e.executionBranch),o=q(e.capturedAt);if(!(!t||!n||n.length<40||!r||!o||t===r))return{schemaVersion:1,originBranch:t,originHeadSha:n,executionBranch:r,capturedFromCurrentCheckout:!0,capturedAt:o}}function tn(e){if(!m(e)||e.schemaVersion!==1||e.verdict!=="passed")return;const t=R(e.executionHeadSha),n=R(e.graphRevision),r=q(e.checkedAt),o=le(e.receiptRef),i=z(e.gateIds).map(M).filter(g=>!!g).slice(0,128),s=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=s?R(e.manifestDigest):void 0,p=s?R(e.resultDigest):void 0;if(!(!t||t.length<40||!n||n.length!==64||!r||!o||i.length===0||!Array.isArray(e.gateIds)||i.length!==e.gateIds.length||e.gateIds.length>128||!c&&!s||s&&(!l||l.length!==64||!p||p.length!==64)))return{schemaVersion:1,...s?{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:n,checkedAt:r,receiptRef:o,gateIds:i}}function $e(e){if(!m(e)||e.schemaVersion!==1)return;const t=Ve(e,["schemaVersion","kind","storyId","epicId","baseSha","headSha","originalBaseSha","originalHeadSha","gitPullRequest","preservesLaterCommits","historyRewrite","recordedAt"])??{},n=z(e.receiptRefs).map(le).filter(o=>!!o).slice(0,256),r=z(e.revertCommits).map(x).filter(o=>!!o).slice(0,256);return{...t,...n.length?{receiptRefs:n}:{},...r.length?{revertCommits:r}:{}}}function nn(e){if(!m(e)||e.schemaVersion!==1||e.publicSafe!==!0)return;const t=M(e.epicId),n=H(e.executionBranch),r=H(e.originBranch),o=R(e.baseSha),i=R(e.executionHeadSha),s=e.mergeSha===void 0?void 0:R(e.mergeSha),c=e.pushedSha===void 0?void 0:R(e.pushedSha),l=M(e.idempotencyKey),p=q(e.attemptStartedAt),g=e.completedAt===void 0?void 0:q(e.completedAt),A=z(e.localGateReceiptRefs).map(le).filter(E=>!!E).slice(0,256),f=z(e.reasonCodes).map(M).filter(E=>!!E).slice(0,64),d=zr(e.candidateQa),h=Yr(e.providerGuard);if(!(!t||!n||!r||!o||!i||!l||!p||A.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&&!h||h&&(e.strategy!=="single_pr"||e.physicalStatus!=="pushed"||h.prHeadSha!==s||h.originHeadSha!==o)))return{schemaVersion:1,epicId:t,executionBranch:n,originBranch:r,baseSha:o,executionHeadSha:i,...s?{mergeSha:s}:{},...c?{pushedSha:c}:{},strategy:e.strategy,...ue(e.prNumber)?{prNumber:ue(e.prNumber)}:{},physicalStatus:e.physicalStatus,localGateReceiptRefs:A,idempotencyKey:l,attemptStartedAt:p,...d?{candidateQa:d}:{},...h?{providerGuard:h}:{},...g?{completedAt:g}:{},retryEligible:e.retryEligible,reasonCodes:f,publicSafe:!0}}function Yr(e){if(!m(e)||e.schemaVersion!==1||e.provider!=="github"||e.publicSafe!==!0)return;const t=String(e.mode),n=String(e.source),r=t==="recovered_exact_tree"?n==="physical_recovery":t==="strict_up_to_date_expected_head"&&["branch_protection","ruleset","branch_protection_and_ruleset"].includes(n),o=R(e.prHeadSha),i=R(e.originHeadSha),s=q(e.checkedAt);if(!(!r||!o||!i||!s))return{schemaVersion:1,provider:"github",mode:t,source:n,prHeadSha:o,originHeadSha:i,checkedAt:s,publicSafe:!0}}function zr(e){if(!m(e)||e.schemaVersion!==1||e.kind!=="epic_merge_candidate_qa"||e.contract!=="P205-CI-02"||e.command!==yr)return;const n=Object.fromEntries(["originHeadSha","executionHeadSha","mergeSha","treeSha","graphRevision","manifestDigest","resultDigest"].map(s=>[s,R(e[s])])),r=q(e.checkedAt),o=le(e.receiptRef),i=z(e.gateIds).filter(s=>/^[a-z0-9-]+$/.test(s)).slice(0,128);if(!(Object.values(n).some(s=>!s)||!r||!o||i.length===0))return{schemaVersion:1,kind:e.kind,contract:e.contract,command:e.command,...n,checkedAt:r,receiptRef:o,gateIds:i}}function qr(e){if(!m(e))return;const t={...x(e.active_epic_id??e.activeEpicId)?{active_epic_id:x(e.active_epic_id??e.activeEpicId)}:{},...x(e.active_story_id??e.activeStoryId)?{active_story_id:x(e.active_story_id??e.activeStoryId)}:{},...x(e.active_step_id??e.activeStepId)?{active_step_id:x(e.active_step_id??e.activeStepId)}:{},...x(e.session_id??e.sessionId)?{session_id:x(e.session_id??e.sessionId)}:{},...x(e.started_at??e.startedAt)?{started_at:x(e.started_at??e.startedAt)}:{}};return Object.keys(t).length>0?t:void 0}function Kr(e){const t=Ve(e.completionEvidence??e.completion_evidence,["prNumber","pr_number","prState","pr_state","pullRequestState","merged","mergedAt","issueNumber","issue_number","issueState","issue_state","closedAt"]),n=Ve(e.issueCloseAudit??e.issue_close_audit,["schema_version","event","storyId","epicId","issueNumber","closedAt","publicSafe","rawLogStorage"]),r=Ve(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}:{},...x(e.physicalMergeStatus)?{physicalMergeStatus:x(e.physicalMergeStatus)}:{},...x(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)?{pr_state:x(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)}:{},...x(e.issue_state??e.issueState??e.workflow_issue_state)?{issue_state:x(e.issue_state??e.issueState??e.workflow_issue_state)}:{},...ue(e.issue_number??e.issueNumber)?{issue_number:ue(e.issue_number??e.issueNumber)}:{},...t?{completionEvidence:t}:{},...n?{issueCloseAudit:n}:{},...r?{scopedCiEvidence:r}:{}}}class pe extends Error{reasonCode;constructor(t){super(t),this.name="StateSnapshotIntegrityError",this.reasonCode=t}}const Xr=new Set(["yolo","yoloop","finalize-epic","audit"]);function rn(e){return typeof e=="string"&&Xr.has(e)}function on(e,t={}){const n=te(e,".neocortex","state.json");if(!ve(n))throw new pe("git-lifecycle-state-missing");let r;try{r=JSON.parse(_e(n,"utf8"))}catch{throw new pe("git-lifecycle-state-corrupt")}if(!m(r)||!m(r.epics)||!m(r.stories))throw new pe("git-lifecycle-state-shape-invalid");const o=Object.values(r.epics).some(i=>m(i)&&(i.branch_mode==="epic"||H(i.execution_branch)!==void 0));if(o)try{Xe(e,{required:!0})}catch(i){const s=i instanceof Error&&/^git-lifecycle-/.test(i.message)?i.message:"git-lifecycle-runtime-invalid";if(t.allowMissingRuntime&&s==="git-lifecycle-runtime-missing")return{lifecycleDeclared:!0,runtimeMissing:!0};throw new pe(s)}return{lifecycleDeclared:o,runtimeMissing:!1}}function sn(e,t={}){const n=te(e,".neocortex","state.json");if(!ve(n)){if(t.epicAware&&!t.projectless)throw new pe("git-lifecycle-state-missing");return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}let r;try{const f=_e(n,"utf-8"),d=JSON.parse(f),h=m(d.epics)?d.epics:{},E=Object.values(h).some(y=>m(y)&&(y.branch_mode==="epic"||H(y.execution_branch)!==void 0)),I=Xe(e,{required:!!(t.epicAware&&E&&!t.projectless)});r=jt(d,I);const T=m(r.stories)?r.stories:{},k=m(r.epics)?r.epics:{},C=m(d.stories)?d.stories:{};for(const[y,S]of Object.entries(T)){const _=m(S)?S:void 0;if(!_?.checkpoint)continue;const U=typeof _.epic_id=="string"?_.epic_id:y.split(".")[0],D=m(k[U])?k[U]:void 0,L=H(D?.execution_branch);if(!L)continue;const V=_r(e,_.checkpoint,y,U,L,t.p205Authorities?.[y]??null,Mt(y,_,m(_.checkpoint)?_.checkpoint:void 0));if(_.checkpoint_verification=V,V.verdict==="rejected"){const v=m(C[y])?C[y]:void 0;if(v?.checkpoint?_.checkpoint=structuredClone(v.checkpoint):delete _.checkpoint,I.stories[y]?.checkpoint!==void 0)for(const P of["status","last_step","steps_completed"])v&&Object.prototype.hasOwnProperty.call(v,P)?_[P]=structuredClone(v[P]):delete _[P]}}}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 pe(d)}return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}try{const f=$r(r);f.length>0&&Wr(f)}catch{}const o=r.config??r.project??{},i=r.stories??{},s={};for(const[f,d]of Object.entries(i))s[f]={id:d.id??f,title:d.title,epic_id:d.epic_id,status:d.status??"backlog",...qt(d.source)?{source:qt(d.source)}:{},steps_completed:d.steps_completed??[],last_step:d.last_step??null,branch_name:d.branch_name??null,pr_number:d.pr_number,...Be(d.branch_mode)?{branch_mode:Be(d.branch_mode)}:{},...Xt(d.checkpoint)?{checkpoint:Xt(d.checkpoint)}:{},...Qt(d.checkpoint_verification)?{checkpoint_verification:Qt(d.checkpoint_verification)}:{},...$e(d.review_request)?{review_request:$e(d.review_request)}:{},...$e(d.rollback_receipt)?{rollback_receipt:$e(d.rollback_receipt)}:{},...ue(d.workflow_issue)?{workflow_issue:ue(d.workflow_issue)}:{},...Kr(d),depends_on:zt(d.depends_on),files_to_modify:z(d.files_to_modify),...Gr(d),risk:typeof d.risk=="string"?d.risk:void 0,blast_radius:typeof d.blast_radius=="number"?d.blast_radius:void 0};const c=r.epics??{},l={};for(const[f,d]of Object.entries(c)){const h=Hr(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:zt(d.depends_on),...Be(d.branch_mode)?{branch_mode:Be(d.branch_mode)}:{},...H(d.execution_branch)?{execution_branch:H(d.execution_branch)}:{},...H(d.origin_branch)?{origin_branch:H(d.origin_branch)}:{},...Kt(d.branch_lease)?{branch_lease:Kt(d.branch_lease)}:{},...en(d.origin_binding)?{origin_binding:en(d.origin_binding)}:{},...tn(d.aggregate_qa_receipt)?{aggregate_qa_receipt:tn(d.aggregate_qa_receipt)}:{},...ue(d.pr_number)?{pr_number:ue(d.pr_number)}:{},...x(d.physicalMergeStatus)?{physicalMergeStatus:x(d.physicalMergeStatus)}:{},...R(d.graph_revision)?{graph_revision:R(d.graph_revision)}:{},...nn(d.terminal_git_receipt)?{terminal_git_receipt:nn(d.terminal_git_receipt)}:{},...h?{lifecycle_classification:h}:{}}}const p=qr(r.current_session??r.currentSession),g=r.epic_id_ledger,A=Array.isArray(g?.reserved_ids)?[...new Set(g.reserved_ids.filter(f=>typeof f=="string"&&/^P\d+$/.test(f)))].slice(0,2048):[];return{schema_version:typeof r.schema_version=="number"?r.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:s,epics:l,...A.length>0?{epic_id_ledger:{schema_version:1,reserved_ids:A}}:{},...p?{current_session:p}:{}}}async function Qr(e,t,n){if(!rn(n))return{};if(Vn(t,n))return{};try{const r=JSON.parse(_e(te(e,".neocortex","state.json"),"utf8")),o=Xe(e,{required:!0}),i=jt(r,o),s=m(i.stories)?i.stories:{},c=m(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(),g=Le("git",["rev-list","--first-parent","--reverse",l],{cwd:e,encoding:"utf8",maxBuffer:32*1024*1024}).trim().split(`
8
+ `).filter(Boolean),A=new Map(g.map((y,S)=>[y,S])),f=t.match(/(?:^|\s)@?docs\/stories\/([A-Za-z][A-Za-z0-9._-]*)\.story\.md(?:\s|$)/)?.[1],d=n==="yoloop"?t.match(/(?:^|[\s/@])epic-(P[1-9][0-9]*)\.md(?:\s|$)/i)?.[1]?.toUpperCase():void 0,h=new Set,E=Object.entries(s).flatMap(([y,S])=>{if(f&&y!==f)return[];const _=m(S)?S:void 0,U=m(_?.checkpoint)?_.checkpoint:void 0;if(!U)return[];const D=typeof _?.epic_id=="string"?_.epic_id:y.split(".")[0];if(d&&D!==d)return[];const L=R(U?.headSha);if(!L||L.length<40||A.get(L)===void 0)return h.add(D),[];const V=m(c[D])?c[D]:void 0;if(V?.branch_mode!=="epic"||H(V.execution_branch)!==p||H(U.branch)!==p)return h.add(D),[];const v=R(U.graphRevision);if(!v||v.length!==64)return h.add(D),[];const P=R(U.claimRevision),Z=[...Mt(y,_,U)].sort(),Te=Er(e,U,y,D,p,Z);if(!Te&&P){if(Z.length===0)return h.add(D),[];const ge=Le("git",["diff-tree","--no-commit-id","--name-only","-r","-z",L],{cwd:e,encoding:"utf8"}).split("\0").filter(Boolean);if(ge.length===0||ge.some(b=>!Z.some(ye=>ye===b||ye.endsWith("/")&&b.startsWith(ye))))return h.add(D),[];const ee=be("sha256").update(Z.join("\0")).digest("hex"),Je=be("sha256").update(JSON.stringify(Z)).digest("hex");if(P!==ee&&P!==Je)return h.add(D),[]}else if(!Te)return h.add(D),[];return v?.length===64?[{storyId:y,epicId:D,graphRevision:v,checkpointHead:L,position:A.get(L)}]:[]}),I=new Set(h);for(const[y,S]of Object.entries(c)){const _=m(S)?S:void 0,U=Array.isArray(_?.stories)?_.stories.filter(v=>typeof v=="string"):Object.keys(s).filter(v=>v.startsWith(`${y}.`)),D=E.filter(v=>v.epicId===y),L=U.filter(v=>D.some(P=>P.storyId===v)),V=[...D].sort((v,P)=>v.position-P.position).map(v=>v.storyId);(JSON.stringify(L)!==JSON.stringify(V)||new Set(V).size!==V.length)&&I.add(y)}const T={},k=[...new Set(E.filter(y=>!I.has(y.epicId)).map(y=>y.graphRevision))],C=k.length>0?await mr(e,{headSha:l,graphRevisions:k}):new Map;for(const y of E){if(I.has(y.epicId))continue;const S=C.get(y.graphRevision);if(!S)throw new Error("p205-transient-authority-missing");T[y.storyId]=S}return T}catch(r){const o=r instanceof Error&&/^(?:p205|git-lifecycle)-[a-z0-9-]+$/.test(r.message)?r.message:"p205-transient-execution-failed";return process.stderr.write(`[Neocortex] ${o}. Checkpoint projection remains fail-closed.
9
+ `),{}}}function Gi(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 an="neocortex:menu:cache";async function Zr(e){try{const t=await e.get(an);if(!t)return null;const n=JSON.parse(t);return n.version!==Ee||Date.now()-n.cachedAt>Vt?null:n}catch{return null}}async function eo(e,t,n){try{const r={instructions:t,metadata:n,cachedAt:Date.now(),version:Ee};await e.set(an,JSON.stringify(r),Vt),to()}catch{}}function to(){try{ve(Ut)&&On(Ut)}catch{}}function no(e){return e.execute({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},()=>St(),()=>St({strictReadOnly:!0}))}async function cn(e,t,n){const r=n.mode==="strict";try{let o;if(r&&t)o=new qe({cacheDir:Qe,passphrase:t,strictReadOnly:!0});else if(r)o=new Et;else if(t){const g=te(je,"cache");o=new qe({cacheDir:g,passphrase:t})}else process.stderr.write(`[neocortex] Warning: No license key in config. Run "neocortex activate" to re-authenticate.
10
+ `),o=new Et;const i=Lt(n,o,"auth-cache"),s=Lt(n,o,"tier-cache"),c=new kn({serverUrl:e,licenseKey:t??"",cacheProvider:i,strictReadOnly:r});let l;if(r){const g=await c.inspectToken();if(g.status!=="authenticated")return g;l=g.token}else l=await c.getToken();if(!l)return{status:"not-configured"};const p=new Ln({cacheProvider:s,licenseClient:c});return{status:"authenticated",token:l,client:c,tierClient:p}}catch{return r&&t?{status:"refresh-required",reason:"unavailable"}:{status:"not-configured"}}}let dn=!1;function ro(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 un=3,We=50;function oo(e){return new Promise(t=>setTimeout(t,e))}function io(e,t,n){return e.status>=500&&e.status<=599?!0:n&&e.status===409&&t.error_code==="SIGNATURE_REPLAYED"}async function at(e,t,n,r,o={}){const i=Math.max(1,Math.min(o.maxAttempts??un,un)),s=o.sleep??oo;let c=r,l=!1,p=!1,g=0;for(let A=1;A<=i;A+=1){const f=Math.max(Math.floor(Date.now()/1e3),g+1);g=f;const d=so(t,n,c,{nowSeconds:f}),h=new AbortController,E=setTimeout(()=>h.abort(),Bt);try{const I=await fetch(`${e}${t}`,{method:"POST",headers:d.headers,body:d.body,signal:h.signal}),T=await I.text().catch(()=>""),k=(()=>{try{return T?JSON.parse(T):{}}catch{return{}}})();if(I.status===401&&!l&&o.refreshToken&&(k.fallback_action==="refresh_token"||k.fallback_action==="re_authenticate")){l=!0;const C=await o.refreshToken();if(C&&A<i){c=C,o.onTokenChanged?.(C),await s(We*A);continue}}if(I.status===401&&k.error_code==="SIGNATURE_EXPIRED"&&!p&&A<i){p=!0,await s(We*A);continue}if(A<i&&io(I,k,o.allowReplayRetry===!0)){await s(We*A);continue}return{response:I,text:T,parsed:k,networkFailure:!1}}catch{if(A<i){await s(We*A);continue}return{text:"",parsed:{},networkFailure:!0}}finally{clearTimeout(E)}}return{text:"",parsed:{},networkFailure:!0}}function so(e,t,n,r={}){const o=Buffer.from(JSON.stringify(t),"utf8"),i=Kn({method:"POST",target:e,body:o,bearerToken:n,clientVersion:Ee,nowSeconds:r.nowSeconds,nonceBytes:r.nonceBytes});return{body:i.body,headers:{...i.headers,Authorization:`Bearer ${n}`}}}function ln(e){return be("sha256").update(e).digest("hex")}function ao(){const e=Number(process.env.NEOCORTEX_INVOKE_CHUNK_BYTES??"49152");return Number.isFinite(e)&&e>=1024&&e<=98304?Math.floor(e):49152}function co(e,t,n){return`args-${be("sha256").update("invoke-materialization:v1").update(e).update(String(t)).update(JSON.stringify(n)).digest("hex")}`}async function pn(e,t,n,r,o={}){const i=await at(e,t,n,r,{...o,allowReplayRetry:!0});if(i.networkFailure||!i.response)throw new Error("NETWORK_ERROR: materialization request failed after bounded retries");const{response:s,parsed:c}=i;if(!s.ok){const l=typeof c.error_code=="string"?c.error_code:`HTTP_${s.status}`,p=typeof c.message=="string"?c.message:"materialization upload failed";throw new Error(`${l}: ${p}`)}return c}async function uo(e,t,n,r){const o=Buffer.from(t,"utf8"),i=ao(),s=[];for(let h=0,E=0;h<o.byteLength;h+=i,E++){const I=o.subarray(h,Math.min(h+i,o.byteLength));s.push({index:E,sha256:ln(I),byteLength:I.byteLength})}const c=ln(o),l=co(c,o.byteLength,s),p=Number(process.env.NEOCORTEX_INVOKE_CHUNK_TTL_SECONDS??"900");let g=n;const A={refreshToken:r,onTokenChanged(h){g=h}};for(const h of s){const E=h.index*i,I=o.subarray(E,E+h.byteLength);await pn(e,"/api/v1/invoke/materialization/chunks",{manifestId:l,index:h.index,sha256:h.sha256,byteLength:h.byteLength,contentBase64:I.toString("base64"),ttlSeconds:p,idempotencyKey:`${l}:${h.index}:${h.sha256}`},g,A)}const d=(await pn(e,"/api/v1/invoke/materialization/manifests",{manifestId:l,sha256:c,byteLength:o.byteLength,chunkCount:s.length,chunks:s,ttlSeconds:p,retry:{attempt:1,budget:3,idempotencyKey:l}},g,A)).argsRef;if(!d?.manifestId)throw new Error("MATERIALIZATION_RESPONSE_INVALID: missing argsRef");return{argsRef:d,chunks:s}}function Ae(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function lo(...e){const t=new Set,n=[];for(const r of e)for(const o of r??[]){const i=x(o);if(!(!i||t.has(i))&&(t.add(i),n.push(i),n.length>=16))return n}return n}function po(e){const t=e.graphRetrieval;if(!m(t))return{accepted:!1,itemCount:0};const n=Array.isArray(t.items)?t.items.length:0;return{accepted:n>0||typeof t.retrievalId=="string"||t.accepted===!0,itemCount:n}}function ct(e,t=Ae(e),n=[],r={}){const o=e.stateSnapshot.scope,i=Object.keys(e.stateSnapshot.stories).length,s=Object.keys(e.stateSnapshot.epics).length,c=o?.kind??"full";return{schemaVersion:1,payloadBytes:t,limitBytes:r.limitBytes??Wt,warningThresholdBytes:r.warningThresholdBytes??Ze,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??s,omittedEpics:o?.omittedEpicCount??0,graphRetrieval:po(e.stateSnapshot),reasonCodes:lo(n,o?.reasonCodes),publicSafe:!0}}function fo(e){const t=m(e.budget)?e.budget:void 0,n=typeof t?.maxPayloadBytes=="number"&&Number.isFinite(t.maxPayloadBytes)?t.maxPayloadBytes:12*1024;return Math.max(1024,Math.min(n,12*1024))}function go(e){return m(e)?{stableId:x(e.stableId)??"unknown",...m(e.source)?{source:e.source}:{},reasonCode:"budget_exceeded"}:{stableId:"unknown",reasonCode:"budget_exceeded"}}function fn(e){const t=Array.isArray(e)?e.filter(n=>typeof n=="string"):[];return t.includes("budget_exceeded")?t:[...t,"budget_exceeded"]}function ho(e){const t=e.graphRetrieval;if(!m(t)||!Array.isArray(t.items))return e;const n=fo(t);let r=[...t.items],o=Array.isArray(t.skipped)?[...t.skipped]:[],i=t;for(;Buffer.byteLength(JSON.stringify(i),"utf8")>n&&r.length>0;){const s=r.pop();o=[...o,go(s)].slice(-32),i={...t,items:r,skipped:o,warnings:fn(t.warnings)}}return Buffer.byteLength(JSON.stringify(i),"utf8")>n&&(i={...t,query:typeof t.query=="string"?t.query.slice(0,240):t.query,items:[],skipped:[],warnings:fn(t.warnings)}),i===t?e:{...e,graphRetrieval:i}}function gn(e,t={}){const n=t.limitBytes??Wt,r=t.warningThresholdBytes??Math.floor(n*Ht),o=Ae(e);if(o<n)return{body:e,degraded:!1,telemetry:ct(e,o,["payload-within-limit"],{limitBytes:n,warningThresholdBytes:r})};let i={...e,stateSnapshot:Mn(e.stateSnapshot)},s=["payload-size-guardrail","state-degraded"],c=Ae(i);c>=n&&(i={...i,stateSnapshot:ho(i.stateSnapshot)},s=[...s,"graph-retrieval-budget-enforced"],c=Ae(i));const l=ct(i,c,s,{limitBytes:n,warningThresholdBytes:r});if(c>=n){const p=i.stateSnapshot.scope?.projectionMode;throw p==="yolo-story"||p==="yoloop-target"||p==="yoloop-session"||p==="yoloop-discovery"||p==="structural-required"?new it(l):new ot(l)}return{body:i,degraded:!0,telemetry:l}}function hn(e){const t=e.stateSnapshot.scope?.commandId??"resolved-command";return e.args!==void 0?t:`${t}:argsRef`}function mo(e){const t=Ae(e);if(t<Ze)return t;const n=ct(e,t,["payload-warning-threshold"]);return process.stderr.write(`[Neocortex] invoke payload near server limit: trigger=${hn(e)} scope=${n.scope.kind} mode=${n.scope.projectionMode??n.scope.kind} payloadBytes=${n.payloadBytes} limit=${n.limitBytes} includedStories=${n.includedStories} omittedStories=${n.omittedStories} includedEpics=${n.includedEpics} omittedEpics=${n.omittedEpics} graphRetrieval.accepted=${n.graphRetrieval.accepted} graphRetrieval.itemCount=${n.graphRetrieval.itemCount} reasonCodes=${n.reasonCodes.join(",")||"none"}
11
11
  `),t}function mn(e,t){process.stderr.write(`[Neocortex] invoke payload guardrail: trigger=${hn(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 Io(e){const t=Gn(e.args,{platformTarget:e.platformTarget,environment:e.environment??process.env});if(t.action==="skipped")return{shouldContinue:!0,attachToRequest:yo(t),metadata:In(t)};const n=e.bootstrapper??Fn;let r;try{r=await n({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:[Hn.UNEXPECTED_ERROR],publicSummary:"runner scheduler bootstrap stopped unexpectedly.",publicSafe:!0}}const o=In(t,r);if(r.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 yo(e){return!e.reasonCodes.includes(Wn.SKIPPED_NON_CONTINUITY_COMMAND)}function In(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:F([...e.reasonCodes,...t?.reasonCodes??[]]),publicSummary:t?.publicSummary??e.publicSummary,publicSafe:!0}}function F(e){return Array.from(new Set(e.map(t=>t.slice(0,120))))}function We(e,t,n){const r=Math.floor(e??t);return Number.isFinite(r)?Math.max(1,Math.min(n,r)):t}function Ge(e,t){const n=process.env[e];if(!n)return t;const r=Number(n);return Number.isFinite(r)?r:t}function N(e,t=zt){const n=typeof e=="string"&&e.trim().length>0?e.trim():"unknown",r=q(n,t),o=Mr.test(r)?de:r;return o.length<=t?o:`${o.slice(0,t)}\u2026[TRUNCATED:${o.length-t}]`}function dt(e,t=zt){if(!(typeof e!="string"||e.trim().length===0))return N(e,t)}function ut(e,t,n,r){const o=dt(e?.targetId??t,120),i=e?.selectorKind??(o?pt(o):void 0),s=(e?.relatedJobIds??[]).map(c=>dt(c,120)).filter(c=>!!c);return{schemaVersion:1,contractVersion:"continuity-v1",targetResolutionState:n,...i?{targetKind:i}:{},...o?{targetId:o}:{},...t?{targetJobId:N(t,120)}:{},...e?.jobId?{jobId:N(e.jobId,120)}:{},...e?.goalId?{goalId:N(e.goalId,120)}:{},...e?.loopId?{loopId:N(e.loopId,120)}:{},...s.length>0?{relatedJobIds:s}:{},relatedJobCount:s.length,reasonCodes:F(r.length>0?r:[O.OK]),publicSafe:!0}}function se(e,t,n,r,o=[]){const i=(e?.redactions?.length??0)>0,s=e?i?"unsafe":n&&r===0?"empty":"available":"unavailable",c=dt(t[t.length-1]?.eventId,120),p=o.length>0?o:s==="unavailable"?[O.WATCH_SNAPSHOT_UNAVAILABLE]:s==="empty"?[O.WATCH_NO_SUMMARIES_YET]:[O.OK];return{schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:s,...e?.generatedAt?{generatedAt:N(e.generatedAt,80)}:{},renderedSummaryCount:r,...c?{latestEventId:c}:{},reasonCodes:F(p),publicSafe:!0}}function te(e,t,n,r,o=[],i){const s=r[r.length-1],c=n??s?.cursor,p=!!(c&&c!==t&&r.length>0),l=i??(p?"advanced":t||c?"unchanged":"not_started"),m=o.length>0?o:l==="advanced"?[O.WATCH_CURSOR_ADVANCED]:l==="unavailable"?[O.WATCH_EVIDENCE_UNAVAILABLE]:[O.WATCH_CURSOR_UNCHANGED];return{schemaVersion:1,contractVersion:"continuity-v1",cursorState:l,...e?{initialCursor:N(e,200)}:{},...t?{currentCursor:N(t,200)}:{},...c?{nextCursor:N(c,200)}:{},cursorAdvanced:p,...s?.eventId?{eventId:N(s.eventId,120)}:{},reasonCodes:F(m),publicSafe:!0}}function ne(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:F([...e.reasonCodes??[],...t?.reasonCodes??[],...e.snapshotEvidence?.reasonCodes??[],...e.cursorEvidence?.reasonCodes??[]]),generatedAt:N(e.generatedAt??new Date().toISOString(),80),publicSafe:!0}}function _o(e){const t=e.targetKind&&e.targetId?`${e.targetKind}/${e.targetId}`:e.targetId??"[unresolved]",n=e.snapshotEvidence?.renderedSummaryCount??0,r=e.targetEvidence?.relatedJobCount??0,o=e.cursorEvidence?.cursorState??"unavailable",i=e.cursorEvidence?.currentCursor??"[none]",s=e.cursorEvidence?.nextCursor??"[none]",c=e.snapshotEvidence?.snapshotStatus??"not_requested",p=e.snapshotEvidence?.generatedAt??e.generatedAt;return[`[watch-status] ${e.targetResolutionState==="unresolved"||e.stopReason==="target_unresolved"?"unresolved-target":n===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=${n}`,`snapshot=${c}`,`generatedAt=${p}`,`cursor=${o}`,`current=${N(i,200)}`,`next=${N(s,200)}`,`advanced=${e.cursorEvidence?.cursorAdvanced??!1}`,`stop=${e.stopReason??"not_stopped"}`,`reasons=${e.reasonCodes.join(",")}`].join(" ")}function re(e,t,n){if(t==="json"){n.write(JSON.stringify(e)+`
12
+ `)}async function Io(e){const t=Hn(e.args,{platformTarget:e.platformTarget,environment:e.environment??process.env});if(t.action==="skipped")return{shouldContinue:!0,attachToRequest:yo(t),metadata:In(t)};const n=e.bootstrapper??Fn;let r;try{r=await n({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:[Gn.UNEXPECTED_ERROR],publicSummary:"runner scheduler bootstrap stopped unexpectedly.",publicSafe:!0}}const o=In(t,r);if(r.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 yo(e){return!e.reasonCodes.includes(Wn.SKIPPED_NON_CONTINUITY_COMMAND)}function In(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:F([...e.reasonCodes,...t?.reasonCodes??[]]),publicSummary:t?.publicSummary??e.publicSummary,publicSafe:!0}}function F(e){return Array.from(new Set(e.map(t=>t.slice(0,120))))}function He(e,t,n){const r=Math.floor(e??t);return Number.isFinite(r)?Math.max(1,Math.min(n,r)):t}function Ge(e,t){const n=process.env[e];if(!n)return t;const r=Number(n);return Number.isFinite(r)?r:t}function N(e,t=Yt){const n=typeof e=="string"&&e.trim().length>0?e.trim():"unknown",r=X(n,t),o=Mr.test(r)?de:r;return o.length<=t?o:`${o.slice(0,t)}\u2026[TRUNCATED:${o.length-t}]`}function dt(e,t=Yt){if(!(typeof e!="string"||e.trim().length===0))return N(e,t)}function ut(e,t,n,r){const o=dt(e?.targetId??t,120),i=e?.selectorKind??(o?pt(o):void 0),s=(e?.relatedJobIds??[]).map(c=>dt(c,120)).filter(c=>!!c);return{schemaVersion:1,contractVersion:"continuity-v1",targetResolutionState:n,...i?{targetKind:i}:{},...o?{targetId:o}:{},...t?{targetJobId:N(t,120)}:{},...e?.jobId?{jobId:N(e.jobId,120)}:{},...e?.goalId?{goalId:N(e.goalId,120)}:{},...e?.loopId?{loopId:N(e.loopId,120)}:{},...s.length>0?{relatedJobIds:s}:{},relatedJobCount:s.length,reasonCodes:F(r.length>0?r:[O.OK]),publicSafe:!0}}function se(e,t,n,r,o=[]){const i=(e?.redactions?.length??0)>0,s=e?i?"unsafe":n&&r===0?"empty":"available":"unavailable",c=dt(t[t.length-1]?.eventId,120),l=o.length>0?o:s==="unavailable"?[O.WATCH_SNAPSHOT_UNAVAILABLE]:s==="empty"?[O.WATCH_NO_SUMMARIES_YET]:[O.OK];return{schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:s,...e?.generatedAt?{generatedAt:N(e.generatedAt,80)}:{},renderedSummaryCount:r,...c?{latestEventId:c}:{},reasonCodes:F(l),publicSafe:!0}}function ne(e,t,n,r,o=[],i){const s=r[r.length-1],c=n??s?.cursor,l=!!(c&&c!==t&&r.length>0),p=i??(l?"advanced":t||c?"unchanged":"not_started"),g=o.length>0?o:p==="advanced"?[O.WATCH_CURSOR_ADVANCED]:p==="unavailable"?[O.WATCH_EVIDENCE_UNAVAILABLE]:[O.WATCH_CURSOR_UNCHANGED];return{schemaVersion:1,contractVersion:"continuity-v1",cursorState:p,...e?{initialCursor:N(e,200)}:{},...t?{currentCursor:N(t,200)}:{},...c?{nextCursor:N(c,200)}:{},cursorAdvanced:l,...s?.eventId?{eventId:N(s.eventId,120)}:{},reasonCodes:F(g),publicSafe:!0}}function re(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:F([...e.reasonCodes??[],...t?.reasonCodes??[],...e.snapshotEvidence?.reasonCodes??[],...e.cursorEvidence?.reasonCodes??[]]),generatedAt:N(e.generatedAt??new Date().toISOString(),80),publicSafe:!0}}function _o(e){const t=e.targetKind&&e.targetId?`${e.targetKind}/${e.targetId}`:e.targetId??"[unresolved]",n=e.snapshotEvidence?.renderedSummaryCount??0,r=e.targetEvidence?.relatedJobCount??0,o=e.cursorEvidence?.cursorState??"unavailable",i=e.cursorEvidence?.currentCursor??"[none]",s=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":n===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=${n}`,`snapshot=${c}`,`generatedAt=${l}`,`cursor=${o}`,`current=${N(i,200)}`,`next=${N(s,200)}`,`advanced=${e.cursorEvidence?.cursorAdvanced??!1}`,`stop=${e.stopReason??"not_stopped"}`,`reasons=${e.reasonCodes.join(",")}`].join(" ")}function oe(e,t,n){if(t==="json"){n.write(JSON.stringify(e)+`
13
13
  `);return}n.write(_o(e)+`
14
14
  `)}function Eo(e,t,n){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:n,statusRecord:e,publicSafe:!0}}}function ae(e,t,n,r){return{status:e,summariesEmitted:t,polls:n,reasonCodes:r.reasonCodes,watchStatus:r.watchStatus,stopReason:r.stopReason,targetEvidence:r.targetEvidence,snapshotEvidence:r.snapshotEvidence,cursorEvidence:r.cursorEvidence,statusRecord:r,metadata:Eo(r,t,n),publicSafe:!0}}function Co(e){const t=e.reasonCode?` reason=${N(e.reasonCode,80)}`:"",n=e.goalId?` goal=${N(e.goalId,100)}`:"",r=e.loopId?` loop=${N(e.loopId,100)}`:"";return`[watch] ${N(e.createdAt,80)} event=${N(e.eventId,120)} job=${N(e.jobId,100)}${n}${r} execution=${N(e.executionId,120)}${t} -- ${N(e.publicSummary)}`}function So(e){return{type:"processing_summary",source:"local_continuity_sqlite",eventId:N(e.eventId,120),jobId:N(e.jobId,100),...e.goalId?{goalId:N(e.goalId,100)}:{},...e.loopId?{loopId:N(e.loopId,100)}:{},executionId:N(e.executionId,120),...e.reasonCode?{reasonCode:N(e.reasonCode,80)}:{},createdAt:N(e.createdAt,80),publicSummary:N(e.publicSummary),publicSafe:!0}}function Ao(e,t,n){if(t==="json"){n.write(JSON.stringify(So(e))+`
15
15
  `);return}n.write(Co(e)+`
16
- `)}function lt(e){return Pr.has(e.status)}function Ro(e,t,n){if(t){const o=e.find(i=>i.jobId===t);return!!(o&&lt(o))}return n<=0?!1:e.filter(o=>!lt(o)).length===0}function wo(e,t,n,r){return n<r?!1:t?!e.some(o=>o.jobId===t&&!lt(o)):e.length===0}function To(e,t){return t?.aborted?Promise.resolve():new Promise(n=>{const r=setTimeout(o,e);function o(){clearTimeout(r),t?.removeEventListener("abort",o),n()}t?.addEventListener("abort",o,{once:!0})})}function bo(e){return e.includes(W.MALFORMED)?"malformed":e.includes(W.AMBIGUOUS)?"ambiguous":e.includes("watch-target-multiple")?"multiple":e.includes("watch-evidence-unsafe")?"unsafe":e.includes(W.MISSING)||e.includes(B.TARGET_UNRESOLVED)?"unresolved":"unavailable"}function yn(e,t){const n=t?Oe(t):void 0,r=F([...e,B.TARGET_UNRESOLVED,O.WATCH_TARGET_UNRESOLVED]),o=ut(n,n?.targetId,bo(r),r),i=se({generatedAt:new Date().toISOString()},[],!1,0,[O.WATCH_TARGET_UNRESOLVED]),s=te(void 0,void 0,void 0,[],[O.WATCH_TARGET_UNRESOLVED],"unavailable");return ne({watchStatus:"blocked",active:!1,targetEvidence:o,snapshotEvidence:i,cursorEvidence:s,stopReason:"target_unresolved",reasonCodes:r,generatedAt:i.generatedAt})}function vo(e,t,n,r){const o=yn(e,En(t));return re(o,n,r),ae("target-unresolved",0,0,o)}async function Oo(e){if(e.signal?.aborted){const y=ut(e.target??Oe(e.targetJobId),e.targetJobId,e.target??e.targetJobId?"resolved":"unresolved",[B.CANCELLED]),S=se(void 0,[],!1,0),_=te(e.initialCursor,e.initialCursor,e.initialCursor,[],[B.CANCELLED],"unavailable"),M=ne({watchStatus:"stopped",active:!1,targetEvidence:y,snapshotEvidence:S,cursorEvidence:_,stopReason:"cancelled",reasonCodes:[B.CANCELLED]});return ae("cancelled",0,0,M)}const t=e.target??Oe(e.targetJobId),n=e.targetJobId??t?.targetId,r=e.stdout??process.stdout;if(!t){const y=yn([W.MISSING,B.TARGET_UNRESOLVED]);return re(y,e.format,r),ae("target-unresolved",0,0,y)}const o=We(e.limit??Ge("NEOCORTEX_INVOKE_WATCH_LIMIT",vt),vt,50),i=Math.max(50,We(e.pollIntervalMs??Ge("NEOCORTEX_INVOKE_WATCH_POLL_INTERVAL_MS",kt),kt,6e4)),s=We(e.maxIdlePolls??Ge("NEOCORTEX_INVOKE_WATCH_MAX_IDLE_POLLS",Ot),Ot,120),c=We(e.maxPolls??Ge("NEOCORTEX_INVOKE_WATCH_MAX_POLLS",Nt),Nt,86400),p=e.sleep??To;let l=e.initialCursor,m=0,A=0,f=0;const d=ut(t,n,"resolved",[O.OK]),g={schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:"pending",renderedSummaryCount:0,reasonCodes:[O.WATCH_RENDER_PENDING],publicSafe:!0},E=te(e.initialCursor,l,l,[],e.initialCursor?[O.WATCH_CURSOR_UNCHANGED]:[O.WATCH_NO_SUMMARIES_YET],e.initialCursor?"unchanged":"not_started");re(ne({watchStatus:"active",active:!0,targetEvidence:d,snapshotEvidence:g,cursorEvidence:E,stopReason:"not_stopped",reasonCodes:[O.OK]}),e.format,r);let I;try{I=await Jn({projectRoot:e.projectRoot,strictReadOnly:e.strictReadOnly})}catch{const y=se(void 0,[],!1,m,[O.WATCH_SNAPSHOT_UNAVAILABLE]),S=te(e.initialCursor,l,l,[],[O.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),_=ne({watchStatus:"blocked",active:!1,targetEvidence:d,snapshotEvidence:y,cursorEvidence:S,stopReason:"unavailable_evidence",reasonCodes:[B.STORE_UNAVAILABLE]});return re(_,e.format,r),ae("store-unavailable",m,f,_)}try{for(;!e.signal?.aborted&&f<c;){f+=1;const y=l,S=I.collectProcessingOutputSummaryCursor({...l?{cursor:l}:{},...t?{target:t}:{},...n?{jobId:n}:{},limit:o}),_=I.collectSnapshot({jobLimit:50,processingSummaryLimit:1}),M=_.jobs;if(S.summaries.length>0){for(const U of S.summaries)Ao(U,e.format,r),m+=1;l=S.nextCursor??S.summaries[S.summaries.length-1]?.cursor??l,A=0}else l=S.nextCursor??l,A+=1;const D=se(_,S.summaries,!0,S.summaries.length),L=te(e.initialCursor,y,l,S.summaries,S.summaries.length>0?[O.WATCH_CURSOR_ADVANCED]:[O.WATCH_NO_SUMMARIES_YET]);if(re(ne({watchStatus:S.summaries.length>0?"polling":"waiting",active:!0,targetEvidence:d,snapshotEvidence:D,cursorEvidence:L,stopReason:"not_stopped",reasonCodes:S.summaries.length>0?[O.WATCH_CURSOR_ADVANCED]:[O.WATCH_NO_SUMMARIES_YET],generatedAt:_.generatedAt}),e.format,r),!S.hasMore&&Ro(M,n,m)){const U=se(_,S.summaries,!1,m,[B.COMPLETED]),v=te(e.initialCursor,y,l,S.summaries,[B.COMPLETED],"exhausted"),P=ne({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:U,cursorEvidence:v,stopReason:"not_stopped",reasonCodes:[B.COMPLETED],generatedAt:_.generatedAt});return re(P,e.format,r),ae("completed",m,f,P)}if(!S.hasMore&&wo(M,n,A,s)){const U=se(_,S.summaries,!1,m,[O.WATCH_STOP_IDLE_LIMIT_REACHED]),v=te(e.initialCursor,y,l,S.summaries,[O.WATCH_STOP_IDLE_LIMIT_REACHED],"exhausted"),P=ne({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:U,cursorEvidence:v,stopReason:"idle_limit_reached",reasonCodes:[B.IDLE_TIMEOUT,O.WATCH_STOP_IDLE_LIMIT_REACHED],generatedAt:_.generatedAt});return re(P,e.format,r),ae("idle-timeout",m,f,P)}S.hasMore||await p(i,e.signal)}}catch{const y=se(void 0,[],!1,m,[O.WATCH_SNAPSHOT_UNAVAILABLE]),S=te(e.initialCursor,l,l,[],[O.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),_=ne({watchStatus:"blocked",active:!1,targetEvidence:d,snapshotEvidence:y,cursorEvidence:S,stopReason:"unavailable_evidence",reasonCodes:[B.STORE_UNAVAILABLE]});return re(_,e.format,r),ae("store-unavailable",m,f,_)}finally{I.close()}if(e.signal?.aborted){const y=se(void 0,[],!1,m,[B.CANCELLED]),S=te(e.initialCursor,l,l,[],[B.CANCELLED],"unavailable"),_=ne({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:y,cursorEvidence:S,stopReason:"cancelled",reasonCodes:[B.CANCELLED]});return re(_,e.format,r),ae("cancelled",m,f,_)}const w=se(void 0,[],!1,m,[O.WATCH_STOP_MAX_POLLS_REACHED]),k=te(e.initialCursor,l,l,[],[O.WATCH_STOP_MAX_POLLS_REACHED],"exhausted"),C=ne({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:w,cursorEvidence:k,stopReason:"max_polls_reached",reasonCodes:[B.MAX_POLLS,O.WATCH_STOP_MAX_POLLS_REACHED]});return re(C,e.format,r),ae("max-polls",m,f,C)}function X(e){const t=e.trim().replace(/^@/,"").match(/^(job|goal|loop)-([JGL])(\d{3,})$/i);if(!t)return;const n=t[1].toLowerCase(),r=t[2].toUpperCase();if(!(n==="job"&&r!=="J"||n==="goal"&&r!=="G"||n==="loop"&&r!=="L"))return`${n}-${r}${t[3]}`}function pt(e){if(e.startsWith("job-J"))return"job";if(e.startsWith("goal-G"))return"goal";if(e.startsWith("loop-L"))return"loop"}function _n(e){const t=[],n=/(?:^|[\s"'([,{])@?(job-[Jj]\d{3,}|goal-[Gg]\d{3,}|loop-[Ll]\d{3,})(?=$|[\s"')\]},.;:!?])/g;let r;for(;(r=n.exec(e))!==null;){const o=X(r[1]);o&&t.push(o)}return F(t)}function En(e){return _n(e)[0]}function Oe(e){const t=e?X(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 ft(e){return F(e.filter(t=>typeof t=="string").map(t=>X(t)).filter(t=>!!t?.startsWith("job-J")))}function No(e,t){const n=ft(t).filter(r=>r!==e.targetId&&r!==e.jobId);return n.length>0?{...e,relatedJobIds:n}:e}function ko(e){if(!e)return;const t=h(e.target)?e.target:void 0,n=typeof e.selectorKind=="string"?e.selectorKind:typeof t?.selectorKind=="string"?t.selectorKind:void 0,r=typeof e.targetId=="string"?X(e.targetId):typeof t?.targetId=="string"?X(t.targetId):typeof e.targetJobId=="string"?X(e.targetJobId):void 0,o=Oe(r);if(!o||n&&n!==o.selectorKind)return;const i=Array.isArray(e.relatedJobIds)?e.relatedJobIds:Array.isArray(t?.relatedJobIds)?t.relatedJobIds:void 0,s=ft([...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:X(e.jobId??t?.jobId)??o.jobId}:{},...typeof(e.goalId??t?.goalId)=="string"?{goalId:X(e.goalId??t?.goalId)??o.goalId}:{},...typeof(e.loopId??t?.loopId)=="string"?{loopId:X(e.loopId??t?.loopId)??o.loopId}:{},...s.length>0?{relatedJobIds:s}:{}}}function Cn(e){const t=e.trim().split(/\s+/).filter(Boolean),n=t[0]?.replace(/^\*/,"").toLowerCase(),r=t[1]?.replace(/^--/,"").toLowerCase();return(n==="jobs"||n==="job"||n==="continuity-jobs"||n==="61")&&r==="watch"}const $=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"}),Lo=new Set(["create","start","resume"]),xo=new Set(["create","resume","run-once"]);function gt(e,t,n,r,o){return{schemaVersion:1,contractVersion:"continuity-v1",...n?{command:n}:{},...r?{operation:r}:{},active:e,...o?{watchToken:o}:{},reasonCodes:F(t),serverHeldStream:!1,allJobsPolling:!1,targetResolution:e?"required-after-dispatch":"inactive",publicSafe:!0}}function H(e,t=[],n,r){const o=t.length>0?t:[$.INACTIVE];return{args:e,watch:!1,reasonCodes:o,metadata:gt(!1,o,n,r),publicSafe:!0}}function Do(e){const t=e.trim().split(/\s+/).filter(Boolean),n=t.slice(2).filter(i=>i==="--watch").length;if(n===0)return H(e,[],"jobs","watch");if(n!==1)return H(e,[$.AMBIGUOUS],"jobs","watch");const r=t.filter((i,s)=>s<2||i!=="--watch").join(" ");return Cn(r)?r.trim().split(/\s+/).filter(Boolean).slice(2).length!==1?H(e,[$.AMBIGUOUS],"jobs","watch"):En(r)?{args:r,watch:!0,reasonCodes:[$.ACTIVE],metadata:gt(!0,[$.ACTIVE],"jobs","watch"),publicSafe:!0}:H(e,[$.TARGET_INVALID],"jobs","watch"):H(e,[$.UNSUPPORTED],"jobs","watch")}function Po(e){const t=[];let n=!1,r=0;for(;r<e.length;){for(;r<e.length&&/\s/.test(e[r]);)r+=1;if(r>=e.length)break;const o=r;let i="",s=!1,c=null;for(;r<e.length;){const p=e[r];if(c){if(p===c){s=!0,c=null,r+=1;continue}if(p==="\\"&&r+1<e.length){i+=e[r+1],r+=2;continue}i+=p,r+=1;continue}if(/\s/.test(p))break;if(p==='"'||p==="'"){s=!0,c=p,r+=1;continue}i+=p,r+=1}c&&(n=!0),t.push({value:i,start:o,end:r,quoted:s})}return{tokens:t,malformed:n}}function jo(e){if(!e||e.quoted)return;const t=e.value.replace(/^\*/,"").toLowerCase();return t==="goal"||t==="loop"?t:void 0}function Mo(e,t){if(!e||e==="jobs"||!t||t.quoted)return;const n=t.value.toLowerCase();return(e==="goal"?Lo:xo).has(n)?n:void 0}function Uo(e){return!e.quoted&&e.value!=="--watch"&&e.value.toLowerCase().startsWith("--watch")}function Vo(e){const{tokens:t,malformed:n}=Po(e),r=jo(t[0]),o=Mo(r,t[1]);if(n)return H(e,[$.MALFORMED],r,o);const i=t.filter(f=>f.value==="--watch"&&!f.quoted),s=t.filter(f=>f.value==="--watch"&&f.quoted),c=t.filter(Uo);if(!(i.length>0||s.length>0||c.length>0))return H(e,[],r,o);if(i.length>1)return H(e,[$.DUPLICATE],r,o);if(i.length===1&&(s.length>0||c.length>0))return H(e,[$.AMBIGUOUS],r,o);if(s.length>0)return H(e,[$.QUOTED],r,o);if(c.length>0)return H(e,[$.MALFORMED],r,o);const l=i[0];if(!l)return H(e,[],r,o);if(t[t.length-1]!==l)return H(e,[$.NON_FINAL],r,o);if(!r||!o)return H(e,[$.UNRESOLVED],r,o);const m=`${e.slice(0,l.start)}${e.slice(l.end)}`.trim(),A={literal:"--watch",position:"final",start:l.start,end:l.end,quoted:!1,publicSafe:!0};return{args:m,watch:!0,reasonCodes:[$.ACTIVE],metadata:gt(!0,[$.ACTIVE],r,o,A),publicSafe:!0}}function Bo(e){return Cn(e)?Do(e):Vo(e)}function $o(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&jr.has(t)):[]}function Re(e){return{disabled:!0,reasonCodes:F(e.length>0?e:[W.MISSING])}}function ht(e,t,n=[],r){const o=Oe(t);if(o)return{source:e,target:No(o,n),targetJobId:o.targetId,...r?{initialCursor:r}:{},serverHeldStream:!1}}function Wo(e){const t=new Map;for(const n of e){const r=`${n.target.selectorKind}:${n.target.targetId}`,o=t.get(r);if(!o){t.set(r,n);continue}const i=F([...o.target.relatedJobIds??[],...n.target.relatedJobIds??[]]);t.set(r,{...o,target:i.length>0?{...o.target,relatedJobIds:i}:o.target,initialCursor:o.initialCursor??n.initialCursor})}return Array.from(t.values())}function fe(e,t,n,r){return{source:e,hasEvidence:t,candidates:Wo(n.filter(o=>!!o)),...r&&r.length>0?{disabledReasonCodes:F(r)}:{}}}function Go(e,t){return e.target.selectorKind===t.target.selectorKind&&e.target.targetId===t.target.targetId}function Ne(e,t){const n=F(e.filter(r=>typeof r=="string").map(r=>X(r)).filter(r=>!!r));if(t){const r=n.find(o=>pt(o)===t);if(r)return r}return n[0]}function He(e,t){return F(e.filter(n=>typeof n=="string").map(n=>X(n)).filter(n=>!!n)).find(n=>pt(n)===t)}function Ho(e){const t=h(e?.continuity)?e.continuity:void 0,n=h(t?.jobs)?t.jobs:void 0,r=h(n?.watcher)?n.watcher:void 0,o=$o(r?.reasonCodes??n?.reasonCodes);if(!r)return fe("watcher-metadata",o.length>0,[],o);if(r.active===!1||o.length>0)return fe("watcher-metadata",!0,[],o.length>0?o:[W.MALFORMED]);if(r.serverHeldStream!==!1)return fe("watcher-metadata",!0,[],[W.SERVER_HELD_STREAM]);const i=ko(r);if(!i)return fe("watcher-metadata",!0,[],[W.MISSING]);const s=typeof r.initialCursor=="string"?r.initialCursor:void 0;return fe("watcher-metadata",!0,[{source:"watcher-metadata",target:i,targetJobId:i.targetId,...s?{initialCursor:s}:{},serverHeldStream:!1}])}function Sn(e,t){const n=h(e.loopJobPlan)?e.loopJobPlan:void 0,r=h(n?.metadata)?n.metadata:void 0,o=h(e.metadata)?e.metadata:void 0,s=(t==="goal"?Ne([e.goalId,e.targetGoalId,e.campaignId,e.jobId,e.targetJobId,o?.goalId,o?.campaignId,o?.jobId],"goal"):Ne([e.loopId,e.targetLoopId,e.jobId,e.targetJobId,o?.loopId,o?.jobId,r?.loopId,r?.jobId],"loop"))??Ne([e.jobId,e.targetJobId,o?.jobId,r?.jobId]);return ht("goal-loop-continuity-metadata",s,[e.jobId,e.targetJobId,o?.jobId,r?.jobId])}function Fo(e){const t=h(e?.continuity)?e.continuity:void 0,n=h(t?.goal)?t.goal:void 0,r=h(t?.loop)?t.loop:void 0,o=[n?Sn(n,"goal"):void 0,r?Sn(r,"loop"):void 0],i=!!(n||r);return fe("goal-loop-continuity-metadata",i,o,i&&o.every(s=>!s)?[W.MISSING]:void 0)}function Jo(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 An(e,t){const n=h(t.metadata)?t.metadata:void 0,r=He([t.goalId,t.targetGoalId,t.campaignId,n?.goalId,n?.campaignId,t.jobId,n?.jobId],"goal"),o=He([t.loopId,t.targetLoopId,n?.loopId,t.jobId,n?.jobId],"loop"),i=Ne([t.jobId,t.targetJobId,n?.jobId],"job"),s=r??o??i;if(!s)return;const c=e.get(s)??{targetId:s,relatedJobIds:[]};c.relatedJobIds.push(...ft([i,t.jobId,t.targetJobId,n?.jobId])),e.set(s,c)}function zo(e){const t=h(e.metadata)?e.metadata:void 0;return!!(He([e.goalId,e.targetGoalId,e.campaignId,t?.goalId,t?.campaignId,e.jobId,t?.jobId],"goal")??He([e.loopId,e.targetLoopId,t?.loopId,e.jobId,t?.jobId],"loop"))}function Yo(e){const t=h(e.metadata)?e.metadata:void 0;return!!Ne([e.goalId,e.targetGoalId,e.campaignId,e.loopId,e.targetLoopId,e.jobId,e.targetJobId,t?.goalId,t?.campaignId,t?.loopId,t?.jobId])}function Rn(e,t){const n=[];for(const s of["metadata","job","event","receipt","processingOutputSummary"]){const c=t[s];h(c)&&n.push(c)}const r=h(t.event)?t.event:void 0;h(r?.metadata)&&n.push(r.metadata),h(r?.processingOutputSummary)&&n.push(r.processingOutputSummary);const o=h(t.receipt)?t.receipt:void 0;h(o?.metadata)&&n.push(o.metadata);const i=n.some(Yo);for(const s of n)An(e,s);(!i||zo(t))&&An(e,t)}function Ko(e){const t=Jo(e?.continuityStateUpdate),n=new Map;for(const o of t){Rn(n,o);const i=Array.isArray(o.operations)?o.operations.filter(h):[];for(const s of i)Rn(n,s)}const r=Array.from(n.values()).map(o=>ht("continuity-state-update-operation-log",o.targetId,o.relatedJobIds));return fe("continuity-state-update-operation-log",t.length>0,r,t.length>0&&r.every(o=>!o)?[W.MISSING]:void 0)}function qo(e){const t=_n(e);return fe("explicit-args",t.length>0,t.map(n=>ht("explicit-args",n)))}function Xo(e,t){const n=[Ho(e),Fo(e),Ko(e),qo(t)];for(let r=0;r<n.length;r+=1){const o=n[r];if(!o.hasEvidence)continue;if(o.disabledReasonCodes&&o.disabledReasonCodes.length>0)return Re(o.disabledReasonCodes);if(o.candidates.length!==1)return Re([o.candidates.length>1?W.AMBIGUOUS:W.MISSING]);const i=o.candidates[0];for(const s of n.slice(r+1)){if(!s.hasEvidence)continue;if(s.disabledReasonCodes&&s.disabledReasonCodes.length>0)return Re(s.disabledReasonCodes);if(s.candidates.length>1)return Re([W.AMBIGUOUS]);const c=s.candidates[0];if(c&&!Go(i,c))return Re([W.CONFLICT])}return{target:i.target,targetJobId:i.targetJobId,...i.initialCursor?{initialCursor:i.initialCursor}:{},source:i.source,serverHeldStream:!1}}return Re([W.MISSING])}async function wn(e,t,n,r={}){const i=await at(e,"/api/v1/invoke",t,n,r);if(i.networkFailure||!i.response)return{ok:!1,status:0,error:"Network error after bounded retries"};const{response:s,text:c,parsed:p}=i;try{if(!s.ok)return{ok:!1,status:s.status,error:Object.keys(p).length>0?`${p.error_code??"ERROR"}: ${p.message??c}`:`HTTP ${s.status}: ${c}`,errorBody:Object.keys(p).length>0?p:void 0};const l=p,m=s.headers.get("X-Client-Version-Warning");return m&&!dn&&(dn=!0,process.stderr.write(`
17
- [Neocortex] ${m}
16
+ `)}function lt(e){return Pr.has(e.status)}function Ro(e,t,n){if(t){const o=e.find(i=>i.jobId===t);return!!(o&&lt(o))}return n<=0?!1:e.filter(o=>!lt(o)).length===0}function wo(e,t,n,r){return n<r?!1:t?!e.some(o=>o.jobId===t&&!lt(o)):e.length===0}function To(e,t){return t?.aborted?Promise.resolve():new Promise(n=>{const r=setTimeout(o,e);function o(){clearTimeout(r),t?.removeEventListener("abort",o),n()}t?.addEventListener("abort",o,{once:!0})})}function bo(e){return e.includes(W.MALFORMED)?"malformed":e.includes(W.AMBIGUOUS)?"ambiguous":e.includes("watch-target-multiple")?"multiple":e.includes("watch-evidence-unsafe")?"unsafe":e.includes(W.MISSING)||e.includes(B.TARGET_UNRESOLVED)?"unresolved":"unavailable"}function yn(e,t){const n=t?Oe(t):void 0,r=F([...e,B.TARGET_UNRESOLVED,O.WATCH_TARGET_UNRESOLVED]),o=ut(n,n?.targetId,bo(r),r),i=se({generatedAt:new Date().toISOString()},[],!1,0,[O.WATCH_TARGET_UNRESOLVED]),s=ne(void 0,void 0,void 0,[],[O.WATCH_TARGET_UNRESOLVED],"unavailable");return re({watchStatus:"blocked",active:!1,targetEvidence:o,snapshotEvidence:i,cursorEvidence:s,stopReason:"target_unresolved",reasonCodes:r,generatedAt:i.generatedAt})}function vo(e,t,n,r){const o=yn(e,En(t));return oe(o,n,r),ae("target-unresolved",0,0,o)}async function Oo(e){if(e.signal?.aborted){const y=ut(e.target??Oe(e.targetJobId),e.targetJobId,e.target??e.targetJobId?"resolved":"unresolved",[B.CANCELLED]),S=se(void 0,[],!1,0),_=ne(e.initialCursor,e.initialCursor,e.initialCursor,[],[B.CANCELLED],"unavailable"),U=re({watchStatus:"stopped",active:!1,targetEvidence:y,snapshotEvidence:S,cursorEvidence:_,stopReason:"cancelled",reasonCodes:[B.CANCELLED]});return ae("cancelled",0,0,U)}const t=e.target??Oe(e.targetJobId),n=e.targetJobId??t?.targetId,r=e.stdout??process.stdout;if(!t){const y=yn([W.MISSING,B.TARGET_UNRESOLVED]);return oe(y,e.format,r),ae("target-unresolved",0,0,y)}const o=He(e.limit??Ge("NEOCORTEX_INVOKE_WATCH_LIMIT",vt),vt,50),i=Math.max(50,He(e.pollIntervalMs??Ge("NEOCORTEX_INVOKE_WATCH_POLL_INTERVAL_MS",kt),kt,6e4)),s=He(e.maxIdlePolls??Ge("NEOCORTEX_INVOKE_WATCH_MAX_IDLE_POLLS",Ot),Ot,120),c=He(e.maxPolls??Ge("NEOCORTEX_INVOKE_WATCH_MAX_POLLS",Nt),Nt,86400),l=e.sleep??To;let p=e.initialCursor,g=0,A=0,f=0;const d=ut(t,n,"resolved",[O.OK]),h={schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:"pending",renderedSummaryCount:0,reasonCodes:[O.WATCH_RENDER_PENDING],publicSafe:!0},E=ne(e.initialCursor,p,p,[],e.initialCursor?[O.WATCH_CURSOR_UNCHANGED]:[O.WATCH_NO_SUMMARIES_YET],e.initialCursor?"unchanged":"not_started");oe(re({watchStatus:"active",active:!0,targetEvidence:d,snapshotEvidence:h,cursorEvidence:E,stopReason:"not_stopped",reasonCodes:[O.OK]}),e.format,r);let I;try{I=await Jn({projectRoot:e.projectRoot,strictReadOnly:e.strictReadOnly})}catch{const y=se(void 0,[],!1,g,[O.WATCH_SNAPSHOT_UNAVAILABLE]),S=ne(e.initialCursor,p,p,[],[O.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),_=re({watchStatus:"blocked",active:!1,targetEvidence:d,snapshotEvidence:y,cursorEvidence:S,stopReason:"unavailable_evidence",reasonCodes:[B.STORE_UNAVAILABLE]});return oe(_,e.format,r),ae("store-unavailable",g,f,_)}try{for(;!e.signal?.aborted&&f<c;){f+=1;const y=p,S=I.collectProcessingOutputSummaryCursor({...p?{cursor:p}:{},...t?{target:t}:{},...n?{jobId:n}:{},limit:o}),_=I.collectSnapshot({jobLimit:50,processingSummaryLimit:1}),U=_.jobs;if(S.summaries.length>0){for(const V of S.summaries)Ao(V,e.format,r),g+=1;p=S.nextCursor??S.summaries[S.summaries.length-1]?.cursor??p,A=0}else p=S.nextCursor??p,A+=1;const D=se(_,S.summaries,!0,S.summaries.length),L=ne(e.initialCursor,y,p,S.summaries,S.summaries.length>0?[O.WATCH_CURSOR_ADVANCED]:[O.WATCH_NO_SUMMARIES_YET]);if(oe(re({watchStatus:S.summaries.length>0?"polling":"waiting",active:!0,targetEvidence:d,snapshotEvidence:D,cursorEvidence:L,stopReason:"not_stopped",reasonCodes:S.summaries.length>0?[O.WATCH_CURSOR_ADVANCED]:[O.WATCH_NO_SUMMARIES_YET],generatedAt:_.generatedAt}),e.format,r),!S.hasMore&&Ro(U,n,g)){const V=se(_,S.summaries,!1,g,[B.COMPLETED]),v=ne(e.initialCursor,y,p,S.summaries,[B.COMPLETED],"exhausted"),P=re({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:V,cursorEvidence:v,stopReason:"not_stopped",reasonCodes:[B.COMPLETED],generatedAt:_.generatedAt});return oe(P,e.format,r),ae("completed",g,f,P)}if(!S.hasMore&&wo(U,n,A,s)){const V=se(_,S.summaries,!1,g,[O.WATCH_STOP_IDLE_LIMIT_REACHED]),v=ne(e.initialCursor,y,p,S.summaries,[O.WATCH_STOP_IDLE_LIMIT_REACHED],"exhausted"),P=re({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:V,cursorEvidence:v,stopReason:"idle_limit_reached",reasonCodes:[B.IDLE_TIMEOUT,O.WATCH_STOP_IDLE_LIMIT_REACHED],generatedAt:_.generatedAt});return oe(P,e.format,r),ae("idle-timeout",g,f,P)}S.hasMore||await l(i,e.signal)}}catch{const y=se(void 0,[],!1,g,[O.WATCH_SNAPSHOT_UNAVAILABLE]),S=ne(e.initialCursor,p,p,[],[O.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),_=re({watchStatus:"blocked",active:!1,targetEvidence:d,snapshotEvidence:y,cursorEvidence:S,stopReason:"unavailable_evidence",reasonCodes:[B.STORE_UNAVAILABLE]});return oe(_,e.format,r),ae("store-unavailable",g,f,_)}finally{I.close()}if(e.signal?.aborted){const y=se(void 0,[],!1,g,[B.CANCELLED]),S=ne(e.initialCursor,p,p,[],[B.CANCELLED],"unavailable"),_=re({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:y,cursorEvidence:S,stopReason:"cancelled",reasonCodes:[B.CANCELLED]});return oe(_,e.format,r),ae("cancelled",g,f,_)}const T=se(void 0,[],!1,g,[O.WATCH_STOP_MAX_POLLS_REACHED]),k=ne(e.initialCursor,p,p,[],[O.WATCH_STOP_MAX_POLLS_REACHED],"exhausted"),C=re({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:T,cursorEvidence:k,stopReason:"max_polls_reached",reasonCodes:[B.MAX_POLLS,O.WATCH_STOP_MAX_POLLS_REACHED]});return oe(C,e.format,r),ae("max-polls",g,f,C)}function Q(e){const t=e.trim().replace(/^@/,"").match(/^(job|goal|loop)-([JGL])(\d{3,})$/i);if(!t)return;const n=t[1].toLowerCase(),r=t[2].toUpperCase();if(!(n==="job"&&r!=="J"||n==="goal"&&r!=="G"||n==="loop"&&r!=="L"))return`${n}-${r}${t[3]}`}function pt(e){if(e.startsWith("job-J"))return"job";if(e.startsWith("goal-G"))return"goal";if(e.startsWith("loop-L"))return"loop"}function _n(e){const t=[],n=/(?:^|[\s"'([,{])@?(job-[Jj]\d{3,}|goal-[Gg]\d{3,}|loop-[Ll]\d{3,})(?=$|[\s"')\]},.;:!?])/g;let r;for(;(r=n.exec(e))!==null;){const o=Q(r[1]);o&&t.push(o)}return F(t)}function En(e){return _n(e)[0]}function Oe(e){const t=e?Q(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 ft(e){return F(e.filter(t=>typeof t=="string").map(t=>Q(t)).filter(t=>!!t?.startsWith("job-J")))}function No(e,t){const n=ft(t).filter(r=>r!==e.targetId&&r!==e.jobId);return n.length>0?{...e,relatedJobIds:n}:e}function ko(e){if(!e)return;const t=m(e.target)?e.target:void 0,n=typeof e.selectorKind=="string"?e.selectorKind:typeof t?.selectorKind=="string"?t.selectorKind:void 0,r=typeof e.targetId=="string"?Q(e.targetId):typeof t?.targetId=="string"?Q(t.targetId):typeof e.targetJobId=="string"?Q(e.targetJobId):void 0,o=Oe(r);if(!o||n&&n!==o.selectorKind)return;const i=Array.isArray(e.relatedJobIds)?e.relatedJobIds:Array.isArray(t?.relatedJobIds)?t.relatedJobIds:void 0,s=ft([...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:Q(e.jobId??t?.jobId)??o.jobId}:{},...typeof(e.goalId??t?.goalId)=="string"?{goalId:Q(e.goalId??t?.goalId)??o.goalId}:{},...typeof(e.loopId??t?.loopId)=="string"?{loopId:Q(e.loopId??t?.loopId)??o.loopId}:{},...s.length>0?{relatedJobIds:s}:{}}}function Cn(e){const t=e.trim().split(/\s+/).filter(Boolean),n=t[0]?.replace(/^\*/,"").toLowerCase(),r=t[1]?.replace(/^--/,"").toLowerCase();return(n==="jobs"||n==="job"||n==="continuity-jobs"||n==="61")&&r==="watch"}const $=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"}),Lo=new Set(["create","start","resume"]),xo=new Set(["create","resume","run-once"]);function gt(e,t,n,r,o){return{schemaVersion:1,contractVersion:"continuity-v1",...n?{command:n}:{},...r?{operation:r}:{},active:e,...o?{watchToken:o}:{},reasonCodes:F(t),serverHeldStream:!1,allJobsPolling:!1,targetResolution:e?"required-after-dispatch":"inactive",publicSafe:!0}}function G(e,t=[],n,r){const o=t.length>0?t:[$.INACTIVE];return{args:e,watch:!1,reasonCodes:o,metadata:gt(!1,o,n,r),publicSafe:!0}}function Do(e){const t=e.trim().split(/\s+/).filter(Boolean),n=t.slice(2).filter(i=>i==="--watch").length;if(n===0)return G(e,[],"jobs","watch");if(n!==1)return G(e,[$.AMBIGUOUS],"jobs","watch");const r=t.filter((i,s)=>s<2||i!=="--watch").join(" ");return Cn(r)?r.trim().split(/\s+/).filter(Boolean).slice(2).length!==1?G(e,[$.AMBIGUOUS],"jobs","watch"):En(r)?{args:r,watch:!0,reasonCodes:[$.ACTIVE],metadata:gt(!0,[$.ACTIVE],"jobs","watch"),publicSafe:!0}:G(e,[$.TARGET_INVALID],"jobs","watch"):G(e,[$.UNSUPPORTED],"jobs","watch")}function Po(e){const t=[];let n=!1,r=0;for(;r<e.length;){for(;r<e.length&&/\s/.test(e[r]);)r+=1;if(r>=e.length)break;const o=r;let i="",s=!1,c=null;for(;r<e.length;){const l=e[r];if(c){if(l===c){s=!0,c=null,r+=1;continue}if(l==="\\"&&r+1<e.length){i+=e[r+1],r+=2;continue}i+=l,r+=1;continue}if(/\s/.test(l))break;if(l==='"'||l==="'"){s=!0,c=l,r+=1;continue}i+=l,r+=1}c&&(n=!0),t.push({value:i,start:o,end:r,quoted:s})}return{tokens:t,malformed:n}}function jo(e){if(!e||e.quoted)return;const t=e.value.replace(/^\*/,"").toLowerCase();return t==="goal"||t==="loop"?t:void 0}function Mo(e,t){if(!e||e==="jobs"||!t||t.quoted)return;const n=t.value.toLowerCase();return(e==="goal"?Lo:xo).has(n)?n:void 0}function Uo(e){return!e.quoted&&e.value!=="--watch"&&e.value.toLowerCase().startsWith("--watch")}function Vo(e){const{tokens:t,malformed:n}=Po(e),r=jo(t[0]),o=Mo(r,t[1]);if(n)return G(e,[$.MALFORMED],r,o);const i=t.filter(f=>f.value==="--watch"&&!f.quoted),s=t.filter(f=>f.value==="--watch"&&f.quoted),c=t.filter(Uo);if(!(i.length>0||s.length>0||c.length>0))return G(e,[],r,o);if(i.length>1)return G(e,[$.DUPLICATE],r,o);if(i.length===1&&(s.length>0||c.length>0))return G(e,[$.AMBIGUOUS],r,o);if(s.length>0)return G(e,[$.QUOTED],r,o);if(c.length>0)return G(e,[$.MALFORMED],r,o);const p=i[0];if(!p)return G(e,[],r,o);if(t[t.length-1]!==p)return G(e,[$.NON_FINAL],r,o);if(!r||!o)return G(e,[$.UNRESOLVED],r,o);const g=`${e.slice(0,p.start)}${e.slice(p.end)}`.trim(),A={literal:"--watch",position:"final",start:p.start,end:p.end,quoted:!1,publicSafe:!0};return{args:g,watch:!0,reasonCodes:[$.ACTIVE],metadata:gt(!0,[$.ACTIVE],r,o,A),publicSafe:!0}}function Bo(e){return Cn(e)?Do(e):Vo(e)}function $o(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&jr.has(t)):[]}function Re(e){return{disabled:!0,reasonCodes:F(e.length>0?e:[W.MISSING])}}function ht(e,t,n=[],r){const o=Oe(t);if(o)return{source:e,target:No(o,n),targetJobId:o.targetId,...r?{initialCursor:r}:{},serverHeldStream:!1}}function Wo(e){const t=new Map;for(const n of e){const r=`${n.target.selectorKind}:${n.target.targetId}`,o=t.get(r);if(!o){t.set(r,n);continue}const i=F([...o.target.relatedJobIds??[],...n.target.relatedJobIds??[]]);t.set(r,{...o,target:i.length>0?{...o.target,relatedJobIds:i}:o.target,initialCursor:o.initialCursor??n.initialCursor})}return Array.from(t.values())}function fe(e,t,n,r){return{source:e,hasEvidence:t,candidates:Wo(n.filter(o=>!!o)),...r&&r.length>0?{disabledReasonCodes:F(r)}:{}}}function Ho(e,t){return e.target.selectorKind===t.target.selectorKind&&e.target.targetId===t.target.targetId}function Ne(e,t){const n=F(e.filter(r=>typeof r=="string").map(r=>Q(r)).filter(r=>!!r));if(t){const r=n.find(o=>pt(o)===t);if(r)return r}return n[0]}function Fe(e,t){return F(e.filter(n=>typeof n=="string").map(n=>Q(n)).filter(n=>!!n)).find(n=>pt(n)===t)}function Go(e){const t=m(e?.continuity)?e.continuity:void 0,n=m(t?.jobs)?t.jobs:void 0,r=m(n?.watcher)?n.watcher:void 0,o=$o(r?.reasonCodes??n?.reasonCodes);if(!r)return fe("watcher-metadata",o.length>0,[],o);if(r.active===!1||o.length>0)return fe("watcher-metadata",!0,[],o.length>0?o:[W.MALFORMED]);if(r.serverHeldStream!==!1)return fe("watcher-metadata",!0,[],[W.SERVER_HELD_STREAM]);const i=ko(r);if(!i)return fe("watcher-metadata",!0,[],[W.MISSING]);const s=typeof r.initialCursor=="string"?r.initialCursor:void 0;return fe("watcher-metadata",!0,[{source:"watcher-metadata",target:i,targetJobId:i.targetId,...s?{initialCursor:s}:{},serverHeldStream:!1}])}function Sn(e,t){const n=m(e.loopJobPlan)?e.loopJobPlan:void 0,r=m(n?.metadata)?n.metadata:void 0,o=m(e.metadata)?e.metadata:void 0,s=(t==="goal"?Ne([e.goalId,e.targetGoalId,e.campaignId,e.jobId,e.targetJobId,o?.goalId,o?.campaignId,o?.jobId],"goal"):Ne([e.loopId,e.targetLoopId,e.jobId,e.targetJobId,o?.loopId,o?.jobId,r?.loopId,r?.jobId],"loop"))??Ne([e.jobId,e.targetJobId,o?.jobId,r?.jobId]);return ht("goal-loop-continuity-metadata",s,[e.jobId,e.targetJobId,o?.jobId,r?.jobId])}function Fo(e){const t=m(e?.continuity)?e.continuity:void 0,n=m(t?.goal)?t.goal:void 0,r=m(t?.loop)?t.loop:void 0,o=[n?Sn(n,"goal"):void 0,r?Sn(r,"loop"):void 0],i=!!(n||r);return fe("goal-loop-continuity-metadata",i,o,i&&o.every(s=>!s)?[W.MISSING]:void 0)}function Jo(e){return Array.isArray(e)?e.filter(m):m(e)?Array.isArray(e.operationLogs)?e.operationLogs.filter(m):m(e.operationLog)?[e.operationLog]:Array.isArray(e.operations)?[e]:[]:[]}function An(e,t){const n=m(t.metadata)?t.metadata:void 0,r=Fe([t.goalId,t.targetGoalId,t.campaignId,n?.goalId,n?.campaignId,t.jobId,n?.jobId],"goal"),o=Fe([t.loopId,t.targetLoopId,n?.loopId,t.jobId,n?.jobId],"loop"),i=Ne([t.jobId,t.targetJobId,n?.jobId],"job"),s=r??o??i;if(!s)return;const c=e.get(s)??{targetId:s,relatedJobIds:[]};c.relatedJobIds.push(...ft([i,t.jobId,t.targetJobId,n?.jobId])),e.set(s,c)}function Yo(e){const t=m(e.metadata)?e.metadata:void 0;return!!(Fe([e.goalId,e.targetGoalId,e.campaignId,t?.goalId,t?.campaignId,e.jobId,t?.jobId],"goal")??Fe([e.loopId,e.targetLoopId,t?.loopId,e.jobId,t?.jobId],"loop"))}function zo(e){const t=m(e.metadata)?e.metadata:void 0;return!!Ne([e.goalId,e.targetGoalId,e.campaignId,e.loopId,e.targetLoopId,e.jobId,e.targetJobId,t?.goalId,t?.campaignId,t?.loopId,t?.jobId])}function Rn(e,t){const n=[];for(const s of["metadata","job","event","receipt","processingOutputSummary"]){const c=t[s];m(c)&&n.push(c)}const r=m(t.event)?t.event:void 0;m(r?.metadata)&&n.push(r.metadata),m(r?.processingOutputSummary)&&n.push(r.processingOutputSummary);const o=m(t.receipt)?t.receipt:void 0;m(o?.metadata)&&n.push(o.metadata);const i=n.some(zo);for(const s of n)An(e,s);(!i||Yo(t))&&An(e,t)}function qo(e){const t=Jo(e?.continuityStateUpdate),n=new Map;for(const o of t){Rn(n,o);const i=Array.isArray(o.operations)?o.operations.filter(m):[];for(const s of i)Rn(n,s)}const r=Array.from(n.values()).map(o=>ht("continuity-state-update-operation-log",o.targetId,o.relatedJobIds));return fe("continuity-state-update-operation-log",t.length>0,r,t.length>0&&r.every(o=>!o)?[W.MISSING]:void 0)}function Ko(e){const t=_n(e);return fe("explicit-args",t.length>0,t.map(n=>ht("explicit-args",n)))}function Xo(e,t){const n=[Go(e),Fo(e),qo(e),Ko(t)];for(let r=0;r<n.length;r+=1){const o=n[r];if(!o.hasEvidence)continue;if(o.disabledReasonCodes&&o.disabledReasonCodes.length>0)return Re(o.disabledReasonCodes);if(o.candidates.length!==1)return Re([o.candidates.length>1?W.AMBIGUOUS:W.MISSING]);const i=o.candidates[0];for(const s of n.slice(r+1)){if(!s.hasEvidence)continue;if(s.disabledReasonCodes&&s.disabledReasonCodes.length>0)return Re(s.disabledReasonCodes);if(s.candidates.length>1)return Re([W.AMBIGUOUS]);const c=s.candidates[0];if(c&&!Ho(i,c))return Re([W.CONFLICT])}return{target:i.target,targetJobId:i.targetJobId,...i.initialCursor?{initialCursor:i.initialCursor}:{},source:i.source,serverHeldStream:!1}}return Re([W.MISSING])}async function wn(e,t,n,r={}){const i=await at(e,"/api/v1/invoke",t,n,r);if(i.networkFailure||!i.response)return{ok:!1,status:0,error:"Network error after bounded retries"};const{response:s,text:c,parsed:l}=i;try{if(!s.ok)return{ok:!1,status:s.status,error:Object.keys(l).length>0?`${l.error_code??"ERROR"}: ${l.message??c}`:`HTTP ${s.status}: ${c}`,errorBody:Object.keys(l).length>0?l:void 0};const p=l,g=s.headers.get("X-Client-Version-Warning");return g&&!dn&&(dn=!0,process.stderr.write(`
17
+ [Neocortex] ${g}
18
18
 
19
- `)),{ok:!0,status:s.status,data:l}}catch(l){return{ok:!1,status:0,error:(l instanceof Error?l.message:String(l)).includes("abort")?`Request timeout after ${Bt/1e3}s`:"Network error: invalid response"}}}async function Qo(e,t,n,r={}){const o=await at(e,"/api/v1/invoke/epic-claims/acknowledge",{...n,registryVersion:me,registryChecksum:he},t,r);return!!o.response?.ok&&o.parsed.status==="ok"&&o.parsed.claimOutcome===n.status}async function Zo(e,t,n,r,o,i={}){if(!o)return 0;const s=je(e);let c=0;for(const[p,l]of Object.entries(s.operations))!l.claimId||!l.epicId||!t.epics?.[l.epicId]||!await Qo(n,r,{claimId:l.claimId,projectId:o,epicId:l.epicId,status:"materialized"},i)||(kr(e,p),c+=1);return c}function ei(e,t){const n=t.state.pendingContinuationAuthorities,r=t.state.continuationSession;if(t.state.continuationPolicy!=="p205-finite-resume-v2"||n?.length!==1||!r)return;const o=n[0],i=o.certificate,s=i?.expectedTransition;if(o.storyIds!=="[CIRCULAR]"||i?.rank!=="[CIRCULAR]"||s?.selectedStoryIds!=="[CIRCULAR]")return;const c=typeof r.epicId=="string"?r.epicId:"",p=e.epics[c],l=Array.isArray(s.storyLifecycle)?s.storyLifecycle:[],m=l.length===1&&typeof l[0]?.storyId=="string"?l[0].storyId:"",f=e.stories[m]?.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||!f||f.qaVerdict!=="passed"||f.reviewVerdict!=="approved"||!Array.isArray(f.receiptRefs))return;const g=(Array.isArray(p.stories)?p.stories.filter(E=>typeof E=="string"):[]).find(E=>{const I=e.stories[E];return!I||["done","completed","merged"].includes(String(I.status))?!1:(Array.isArray(I.depends_on)?I.depends_on.filter(k=>typeof k=="string"):[]).every(k=>["done","completed","merged"].includes(String(e.stories[k]?.status)))});if(g)return{epicId:c,expectedNextStoryId:g,branchMode:"epic",executionBranch:p.execution_branch,originBranch:p.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 ti(e){let t;try{if(t=e.inputEnvelope??xe(e.inputSource??"args",e.args),or(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 n=t.rawArgs,r=Pt(t);let o=n,i=r;const s=Dr(n);if(s.outcome!=="resolved"){const a=sr(s,"client"),u=s.outcome==="malformed_input"?s.reason==="input_limit"||s.reason==="token_limit"||s.reason==="token_size_limit"?"input-limit-exceeded":s.reason==="invalid_control"||s.reason==="invalid_surrogate"?"invalid-control-character":s.reason==="unterminated_quote"||s.reason==="trailing_escape"||s.reason==="unsupported_escape"?"unterminated-quote":void 0:void 0,b=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_${s.outcome.toUpperCase()}`,errorCode:`INVOCATION_${s.outcome.toUpperCase()}`,metadata:{invocationAdmission:a,...b?{invocationInput:b}:{}},exitCode:1}}const c=tt(e.projectRoot),p=s.selection.commandId,l=xn.find(a=>a.id===p),m=l?.subcommands.find(a=>a.id===s.selection.operationId),A=m?m.policy.strictReadOnly==="allow":l?.policy.strictReadOnly==="allow",f=p==="diagnose";let d;try{d=tr({invocationId:Ye(),intent:e.strictReadOnly||f?{schemaVersion:1,policy:Qn,registryVersion:me,registryChecksum:he}:void 0,registryVersion:me,registryChecksum:he,registryAllowsStrict:A,requestCanonicalBytes:JSON.stringify({command:p})})}catch(a){if(a instanceof Ce)return{success:!1,error:a.code,errorCode:a.code,exitCode:1};throw a}{d.beginProjection();for(const a of Dt)d.project(a);for(const a of Zn)d.project(a);d.seal()}const g=d.mode==="strict";if(p==="create-epic")try{const a=pr(c);if(a&&a!=="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:a,publicSafe:!0}},exitCode:1}}catch(a){const u=a instanceof qe?a.code:"PROJECT_IDENTITY_MIGRATION_STATE_CORRUPT";return{success:!1,error:u,errorCode:u,exitCode:1}}const E=Kn({cwd:c,env:e.environment??process.env,targetFlag:e.platformTarget}).targetId;p!=="migrate-project-id"&&d.execute({phase:"client-preflight",domain:"client-persistence",category:"first-run-marker",operation:"create"},()=>xr(),()=>{});const I=no(d),w=(e.serverUrl??I?.serverUrl??Dn).replace(/\/+$/,"");if(p==="migrate-project-id"){const a=await fr(w);if(!a.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:a},exitCode:1};const u=[];let b;try{b=lr(c)}catch(V){const ce=V instanceof qe?V.code:"PROJECT_IDENTITY_MIGRATION_PREPARE_FAILED";return{success:!1,error:ce,errorCode:ce,exitCode:1}}u.push(Se({phase:"prepare",outcome:b.changed&&b.document.phase==="prepared"?"prepared":"retry",floor:b.document.legacyEpicFloor,licenseId:"local-client",projectId:b.document.projectId}));const oe=sn(c);if(oe.config.project_id!==b.document.projectId)return{success:!1,error:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",errorCode:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",metadata:{invocationDiagnostics:u},exitCode:1};const Je=await cn(w,I?.licenseKey,d);if(!Je)return{success:!1,error:"Not authenticated. Visit https://neocortex.sh/portal/login to get your license key, then run: neocortex activate YOUR-LICENSE-KEY",errorCode:"NOT_CONFIGURED",metadata:{invocationDiagnostics:u},exitCode:2};let It;try{It=Tt(e.args.trim(),oe)}catch(V){const ce=V instanceof bt?V.code:"PROJECT_IDENTITY_MIGRATION_PROJECTION_FAILED";return{success:!1,error:ce,errorCode:ce,metadata:{invocationDiagnostics:u},exitCode:1}}let ze={args:n,projectRoot:c.replace(Le(),"~"),stateSnapshot:It,platformTarget:E,projectId:b.document.projectId,projectIdentityMigration:b.request,inputEvidence:r,idempotencyKey:b.document.operationId,registryVersion:me,registryChecksum:he};try{ze=gn(ze).body}catch(V){if(V instanceof ot||V instanceof it)return{success:!1,error:V.message,errorCode:V.code,metadata:{invokePayload:V.telemetry,invocationDiagnostics:u},exitCode:1};throw V}const ie=await xt("invoke-query",()=>wn(w,ze,Je.token,{refreshToken:()=>Je.client.forceRefresh()}));if(!ie.ok||!ie.data)return u.push(Se({phase:"seed",outcome:"rejected",floor:b.document.legacyEpicFloor,licenseId:"local-client",projectId:b.document.projectId})),{success:!1,error:q(ie.error??"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",Ie),errorCode:typeof ie.errorBody?.error_code=="string"?ie.errorBody.error_code:"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",metadata:{invocationDiagnostics:u},exitCode:ie.status===401?2:1};const K=ie.data.metadata?.projectIdentityMigration;try{ir(K),u.push(Se({phase:"seed",outcome:K.status,floor:K.acceptedLegacyFloor,licenseId:"local-client",projectId:K.projectId})),dr(c,K),u.push(Se({phase:"remote-acknowledged",outcome:K.status,floor:K.acceptedLegacyFloor,licenseId:"local-client",projectId:K.projectId})),ur(c,K),u.push(Se({phase:"finalize",outcome:"finalized",floor:K.acceptedLegacyFloor,licenseId:"local-client",projectId:K.projectId}))}catch(V){u.push(Se({phase:"reconcile",outcome:"rejected",floor:b.document.legacyEpicFloor,licenseId:"local-client",projectId:b.document.projectId}));const ce=V instanceof qe?V.code:V instanceof Error?V.message:"PROJECT_IDENTITY_MIGRATION_RECEIPT_INVALID";return{success:!1,error:ce,errorCode:ce,metadata:{invocationDiagnostics:u},exitCode:1}}return d.complete(),{success:!0,instructions:ie.data.instructions,metadata:{...ie.data.metadata,invocationDiagnostics:u},exitCode:0}}try{const{normalizeYoloopTargetArgs:a}=await import("../yoloop/target-normalization.js"),u=a(e.args,{projectRoot:c});if(!u.ok)return process.stderr.write(`${u.message} reason=${u.reasonCode}
19
+ `)),{ok:!0,status:s.status,data:p}}catch(p){return{ok:!1,status:0,error:(p instanceof Error?p.message:String(p)).includes("abort")?`Request timeout after ${Bt/1e3}s`:"Network error: invalid response"}}}async function Qo(e,t,n,r={}){const o=await at(e,"/api/v1/invoke/epic-claims/acknowledge",{...n,registryVersion:me,registryChecksum:he},t,r);return!!o.response?.ok&&o.parsed.status==="ok"&&o.parsed.claimOutcome===n.status}async function Zo(e,t,n,r,o,i={}){if(!o)return 0;const s=Me(e);let c=0;for(const[l,p]of Object.entries(s.operations))!p.claimId||!p.epicId||!t.epics?.[p.epicId]||!await Qo(n,r,{claimId:p.claimId,projectId:o,epicId:p.epicId,status:"materialized"},i)||(kr(e,l),c+=1);return c}function ei(e,t){const n=t.state.pendingContinuationAuthorities,r=t.state.continuationSession;if(t.state.continuationPolicy!=="p205-finite-resume-v2"||n?.length!==1||!r)return;const o=n[0],i=o.certificate,s=i?.expectedTransition;if(o.storyIds!=="[CIRCULAR]"||i?.rank!=="[CIRCULAR]"||s?.selectedStoryIds!=="[CIRCULAR]")return;const c=typeof r.epicId=="string"?r.epicId:"",l=e.epics[c],p=Array.isArray(s.storyLifecycle)?s.storyLifecycle:[],g=p.length===1&&typeof p[0]?.storyId=="string"?p[0].storyId:"",f=e.stories[g]?.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 h=(Array.isArray(l.stories)?l.stories.filter(E=>typeof E=="string"):[]).find(E=>{const I=e.stories[E];return!I||["done","completed","merged"].includes(String(I.status))?!1:(Array.isArray(I.depends_on)?I.depends_on.filter(k=>typeof k=="string"):[]).every(k=>["done","completed","merged"].includes(String(e.stories[k]?.status)))});if(h)return{epicId:c,expectedNextStoryId:h,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 ti(e){let t;try{if(t=e.inputEnvelope??De(e.inputSource??"args",e.args),or(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 n=t.rawArgs,r=Pt(t);let o=n,i=r;const s=Dr(n);if(s.outcome!=="resolved"){const a=sr(s,"client"),u=s.outcome==="malformed_input"?s.reason==="input_limit"||s.reason==="token_limit"||s.reason==="token_size_limit"?"input-limit-exceeded":s.reason==="invalid_control"||s.reason==="invalid_surrogate"?"invalid-control-character":s.reason==="unterminated_quote"||s.reason==="trailing_escape"||s.reason==="unsupported_escape"?"unterminated-quote":void 0:void 0,w=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_${s.outcome.toUpperCase()}`,errorCode:`INVOCATION_${s.outcome.toUpperCase()}`,metadata:{invocationAdmission:a,...w?{invocationInput:w}:{}},exitCode:1}}const c=tt(e.projectRoot),l=s.selection.commandId,p=xn.find(a=>a.id===l),g=p?.subcommands.find(a=>a.id===s.selection.operationId),A=g?g.policy.strictReadOnly==="allow":p?.policy.strictReadOnly==="allow",f=l==="diagnose";let d;try{d=tr({invocationId:ze(),intent:e.strictReadOnly||f?{schemaVersion:1,policy:Qn,registryVersion:me,registryChecksum:he}:void 0,registryVersion:me,registryChecksum:he,registryAllowsStrict:A,requestCanonicalBytes:JSON.stringify({command:l})})}catch(a){if(a instanceof Ce)return{success:!1,error:a.code,errorCode:a.code,exitCode:1};throw a}{d.beginProjection();for(const a of Dt)d.project(a);for(const a of Zn)d.project(a);d.seal()}const h=d.mode==="strict";if(l==="create-epic")try{const a=pr(c);if(a&&a!=="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:a,publicSafe:!0}},exitCode:1}}catch(a){const u=a instanceof Ke?a.code:"PROJECT_IDENTITY_MIGRATION_STATE_CORRUPT";return{success:!1,error:u,errorCode:u,exitCode:1}}const E=qn({cwd:c,env:e.environment??process.env,targetFlag:e.platformTarget}).targetId;l!=="migrate-project-id"&&d.execute({phase:"client-preflight",domain:"client-persistence",category:"first-run-marker",operation:"create"},()=>xr(),()=>{});const I=no(d),T=(e.serverUrl??I?.serverUrl??Dn).replace(/\/+$/,"");if(l==="migrate-project-id"){const a=await fr(T);if(!a.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:a},exitCode:1};const u=[];let w;try{w=lr(c)}catch(j){const ce=j instanceof Ke?j.code:"PROJECT_IDENTITY_MIGRATION_PREPARE_FAILED";return{success:!1,error:ce,errorCode:ce,exitCode:1}}u.push(Se({phase:"prepare",outcome:w.changed&&w.document.phase==="prepared"?"prepared":"retry",floor:w.document.legacyEpicFloor,licenseId:"local-client",projectId:w.document.projectId}));const Y=sn(c);if(Y.config.project_id!==w.document.projectId)return{success:!1,error:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",errorCode:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",metadata:{invocationDiagnostics:u},exitCode:1};const ke=await cn(T,I?.licenseKey,d);if(ke.status!=="authenticated"){const j=ke.status==="refresh-required";return{success:!1,error:j?"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:j?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",metadata:{invocationDiagnostics:u},exitCode:j?1:2}}let It;try{It=Tt(e.args.trim(),Y)}catch(j){const ce=j instanceof bt?j.code:"PROJECT_IDENTITY_MIGRATION_PROJECTION_FAILED";return{success:!1,error:ce,errorCode:ce,metadata:{invocationDiagnostics:u},exitCode:1}}let Ye={args:n,projectRoot:c.replace(xe(),"~"),stateSnapshot:It,platformTarget:E,projectId:w.document.projectId,projectIdentityMigration:w.request,inputEvidence:r,idempotencyKey:w.document.operationId,registryVersion:me,registryChecksum:he};try{Ye=gn(Ye).body}catch(j){if(j instanceof ot||j instanceof it)return{success:!1,error:j.message,errorCode:j.code,metadata:{invokePayload:j.telemetry,invocationDiagnostics:u},exitCode:1};throw j}const ie=await xt("invoke-query",()=>wn(T,Ye,ke.token,{refreshToken:()=>ke.client.forceRefresh()}));if(!ie.ok||!ie.data)return u.push(Se({phase:"seed",outcome:"rejected",floor:w.document.legacyEpicFloor,licenseId:"local-client",projectId:w.document.projectId})),{success:!1,error:X(ie.error??"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",Ie),errorCode:typeof ie.errorBody?.error_code=="string"?ie.errorBody.error_code:"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",metadata:{invocationDiagnostics:u},exitCode:ie.status===401?2:1};const K=ie.data.metadata?.projectIdentityMigration;try{ir(K),u.push(Se({phase:"seed",outcome:K.status,floor:K.acceptedLegacyFloor,licenseId:"local-client",projectId:K.projectId})),dr(c,K),u.push(Se({phase:"remote-acknowledged",outcome:K.status,floor:K.acceptedLegacyFloor,licenseId:"local-client",projectId:K.projectId})),ur(c,K),u.push(Se({phase:"finalize",outcome:"finalized",floor:K.acceptedLegacyFloor,licenseId:"local-client",projectId:K.projectId}))}catch(j){u.push(Se({phase:"reconcile",outcome:"rejected",floor:w.document.legacyEpicFloor,licenseId:"local-client",projectId:w.document.projectId}));const ce=j instanceof Ke?j.code:j instanceof Error?j.message:"PROJECT_IDENTITY_MIGRATION_RECEIPT_INVALID";return{success:!1,error:ce,errorCode:ce,metadata:{invocationDiagnostics:u},exitCode:1}}return d.complete(),{success:!0,instructions:ie.data.instructions,metadata:{...ie.data.metadata,invocationDiagnostics:u},exitCode:0}}try{const{normalizeYoloopTargetArgs:a}=await import("../yoloop/target-normalization.js"),u=a(e.args,{projectRoot:c});if(!u.ok)return process.stderr.write(`${u.message} reason=${u.reasonCode}
20
20
  `),{success:!1,error:u.message,exitCode:1};u.changed&&(e={...e,args:u.args},process.stderr.write(`[Neocortex] yoloop target normalized: ${u.reasonCodes.join(",")}
21
21
  `))}catch{const a="INVALID_YOLOOP_TARGET: yoloop target normalization was unavailable; no request was sent.";return process.stderr.write(`${a}
22
- `),{success:!1,error:a,exitCode:1}}const k=rn(p);if(k)try{on(c,{allowMissingRuntime:!0}).runtimeMissing&&(await d.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},async()=>hr(c),async()=>{}),on(c))}catch(a){const u=a instanceof pe?a.reasonCode:"git-lifecycle-state-corrupt";return process.stderr.write(`[Neocortex] ${u}. No request was sent; repair the canonical project state and retry.
23
- `),{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"},()=>Bn(c,{args:e.args,canonicalCommandId:p}),()=>{})}catch(a){if(a instanceof $n)return process.stderr.write(`${a.message}
22
+ `),{success:!1,error:a,exitCode:1}}const k=rn(l);if(k)try{on(c,{allowMissingRuntime:!0}).runtimeMissing&&(await d.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},async()=>hr(c),async()=>{}),on(c))}catch(a){const u=a instanceof pe?a.reasonCode:"git-lifecycle-state-corrupt";return process.stderr.write(`[Neocortex] ${u}. No request was sent; repair the canonical project state and retry.
23
+ `),{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"},()=>Bn(c,{args:e.args,canonicalCommandId:l}),()=>{})}catch(a){if(a instanceof $n)return process.stderr.write(`${a.message}
24
24
  `),{success:!1,error:a.message,exitCode:1};const u=a instanceof Error?a.message:String(a);return process.stderr.write(`[Neocortex] state.json repair stopped unexpectedly: ${u}. No request was sent; inspect .neocortex/state.json and rerun.
25
- `),{success:!1,error:u,exitCode:1}}let C;try{const a=await Qr(c,e.args,p);C=sn(c,{epicAware:k,p205Authorities:a})}catch(a){const u=a instanceof pe?a.reasonCode:"git-lifecycle-state-corrupt";return process.stderr.write(`[Neocortex] ${u}. No request was sent; repair the canonical project state/runtime sidecar and retry.
26
- `),{success:!1,error:u,errorCode:"GIT_LIFECYCLE_STATE_INVALID",exitCode:1}}try{const{maybeAutoResolveYoloopArgs:a}=await import("../yoloop/invoke-hooks.js"),u={args:e.args,projectRoot:c,logger:{info:b=>process.stderr.write(`${b}
27
- `),warn:b=>process.stderr.write(`${b}
28
- `)}};a(u),u.args!==e.args&&(e={...e,args:u.args},o=u.args,i=Pt(xe(t.source,o)))}catch(a){const u=a instanceof Error?a.message:String(a);process.stderr.write(`[Neocortex] Auto-resolve hook (P121.05) failed: ${u}. Proceeding with raw args.
29
- `)}try{const{readYoloopForRequest:a}=await import("../yoloop/invoke-hooks.js"),u=await a(e.args,c);if(u){const b=ei(C,u);C.yoloop=b?{...u,continuationRecoveryEvidence:b}:u}}catch{}try{const{readContinuityForRequest:a}=await import("../continuity/invoke-hooks.js"),u=await a(e.args,c,void 0,d,{includeExistingStore:!f});u&&(C.continuity=u)}catch(a){if(a instanceof Ce)return{success:!1,error:a.code,errorCode:a.code,exitCode:1};const u=a instanceof Error?a.message:String(a);process.stderr.write(`[Neocortex] continuity snapshot hook failed: ${u}. Proceeding without continuity state.
25
+ `),{success:!1,error:u,exitCode:1}}let C;try{const a=await Qr(c,e.args,l);C=sn(c,{epicAware:k,p205Authorities:a})}catch(a){const u=a instanceof pe?a.reasonCode:"git-lifecycle-state-corrupt";return process.stderr.write(`[Neocortex] ${u}. No request was sent; repair the canonical project state/runtime sidecar and retry.
26
+ `),{success:!1,error:u,errorCode:"GIT_LIFECYCLE_STATE_INVALID",exitCode:1}}try{const{maybeAutoResolveYoloopArgs:a}=await import("../yoloop/invoke-hooks.js"),u={args:e.args,projectRoot:c,logger:{info:w=>process.stderr.write(`${w}
27
+ `),warn:w=>process.stderr.write(`${w}
28
+ `)}};a(u),u.args!==e.args&&(e={...e,args:u.args},o=u.args,i=Pt(De(t.source,o)))}catch(a){const u=a instanceof Error?a.message:String(a);process.stderr.write(`[Neocortex] Auto-resolve hook (P121.05) failed: ${u}. Proceeding with raw args.
29
+ `)}try{const{readYoloopForRequest:a}=await import("../yoloop/invoke-hooks.js"),u=await a(e.args,c);if(u){const w=ei(C,u);C.yoloop=w?{...u,continuationRecoveryEvidence:w}:u}}catch{}try{const{readContinuityForRequest:a}=await import("../continuity/invoke-hooks.js"),u=await a(e.args,c,void 0,d,{includeExistingStore:!f});u&&(C.continuity=u)}catch(a){if(a instanceof Ce)return{success:!1,error:a.code,errorCode:a.code,exitCode:1};const u=a instanceof Error?a.message:String(a);process.stderr.write(`[Neocortex] continuity snapshot hook failed: ${u}. Proceeding without continuity state.
30
30
  `)}try{const{maybeRunDiscoveryHook:a}=await import("../yoloop/invoke-hooks.js");await a({args:e.args,projectRoot:c,stateSnapshot:C,featureFlag:process.env.YOLOOP_AUTO_DISCOVERY!=="off",logger:{warn:u=>{console.warn(u)},info:u=>{console.error(u)}}})}catch(a){const u=a instanceof Error?a.message:String(a);process.stderr.write(`[Neocortex] discovery hook failed: ${u}. Proceeding without enrichment.
31
- `)}try{const{readArchitecturePolicy:a}=await import("../policy/architecture-policy.js"),u=await a(c);u&&(C.architecture_policy=u)}catch(a){const u=a instanceof Error?a.message:String(a);console.warn(`[Neocortex] architecture-policy hook failed: ${u}. Proceeding without policy.`)}try{const a=/^(1|true|on|yes)$/i.test(process.env.NEOCORTEX_GRAPH_RETRIEVAL??""),{maybeRunGraphRetrievalHook:u}=await import("../yoloop/invoke-hooks.js"),b=await u({args:e.args,projectRoot:c,featureFlag:a,logger:{warn:oe=>process.stderr.write(`${oe}
32
- `)}});b.applied&&b.metadata&&(C.graphRetrieval=b.metadata)}catch(a){const u=a instanceof Error?a.message:String(a);process.stderr.write(`[Neocortex] graph retrieval hook failed: ${u}. Proceeding without enrichment.
33
- `)}try{if(Vr(e.args)){const{collectProjectEvidence:a}=await import("../evidence/collector.js"),u=a({projectRoot:c});(u.evidence.length>0||u.exclusions.length>0)&&(C.projectEvidence=u)}}catch(a){const u=a instanceof Error?a.message:String(a);process.stderr.write(`[Neocortex] project evidence collection failed: ${u}. Proceeding without local project evidence.
31
+ `)}try{const{readArchitecturePolicy:a}=await import("../policy/architecture-policy.js"),u=await a(c);u&&(C.architecture_policy=u)}catch(a){const u=a instanceof Error?a.message:String(a);console.warn(`[Neocortex] architecture-policy hook failed: ${u}. Proceeding without policy.`)}try{const a=/^(1|true|on|yes)$/i.test(process.env.NEOCORTEX_GRAPH_RETRIEVAL??""),{maybeRunGraphRetrievalHook:u}=await import("../yoloop/invoke-hooks.js"),w=await u({args:e.args,projectRoot:c,featureFlag:a,logger:{warn:Y=>process.stderr.write(`${Y}
32
+ `)}});w.applied&&w.metadata&&(C.graphRetrieval=w.metadata)}catch(a){const u=a instanceof Error?a.message:String(a);process.stderr.write(`[Neocortex] graph retrieval hook failed: ${u}. Proceeding without enrichment.
33
+ `)}try{if(Vr(e.args)){const{collectProjectEvidence:a}=await import("../evidence/collector.js"),u=s.selection.uiUxReview?.architectureDir,w=a({projectRoot:c,...u?{candidatePaths:[u],includeFallbackInventory:!0}:{}});(w.evidence.length>0||w.exclusions.length>0)&&(C.projectEvidence=w)}}catch(a){const u=a instanceof Error?a.message:String(a);process.stderr.write(`[Neocortex] project evidence collection failed: ${u}. Proceeding without local project evidence.
34
34
  `)}try{const a=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()=>{});a&&(C.implementCheckpoint=a)}catch(a){const u=a instanceof Error?a.message:String(a);process.stderr.write(`[Neocortex] checkpoint hook failed: ${u}. Proceeding without checkpoint.
35
- `)}const y=I?.licenseKey?new Ke({cacheDir:Qe,passphrase:I.licenseKey,strictReadOnly:g}):null,S=o.trim();if(!S&&y){const a=await d.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"auth-cache",operation:"update"},()=>Zr(y),async()=>null);if(a)return d.complete(),{success:!0,instructions:a.instructions,metadata:a.metadata,exitCode:0}}const _=await cn(w,I?.licenseKey,d);if(!_){const a=I&&!I.licenseKey?" This may be caused by a machine fingerprint change (e.g., hardware or hostname change).":"";try{const u=wt(),b=At("NOT_CONFIGURED",u);b&&process.stderr.write(Rt(b,u))}catch{}return{success:!1,error:`Not authenticated.${a} Visit https://neocortex.sh/portal/login to get your license key, then run: neocortex activate YOUR-LICENSE-KEY`,exitCode:2}}const M=C.config.project_id;try{await d.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>Zo(c,C,w,_.token,M,{refreshToken:()=>_.client.forceRefresh()}),async()=>0)}catch{}const D=ni(S);if(D&&!f)try{const a=await _.tierClient.preFlightCheck(D);if(!a.allowed)return process.stderr.write(`[neocortex] ${a.message}
35
+ `)}const y=I?.licenseKey?new qe({cacheDir:Qe,passphrase:I.licenseKey,strictReadOnly:h}):null,S=o.trim();if(!S&&y){const a=await d.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"auth-cache",operation:"update"},()=>Zr(y),async()=>null);if(a)return d.complete(),{success:!0,instructions:a.instructions,metadata:a.metadata,exitCode:0}}const _=await cn(T,I?.licenseKey,d);if(_.status!=="authenticated"){const a=_.status==="refresh-required",u=!a&&I&&!I.licenseKey?" This may be caused by a machine fingerprint change (e.g., hardware or hostname change).":"";try{const w=wt(),Y=At(a?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",w);Y&&process.stderr.write(Rt(Y,w))}catch{}return{success:!1,error:a?"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:a?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",exitCode:a?1:2}}const U=C.config.project_id;try{await d.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>Zo(c,C,T,_.token,U,{refreshToken:()=>_.client.forceRefresh()}),async()=>0)}catch{}const D=ni(S);if(D&&!f)try{const a=await _.tierClient.preFlightCheck(D);if(!a.allowed)return process.stderr.write(`[neocortex] ${a.message}
36
36
  `),{success:!1,error:a.message??"Trigger not available on your plan",exitCode:1}}catch{}const L=await Io({args:S,projectRoot:c,platformTarget:E,environment:e.environment??process.env,bootstrapper:e.runnerBootstrapper,effectAuthority:d});if(L.attachToRequest&&(C.runnerBootstrap=L.metadata),L.warning&&process.stderr.write(`[Neocortex] ${L.warning}
37
37
  `),!L.shouldContinue)return L.error&&process.stderr.write(`[Neocortex] ${L.error}
38
- `),{success:!1,error:L.error??"Runner auto-bootstrap required but failed.",errorCode:L.errorCode,exitCode:L.exitCode??1};let U;try{const a=Un(S,C);if(a&&!a.ok){const u=`${a.code}: structural projection failed closed; select a valid target or repair the dependency DAG.`;return process.stderr.write(`${u}
39
- `),{success:!1,error:u,errorCode:a.code,metadata:{stateProjection:a,publicSafe:!0},exitCode:1}}U=a?.snapshot??Tt(S,C)}catch(a){if(a instanceof bt){const u=`${a.code}: structural projection failed closed; select a valid target or repair the dependency DAG.`;return process.stderr.write(`${u}
40
- `),{success:!1,error:u,errorCode:a.code,metadata:{structuralProjection:{...a.publicDetails,publicSafe:!0}},exitCode:1}}throw a}const v=Ct(S),P=M;if(v==="create-epic"&&!P){const a='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(`${a}
41
- `),{success:!1,error:a,errorCode:"EPIC_PROJECT_ID_REQUIRED",exitCode:1}}let Q;try{Q=d.execute({phase:"client-preflight",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>v==="create-epic"?Nr(c,S):void 0,()=>{})}catch{return{success:!1,error:"EPIC_CLAIM_INTEGRITY_FAILURE",errorCode:"EPIC_CLAIM_INTEGRITY_FAILURE",exitCode:1}}const Te=Q?.key,ge=g?{schemaVersion:1,invocationId:d.invocationId,intent:d.intent,clientProjection:er(Dt.map(a=>({...a,count:1})))}:void 0;let Z={args:o,projectRoot:c.replace(Le(),"~"),stateSnapshot:U,platformTarget:E,projectId:P,inputEvidence:i,idempotencyKey:Te,registryVersion:me,registryChecksum:he,...ge?{strictReadOnly:ge}:{}};const Fe=Ae(Z);if(!g&&e.inputSource&&e.inputSource!=="args"&&Fe>=Ze)try{Z={argsRef:(await Xn(d,"secondary-mutation",()=>uo(w,o,_.token,()=>_.client.forceRefresh()),async()=>{throw new Ce("readonly-physical-boundary-unsafe","boundary")})).argsRef,projectRoot:c.replace(Le(),"~"),stateSnapshot:U,platformTarget:E,projectId:P,inputEvidence:i,idempotencyKey:Te,registryVersion:me,registryChecksum:he,...ge?{strictReadOnly:ge}:{}}}catch(a){return a instanceof Ce?{success:!1,error:a.code,errorCode:a.code,exitCode:1}:{success:!1,error:`INVOKE_MATERIALIZATION_FAILED: ${a instanceof Error?a.message:String(a)}`,errorCode:"INVOKE_MATERIALIZATION_FAILED",exitCode:1}}try{const a=gn(Z);Z=a.body,a.degraded?mn(Z,a.telemetry):mo(Z)}catch(a){if(a instanceof ot||a instanceof it)return mn(Z,a.telemetry),process.stderr.write(`[Neocortex] ${a.message}
42
- `),{success:!1,error:a.message,errorCode:a.code,metadata:{invokePayload:a.telemetry},exitCode:1};throw a}let T=await xt("invoke-query",()=>wn(w,Z,_.token,{refreshToken:()=>_.client.forceRefresh()})),ye;if(g&&T.ok)try{if(f){const u=T.data?.metadata;if(u&&["stateUpdate","stateMutated","yoloopStateUpdate","continuityStateUpdate","checkpoint","schedulerStateUpdate","quotaCacheUpdate","projectIdentityMigration","epicClaim","gitLifecycleGraphAuthority"].some(oe=>u[oe]!==void 0))throw new Ce("readonly-response-conflict")}const a=T.data?.metadata.strictReadOnly;nr(d,a),f&&ar(T.data?.metadata.strictDiagnose,n,T.data?.instructions??""),ye=a.security}catch(a){const u=a instanceof Ce?a.code:"readonly-receipt-mismatch";return{success:!1,error:u,errorCode:u,exitCode:1}}if(!T.ok&&T.status===426){const a=T.errorBody,u=a?.upgrade_command??"npm install -g @ornexus/neocortex@latest",b=a?.min_version??"unknown";return process.stderr.write(`
38
+ `),{success:!1,error:L.error??"Runner auto-bootstrap required but failed.",errorCode:L.errorCode,exitCode:L.exitCode??1};let V;try{const a=Un(S,C);if(a&&!a.ok){const u=`${a.code}: structural projection failed closed; select a valid target or repair the dependency DAG.`;return process.stderr.write(`${u}
39
+ `),{success:!1,error:u,errorCode:a.code,metadata:{stateProjection:a,publicSafe:!0},exitCode:1}}V=a?.snapshot??Tt(S,C)}catch(a){if(a instanceof bt){const u=`${a.code}: structural projection failed closed; select a valid target or repair the dependency DAG.`;return process.stderr.write(`${u}
40
+ `),{success:!1,error:u,errorCode:a.code,metadata:{structuralProjection:{...a.publicDetails,publicSafe:!0}},exitCode:1}}throw a}const v=Ct(S),P=U;if(v==="create-epic"&&!P){const a='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(`${a}
41
+ `),{success:!1,error:a,errorCode:"EPIC_PROJECT_ID_REQUIRED",exitCode:1}}let Z;try{Z=d.execute({phase:"client-preflight",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>v==="create-epic"?Nr(c,S):void 0,()=>{})}catch{return{success:!1,error:"EPIC_CLAIM_INTEGRITY_FAILURE",errorCode:"EPIC_CLAIM_INTEGRITY_FAILURE",exitCode:1}}const Te=Z?.key,ge=h?{schemaVersion:1,invocationId:d.invocationId,intent:d.intent,clientProjection:er(Dt.map(a=>({...a,count:1})))}:void 0;let ee={args:o,projectRoot:c.replace(xe(),"~"),stateSnapshot:V,platformTarget:E,projectId:P,inputEvidence:i,idempotencyKey:Te,registryVersion:me,registryChecksum:he,...ge?{strictReadOnly:ge}:{}};const Je=Ae(ee);if(!h&&e.inputSource&&e.inputSource!=="args"&&Je>=Ze)try{ee={argsRef:(await Xn(d,"secondary-mutation",()=>uo(T,o,_.token,()=>_.client.forceRefresh()),async()=>{throw new Ce("readonly-physical-boundary-unsafe","boundary")})).argsRef,projectRoot:c.replace(xe(),"~"),stateSnapshot:V,platformTarget:E,projectId:P,inputEvidence:i,idempotencyKey:Te,registryVersion:me,registryChecksum:he,...ge?{strictReadOnly:ge}:{}}}catch(a){return a instanceof Ce?{success:!1,error:a.code,errorCode:a.code,exitCode:1}:{success:!1,error:`INVOKE_MATERIALIZATION_FAILED: ${a instanceof Error?a.message:String(a)}`,errorCode:"INVOKE_MATERIALIZATION_FAILED",exitCode:1}}try{const a=gn(ee);ee=a.body,a.degraded?mn(ee,a.telemetry):mo(ee)}catch(a){if(a instanceof ot||a instanceof it)return mn(ee,a.telemetry),process.stderr.write(`[Neocortex] ${a.message}
42
+ `),{success:!1,error:a.message,errorCode:a.code,metadata:{invokePayload:a.telemetry},exitCode:1};throw a}let b=await xt("invoke-query",()=>wn(T,ee,_.token,{refreshToken:()=>_.client.forceRefresh()})),ye;if(h&&b.ok)try{if(f){const u=b.data?.metadata;if(u&&["stateUpdate","stateMutated","yoloopStateUpdate","continuityStateUpdate","checkpoint","schedulerStateUpdate","quotaCacheUpdate","projectIdentityMigration","epicClaim","gitLifecycleGraphAuthority"].some(Y=>u[Y]!==void 0))throw new Ce("readonly-response-conflict")}const a=b.data?.metadata.strictReadOnly;nr(d,a),f&&ar(b.data?.metadata.strictDiagnose,n,b.data?.instructions??""),ye=a.security}catch(a){const u=a instanceof Ce?a.code:"readonly-receipt-mismatch";return{success:!1,error:u,errorCode:u,exitCode:1}}if(!b.ok&&b.status===426){const a=b.errorBody,u=a?.upgrade_command??"npm install -g @ornexus/neocortex@latest",w=a?.min_version??"unknown";return process.stderr.write(`
43
43
  `),process.stderr.write(`==================================================
44
44
  `),process.stderr.write(` UPGRADE REQUIRED
45
45
  `),process.stderr.write(`==================================================
46
46
  `),process.stderr.write(`
47
47
  Your Neocortex version (${Ee}) is no longer supported.
48
- `),process.stderr.write(` Minimum required: ${b}
48
+ `),process.stderr.write(` Minimum required: ${w}
49
49
 
50
50
  `),process.stderr.write(` Run this command to update:
51
51
 
@@ -54,10 +54,10 @@ ${t}
54
54
  `),process.stderr.write(` After updating, re-run your command.
55
55
  `),process.stderr.write(`==================================================
56
56
 
57
- `),{success:!1,error:`UPGRADE_REQUIRED: Client version ${Ee} is below minimum ${b}. Run: ${u}`,exitCode:3}}if(!T.ok||!T.data){const a=T.status===401?2:(T.status===429||T.status>=500,1),u=ro(T);try{if(u){const b=wt(),oe=At(u,b);oe&&process.stderr.write(Rt(oe,b))}}catch{}return{success:!1,error:q(T.error??"Unknown error from server",Ie),...u?{errorCode:u}:{},exitCode:a}}if(!S&&T.data.metadata?.mode==="menu"&&y&&await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"auth-cache",operation:"update"},()=>eo(y,T.data.instructions,T.data.metadata),async()=>{}).catch(()=>{}),T.data.metadata&&await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"tier-cache",operation:"update"},()=>_.tierClient.updateQuotaFromResponse(T.data.metadata),async()=>{}).catch(()=>{}),T.data.metadata?.stateMutated===!0)try{const a=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(T.data.metadata,c)},async()=>({applied:!1,blocking:!1,reasonCode:"state-writeback-effect-skipped"}));if(a.blocking){const u=`STATE_WRITEBACK_BLOCKED: ${a.reasonCode}. Canonical state was not replaced.`;return process.stderr.write(`${u}
58
- `),{success:!1,error:u,errorCode:"STATE_WRITEBACK_BLOCKED",exitCode:1}}}catch(a){if(T.data.metadata?.stateMutationReason==="inline-yolo-materialized-synthetic-story"){const u=a instanceof Error?a.message:String(a),b=`STATE_WRITEBACK_BLOCKED: inline-yolo persistence failed (${q(u,Ie)}).`;return process.stderr.write(`${b}
59
- `),{success:!1,error:b,errorCode:"STATE_WRITEBACK_BLOCKED",exitCode:1}}}if(T.data.metadata?.gitLifecycleGraphAuthority)try{await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},()=>Ir(c,T.data.metadata.gitLifecycleGraphAuthority),async()=>{throw new Error("git-lifecycle-graph-authority-effect-skipped")})}catch(a){const u=a instanceof Error&&/^git-lifecycle-/.test(a.message)?a.message:"git-lifecycle-graph-authority-persist-failed";return process.stderr.write(`[Neocortex] ${u}. Graph authority was not persisted; no YOLO checkpoint instruction was released.
60
- `),{success:!1,error:u,errorCode:"GIT_LIFECYCLE_GRAPH_AUTHORITY_INVALID",exitCode:1}}if(T.data.metadata?.mode==="error"&&T.data.metadata?.errorCode==="CLIENT_UPGRADE_REQUIRED")return process.stderr.write(`
57
+ `),{success:!1,error:`UPGRADE_REQUIRED: Client version ${Ee} is below minimum ${w}. Run: ${u}`,exitCode:3}}if(!b.ok||!b.data){const a=b.status===401?2:(b.status===429||b.status>=500,1),u=ro(b);try{if(u){const w=wt(),Y=At(u,w);Y&&process.stderr.write(Rt(Y,w))}}catch{}return{success:!1,error:X(b.error??"Unknown error from server",Ie),...u?{errorCode:u}:{},exitCode:a}}if(!S&&b.data.metadata?.mode==="menu"&&y&&await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"auth-cache",operation:"update"},()=>eo(y,b.data.instructions,b.data.metadata),async()=>{}).catch(()=>{}),b.data.metadata&&await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"tier-cache",operation:"update"},()=>_.tierClient.updateQuotaFromResponse(b.data.metadata),async()=>{}).catch(()=>{}),b.data.metadata?.stateMutated===!0)try{const a=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(b.data.metadata,c)},async()=>({applied:!1,blocking:!1,reasonCode:"state-writeback-effect-skipped"}));if(a.blocking){const u=`STATE_WRITEBACK_BLOCKED: ${a.reasonCode}. Canonical state was not replaced.`;return process.stderr.write(`${u}
58
+ `),{success:!1,error:u,errorCode:"STATE_WRITEBACK_BLOCKED",exitCode:1}}}catch(a){if(b.data.metadata?.stateMutationReason==="inline-yolo-materialized-synthetic-story"){const u=a instanceof Error?a.message:String(a),w=`STATE_WRITEBACK_BLOCKED: inline-yolo persistence failed (${X(u,Ie)}).`;return process.stderr.write(`${w}
59
+ `),{success:!1,error:w,errorCode:"STATE_WRITEBACK_BLOCKED",exitCode:1}}}if(b.data.metadata?.gitLifecycleGraphAuthority)try{await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},()=>Ir(c,b.data.metadata.gitLifecycleGraphAuthority),async()=>{throw new Error("git-lifecycle-graph-authority-effect-skipped")})}catch(a){const u=a instanceof Error&&/^git-lifecycle-/.test(a.message)?a.message:"git-lifecycle-graph-authority-persist-failed";return process.stderr.write(`[Neocortex] ${u}. Graph authority was not persisted; no YOLO checkpoint instruction was released.
60
+ `),{success:!1,error:u,errorCode:"GIT_LIFECYCLE_GRAPH_AUTHORITY_INVALID",exitCode:1}}if(b.data.metadata?.mode==="error"&&b.data.metadata?.errorCode==="CLIENT_UPGRADE_REQUIRED")return process.stderr.write(`
61
61
  `),process.stderr.write(`==================================================
62
62
  `),process.stderr.write(` YOLOOP CLIENT UPGRADE REQUIRED
63
63
  `),process.stderr.write(`==================================================
@@ -72,12 +72,12 @@ ${t}
72
72
  `),process.stderr.write(` After upgrading, re-run your yoloop command.
73
73
  `),process.stderr.write(`==================================================
74
74
 
75
- `),{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(T.data.metadata?.yoloopStateUpdate)try{await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},async()=>{const{persistYoloopFromResponse:a}=await import("../yoloop/invoke-hooks.js");await a(T.data.metadata,c)},async()=>{})}catch{}if(T.data.metadata?.continuityStateUpdate)try{const a=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(T.data.metadata,c)},async()=>({ok:!0,reasonCodes:[]}));if(!a.ok){const u=a.reasonCodes.join(",");return process.stderr.write(`[Neocortex] continuity persistence failed: ${u}. No continuity mutation was committed.
75
+ `),{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(b.data.metadata?.yoloopStateUpdate)try{await d.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},async()=>{const{persistYoloopFromResponse:a}=await import("../yoloop/invoke-hooks.js");await a(b.data.metadata,c)},async()=>{})}catch{}if(b.data.metadata?.continuityStateUpdate)try{const a=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(b.data.metadata,c)},async()=>({ok:!0,reasonCodes:[]}));if(!a.ok){const u=a.reasonCodes.join(",");return process.stderr.write(`[Neocortex] continuity persistence failed: ${u}. No continuity mutation was committed.
76
76
  `),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${u}`,errorCode:"CONTINUITY_PERSISTENCE_FAILED",exitCode:1}}}catch(a){const u=a instanceof Error?a.message:String(a);return process.stderr.write(`[Neocortex] continuity persistence hook failed: ${u}. No continuity mutation was committed.
77
- `),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${q(u,Ie)}`,errorCode:"CONTINUITY_PERSISTENCE_FAILED",exitCode:1}}if(T.data.metadata?.tier_changed){const a=T.data.metadata.current_tier;try{await _.client.forceRefresh()?(await _.tierClient.invalidateTierCache(),process.stderr.write(`[Neocortex] Token atualizado automaticamente para tier ${a}
77
+ `),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${X(u,Ie)}`,errorCode:"CONTINUITY_PERSISTENCE_FAILED",exitCode:1}}if(b.data.metadata?.tier_changed){const a=b.data.metadata.current_tier;try{await _.client.forceRefresh()?(await _.tierClient.invalidateTierCache(),process.stderr.write(`[Neocortex] Token atualizado automaticamente para tier ${a}
78
78
  `)):process.stderr.write(`[Neocortex] Seu tier foi atualizado para ${a}! Execute "neocortex activate" para obter um token atualizado.
79
79
  `)}catch{process.stderr.write(`[Neocortex] Seu tier foi atualizado para ${a}! Execute "neocortex activate" para obter um token atualizado.
80
- `)}}const mt=rt(T.data.instructions,T.data.metadata);if(Q&&T.data.metadata?.mode!=="error")try{const a=T.data.metadata?.epicClaim;if(!a||typeof a!="object"||Array.isArray(a))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const u=a;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"},()=>Lr(c,Q.fingerprint,u.claimId,u.epicId),()=>{})}catch{}return d.complete(ye),{success:!0,instructions:mt.instructions,metadata:mt.metadata,exitCode:0}}function ni(e){const[t]=e.trim().split(/\s+/,1);return t?/^@?epic-[a-z0-9][a-z0-9._-]*$/i.test(t)?"epic":Ct(t):null}const Tn="Provide exactly one invoke input source: --args <string>, --stdin, or --args-file <path>.",ri=`
80
+ `)}}const mt=rt(b.data.instructions,b.data.metadata);if(Z&&b.data.metadata?.mode!=="error")try{const a=b.data.metadata?.epicClaim;if(!a||typeof a!="object"||Array.isArray(a))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const u=a;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"},()=>Lr(c,Z.fingerprint,u.claimId,u.epicId),()=>{})}catch{}return d.complete(ye),{success:!0,instructions:mt.instructions,metadata:mt.metadata,exitCode:0}}function ni(e){const[t]=e.trim().split(/\s+/,1);return t?/^@?epic-[a-z0-9][a-z0-9._-]*$/i.test(t)?"epic":Ct(t):null}const Tn="Provide exactly one invoke input source: --args <string>, --stdin, or --args-file <path>.",ri=`
81
81
  neocortex-client invoke - Send orchestration request to server
82
82
 
83
83
  Usage:
@@ -146,12 +146,12 @@ Safety:
146
146
  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.
147
147
  Jobs, goal and loop watch use serverHeldStream=false and foreground local SQLite polling of public processing summaries only.
148
148
  Unresolved targets disable polling with public reason codes; there is no all-jobs fallback.
149
- `.trim();function oi(e){return e.includes("--help")||e.includes("-h")||e.includes("help")}function J(e,t,n,r){return new Me("INVOCATION_MALFORMED_INPUT",t,e,n,r)}function we(e){return J("missing-input-value",`${e} requires a value. ${Tn}`)}function ii(e){try{if(!Nn(e).isFile())throw J("missing-input-value","--args-file must point to a readable UTF-8 text file.","args-file");return _e(e)}catch(t){throw t instanceof Me?t:J("missing-input-value","--args-file could not be read as UTF-8 text. Check the path and permissions.","args-file")}}function si(){try{if(process.stdin.isTTY)throw J("missing-input-value","--stdin requires piped UTF-8 text, for example: neocortex-client invoke --stdin < synthetic.story.md","stdin");return _e(0)}catch(e){throw e instanceof Me?e:J("missing-input-value","--stdin could not be read as UTF-8 text. Pipe command text into stdin and retry.","stdin")}}function ai(e,t={}){let n,r=!1,o,i,s="plain",c=!1,p,l,m=!1;for(let w=0;w<e.length;w++)switch(e[w]){case"--args":{const C=e[++w];if(C===void 0)throw we("--args");if(n!==void 0)throw J("multiple-input-sources","Provide --args only once. Use one explicit invoke input source.","args");n=C;break}case"--stdin":if(r)throw J("multiple-input-sources","Provide --stdin only once. Use one explicit invoke input source.","stdin");r=!0;break;case"--args-file":{const C=e[++w];if(C===void 0)throw we("--args-file");if(o!==void 0)throw J("multiple-input-sources","Provide --args-file only once. Use one explicit invoke input source.","args-file");o=C;break}case"--project-root":{const C=e[++w];if(C===void 0)throw we("--project-root");i=C;break}case"--format":{const C=e[++w];if(C===void 0)throw we("--format");if(C!=="json"&&C!=="plain")throw J("unexpected-cli-token","--format accepts only json or plain.");s=C;break}case"--watch":c=!0;break;case"--server-url":{const C=e[++w];if(C===void 0)throw we("--server-url");p=C;break}case"--platform-target":{const C=e[++w];if(C===void 0)throw we("--platform-target");l=C;break}case"--strict-read-only":m=!0;break;default:throw J("unexpected-cli-token","Unexpected top-level CLI token. Quote the complete --args payload or use --stdin/--args-file for multiline content.")}const A=[n!==void 0?"args":void 0,r?"stdin":void 0,o!==void 0?"args-file":void 0].filter(w=>w!==void 0);if(A.length===0)throw J("missing-input-value",Tn);if(A.length>1)throw J("multiple-input-sources",`Choose only one invoke input source; received ${A.join(", ")}.`);const f=A[0],d=f==="args"?n:f==="stdin"?(t.readStdin??si)():(t.readArgsFile??ii)(o);let g;try{g=xe(f,d)}catch(w){throw w instanceof cr?J("invalid-utf8",w.message,f):w}const E=f==="args"?Bo(g.rawArgs):H(g.rawArgs),I=E.args===g.rawArgs?g:xe(f,E.args);return{args:E.args,inputSource:f,inputEnvelope:I,projectRoot:i,format:s,watch:c||E.watch,commandLevelWatch:E.metadata,serverUrl:p,platformTarget:l,strictReadOnly:m}}function bn(e,t){return t?.active?{...e??{},commandLevelWatch:t,serverHeldStream:!1}:e}function ci(e,t,n=process.stdout,r=process.stderr){if(t.format==="json"){const s=rt(e.instructions,e.metadata),c=bn(s.metadata,t.commandLevelWatch);if(t.watch){n.write(JSON.stringify({type:"invoke_result",instructions:s.instructions,metadata:c,publicSafe:!0})+`
149
+ `.trim();function oi(e){return e.includes("--help")||e.includes("-h")||e.includes("help")}function J(e,t,n,r){return new Ue("INVOCATION_MALFORMED_INPUT",t,e,n,r)}function we(e){return J("missing-input-value",`${e} requires a value. ${Tn}`)}function ii(e){try{if(!Nn(e).isFile())throw J("missing-input-value","--args-file must point to a readable UTF-8 text file.","args-file");return _e(e)}catch(t){throw t instanceof Ue?t:J("missing-input-value","--args-file could not be read as UTF-8 text. Check the path and permissions.","args-file")}}function si(){try{if(process.stdin.isTTY)throw J("missing-input-value","--stdin requires piped UTF-8 text, for example: neocortex-client invoke --stdin < synthetic.story.md","stdin");return _e(0)}catch(e){throw e instanceof Ue?e:J("missing-input-value","--stdin could not be read as UTF-8 text. Pipe command text into stdin and retry.","stdin")}}function ai(e,t={}){let n,r=!1,o,i,s="plain",c=!1,l,p,g=!1;for(let T=0;T<e.length;T++)switch(e[T]){case"--args":{const C=e[++T];if(C===void 0)throw we("--args");if(n!==void 0)throw J("multiple-input-sources","Provide --args only once. Use one explicit invoke input source.","args");n=C;break}case"--stdin":if(r)throw J("multiple-input-sources","Provide --stdin only once. Use one explicit invoke input source.","stdin");r=!0;break;case"--args-file":{const C=e[++T];if(C===void 0)throw we("--args-file");if(o!==void 0)throw J("multiple-input-sources","Provide --args-file only once. Use one explicit invoke input source.","args-file");o=C;break}case"--project-root":{const C=e[++T];if(C===void 0)throw we("--project-root");i=C;break}case"--format":{const C=e[++T];if(C===void 0)throw we("--format");if(C!=="json"&&C!=="plain")throw J("unexpected-cli-token","--format accepts only json or plain.");s=C;break}case"--watch":c=!0;break;case"--server-url":{const C=e[++T];if(C===void 0)throw we("--server-url");l=C;break}case"--platform-target":{const C=e[++T];if(C===void 0)throw we("--platform-target");p=C;break}case"--strict-read-only":g=!0;break;default:throw J("unexpected-cli-token","Unexpected top-level CLI token. Quote the complete --args payload or use --stdin/--args-file for multiline content.")}const A=[n!==void 0?"args":void 0,r?"stdin":void 0,o!==void 0?"args-file":void 0].filter(T=>T!==void 0);if(A.length===0)throw J("missing-input-value",Tn);if(A.length>1)throw J("multiple-input-sources",`Choose only one invoke input source; received ${A.join(", ")}.`);const f=A[0],d=f==="args"?n:f==="stdin"?(t.readStdin??si)():(t.readArgsFile??ii)(o);let h;try{h=De(f,d)}catch(T){throw T instanceof cr?J("invalid-utf8",T.message,f):T}const E=f==="args"?Bo(h.rawArgs):G(h.rawArgs),I=E.args===h.rawArgs?h:De(f,E.args);return{args:E.args,inputSource:f,inputEnvelope:I,projectRoot:i,format:s,watch:c||E.watch,commandLevelWatch:E.metadata,serverUrl:l,platformTarget:p,strictReadOnly:g}}function bn(e,t){return t?.active?{...e??{},commandLevelWatch:t,serverHeldStream:!1}:e}function ci(e,t,n=process.stdout,r=process.stderr){if(t.format==="json"){const s=rt(e.instructions,e.metadata),c=bn(s.metadata,t.commandLevelWatch);if(t.watch){n.write(JSON.stringify({type:"invoke_result",instructions:s.instructions,metadata:c,publicSafe:!0})+`
150
150
  `);return}n.write(JSON.stringify({instructions:s.instructions,metadata:c})+`
151
151
  `);return}const o=rt(e.instructions,e.metadata),i=bn(o.metadata,t.commandLevelWatch);n.write(o.instructions+`
152
152
  `),i&&r.write(JSON.stringify(i)+`
153
153
  `)}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 Fi(e){if(oi(e))return process.stdout.write(`${ri}
154
- `),0;let t;try{t=ai(e)}catch(r){if(r instanceof Me)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})+`
155
- `),1;throw r}if(zn(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."})+`
156
- `),1):(await Yn({args:t.args,projectRoot:tt(t.projectRoot),format:t.format,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})).exitCode;const n=await ti({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});if(!n.success){const r=n.metadata?.invocationInput,o=r&&typeof r=="object"&&!Array.isArray(r)?r:void 0;return process.stderr.write(JSON.stringify({error_code:n.errorCode??(n.exitCode===2?"NOT_CONFIGURED":"INVOKE_ERROR"),message:q(n.error??"",Ie),...typeof o?.reason=="string"?{reason:q(o.reason,80)}:{},...typeof o?.source=="string"?{source:q(o.source,20)}:{},...Number.isSafeInteger(o?.byteLength)?{byte_length:o.byteLength}:{},...typeof o?.remediation=="string"?{remediation:q(o.remediation,Ie)}:{}})+`
157
- `),n.exitCode}if(ci(n,t),t.watch){const r=new AbortController,o=di(r);try{const i=Xo(n.metadata,t.args);i.disabled?vo(i.reasonCodes??[B.TARGET_UNRESOLVED],t.args,t.format,process.stdout):await Oo({projectRoot:tt(t.projectRoot),format:t.format,strictReadOnly:t.strictReadOnly,...i,signal:r.signal})}finally{o()}}return 0}export{ri as INVOKE_HELP_TEXT,Wt as INVOKE_PAYLOAD_LIMIT_BYTES,Ze as INVOKE_PAYLOAD_WARNING_THRESHOLD_BYTES,Me as InvokeCliInputError,ot as InvokePayloadTooLargeError,it as InvokeStructuralContextTooLargeError,pe as StateSnapshotIntegrityError,Gi as __resetSchemaDriftWarnedForTests,Zo as acknowledgeMaterializedPendingEpicClaims,Dr as admitClientInvocation,on as assertEpicAwareStateShapeBeforeRepair,so as buildSignedInvokeAttempt,kr as clearPendingEpicIdempotencyKey,Qr as collectInvokeP205Authorities,sn as collectStateSnapshot,Ae as computeInvokeRequestBodySizeBytes,Hi as createFullStateSnapshotScope,ct as createInvokePayloadTelemetry,$r as detectStateSchemaDrift,ni as extractPreFlightTrigger,Nr as getOrCreatePendingEpicIdempotencyKey,gn as guardInvokeRequestBodySize,ti as invoke,Fi as invokeCliHandler,rn as isEpicAwareCommandId,mo as maybeEmitInvokePayloadSizeWarning,Io as maybeRunInvokeRunnerAutoBootstrap,ai as parseInvokeCliOptions,pn as postMaterializationJson,Lr as recordPendingEpicReservation,Bo as resolveInvokeCommandLevelWatch,tt as resolveInvokeProjectRoot,ro as resolveInvokeTransportErrorCode,Xo as resolveInvokeWatchTarget,rt as sanitizeInvokeCliOutput,Qo as sendEpicClaimAcknowledgement,wn as sendInvokeRequest,Vr as shouldCollectProjectEvidenceForInvoke,Oo as watchContinuityProcessingSummaries,ci as writeInvokeCliSuccessOutput};
154
+ `),0;let t;try{t=ai(e)}catch(r){if(r instanceof Ue)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})+`
155
+ `),1;throw r}if(Yn(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."})+`
156
+ `),1):(await zn({args:t.args,projectRoot:tt(t.projectRoot),format:t.format,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})).exitCode;const n=await ti({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});if(!n.success){const r=n.metadata?.invocationInput,o=r&&typeof r=="object"&&!Array.isArray(r)?r:void 0;return process.stderr.write(JSON.stringify({error_code:n.errorCode??(n.exitCode===2?"NOT_CONFIGURED":"INVOKE_ERROR"),message:X(n.error??"",Ie),...typeof o?.reason=="string"?{reason:X(o.reason,80)}:{},...typeof o?.source=="string"?{source:X(o.source,20)}:{},...Number.isSafeInteger(o?.byteLength)?{byte_length:o.byteLength}:{},...typeof o?.remediation=="string"?{remediation:X(o.remediation,Ie)}:{}})+`
157
+ `),n.exitCode}if(ci(n,t),t.watch){const r=new AbortController,o=di(r);try{const i=Xo(n.metadata,t.args);i.disabled?vo(i.reasonCodes??[B.TARGET_UNRESOLVED],t.args,t.format,process.stdout):await Oo({projectRoot:tt(t.projectRoot),format:t.format,strictReadOnly:t.strictReadOnly,...i,signal:r.signal})}finally{o()}}return 0}export{ri as INVOKE_HELP_TEXT,Wt as INVOKE_PAYLOAD_LIMIT_BYTES,Ze as INVOKE_PAYLOAD_WARNING_THRESHOLD_BYTES,Ue as InvokeCliInputError,ot as InvokePayloadTooLargeError,it as InvokeStructuralContextTooLargeError,pe as StateSnapshotIntegrityError,Hi as __resetSchemaDriftWarnedForTests,Zo as acknowledgeMaterializedPendingEpicClaims,Dr as admitClientInvocation,on as assertEpicAwareStateShapeBeforeRepair,so as buildSignedInvokeAttempt,kr as clearPendingEpicIdempotencyKey,Qr as collectInvokeP205Authorities,sn as collectStateSnapshot,Ae as computeInvokeRequestBodySizeBytes,Gi as createFullStateSnapshotScope,ct as createInvokePayloadTelemetry,$r as detectStateSchemaDrift,ni as extractPreFlightTrigger,Nr as getOrCreatePendingEpicIdempotencyKey,gn as guardInvokeRequestBodySize,ti as invoke,Fi as invokeCliHandler,rn as isEpicAwareCommandId,mo as maybeEmitInvokePayloadSizeWarning,Io as maybeRunInvokeRunnerAutoBootstrap,ai as parseInvokeCliOptions,pn as postMaterializationJson,Lr as recordPendingEpicReservation,Bo as resolveInvokeCommandLevelWatch,tt as resolveInvokeProjectRoot,ro as resolveInvokeTransportErrorCode,Xo as resolveInvokeWatchTarget,rt as sanitizeInvokeCliOutput,Qo as sendEpicClaimAcknowledgement,wn as sendInvokeRequest,Vr as shouldCollectProjectEvidenceForInvoke,Oo as watchContinuityProcessingSummaries,ci as writeInvokeCliSuccessOutput};