@ornexus/neocortex 4.60.59 → 4.60.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/sbom.cdx.json +241 -82
- package/install.ps1 +1 -1
- package/install.sh +1 -1
- package/package.json +6 -2
- package/packages/client/dist/cli.js +37 -4
- package/packages/client/dist/commands/architecture-answers.d.ts +26 -0
- package/packages/client/dist/commands/architecture-answers.js +7 -0
- package/packages/client/dist/commands/architecture-memory-terminal.d.ts +21 -0
- package/packages/client/dist/commands/architecture-memory-terminal.js +2 -0
- package/packages/client/dist/commands/architecture-root-binding.d.ts +2 -0
- package/packages/client/dist/commands/architecture-root-binding.js +1 -0
- package/packages/client/dist/commands/invoke.d.ts +43 -2
- package/packages/client/dist/commands/invoke.js +98 -70
- package/packages/client/dist/commands/legacy-story-branch.d.ts +10 -0
- package/packages/client/dist/commands/legacy-story-branch.js +1 -0
- package/packages/client/dist/commands/legacy-story-pr.d.ts +18 -0
- package/packages/client/dist/commands/legacy-story-pr.js +1 -0
- package/packages/client/dist/commands/planning-diagnosis.d.ts +4 -0
- package/packages/client/dist/commands/planning-diagnosis.js +1 -0
- package/packages/client/dist/commands/planning-generation.d.ts +2 -0
- package/packages/client/dist/commands/planning-generation.js +1 -0
- package/packages/client/dist/commands/planning-research.d.ts +3 -0
- package/packages/client/dist/commands/planning-research.js +1 -0
- package/packages/client/dist/commands/refresh-memory.d.ts +10 -0
- package/packages/client/dist/commands/refresh-memory.js +3 -1
- package/packages/client/dist/commands/story-checkpoint.d.ts +1 -1
- package/packages/client/dist/commands/story-checkpoint.js +1 -1
- package/packages/client/dist/config/profile-directory.d.ts +2 -0
- package/packages/client/dist/config/profile-directory.js +1 -0
- package/packages/client/dist/config/secure-config.js +5 -5
- package/packages/client/dist/continuity/runner-bootstrap-policy.d.ts +1 -1
- package/packages/client/dist/continuity/runner-bootstrap-policy.js +1 -1
- package/packages/client/dist/generated/command-registry.generated.d.ts +11 -11
- package/packages/client/dist/generated/command-registry.generated.js +1 -1
- package/packages/client/dist/generated/public-projections.generated.d.ts +20 -20
- package/packages/client/dist/generated/public-projections.generated.js +1 -1
- package/packages/client/dist/git/direct-yolo-checkpoint.d.ts +9 -0
- package/packages/client/dist/git/direct-yolo-checkpoint.js +4 -4
- package/packages/client/dist/git/git-lifecycle-step-ids.d.ts +5 -0
- package/packages/client/dist/git/git-lifecycle-step-ids.js +1 -1
- package/packages/client/dist/git/git-lifecycle-store.d.ts +16 -0
- package/packages/client/dist/git/git-lifecycle-store.js +9 -4
- package/packages/client/dist/git/legacy-story-branch-checkpoint.d.ts +38 -0
- package/packages/client/dist/git/legacy-story-branch-checkpoint.js +9 -0
- package/packages/client/dist/git/legacy-story-branch-setup.d.ts +56 -0
- package/packages/client/dist/git/legacy-story-branch-setup.js +4 -0
- package/packages/client/dist/git/legacy-story-pr.d.ts +514 -0
- package/packages/client/dist/git/legacy-story-pr.js +62 -0
- package/packages/client/dist/git/secure-filesystem-boundary.d.ts +2 -0
- package/packages/client/dist/git/secure-filesystem-boundary.js +34 -7
- package/packages/client/dist/machine/fingerprint.js +2 -2
- package/packages/client/dist/memory/project-memory-writer.js +17 -17
- package/packages/client/dist/memory/shared-project-memory-types.d.ts +23 -13
- package/packages/client/dist/memory/shared-project-memory-types.js +2 -2
- package/packages/client/dist/migrations/state-json.d.ts +23 -1
- package/packages/client/dist/migrations/state-json.js +4 -4
- package/packages/client/dist/private-execution/delivery.d.ts +131 -3
- package/packages/client/dist/private-execution/delivery.js +2 -2
- package/packages/client/dist/private-execution/isolated-admission.d.ts +28 -1
- package/packages/client/dist/private-execution/isolated-admission.js +11 -2
- package/packages/client/dist/private-execution/isolated-session.js +2 -2
- package/packages/client/dist/private-execution/isolated-workspace.d.ts +8 -0
- package/packages/client/dist/private-execution/isolated-workspace.js +1 -1
- package/packages/client/dist/private-execution/pact-consumer-runtime.d.ts +19 -0
- package/packages/client/dist/private-execution/pact-consumer-runtime.js +3 -0
- package/packages/client/dist/private-execution/pact-test-source.d.ts +9 -0
- package/packages/client/dist/private-execution/pact-test-source.js +1 -0
- package/packages/client/dist/private-execution/pact-toolchain.d.ts +37 -0
- package/packages/client/dist/private-execution/pact-toolchain.js +3 -0
- package/packages/client/dist/private-execution/pact-write-set.d.ts +24 -0
- package/packages/client/dist/private-execution/pact-write-set.js +1 -0
- package/packages/client/dist/private-execution/planning-diagnosis-checkpoint.d.ts +38 -0
- package/packages/client/dist/private-execution/planning-diagnosis-checkpoint.js +5 -0
- package/packages/client/dist/private-execution/planning-generation-checkpoint.d.ts +34 -0
- package/packages/client/dist/private-execution/planning-generation-checkpoint.js +4 -0
- package/packages/client/dist/private-execution/planning-research-checkpoint.d.ts +38 -0
- package/packages/client/dist/private-execution/planning-research-checkpoint.js +4 -0
- package/packages/client/dist/private-execution/ux-source-validation.d.ts +2 -0
- package/packages/client/dist/private-execution/ux-source-validation.js +1 -0
- package/packages/client/dist/private-execution/ux-write-set.d.ts +30 -0
- package/packages/client/dist/private-execution/ux-write-set.js +2 -0
- package/packages/client/dist/resolvers/remote-resolver.d.ts +5 -22
- package/packages/client/dist/resolvers/remote-resolver.js +1 -1
- package/packages/client/dist/runner/project-identity.js +1 -1
- package/packages/client/dist/runner/scheduler.d.ts +20 -0
- package/packages/client/dist/runner/scheduler.js +7 -7
- package/packages/client/dist/state/project-state-snapshot.js +1 -1
- package/packages/client/dist/yolo/change-evidence-collector.d.ts +8 -0
- package/packages/client/dist/yolo/change-evidence-collector.js +1 -1
- package/packages/client/dist/yolo/spec-envelope-collector.d.ts +2 -0
- package/packages/client/dist/yolo/spec-envelope-collector.js +3 -3
- package/packages/client/dist/yoloop/invoke-hooks.js +7 -7
- package/packages/shared/dist/generated/command-registry.generated.js +12 -10
- package/packages/shared/dist/generated/invocation-schema.generated.js +14 -6
- package/packages/shared/dist/generated/public-projections.generated.js +18 -18
- package/packages/shared/dist/invocation/index.d.ts +1 -1
- package/packages/shared/dist/merge-readiness/c12-remote-observation.js +80 -0
- package/packages/shared/dist/planning/diagnosis-state.js +143 -0
- package/packages/shared/dist/yoloop/branch-unit.js +23 -1
- package/targets-stubs/antigravity/gemini.md +1 -1
- package/targets-stubs/antigravity/skill/SKILL.md +1 -1
- package/targets-stubs/claude-code/neocortex-root.agent.yaml +1 -1
- package/targets-stubs/claude-code/neocortex-root.md +2 -2
- package/targets-stubs/claude-code/neocortex.agent.yaml +1 -1
- package/targets-stubs/claude-code/neocortex.md +2 -2
- package/targets-stubs/codex/AGENTS.md +1 -1
- package/targets-stubs/cursor/agent.md +2 -2
- package/targets-stubs/gemini-cli/agent.md +2 -2
- package/targets-stubs/opencode/neocortex-root.md +1 -1
- package/targets-stubs/vscode/neocortex.agent.md +2 -2
|
@@ -1,73 +1,77 @@
|
|
|
1
|
-
import{createHash as
|
|
2
|
-
`,{encoding:"utf8",mode:384,flag:"wx"}),
|
|
1
|
+
import{createHash as Be,randomUUID as Lt}from"node:crypto";import{loadPactAnswerReceipt as xn,loadPactPrivateAnswers as Gr}from"./architecture-answers.js";import{acceptedArchitectureTerminalMemoryReceipt as Qt,deriveArchitectureTerminalMemoryReceipt as kn}from"./architecture-memory-terminal.js";import{deriveCommittedArchitectureEpicGraphRevision as vt,explicitArchitectureEpicTarget as Fr}from"./architecture-root-binding.js";import{derivePactWriteSet as qr}from"../private-execution/pact-write-set.js";import{execFileSync as Le}from"node:child_process";import{existsSync as lt,readFileSync as Re,renameSync as Pn,unlinkSync as Zt,writeFileSync as Dt,mkdirSync as Ct,statSync as Yr,openSync as _t,closeSync as wt,fsyncSync as jt,realpathSync as Jr,lstatSync as ht}from"node:fs";import{isDeepStrictEqual as I}from"node:util";import{join as K,isAbsolute as zr,resolve as On}from"node:path";import{homedir as At}from"node:os";import{isPrivateExecutionPublicEnvelope as Kr}from"../private-execution/delivery.js";import{acceptedPlanningDiagnosisPredecessor as Nn}from"../private-execution/planning-diagnosis-checkpoint.js";import{acceptedPlanningResearchPredecessor as Ln}from"../private-execution/planning-research-checkpoint.js";import{LicenseClient as Xr}from"../license/license-client.js";import{EncryptedCache as en}from"../cache/encrypted-cache.js";import{NoOpCache as Dn}from"../types/index.js";import{resolveClientPreFlightTrigger as tn,TierAwareClient as Qr}from"../tier/tier-aware-client.js";import{COMMAND_REGISTRY_CHECKSUM as it,COMMAND_REGISTRY_VERSION as ot,GENERATED_CLIENT_COMMANDS as Zr}from"../generated/command-registry.generated.js";import{loadSecureConfig as jn}from"../config/secure-config.js";import{neocortexProfileDirectory as ea}from"../config/profile-directory.js";import{DEFAULT_SERVER_URL as ta}from"../constants.js";import{detectFirstRunLocale as na,renderFirstRunMessage as ra}from"../i18n/first-run.js";import{humanizeError as Mn,formatHumanizedError as Vn,detectErrorLocale as Un}from"../errors/error-messages.js";import{degradeStateSnapshotForPayloadLimit as aa,projectStateSnapshotForInvoke as $n,projectStateSnapshotResultV2ForInvoke as ia}from"../state/project-state-snapshot.js";import{isInlineYoloMaterialization as oa,maybeRepairStateJsonBeforeInvoke as ca,StateRepairHardStopError as sa}from"../state/state-json-repair.js";import{StructuralDagError as Bn}from"../state/structural-dag-projection.js";import{collectStateMigrationAuthority as da,StateMigrationApplyError as ua}from"../migrations/state-json.js";import{RUNNER_BOOTSTRAP_POLICY_REASON_CODES as pa,classifyRunnerBootstrapPolicyFromArgs as la}from"../continuity/runner-bootstrap-policy.js";import{RUNNER_SCHEDULER_BOOTSTRAP_REASON_CODES as ha,ensureRunnerSchedulerBootstrap as ga,observeRunnerOperationalStatus as fa}from"../runner/scheduler.js";import{CONTINUITY_INVOKE_WATCH_DEFAULT_LIMIT as Hn,CONTINUITY_INVOKE_WATCH_DEFAULT_MAX_IDLE_POLLS as Wn,CONTINUITY_INVOKE_WATCH_DEFAULT_MAX_POLLS as Gn,CONTINUITY_INVOKE_WATCH_DEFAULT_POLL_INTERVAL_MS as Fn,openContinuityClientStateStore as ma}from"../continuity/continuity-client-state-store.js";import{isLocalJobsConsoleArgs as ya,runLocalJobsConsoleCommand as Ia}from"../runner/local-console.js";import{detectNativeHostAttestation as Ea,detectPlatform as Sa}from"../adapters/platform-detector.js";import{signNxInvokeRequest as va}from"../../../shared/dist/nx-invoke-signature.js";import{CLIENT_VERSION as gt}from"../version.js";import{createCapabilityCache as qn,executeInvokeQueryTransport as Yn,executeSecondaryNetworkMutation as Ca}from"../effects/invoke-effect-gateways.js";import{STRICT_READ_ONLY_POLICY as _a,STRICT_READ_ONLY_CLIENT_PROJECTION as Jn,STRICT_READ_ONLY_SERVER_PROJECTION as wa,StrictReadOnlyError as ft,canonicalizeInvokeEffects as Aa,createInvokeEffectContext as Ra,verifyStrictReadOnlyReceipt as ba}from"../../../shared/dist/strict-readonly.js";import{admitInvocation as Ta,assertInvokeInputEnvelopeV2 as xa,assertProjectIdentityMigrationReceiptV1 as ka,buildProjectIdentityPublicDiagnostic as mt,createInvocationAdmissionReceipt as Pa,projectInvokeInputEvidenceV1 as zn,verifyStrictDiagnoseReceiptV1 as Oa}from"../../../shared/dist/invocation/index.js";import{buildInvokeInputEnvelope as Mt,InvokeInputDecodeError as Na}from"../invocation/invoke-input.js";import{acknowledgeProjectIdentityMigration as La,finalizeProjectIdentityMigration as Da,prepareProjectIdentityMigration as ja,ProjectIdentityMigrationError as nn,readProjectIdentityMigrationPhase as Ma}from"../migrations/project-identity.js";import{probeProjectIdentityMigrationCapability as Va}from"../migrations/project-identity-capability.js";import{normalizeYoloopStoryPlanningEvidence as Ua}from"../../../shared/dist/yoloop/planning-graph.js";import{normalizeContinuousWriteRef as Vt}from"../../../shared/dist/yoloop/wave-decision-receipt.js";import{applyGitLifecycleRuntimeOverlay as Kn,classifyGitLifecycleStoryCheckpointProjectionSync as $a,ensureGitLifecycleRuntimeInitialized as Ba,executeP205TransientAuthorities as Ha,persistGitLifecycleGraphAuthority as Wa,P205_COMPLETE_COMMAND as Ga,gitLifecycleStoryWriteSet as Xn,readGitLifecycleRuntimeSync as Ut,verifyLegacyCheckpointMigrationCandidateSync as Fa}from"../git/git-lifecycle-store.js";const $t=ea(),rn=K($t,"cache"),Qn=K(rn,"menu-cache.json"),Zn=1440*60*1e3,er=3e4,tr=256*1024,nr=tr,rr=.8,Ke="[REDACTED]",qa=1e5,ct=2e3,Ya=200,Ja=200,za=12,Ka=/(?:promptBody|workflow|workflowGraph|stepBody|privateUrl|rawLog|secret|credential|licenseKey|apiKey|internalRouting|serverOnly|proprietary|protected)/i,Xa=/(?:PRIVATE|PROTECTED|SERVER_ONLY)[-_\s]*(?:PROMPT|PROMPT_BODY|WORKFLOW|WORKFLOW_GRAPH|STEP_BODY|STEP|ROUTING)\s*[:=][^\n\r]*/gi,Qa=/(?:https?:\/\/(?:localhost|127\.0\.0\.1|0\.0\.0\.0|\[::1\]|private|internal)[^\s"'<>]*|raw[_-]?log|transcript|stack\s*trace|stderr:|stdout:|system prompt|prompt body|workflow body|step body|PROTECTED_|PRIVATE_INTERNALS|CUSTOMER_PII|VENDOR_CORPUS|P180[_-]?SYNTHETIC[_-]?CONTINUITY|P185[_-]?SYNTHETIC[_-]?CONTINUITY|P187[_-]?SYNTHETIC[_-]?(?:CONTINUITY|RUNNER|WATCH)|authorization\s*:|password\s*=|token\s*=|api[_-]?key\s*=|license[_-]?key\s*=)/gi,an=Math.floor(tr*rr),ar=K($t,".first-run-shown"),Za="pending-epic-claims.json",ir=64;function or(e){return K(e,".neocortex",Za)}function Bt(e){const t=or(e);if(!lt(t))return{schemaVersion:1,operations:{}};const a=JSON.parse(Re(t,"utf8"));if(!a||typeof a!="object"||Array.isArray(a))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const r=a;if(r.schemaVersion!==1||!r.operations||typeof r.operations!="object"||Array.isArray(r.operations))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(Object.keys(r.operations).length>ir)throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");for(const[i,n]of Object.entries(r.operations)){if(!/^[a-f0-9]{64}$/.test(i)||!n||typeof n!="object"||Array.isArray(n))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const o=n;if(typeof o.idempotencyKey!="string"||!/^[0-9a-f-]{36}$/.test(o.idempotencyKey)||typeof o.createdAt!="string")throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(o.claimId!==void 0&&(typeof o.claimId!="string"||!/^[0-9a-f-]{36}$/.test(o.claimId))||o.epicId!==void 0&&(typeof o.epicId!="string"||!/^P[1-9][0-9]*$/.test(o.epicId))||o.claimId===void 0!=(o.epicId===void 0))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE")}return a}function on(e,t){const a=or(e);Ct(K(e,".neocortex"),{recursive:!0,mode:448});const r=`${a}.${process.pid}.${Lt()}.tmp`;Dt(r,`${JSON.stringify(t)}
|
|
2
|
+
`,{encoding:"utf8",mode:384,flag:"wx"}),Pn(r,a)}function ei(e,t){return Be("sha256").update(`nx-epic-logical-operation-v1\0${JSON.stringify({command:t,args:e})}`,"utf8").digest("hex")}function ti(e,t,a="create-epic"){const r=ei(t,a),i=Bt(e),n=i.operations[r];if(n)return{key:n.idempotencyKey,fingerprint:r};if(Object.keys(i.operations).length>=ir)throw new Error("EPIC_CLAIM_CAPACITY_EXCEEDED");const o=Lt(),s={...i.operations,[r]:{idempotencyKey:o,createdAt:new Date().toISOString()}};return on(e,{schemaVersion:1,operations:s}),{key:o,fingerprint:r}}function ni(e,t){const a=Bt(e);if(!a.operations[t])return;const r={...a.operations};delete r[t],on(e,{schemaVersion:1,operations:r})}function cr(e,t,a,r){if(!/^[0-9a-f-]{36}$/.test(a)||!/^P[1-9][0-9]*$/.test(r))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const i=Bt(e),n=i.operations[t];if(!n)throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");if(n.claimId!==void 0&&(n.claimId!==a||n.epicId!==r))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");on(e,{schemaVersion:1,operations:{...i.operations,[t]:{...n,claimId:a,epicId:r}}})}function ri(){try{if(lt(ar))return;const e=na(),t=ra(e);process.stderr.write(t);try{Ct($t,{recursive:!0}),Dt(ar,new Date().toISOString(),"utf-8")}catch{}}catch{}}function cn(e,t=process.cwd()){return e&&e.trim().length>0?e:t}function ai(e){return Ta(e,{registryVersion:ot,registryChecksum:it})}const ii=new Set(["completed","aborted","cancelled"]),oi=new Set(["watch-target-missing","watch-target-malformed","watch-target-ambiguous","watch-target-multiple"]),fe=Object.freeze({COMPLETED:"invoke-watch-completed",CANCELLED:"invoke-watch-cancelled",IDLE_TIMEOUT:"invoke-watch-idle-timeout",MAX_POLLS:"invoke-watch-max-polls",STORE_UNAVAILABLE:"invoke-watch-store-unavailable",TARGET_UNRESOLVED:"invoke-watch-target-unresolved"}),Se=Object.freeze({MISSING:"watch-target-missing",MALFORMED:"watch-target-malformed",AMBIGUOUS:"watch-target-ambiguous",CONFLICT:"watch-target-conflicting-evidence",SERVER_HELD_STREAM:"watch-target-server-held-stream-unsupported"}),H=Object.freeze({OK:"continuity-ok",WATCH_NO_SUMMARIES_YET:"watch-no-summaries-yet",WATCH_CURSOR_ADVANCED:"watch-cursor-advanced",WATCH_CURSOR_UNCHANGED:"watch-cursor-unchanged",WATCH_RENDER_PENDING:"watch-render-pending",WATCH_STOP_IDLE_LIMIT_REACHED:"watch-stop-idle-limit-reached",WATCH_STOP_MAX_POLLS_REACHED:"watch-stop-max-polls-reached",WATCH_TARGET_UNRESOLVED:"watch-target-unresolved",WATCH_SNAPSHOT_UNAVAILABLE:"watch-snapshot-unavailable",WATCH_EVIDENCE_UNAVAILABLE:"watch-evidence-unavailable"}),sr=240,ci=/(https?:\/\/\S+|ghp_[A-Za-z0-9_]+|sk-[A-Za-z0-9_-]+|-----BEGIN [A-Z ]*PRIVATE KEY-----|authorization\s*:|password\s*=|token\s*=|api[_-]?key\s*=|license[_-]?key\s*=|raw[_-]?log|transcript|stack\s*trace|stderr:|stdout:|system prompt|prompt body|workflow body|step body|PROTECTED_|PRIVATE_INTERNALS|CUSTOMER_PII|VENDOR_CORPUS|P180[_-]?SYNTHETIC[_-]?CONTINUITY|P185[_-]?SYNTHETIC[_-]?CONTINUITY|P187[_-]?SYNTHETIC[_-]?(?:CONTINUITY|RUNNER|WATCH))/i;function si(e){return e.replace(/[\w.+-]+@[\w-]+\.[\w.-]+/g,Ke).replace(/(?:sk|pk|whsec|nxk)[-_](?:test|live|ant|proj|pro|free|enterprise)?[-_]?[A-Za-z0-9_-]{16,}/g,Ke).replace(/NX-[FPE]-[a-f0-9]{24}-[a-f0-9]{4}/g,Ke).replace(/eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g,Ke).replace(Xa,Ke).replace(Qa,Ke)}function Ve(e,t){const a=si(e);return a.length<=t?a:`${a.slice(0,t)}\u2026[TRUNCATED:${a.length-t}]`}function sn(e,t=0,a=new WeakSet){if(t>za)return"[MAX_DEPTH]";if(e==null)return e;if(typeof e=="string")return Ve(e,ct);if(typeof e=="number")return Number.isFinite(e)?e:null;if(typeof e=="boolean")return e;if(typeof e=="bigint")return String(e);if(!(typeof e=="function"||typeof e=="symbol")&&typeof e=="object"){if(a.has(e))return"[CIRCULAR]";a.add(e);try{if(Array.isArray(e))return e.slice(0,Ya).map(i=>sn(i,t+1,a));const r={};for(const[i,n]of Object.entries(e).slice(0,Ja)){if(Ka.test(i)){r[i]=Ke;continue}const o=sn(n,t+1,a);o!==void 0&&(r[i]=o)}return r}finally{a.delete(e)}}}function dn(e,t){return{instructions:Ve(e??"",qa),metadata:t?sn(t):void 0}}class Ht extends Error{reason;source;byteLength;code;constructor(t,a,r,i,n){super(a),this.reason=r,this.source=i,this.byteLength=n,this.name="InvokeCliInputError",this.code=t}}function di(e){return/^\s*\*?(?:arch-plan|ui-ux-review)(?:\s|$)/i.test(e)&&ui(e,"--project-evidence")}function ui(e,t){let a=null,r=-1,i=!1,n=!1;for(let o=0;o<=e.length;o+=1){const s=e[o];if(o===e.length||!a&&/\s/.test(s??"")){if(r>=0&&!i&&e.slice(r,o)===t)return!0;r=-1,i=!1,n=!1;continue}if(r<0&&(r=o),n){n=!1;continue}if(s==="\\"){n=!0;continue}(s==='"'||s==="'")&&(i=!0,a=a===s?null:a??s)}return!1}const pi=/(?:^|\s)codex(?:-cli)?\s+([A-Za-z0-9][A-Za-z0-9._+-]{0,63})(?:\s|$)/i;function li(e,t){if(e.targetId!=="codex")return null;const a=t.CODEX_VERSION?.trim();if(a&&/^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/.test(a))return a;try{return Le("codex",["--version"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim().match(pi)?.[1]??null}catch{return null}}class un extends Error{code="PAYLOAD_TOO_LARGE";telemetry;constructor(t){super(`PAYLOAD_TOO_LARGE: invoke request is ${t.payloadBytes} bytes after deterministic degradation; limit is ${t.limitBytes}. Reduce command input or local state context and retry.`),this.name="InvokePayloadTooLargeError",this.telemetry=t}}class pn extends Error{code="STRUCTURAL_CONTEXT_TOO_LARGE";telemetry;constructor(t){super(`STRUCTURAL_CONTEXT_TOO_LARGE: the bounded structural projection is ${t.payloadBytes} bytes; the request limit is strictly below ${t.limitBytes}. Select an explicit epic/story target or split the dependency graph.`),this.name="InvokeStructuralContextTooLargeError",this.telemetry=t}}let ln=!1;function hi(e){const t=[];if(!e||typeof e!="object")return t;const a=e,r=a.planning;if(r&&(r.current!==void 0||Array.isArray(r.history))&&t.push({code:"PLANNING_LEGACY",message:"legacy `planning.current`/`planning.history` detected (not read by v1 orchestrator)"}),Array.isArray(a.stories)&&t.push({code:"STORIES_AS_ARRAY",message:"`stories` is an Array (expected Object keyed by story ID)"}),a.epics&&typeof a.epics=="object"&&!Array.isArray(a.epics))for(const[n,o]of Object.entries(a.epics)){const s=o;if(s&&s.stories!==void 0&&!Array.isArray(s.stories)){t.push({code:"EPIC_STORIES_NOT_ARRAY",message:`epic "${n}" has non-array \`stories\` field (expected string[] of story IDs)`});break}}const i=a.epics&&typeof a.epics=="object"&&Object.keys(a.epics).length>0||a.stories&&typeof a.stories=="object"&&!Array.isArray(a.stories)&&Object.keys(a.stories).length>0||Array.isArray(a.stories)||r&&r.current!==void 0;return a.schema_version===void 0?i&&t.push({code:"SCHEMA_VERSION_MISSING",message:"`schema_version` field missing (expected: `schema_version: 1`)"}):a.schema_version!==1&&t.push({code:"SCHEMA_VERSION_OUTDATED",message:`schema_version=${String(a.schema_version)} (expected: 1)`}),t}function gi(e){if(!(ln||e.length===0)){ln=!0;try{const t=e.map(a=>` - ${a.message}`).join(`
|
|
3
3
|
`);process.stderr.write(`[Neocortex] state.json schema drift detected:
|
|
4
4
|
${t}
|
|
5
5
|
Run \`neocortex *migrate-state --preview\` to inspect or \`neocortex *migrate-state --apply\` to migrate.
|
|
6
6
|
See docs/arquitetura-software/STATE-JSON-SCHEMA.md for the schema contract.
|
|
7
|
-
`)}catch{}}}function ms(){_t=!1}function dr(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function go(e){return e==="active"||e==="archived"||e==="rolled-back"||e==="synthetic"||e==="orphan"?e:void 0}function ur(e){return e==="create-epic"||e==="discovered"?e:void 0}function oe(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function mo(e){const t={};let r=!1;for(const n of["contracts","contract_refs","shared_surfaces","adr_refs","nfr_refs","acceptance_depends_on"]){if(e[n]===void 0)continue;const o=e[n];if(!Array.isArray(o)||o.length>128||o.some(i=>Ke(i)===void 0)){r=!0;continue}t[n]=o.map(i=>Ke(i))}if(e.planning!==void 0)try{if(!y(e.planning))throw new Error("planning-shape");const n=e.planning;for(const a of["claims","semanticArtifacts"]){if(n[a]===void 0)continue;const c=n[a];if(!Array.isArray(c)||c.length>128||c.some(l=>!y(l)||Ke(l.ref)===void 0))throw new Error("planning-refs")}if(n.attempts!==void 0&&(!Array.isArray(n.attempts)||n.attempts.length>32))throw new Error("planning-attempts");for(const a of n.attempts??[]){if(!y(a)||!Array.isArray(a.reasonCodes)||a.reasonCodes.length>32||a.reasonCodes.some(c=>typeof c!="string"||!/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$/.test(c)))throw new Error("planning-attempt-reasons");if(a.discoveredClaims!==void 0&&(!Array.isArray(a.discoveredClaims)||a.discoveredClaims.length>128||a.discoveredClaims.some(c=>!y(c)||Ke(c.ref)===void 0)))throw new Error("planning-attempt-claims")}const{graphRevision:o,...i}=Un(n);t.planning=i}catch{r=!0}return r&&(t.planning={schemaVersion:1,dependencyBasis:"unknown",claims:[],semanticArtifacts:[]}),t}function y(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Se(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:void 0}function B(e){if(typeof e!="string")return;const t=e.trim();if(t)return t.replace(/[^a-z0-9_.:-]+/gi,"_").slice(0,120)}function M(e){if(typeof e!="string")return;const t=e.trim(),r=B(e);return r===t?r:void 0}function q(e){if(typeof e!="string")return;const t=e.trim();if(!(!t||t.length>240)&&/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(t)&&!(t.includes("..")||t.includes("//")||t.includes("@{")||t.endsWith("/")||t.endsWith("."))&&!t.split("/").some(r=>!r||r.startsWith(".")||r.endsWith(".lock")))return t}function S(e){return typeof e=="string"&&/^[0-9a-f]{7,64}$/i.test(e)?e:void 0}function ie(e){if(!(typeof e!="string"||e.length>64)&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/.test(e))return Number.isFinite(Date.parse(e))?e:void 0}function Ae(e){if(typeof e!="string")return;const t=e.trim();if(!(!t||t.length>240||t.includes("..")))return/^[A-Za-z0-9._:/#\-[\]]+$/.test(t)?t:void 0}function tt(e,t){if(!y(e))return;const r={};for(const n of t){const o=e[n];if(typeof o=="boolean")r[n]=o;else if(typeof o=="number"&&Number.isFinite(o))r[n]=o;else if(typeof o=="string"){const i=B(o);i&&(r[n]=i)}}return Object.keys(r).length>0?r:void 0}function rt(e){return e==="epic"||e==="story"?e:void 0}function lr(e){if(!y(e)||e.schemaVersion!==1)return;const t=M(e.ownerStoryId),r=M(e.sessionId),n=M(e.idempotencyKey),o=ie(e.acquiredAt),i=ie(e.expiresAt);if(!(!t||!r||!n||!o||!i||Date.parse(i)<=Date.parse(o)))return{schemaVersion:1,ownerStoryId:t,sessionId:r,idempotencyKey:n,acquiredAt:o,expiresAt:i}}function pr(e){if(!y(e)||e.schemaVersion!==1)return;const t=M(e.storyId),r=M(e.epicId),n=q(e.branch),o=S(e.baseSha),i=S(e.headSha),a=M(e.idempotencyKey),c=ie(e.recordedAt),l=oe(e.commits).map(S).filter(j=>!!j).slice(0,256),p=oe(e.receiptRefs).map(Ae).filter(j=>!!j).slice(0,256),m=e.dispatchId===void 0?void 0:M(e.dispatchId),w=e.bundleId===void 0?void 0:M(e.bundleId),f=e.bundleDigest===void 0?void 0:S(e.bundleDigest),d=e.graphRevision===void 0?void 0:S(e.graphRevision),I=e.claimRevision===void 0?void 0:M(e.claimRevision),A=yo(e.qaReceipt),C=Io(e.reviewReceipt);if(!(!t||!r||!t.startsWith(`${r}.`)||!n||!o||!i||o===i||!a||!c||l.length===0||p.length===0||!Array.isArray(e.commits)||l.length!==e.commits.length||e.commits.length>256||!Array.isArray(e.receiptRefs)||p.length!==e.receiptRefs.length||e.receiptRefs.length>256||e.dispatchId!==void 0&&!m||e.bundleId!==void 0&&!w||e.bundleDigest!==void 0&&(!f||f.length!==64)||e.graphRevision!==void 0&&(!d||d.length!==64)||e.claimRevision!==void 0&&!I||e.qaVerdict!=="passed"&&e.qaVerdict!=="blocked"||!["approved","changes-requested","pending"].includes(String(e.reviewVerdict))||!A||e.reviewVerdict!=="pending"&&!C||e.reviewVerdict==="pending"&&C||A.verdict!==e.qaVerdict||C&&C.verdict!==e.reviewVerdict||!gr(A,{storyId:t,epicId:r,baseSha:o,headSha:i,bundleDigest:f,graphRevision:d})||C&&(!gr(C,{storyId:t,epicId:r,baseSha:o,headSha:i,bundleDigest:f,graphRevision:d})||C.qaReceiptRef!==A?.receiptRef||C.receiptRef===A?.receiptRef)||!p.includes(String(A.receiptRef))||C&&(!p.includes(String(C.receiptRef))||Date.parse(String(C.reviewedAt))<Date.parse(String(A.checkedAt)))))return{schemaVersion:1,storyId:t,epicId:r,branch:n,baseSha:o,headSha:i,idempotencyKey:a,...m?{dispatchId:m}:{},...w?{bundleId:w}:{},...f?{bundleDigest:f}:{},...d?{graphRevision:d}:{},...I?{claimRevision:I}:{},qaVerdict:e.qaVerdict,reviewVerdict:e.reviewVerdict,...A?{qaReceipt:A}:{},...C?{reviewReceipt:C}:{},recordedAt:c,commits:l,receiptRefs:p}}function yo(e){if(!y(e)||e.schemaVersion!==1||e.kind!=="story_qa_evidence"||e.producer!=="local-yolo-tdd"||e.evidenceVersion!==void 0&&e.evidenceVersion!=="git-immutable-v1"&&e.evidenceVersion!=="p205-execution-v2"||!["passed","blocked"].includes(String(e.verdict)))return;const t=M(e.storyId),r=M(e.epicId),n=S(e.baseSha),o=S(e.headSha),i=S(e.bundleDigest),a=S(e.graphRevision),c=S(e.sourceEvidenceDigest),l=ie(e.checkedAt),p=Ae(e.receiptRef),m=e.evidenceVersion==="p205-execution-v2"&&e.contract==="P205-CI-02"?e.contract:void 0,w=e.evidenceVersion==="p205-execution-v2"&&e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,f=e.evidenceVersion==="p205-execution-v2"?S(e.manifestDigest):void 0,d=e.evidenceVersion==="p205-execution-v2"?S(e.resultDigest):void 0,I=e.evidenceVersion==="p205-execution-v2"?oe(e.gateIds).map(M).filter(A=>!!A).slice(0,64):void 0;if(!(!t||!r||!n||!o||!i||i.length!==64||!a||a.length!==64||!c||c.length!==64||!l||!p||e.evidenceVersion==="p205-execution-v2"&&(!m||w!=="node scripts/test-root.mjs --gate complete"||!f||f.length!==64||!d||d.length!==64||!Array.isArray(e.gateIds)||!I||I.length===0||I.length!==e.gateIds.length)))return{schemaVersion:1,kind:"story_qa_evidence",producer:"local-yolo-tdd",...e.evidenceVersion?{evidenceVersion:e.evidenceVersion}:{},storyId:t,epicId:r,...e.evidenceVersion==="p205-execution-v2"?{contract:m,command:w,manifestDigest:f,gateIds:I,resultDigest:d}:{},baseSha:n,headSha:o,bundleDigest:i,graphRevision:a,sourceEvidenceDigest:c,verdict:e.verdict,checkedAt:l,receiptRef:p}}function fr(e){if(!y(e)||e.schemaVersion!==1||e.kind!=="story_checkpoint_physical_verification"||e.producer!=="client-p205-transient-v1"||e.publicSafe!==!0||e.verdict!=="verified"&&e.verdict!=="rejected")return;const t=M(e.storyId),r=M(e.epicId),n=q(e.branch),o=S(e.baseSha),i=S(e.headSha),a=S(e.aggregateHeadSha),c=S(e.commitBodyDigest),l=S(e.changedPathsDigest),p=e.claimVerification==="canonical"||e.claimVerification==="legacy-migration"?e.claimVerification:void 0,m=S(e.effectiveClaimRevision),w=e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,f=S(e.manifestDigest),d=oe(e.gateIds).map(M).filter(h=>!!h).slice(0,64),I=S(e.resultDigest),A=S(e.graphRevision),C=S(e.executionEvidenceDigest),j=S(e.sourceEvidenceDigest),v=ie(e.verifiedAt),U=oe(e.reasonCodes).map(M).filter(h=>!!h).slice(0,16);if(!(!t||!r||!n||!o||o.length<40||!i||i.length<40||!a||a.length<40||!c||c.length!==64||!l||l.length!==64||!p||!m||m.length!==64||!w||!f||f.length!==64||!Array.isArray(e.gateIds)||d.length!==e.gateIds.length||!I||I.length!==64||!A||A.length!==64||!C||C.length!==64||!j||j.length!==64||!v||U.length===0||e.verdict==="verified"&&(d.length===0||!U.includes("checkpoint-p205-transient-verified"))))return{schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:t,epicId:r,branch:n,baseSha:o,headSha:i,aggregateHeadSha:a,commitBodyDigest:c,changedPathsDigest:l,claimVerification:p,effectiveClaimRevision:m,command:w,manifestDigest:f,gateIds:d,resultDigest:I,graphRevision:A,executionEvidenceDigest:C,sourceEvidenceDigest:j,verifiedAt:v,verdict:e.verdict,reasonCodes:U,publicSafe:!0}}function hr(e){const t=["schemaVersion","kind","producer","storyId","epicId","branch","baseSha","headSha","graphRevision","effectiveClaimRevision","sourceEvidenceDigest","verifiedAt","reasonCodes","integrationAuthorized","publicSafe"];if(!y(e)||Object.keys(e).some(f=>!t.includes(f))||e.schemaVersion!==1||e.kind!=="story_scheduling_checkpoint_evidence"||e.producer!=="client-git-physical-v1"||e.integrationAuthorized!==!1||e.publicSafe!==!0)return;const r=M(e.storyId),n=M(e.epicId),o=q(e.branch),i=S(e.baseSha),a=S(e.headSha),c=S(e.graphRevision),l=S(e.effectiveClaimRevision),p=S(e.sourceEvidenceDigest),m=ie(e.verifiedAt),w=oe(e.reasonCodes).map(M).filter(f=>!!f);if(!(!r||!n||!o||!i||i.length<40||!a||a.length<40||!c||c.length!==64||!l||l.length!==64||!p||p.length!==64||!m||!Array.isArray(e.reasonCodes)||w.length!==1||w[0]!=="checkpoint-git-scheduling-verified"))return{schemaVersion:1,kind:"story_scheduling_checkpoint_evidence",producer:"client-git-physical-v1",storyId:r,epicId:n,branch:o,baseSha:i,headSha:a,graphRevision:c,effectiveClaimRevision:l,sourceEvidenceDigest:p,verifiedAt:m,reasonCodes:w,integrationAuthorized:!1,publicSafe:!0}}function Io(e){if(!y(e)||e.schemaVersion!==1||e.kind!=="story_review_evidence"||e.producer!=="root-commit-range-review"||!["approved","changes-requested"].includes(String(e.verdict)))return;const t=M(e.storyId),r=M(e.epicId),n=S(e.baseSha),o=S(e.headSha),i=S(e.bundleDigest),a=S(e.graphRevision),c=S(e.sourceEvidenceDigest),l=Ae(e.qaReceiptRef),p=ie(e.reviewedAt),m=Ae(e.receiptRef);if(!(!t||!r||!n||!o||!i||i.length!==64||!a||a.length!==64||!c||c.length!==64||!l||!p||!m))return{schemaVersion:1,kind:"story_review_evidence",producer:"root-commit-range-review",storyId:t,epicId:r,baseSha:n,headSha:o,bundleDigest:i,graphRevision:a,sourceEvidenceDigest:c,qaReceiptRef:l,verdict:e.verdict,reviewedAt:p,receiptRef:m}}function gr(e,t){return["storyId","epicId","baseSha","headSha","bundleDigest","graphRevision"].every(r=>e[r]===t[r])}function mr(e){if(!y(e)||e.schemaVersion!==1||e.capturedFromCurrentCheckout!==!0)return;const t=q(e.originBranch),r=S(e.originHeadSha),n=q(e.executionBranch),o=ie(e.capturedAt);if(!(!t||!r||r.length<40||!n||!o||t===n))return{schemaVersion:1,originBranch:t,originHeadSha:r,executionBranch:n,capturedFromCurrentCheckout:!0,capturedAt:o}}function yr(e){if(!y(e)||e.schemaVersion!==1||e.verdict!=="passed")return;const t=S(e.executionHeadSha),r=S(e.graphRevision),n=ie(e.checkedAt),o=Ae(e.receiptRef),i=oe(e.gateIds).map(M).filter(m=>!!m).slice(0,128),a=e.evidenceVersion==="p205-execution-v2"&&e.producer==="local-yolo-tdd"&&e.contract==="P205-CI-02"&&e.command==="node scripts/test-root.mjs --gate complete",c=e.evidenceVersion===void 0&&e.producer===void 0&&e.contract===void 0&&e.command===void 0&&e.manifestDigest===void 0&&e.resultDigest===void 0,l=a?S(e.manifestDigest):void 0,p=a?S(e.resultDigest):void 0;if(!(!t||t.length<40||!r||r.length!==64||!n||!o||i.length===0||!Array.isArray(e.gateIds)||i.length!==e.gateIds.length||e.gateIds.length>128||!c&&!a||a&&(!l||l.length!==64||!p||p.length!==64)))return{schemaVersion:1,...a?{evidenceVersion:"p205-execution-v2",producer:"local-yolo-tdd",contract:"P205-CI-02",command:"node scripts/test-root.mjs --gate complete",manifestDigest:l,resultDigest:p}:{},verdict:"passed",executionHeadSha:t,graphRevision:r,checkedAt:n,receiptRef:o,gateIds:i}}function nt(e){if(!y(e)||e.schemaVersion!==1)return;const t=tt(e,["schemaVersion","kind","storyId","epicId","baseSha","headSha","originalBaseSha","originalHeadSha","gitPullRequest","preservesLaterCommits","historyRewrite","recordedAt"])??{},r=oe(e.receiptRefs).map(Ae).filter(o=>!!o).slice(0,256),n=oe(e.revertCommits).map(B).filter(o=>!!o).slice(0,256);return{...t,...r.length?{receiptRefs:r}:{},...n.length?{revertCommits:n}:{}}}function Ir(e){if(!y(e)||e.schemaVersion!==1||e.publicSafe!==!0)return;const t=M(e.epicId),r=q(e.executionBranch),n=q(e.originBranch),o=S(e.baseSha),i=S(e.executionHeadSha),a=e.mergeSha===void 0?void 0:S(e.mergeSha),c=e.pushedSha===void 0?void 0:S(e.pushedSha),l=M(e.idempotencyKey),p=ie(e.attemptStartedAt),m=e.completedAt===void 0?void 0:ie(e.completedAt),w=oe(e.localGateReceiptRefs).map(Ae).filter(A=>!!A).slice(0,256),f=oe(e.reasonCodes).map(M).filter(A=>!!A).slice(0,64),d=_o(e.candidateQa),I=Eo(e.providerGuard);if(!(!t||!r||!n||!o||!i||!l||!p||w.length===0||f.length===0||!["direct","single_pr"].includes(String(e.strategy))||!["prepared","merged","pushed","denied_external_gate","blocked_local_or_repo"].includes(String(e.physicalStatus))||typeof e.retryEligible!="boolean"||e.providerGuard!==void 0&&!I||I&&(e.strategy!=="single_pr"||e.physicalStatus!=="pushed"||I.prHeadSha!==a||I.originHeadSha!==o)))return{schemaVersion:1,epicId:t,executionBranch:r,originBranch:n,baseSha:o,executionHeadSha:i,...a?{mergeSha:a}:{},...c?{pushedSha:c}:{},strategy:e.strategy,...Se(e.prNumber)?{prNumber:Se(e.prNumber)}:{},physicalStatus:e.physicalStatus,localGateReceiptRefs:w,idempotencyKey:l,attemptStartedAt:p,...d?{candidateQa:d}:{},...I?{providerGuard:I}:{},...m?{completedAt:m}:{},retryEligible:e.retryEligible,reasonCodes:f,publicSafe:!0}}function Eo(e){if(!y(e)||e.schemaVersion!==1||e.provider!=="github"||e.publicSafe!==!0)return;const t=String(e.mode),r=String(e.source),n=t==="recovered_exact_tree"?r==="physical_recovery":t==="strict_up_to_date_expected_head"&&["branch_protection","ruleset","branch_protection_and_ruleset"].includes(r),o=S(e.prHeadSha),i=S(e.originHeadSha),a=ie(e.checkedAt);if(!(!n||!o||!i||!a))return{schemaVersion:1,provider:"github",mode:t,source:r,prHeadSha:o,originHeadSha:i,checkedAt:a,publicSafe:!0}}function _o(e){if(!y(e)||e.schemaVersion!==1||e.kind!=="epic_merge_candidate_qa"||e.contract!=="P205-CI-02"||e.command!==Hn)return;const r=Object.fromEntries(["originHeadSha","executionHeadSha","mergeSha","treeSha","graphRevision","manifestDigest","resultDigest"].map(a=>[a,S(e[a])])),n=ie(e.checkedAt),o=Ae(e.receiptRef),i=oe(e.gateIds).filter(a=>/^[a-z0-9-]+$/.test(a)).slice(0,128);if(!(Object.values(r).some(a=>!a)||!n||!o||i.length===0))return{schemaVersion:1,kind:e.kind,contract:e.contract,command:e.command,...r,checkedAt:n,receiptRef:o,gateIds:i}}function Co(e){if(!y(e))return;const t={...B(e.active_epic_id??e.activeEpicId)?{active_epic_id:B(e.active_epic_id??e.activeEpicId)}:{},...B(e.active_story_id??e.activeStoryId)?{active_story_id:B(e.active_story_id??e.activeStoryId)}:{},...B(e.active_step_id??e.activeStepId)?{active_step_id:B(e.active_step_id??e.activeStepId)}:{},...B(e.session_id??e.sessionId)?{session_id:B(e.session_id??e.sessionId)}:{},...B(e.started_at??e.startedAt)?{started_at:B(e.started_at??e.startedAt)}:{}};return Object.keys(t).length>0?t:void 0}function So(e){const t=tt(e.completionEvidence??e.completion_evidence,["prNumber","pr_number","prState","pr_state","pullRequestState","merged","mergedAt","issueNumber","issue_number","issueState","issue_state","closedAt"]),r=tt(e.issueCloseAudit??e.issue_close_audit,["schema_version","event","storyId","epicId","issueNumber","closedAt","publicSafe","rawLogStorage"]),n=tt(e.scopedCiEvidence??e.scoped_ci_evidence,["schema_version","storyId","epicId","prNumber","finalState","publicSafe","rawLogStorage"]);return{...typeof e.merged=="boolean"?{merged:e.merged}:{},...typeof e.safeToContinueYoloop=="boolean"?{safeToContinueYoloop:e.safeToContinueYoloop}:{},...typeof e.mergeBlockedRemotely=="boolean"?{mergeBlockedRemotely:e.mergeBlockedRemotely}:{},...B(e.physicalMergeStatus)?{physicalMergeStatus:B(e.physicalMergeStatus)}:{},...B(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)?{pr_state:B(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)}:{},...B(e.issue_state??e.issueState??e.workflow_issue_state)?{issue_state:B(e.issue_state??e.issueState??e.workflow_issue_state)}:{},...Se(e.issue_number??e.issueNumber)?{issue_number:Se(e.issue_number??e.issueNumber)}:{},...t?{completionEvidence:t}:{},...r?{issueCloseAudit:r}:{},...n?{scopedCiEvidence:n}:{}}}class we extends Error{reasonCode;constructor(t){super(t),this.name="StateSnapshotIntegrityError",this.reasonCode=t}}const Ao=new Set(["yolo","yoloop","finalize-epic","audit"]);function Er(e){return typeof e=="string"&&Ao.has(e)}function _r(e,t={}){const r=ne(e,".neocortex","state.json");if(!Pe(r))throw new we("git-lifecycle-state-missing");let n;try{n=JSON.parse(Te(r,"utf8"))}catch{throw new we("git-lifecycle-state-corrupt")}if(!y(n)||!y(n.epics)||!y(n.stories))throw new we("git-lifecycle-state-shape-invalid");const o=Object.values(n.epics).some(i=>y(i)&&(i.branch_mode==="epic"||q(i.execution_branch)!==void 0));if(o)try{Xe(e,{required:!0})}catch(i){const a=i instanceof Error&&/^git-lifecycle-/.test(i.message)?i.message:"git-lifecycle-runtime-invalid";if(t.allowMissingRuntime&&a==="git-lifecycle-runtime-missing")return{lifecycleDeclared:!0,runtimeMissing:!0};throw new we(a)}return{lifecycleDeclared:o,runtimeMissing:!1}}function Cr(e,t={}){const r=ne(e,".neocortex","state.json");if(!Pe(r)){if(t.epicAware&&!t.projectless)throw new we("git-lifecycle-state-missing");return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}let n;try{const f=Te(r,"utf-8"),d=JSON.parse(f),I=y(d.epics)?d.epics:{},A=Object.values(I).some(h=>y(h)&&(h.branch_mode==="epic"||q(h.execution_branch)!==void 0)),C=Xe(e,{required:!!(t.epicAware&&A&&!t.projectless)});n=Kt(d,C);const j=y(n.stories)?n.stories:{},v=y(n.epics)?n.epics:{},U=y(d.stories)?d.stories:{};for(const[h,R]of Object.entries(j)){const _=y(R)?R:void 0;if(!_?.checkpoint)continue;const V=typeof _.epic_id=="string"?_.epic_id:h.split(".")[0],N=y(v[V])?v[V]:void 0,P=q(N?.execution_branch);if(!P)continue;const $=Vn(e,_.checkpoint,h,V,P,t.p205Authorities?.[h],Xt(h,_,y(_.checkpoint)?_.checkpoint:void 0));if($.kind==="integration-authorized")_.checkpoint_verification=$.verification,delete _.scheduling_checkpoint_evidence;else if($.kind==="scheduling-only")_.scheduling_checkpoint_evidence=$.evidence,delete _.checkpoint,delete _.checkpoint_verification;else if($.kind==="rejected"){_.checkpoint_verification=$.verification,delete _.scheduling_checkpoint_evidence;const D=y(U[h])?U[h]:void 0;if(delete _.checkpoint,C.stories[h]?.checkpoint!==void 0)for(const O of["status","last_step","steps_completed"])D&&Object.prototype.hasOwnProperty.call(D,O)?_[O]=structuredClone(D[O]):delete _[O];["done","completed","merged"].includes(String(_.status).toLowerCase())&&(_.status="blocked")}}}catch(f){if(t.epicAware&&!t.projectless){const d=f instanceof Error&&/^git-lifecycle-/.test(f.message)?f.message:"git-lifecycle-state-corrupt";throw new we(d)}return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}try{const f=fo(n);f.length>0&&ho(f)}catch{}const o=n.config??n.project??{},i=n.stories??{},a={};for(const[f,d]of Object.entries(i))a[f]={id:d.id??f,title:d.title,epic_id:d.epic_id,status:d.status??"backlog",...ur(d.source)?{source:ur(d.source)}:{},steps_completed:d.steps_completed??[],last_step:d.last_step??null,branch_name:d.branch_name??null,pr_number:d.pr_number,...rt(d.branch_mode)?{branch_mode:rt(d.branch_mode)}:{},...pr(d.checkpoint)?{checkpoint:pr(d.checkpoint)}:{},...fr(d.checkpoint_verification)?{checkpoint_verification:fr(d.checkpoint_verification)}:{},...hr(d.scheduling_checkpoint_evidence)?{scheduling_checkpoint_evidence:hr(d.scheduling_checkpoint_evidence)}:{},...nt(d.review_request)?{review_request:nt(d.review_request)}:{},...nt(d.rollback_receipt)?{rollback_receipt:nt(d.rollback_receipt)}:{},...Se(d.workflow_issue)?{workflow_issue:Se(d.workflow_issue)}:{},...So(d),depends_on:dr(d.depends_on),files_to_modify:oe(d.files_to_modify),...mo(d),risk:typeof d.risk=="string"?d.risk:void 0,blast_radius:typeof d.blast_radius=="number"?d.blast_radius:void 0};const c=n.epics??{},l={};for(const[f,d]of Object.entries(c)){const I=go(d.lifecycle_classification);l[f]={id:d.id??f,title:d.title,status:d.status,stories:d.stories,total_stories:d.total_stories,completed_stories:d.completed_stories,depends_on:dr(d.depends_on),...rt(d.branch_mode)?{branch_mode:rt(d.branch_mode)}:{},...q(d.execution_branch)?{execution_branch:q(d.execution_branch)}:{},...q(d.origin_branch)?{origin_branch:q(d.origin_branch)}:{},...lr(d.branch_lease)?{branch_lease:lr(d.branch_lease)}:{},...mr(d.origin_binding)?{origin_binding:mr(d.origin_binding)}:{},...yr(d.aggregate_qa_receipt)?{aggregate_qa_receipt:yr(d.aggregate_qa_receipt)}:{},...Se(d.pr_number)?{pr_number:Se(d.pr_number)}:{},...B(d.physicalMergeStatus)?{physicalMergeStatus:B(d.physicalMergeStatus)}:{},...S(d.graph_revision)?{graph_revision:S(d.graph_revision)}:{},...Ir(d.terminal_git_receipt)?{terminal_git_receipt:Ir(d.terminal_git_receipt)}:{},...I?{lifecycle_classification:I}:{}}}const p=Co(n.current_session??n.currentSession),m=n.epic_id_ledger,w=Array.isArray(m?.reserved_ids)?[...new Set(m.reserved_ids.filter(f=>typeof f=="string"&&/^P\d+$/.test(f)))].slice(0,2048):[];return{schema_version:typeof n.schema_version=="number"?n.schema_version:void 0,config:{project_name:o.project_name??o.name??"unknown",default_branch:o.default_branch??"main",language:o.language??"pt-BR",yolo_mode:o.yolo_mode,user_name:o.user_name,worktree_base:o.worktree_base,max_parallel_stories:o.max_parallel_stories,project_id:typeof o.project_id=="string"?o.project_id:void 0},stories:a,epics:l,...w.length>0?{epic_id_ledger:{schema_version:1,reserved_ids:w}}:{},...p?{current_session:p}:{}}}async function wo(e,t,r){if(!Er(r))return{};if(cn(t,r))return{};try{const n=JSON.parse(Te(ne(e,".neocortex","state.json"),"utf8")),o=Xe(e,{required:!0}),i=Kt(n,o),a=y(i.stories)?i.stories:{},c=y(i.epics)?i.epics:{},l=Le("git",["rev-parse","HEAD"],{cwd:e,encoding:"utf8"}).trim(),p=Le("git",["symbolic-ref","--quiet","--short","HEAD"],{cwd:e,encoding:"utf8"}).trim(),m=Le("git",["rev-list","--first-parent","--reverse",l],{cwd:e,encoding:"utf8",maxBuffer:32*1024*1024}).trim().split(`
|
|
8
|
-
`).filter(Boolean),w=new Map(m.map((h,R)=>[h,R])),f=t.match(/(?:^|\s)@?docs\/stories\/([A-Za-z][A-Za-z0-9._-]*)\.story\.md(?:\s|$)/)?.[1],d=r==="yoloop"?t.match(/(?:^|[\s/@])epic-(P[1-9][0-9]*)\.md(?:\s|$)/i)?.[1]?.toUpperCase():void 0,I=new Set,A=Object.entries(a).flatMap(([h,R])=>{if(f&&h!==f)return[];const _=y(R)?R:void 0,V=y(_?.checkpoint)?_.checkpoint:void 0;if(!V)return[];const N=typeof _?.epic_id=="string"?_.epic_id:h.split(".")[0];if(d&&N!==d)return[];const P=S(V?.headSha);if(!P||P.length<40||w.get(P)===void 0)return I.add(N),[];const $=y(c[N])?c[N]:void 0;if($?.branch_mode!=="epic"||q($.execution_branch)!==p||q(V.branch)!==p)return I.add(N),[];const D=S(V.graphRevision);if(!D||D.length!==64)return I.add(N),[];const O=S(V.claimRevision),J=[...Xt(h,_,V)].sort(),ve=Fn(e,V,h,N,p,J);if(!ve&&O){if(J.length===0)return I.add(N),[];const _e=Le("git",["diff-tree","--no-commit-id","--name-only","-r","-z",P],{cwd:e,encoding:"utf8"}).split("\0").filter(Boolean);if(_e.length===0||_e.some(be=>!J.some(W=>W===be||W.endsWith("/")&&be.startsWith(W))))return I.add(N),[];const ge=Ne("sha256").update(J.join("\0")).digest("hex"),Ge=Ne("sha256").update(JSON.stringify(J)).digest("hex");if(O!==ge&&O!==Ge)return I.add(N),[]}else if(!ve)return I.add(N),[];return D?.length===64?[{storyId:h,epicId:N,graphRevision:D,checkpointHead:P,position:w.get(P)}]:[]}),C=new Set(I);for(const[h,R]of Object.entries(c)){const _=y(R)?R:void 0,V=Array.isArray(_?.stories)?_.stories.filter(D=>typeof D=="string"):Object.keys(a).filter(D=>D.startsWith(`${h}.`)),N=A.filter(D=>D.epicId===h),P=V.filter(D=>N.some(O=>O.storyId===D)),$=[...N].sort((D,O)=>D.position-O.position).map(D=>D.storyId);(JSON.stringify(P)!==JSON.stringify($)||new Set($).size!==$.length)&&C.add(h)}const j={},v=[...new Set(A.filter(h=>!C.has(h.epicId)).map(h=>h.graphRevision))],U=v.length>0?await $n(e,{headSha:l,graphRevisions:v}):new Map;for(const h of A){if(C.has(h.epicId))continue;const R=U.get(h.graphRevision);if(!R)throw new Error("p205-transient-authority-missing");j[h.storyId]=R}return j}catch(n){const o=n instanceof Error&&/^(?:p205|git-lifecycle)-[a-z0-9-]+$/.test(n.message)?n.message:"p205-transient-execution-failed";return process.stderr.write(`[Neocortex] ${o}. Checkpoint projection remains fail-closed.
|
|
9
|
-
`),
|
|
10
|
-
`),
|
|
11
|
-
`),
|
|
12
|
-
`)
|
|
13
|
-
|
|
14
|
-
`);return}if(t==="
|
|
15
|
-
|
|
16
|
-
`)
|
|
7
|
+
`)}catch{}}}function Oc(){ln=!1}function dr(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function fi(e){return e==="active"||e==="archived"||e==="rolled-back"||e==="synthetic"||e==="orphan"?e:void 0}const mi=new Set(["goal","problem","desiredOutcome","rawIntent","context","users","surfaces","constraints","assumptions","risks","nonGoals","validationExpectations","debtRefs","repositoryEvidencePaths","journeyIds","screenIds","storybookStoryIds","backendContractIds","featureBlockerIds","remediationRefs","uiScope","remediationStory","examples","contracts"]),yi=/(?:[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|(?:token|api[_-]?key|secret|password|credential|license[_-]?key)\s*[:=]\s*\S+|https?:\/\/(?:localhost|127\.0\.0\.1|10\.\d+\.\d+\.\d+|192\.168\.\d+\.\d+|172\.(?:1[6-9]|2\d|3[0-1])\.\d+\.\d+|[^\s/]*internal[^\s/]*)\S*|private\s+prompt|raw\s+vendor\s+corpus|sk-[A-Za-z0-9_-]{12,})/i;function Ii(e,t){if(!(!h(e)||e.schemaVersion!==1||e.epicId!==t||!/^P\d+$/.test(t)))try{const a=JSON.stringify(e);if(Buffer.byteLength(a)>16384||yi.test(a))return;const r=(n,o)=>{if(Object.keys(n).some(s=>!o.includes(s)))throw new Error("planning-unknown-field")};if(r(e,["schemaVersion","epicId","intake","intakeRevision","diagnosisReceipt","researchReceipt","degradeAuthorization"]),!h(e.intake)||Object.keys(e.intake).some(n=>!mi.has(n)))return;for(const[n,o]of Object.entries(e.intake))if(["examples","contracts"].includes(n)){const s=n==="examples"?["id","title","actor","given","when","then","source","coveredRequirement","expectedValidation"]:["id","kind","description","path"];if(!Array.isArray(o)||o.length>16)return;for(const p of o)if(!h(p)||(r(p,s),Object.values(p).some(g=>typeof g!="string"||g.length>256)))return}else if(Array.isArray(o)){if(o.length>32||o.some(s=>typeof s!="string"||s.length>256))return}else if(typeof o=="string"){if(o.length>512)return}else if(typeof o!="boolean"||!["uiScope","remediationStory"].includes(n))return;const i=["schemaVersion","kind","epicId","intakeRevision","artifactSummary","artifactDigest","predecessorReceiptId","accepted","receiptId"];for(const n of[e.diagnosisReceipt,e.researchReceipt])if(n!==void 0&&(!h(n)||(r(n,i),Object.values(n).some(o=>typeof o=="string"&&o.length>1024))))return;if(e.degradeAuthorization!==void 0){if(!h(e.degradeAuthorization))return;r(e.degradeAuthorization,["approved","intakeRevision","reasonCodes","assumptionCodes"]);for(const n of["reasonCodes","assumptionCodes"]){const o=e.degradeAuthorization[n];if(!Array.isArray(o)||o.length>32||o.some(s=>typeof s!="string"||s.length>128))return}}return JSON.parse(a)}catch{return}}function ur(e){return e==="create-epic"||e==="discovered"?e:void 0}function be(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Ei(e){const t={};let a=!1;for(const r of["contracts","contract_refs","shared_surfaces","adr_refs","nfr_refs","acceptance_depends_on"]){if(e[r]===void 0)continue;const i=e[r];if(!Array.isArray(i)||i.length>128||i.some(n=>Vt(n)===void 0)){a=!0;continue}t[r]=i.map(n=>Vt(n))}if(e.planning!==void 0)try{if(!h(e.planning))throw new Error("planning-shape");const r=e.planning;for(const o of["claims","semanticArtifacts"]){if(r[o]===void 0)continue;const s=r[o];if(!Array.isArray(s)||s.length>128||s.some(p=>!h(p)||Vt(p.ref)===void 0))throw new Error("planning-refs")}if(r.attempts!==void 0&&(!Array.isArray(r.attempts)||r.attempts.length>32))throw new Error("planning-attempts");for(const o of r.attempts??[]){if(!h(o)||!Array.isArray(o.reasonCodes)||o.reasonCodes.length>32||o.reasonCodes.some(s=>typeof s!="string"||!/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$/.test(s)))throw new Error("planning-attempt-reasons");if(o.discoveredClaims!==void 0&&(!Array.isArray(o.discoveredClaims)||o.discoveredClaims.length>128||o.discoveredClaims.some(s=>!h(s)||Vt(s.ref)===void 0)))throw new Error("planning-attempt-claims")}const{graphRevision:i,...n}=Ua(r);t.planning=n}catch{a=!0}return a&&(t.planning={schemaVersion:1,dependencyBasis:"unknown",claims:[],semanticArtifacts:[]}),t}function h(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Xe(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:void 0}function re(e){if(typeof e!="string")return;const t=e.trim();if(t)return t.replace(/[^a-z0-9_.:-]+/gi,"_").slice(0,120)}function X(e){if(typeof e!="string")return;const t=e.trim(),a=re(e);return a===t?a:void 0}function ye(e){if(typeof e!="string")return;const t=e.trim();if(!(!t||t.length>240)&&/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(t)&&!(t.includes("..")||t.includes("//")||t.includes("@{")||t.endsWith("/")||t.endsWith("."))&&!t.split("/").some(a=>!a||a.startsWith(".")||a.endsWith(".lock")))return t}function R(e){return typeof e=="string"&&/^[0-9a-f]{7,64}$/i.test(e)?e:void 0}function Te(e){if(!(typeof e!="string"||e.length>64)&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/.test(e))return Number.isFinite(Date.parse(e))?e:void 0}function Qe(e){if(typeof e!="string")return;const t=e.trim();if(!(!t||t.length>240||t.includes("..")))return/^[A-Za-z0-9._:/#\-[\]]+$/.test(t)?t:void 0}function Wt(e){if(!h(e))return;const t=l=>typeof l=="string"&&/^[A-Za-z0-9][A-Za-z0-9._:-]{0,95}$/.test(l),a=l=>typeof l=="string"&&/^[a-f0-9]{64}$/.test(l),r=(l,m)=>Array.isArray(l)&&l.length<=m&&l.every(t)&&new Set(l).size===l.length?l:void 0,i=(l,m)=>{if(!(!h(l)||l.schemaVersion!==2||!t(l.requestId)||!t(l.stageCommand)||!a(l.requestHash)||!a(l.inputHash)||!a(l.stateHash)||!a(l.nonce)||!a(l.stageRevision)||!a(l.stageHash)||!a(l.catalogHash)||l.targetEpicId!==void 0&&!t(l.targetEpicId)||m&&(!a(l.outputHash)||!a(l.artifactHash))))return{schemaVersion:2,...l.targetEpicId?{targetEpicId:l.targetEpicId}:{},requestId:l.requestId,requestHash:l.requestHash,inputHash:l.inputHash,stateHash:l.stateHash,nonce:l.nonce,stageCommand:l.stageCommand,stageRevision:l.stageRevision,stageHash:l.stageHash,catalogHash:l.catalogHash,...m?{outputHash:l.outputHash,artifactHash:l.artifactHash}:{}}},n=(l,m)=>{if(!(!h(l)||l.schemaVersion!=="1.1"||l.kind!==m||!a(l.receiptId)||!a(l.graphHash)||!a(l.evidenceHash)||!t(l.elementId)||!t(l.caseId)||!t(l.category)))return{schemaVersion:"1.1",kind:m,receiptId:l.receiptId,graphHash:l.graphHash,elementId:l.elementId,caseId:l.caseId,category:l.category,evidenceHash:l.evidenceHash}},o=(l,m)=>{if(!h(l)||l.kind!==m||!a(l.receiptId)||!r(l.evidenceIds,24)||m==="architecture-stage-completion"&&!["succeeded","failed"].includes(String(l.status))||m==="architecture-stage-validation"&&!["passed","failed","pending"].includes(String(l.status)))return;const u=i(l,!0);if(!u)return;const S=m==="architecture-stage-validation"?n(l.isolated,"isolated"):void 0,C=m==="architecture-stage-validation"?n(l.regression,"regression"):void 0;if(!(m==="architecture-stage-validation"&&(!S||!C)))return{...u,kind:m,receiptId:l.receiptId,status:l.status,evidenceIds:l.evidenceIds,...S&&C?{isolated:S,regression:C}:{}}},s={};e.schemaVersion===1&&(s.schemaVersion=1),e.owner==="root"&&(s.owner="root"),t(e.currentStageCommand)&&(s.currentStageCommand=e.currentStageCommand),["ask-user","delegate","resume","advance","blocked","complete"].includes(String(e.continuationState))&&(s.continuationState=e.continuationState);const p=r(e.questionIds,16);p&&(s.questionIds=p),(e.childStatus==="succeeded"||e.childStatus==="failed")&&(s.childStatus=e.childStatus),(e.evidencePolicy==="legacy-compatible"||e.evidencePolicy==="v2-required")&&(s.evidencePolicy=e.evidencePolicy),t(e.targetEpicId)&&(s.targetEpicId=e.targetEpicId),a(e.graphRevision)&&(s.graphRevision=e.graphRevision),e.graphSource==="committed-epic-v1"&&(s.graphSource=e.graphSource),h(e.pactAnswerReceipt)&&Object.keys(e.pactAnswerReceipt).sort().join(",")===["schemaVersion","targetEpicId","graphRevision","stateSha256","answersSha256","questionIds","publicSafe"].sort().join(",")&&e.pactAnswerReceipt.schemaVersion==="PactAnswerReceipt/1"&&e.pactAnswerReceipt.targetEpicId===e.targetEpicId&&e.pactAnswerReceipt.graphRevision===e.graphRevision&&a(e.pactAnswerReceipt.stateSha256)&&a(e.pactAnswerReceipt.answersSha256)&&I(e.pactAnswerReceipt.questionIds,["PACT-Q1-CONSUMER","PACT-Q2-PROVIDER","PACT-Q3-BROKER","PACT-Q4-MATCHERS","PACT-Q5-VERIFY"])&&e.pactAnswerReceipt.publicSafe===!0&&(s.pactAnswerReceipt=e.pactAnswerReceipt);const g=i(e.evidenceExpectation,!1);g&&(s.evidenceExpectation=g);const E=o(e.completionEvidence,"architecture-stage-completion"),_=o(e.validationEvidence,"architecture-stage-validation");if(E&&(s.completionEvidence=E),_&&(s.validationEvidence=_),h(e.reviewDecision)&&Object.keys(e.reviewDecision).sort().join(",")===["schemaVersion","targetEpicId","graphRevision","artifactHash","completionReceiptId","validationReceiptId","decision","evidenceIds","publicSafe"].sort().join(",")&&e.reviewDecision.schemaVersion==="ArchitectureReviewDecision/1"&&e.reviewDecision.targetEpicId===e.targetEpicId&&e.reviewDecision.graphRevision===e.graphRevision&&a(e.reviewDecision.graphRevision)&&a(e.reviewDecision.artifactHash)&&a(e.reviewDecision.completionReceiptId)&&a(e.reviewDecision.validationReceiptId)&&["approved","changes-requested"].includes(String(e.reviewDecision.decision))&&e.reviewDecision.publicSafe===!0){const l=r(e.reviewDecision.evidenceIds,24);l&&l.length>0&&(s.reviewDecision={...e.reviewDecision,evidenceIds:l})}if(Qt(e.terminalMemoryCheckpoint,e))s.terminalMemoryCheckpoint=e.terminalMemoryCheckpoint;else if(h(e.terminalMemoryCheckpoint)&&e.terminalMemoryCheckpoint.schemaVersion===void 0&&["passed","failed","pending"].includes(String(e.terminalMemoryCheckpoint.status))){const l=r(e.terminalMemoryCheckpoint.evidenceIds,24);l&&(s.terminalMemoryCheckpoint={status:e.terminalMemoryCheckpoint.status,evidenceIds:l})}if(Array.isArray(e.acceptedStages)&&e.acceptedStages.length<=15){const l=e.acceptedStages.map(m=>{if(!h(m)||!t(m.targetEpicId)||!t(m.stageCommand))return;const u=o(m.completionEvidence,"architecture-stage-completion"),S=o(m.validationEvidence,"architecture-stage-validation");return u&&S?{targetEpicId:m.targetEpicId,stageCommand:m.stageCommand,completionEvidence:u,validationEvidence:S}:void 0});l.every(m=>m!==void 0)&&(s.acceptedStages=l)}if(h(e.accounting)&&e.accounting.schemaVersion===1&&t(e.accounting.contractVersion)&&t(e.accounting.accountingId)&&typeof e.accounting.charged=="boolean"&&Number.isInteger(e.accounting.chargedQuotaUnits)&&typeof e.accounting.chargedQuotaUnits=="number"&&e.accounting.chargedQuotaUnits>=0&&e.accounting.chargedQuotaUnits<=13){const l=r(e.accounting.receiptIds,32);l&&(s.accounting={schemaVersion:1,contractVersion:e.accounting.contractVersion,accountingId:e.accounting.accountingId,charged:e.accounting.charged,chargedQuotaUnits:e.accounting.chargedQuotaUnits,receiptIds:l,...["in-progress","aborted","timed-out","failed","complete"].includes(String(e.accounting.lastOutcome))?{lastOutcome:e.accounting.lastOutcome}:{}})}return JSON.stringify(s).length<=96e3?s:void 0}function Si(e){const t=h(e.metadata.archPlan)?e.metadata.archPlan.execution:void 0,a=h(t)?t.checkpoint:void 0,r=h(t)?t:void 0,i=h(a)?a:void 0,n=e.requestExecution,o=Array.isArray(i?.acceptedStages)?i.acceptedStages:[],s=n.currentStageCommand==="arch-prd"&&n.continuationState==="delegate"&&n.completionEvidence===void 0&&n.validationEvidence===void 0&&i?.currentStageCommand==="arch-prd"&&i.continuationState==="delegate"&&o.length===0&&r?.nextAction==="delegate",p=n.currentStageCommand==="arch-prd"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-architecture"&&i.continuationState==="advance"&&o.length===1&&h(o[0])&&o[0].stageCommand==="arch-prd"&&I(o[0].completionEvidence,n.completionEvidence)&&I(o[0].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",g=n.currentStageCommand==="arch-architecture"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-architecture"&&i.continuationState==="delegate"&&o.length===1&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",E=n.currentStageCommand==="arch-architecture"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-fitness-functions"&&i.continuationState==="advance"&&o.length===2&&h(o[0])&&h(o[1])&&o[0].stageCommand==="arch-prd"&&o[1].stageCommand==="arch-architecture"&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===1&&I(o[0],n.acceptedStages[0])&&I(o[1].completionEvidence,n.completionEvidence)&&I(o[1].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",_=n.currentStageCommand==="arch-fitness-functions"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-fitness-functions"&&i.continuationState==="delegate"&&o.length===2&&h(o[0])&&h(o[1])&&o[0].stageCommand==="arch-prd"&&o[1].stageCommand==="arch-architecture"&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",l=n.currentStageCommand==="arch-fitness-functions"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-api-contracts"&&i.continuationState==="advance"&&o.length===3&&h(o[0])&&h(o[1])&&h(o[2])&&o[0].stageCommand==="arch-prd"&&o[1].stageCommand==="arch-architecture"&&o[2].stageCommand==="arch-fitness-functions"&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===2&&I(o.slice(0,2),n.acceptedStages)&&I(o[2].completionEvidence,n.completionEvidence)&&I(o[2].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",m=n.currentStageCommand==="arch-api-contracts"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-api-contracts"&&i.continuationState==="delegate"&&o.length===3&&h(o[0])&&h(o[1])&&h(o[2])&&o[0].stageCommand==="arch-prd"&&o[1].stageCommand==="arch-architecture"&&o[2].stageCommand==="arch-fitness-functions"&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",u=["PACT-Q1-CONSUMER","PACT-Q2-PROVIDER","PACT-Q3-BROKER","PACT-Q4-MATCHERS","PACT-Q5-VERIFY"],S=n.currentStageCommand==="arch-api-contracts"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="generate-pacts"&&i.continuationState==="ask-user"&&o.length===4&&h(o[3])&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===3&&I(o.slice(0,3),n.acceptedStages)&&o[3].stageCommand==="arch-api-contracts"&&I(o[3].completionEvidence,n.completionEvidence)&&I(o[3].validationEvidence,n.validationEvidence)&&I(i.questionIds,u)&&I(r?.questionIds,u)&&r?.nextAction==="ask-user",C=n.currentStageCommand==="generate-pacts"&&n.continuationState==="ask-user"&&i?.currentStageCommand==="generate-pacts"&&i.continuationState==="delegate"&&o.length===4&&I(o,n.acceptedStages)&&I(n.questionIds,u)&&I(i.questionIds,[])&&I(i.pactAnswerReceipt,e.answerReceipt)&&I(r?.pactAnswerReceipt,e.answerReceipt)&&e.answerReceipt?.stateSha256===e.sourceStateSha256&&r?.nextAction==="resume",L=n.currentStageCommand==="generate-pacts"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&I(n.pactAnswerReceipt,e.pactRecordedReceipt)&&i?.currentStageCommand==="arch-api-integrations"&&i.continuationState==="advance"&&o.length===5&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===4&&I(o.slice(0,4),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts"&&h(o[4])&&I(o[4].completionEvidence,n.completionEvidence)&&I(o[4].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",b=n.currentStageCommand==="arch-api-integrations"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-api-integrations"&&i.continuationState==="delegate"&&o.length===5&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",Y=n.currentStageCommand==="arch-api-integrations"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-database"&&i.continuationState==="advance"&&o.length===6&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===5&&I(o.slice(0,5),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations"&&h(o[5])&&I(o[5].completionEvidence,n.completionEvidence)&&I(o[5].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",w=n.currentStageCommand==="arch-database"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-database"&&i.continuationState==="delegate"&&o.length===6&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",v=n.currentStageCommand==="arch-database"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-security"&&i.continuationState==="advance"&&o.length===7&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===6&&I(o.slice(0,6),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database"&&h(o[6])&&I(o[6].completionEvidence,n.completionEvidence)&&I(o[6].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",O=n.currentStageCommand==="arch-security"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-security"&&i.continuationState==="delegate"&&o.length===7&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",k=n.currentStageCommand==="arch-security"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-design-system"&&i.continuationState==="advance"&&o.length===8&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===7&&I(o.slice(0,7),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security"&&h(o[7])&&I(o[7].completionEvidence,n.completionEvidence)&&I(o[7].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",D=n.currentStageCommand==="arch-design-system"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-design-system"&&i.continuationState==="delegate"&&o.length===8&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",F=n.currentStageCommand==="arch-design-system"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-ux-design"&&i.continuationState==="advance"&&o.length===9&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===8&&I(o.slice(0,8),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security,arch-design-system"&&h(o[8])&&I(o[8].completionEvidence,n.completionEvidence)&&I(o[8].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",$=n.currentStageCommand==="arch-ux-design"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-ux-design"&&i.continuationState==="delegate"&&o.length===9&&I(o,n.acceptedStages)&&r?.nextAction==="blocked",j=n.currentStageCommand==="arch-ux-design"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-performance"&&i.continuationState==="advance"&&o.length===10&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===9&&I(o.slice(0,9),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security,arch-design-system,arch-ux-design"&&h(o[9])&&I(o[9].completionEvidence,n.completionEvidence)&&I(o[9].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",B=n.currentStageCommand==="arch-performance"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-performance"&&i.continuationState==="delegate"&&o.length===10&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",me=n.currentStageCommand==="arch-performance"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-testing"&&i.continuationState==="advance"&&o.length===11&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===10&&I(o.slice(0,10),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security,arch-design-system,arch-ux-design,arch-performance"&&h(o[10])&&I(o[10].completionEvidence,n.completionEvidence)&&I(o[10].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",ae=n.currentStageCommand==="arch-testing"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-testing"&&i.continuationState==="delegate"&&o.length===11&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",N=n.currentStageCommand==="arch-testing"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-infrastructure"&&i.continuationState==="advance"&&o.length===12&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===11&&I(o.slice(0,11),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security,arch-design-system,arch-ux-design,arch-performance,arch-testing"&&h(o[11])&&I(o[11].completionEvidence,n.completionEvidence)&&I(o[11].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",G=n.currentStageCommand==="arch-infrastructure"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-infrastructure"&&i.continuationState==="delegate"&&o.length===12&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",ze=n.currentStageCommand==="arch-infrastructure"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="arch-review"&&i.continuationState==="advance"&&o.length===13&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===12&&I(o.slice(0,12),n.acceptedStages)&&o.map(P=>h(P)?P.stageCommand:null).join(",")==="arch-prd,arch-architecture,arch-fitness-functions,arch-api-contracts,generate-pacts,arch-api-integrations,arch-database,arch-security,arch-design-system,arch-ux-design,arch-performance,arch-testing,arch-infrastructure"&&h(o[12])&&I(o[12].completionEvidence,n.completionEvidence)&&I(o[12].validationEvidence,n.validationEvidence)&&r?.nextAction==="resume",$e=n.currentStageCommand==="arch-review"&&n.continuationState==="advance"&&i?.currentStageCommand==="arch-review"&&i.continuationState==="delegate"&&o.length===13&&I(o,n.acceptedStages)&&r?.nextAction==="delegate",ke=n.currentStageCommand==="arch-review"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&n.reviewDecision===void 0&&i?.currentStageCommand==="arch-review"&&i.continuationState==="ask-user"&&o.length===13&&I(o,n.acceptedStages)&&I(i.questionIds,["ARCH-REVIEW-A09-APPROVAL"])&&I(i.completionEvidence,n.completionEvidence)&&I(i.validationEvidence,n.validationEvidence)&&r?.nextAction==="ask-user",st=n.currentStageCommand==="arch-review"&&n.continuationState==="ask-user"&&n.childStatus==="succeeded"&&h(n.reviewDecision)&&n.reviewDecision.decision==="approved"&&I(n.questionIds,["ARCH-REVIEW-A09-APPROVAL"])&&i?.currentStageCommand==="update-memory"&&i.continuationState==="advance"&&o.length===14&&Array.isArray(n.acceptedStages)&&n.acceptedStages.length===13&&I(o.slice(0,13),n.acceptedStages)&&h(o[13])&&o[13].stageCommand==="arch-review"&&I(o[13].completionEvidence,n.completionEvidence)&&I(o[13].validationEvidence,n.validationEvidence)&&I(i.reviewDecision,n.reviewDecision)&&r?.nextAction==="resume",Fe=n.currentStageCommand==="update-memory"&&n.continuationState==="advance"&&h(n.reviewDecision)&&n.reviewDecision.decision==="approved"&&i?.currentStageCommand==="update-memory"&&i.continuationState==="delegate"&&o.length===14&&I(o,n.acceptedStages)&&I(i.reviewDecision,n.reviewDecision)&&r?.nextAction==="delegate",Q=n.currentStageCommand==="update-memory"&&n.continuationState==="delegate"&&n.childStatus==="succeeded"&&i?.currentStageCommand==="update-memory"&&i.continuationState==="complete"&&o.length===14&&I(o,n.acceptedStages)&&I(i.reviewDecision,n.reviewDecision)&&I(i.completionEvidence,n.completionEvidence)&&I(i.validationEvidence,n.validationEvidence)&&Qt(i.terminalMemoryCheckpoint,n)!==null&&I(i.terminalMemoryCheckpoint,n.terminalMemoryCheckpoint)&&r?.nextAction==="complete";if(e.metadata.mode!=="arch-plan"||e.metadata.resolvedTrigger!=="arch-plan"||!h(t)||!h(a)||t.owner!=="root"||t.currentStageCommand!==a.currentStageCommand||t.continuationState!==a.continuationState||a.owner!=="root"||a.evidencePolicy!=="v2-required"||a.targetEpicId!==n.targetEpicId||a.graphRevision!==n.graphRevision||a.graphSource!==n.graphSource||!/^P[1-9][0-9]{0,11}$/.test(String(a.targetEpicId))||!/^[a-f0-9]{64}$/.test(String(a.graphRevision))||!Array.isArray(a.acceptedStages)||!(s||p||g||E||_||l||m||S||C||L||b||Y||w||v||O||k||D||F||$||j||B||me||ae||N||G||ze||$e||ke||st||Fe||Q)||!h(a.accounting)||a.accounting.charged!==!0||!I(Wt(a),a))throw new Error("architecture-root-checkpoint-invalid");const de=K(e.projectRoot,".neocortex"),ie=K(de,"state.json"),tt=K(de,"state.json.architecture.lock"),De=_t(tt,"wx",384);let je;try{const P=ht(ie);if(!P.isFile()||P.isSymbolicLink())throw new Error("architecture-root-state-binding-invalid");const oe=Re(ie,"utf8");if(Be("sha256").update(oe).digest("hex")!==e.sourceStateSha256)throw new Error("architecture-root-state-conflict");const J=JSON.parse(oe),Ce=h(J)&&h(J.archPlan)?J.archPlan:{};if(!h(J)||!h(J.epics)||!Object.hasOwn(J.epics,a.targetEpicId)||(e.initialBinding?Ce.execution!==void 0||n.graphSource!=="committed-epic-v1":!I(Wt(Ce.execution),n))||h(J.scope)&&J.scope.kind==="projected")throw new Error("architecture-root-state-binding-invalid");if(n.graphSource==="committed-epic-v1"&&n.graphRevision!==vt(e.projectRoot,String(n.targetEpicId)))throw new Error("architecture-root-epic-binding-invalid");const ce=Lt(),z=Le("git",["rev-parse","--git-common-dir"],{cwd:e.projectRoot,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim(),St=zr(z)?On(z):On(e.projectRoot,z);if(Jr(St)!==St)throw new Error("architecture-root-backup-dir-invalid");const x=K(St,"neocortex-architecture");Ct(x,{recursive:!0,mode:448});const qe=ht(x);if(!qe.isDirectory()||qe.isSymbolicLink()||qe.uid!==process.getuid?.()||(qe.mode&63)!==0)throw new Error("architecture-root-backup-dir-invalid");const f=K(x,`state-backup-${ce}.json`),dt=_t(f,"wx",384);try{Dt(dt,oe),jt(dt)}finally{wt(dt)}const se=_t(x,"r");try{jt(se)}finally{wt(se)}const xt={...J,archPlan:{...Ce,execution:a}};je=K(de,`state.json.architecture-tmp-${ce}`);const nt=_t(je,"wx",384);try{Dt(nt,`${JSON.stringify(xt,null,2)}
|
|
8
|
+
`),jt(nt)}finally{wt(nt)}if(Q&&!I(n.terminalMemoryCheckpoint,kn(e.projectRoot,n)))throw new Error("architecture-root-state-conflict");if(n.graphSource==="committed-epic-v1"&&n.graphRevision!==vt(e.projectRoot,String(n.targetEpicId)))throw new Error("architecture-root-epic-binding-invalid");Pn(je,ie),je=void 0;const c=_t(de,"r");try{jt(c)}finally{wt(c)}}finally{if(je)try{Zt(je)}catch{}wt(De),Zt(tt)}}function Gt(e,t){if(!h(e))return;const a={};for(const r of t){const i=e[r];if(typeof i=="boolean")a[r]=i;else if(typeof i=="number"&&Number.isFinite(i))a[r]=i;else if(typeof i=="string"){const n=re(i);n&&(a[r]=n)}}return Object.keys(a).length>0?a:void 0}function Ft(e){return e==="epic"||e==="story"?e:void 0}function pr(e){if(!h(e)||e.schemaVersion!==1)return;const t=X(e.ownerStoryId),a=X(e.sessionId),r=X(e.idempotencyKey),i=Te(e.acquiredAt),n=Te(e.expiresAt);if(!(!t||!a||!r||!i||!n||Date.parse(n)<=Date.parse(i)))return{schemaVersion:1,ownerStoryId:t,sessionId:a,idempotencyKey:r,acquiredAt:i,expiresAt:n}}function lr(e){if(!h(e)||e.schemaVersion!==1)return;const t=X(e.storyId),a=X(e.epicId),r=ye(e.branch),i=R(e.baseSha),n=R(e.headSha),o=X(e.idempotencyKey),s=Te(e.recordedAt),p=be(e.commits).map(R).filter(L=>!!L).slice(0,256),g=be(e.receiptRefs).map(Qe).filter(L=>!!L).slice(0,256),E=e.dispatchId===void 0?void 0:X(e.dispatchId),_=e.bundleId===void 0?void 0:X(e.bundleId),l=e.bundleDigest===void 0?void 0:R(e.bundleDigest),m=e.graphRevision===void 0?void 0:R(e.graphRevision),u=e.claimRevision===void 0?void 0:X(e.claimRevision),S=vi(e.qaReceipt),C=Ci(e.reviewReceipt);if(!(!t||!a||!t.startsWith(`${a}.`)||!r||!i||!n||i===n||!o||!s||p.length===0||g.length===0||!Array.isArray(e.commits)||p.length!==e.commits.length||e.commits.length>256||!Array.isArray(e.receiptRefs)||g.length!==e.receiptRefs.length||e.receiptRefs.length>256||e.dispatchId!==void 0&&!E||e.bundleId!==void 0&&!_||e.bundleDigest!==void 0&&(!l||l.length!==64)||e.graphRevision!==void 0&&(!m||m.length!==64)||e.claimRevision!==void 0&&!u||e.qaVerdict!=="passed"&&e.qaVerdict!=="blocked"||!["approved","changes-requested","pending"].includes(String(e.reviewVerdict))||!S||e.reviewVerdict!=="pending"&&!C||e.reviewVerdict==="pending"&&C||S.verdict!==e.qaVerdict||C&&C.verdict!==e.reviewVerdict||!fr(S,{storyId:t,epicId:a,baseSha:i,headSha:n,bundleDigest:l,graphRevision:m})||C&&(!fr(C,{storyId:t,epicId:a,baseSha:i,headSha:n,bundleDigest:l,graphRevision:m})||C.qaReceiptRef!==S?.receiptRef||C.receiptRef===S?.receiptRef)||!g.includes(String(S.receiptRef))||C&&(!g.includes(String(C.receiptRef))||Date.parse(String(C.reviewedAt))<Date.parse(String(S.checkedAt)))))return{schemaVersion:1,storyId:t,epicId:a,branch:r,baseSha:i,headSha:n,idempotencyKey:o,...E?{dispatchId:E}:{},..._?{bundleId:_}:{},...l?{bundleDigest:l}:{},...m?{graphRevision:m}:{},...u?{claimRevision:u}:{},qaVerdict:e.qaVerdict,reviewVerdict:e.reviewVerdict,...S?{qaReceipt:S}:{},...C?{reviewReceipt:C}:{},recordedAt:s,commits:p,receiptRefs:g}}function vi(e){if(!h(e)||e.schemaVersion!==1||e.kind!=="story_qa_evidence"||e.producer!=="local-yolo-tdd"||e.evidenceVersion!==void 0&&e.evidenceVersion!=="git-immutable-v1"&&e.evidenceVersion!=="p205-execution-v2"||!["passed","blocked"].includes(String(e.verdict)))return;const t=X(e.storyId),a=X(e.epicId),r=R(e.baseSha),i=R(e.headSha),n=R(e.bundleDigest),o=R(e.graphRevision),s=R(e.sourceEvidenceDigest),p=Te(e.checkedAt),g=Qe(e.receiptRef),E=e.evidenceVersion==="p205-execution-v2"&&e.contract==="P205-CI-02"?e.contract:void 0,_=e.evidenceVersion==="p205-execution-v2"&&e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,l=e.evidenceVersion==="p205-execution-v2"?R(e.manifestDigest):void 0,m=e.evidenceVersion==="p205-execution-v2"?R(e.resultDigest):void 0,u=e.evidenceVersion==="p205-execution-v2"?be(e.gateIds).map(X).filter(S=>!!S).slice(0,64):void 0;if(!(!t||!a||!r||!i||!n||n.length!==64||!o||o.length!==64||!s||s.length!==64||!p||!g||e.evidenceVersion==="p205-execution-v2"&&(!E||_!=="node scripts/test-root.mjs --gate complete"||!l||l.length!==64||!m||m.length!==64||!Array.isArray(e.gateIds)||!u||u.length===0||u.length!==e.gateIds.length)))return{schemaVersion:1,kind:"story_qa_evidence",producer:"local-yolo-tdd",...e.evidenceVersion?{evidenceVersion:e.evidenceVersion}:{},storyId:t,epicId:a,...e.evidenceVersion==="p205-execution-v2"?{contract:E,command:_,manifestDigest:l,gateIds:u,resultDigest:m}:{},baseSha:r,headSha:i,bundleDigest:n,graphRevision:o,sourceEvidenceDigest:s,verdict:e.verdict,checkedAt:p,receiptRef:g}}function hr(e){if(!h(e)||e.schemaVersion!==1||e.kind!=="story_checkpoint_physical_verification"||e.producer!=="client-p205-transient-v1"||e.publicSafe!==!0||e.verdict!=="verified"&&e.verdict!=="rejected")return;const t=X(e.storyId),a=X(e.epicId),r=ye(e.branch),i=R(e.baseSha),n=R(e.headSha),o=R(e.aggregateHeadSha),s=R(e.commitBodyDigest),p=R(e.changedPathsDigest),g=e.claimVerification==="canonical"||e.claimVerification==="legacy-migration"?e.claimVerification:void 0,E=R(e.effectiveClaimRevision),_=e.command==="node scripts/test-root.mjs --gate complete"?e.command:void 0,l=R(e.manifestDigest),m=be(e.gateIds).map(X).filter(w=>!!w).slice(0,64),u=R(e.resultDigest),S=R(e.graphRevision),C=R(e.executionEvidenceDigest),L=R(e.sourceEvidenceDigest),b=Te(e.verifiedAt),Y=be(e.reasonCodes).map(X).filter(w=>!!w).slice(0,16);if(!(!t||!a||!r||!i||i.length<40||!n||n.length<40||!o||o.length<40||!s||s.length!==64||!p||p.length!==64||!g||!E||E.length!==64||!_||!l||l.length!==64||!Array.isArray(e.gateIds)||m.length!==e.gateIds.length||!u||u.length!==64||!S||S.length!==64||!C||C.length!==64||!L||L.length!==64||!b||Y.length===0||e.verdict==="verified"&&(m.length===0||!Y.includes("checkpoint-p205-transient-verified"))))return{schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:t,epicId:a,branch:r,baseSha:i,headSha:n,aggregateHeadSha:o,commitBodyDigest:s,changedPathsDigest:p,claimVerification:g,effectiveClaimRevision:E,command:_,manifestDigest:l,gateIds:m,resultDigest:u,graphRevision:S,executionEvidenceDigest:C,sourceEvidenceDigest:L,verifiedAt:b,verdict:e.verdict,reasonCodes:Y,publicSafe:!0}}function gr(e){const t=["schemaVersion","kind","producer","storyId","epicId","branch","baseSha","headSha","graphRevision","effectiveClaimRevision","sourceEvidenceDigest","verifiedAt","reasonCodes","integrationAuthorized","publicSafe"];if(!h(e)||Object.keys(e).some(l=>!t.includes(l))||e.schemaVersion!==1||e.kind!=="story_scheduling_checkpoint_evidence"||e.producer!=="client-git-physical-v1"||e.integrationAuthorized!==!1||e.publicSafe!==!0)return;const a=X(e.storyId),r=X(e.epicId),i=ye(e.branch),n=R(e.baseSha),o=R(e.headSha),s=R(e.graphRevision),p=R(e.effectiveClaimRevision),g=R(e.sourceEvidenceDigest),E=Te(e.verifiedAt),_=be(e.reasonCodes).map(X).filter(l=>!!l);if(!(!a||!r||!i||!n||n.length<40||!o||o.length<40||!s||s.length!==64||!p||p.length!==64||!g||g.length!==64||!E||!Array.isArray(e.reasonCodes)||_.length!==1||_[0]!=="checkpoint-git-scheduling-verified"))return{schemaVersion:1,kind:"story_scheduling_checkpoint_evidence",producer:"client-git-physical-v1",storyId:a,epicId:r,branch:i,baseSha:n,headSha:o,graphRevision:s,effectiveClaimRevision:p,sourceEvidenceDigest:g,verifiedAt:E,reasonCodes:_,integrationAuthorized:!1,publicSafe:!0}}function Ci(e){if(!h(e)||e.schemaVersion!==1||e.kind!=="story_review_evidence"||e.producer!=="root-commit-range-review"||!["approved","changes-requested"].includes(String(e.verdict)))return;const t=X(e.storyId),a=X(e.epicId),r=R(e.baseSha),i=R(e.headSha),n=R(e.bundleDigest),o=R(e.graphRevision),s=R(e.sourceEvidenceDigest),p=Qe(e.qaReceiptRef),g=Te(e.reviewedAt),E=Qe(e.receiptRef);if(!(!t||!a||!r||!i||!n||n.length!==64||!o||o.length!==64||!s||s.length!==64||!p||!g||!E))return{schemaVersion:1,kind:"story_review_evidence",producer:"root-commit-range-review",storyId:t,epicId:a,baseSha:r,headSha:i,bundleDigest:n,graphRevision:o,sourceEvidenceDigest:s,qaReceiptRef:p,verdict:e.verdict,reviewedAt:g,receiptRef:E}}function fr(e,t){return["storyId","epicId","baseSha","headSha","bundleDigest","graphRevision"].every(a=>e[a]===t[a])}function mr(e){if(!h(e)||e.schemaVersion!==1||e.capturedFromCurrentCheckout!==!0)return;const t=ye(e.originBranch),a=R(e.originHeadSha),r=ye(e.executionBranch),i=Te(e.capturedAt);if(!(!t||!a||a.length<40||!r||!i||t===r))return{schemaVersion:1,originBranch:t,originHeadSha:a,executionBranch:r,capturedFromCurrentCheckout:!0,capturedAt:i}}function yr(e){if(!h(e)||e.schemaVersion!==1||e.verdict!=="passed")return;const t=R(e.executionHeadSha),a=R(e.graphRevision),r=Te(e.checkedAt),i=Qe(e.receiptRef),n=be(e.gateIds).map(X).filter(E=>!!E).slice(0,128),o=e.evidenceVersion==="p205-execution-v2"&&e.producer==="local-yolo-tdd"&&e.contract==="P205-CI-02"&&e.command==="node scripts/test-root.mjs --gate complete",s=e.evidenceVersion===void 0&&e.producer===void 0&&e.contract===void 0&&e.command===void 0&&e.manifestDigest===void 0&&e.resultDigest===void 0,p=o?R(e.manifestDigest):void 0,g=o?R(e.resultDigest):void 0;if(!(!t||t.length<40||!a||a.length!==64||!r||!i||n.length===0||!Array.isArray(e.gateIds)||n.length!==e.gateIds.length||e.gateIds.length>128||!s&&!o||o&&(!p||p.length!==64||!g||g.length!==64)))return{schemaVersion:1,...o?{evidenceVersion:"p205-execution-v2",producer:"local-yolo-tdd",contract:"P205-CI-02",command:"node scripts/test-root.mjs --gate complete",manifestDigest:p,resultDigest:g}:{},verdict:"passed",executionHeadSha:t,graphRevision:a,checkedAt:r,receiptRef:i,gateIds:n}}function hn(e){if(!h(e)||e.schemaVersion!==1)return;const t=Gt(e,["schemaVersion","kind","storyId","epicId","baseSha","headSha","originalBaseSha","originalHeadSha","gitPullRequest","preservesLaterCommits","historyRewrite","recordedAt"])??{},a=be(e.receiptRefs).map(Qe).filter(i=>!!i).slice(0,256),r=be(e.revertCommits).map(re).filter(i=>!!i).slice(0,256);return{...t,...a.length?{receiptRefs:a}:{},...r.length?{revertCommits:r}:{}}}function _i(e){if(!(!h(e)||Object.keys(e).sort().join(",")!=="gitPullRequest,headSha,kind,prNumber,reviewEvidenceDigest,schemaVersion"||e.schemaVersion!==1||e.kind!=="git-pull-request"||e.gitPullRequest!==!0||!Number.isSafeInteger(e.prNumber)||Number(e.prNumber)<=0||typeof e.headSha!="string"||!/^[a-f0-9]{40}$/.test(e.headSha)||typeof e.reviewEvidenceDigest!="string"||!/^[a-f0-9]{64}$/.test(e.reviewEvidenceDigest)))return{schemaVersion:1,kind:"git-pull-request",gitPullRequest:!0,prNumber:e.prNumber,headSha:e.headSha,reviewEvidenceDigest:e.reviewEvidenceDigest}}function Ir(e){if(!h(e)||e.schemaVersion!==1||e.publicSafe!==!0)return;const t=X(e.epicId),a=ye(e.executionBranch),r=ye(e.originBranch),i=R(e.baseSha),n=R(e.executionHeadSha),o=e.mergeSha===void 0?void 0:R(e.mergeSha),s=e.pushedSha===void 0?void 0:R(e.pushedSha),p=X(e.idempotencyKey),g=Te(e.attemptStartedAt),E=e.completedAt===void 0?void 0:Te(e.completedAt),_=be(e.localGateReceiptRefs).map(Qe).filter(S=>!!S).slice(0,256),l=be(e.reasonCodes).map(X).filter(S=>!!S).slice(0,64),m=Ai(e.candidateQa),u=wi(e.providerGuard);if(!(!t||!a||!r||!i||!n||!p||!g||_.length===0||l.length===0||!["direct","single_pr"].includes(String(e.strategy))||!["prepared","merged","pushed","denied_external_gate","blocked_local_or_repo"].includes(String(e.physicalStatus))||typeof e.retryEligible!="boolean"||e.providerGuard!==void 0&&!u||u&&(e.strategy!=="single_pr"||e.physicalStatus!=="pushed"||u.prHeadSha!==o||u.originHeadSha!==i)))return{schemaVersion:1,epicId:t,executionBranch:a,originBranch:r,baseSha:i,executionHeadSha:n,...o?{mergeSha:o}:{},...s?{pushedSha:s}:{},strategy:e.strategy,...Xe(e.prNumber)?{prNumber:Xe(e.prNumber)}:{},physicalStatus:e.physicalStatus,localGateReceiptRefs:_,idempotencyKey:p,attemptStartedAt:g,...m?{candidateQa:m}:{},...u?{providerGuard:u}:{},...E?{completedAt:E}:{},retryEligible:e.retryEligible,reasonCodes:l,publicSafe:!0}}function wi(e){if(!h(e)||e.schemaVersion!==1||e.provider!=="github"||e.publicSafe!==!0)return;const t=String(e.mode),a=String(e.source),r=t==="recovered_exact_tree"?a==="physical_recovery":t==="strict_up_to_date_expected_head"&&["branch_protection","ruleset","branch_protection_and_ruleset"].includes(a),i=R(e.prHeadSha),n=R(e.originHeadSha),o=Te(e.checkedAt);if(!(!r||!i||!n||!o))return{schemaVersion:1,provider:"github",mode:t,source:a,prHeadSha:i,originHeadSha:n,checkedAt:o,publicSafe:!0}}function Ai(e){if(!h(e)||e.schemaVersion!==1||e.kind!=="epic_merge_candidate_qa"||e.contract!=="P205-CI-02"||e.command!==Ga)return;const a=Object.fromEntries(["originHeadSha","executionHeadSha","mergeSha","treeSha","graphRevision","manifestDigest","resultDigest"].map(o=>[o,R(e[o])])),r=Te(e.checkedAt),i=Qe(e.receiptRef),n=be(e.gateIds).filter(o=>/^[a-z0-9-]+$/.test(o)).slice(0,128);if(!(Object.values(a).some(o=>!o)||!r||!i||n.length===0))return{schemaVersion:1,kind:e.kind,contract:e.contract,command:e.command,...a,checkedAt:r,receiptRef:i,gateIds:n}}function Ri(e){if(!h(e))return;const t={...re(e.active_epic_id??e.activeEpicId)?{active_epic_id:re(e.active_epic_id??e.activeEpicId)}:{},...re(e.active_story_id??e.activeStoryId)?{active_story_id:re(e.active_story_id??e.activeStoryId)}:{},...re(e.active_step_id??e.activeStepId)?{active_step_id:re(e.active_step_id??e.activeStepId)}:{},...re(e.session_id??e.sessionId)?{session_id:re(e.session_id??e.sessionId)}:{},...re(e.started_at??e.startedAt)?{started_at:re(e.started_at??e.startedAt)}:{}};return Object.keys(t).length>0?t:void 0}function bi(e){const t=Gt(e.completionEvidence??e.completion_evidence,["prNumber","pr_number","prState","pr_state","pullRequestState","merged","mergedAt","issueNumber","issue_number","issueState","issue_state","closedAt"]),a=Gt(e.issueCloseAudit??e.issue_close_audit,["schema_version","event","storyId","epicId","issueNumber","closedAt","publicSafe","rawLogStorage"]),r=Gt(e.scopedCiEvidence??e.scoped_ci_evidence,["schema_version","storyId","epicId","prNumber","finalState","publicSafe","rawLogStorage"]);return{...typeof e.merged=="boolean"?{merged:e.merged}:{},...typeof e.safeToContinueYoloop=="boolean"?{safeToContinueYoloop:e.safeToContinueYoloop}:{},...typeof e.mergeBlockedRemotely=="boolean"?{mergeBlockedRemotely:e.mergeBlockedRemotely}:{},...re(e.physicalMergeStatus)?{physicalMergeStatus:re(e.physicalMergeStatus)}:{},...re(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)?{pr_state:re(e.pr_state??e.prState??e.pull_request_state??e.pullRequestState)}:{},...re(e.issue_state??e.issueState??e.workflow_issue_state)?{issue_state:re(e.issue_state??e.issueState??e.workflow_issue_state)}:{},...Xe(e.issue_number??e.issueNumber)?{issue_number:Xe(e.issue_number??e.issueNumber)}:{},...t?{completionEvidence:t}:{},...a?{issueCloseAudit:a}:{},...r?{scopedCiEvidence:r}:{}}}class Ze extends Error{reasonCode;constructor(t){super(t),this.name="StateSnapshotIntegrityError",this.reasonCode=t}}const Ti=new Set(["yolo","yoloop","finalize-epic","audit"]);function Er(e){return typeof e=="string"&&Ti.has(e)}function Sr(e,t={}){const a=K(e,".neocortex","state.json");if(!lt(a))throw new Ze("git-lifecycle-state-missing");let r;try{r=JSON.parse(Re(a,"utf8"))}catch{throw new Ze("git-lifecycle-state-corrupt")}if(!h(r)||!h(r.epics)||!h(r.stories))throw new Ze("git-lifecycle-state-shape-invalid");const i=Object.values(r.epics).some(n=>h(n)&&(n.branch_mode==="epic"||ye(n.execution_branch)!==void 0));if(i)try{Ut(e,{required:!0})}catch(n){const o=n instanceof Error&&/^git-lifecycle-/.test(n.message)?n.message:"git-lifecycle-runtime-invalid";if(t.allowMissingRuntime&&o==="git-lifecycle-runtime-missing")return{lifecycleDeclared:!0,runtimeMissing:!0};throw new Ze(o)}return{lifecycleDeclared:i,runtimeMissing:!1}}function vr(e,t={}){const a=K(e,".neocortex","state.json");if(!lt(a)){if(t.epicAware&&!t.projectless)throw new Ze("git-lifecycle-state-missing");return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}let r;try{const m=Re(a,"utf-8"),u=JSON.parse(m),S=h(u.epics)?u.epics:{},C=Object.values(S).some(v=>h(v)&&(v.branch_mode==="epic"||ye(v.execution_branch)!==void 0)),L=Ut(e,{required:!!(t.epicAware&&C&&!t.projectless)});r=Kn(u,L);const b=h(r.stories)?r.stories:{},Y=h(r.epics)?r.epics:{},w=h(u.stories)?u.stories:{};for(const[v,O]of Object.entries(b)){const k=h(O)?O:void 0;if(!k?.checkpoint)continue;const D=typeof k.epic_id=="string"?k.epic_id:v.split(".")[0],F=h(Y[D])?Y[D]:void 0,$=ye(F?.execution_branch);if(!$)continue;const j=$a(e,k.checkpoint,v,D,$,t.p205Authorities?.[v],Xn(v,k,h(k.checkpoint)?k.checkpoint:void 0));if(j.kind==="integration-authorized")k.checkpoint_verification=j.verification,delete k.scheduling_checkpoint_evidence;else if(j.kind==="scheduling-only")k.scheduling_checkpoint_evidence=j.evidence,delete k.checkpoint,delete k.checkpoint_verification;else if(j.kind==="rejected"){k.checkpoint_verification=j.verification,delete k.scheduling_checkpoint_evidence;const B=h(w[v])?w[v]:void 0;if(delete k.checkpoint,L.stories[v]?.checkpoint!==void 0)for(const me of["status","last_step","steps_completed"])B&&Object.prototype.hasOwnProperty.call(B,me)?k[me]=structuredClone(B[me]):delete k[me];["done","completed","merged"].includes(String(k.status).toLowerCase())&&(k.status="blocked")}}}catch(m){if(t.epicAware&&!t.projectless){const u=m instanceof Error&&/^git-lifecycle-/.test(m.message)?m.message:"git-lifecycle-state-corrupt";throw new Ze(u)}return{config:{project_name:"unknown",default_branch:"main",language:"pt-BR"},stories:{},epics:{}}}try{const m=hi(r);m.length>0&&gi(m)}catch{}const i=r.config??r.project??{},n=r.stories??{},o={};for(const[m,u]of Object.entries(n)){const S=h(u.review_request)&&u.review_request.kind==="git-pull-request"?_i(u.review_request):hn(u.review_request);o[m]={id:u.id??m,title:u.title,epic_id:u.epic_id,status:u.status??"backlog",...ur(u.source)?{source:ur(u.source)}:{},steps_completed:u.steps_completed??[],last_step:u.last_step??null,branch_name:u.branch_name??null,pr_number:u.pr_number,...Ft(u.branch_mode)?{branch_mode:Ft(u.branch_mode)}:{},...lr(u.checkpoint)?{checkpoint:lr(u.checkpoint)}:{},...hr(u.checkpoint_verification)?{checkpoint_verification:hr(u.checkpoint_verification)}:{},...gr(u.scheduling_checkpoint_evidence)?{scheduling_checkpoint_evidence:gr(u.scheduling_checkpoint_evidence)}:{},...S?{review_request:S}:{},...hn(u.rollback_receipt)?{rollback_receipt:hn(u.rollback_receipt)}:{},...Xe(u.workflow_issue)?{workflow_issue:Xe(u.workflow_issue)}:{},...bi(u),depends_on:dr(u.depends_on),files_to_modify:be(u.files_to_modify),...Ei(u),risk:typeof u.risk=="string"?u.risk:void 0,blast_radius:typeof u.blast_radius=="number"?u.blast_radius:void 0}}const s=r.epics??{},p={};for(const[m,u]of Object.entries(s)){const S=fi(u.lifecycle_classification),C=Ii(u.createEpicPlanning,m);let L,b;if(C&&h(u.createEpicPlanningClaim)&&typeof u.createEpicPlanningClaim.claimId=="string"&&h(u.createEpicPlanningPhysical))try{Nn(r,u.createEpicPlanningClaim.claimId,m,!0),L=JSON.parse(JSON.stringify(u.createEpicPlanningPhysical))}catch{}if(L&&h(u.createEpicPlanningClaim)&&typeof u.createEpicPlanningClaim.claimId=="string"&&h(u.createEpicPlanningResearchPhysical))try{Ln(r,u.createEpicPlanningClaim.claimId,m),b=JSON.parse(JSON.stringify(u.createEpicPlanningResearchPhysical))}catch{}p[m]={id:u.id??m,title:u.title,...C?{createEpicPlanning:C}:{},...L?{createEpicPlanningPhysical:L}:{},...b?{createEpicPlanningResearchPhysical:b}:{},status:u.status,stories:u.stories,total_stories:u.total_stories,completed_stories:u.completed_stories,depends_on:dr(u.depends_on),...Ft(u.branch_mode)?{branch_mode:Ft(u.branch_mode)}:{},...ye(u.execution_branch)?{execution_branch:ye(u.execution_branch)}:{},...ye(u.origin_branch)?{origin_branch:ye(u.origin_branch)}:{},...pr(u.branch_lease)?{branch_lease:pr(u.branch_lease)}:{},...mr(u.origin_binding)?{origin_binding:mr(u.origin_binding)}:{},...yr(u.aggregate_qa_receipt)?{aggregate_qa_receipt:yr(u.aggregate_qa_receipt)}:{},...Xe(u.pr_number)?{pr_number:Xe(u.pr_number)}:{},...re(u.physicalMergeStatus)?{physicalMergeStatus:re(u.physicalMergeStatus)}:{},...R(u.graph_revision)?{graph_revision:R(u.graph_revision)}:{},...Ir(u.terminal_git_receipt)?{terminal_git_receipt:Ir(u.terminal_git_receipt)}:{},...S?{lifecycle_classification:S}:{}}}const g=Ri(r.current_session??r.currentSession),E=h(r.archPlan)?Wt(r.archPlan.execution):void 0,_=r.epic_id_ledger,l=Array.isArray(_?.reserved_ids)?[...new Set(_.reserved_ids.filter(m=>typeof m=="string"&&/^P\d+$/.test(m)))].slice(0,2048):[];return{schema_version:typeof r.schema_version=="number"?r.schema_version:void 0,config:{project_name:i.project_name??i.name??"unknown",default_branch:i.default_branch??"main",language:i.language??"pt-BR",yolo_mode:i.yolo_mode,user_name:i.user_name,worktree_base:i.worktree_base,max_parallel_stories:i.max_parallel_stories,project_id:typeof i.project_id=="string"?i.project_id:void 0},stories:o,epics:p,...l.length>0?{epic_id_ledger:{schema_version:1,reserved_ids:l}}:{},...g?{current_session:g}:{},...E?{archPlan:{execution:E}}:{}}}const gn=[["P222.01","fbc3176b33687b13a8fadf8c7ea7cc06b6b6c500"],["P222.02","c7d3feb9a168f9e15b35516a972c767f3aa357da"],["P222.03","4d9bd4f2a1a3a1dc6399c572eb84b8b74c017806"],["P222.04","66590ef2f706c9d036f42edf5e517b237724f74f"],["P222.05","3ee2662538311e9788796340ed11b65864a8d8d5"],["P222.06","8660d07e3f68503a9ceb24dc138d24f62ab6cb45"],["P222.07","d99c80feacee8ea4033aa3322990147fffa2df91"],["P222.08","1f9e37dc922d87908efefb9595db32d32db30b00"],["P222.09","5ae12e485900992658e346cf3e38568fda1c2eeb"],["P222.10","6c5b8dc4f03d629fea4b62a33f4794af8e27e4f0"],["P222.11","cfe90f2f955c0027c57e4c621141d17912db65cc"],["P222.12","65f253c5cb600a8ee1dd94a1efdfef2fa5cd1629"],["P222.13","1e78c75b393515803a55d1a9b63a7fec23f710c9"],["P222.14","3f3e0bfd247a8581170df2a23c89497b5ae3641e"],["P222.15","1fd6dd25fffa5714d4ffa8b4303735e417f93de6"]],fn="6a41a47ff2521f80c2296ed811b0f0b304c54750",mn="dbc6d4670b2b7868a01973b1240e24589f1c5b7d",Cr="30dccfff07f9c969be11ae1d28e62a09731a0768";function xi(e,t){try{const a=t.indexOf(Cr);if(a<1||t[a-1]!==fn)return new Map;const r=Le("git",["show","--no-patch","--format=%P",Cr],{cwd:e,encoding:"utf8",maxBuffer:1024}).trim(),i=Le("git",["show","--no-patch","--format=%P",mn],{cwd:e,encoding:"utf8",maxBuffer:1024}).trim();if(r!==`${fn} ${mn}`||i!==`${gn.at(-1)[1]} ${fn}`)return new Map;const n=Le("git",["rev-list","--first-parent","--reverse",mn],{cwd:e,encoding:"utf8",maxBuffer:32*1024*1024}).trim().split(`
|
|
9
|
+
`),o=new Map;let s=-1;for(const[p,[g,E]]of gn.entries()){const _=n.indexOf(E);if(_<=s)return new Map;s=_,o.set(g,{headSha:E,position:p-gn.length})}return o}catch{return new Map}}async function ki(e,t,a){if(!Er(a))return{};if(oa(t,a))return{};try{const r=JSON.parse(Re(K(e,".neocortex","state.json"),"utf8")),i=Ut(e,{required:!0}),n=Kn(r,i),o=h(n.stories)?n.stories:{},s=h(n.epics)?n.epics:{},p=Le("git",["rev-parse","HEAD"],{cwd:e,encoding:"utf8"}).trim(),g=Le("git",["symbolic-ref","--quiet","--short","HEAD"],{cwd:e,encoding:"utf8"}).trim(),E=Le("git",["rev-list","--first-parent","--reverse",p],{cwd:e,encoding:"utf8",maxBuffer:32*1024*1024}).trim().split(`
|
|
10
|
+
`).filter(Boolean),_=new Map(E.map((v,O)=>[v,O])),l=xi(e,E),m=t.match(/(?:^|\s)@?docs\/stories\/([A-Za-z][A-Za-z0-9._-]*)\.story\.md(?:\s|$)/)?.[1],u=a==="yoloop"?t.match(/(?:^|[\s/@])epic-(P[1-9][0-9]*)\.md(?:\s|$)/i)?.[1]?.toUpperCase():void 0,S=new Set,C=Object.entries(o).flatMap(([v,O])=>{if(m&&v!==m)return[];const k=h(O)?O:void 0,D=h(k?.checkpoint)?k.checkpoint:void 0;if(!D)return[];const F=typeof k?.epic_id=="string"?k.epic_id:v.split(".")[0];if(u&&F!==u)return[];const $=R(D?.headSha),j=F==="P222"?l.get(v):void 0,B=_.get($??"")??(j&&j.headSha===$?j.position:void 0);if(!$||$.length<40||B===void 0)return S.add(F),[];const me=h(s[F])?s[F]:void 0;if(me?.branch_mode!=="epic"||ye(me.execution_branch)!==g||ye(D.branch)!==g)return S.add(F),[];const ae=R(D.graphRevision);if(!ae||ae.length!==64)return S.add(F),[];const N=R(D.claimRevision),G=[...Xn(v,k,D)].sort(),ze=Fa(e,D,v,F,g,G);if(!ze&&N){if(G.length===0)return S.add(F),[];const $e=Le("git",["diff-tree","--no-commit-id","--name-only","-r","-z",$],{cwd:e,encoding:"utf8"}).split("\0").filter(Boolean);if($e.length===0||$e.some(Fe=>!G.some(Q=>Q===Fe||Q.endsWith("/")&&Fe.startsWith(Q))))return S.add(F),[];const ke=Be("sha256").update(G.join("\0")).digest("hex"),st=Be("sha256").update(JSON.stringify(G)).digest("hex");if(N!==ke&&N!==st)return S.add(F),[]}else if(!ze)return S.add(F),[];return ae?.length===64?[{storyId:v,epicId:F,graphRevision:ae,checkpointHead:$,position:B}]:[]}),L=new Set(S);for(const[v,O]of Object.entries(s)){const k=h(O)?O:void 0,D=Array.isArray(k?.stories)?k.stories.filter(B=>typeof B=="string"):Object.keys(o).filter(B=>B.startsWith(`${v}.`)),F=C.filter(B=>B.epicId===v),$=D.filter(B=>F.some(me=>me.storyId===B)),j=[...F].sort((B,me)=>B.position-me.position).map(B=>B.storyId);(JSON.stringify($)!==JSON.stringify(j)||new Set(j).size!==j.length)&&L.add(v)}const b={},Y=[...new Set(C.filter(v=>!L.has(v.epicId)).map(v=>v.graphRevision))],w=Y.length>0?await Ha(e,{headSha:p,graphRevisions:Y}):new Map;for(const v of C){if(L.has(v.epicId))continue;const O=w.get(v.graphRevision);if(!O)throw new Error("p205-transient-authority-missing");b[v.storyId]=O}return b}catch(r){const i=r instanceof Error&&/^(?:p205|git-lifecycle)-[a-z0-9-]+$/.test(r.message)?r.message:"p205-transient-execution-failed";return process.stderr.write(`[Neocortex] ${i}. Checkpoint projection remains fail-closed.
|
|
11
|
+
`),{}}}function Nc(e,t){return{kind:"full",trigger:e,targetEpicId:null,targetStoryId:null,includedStoryCount:Object.keys(t.stories).length,includedEpicCount:Object.keys(t.epics).length,omittedStoryCount:0,omittedEpicCount:0,reason:"full-state",projectionMode:"full-compatible"}}const _r="neocortex:menu:cache";async function Pi(e){try{const t=await e.get(_r);if(!t)return null;const a=JSON.parse(t);return a.version!==gt||Date.now()-a.cachedAt>Zn?null:a}catch{return null}}async function Oi(e,t,a){try{const r={instructions:t,metadata:a,cachedAt:Date.now(),version:gt};await e.set(_r,JSON.stringify(r),Zn),Ni()}catch{}}function Ni(){try{lt(Qn)&&Zt(Qn)}catch{}}function Li(e){return e.execute({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},()=>jn(),()=>jn({strictReadOnly:!0}))}async function wr(e,t,a){const r=a.mode==="strict";try{let i;if(r&&t)i=new en({cacheDir:rn,passphrase:t,strictReadOnly:!0});else if(r)i=new Dn;else if(t){const E=K($t,"cache");i=new en({cacheDir:E,passphrase:t})}else process.stderr.write(`[neocortex] Warning: No license key in config. Run "neocortex activate" to re-authenticate.
|
|
12
|
+
`),i=new Dn;const n=qn(a,i,"auth-cache"),o=qn(a,i,"tier-cache"),s=new Xr({serverUrl:e,licenseKey:t??"",cacheProvider:n,strictReadOnly:r});let p;if(r){const E=await s.inspectToken();if(E.status!=="authenticated")return E;p=E.token}else p=await s.getToken();if(!p)return{status:"not-configured"};const g=new Qr({cacheProvider:o,licenseClient:s});return{status:"authenticated",token:p,client:s,tierClient:g}}catch{return r&&t?{status:"refresh-required",reason:"unavailable"}:{status:"not-configured"}}}let Ar=!1;function Di(e){const t=e.errorBody?.error_code;if(typeof t=="string"&&t.trim().length>0)return t;if(e.status===429)return"RATE_LIMITED";if(e.status>=500)return"SERVER_ERROR"}const Rr=3,qt=50;function ji(e){return new Promise(t=>setTimeout(t,e))}function Mi(e,t,a){return e.status>=500&&e.status<=599?!0:a&&e.status===409&&t.error_code==="SIGNATURE_REPLAYED"}async function Rt(e,t,a,r,i={}){const n=Math.max(1,Math.min(i.maxAttempts??Rr,Rr)),o=i.sleep??ji;let s=r,p=!1,g=!1,E=0;for(let _=1;_<=n;_+=1){const l=Math.max(Math.floor(Date.now()/1e3),E+1);E=l;const m=Vi(t,a,s,{nowSeconds:l}),u=new AbortController,S=setTimeout(()=>u.abort(),er);try{const C=await fetch(`${e}${t}`,{method:"POST",headers:m.headers,body:m.body,signal:u.signal}),L=await C.text().catch(()=>""),b=(()=>{try{return L?JSON.parse(L):{}}catch{return{}}})();if(C.status===401&&!p&&i.refreshToken&&(b.fallback_action==="refresh_token"||b.fallback_action==="re_authenticate")){p=!0;const Y=await i.refreshToken();if(Y&&_<n){s=Y,i.onTokenChanged?.(Y),await o(qt*_);continue}}if(C.status===401&&b.error_code==="SIGNATURE_EXPIRED"&&!g&&_<n){g=!0,await o(qt*_);continue}if(_<n&&Mi(C,b,i.allowReplayRetry===!0)){await o(qt*_);continue}return{response:C,text:L,parsed:b,networkFailure:!1}}catch{if(_<n){await o(qt*_);continue}return{text:"",parsed:{},networkFailure:!0}}finally{clearTimeout(S)}}return{text:"",parsed:{},networkFailure:!0}}function Vi(e,t,a,r={}){const i=Buffer.from(JSON.stringify(t),"utf8"),n=va({method:"POST",target:e,body:i,bearerToken:a,clientVersion:gt,nowSeconds:r.nowSeconds,nonceBytes:r.nonceBytes});return{body:n.body,headers:{...n.headers,Authorization:`Bearer ${a}`}}}function br(e){return Be("sha256").update(e).digest("hex")}function Ui(){const e=Number(process.env.NEOCORTEX_INVOKE_CHUNK_BYTES??"49152");return Number.isFinite(e)&&e>=1024&&e<=98304?Math.floor(e):49152}function $i(e,t,a){return`args-${Be("sha256").update("invoke-materialization:v1").update(e).update(String(t)).update(JSON.stringify(a)).digest("hex")}`}async function Tr(e,t,a,r,i={}){const n=await Rt(e,t,a,r,{...i,allowReplayRetry:!0});if(n.networkFailure||!n.response)throw new Error("NETWORK_ERROR: materialization request failed after bounded retries");const{response:o,parsed:s}=n;if(!o.ok){const p=typeof s.error_code=="string"?s.error_code:`HTTP_${o.status}`,g=typeof s.message=="string"?s.message:"materialization upload failed";throw new Error(`${p}: ${g}`)}return s}async function Bi(e,t,a,r){const i=Buffer.from(t,"utf8"),n=Ui(),o=[];for(let u=0,S=0;u<i.byteLength;u+=n,S++){const C=i.subarray(u,Math.min(u+n,i.byteLength));o.push({index:S,sha256:br(C),byteLength:C.byteLength})}const s=br(i),p=$i(s,i.byteLength,o),g=Number(process.env.NEOCORTEX_INVOKE_CHUNK_TTL_SECONDS??"900");let E=a;const _={refreshToken:r,onTokenChanged(u){E=u}};for(const u of o){const S=u.index*n,C=i.subarray(S,S+u.byteLength);await Tr(e,"/api/v1/invoke/materialization/chunks",{manifestId:p,index:u.index,sha256:u.sha256,byteLength:u.byteLength,contentBase64:C.toString("base64"),ttlSeconds:g,idempotencyKey:`${p}:${u.index}:${u.sha256}`},E,_)}const m=(await Tr(e,"/api/v1/invoke/materialization/manifests",{manifestId:p,sha256:s,byteLength:i.byteLength,chunkCount:o.length,chunks:o,ttlSeconds:g,retry:{attempt:1,budget:3,idempotencyKey:p}},E,_)).argsRef;if(!m?.manifestId)throw new Error("MATERIALIZATION_RESPONSE_INVALID: missing argsRef");return{argsRef:m,chunks:o}}function yt(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function Hi(...e){const t=new Set,a=[];for(const r of e)for(const i of r??[]){const n=re(i);if(!(!n||t.has(n))&&(t.add(n),a.push(n),a.length>=16))return a}return a}function Wi(e){const t=e.graphRetrieval;if(!h(t))return{accepted:!1,itemCount:0};const a=Array.isArray(t.items)?t.items.length:0;return{accepted:a>0||typeof t.retrievalId=="string"||t.accepted===!0,itemCount:a}}function yn(e,t=yt(e),a=[],r={}){const i=e.stateSnapshot.scope,n=Object.keys(e.stateSnapshot.stories).length,o=Object.keys(e.stateSnapshot.epics).length,s=i?.kind??"full";return{schemaVersion:1,payloadBytes:t,limitBytes:r.limitBytes??nr,warningThresholdBytes:r.warningThresholdBytes??an,scope:{kind:s,...i?.projectionMode?{projectionMode:i.projectionMode}:{},commandId:i?.commandId??null,stateProjectionPolicy:i?.stateProjectionPolicy??null},includedStories:i?.includedStoryCount??n,omittedStories:i?.omittedStoryCount??0,includedEpics:i?.includedEpicCount??o,omittedEpics:i?.omittedEpicCount??0,graphRetrieval:Wi(e.stateSnapshot),reasonCodes:Hi(a,i?.reasonCodes),publicSafe:!0}}function Gi(e){const t=h(e.budget)?e.budget:void 0,a=typeof t?.maxPayloadBytes=="number"&&Number.isFinite(t.maxPayloadBytes)?t.maxPayloadBytes:12*1024;return Math.max(1024,Math.min(a,12*1024))}function Fi(e){return h(e)?{stableId:re(e.stableId)??"unknown",...h(e.source)?{source:e.source}:{},reasonCode:"budget_exceeded"}:{stableId:"unknown",reasonCode:"budget_exceeded"}}function xr(e){const t=Array.isArray(e)?e.filter(a=>typeof a=="string"):[];return t.includes("budget_exceeded")?t:[...t,"budget_exceeded"]}function qi(e){const t=e.graphRetrieval;if(!h(t)||!Array.isArray(t.items))return e;const a=Gi(t);let r=[...t.items],i=Array.isArray(t.skipped)?[...t.skipped]:[],n=t;for(;Buffer.byteLength(JSON.stringify(n),"utf8")>a&&r.length>0;){const o=r.pop();i=[...i,Fi(o)].slice(-32),n={...t,items:r,skipped:i,warnings:xr(t.warnings)}}return Buffer.byteLength(JSON.stringify(n),"utf8")>a&&(n={...t,query:typeof t.query=="string"?t.query.slice(0,240):t.query,items:[],skipped:[],warnings:xr(t.warnings)}),n===t?e:{...e,graphRetrieval:n}}function kr(e,t={}){const a=t.limitBytes??nr,r=t.warningThresholdBytes??Math.floor(a*rr),i=yt(e);if(i<a)return{body:e,degraded:!1,telemetry:yn(e,i,["payload-within-limit"],{limitBytes:a,warningThresholdBytes:r})};let n={...e,stateSnapshot:aa(e.stateSnapshot)},o=["payload-size-guardrail","state-degraded"],s=yt(n);s>=a&&(n={...n,stateSnapshot:qi(n.stateSnapshot)},o=[...o,"graph-retrieval-budget-enforced"],s=yt(n));const p=yn(n,s,o,{limitBytes:a,warningThresholdBytes:r});if(s>=a){const g=n.stateSnapshot.scope?.projectionMode;throw g==="yolo-story"||g==="yoloop-target"||g==="yoloop-session"||g==="yoloop-discovery"||g==="structural-required"?new pn(p):new un(p)}return{body:n,degraded:!0,telemetry:p}}function Pr(e){const t=e.stateSnapshot.scope?.commandId??"resolved-command";return e.args!==void 0?t:`${t}:argsRef`}function Yi(e){const t=yt(e);if(t<an)return t;const a=yn(e,t,["payload-warning-threshold"]);return process.stderr.write(`[Neocortex] invoke payload near server limit: trigger=${Pr(e)} scope=${a.scope.kind} mode=${a.scope.projectionMode??a.scope.kind} payloadBytes=${a.payloadBytes} limit=${a.limitBytes} includedStories=${a.includedStories} omittedStories=${a.omittedStories} includedEpics=${a.includedEpics} omittedEpics=${a.omittedEpics} graphRetrieval.accepted=${a.graphRetrieval.accepted} graphRetrieval.itemCount=${a.graphRetrieval.itemCount} reasonCodes=${a.reasonCodes.join(",")||"none"}
|
|
13
|
+
`),t}function Or(e,t){process.stderr.write(`[Neocortex] invoke payload guardrail: trigger=${Pr(e)} scope.kind=${t.scope.kind} payloadBytes=${t.payloadBytes} limit=${t.limitBytes} includedStories=${t.includedStories} omittedStories=${t.omittedStories} includedEpics=${t.includedEpics} omittedEpics=${t.omittedEpics} graphRetrieval.accepted=${t.graphRetrieval.accepted} graphRetrieval.itemCount=${t.graphRetrieval.itemCount} reasonCodes=${t.reasonCodes.join(",")||"none"}
|
|
14
|
+
`)}async function Ji(e){const t=la(e.args,{platformTarget:e.platformTarget,environment:e.environment??process.env});if(t.action==="skipped")return{shouldContinue:!0,attachToRequest:zi(t),metadata:Nr(t)};const a=e.bootstrapper??ga;let r;try{r=await a({projectRoot:e.projectRoot,env:e.environment??process.env,effectAuthority:e.effectAuthority})}catch{r={ok:!1,attempted:!0,installed:!1,started:!1,cached:!1,projectKey:"unknown",reasonCodes:[ha.UNEXPECTED_ERROR],publicSummary:"runner scheduler bootstrap stopped unexpectedly.",publicSafe:!0}}const i=Nr(t,r);if(r.ok)return{shouldContinue:!0,attachToRequest:!0,metadata:i};const n=i.reasonCodes.slice(0,5).join(",");return t.failurePolicy==="fail-open"?{shouldContinue:!0,attachToRequest:!0,metadata:{...i,failOpenWarning:!0},warning:`Runner auto-bootstrap warning (${n}); continuing fail-open for operator command.`}:{shouldContinue:!1,attachToRequest:!1,metadata:i,errorCode:"RUNNER_BOOTSTRAP_REQUIRED_FAILED",error:`Runner auto-bootstrap required but failed (${n}). Run neocortex-runner doctor or retry after resolving scheduler setup.`,exitCode:1}}function zi(e){return!e.reasonCodes.includes(pa.SKIPPED_NON_CONTINUITY_COMMAND)}function Nr(e,t){return{schemaVersion:1,action:e.action,failurePolicy:e.failurePolicy,command:e.command,operation:e.operation,attempted:t?.attempted??!1,ok:t?.ok??!0,cached:t?.cached??!1,installed:t?.installed??!1,started:t?.started??!1,...t?.projectKey?{projectKey:t.projectKey}:{},reasonCodes:we([...e.reasonCodes,...t?.reasonCodes??[]]),publicSummary:t?.publicSummary??e.publicSummary,publicSafe:!0}}function we(e){return Array.from(new Set(e.map(t=>t.slice(0,120))))}function Yt(e,t,a){const r=Math.floor(e??t);return Number.isFinite(r)?Math.max(1,Math.min(a,r)):t}function Jt(e,t){const a=process.env[e];if(!a)return t;const r=Number(a);return Number.isFinite(r)?r:t}function W(e,t=sr){const a=typeof e=="string"&&e.trim().length>0?e.trim():"unknown",r=Ve(a,t),i=ci.test(r)?Ke:r;return i.length<=t?i:`${i.slice(0,t)}\u2026[TRUNCATED:${i.length-t}]`}function In(e,t=sr){if(!(typeof e!="string"||e.trim().length===0))return W(e,t)}function En(e,t,a,r){const i=In(e?.targetId??t,120),n=e?.selectorKind??(i?vn(i):void 0),o=(e?.relatedJobIds??[]).map(s=>In(s,120)).filter(s=>!!s);return{schemaVersion:1,contractVersion:"continuity-v1",targetResolutionState:a,...n?{targetKind:n}:{},...i?{targetId:i}:{},...t?{targetJobId:W(t,120)}:{},...e?.jobId?{jobId:W(e.jobId,120)}:{},...e?.goalId?{goalId:W(e.goalId,120)}:{},...e?.loopId?{loopId:W(e.loopId,120)}:{},...o.length>0?{relatedJobIds:o}:{},relatedJobCount:o.length,reasonCodes:we(r.length>0?r:[H.OK]),publicSafe:!0}}function Ye(e,t,a,r,i=[]){const n=(e?.redactions?.length??0)>0,o=e?n?"unsafe":a&&r===0?"empty":"available":"unavailable",s=In(t[t.length-1]?.eventId,120),p=i.length>0?i:o==="unavailable"?[H.WATCH_SNAPSHOT_UNAVAILABLE]:o==="empty"?[H.WATCH_NO_SUMMARIES_YET]:[H.OK];return{schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:o,...e?.generatedAt?{generatedAt:W(e.generatedAt,80)}:{},renderedSummaryCount:r,...s?{latestEventId:s}:{},reasonCodes:we(p),publicSafe:!0}}function He(e,t,a,r,i=[],n){const o=r[r.length-1],s=a??o?.cursor,p=!!(s&&s!==t&&r.length>0),g=n??(p?"advanced":t||s?"unchanged":"not_started"),E=i.length>0?i:g==="advanced"?[H.WATCH_CURSOR_ADVANCED]:g==="unavailable"?[H.WATCH_EVIDENCE_UNAVAILABLE]:[H.WATCH_CURSOR_UNCHANGED];return{schemaVersion:1,contractVersion:"continuity-v1",cursorState:g,...e?{initialCursor:W(e,200)}:{},...t?{currentCursor:W(t,200)}:{},...s?{nextCursor:W(s,200)}:{},cursorAdvanced:p,...o?.eventId?{eventId:W(o.eventId,120)}:{},reasonCodes:we(E),publicSafe:!0}}function We(e){const t=e.targetEvidence;return{type:"watch_status",schemaVersion:1,contractVersion:"continuity-v1",recordType:"watch_status",command:"invoke",operation:"watch",watchStatus:e.watchStatus,active:e.active,...t?.targetResolutionState?{targetResolutionState:t.targetResolutionState}:{},...t?.targetKind?{targetKind:t.targetKind}:{},...t?.targetId?{targetId:t.targetId}:{},...t?{targetEvidence:t}:{},...e.snapshotEvidence?{snapshotEvidence:e.snapshotEvidence}:{},...e.cursorEvidence?{cursorEvidence:e.cursorEvidence}:{},...e.stopReason?{stopReason:e.stopReason}:{},reasonCodes:we([...e.reasonCodes??[],...t?.reasonCodes??[],...e.snapshotEvidence?.reasonCodes??[],...e.cursorEvidence?.reasonCodes??[]]),generatedAt:W(e.generatedAt??new Date().toISOString(),80),publicSafe:!0}}function Ki(e){const t=e.targetKind&&e.targetId?`${e.targetKind}/${e.targetId}`:e.targetId??"[unresolved]",a=e.snapshotEvidence?.renderedSummaryCount??0,r=e.targetEvidence?.relatedJobCount??0,i=e.cursorEvidence?.cursorState??"unavailable",n=e.cursorEvidence?.currentCursor??"[none]",o=e.cursorEvidence?.nextCursor??"[none]",s=e.snapshotEvidence?.snapshotStatus??"not_requested",p=e.snapshotEvidence?.generatedAt??e.generatedAt;return[`[watch-status] ${e.targetResolutionState==="unresolved"||e.stopReason==="target_unresolved"?"unresolved-target":a===0&&(e.watchStatus==="waiting"||e.watchStatus==="active")?"no-new-summary":e.watchStatus==="stopped"?"stopped":"lifecycle"}`,`status=${e.watchStatus}`,`active=${e.active}`,`target=${t}`,`resolution=${e.targetResolutionState??"unavailable"}`,`relatedJobs=${r}`,`summaries=${a}`,`snapshot=${s}`,`generatedAt=${p}`,`cursor=${i}`,`current=${W(n,200)}`,`next=${W(o,200)}`,`advanced=${e.cursorEvidence?.cursorAdvanced??!1}`,`stop=${e.stopReason??"not_stopped"}`,`reasons=${e.reasonCodes.join(",")}`].join(" ")}function Ge(e,t,a,r=!1){if(r){const i={type:"watch_status",watchStatus:e.watchStatus,active:e.active,renderedSummaryCount:e.snapshotEvidence?.renderedSummaryCount??0,stopReason:e.stopReason??"not_stopped",protectedProjection:!0,publicSafe:!0};a.write(t==="json"?`${JSON.stringify(i)}
|
|
15
|
+
`:`[watch-status] status=${i.watchStatus} active=${i.active} summaries=${i.renderedSummaryCount} stop=${i.stopReason}
|
|
16
|
+
`);return}if(t==="json"){a.write(JSON.stringify(e)+`
|
|
17
|
+
`);return}a.write(Ki(e)+`
|
|
18
|
+
`)}function Xi(e,t,a){return{continuityInvokeWatch:{schemaVersion:1,contractVersion:"continuity-v1",command:"invoke",operation:"watch",watchStatus:e.watchStatus,stopReason:e.stopReason??"not_stopped",targetResolutionState:e.targetResolutionState,targetKind:e.targetKind,targetId:e.targetId,snapshotStatus:e.snapshotEvidence?.snapshotStatus,snapshotGeneratedAt:e.snapshotEvidence?.generatedAt,renderedSummaryCount:e.snapshotEvidence?.renderedSummaryCount??t,cursorState:e.cursorEvidence?.cursorState,cursorAdvanced:e.cursorEvidence?.cursorAdvanced,summariesEmitted:t,polls:a,statusRecord:e,publicSafe:!0}}}function Je(e,t,a,r,i=!1){return i?{status:e,summariesEmitted:t,polls:a,reasonCodes:[],watchStatus:r.watchStatus,stopReason:r.stopReason,metadata:{continuityInvokeWatch:{schemaVersion:1,contractVersion:"continuity-v1",command:"invoke",operation:"watch",watchStatus:r.watchStatus,stopReason:r.stopReason??"not_stopped",summariesEmitted:t,polls:a,protectedProjection:!0,publicSafe:!0}},publicSafe:!0}:{status:e,summariesEmitted:t,polls:a,reasonCodes:r.reasonCodes,watchStatus:r.watchStatus,stopReason:r.stopReason,targetEvidence:r.targetEvidence,snapshotEvidence:r.snapshotEvidence,cursorEvidence:r.cursorEvidence,statusRecord:r,metadata:Xi(r,t,a),publicSafe:!0}}function Qi(e){const t=e.reasonCode?` reason=${W(e.reasonCode,80)}`:"",a=e.goalId?` goal=${W(e.goalId,100)}`:"",r=e.loopId?` loop=${W(e.loopId,100)}`:"";return`[watch] ${W(e.createdAt,80)} event=${W(e.eventId,120)} job=${W(e.jobId,100)}${a}${r} execution=${W(e.executionId,120)}${t} -- ${W(e.publicSummary)}`}function Zi(e){return{type:"processing_summary",source:"local_continuity_sqlite",eventId:W(e.eventId,120),jobId:W(e.jobId,100),...e.goalId?{goalId:W(e.goalId,100)}:{},...e.loopId?{loopId:W(e.loopId,100)}:{},executionId:W(e.executionId,120),...e.reasonCode?{reasonCode:W(e.reasonCode,80)}:{},createdAt:W(e.createdAt,80),publicSummary:W(e.publicSummary),publicSafe:!0}}function eo(e,t,a,r=!1){if(r){a.write(t==="json"?`${JSON.stringify({type:"processing_summary",source:"local_continuity_sqlite",publicSummary:"A local processing update is available.",protectedProjection:!0,publicSafe:!0})}
|
|
17
19
|
`:`[watch] A local processing update is available.
|
|
18
|
-
`);return}if(t==="json"){
|
|
19
|
-
`);return}
|
|
20
|
-
`)}function wt(e){return oo.has(e.status)}function qo(e,t,r){if(t){const o=e.find(i=>i.jobId===t);return!!(o&&wt(o))}return r<=0?!1:e.filter(o=>!wt(o)).length===0}function Ko(e,t,r,n){return r<n?!1:t?!e.some(o=>o.jobId===t&&!wt(o)):e.length===0}function Xo(e,t){return t?.aborted?Promise.resolve():new Promise(r=>{const n=setTimeout(o,e);function o(){clearTimeout(n),t?.removeEventListener("abort",o),r()}t?.addEventListener("abort",o,{once:!0})})}function Zo(e){return e.includes(X.MALFORMED)?"malformed":e.includes(X.AMBIGUOUS)?"ambiguous":e.includes("watch-target-multiple")?"multiple":e.includes("watch-evidence-unsafe")?"unsafe":e.includes(X.MISSING)||e.includes(Y.TARGET_UNRESOLVED)?"unresolved":"unavailable"}function Lr(e,t){const r=t?He(t):void 0,n=re([...e,Y.TARGET_UNRESOLVED,x.WATCH_TARGET_UNRESOLVED]),o=At(r,r?.targetId,Zo(n),n),i=Ie({generatedAt:new Date().toISOString()},[],!1,0,[x.WATCH_TARGET_UNRESOLVED]),a=pe(void 0,void 0,void 0,[],[x.WATCH_TARGET_UNRESOLVED],"unavailable");return fe({watchStatus:"blocked",active:!1,targetEvidence:o,snapshotEvidence:i,cursorEvidence:a,stopReason:"target_unresolved",reasonCodes:n,generatedAt:i.generatedAt})}function Qo(e,t,r,n,o=!1){const i=Lr(e,Dr(t));return he(i,r,n,o),Ee("target-unresolved",0,0,i,o)}async function ei(e){if(e.signal?.aborted){const h=At(e.target??He(e.targetJobId),e.targetJobId,e.target??e.targetJobId?"resolved":"unresolved",[Y.CANCELLED]),R=Ie(void 0,[],!1,0),_=pe(e.initialCursor,e.initialCursor,e.initialCursor,[],[Y.CANCELLED],"unavailable"),V=fe({watchStatus:"stopped",active:!1,targetEvidence:h,snapshotEvidence:R,cursorEvidence:_,stopReason:"cancelled",reasonCodes:[Y.CANCELLED]});return Ee("cancelled",0,0,V,e.protectedOutput)}const t=e.target??He(e.targetJobId),r=e.targetJobId??t?.targetId,n=e.stdout??process.stdout;if(!t){const h=Lr([X.MISSING,Y.TARGET_UNRESOLVED]);return he(h,e.format,n,e.protectedOutput),Ee("target-unresolved",0,0,h,e.protectedOutput)}const o=it(e.limit??st("NEOCORTEX_INVOKE_WATCH_LIMIT",Wt),Wt,50),i=Math.max(50,it(e.pollIntervalMs??st("NEOCORTEX_INVOKE_WATCH_POLL_INTERVAL_MS",Gt),Gt,6e4)),a=it(e.maxIdlePolls??st("NEOCORTEX_INVOKE_WATCH_MAX_IDLE_POLLS",Ht),Ht,120),c=it(e.maxPolls??st("NEOCORTEX_INVOKE_WATCH_MAX_POLLS",Ft),Ft,86400),l=e.sleep??Xo;let p=e.initialCursor,m=0,w=0,f=0;const d=At(t,r,"resolved",[x.OK]),I={schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:"pending",renderedSummaryCount:0,reasonCodes:[x.WATCH_RENDER_PENDING],publicSafe:!0},A=pe(e.initialCursor,p,p,[],e.initialCursor?[x.WATCH_CURSOR_UNCHANGED]:[x.WATCH_NO_SUMMARIES_YET],e.initialCursor?"unchanged":"not_started");he(fe({watchStatus:"active",active:!0,targetEvidence:d,snapshotEvidence:I,cursorEvidence:A,stopReason:"not_stopped",reasonCodes:[x.OK]}),e.format,n,e.protectedOutput);let C;try{C=await gn({projectRoot:e.projectRoot,strictReadOnly:e.strictReadOnly})}catch{const h=Ie(void 0,[],!1,m,[x.WATCH_SNAPSHOT_UNAVAILABLE]),R=pe(e.initialCursor,p,p,[],[x.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),_=fe({watchStatus:"blocked",active:!1,targetEvidence:d,snapshotEvidence:h,cursorEvidence:R,stopReason:"unavailable_evidence",reasonCodes:[Y.STORE_UNAVAILABLE]});return he(_,e.format,n,e.protectedOutput),Ee("store-unavailable",m,f,_,e.protectedOutput)}try{for(;!e.signal?.aborted&&f<c;){f+=1;const h=p,R=C.collectProcessingOutputSummaryCursor({...p?{cursor:p}:{},...t?{target:t}:{},...r?{jobId:r}:{},limit:o}),_=C.collectSnapshot({jobLimit:50,processingSummaryLimit:1}),V=_.jobs;if(R.summaries.length>0){for(const $ of R.summaries)zo($,e.format,n,e.protectedOutput),m+=1;p=R.nextCursor??R.summaries[R.summaries.length-1]?.cursor??p,w=0}else p=R.nextCursor??p,w+=1;const N=Ie(_,R.summaries,!0,R.summaries.length),P=pe(e.initialCursor,h,p,R.summaries,R.summaries.length>0?[x.WATCH_CURSOR_ADVANCED]:[x.WATCH_NO_SUMMARIES_YET]);if(he(fe({watchStatus:R.summaries.length>0?"polling":"waiting",active:!0,targetEvidence:d,snapshotEvidence:N,cursorEvidence:P,stopReason:"not_stopped",reasonCodes:R.summaries.length>0?[x.WATCH_CURSOR_ADVANCED]:[x.WATCH_NO_SUMMARIES_YET],generatedAt:_.generatedAt}),e.format,n,e.protectedOutput),!R.hasMore&&qo(V,r,m)){const $=Ie(_,R.summaries,!1,m,[Y.COMPLETED]),D=pe(e.initialCursor,h,p,R.summaries,[Y.COMPLETED],"exhausted"),O=fe({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:$,cursorEvidence:D,stopReason:"not_stopped",reasonCodes:[Y.COMPLETED],generatedAt:_.generatedAt});return he(O,e.format,n,e.protectedOutput),Ee("completed",m,f,O,e.protectedOutput)}if(!R.hasMore&&Ko(V,r,w,a)){const $=Ie(_,R.summaries,!1,m,[x.WATCH_STOP_IDLE_LIMIT_REACHED]),D=pe(e.initialCursor,h,p,R.summaries,[x.WATCH_STOP_IDLE_LIMIT_REACHED],"exhausted"),O=fe({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:$,cursorEvidence:D,stopReason:"idle_limit_reached",reasonCodes:[Y.IDLE_TIMEOUT,x.WATCH_STOP_IDLE_LIMIT_REACHED],generatedAt:_.generatedAt});return he(O,e.format,n,e.protectedOutput),Ee("idle-timeout",m,f,O,e.protectedOutput)}R.hasMore||await l(i,e.signal)}}catch{const h=Ie(void 0,[],!1,m,[x.WATCH_SNAPSHOT_UNAVAILABLE]),R=pe(e.initialCursor,p,p,[],[x.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),_=fe({watchStatus:"blocked",active:!1,targetEvidence:d,snapshotEvidence:h,cursorEvidence:R,stopReason:"unavailable_evidence",reasonCodes:[Y.STORE_UNAVAILABLE]});return he(_,e.format,n,e.protectedOutput),Ee("store-unavailable",m,f,_,e.protectedOutput)}finally{C.close()}if(e.signal?.aborted){const h=Ie(void 0,[],!1,m,[Y.CANCELLED]),R=pe(e.initialCursor,p,p,[],[Y.CANCELLED],"unavailable"),_=fe({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:h,cursorEvidence:R,stopReason:"cancelled",reasonCodes:[Y.CANCELLED]});return he(_,e.format,n,e.protectedOutput),Ee("cancelled",m,f,_,e.protectedOutput)}const j=Ie(void 0,[],!1,m,[x.WATCH_STOP_MAX_POLLS_REACHED]),v=pe(e.initialCursor,p,p,[],[x.WATCH_STOP_MAX_POLLS_REACHED],"exhausted"),U=fe({watchStatus:"stopped",active:!1,targetEvidence:d,snapshotEvidence:j,cursorEvidence:v,stopReason:"max_polls_reached",reasonCodes:[Y.MAX_POLLS,x.WATCH_STOP_MAX_POLLS_REACHED]});return he(U,e.format,n,e.protectedOutput),Ee("max-polls",m,f,U,e.protectedOutput)}function ue(e){const t=e.trim().replace(/^@/,"").match(/^(job|goal|loop)-([JGL])(\d{3,})$/i);if(!t)return;const r=t[1].toLowerCase(),n=t[2].toUpperCase();if(!(r==="job"&&n!=="J"||r==="goal"&&n!=="G"||r==="loop"&&n!=="L"))return`${r}-${n}${t[3]}`}function Rt(e){if(e.startsWith("job-J"))return"job";if(e.startsWith("goal-G"))return"goal";if(e.startsWith("loop-L"))return"loop"}function Pr(e){const t=[],r=/(?:^|[\s"'([,{])@?(job-[Jj]\d{3,}|goal-[Gg]\d{3,}|loop-[Ll]\d{3,})(?=$|[\s"')\]},.;:!?])/g;let n;for(;(n=r.exec(e))!==null;){const o=ue(n[1]);o&&t.push(o)}return re(t)}function Dr(e){return Pr(e)[0]}function He(e){const t=e?ue(e):void 0;if(t){if(t.startsWith("job-J"))return{selectorKind:"job",targetId:t,jobId:t,publicSafe:!0};if(t.startsWith("goal-G"))return{selectorKind:"goal",targetId:t,goalId:t,publicSafe:!0};if(t.startsWith("loop-L"))return{selectorKind:"loop",targetId:t,loopId:t,publicSafe:!0}}}function vt(e){return re(e.filter(t=>typeof t=="string").map(t=>ue(t)).filter(t=>!!t?.startsWith("job-J")))}function ti(e,t){const r=vt(t).filter(n=>n!==e.targetId&&n!==e.jobId);return r.length>0?{...e,relatedJobIds:r}:e}function ri(e){if(!e)return;const t=y(e.target)?e.target:void 0,r=typeof e.selectorKind=="string"?e.selectorKind:typeof t?.selectorKind=="string"?t.selectorKind:void 0,n=typeof e.targetId=="string"?ue(e.targetId):typeof t?.targetId=="string"?ue(t.targetId):typeof e.targetJobId=="string"?ue(e.targetJobId):void 0,o=He(n);if(!o||r&&r!==o.selectorKind)return;const i=Array.isArray(e.relatedJobIds)?e.relatedJobIds:Array.isArray(t?.relatedJobIds)?t.relatedJobIds:void 0,a=vt([...i??[],e.jobId,t?.jobId,e.targetJobId,t?.targetJobId]).filter(c=>c!==o.targetId&&c!==o.jobId);return{...o,...typeof(e.jobId??t?.jobId)=="string"?{jobId:ue(e.jobId??t?.jobId)??o.jobId}:{},...typeof(e.goalId??t?.goalId)=="string"?{goalId:ue(e.goalId??t?.goalId)??o.goalId}:{},...typeof(e.loopId??t?.loopId)=="string"?{loopId:ue(e.loopId??t?.loopId)??o.loopId}:{},...a.length>0?{relatedJobIds:a}:{}}}function jr(e){const t=e.trim().split(/\s+/).filter(Boolean),r=t[0]?.replace(/^\*/,"").toLowerCase(),n=t[1]?.replace(/^--/,"").toLowerCase();return(r==="jobs"||r==="job"||r==="continuity-jobs"||r==="61")&&n==="watch"}const K=Object.freeze({ACTIVE:"command-level-watch-active",INACTIVE:"command-level-watch-inactive",DUPLICATE:"command-level-watch-duplicate",AMBIGUOUS:"command-level-watch-ambiguous",QUOTED:"command-level-watch-quoted",MALFORMED:"command-level-watch-malformed",NON_FINAL:"command-level-watch-non-final",UNRESOLVED:"command-level-watch-unresolved",UNSUPPORTED:"command-level-watch-unsupported",TARGET_INVALID:"command-level-watch-target-invalid"}),ni=new Set(["create","start","resume"]),oi=new Set(["create","resume","run-once"]);function bt(e,t,r,n,o){return{schemaVersion:1,contractVersion:"continuity-v1",...r?{command:r}:{},...n?{operation:n}:{},active:e,...o?{watchToken:o}:{},reasonCodes:re(t),serverHeldStream:!1,allJobsPolling:!1,targetResolution:e?"required-after-dispatch":"inactive",publicSafe:!0}}function Z(e,t=[],r,n){const o=t.length>0?t:[K.INACTIVE];return{args:e,watch:!1,reasonCodes:o,metadata:bt(!1,o,r,n),publicSafe:!0}}function ii(e){const t=e.trim().split(/\s+/).filter(Boolean),r=t.slice(2).filter(i=>i==="--watch").length;if(r===0)return Z(e,[],"jobs","watch");if(r!==1)return Z(e,[K.AMBIGUOUS],"jobs","watch");const n=t.filter((i,a)=>a<2||i!=="--watch").join(" ");return jr(n)?n.trim().split(/\s+/).filter(Boolean).slice(2).length!==1?Z(e,[K.AMBIGUOUS],"jobs","watch"):Dr(n)?{args:n,watch:!0,reasonCodes:[K.ACTIVE],metadata:bt(!0,[K.ACTIVE],"jobs","watch"),publicSafe:!0}:Z(e,[K.TARGET_INVALID],"jobs","watch"):Z(e,[K.UNSUPPORTED],"jobs","watch")}function si(e){const t=[];let r=!1,n=0;for(;n<e.length;){for(;n<e.length&&/\s/.test(e[n]);)n+=1;if(n>=e.length)break;const o=n;let i="",a=!1,c=null;for(;n<e.length;){const l=e[n];if(c){if(l===c){a=!0,c=null,n+=1;continue}if(l==="\\"&&n+1<e.length){i+=e[n+1],n+=2;continue}i+=l,n+=1;continue}if(/\s/.test(l))break;if(l==='"'||l==="'"){a=!0,c=l,n+=1;continue}i+=l,n+=1}c&&(r=!0),t.push({value:i,start:o,end:n,quoted:a})}return{tokens:t,malformed:r}}function ai(e){if(!e||e.quoted)return;const t=e.value.replace(/^\*/,"").toLowerCase();return t==="goal"||t==="loop"?t:void 0}function ci(e,t){if(!e||e==="jobs"||!t||t.quoted)return;const r=t.value.toLowerCase();return(e==="goal"?ni:oi).has(r)?r:void 0}function di(e){return!e.quoted&&e.value!=="--watch"&&e.value.toLowerCase().startsWith("--watch")}function ui(e){const{tokens:t,malformed:r}=si(e),n=ai(t[0]),o=ci(n,t[1]);if(r)return Z(e,[K.MALFORMED],n,o);const i=t.filter(f=>f.value==="--watch"&&!f.quoted),a=t.filter(f=>f.value==="--watch"&&f.quoted),c=t.filter(di);if(!(i.length>0||a.length>0||c.length>0))return Z(e,[],n,o);if(i.length>1)return Z(e,[K.DUPLICATE],n,o);if(i.length===1&&(a.length>0||c.length>0))return Z(e,[K.AMBIGUOUS],n,o);if(a.length>0)return Z(e,[K.QUOTED],n,o);if(c.length>0)return Z(e,[K.MALFORMED],n,o);const p=i[0];if(!p)return Z(e,[],n,o);if(t[t.length-1]!==p)return Z(e,[K.NON_FINAL],n,o);if(!n||!o)return Z(e,[K.UNRESOLVED],n,o);const m=`${e.slice(0,p.start)}${e.slice(p.end)}`.trim(),w={literal:"--watch",position:"final",start:p.start,end:p.end,quoted:!1,publicSafe:!0};return{args:m,watch:!0,reasonCodes:[K.ACTIVE],metadata:bt(!0,[K.ACTIVE],n,o,w),publicSafe:!0}}function li(e){return jr(e)?ii(e):ui(e)}function pi(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&io.has(t)):[]}function Be(e){return{disabled:!0,reasonCodes:re(e.length>0?e:[X.MISSING])}}function Tt(e,t,r=[],n){const o=He(t);if(o)return{source:e,target:ti(o,r),targetJobId:o.targetId,...n?{initialCursor:n}:{},serverHeldStream:!1}}function fi(e){const t=new Map;for(const r of e){const n=`${r.target.selectorKind}:${r.target.targetId}`,o=t.get(n);if(!o){t.set(n,r);continue}const i=re([...o.target.relatedJobIds??[],...r.target.relatedJobIds??[]]);t.set(n,{...o,target:i.length>0?{...o.target,relatedJobIds:i}:o.target,initialCursor:o.initialCursor??r.initialCursor})}return Array.from(t.values())}function Re(e,t,r,n){return{source:e,hasEvidence:t,candidates:fi(r.filter(o=>!!o)),...n&&n.length>0?{disabledReasonCodes:re(n)}:{}}}function hi(e,t){return e.target.selectorKind===t.target.selectorKind&&e.target.targetId===t.target.targetId}function Fe(e,t){const r=re(e.filter(n=>typeof n=="string").map(n=>ue(n)).filter(n=>!!n));if(t){const n=r.find(o=>Rt(o)===t);if(n)return n}return r[0]}function at(e,t){return re(e.filter(r=>typeof r=="string").map(r=>ue(r)).filter(r=>!!r)).find(r=>Rt(r)===t)}function gi(e){const t=y(e?.continuity)?e.continuity:void 0,r=y(t?.jobs)?t.jobs:void 0,n=y(r?.watcher)?r.watcher:void 0,o=pi(n?.reasonCodes??r?.reasonCodes);if(!n)return Re("watcher-metadata",o.length>0,[],o);if(n.active===!1||o.length>0)return Re("watcher-metadata",!0,[],o.length>0?o:[X.MALFORMED]);if(n.serverHeldStream!==!1)return Re("watcher-metadata",!0,[],[X.SERVER_HELD_STREAM]);const i=ri(n);if(!i)return Re("watcher-metadata",!0,[],[X.MISSING]);const a=typeof n.initialCursor=="string"?n.initialCursor:void 0;return Re("watcher-metadata",!0,[{source:"watcher-metadata",target:i,targetJobId:i.targetId,...a?{initialCursor:a}:{},serverHeldStream:!1}])}function Mr(e,t){const r=y(e.loopJobPlan)?e.loopJobPlan:void 0,n=y(r?.metadata)?r.metadata:void 0,o=y(e.metadata)?e.metadata:void 0,a=(t==="goal"?Fe([e.goalId,e.targetGoalId,e.campaignId,e.jobId,e.targetJobId,o?.goalId,o?.campaignId,o?.jobId],"goal"):Fe([e.loopId,e.targetLoopId,e.jobId,e.targetJobId,o?.loopId,o?.jobId,n?.loopId,n?.jobId],"loop"))??Fe([e.jobId,e.targetJobId,o?.jobId,n?.jobId]);return Tt("goal-loop-continuity-metadata",a,[e.jobId,e.targetJobId,o?.jobId,n?.jobId])}function mi(e){const t=y(e?.continuity)?e.continuity:void 0,r=y(t?.goal)?t.goal:void 0,n=y(t?.loop)?t.loop:void 0,o=[r?Mr(r,"goal"):void 0,n?Mr(n,"loop"):void 0],i=!!(r||n);return Re("goal-loop-continuity-metadata",i,o,i&&o.every(a=>!a)?[X.MISSING]:void 0)}function yi(e){return Array.isArray(e)?e.filter(y):y(e)?Array.isArray(e.operationLogs)?e.operationLogs.filter(y):y(e.operationLog)?[e.operationLog]:Array.isArray(e.operations)?[e]:[]:[]}function Ur(e,t){const r=y(t.metadata)?t.metadata:void 0,n=at([t.goalId,t.targetGoalId,t.campaignId,r?.goalId,r?.campaignId,t.jobId,r?.jobId],"goal"),o=at([t.loopId,t.targetLoopId,r?.loopId,t.jobId,r?.jobId],"loop"),i=Fe([t.jobId,t.targetJobId,r?.jobId],"job"),a=n??o??i;if(!a)return;const c=e.get(a)??{targetId:a,relatedJobIds:[]};c.relatedJobIds.push(...vt([i,t.jobId,t.targetJobId,r?.jobId])),e.set(a,c)}function Ii(e){const t=y(e.metadata)?e.metadata:void 0;return!!(at([e.goalId,e.targetGoalId,e.campaignId,t?.goalId,t?.campaignId,e.jobId,t?.jobId],"goal")??at([e.loopId,e.targetLoopId,t?.loopId,e.jobId,t?.jobId],"loop"))}function Ei(e){const t=y(e.metadata)?e.metadata:void 0;return!!Fe([e.goalId,e.targetGoalId,e.campaignId,e.loopId,e.targetLoopId,e.jobId,e.targetJobId,t?.goalId,t?.campaignId,t?.loopId,t?.jobId])}function Vr(e,t){const r=[];for(const a of["metadata","job","event","receipt","processingOutputSummary"]){const c=t[a];y(c)&&r.push(c)}const n=y(t.event)?t.event:void 0;y(n?.metadata)&&r.push(n.metadata),y(n?.processingOutputSummary)&&r.push(n.processingOutputSummary);const o=y(t.receipt)?t.receipt:void 0;y(o?.metadata)&&r.push(o.metadata);const i=r.some(Ei);for(const a of r)Ur(e,a);(!i||Ii(t))&&Ur(e,t)}function _i(e){const t=yi(e?.continuityStateUpdate),r=new Map;for(const o of t){Vr(r,o);const i=Array.isArray(o.operations)?o.operations.filter(y):[];for(const a of i)Vr(r,a)}const n=Array.from(r.values()).map(o=>Tt("continuity-state-update-operation-log",o.targetId,o.relatedJobIds));return Re("continuity-state-update-operation-log",t.length>0,n,t.length>0&&n.every(o=>!o)?[X.MISSING]:void 0)}function Ci(e){const t=Pr(e);return Re("explicit-args",t.length>0,t.map(r=>Tt("explicit-args",r)))}function Si(e,t){const r=[gi(e),mi(e),_i(e),Ci(t)];for(let n=0;n<r.length;n+=1){const o=r[n];if(!o.hasEvidence)continue;if(o.disabledReasonCodes&&o.disabledReasonCodes.length>0)return Be(o.disabledReasonCodes);if(o.candidates.length!==1)return Be([o.candidates.length>1?X.AMBIGUOUS:X.MISSING]);const i=o.candidates[0];for(const a of r.slice(n+1)){if(!a.hasEvidence)continue;if(a.disabledReasonCodes&&a.disabledReasonCodes.length>0)return Be(a.disabledReasonCodes);if(a.candidates.length>1)return Be([X.AMBIGUOUS]);const c=a.candidates[0];if(c&&!hi(i,c))return Be([X.CONFLICT])}return{target:i.target,targetJobId:i.targetJobId,...i.initialCursor?{initialCursor:i.initialCursor}:{},source:i.source,serverHeldStream:!1}}return Be([X.MISSING])}async function Br(e,t,r,n={}){const i=await We(e,"/api/v1/invoke",t,r,t.privateExecution?{...n,maxAttempts:1,allowReplayRetry:!1}:n);if(i.networkFailure||!i.response)return{ok:!1,status:0,error:"Network error after bounded retries"};const{response:a,text:c,parsed:l}=i;try{if(!a.ok)return t.privateExecution?{ok:!1,status:a.status,error:"private-execution-invoke-unavailable"}:{ok:!1,status:a.status,error:Object.keys(l).length>0?`${l.error_code??"ERROR"}: ${l.message??c}`:`HTTP ${a.status}: ${c}`,errorBody:Object.keys(l).length>0?l:void 0};const p=l,m=a.headers.get("X-Client-Version-Warning");return m&&!wr&&(wr=!0,process.stderr.write(`
|
|
21
|
-
[Neocortex] ${
|
|
22
|
-
|
|
23
|
-
`)),{ok:!0,status:a.status,data:p}}catch(p){return{ok:!1,status:0,error:(p instanceof Error?p.message:String(p)).includes("abort")?`Request timeout after ${er/1e3}s`:"Network error: invalid response"}}}async function Ai(e,t,r){const n=await We(e,"/api/v1/invoke/private-execution/consume",t,r,{maxAttempts:1,allowReplayRetry:!1});if(n.networkFailure||!n.response||!n.response.ok)throw new Error("private-execution-delivery-unavailable");return n.parsed}async function Is(e,t,r){const n=await We(e,"/api/v1/invoke/private-execution/cancel",t,r,{maxAttempts:1,allowReplayRetry:!1});return!!n.response?.ok&&n.parsed.status==="cancelled"}async function wi(e,t,r,n={}){const o=await We(e,"/api/v1/invoke/epic-claims/acknowledge",{...r,registryVersion:xe,registryChecksum:Oe},t,n);return!!o.response?.ok&&o.parsed.status==="ok"&&o.parsed.claimOutcome===r.status}async function Ri(e,t,r,n,o,i={}){if(!o)return 0;const a=Qe(e);let c=0;for(const[l,p]of Object.entries(a.operations))!p.claimId||!p.epicId||!t.epics?.[p.epicId]||!await wi(r,n,{claimId:p.claimId,projectId:o,epicId:p.epicId,status:"materialized"},i)||(to(e,l),c+=1);return c}function vi(e,t){const r=t.state.pendingContinuationAuthorities,n=t.state.continuationSession;if(t.state.continuationPolicy!=="p205-finite-resume-v2"||r?.length!==1||!n)return;const o=r[0],i=o.certificate,a=i?.expectedTransition;if(o.storyIds!=="[CIRCULAR]"||i?.rank!=="[CIRCULAR]"||a?.selectedStoryIds!=="[CIRCULAR]")return;const c=typeof n.epicId=="string"?n.epicId:"",l=e.epics[c],p=Array.isArray(a.storyLifecycle)?a.storyLifecycle:[],m=p.length===1&&typeof p[0]?.storyId=="string"?p[0].storyId:"",f=e.stories[m]?.checkpoint;if(!l||l.branch_mode!=="epic"||typeof l.execution_branch!="string"||typeof l.origin_branch!="string"||l.branch_lease!==void 0&&l.branch_lease!==null||!f||f.qaVerdict!=="passed"||f.reviewVerdict!=="approved"||!Array.isArray(f.receiptRefs))return;const I=(Array.isArray(l.stories)?l.stories.filter(A=>typeof A=="string"):[]).find(A=>{const C=e.stories[A];return!C||["done","completed","merged"].includes(String(C.status))?!1:(Array.isArray(C.depends_on)?C.depends_on.filter(v=>typeof v=="string"):[]).every(v=>["done","completed","merged"].includes(String(e.stories[v]?.status)))});if(I)return{epicId:c,expectedNextStoryId:I,branchMode:"epic",executionBranch:l.execution_branch,originBranch:l.origin_branch,branchLeaseReleased:!0,checkpoint:{schemaVersion:1,storyId:f.storyId,epicId:f.epicId,branch:f.branch,baseSha:f.baseSha,headSha:f.headSha,receiptRefs:[...f.receiptRefs],qaVerdict:"passed",reviewVerdict:"approved"}}}async function bi(e){let t;try{if(t=e.inputEnvelope??qe(e.inputSource??"args",e.args),Tn(t),t.rawArgs!==e.args)throw new Error("INVOKE_INPUT_ENVELOPE_ARGUMENT_CONFLICT")}catch{return{success:!1,error:"INVOCATION_MALFORMED_INPUT: explicit input integrity could not be verified.",errorCode:"INVOCATION_MALFORMED_INPUT",metadata:{invocationInput:{reason:"input-integrity-conflict",remediation:"Retry with exactly one of --args, --stdin or --args-file.",publicSafe:!0}},exitCode:1}}const r=t.rawArgs,n=qt(t);let o=r,i=n;const a=no(r);if(a.outcome!=="resolved"){const s=xn(a,"client"),u=a.outcome==="malformed_input"?a.reason==="input_limit"||a.reason==="token_limit"||a.reason==="token_size_limit"?"input-limit-exceeded":a.reason==="invalid_control"||a.reason==="invalid_surrogate"?"invalid-control-character":a.reason==="unterminated_quote"||a.reason==="trailing_escape"||a.reason==="unsupported_escape"?"unterminated-quote":void 0:void 0,g=u?{code:"INVOCATION_MALFORMED_INPUT",reason:u,source:t.source,byteLength:t.byteLength,remediation:u==="input-limit-exceeded"?"Reduce the explicit command input or split the requested work into bounded invocations.":u==="invalid-control-character"?"Remove invalid control characters and retry with valid UTF-8 text.":"Close quotes and escapes, or use --stdin/--args-file for multiline content."}:void 0;return{success:!1,error:`INVOCATION_${a.outcome.toUpperCase()}`,errorCode:`INVOCATION_${a.outcome.toUpperCase()}`,metadata:{invocationAdmission:s,...g?{invocationInput:g}:{}},exitCode:1}}const c=gt(e.projectRoot),l=a.selection.commandId,p=tn.find(s=>s.id===l),m=p?.subcommands.find(s=>s.id===a.selection.operationId),w=m?m.policy.strictReadOnly==="allow":p?.policy.strictReadOnly==="allow",f=l==="diagnose";let d;try{d=Rn({invocationId:dt(),intent:e.strictReadOnly||f?{schemaVersion:1,policy:Sn,registryVersion:xe,registryChecksum:Oe}:void 0,registryVersion:xe,registryChecksum:Oe,registryAllowsStrict:w,requestCanonicalBytes:JSON.stringify({command:l})})}catch(s){if(s instanceof Me)return{success:!1,error:s.code,errorCode:s.code,exitCode:1};throw s}{d.beginProjection();for(const s of zt)d.project(s);for(const s of An)d.project(s);d.seal()}const I=d.mode==="strict";if(l==="create-epic")try{const s=jn(c);if(s&&s!=="finalized")return{success:!1,error:'PROJECT_IDENTITY_MIGRATION_INCOMPLETE: retry `neocortex-client invoke --args "*migrate-project-id"` before create-epic.',errorCode:"PROJECT_IDENTITY_MIGRATION_INCOMPLETE",metadata:{projectIdentityMigration:{phase:s,publicSafe:!0}},exitCode:1}}catch(s){const u=s instanceof lt?s.code:"PROJECT_IDENTITY_MIGRATION_STATE_CORRUPT";return{success:!1,error:u,errorCode:u,exitCode:1}}const A=e.environment??process.env;if(e.privateExecutionBeta&&(l!=="yolo"&&l!=="research"&&l!=="write-spec"&&l!=="exec"&&l!=="create-epic"||I||e.platformTarget!==void 0&&e.platformTarget!=="codex"))return{success:!1,error:"PRIVATE_EXECUTION_BETA_UNSUPPORTED",errorCode:"PRIVATE_EXECUTION_BETA_UNSUPPORTED",exitCode:1};const C=En({cwd:c,env:A,targetFlag:e.privateExecutionBeta?"codex":e.platformTarget}),j=C.targetId,v=e.privateExecutionBeta?void 0:In({cwd:c,env:A,targetFlag:e.platformTarget,nativeHostVersion:po(C,A)},C);l!=="migrate-project-id"&&d.execute({phase:"client-preflight",domain:"client-persistence",category:"first-run-marker",operation:"create"},()=>ro(),()=>{});const U=To(d),h=(e.serverUrl??U?.serverUrl??rn).replace(/\/+$/,"");if(l==="migrate-project-id"){const s=await Mn(h);if(!s.supported)return{success:!1,error:"PROJECT_IDENTITY_MIGRATION_CAPABILITY_UNAVAILABLE: the server did not advertise the versioned migration capability; no local state was changed.",errorCode:"PROJECT_IDENTITY_MIGRATION_CAPABILITY_UNAVAILABLE",metadata:{projectIdentityMigrationCapability:s},exitCode:1};const u=[];let g;try{g=Dn(c)}catch(b){const ee=b instanceof lt?b.code:"PROJECT_IDENTITY_MIGRATION_PREPARE_FAILED";return{success:!1,error:ee,errorCode:ee,exitCode:1}}u.push(Ue({phase:"prepare",outcome:g.changed&&g.document.phase==="prepared"?"prepared":"retry",floor:g.document.legacyEpicFloor,licenseId:"local-client",projectId:g.document.projectId}));const T=Cr(c);if(T.config.project_id!==g.document.projectId)return{success:!1,error:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",errorCode:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",metadata:{invocationDiagnostics:u},exitCode:1};const G=await Ar(h,U?.licenseKey,d);if(G.status!=="authenticated"){const b=G.status==="refresh-required";return{success:!1,error:b?"Authentication refresh required. Run: neocortex activate YOUR-LICENSE-KEY":"Not authenticated. Visit https://neocortex.sh/portal/login to get your license key, then run: neocortex activate YOUR-LICENSE-KEY",errorCode:b?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",metadata:{invocationDiagnostics:u},exitCode:b?1:2}}let ae;try{ae=Bt(e.args.trim(),T)}catch(b){const ee=b instanceof $t?b.code:"PROJECT_IDENTITY_MIGRATION_PROJECTION_FAILED";return{success:!1,error:ee,errorCode:ee,metadata:{invocationDiagnostics:u},exitCode:1}}let le={args:r,projectRoot:c.replace(De(),"~"),stateSnapshot:ae,platformTarget:j,...v?{nativeHostAttestation:v}:{},projectId:g.document.projectId,projectIdentityMigration:g.request,inputEvidence:n,idempotencyKey:g.document.operationId,registryVersion:xe,registryChecksum:Oe};try{le=Or(le).body}catch(b){if(b instanceof It||b instanceof Et)return{success:!1,error:b.message,errorCode:b.code,metadata:{invokePayload:b.telemetry,invocationDiagnostics:u},exitCode:1};throw b}const z=await Jt("invoke-query",()=>Br(h,le,G.token,{refreshToken:()=>G.client.forceRefresh()}));if(!z.ok||!z.data)return u.push(Ue({phase:"seed",outcome:"rejected",floor:g.document.legacyEpicFloor,licenseId:"local-client",projectId:g.document.projectId})),{success:!1,error:de(z.error??"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",ke),errorCode:typeof z.errorBody?.error_code=="string"?z.errorBody.error_code:"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",metadata:{invocationDiagnostics:u},exitCode:z.status===401?2:1};const Q=z.data.metadata?.projectIdentityMigration;try{On(Q),u.push(Ue({phase:"seed",outcome:Q.status,floor:Q.acceptedLegacyFloor,licenseId:"local-client",projectId:Q.projectId})),Ln(c,Q),u.push(Ue({phase:"remote-acknowledged",outcome:Q.status,floor:Q.acceptedLegacyFloor,licenseId:"local-client",projectId:Q.projectId})),Pn(c,Q),u.push(Ue({phase:"finalize",outcome:"finalized",floor:Q.acceptedLegacyFloor,licenseId:"local-client",projectId:Q.projectId}))}catch(b){u.push(Ue({phase:"reconcile",outcome:"rejected",floor:g.document.legacyEpicFloor,licenseId:"local-client",projectId:g.document.projectId}));const ee=b instanceof lt?b.code:b instanceof Error?b.message:"PROJECT_IDENTITY_MIGRATION_RECEIPT_INVALID";return{success:!1,error:ee,errorCode:ee,metadata:{invocationDiagnostics:u},exitCode:1}}return d.complete(),{success:!0,instructions:z.data.instructions,metadata:{...z.data.metadata,invocationDiagnostics:u},exitCode:0}}try{const{normalizeYoloopTargetArgs:s}=await import("../yoloop/target-normalization.js"),u=s(e.args,{projectRoot:c});if(!u.ok)return process.stderr.write(`${u.message} reason=${u.reasonCode}
|
|
24
|
-
`),{success:!1,error:
|
|
25
|
-
`))}catch{const
|
|
26
|
-
`),{success:!1,error:
|
|
27
|
-
`),{success:!1,error:
|
|
28
|
-
`),{success:!1,error:
|
|
29
|
-
`),{success:!1,error:
|
|
30
|
-
`),{success:!1,error:
|
|
31
|
-
`),warn:
|
|
32
|
-
`)}};
|
|
33
|
-
`)}try{const{readYoloopForRequest:
|
|
34
|
-
`),{success:!1,error:
|
|
35
|
-
`)}try{const{maybeRunDiscoveryHook:
|
|
36
|
-
`)}try{const{readArchitecturePolicy:
|
|
37
|
-
`)}});
|
|
38
|
-
`)}try{if(
|
|
39
|
-
`)}try{const
|
|
40
|
-
`)}const
|
|
41
|
-
`),{success:!1,error:
|
|
42
|
-
`),!
|
|
43
|
-
`),{success:!1,error:
|
|
44
|
-
`),{success:!1,error:
|
|
45
|
-
`),{success:!1,error:
|
|
46
|
-
`),{success:!1,error:
|
|
47
|
-
`)
|
|
20
|
+
`);return}if(t==="json"){a.write(JSON.stringify(Zi(e))+`
|
|
21
|
+
`);return}a.write(Qi(e)+`
|
|
22
|
+
`)}function Sn(e){return ii.has(e.status)}function to(e,t,a){if(t){const i=e.find(n=>n.jobId===t);return!!(i&&Sn(i))}return a<=0?!1:e.filter(i=>!Sn(i)).length===0}function no(e,t,a,r){return a<r?!1:t?!e.some(i=>i.jobId===t&&!Sn(i)):e.length===0}function ro(e,t){return t?.aborted?Promise.resolve():new Promise(a=>{const r=setTimeout(i,e);function i(){clearTimeout(r),t?.removeEventListener("abort",i),a()}t?.addEventListener("abort",i,{once:!0})})}function ao(e){return e.includes(Se.MALFORMED)?"malformed":e.includes(Se.AMBIGUOUS)?"ambiguous":e.includes("watch-target-multiple")?"multiple":e.includes("watch-evidence-unsafe")?"unsafe":e.includes(Se.MISSING)||e.includes(fe.TARGET_UNRESOLVED)?"unresolved":"unavailable"}function Lr(e,t){const a=t?bt(t):void 0,r=we([...e,fe.TARGET_UNRESOLVED,H.WATCH_TARGET_UNRESOLVED]),i=En(a,a?.targetId,ao(r),r),n=Ye({generatedAt:new Date().toISOString()},[],!1,0,[H.WATCH_TARGET_UNRESOLVED]),o=He(void 0,void 0,void 0,[],[H.WATCH_TARGET_UNRESOLVED],"unavailable");return We({watchStatus:"blocked",active:!1,targetEvidence:i,snapshotEvidence:n,cursorEvidence:o,stopReason:"target_unresolved",reasonCodes:r,generatedAt:n.generatedAt})}function io(e,t,a,r,i=!1){const n=Lr(e,jr(t));return Ge(n,a,r,i),Je("target-unresolved",0,0,n,i)}async function oo(e){if(e.signal?.aborted){const w=En(e.target??bt(e.targetJobId),e.targetJobId,e.target??e.targetJobId?"resolved":"unresolved",[fe.CANCELLED]),v=Ye(void 0,[],!1,0),O=He(e.initialCursor,e.initialCursor,e.initialCursor,[],[fe.CANCELLED],"unavailable"),k=We({watchStatus:"stopped",active:!1,targetEvidence:w,snapshotEvidence:v,cursorEvidence:O,stopReason:"cancelled",reasonCodes:[fe.CANCELLED]});return Je("cancelled",0,0,k,e.protectedOutput)}const t=e.target??bt(e.targetJobId),a=e.targetJobId??t?.targetId,r=e.stdout??process.stdout;if(!t){const w=Lr([Se.MISSING,fe.TARGET_UNRESOLVED]);return Ge(w,e.format,r,e.protectedOutput),Je("target-unresolved",0,0,w,e.protectedOutput)}const i=Yt(e.limit??Jt("NEOCORTEX_INVOKE_WATCH_LIMIT",Hn),Hn,50),n=Math.max(50,Yt(e.pollIntervalMs??Jt("NEOCORTEX_INVOKE_WATCH_POLL_INTERVAL_MS",Fn),Fn,6e4)),o=Yt(e.maxIdlePolls??Jt("NEOCORTEX_INVOKE_WATCH_MAX_IDLE_POLLS",Wn),Wn,120),s=Yt(e.maxPolls??Jt("NEOCORTEX_INVOKE_WATCH_MAX_POLLS",Gn),Gn,86400),p=e.sleep??ro;let g=e.initialCursor,E=0,_=0,l=0;const m=En(t,a,"resolved",[H.OK]),u={schemaVersion:1,contractVersion:"continuity-v1",snapshotStatus:"pending",renderedSummaryCount:0,reasonCodes:[H.WATCH_RENDER_PENDING],publicSafe:!0},S=He(e.initialCursor,g,g,[],e.initialCursor?[H.WATCH_CURSOR_UNCHANGED]:[H.WATCH_NO_SUMMARIES_YET],e.initialCursor?"unchanged":"not_started");Ge(We({watchStatus:"active",active:!0,targetEvidence:m,snapshotEvidence:u,cursorEvidence:S,stopReason:"not_stopped",reasonCodes:[H.OK]}),e.format,r,e.protectedOutput);let C;try{C=await ma({projectRoot:e.projectRoot,strictReadOnly:e.strictReadOnly})}catch{const w=Ye(void 0,[],!1,E,[H.WATCH_SNAPSHOT_UNAVAILABLE]),v=He(e.initialCursor,g,g,[],[H.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),O=We({watchStatus:"blocked",active:!1,targetEvidence:m,snapshotEvidence:w,cursorEvidence:v,stopReason:"unavailable_evidence",reasonCodes:[fe.STORE_UNAVAILABLE]});return Ge(O,e.format,r,e.protectedOutput),Je("store-unavailable",E,l,O,e.protectedOutput)}try{for(;!e.signal?.aborted&&l<s;){l+=1;const w=g,v=C.collectProcessingOutputSummaryCursor({...g?{cursor:g}:{},...t?{target:t}:{},...a?{jobId:a}:{},limit:i}),O=C.collectSnapshot({jobLimit:50,processingSummaryLimit:1}),k=O.jobs;if(v.summaries.length>0){for(const $ of v.summaries)eo($,e.format,r,e.protectedOutput),E+=1;g=v.nextCursor??v.summaries[v.summaries.length-1]?.cursor??g,_=0}else g=v.nextCursor??g,_+=1;const D=Ye(O,v.summaries,!0,v.summaries.length),F=He(e.initialCursor,w,g,v.summaries,v.summaries.length>0?[H.WATCH_CURSOR_ADVANCED]:[H.WATCH_NO_SUMMARIES_YET]);if(Ge(We({watchStatus:v.summaries.length>0?"polling":"waiting",active:!0,targetEvidence:m,snapshotEvidence:D,cursorEvidence:F,stopReason:"not_stopped",reasonCodes:v.summaries.length>0?[H.WATCH_CURSOR_ADVANCED]:[H.WATCH_NO_SUMMARIES_YET],generatedAt:O.generatedAt}),e.format,r,e.protectedOutput),!v.hasMore&&to(k,a,E)){const $=Ye(O,v.summaries,!1,E,[fe.COMPLETED]),j=He(e.initialCursor,w,g,v.summaries,[fe.COMPLETED],"exhausted"),B=We({watchStatus:"stopped",active:!1,targetEvidence:m,snapshotEvidence:$,cursorEvidence:j,stopReason:"not_stopped",reasonCodes:[fe.COMPLETED],generatedAt:O.generatedAt});return Ge(B,e.format,r,e.protectedOutput),Je("completed",E,l,B,e.protectedOutput)}if(!v.hasMore&&no(k,a,_,o)){const $=Ye(O,v.summaries,!1,E,[H.WATCH_STOP_IDLE_LIMIT_REACHED]),j=He(e.initialCursor,w,g,v.summaries,[H.WATCH_STOP_IDLE_LIMIT_REACHED],"exhausted"),B=We({watchStatus:"stopped",active:!1,targetEvidence:m,snapshotEvidence:$,cursorEvidence:j,stopReason:"idle_limit_reached",reasonCodes:[fe.IDLE_TIMEOUT,H.WATCH_STOP_IDLE_LIMIT_REACHED],generatedAt:O.generatedAt});return Ge(B,e.format,r,e.protectedOutput),Je("idle-timeout",E,l,B,e.protectedOutput)}v.hasMore||await p(n,e.signal)}}catch{const w=Ye(void 0,[],!1,E,[H.WATCH_SNAPSHOT_UNAVAILABLE]),v=He(e.initialCursor,g,g,[],[H.WATCH_EVIDENCE_UNAVAILABLE],"unavailable"),O=We({watchStatus:"blocked",active:!1,targetEvidence:m,snapshotEvidence:w,cursorEvidence:v,stopReason:"unavailable_evidence",reasonCodes:[fe.STORE_UNAVAILABLE]});return Ge(O,e.format,r,e.protectedOutput),Je("store-unavailable",E,l,O,e.protectedOutput)}finally{C.close()}if(e.signal?.aborted){const w=Ye(void 0,[],!1,E,[fe.CANCELLED]),v=He(e.initialCursor,g,g,[],[fe.CANCELLED],"unavailable"),O=We({watchStatus:"stopped",active:!1,targetEvidence:m,snapshotEvidence:w,cursorEvidence:v,stopReason:"cancelled",reasonCodes:[fe.CANCELLED]});return Ge(O,e.format,r,e.protectedOutput),Je("cancelled",E,l,O,e.protectedOutput)}const L=Ye(void 0,[],!1,E,[H.WATCH_STOP_MAX_POLLS_REACHED]),b=He(e.initialCursor,g,g,[],[H.WATCH_STOP_MAX_POLLS_REACHED],"exhausted"),Y=We({watchStatus:"stopped",active:!1,targetEvidence:m,snapshotEvidence:L,cursorEvidence:b,stopReason:"max_polls_reached",reasonCodes:[fe.MAX_POLLS,H.WATCH_STOP_MAX_POLLS_REACHED]});return Ge(Y,e.format,r,e.protectedOutput),Je("max-polls",E,l,Y,e.protectedOutput)}function Ue(e){const t=e.trim().replace(/^@/,"").match(/^(job|goal|loop)-([JGL])(\d{3,})$/i);if(!t)return;const a=t[1].toLowerCase(),r=t[2].toUpperCase();if(!(a==="job"&&r!=="J"||a==="goal"&&r!=="G"||a==="loop"&&r!=="L"))return`${a}-${r}${t[3]}`}function vn(e){if(e.startsWith("job-J"))return"job";if(e.startsWith("goal-G"))return"goal";if(e.startsWith("loop-L"))return"loop"}function Dr(e){const t=[],a=/(?:^|[\s"'([,{])@?(job-[Jj]\d{3,}|goal-[Gg]\d{3,}|loop-[Ll]\d{3,})(?=$|[\s"')\]},.;:!?])/g;let r;for(;(r=a.exec(e))!==null;){const i=Ue(r[1]);i&&t.push(i)}return we(t)}function jr(e){return Dr(e)[0]}function bt(e){const t=e?Ue(e):void 0;if(t){if(t.startsWith("job-J"))return{selectorKind:"job",targetId:t,jobId:t,publicSafe:!0};if(t.startsWith("goal-G"))return{selectorKind:"goal",targetId:t,goalId:t,publicSafe:!0};if(t.startsWith("loop-L"))return{selectorKind:"loop",targetId:t,loopId:t,publicSafe:!0}}}function Cn(e){return we(e.filter(t=>typeof t=="string").map(t=>Ue(t)).filter(t=>!!t?.startsWith("job-J")))}function co(e,t){const a=Cn(t).filter(r=>r!==e.targetId&&r!==e.jobId);return a.length>0?{...e,relatedJobIds:a}:e}function so(e){if(!e)return;const t=h(e.target)?e.target:void 0,a=typeof e.selectorKind=="string"?e.selectorKind:typeof t?.selectorKind=="string"?t.selectorKind:void 0,r=typeof e.targetId=="string"?Ue(e.targetId):typeof t?.targetId=="string"?Ue(t.targetId):typeof e.targetJobId=="string"?Ue(e.targetJobId):void 0,i=bt(r);if(!i||a&&a!==i.selectorKind)return;const n=Array.isArray(e.relatedJobIds)?e.relatedJobIds:Array.isArray(t?.relatedJobIds)?t.relatedJobIds:void 0,o=Cn([...n??[],e.jobId,t?.jobId,e.targetJobId,t?.targetJobId]).filter(s=>s!==i.targetId&&s!==i.jobId);return{...i,...typeof(e.jobId??t?.jobId)=="string"?{jobId:Ue(e.jobId??t?.jobId)??i.jobId}:{},...typeof(e.goalId??t?.goalId)=="string"?{goalId:Ue(e.goalId??t?.goalId)??i.goalId}:{},...typeof(e.loopId??t?.loopId)=="string"?{loopId:Ue(e.loopId??t?.loopId)??i.loopId}:{},...o.length>0?{relatedJobIds:o}:{}}}function Mr(e){const t=e.trim().split(/\s+/).filter(Boolean),a=t[0]?.replace(/^\*/,"").toLowerCase(),r=t[1]?.replace(/^--/,"").toLowerCase();return(a==="jobs"||a==="job"||a==="continuity-jobs"||a==="61")&&r==="watch"}const Ie=Object.freeze({ACTIVE:"command-level-watch-active",INACTIVE:"command-level-watch-inactive",DUPLICATE:"command-level-watch-duplicate",AMBIGUOUS:"command-level-watch-ambiguous",QUOTED:"command-level-watch-quoted",MALFORMED:"command-level-watch-malformed",NON_FINAL:"command-level-watch-non-final",UNRESOLVED:"command-level-watch-unresolved",UNSUPPORTED:"command-level-watch-unsupported",TARGET_INVALID:"command-level-watch-target-invalid"}),uo=new Set(["create","start","resume"]),po=new Set(["create","resume","run-once"]);function _n(e,t,a,r,i){return{schemaVersion:1,contractVersion:"continuity-v1",...a?{command:a}:{},...r?{operation:r}:{},active:e,...i?{watchToken:i}:{},reasonCodes:we(t),serverHeldStream:!1,allJobsPolling:!1,targetResolution:e?"required-after-dispatch":"inactive",publicSafe:!0}}function ve(e,t=[],a,r){const i=t.length>0?t:[Ie.INACTIVE];return{args:e,watch:!1,reasonCodes:i,metadata:_n(!1,i,a,r),publicSafe:!0}}function lo(e){const t=e.trim().split(/\s+/).filter(Boolean),a=t.slice(2).filter(n=>n==="--watch").length;if(a===0)return ve(e,[],"jobs","watch");if(a!==1)return ve(e,[Ie.AMBIGUOUS],"jobs","watch");const r=t.filter((n,o)=>o<2||n!=="--watch").join(" ");return Mr(r)?r.trim().split(/\s+/).filter(Boolean).slice(2).length!==1?ve(e,[Ie.AMBIGUOUS],"jobs","watch"):jr(r)?{args:r,watch:!0,reasonCodes:[Ie.ACTIVE],metadata:_n(!0,[Ie.ACTIVE],"jobs","watch"),publicSafe:!0}:ve(e,[Ie.TARGET_INVALID],"jobs","watch"):ve(e,[Ie.UNSUPPORTED],"jobs","watch")}function ho(e){const t=[];let a=!1,r=0;for(;r<e.length;){for(;r<e.length&&/\s/.test(e[r]);)r+=1;if(r>=e.length)break;const i=r;let n="",o=!1,s=null;for(;r<e.length;){const p=e[r];if(s){if(p===s){o=!0,s=null,r+=1;continue}if(p==="\\"&&r+1<e.length){n+=e[r+1],r+=2;continue}n+=p,r+=1;continue}if(/\s/.test(p))break;if(p==='"'||p==="'"){o=!0,s=p,r+=1;continue}n+=p,r+=1}s&&(a=!0),t.push({value:n,start:i,end:r,quoted:o})}return{tokens:t,malformed:a}}function go(e){if(!e||e.quoted)return;const t=e.value.replace(/^\*/,"").toLowerCase();return t==="goal"||t==="loop"?t:void 0}function fo(e,t){if(!e||e==="jobs"||!t||t.quoted)return;const a=t.value.toLowerCase();return(e==="goal"?uo:po).has(a)?a:void 0}function mo(e){return!e.quoted&&e.value!=="--watch"&&e.value.toLowerCase().startsWith("--watch")}function yo(e){const{tokens:t,malformed:a}=ho(e),r=go(t[0]),i=fo(r,t[1]);if(a)return ve(e,[Ie.MALFORMED],r,i);const n=t.filter(l=>l.value==="--watch"&&!l.quoted),o=t.filter(l=>l.value==="--watch"&&l.quoted),s=t.filter(mo);if(!(n.length>0||o.length>0||s.length>0))return ve(e,[],r,i);if(n.length>1)return ve(e,[Ie.DUPLICATE],r,i);if(n.length===1&&(o.length>0||s.length>0))return ve(e,[Ie.AMBIGUOUS],r,i);if(o.length>0)return ve(e,[Ie.QUOTED],r,i);if(s.length>0)return ve(e,[Ie.MALFORMED],r,i);const g=n[0];if(!g)return ve(e,[],r,i);if(t[t.length-1]!==g)return ve(e,[Ie.NON_FINAL],r,i);if(!r||!i)return ve(e,[Ie.UNRESOLVED],r,i);const E=`${e.slice(0,g.start)}${e.slice(g.end)}`.trim(),_={literal:"--watch",position:"final",start:g.start,end:g.end,quoted:!1,publicSafe:!0};return{args:E,watch:!0,reasonCodes:[Ie.ACTIVE],metadata:_n(!0,[Ie.ACTIVE],r,i,_),publicSafe:!0}}function Io(e){return Mr(e)?lo(e):yo(e)}function Eo(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&oi.has(t)):[]}function It(e){return{disabled:!0,reasonCodes:we(e.length>0?e:[Se.MISSING])}}function wn(e,t,a=[],r){const i=bt(t);if(i)return{source:e,target:co(i,a),targetJobId:i.targetId,...r?{initialCursor:r}:{},serverHeldStream:!1}}function So(e){const t=new Map;for(const a of e){const r=`${a.target.selectorKind}:${a.target.targetId}`,i=t.get(r);if(!i){t.set(r,a);continue}const n=we([...i.target.relatedJobIds??[],...a.target.relatedJobIds??[]]);t.set(r,{...i,target:n.length>0?{...i.target,relatedJobIds:n}:i.target,initialCursor:i.initialCursor??a.initialCursor})}return Array.from(t.values())}function et(e,t,a,r){return{source:e,hasEvidence:t,candidates:So(a.filter(i=>!!i)),...r&&r.length>0?{disabledReasonCodes:we(r)}:{}}}function vo(e,t){return e.target.selectorKind===t.target.selectorKind&&e.target.targetId===t.target.targetId}function Tt(e,t){const a=we(e.filter(r=>typeof r=="string").map(r=>Ue(r)).filter(r=>!!r));if(t){const r=a.find(i=>vn(i)===t);if(r)return r}return a[0]}function zt(e,t){return we(e.filter(a=>typeof a=="string").map(a=>Ue(a)).filter(a=>!!a)).find(a=>vn(a)===t)}function Co(e){const t=h(e?.continuity)?e.continuity:void 0,a=h(t?.jobs)?t.jobs:void 0,r=h(a?.watcher)?a.watcher:void 0,i=Eo(r?.reasonCodes??a?.reasonCodes);if(!r)return et("watcher-metadata",i.length>0,[],i);if(r.active===!1||i.length>0)return et("watcher-metadata",!0,[],i.length>0?i:[Se.MALFORMED]);if(r.serverHeldStream!==!1)return et("watcher-metadata",!0,[],[Se.SERVER_HELD_STREAM]);const n=so(r);if(!n)return et("watcher-metadata",!0,[],[Se.MISSING]);const o=typeof r.initialCursor=="string"?r.initialCursor:void 0;return et("watcher-metadata",!0,[{source:"watcher-metadata",target:n,targetJobId:n.targetId,...o?{initialCursor:o}:{},serverHeldStream:!1}])}function Vr(e,t){const a=h(e.loopJobPlan)?e.loopJobPlan:void 0,r=h(a?.metadata)?a.metadata:void 0,i=h(e.metadata)?e.metadata:void 0,o=(t==="goal"?Tt([e.goalId,e.targetGoalId,e.campaignId,e.jobId,e.targetJobId,i?.goalId,i?.campaignId,i?.jobId],"goal"):Tt([e.loopId,e.targetLoopId,e.jobId,e.targetJobId,i?.loopId,i?.jobId,r?.loopId,r?.jobId],"loop"))??Tt([e.jobId,e.targetJobId,i?.jobId,r?.jobId]);return wn("goal-loop-continuity-metadata",o,[e.jobId,e.targetJobId,i?.jobId,r?.jobId])}function _o(e){const t=h(e?.continuity)?e.continuity:void 0,a=h(t?.goal)?t.goal:void 0,r=h(t?.loop)?t.loop:void 0,i=[a?Vr(a,"goal"):void 0,r?Vr(r,"loop"):void 0],n=!!(a||r);return et("goal-loop-continuity-metadata",n,i,n&&i.every(o=>!o)?[Se.MISSING]:void 0)}function wo(e){return Array.isArray(e)?e.filter(h):h(e)?Array.isArray(e.operationLogs)?e.operationLogs.filter(h):h(e.operationLog)?[e.operationLog]:Array.isArray(e.operations)?[e]:[]:[]}function Ur(e,t){const a=h(t.metadata)?t.metadata:void 0,r=zt([t.goalId,t.targetGoalId,t.campaignId,a?.goalId,a?.campaignId,t.jobId,a?.jobId],"goal"),i=zt([t.loopId,t.targetLoopId,a?.loopId,t.jobId,a?.jobId],"loop"),n=Tt([t.jobId,t.targetJobId,a?.jobId],"job"),o=r??i??n;if(!o)return;const s=e.get(o)??{targetId:o,relatedJobIds:[]};s.relatedJobIds.push(...Cn([n,t.jobId,t.targetJobId,a?.jobId])),e.set(o,s)}function Ao(e){const t=h(e.metadata)?e.metadata:void 0;return!!(zt([e.goalId,e.targetGoalId,e.campaignId,t?.goalId,t?.campaignId,e.jobId,t?.jobId],"goal")??zt([e.loopId,e.targetLoopId,t?.loopId,e.jobId,t?.jobId],"loop"))}function Ro(e){const t=h(e.metadata)?e.metadata:void 0;return!!Tt([e.goalId,e.targetGoalId,e.campaignId,e.loopId,e.targetLoopId,e.jobId,e.targetJobId,t?.goalId,t?.campaignId,t?.loopId,t?.jobId])}function $r(e,t){const a=[];for(const o of["metadata","job","event","receipt","processingOutputSummary"]){const s=t[o];h(s)&&a.push(s)}const r=h(t.event)?t.event:void 0;h(r?.metadata)&&a.push(r.metadata),h(r?.processingOutputSummary)&&a.push(r.processingOutputSummary);const i=h(t.receipt)?t.receipt:void 0;h(i?.metadata)&&a.push(i.metadata);const n=a.some(Ro);for(const o of a)Ur(e,o);(!n||Ao(t))&&Ur(e,t)}function bo(e){const t=wo(e?.continuityStateUpdate),a=new Map;for(const i of t){$r(a,i);const n=Array.isArray(i.operations)?i.operations.filter(h):[];for(const o of n)$r(a,o)}const r=Array.from(a.values()).map(i=>wn("continuity-state-update-operation-log",i.targetId,i.relatedJobIds));return et("continuity-state-update-operation-log",t.length>0,r,t.length>0&&r.every(i=>!i)?[Se.MISSING]:void 0)}function To(e){const t=Dr(e);return et("explicit-args",t.length>0,t.map(a=>wn("explicit-args",a)))}function xo(e,t){const a=[Co(e),_o(e),bo(e),To(t)];for(let r=0;r<a.length;r+=1){const i=a[r];if(!i.hasEvidence)continue;if(i.disabledReasonCodes&&i.disabledReasonCodes.length>0)return It(i.disabledReasonCodes);if(i.candidates.length!==1)return It([i.candidates.length>1?Se.AMBIGUOUS:Se.MISSING]);const n=i.candidates[0];for(const o of a.slice(r+1)){if(!o.hasEvidence)continue;if(o.disabledReasonCodes&&o.disabledReasonCodes.length>0)return It(o.disabledReasonCodes);if(o.candidates.length>1)return It([Se.AMBIGUOUS]);const s=o.candidates[0];if(s&&!vo(n,s))return It([Se.CONFLICT])}return{target:n.target,targetJobId:n.targetJobId,...n.initialCursor?{initialCursor:n.initialCursor}:{},source:n.source,serverHeldStream:!1}}return It([Se.MISSING])}async function Br(e,t,a,r={}){const n=await Rt(e,"/api/v1/invoke",t,a,t.privateExecution?{...r,maxAttempts:1,allowReplayRetry:!1}:r);if(n.networkFailure||!n.response)return{ok:!1,status:0,error:"Network error after bounded retries"};const{response:o,text:s,parsed:p}=n;try{if(!o.ok)return t.privateExecution?{ok:!1,status:o.status,error:"private-execution-invoke-unavailable"}:{ok:!1,status:o.status,error:Object.keys(p).length>0?`${p.error_code??"ERROR"}: ${p.message??s}`:`HTTP ${o.status}: ${s}`,errorBody:Object.keys(p).length>0?p:void 0};const g=p,E=o.headers.get("X-Client-Version-Warning");return E&&!Ar&&(Ar=!0,process.stderr.write(`
|
|
23
|
+
[Neocortex] ${E}
|
|
24
|
+
|
|
25
|
+
`)),{ok:!0,status:o.status,data:g}}catch(g){return{ok:!1,status:0,error:(g instanceof Error?g.message:String(g)).includes("abort")?`Request timeout after ${er/1e3}s`:"Network error: invalid response"}}}async function ko(e,t,a){const r=await Rt(e,"/api/v1/invoke/private-execution/consume",t,a,{maxAttempts:1,allowReplayRetry:!1});if(r.networkFailure||!r.response||!r.response.ok)throw new Error("private-execution-delivery-unavailable");return r.parsed}async function Lc(e,t,a){const r=await Rt(e,"/api/v1/invoke/private-execution/cancel",t,a,{maxAttempts:1,allowReplayRetry:!1});return!!r.response?.ok&&r.parsed.status==="cancelled"}async function Po(e,t,a,r={}){const i=await Rt(e,"/api/v1/invoke/epic-claims/acknowledge",{...a,registryVersion:ot,registryChecksum:it},t,r);return!!i.response?.ok&&i.parsed.status==="ok"&&i.parsed.claimOutcome===a.status}async function Oo(e,t,a,r,i,n={}){if(!i)return 0;const o=Bt(e);let s=0;for(const[p,g]of Object.entries(o.operations))!g.claimId||!g.epicId||!t.epics?.[g.epicId]||!await Po(a,r,{claimId:g.claimId,projectId:i,epicId:g.epicId,status:"materialized"},n)||(ni(e,p),s+=1);return s}function No(e,t){const a=t.state.pendingContinuationAuthorities,r=t.state.continuationSession;if(t.state.continuationPolicy!=="p205-finite-resume-v2"||a?.length!==1||!r)return;const i=a[0],n=i.certificate,o=n?.expectedTransition;if(i.storyIds!=="[CIRCULAR]"||n?.rank!=="[CIRCULAR]"||o?.selectedStoryIds!=="[CIRCULAR]")return;const s=typeof r.epicId=="string"?r.epicId:"",p=e.epics[s],g=Array.isArray(o.storyLifecycle)?o.storyLifecycle:[],E=g.length===1&&typeof g[0]?.storyId=="string"?g[0].storyId:"",l=e.stories[E]?.checkpoint;if(!p||p.branch_mode!=="epic"||typeof p.execution_branch!="string"||typeof p.origin_branch!="string"||p.branch_lease!==void 0&&p.branch_lease!==null||!l||l.qaVerdict!=="passed"||l.reviewVerdict!=="approved"||!Array.isArray(l.receiptRefs))return;const u=(Array.isArray(p.stories)?p.stories.filter(S=>typeof S=="string"):[]).find(S=>{const C=e.stories[S];return!C||["done","completed","merged"].includes(String(C.status))?!1:(Array.isArray(C.depends_on)?C.depends_on.filter(b=>typeof b=="string"):[]).every(b=>["done","completed","merged"].includes(String(e.stories[b]?.status)))});if(u)return{epicId:s,expectedNextStoryId:u,branchMode:"epic",executionBranch:p.execution_branch,originBranch:p.origin_branch,branchLeaseReleased:!0,checkpoint:{schemaVersion:1,storyId:l.storyId,epicId:l.epicId,branch:l.branch,baseSha:l.baseSha,headSha:l.headSha,receiptRefs:[...l.receiptRefs],qaVerdict:"passed",reviewVerdict:"approved"}}}async function Lo(e){let t;try{if(t=e.inputEnvelope??Mt(e.inputSource??"args",e.args),xa(t),t.rawArgs!==e.args)throw new Error("INVOKE_INPUT_ENVELOPE_ARGUMENT_CONFLICT")}catch{return{success:!1,error:"INVOCATION_MALFORMED_INPUT: explicit input integrity could not be verified.",errorCode:"INVOCATION_MALFORMED_INPUT",metadata:{invocationInput:{reason:"input-integrity-conflict",remediation:"Retry with exactly one of --args, --stdin or --args-file.",publicSafe:!0}},exitCode:1}}const a=t.rawArgs,r=zn(t);let i=a,n=r;const o=ai(a);if(o.outcome!=="resolved"){const c=Pa(o,"client"),d=o.outcome==="malformed_input"?o.reason==="input_limit"||o.reason==="token_limit"||o.reason==="token_size_limit"?"input-limit-exceeded":o.reason==="invalid_control"||o.reason==="invalid_surrogate"?"invalid-control-character":o.reason==="unterminated_quote"||o.reason==="trailing_escape"||o.reason==="unsupported_escape"?"unterminated-quote":void 0:void 0,y=d?{code:"INVOCATION_MALFORMED_INPUT",reason:d,source:t.source,byteLength:t.byteLength,remediation:d==="input-limit-exceeded"?"Reduce the explicit command input or split the requested work into bounded invocations.":d==="invalid-control-character"?"Remove invalid control characters and retry with valid UTF-8 text.":"Close quotes and escapes, or use --stdin/--args-file for multiline content."}:void 0;return{success:!1,error:`INVOCATION_${o.outcome.toUpperCase()}`,errorCode:`INVOCATION_${o.outcome.toUpperCase()}`,metadata:{invocationAdmission:c,...y?{invocationInput:y}:{}},exitCode:1}}const s=cn(e.projectRoot),p=o.selection.commandId,g=p==="tech-debt"&&o.selection.positionals.length===0&&(o.selection.operationId==="scan"&&Object.keys(o.selection.options).length===0||o.selection.operationId===void 0&&o.selection.options.scan===!0&&Object.keys(o.selection.options).length===1),E=Zr.find(c=>c.id===p),_=E?.subcommands.find(c=>c.id===o.selection.operationId),l=_?_.policy.strictReadOnly==="allow":E?.policy.strictReadOnly==="allow",m=p==="diagnose";let u;try{u=Ra({invocationId:Lt(),intent:e.strictReadOnly||m?{schemaVersion:1,policy:_a,registryVersion:ot,registryChecksum:it}:void 0,registryVersion:ot,registryChecksum:it,registryAllowsStrict:l,requestCanonicalBytes:JSON.stringify({command:p})})}catch(c){if(c instanceof ft)return{success:!1,error:c.code,errorCode:c.code,exitCode:1};throw c}{u.beginProjection();for(const c of Jn)u.project(c);for(const c of wa)u.project(c);u.seal()}const S=u.mode==="strict";if(p==="create-epic"||p==="idea-diagnose")try{const c=Ma(s);if(c&&c!=="finalized")return{success:!1,error:'PROJECT_IDENTITY_MIGRATION_INCOMPLETE: retry `neocortex-client invoke --args "*migrate-project-id"` before create-epic.',errorCode:"PROJECT_IDENTITY_MIGRATION_INCOMPLETE",metadata:{projectIdentityMigration:{phase:c,publicSafe:!0}},exitCode:1}}catch(c){const d=c instanceof nn?c.code:"PROJECT_IDENTITY_MIGRATION_STATE_CORRUPT";return{success:!1,error:d,errorCode:d,exitCode:1}}const C=e.environment??process.env;if(e.privateExecutionBeta&&(p!=="yolo"&&p!=="research"&&p!=="write-spec"&&p!=="create-tasks"&&p!=="implement"&&p!=="exec"&&p!=="create-epic"&&p!=="idea-diagnose"&&p!=="idea-research"&&p!=="generate-epic"&&p!=="sync-openapi"&&p!=="arch-prd"&&p!=="arch-architecture"&&p!=="arch-fitness-functions"&&p!=="arch-api-contracts"&&p!=="arch-api-integrations"&&p!=="arch-database"&&p!=="arch-security"&&p!=="arch-design-system"&&p!=="arch-performance"&&p!=="arch-testing"&&p!=="arch-infrastructure"&&p!=="arch-review"&&p!=="update-memory"&&p!=="arch-ux-design"&&p!=="generate-pacts"&&!g||S||e.platformTarget!==void 0&&e.platformTarget!=="codex"))return{success:!1,error:"PRIVATE_EXECUTION_BETA_UNSUPPORTED",errorCode:"PRIVATE_EXECUTION_BETA_UNSUPPORTED",exitCode:1};const L=Sa({cwd:s,env:C,targetFlag:e.privateExecutionBeta?"codex":e.platformTarget}),b=L.targetId,Y=e.privateExecutionBeta?void 0:Ea({cwd:s,env:C,targetFlag:e.platformTarget,nativeHostVersion:li(L,C)},L);p!=="migrate-project-id"&&u.execute({phase:"client-preflight",domain:"client-persistence",category:"first-run-marker",operation:"create"},()=>ri(),()=>{});const w=Li(u),v=(e.serverUrl??w?.serverUrl??ta).replace(/\/+$/,"");if(p==="migrate-project-id"){const c=await Va(v);if(!c.supported)return{success:!1,error:"PROJECT_IDENTITY_MIGRATION_CAPABILITY_UNAVAILABLE: the server did not advertise the versioned migration capability; no local state was changed.",errorCode:"PROJECT_IDENTITY_MIGRATION_CAPABILITY_UNAVAILABLE",metadata:{projectIdentityMigrationCapability:c},exitCode:1};const d=[];let y;try{y=ja(s)}catch(M){const ue=M instanceof nn?M.code:"PROJECT_IDENTITY_MIGRATION_PREPARE_FAILED";return{success:!1,error:ue,errorCode:ue,exitCode:1}}d.push(mt({phase:"prepare",outcome:y.changed&&y.document.phase==="prepared"?"prepared":"retry",floor:y.document.legacyEpicFloor,licenseId:"local-client",projectId:y.document.projectId}));const T=vr(s);if(T.config.project_id!==y.document.projectId)return{success:!1,error:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",errorCode:"PROJECT_IDENTITY_MIGRATION_STATE_DRIFT",metadata:{invocationDiagnostics:d},exitCode:1};const q=await wr(v,w?.licenseKey,u);if(q.status!=="authenticated"){const M=q.status==="refresh-required";return{success:!1,error:M?"Authentication refresh required. Run: neocortex activate YOUR-LICENSE-KEY":"Not authenticated. Visit https://neocortex.sh/portal/login to get your license key, then run: neocortex activate YOUR-LICENSE-KEY",errorCode:M?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",metadata:{invocationDiagnostics:d},exitCode:M?1:2}}let _e;try{_e=$n(e.args.trim(),T)}catch(M){const ue=M instanceof Bn?M.code:"PROJECT_IDENTITY_MIGRATION_PROJECTION_FAILED";return{success:!1,error:ue,errorCode:ue,metadata:{invocationDiagnostics:d},exitCode:1}}let te={args:a,projectRoot:s.replace(At(),"~"),stateSnapshot:_e,platformTarget:b,...Y?{nativeHostAttestation:Y}:{},projectId:y.document.projectId,projectIdentityMigration:y.request,inputEvidence:r,idempotencyKey:y.document.operationId,registryVersion:ot,registryChecksum:it};try{te=kr(te).body}catch(M){if(M instanceof un||M instanceof pn)return{success:!1,error:M.message,errorCode:M.code,metadata:{invokePayload:M.telemetry,invocationDiagnostics:d},exitCode:1};throw M}const Z=await Yn("invoke-query",()=>Br(v,te,q.token,{refreshToken:()=>q.client.forceRefresh()}));if(!Z.ok||!Z.data)return d.push(mt({phase:"seed",outcome:"rejected",floor:y.document.legacyEpicFloor,licenseId:"local-client",projectId:y.document.projectId})),{success:!1,error:Ve(Z.error??"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",ct),errorCode:typeof Z.errorBody?.error_code=="string"?Z.errorBody.error_code:"PROJECT_IDENTITY_MIGRATION_REMOTE_FAILED",metadata:{invocationDiagnostics:d},exitCode:Z.status===401?2:1};const ee=Z.data.metadata?.projectIdentityMigration;try{ka(ee),d.push(mt({phase:"seed",outcome:ee.status,floor:ee.acceptedLegacyFloor,licenseId:"local-client",projectId:ee.projectId})),La(s,ee),d.push(mt({phase:"remote-acknowledged",outcome:ee.status,floor:ee.acceptedLegacyFloor,licenseId:"local-client",projectId:ee.projectId})),Da(s,ee),d.push(mt({phase:"finalize",outcome:"finalized",floor:ee.acceptedLegacyFloor,licenseId:"local-client",projectId:ee.projectId}))}catch(M){d.push(mt({phase:"reconcile",outcome:"rejected",floor:y.document.legacyEpicFloor,licenseId:"local-client",projectId:y.document.projectId}));const ue=M instanceof nn?M.code:M instanceof Error?M.message:"PROJECT_IDENTITY_MIGRATION_RECEIPT_INVALID";return{success:!1,error:ue,errorCode:ue,metadata:{invocationDiagnostics:d},exitCode:1}}return u.complete(),{success:!0,instructions:Z.data.instructions,metadata:{...Z.data.metadata,invocationDiagnostics:d},exitCode:0}}try{const{normalizeYoloopTargetArgs:c}=await import("../yoloop/target-normalization.js"),d=c(e.args,{projectRoot:s});if(!d.ok)return process.stderr.write(`${d.message} reason=${d.reasonCode}
|
|
26
|
+
`),{success:!1,error:d.message,exitCode:1};d.changed&&(e={...e,args:d.args},process.stderr.write(`[Neocortex] yoloop target normalized: ${d.reasonCodes.join(",")}
|
|
27
|
+
`))}catch{const c="INVALID_YOLOOP_TARGET: yoloop target normalization was unavailable; no request was sent.";return process.stderr.write(`${c}
|
|
28
|
+
`),{success:!1,error:c,exitCode:1}}const O=Er(p);if(O)try{Sr(s,{allowMissingRuntime:!0}).runtimeMissing&&(await u.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},async()=>Ba(s),async()=>{}),Sr(s))}catch(c){const d=c instanceof Ze?c.reasonCode:"git-lifecycle-state-corrupt";return process.stderr.write(`[Neocortex] ${d}. No request was sent; repair the canonical project state and retry.
|
|
29
|
+
`),{success:!1,error:d,errorCode:"GIT_LIFECYCLE_STATE_INVALID",exitCode:1}}if(p!=="migrate-state")try{u.execute({phase:"client-preflight",domain:"client-persistence",category:"state-repair",operation:"update"},()=>ca(s,{args:e.args,canonicalCommandId:p}),()=>{})}catch(c){if(c instanceof sa)return process.stderr.write(`${c.message}
|
|
30
|
+
`),{success:!1,error:c.message,exitCode:1};const d=c instanceof Error?c.message:String(c);return process.stderr.write(`[Neocortex] state.json repair stopped unexpectedly: ${d}. No request was sent; inspect .neocortex/state.json and rerun.
|
|
31
|
+
`),{success:!1,error:d,exitCode:1}}let k;if(e.privateExecutionBeta&&(p==="sync-openapi"||p==="arch-prd"||p==="arch-architecture"||p==="arch-fitness-functions"||p==="arch-api-contracts"||p==="arch-api-integrations"||p==="arch-database"||p==="arch-security"||p==="arch-design-system"||p==="arch-performance"||p==="arch-testing"||p==="arch-infrastructure"||p==="arch-review"||p==="update-memory"||p==="arch-ux-design"||p==="generate-pacts"||g))try{const{capturePrivateProjectStepBaseline:c}=await import("../private-execution/isolated-workspace.js");k=c(s)}catch{const c="private-execution-project-snapshot-unverified";return{success:!1,error:c,errorCode:c,exitCode:1}}let D;try{const c=await ki(s,e.args,p);D=vr(s,{epicAware:O,p205Authorities:c})}catch(c){const d=c instanceof Ze?c.reasonCode:"git-lifecycle-state-corrupt";return process.stderr.write(`[Neocortex] ${d}. No request was sent; repair the canonical project state/runtime sidecar and retry.
|
|
32
|
+
`),{success:!1,error:d,errorCode:"GIT_LIFECYCLE_STATE_INVALID",exitCode:1}}try{const{maybeAutoResolveYoloopArgs:c}=await import("../yoloop/invoke-hooks.js"),d={args:e.args,projectRoot:s,logger:{info:y=>process.stderr.write(`${y}
|
|
33
|
+
`),warn:y=>process.stderr.write(`${y}
|
|
34
|
+
`)}};c(d),d.args!==e.args&&(e={...e,args:d.args},i=d.args,n=zn(Mt(t.source,i)))}catch(c){const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] Auto-resolve hook (P121.05) failed: ${d}. Proceeding with raw args.
|
|
35
|
+
`)}try{const{readYoloopForRequest:c}=await import("../yoloop/invoke-hooks.js"),d=await c(e.args,s);if(d){const y=No(D,d);D.yoloop=y?{...d,continuationRecoveryEvidence:y}:d}}catch(c){if(/^\s*\*?(?:yoloop|auto-yolo|epic-runner|story-runner|loop-yolo|auto-epic)\b/i.test(e.args)){const y=c instanceof Error?c.message.match(/\bYOLOOP_[A-Z0-9_]+\b/)?.[0]??"YOLOOP_STATE_READ_FAILED":"YOLOOP_STATE_READ_FAILED";return process.stderr.write(`[Neocortex] ${y}. No yoloop request was sent and no state was mutated.
|
|
36
|
+
`),{success:!1,error:y,errorCode:y,exitCode:1}}}try{const{readContinuityForRequest:c}=await import("../continuity/invoke-hooks.js"),d=await c(e.args,s,void 0,u,{includeExistingStore:!m});d&&(D.continuity=d)}catch(c){if(c instanceof ft)return{success:!1,error:c.code,errorCode:c.code,exitCode:1};const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] continuity snapshot hook failed: ${d}. Proceeding without continuity state.
|
|
37
|
+
`)}try{const{maybeRunDiscoveryHook:c}=await import("../yoloop/invoke-hooks.js");await c({args:e.args,projectRoot:s,stateSnapshot:D,featureFlag:process.env.YOLOOP_AUTO_DISCOVERY!=="off",logger:{warn:d=>{console.warn(d)},info:d=>{console.error(d)}}})}catch(c){const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] discovery hook failed: ${d}. Proceeding without enrichment.
|
|
38
|
+
`)}try{const{readArchitecturePolicy:c}=await import("../policy/architecture-policy.js"),d=await c(s);d&&(D.architecture_policy=d)}catch(c){const d=c instanceof Error?c.message:String(c);console.warn(`[Neocortex] architecture-policy hook failed: ${d}. Proceeding without policy.`)}try{const c=/^(1|true|on|yes)$/i.test(process.env.NEOCORTEX_GRAPH_RETRIEVAL??""),{maybeRunGraphRetrievalHook:d}=await import("../yoloop/invoke-hooks.js"),y=await d({args:e.args,projectRoot:s,featureFlag:c,logger:{warn:T=>process.stderr.write(`${T}
|
|
39
|
+
`)}});y.applied&&y.metadata&&(D.graphRetrieval=y.metadata)}catch(c){const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] graph retrieval hook failed: ${d}. Proceeding without enrichment.
|
|
40
|
+
`)}try{if(di(e.args)){const{collectProjectEvidence:c}=await import("../evidence/collector.js"),d=o.selection.uiUxReview?.architectureDir,y=c({projectRoot:s,...d?{candidatePaths:[d],includeFallbackInventory:!0}:{}});(y.evidence.length>0||y.exclusions.length>0)&&(D.projectEvidence=y)}}catch(c){const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] project evidence collection failed: ${d}. Proceeding without local project evidence.
|
|
41
|
+
`)}try{const c=await u.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"checkpoint-consume",operation:"consume"},async()=>{const{readAndConsumeCheckpoint:d}=await import("../checkpoint/index.js");return d(s)},async()=>{});c&&(D.implementCheckpoint=c)}catch(c){const d=c instanceof Error?c.message:String(c);process.stderr.write(`[Neocortex] checkpoint hook failed: ${d}. Proceeding without checkpoint.
|
|
42
|
+
`)}const F=w?.licenseKey?new en({cacheDir:rn,passphrase:w.licenseKey,strictReadOnly:S}):null,$=i.trim();if(!$&&F){const c=await u.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"auth-cache",operation:"update"},()=>Pi(F),async()=>null);if(c)return u.complete(),{success:!0,instructions:c.instructions,metadata:c.metadata,exitCode:0}}const j=await wr(v,w?.licenseKey,u);if(j.status!=="authenticated"){const c=j.status==="refresh-required",d=!c&&w&&!w.licenseKey?" This may be caused by a machine fingerprint change (e.g., hardware or hostname change).":"";try{const y=Un(),T=Mn(c?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",y);T&&process.stderr.write(Vn(T,y))}catch{}return{success:!1,error:c?"Authentication refresh required. Run: neocortex activate YOUR-LICENSE-KEY":`Not authenticated.${d} Visit https://neocortex.sh/portal/login to get your license key, then run: neocortex activate YOUR-LICENSE-KEY`,errorCode:c?"AUTH_REFRESH_REQUIRED":"NOT_CONFIGURED",exitCode:c?1:2}}const B=D.config.project_id;try{await u.executeAsync({phase:"client-preflight",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>Oo(s,D,v,j.token,B,{refreshToken:()=>j.client.forceRefresh()}),async()=>0)}catch{}const me=Do($);if(me&&!m)try{const c=await j.tierClient.preFlightCheck(me);if(!c.allowed)return process.stderr.write(`[neocortex] ${c.message}
|
|
43
|
+
`),{success:!1,error:c.message??"Trigger not available on your plan",exitCode:1}}catch{}const ae=await Ji({args:$,projectRoot:s,platformTarget:b,environment:e.environment??process.env,bootstrapper:e.runnerBootstrapper,effectAuthority:u});if(ae.attachToRequest&&(D.runnerBootstrap=ae.metadata),ae.warning&&process.stderr.write(`[Neocortex] ${ae.warning}
|
|
44
|
+
`),!ae.shouldContinue)return ae.error&&process.stderr.write(`[Neocortex] ${ae.error}
|
|
45
|
+
`),{success:!1,error:ae.error??"Runner auto-bootstrap required but failed.",errorCode:ae.errorCode,exitCode:ae.exitCode??1};if(ae.metadata.command==="runner"&&(ae.metadata.operation==="status"||ae.metadata.operation==="doctor"))try{const c=e.runnerObserver??fa;D.runnerOperationalStatus=await c(ae.metadata.operation,{projectRoot:s,env:e.environment??process.env,effectAuthority:u})}catch{}let N;try{const c=ia($,D);if(c&&!c.ok){const d=`${c.code}: structural projection failed closed; select a valid target or repair the dependency DAG.`;return process.stderr.write(`${d}
|
|
46
|
+
`),{success:!1,error:d,errorCode:c.code,metadata:{stateProjection:c,publicSafe:!0},exitCode:1}}N=c?.snapshot??$n($,D),tn($)==="migrate-state"&&(N={...N,migrationAuthority:da(s)})}catch(c){if(c instanceof ua)return{success:!1,error:c.reasonCode,errorCode:c.reasonCode,exitCode:1};if(c instanceof Bn){const d=`${c.code}: structural projection failed closed; select a valid target or repair the dependency DAG.`;return process.stderr.write(`${d}
|
|
47
|
+
`),{success:!1,error:d,errorCode:c.code,metadata:{structuralProjection:{...c.publicDetails,publicSafe:!0}},exitCode:1}}throw c}if(!S)try{const{openNativeAgentPrivateStore:c,resolveNativeAgentPrivateRuntimePaths:d}=await import("../continuity/native-agent-store.js"),y=d(s);if(lt(y.databasePath)){const T=await c(s);try{const q=T.store.listRecentNativeAgentDispatches(20);q.length>0&&(N.nativeAgentDispatches=q)}finally{T.store.close()}}}catch{}const G=tn($);let ze=!1;if(G==="arch-plan"&&!S&&N.archPlan?.execution===void 0){const c=Fr(i);if(c)try{if(!Object.hasOwn(D.epics,c)||!Object.hasOwn(N.epics,c))throw new Error("architecture-root-epic-binding-invalid");const d=vt(s,c);N={...N,archPlan:{execution:{schemaVersion:1,owner:"root",currentStageCommand:"arch-prd",continuationState:"delegate",evidencePolicy:"v2-required",targetEpicId:c,graphRevision:d,graphSource:"committed-epic-v1",acceptedStages:[]}}},ze=!0}catch{return{success:!1,error:"architecture-root-epic-binding-invalid",errorCode:"architecture-root-epic-binding-invalid",exitCode:1}}}if((G==="arch-plan"||G?.startsWith("arch-")||G==="generate-pacts"||G==="update-memory")&&N.archPlan?.execution?.graphSource==="committed-epic-v1")try{const c=N.archPlan.execution;if(typeof c.targetEpicId!="string"||typeof c.graphRevision!="string"||c.graphRevision!==vt(s,c.targetEpicId))throw new Error("architecture-root-epic-binding-invalid")}catch{return{success:!1,error:"architecture-root-epic-binding-invalid",errorCode:"architecture-root-epic-binding-invalid",exitCode:1}}const $e=B;if((G==="create-epic"||G==="idea-diagnose")&&!$e){const c='EPIC_PROJECT_ID_REQUIRED: run `neocortex-client invoke --args "*migrate-project-id"` and retry the planning command. No repository checkout or database credentials are required.';return process.stderr.write(`${c}
|
|
48
|
+
`),{success:!1,error:c,errorCode:"EPIC_PROJECT_ID_REQUIRED",exitCode:1}}let ke;try{ke=u.execute({phase:"client-preflight",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>G==="create-epic"||G==="idea-diagnose"?ti(s,$,G):void 0,()=>{})}catch{return{success:!1,error:"EPIC_CLAIM_INTEGRITY_FAILURE",errorCode:"EPIC_CLAIM_INTEGRITY_FAILURE",exitCode:1}}const st=ke?.key,Fe=S?{schemaVersion:1,invocationId:u.invocationId,intent:u.intent,clientProjection:Aa(Jn.map(c=>({...c,count:1})))}:void 0;let Q,de,ie;if(e.privateExecutionBeta&&G==="idea-research")try{const c=N.scope?.targetEpicId,d=c?N.epics[c]:void 0,y=h(d?.createEpicPlanningPhysical)?d.createEpicPlanningPhysical:void 0;if(!c||!y||typeof y.claimId!="string"||typeof y.receiptId!="string")throw new Error("planning-research-predecessor-unavailable");const T=K(s,".neocortex/state.json"),q=ht(T);if(!q.isFile()||q.isSymbolicLink()||q.size>8*1024*1024)throw new Error("planning-research-state-unavailable");const _e=Re(T),te=JSON.parse(_e.toString("utf8")),Z=Nn(te,y.claimId,c),ee=h(te)&&h(te.epics)&&h(te.epics[c])?te.epics[c]:void 0,M=h(ee?.createEpicPlanningPhysical)?ee.createEpicPlanningPhysical:void 0;if(M?.receiptId!==y.receiptId||!I(M,y))throw new Error("planning-research-predecessor-drift");const ue=[".neocortex/state.json",".neocortex/planning/planning.json",`.neocortex/planning/epic-${c}/idea.json`,`.neocortex/planning/epic-${c}/diagnosis.md`,`.neocortex/planning/epic-${c}/enriched-prompt.md`],V={...process.env};for(const pe of["GIT_DIR","GIT_WORK_TREE","GIT_INDEX_FILE","GIT_OBJECT_DIRECTORY","GIT_ALTERNATE_OBJECT_DIRECTORIES","GIT_COMMON_DIR","GIT_NAMESPACE","GIT_CEILING_DIRECTORIES"])delete V[pe];for(const pe of ue){const ge=ht(K(s,pe));if(!ge.isFile()||ge.isSymbolicLink()||ge.size>8*1024*1024)throw new Error("planning-research-source-unavailable");const Pe=Le("git",["show",`HEAD:${pe}`],{cwd:s,env:V,stdio:["ignore","pipe","ignore"],timeout:3e4,maxBuffer:8*1024*1024});if(!Re(K(s,pe)).equals(Pe))throw new Error("planning-research-source-uncommitted")}de={claimId:y.claimId,epicId:c,diagnosisReceiptId:Z.diagnosisReceiptId,intakeRevision:Z.intakeRevision,physicalAcceptanceReceiptId:y.receiptId,sourceStateSha256:Be("sha256").update(_e).digest("hex")}}catch{return{success:!1,error:"private-execution-planning-predecessor-unavailable",errorCode:"private-execution-planning-predecessor-unavailable",exitCode:1}}if(e.privateExecutionBeta&&G==="generate-epic")try{const c=N.scope?.targetEpicId,d=c?N.epics[c]:void 0,y=h(d?.createEpicPlanningResearchPhysical)?d.createEpicPlanningResearchPhysical:void 0;if(!c||!y||typeof y.claimId!="string"||typeof y.receiptId!="string")throw new Error("planning-generation-predecessor-unavailable");const T=K(s,".neocortex/state.json"),q=ht(T);if(!q.isFile()||q.isSymbolicLink()||q.size>8*1024*1024)throw new Error("planning-generation-state-unavailable");const _e=Re(T),te=JSON.parse(_e.toString("utf8")),Z=Ln(te,y.claimId,c),ee=h(te)&&h(te.epics)&&h(te.epics[c])?te.epics[c]:void 0,M=h(ee?.createEpicPlanningResearchPhysical)?ee.createEpicPlanningResearchPhysical:void 0;if(M?.receiptId!==y.receiptId||!I(M,y))throw new Error("planning-generation-predecessor-drift");const ue=[".neocortex/state.json",".neocortex/planning/planning.json",`.neocortex/planning/epic-${c}/idea.json`,`.neocortex/planning/epic-${c}/diagnosis.md`,`.neocortex/planning/epic-${c}/enriched-prompt.md`,`.neocortex/planning/epic-${c}/research.md`],V={...process.env};for(const pe of["GIT_DIR","GIT_WORK_TREE","GIT_INDEX_FILE","GIT_OBJECT_DIRECTORY","GIT_ALTERNATE_OBJECT_DIRECTORIES","GIT_COMMON_DIR","GIT_NAMESPACE","GIT_CEILING_DIRECTORIES"])delete V[pe];for(const pe of ue){const ge=ht(K(s,pe));if(!ge.isFile()||ge.isSymbolicLink()||ge.size>8*1024*1024)throw new Error("planning-generation-source-unavailable");const Pe=Le("git",["show",`HEAD:${pe}`],{cwd:s,env:V,stdio:["ignore","pipe","ignore"],timeout:3e4,maxBuffer:8*1024*1024});if(!Re(K(s,pe)).equals(Pe))throw new Error("planning-generation-source-uncommitted")}ie={claimId:y.claimId,epicId:c,diagnosisReceiptId:Z.diagnosisReceiptId,researchReceiptId:Z.researchReceiptId,intakeRevision:Z.intakeRevision,physicalAcceptanceReceiptId:Z.physicalAcceptanceReceiptId,sourceStateSha256:Be("sha256").update(_e).digest("hex")}}catch{return{success:!1,error:"private-execution-planning-predecessor-unavailable",errorCode:"private-execution-planning-predecessor-unavailable",exitCode:1}}if(e.privateExecutionBeta)try{const{preflightPrivateCodexExecutor:c}=await import("../private-execution/codex-executor.js");Q=await c(s)}catch(c){const d=c instanceof Error&&/^private-codex-[a-z-]+$/.test(c.message)?c.message:"private-codex-preflight-unavailable";return{success:!1,error:d,errorCode:d,exitCode:1}}const tt=Q?{schemaVersion:1,hostKind:"codex-cli",hostVersion:Q.hostVersion,sandboxProof:{schemaVersion:5,trust:"client-self-attested",credentialKind:"chatgpt-subscription",authIsolation:"passed",workspaceWrite:"passed",gitControlWriteDenied:"passed",gitLifecycleReadDenied:"passed",mcpIsolation:"passed",environmentIsolation:"passed",networkDenied:"passed",observedAtMs:Q.observedAtMs}}:void 0;let De;if(G==="arch-plan"&&N.archPlan?.execution?.currentStageCommand==="generate-pacts"&&N.archPlan.execution.continuationState==="ask-user")try{if(De=xn(s),!De)throw new Error("architecture-answers-required")}catch(c){const d=c instanceof Error&&/^architecture-answers-[a-z-]+$/.test(c.message)?c.message:"architecture-answers-failed";return{success:!1,error:d,errorCode:d,exitCode:1}}let je;if(G==="arch-plan"&&N.archPlan?.execution?.currentStageCommand==="generate-pacts"&&N.archPlan.execution.continuationState==="delegate"&&N.archPlan.execution.childStatus==="succeeded")try{if(je=xn(s),!je||!I(N.archPlan.execution.pactAnswerReceipt,je))throw new Error("architecture-answers-conflict")}catch{return{success:!1,error:"architecture-answers-conflict",errorCode:"architecture-answers-conflict",exitCode:1}}let P,oe,J;if(e.privateExecutionBeta&&G==="generate-pacts")try{const c=i.trim().match(/^\*?generate-pacts (P[1-9][0-9]{0,11})$/)?.[1],d=N.archPlan?.execution;if(oe=Gr(s),!c||!d||d.currentStageCommand!=="generate-pacts"||d.continuationState!=="delegate"||d.targetEpicId!==c||!oe||!I(d.pactAnswerReceipt,oe.receipt))throw new Error("private-execution-pact-admission-unverified");const y=qr(s,oe.answers.generateProvider);if(y.outcome!=="ready")throw new Error("private-execution-pact-admission-unverified");P=y.writeSet,J={schemaVersion:1,targetEpicId:c,graphRevision:oe.receipt.graphRevision,answersSha256:oe.receipt.answersSha256,specSha256:P.specSha256,pathsSha256:P.pathsSha256,endpointCount:P.endpointCount,pathCount:P.paths.length,publicSafe:!0}}catch{const c="private-execution-pact-admission-unverified";return{success:!1,error:c,errorCode:c,exitCode:1}}let Ce,ce;if(e.privateExecutionBeta&&G==="arch-ux-design")try{const c=i.trim().match(/^\*?arch-ux-design (P[1-9][0-9]{0,11})$/)?.[1],d=N.archPlan?.execution;if(!c||!d||d.currentStageCommand!=="arch-ux-design"||d.continuationState!=="delegate"||d.targetEpicId!==c||typeof d.graphRevision!="string"||!/^[a-f0-9]{64}$/.test(d.graphRevision))throw new Error("private-execution-ux-admission-unverified");const{deriveUxWriteSet:y}=await import("../private-execution/ux-write-set.js");Ce=y(s,c),ce={schemaVersion:1,targetEpicId:c,graphRevision:d.graphRevision,adapterId:Ce.adapterId,authoritySha256:Ce.authoritySha256,pathsSha256:Ce.pathsSha256,screenCount:Ce.screenCount,pathCount:Ce.pathCount,publicSafe:!0}}catch{const c="private-execution-ux-admission-unverified";return{success:!1,error:c,errorCode:c,exitCode:1}}let z={args:i,projectRoot:s.replace(At(),"~"),stateSnapshot:N,...De?{architectureAnswerReceipt:De}:{},...J?{pactExecutionInput:J}:{},...ce?{uxExecutionInput:ce}:{},platformTarget:b,...Y?{nativeHostAttestation:Y}:{},...tt?{privateExecution:tt}:{},projectId:$e,inputEvidence:n,idempotencyKey:st,registryVersion:ot,registryChecksum:it,...Fe?{strictReadOnly:Fe}:{}};const St=yt(z);if(!S&&e.inputSource&&e.inputSource!=="args"&&St>=an)try{z={argsRef:(await Ca(u,"secondary-mutation",()=>Bi(v,i,j.token,()=>j.client.forceRefresh()),async()=>{throw new ft("readonly-physical-boundary-unsafe","boundary")})).argsRef,projectRoot:s.replace(At(),"~"),stateSnapshot:N,...De?{architectureAnswerReceipt:De}:{},platformTarget:b,...Y?{nativeHostAttestation:Y}:{},...tt?{privateExecution:tt}:{},projectId:$e,inputEvidence:n,idempotencyKey:st,registryVersion:ot,registryChecksum:it,...Fe?{strictReadOnly:Fe}:{}}}catch(c){return c instanceof ft?{success:!1,error:c.code,errorCode:c.code,exitCode:1}:{success:!1,error:`INVOKE_MATERIALIZATION_FAILED: ${c instanceof Error?c.message:String(c)}`,errorCode:"INVOKE_MATERIALIZATION_FAILED",exitCode:1}}if(G==="yolo"&&N.scope?.projectionMode==="yolo-story"){const c=N.scope?.targetStoryId,d=N.scope?.targetEpicId;if(!c||!d)return{success:!1,error:"yolo-spec-envelope-target-mismatch",errorCode:"yolo-spec-envelope-target-mismatch",exitCode:1};try{const{collectYoloSpecEnvelope:y}=await import("../yolo/spec-envelope-collector.js"),T=y({projectRoot:s,storyId:c,epicId:d,inputSha256:n.sha256,onOmittedReferences:q=>process.stderr.write(`[Neocortex] yolo-spec-supporting-references-omitted count=${q}; core story artifacts preserved.
|
|
49
|
+
`)});if(/\sbranchless-preparation\s*$/.test(i))z={...z,yoloSpecEnvelope:T};else{const{collectYoloChangeEvidence:q,reconcileYoloChangeEvidenceLease:_e}=await import("../yolo/change-evidence-collector.js");await _e({projectRoot:s,storyId:c,epicId:d});const te=q({projectRoot:s,defaultBranch:N.config.default_branch,expectedHeadSha:T.sourceRevision.headSha,storyId:c,epicId:d});z={...z,yoloSpecEnvelope:T,yoloChangeEvidence:te}}}catch(y){const T=y instanceof Error&&/^yolo-(?:spec-envelope|change-evidence)-[a-z-]+$/.test(y.message)?y.message:"yolo-spec-envelope-unsafe";return{success:!1,error:T,errorCode:T,exitCode:1}}}try{const c=kr(z);if(G==="migrate-state"&&c.degraded)return{success:!1,error:"state_migration_payload_degraded",errorCode:"state_migration_payload_degraded",exitCode:1};z=c.body,c.degraded?Or(z,c.telemetry):Yi(z)}catch(c){if(c instanceof un||c instanceof pn)return Or(z,c.telemetry),process.stderr.write(`[Neocortex] ${c.message}
|
|
50
|
+
`),{success:!1,error:c.message,errorCode:c.code,metadata:{invokePayload:c.telemetry},exitCode:1};throw c}if(G==="yolo"&&z.yoloSpecEnvelope)try{const{collectYoloSpecEnvelope:c}=await import("../yolo/spec-envelope-collector.js"),d=c({projectRoot:s,storyId:z.yoloSpecEnvelope.storyId,epicId:z.yoloSpecEnvelope.epicId,inputSha256:n.sha256,collectedAt:z.yoloSpecEnvelope.collectedAt});if(d.envelopeSha256!==z.yoloSpecEnvelope.envelopeSha256)throw new Error("yolo-spec-envelope-stale");if(z.yoloChangeEvidence){const{collectYoloChangeEvidence:y}=await import("../yolo/change-evidence-collector.js"),T=y({projectRoot:s,defaultBranch:N.config.default_branch,expectedHeadSha:d.sourceRevision.headSha,storyId:d.storyId,epicId:d.epicId});if(T.pathsSha256!==z.yoloChangeEvidence.pathsSha256||T.baseSha!==z.yoloChangeEvidence.baseSha)throw new Error("yolo-spec-envelope-stale")}}catch{return{success:!1,error:"yolo-spec-envelope-stale",errorCode:"yolo-spec-envelope-stale",exitCode:1}}const x=G==="arch-plan"?z.stateSnapshot.archPlan?.execution:void 0;let qe;if(x?.owner==="root"&&(x.currentStageCommand==="arch-prd"||x.currentStageCommand==="arch-architecture"||x.currentStageCommand==="arch-fitness-functions"||x.currentStageCommand==="arch-api-contracts"||x.currentStageCommand==="generate-pacts"||x.currentStageCommand==="arch-api-integrations"||x.currentStageCommand==="arch-database"||x.currentStageCommand==="arch-security"||x.currentStageCommand==="arch-design-system"||x.currentStageCommand==="arch-ux-design"||x.currentStageCommand==="arch-performance"||x.currentStageCommand==="arch-testing"||x.currentStageCommand==="arch-infrastructure"||x.currentStageCommand==="arch-review"||x.currentStageCommand==="update-memory")&&(x.continuationState==="delegate"||x.continuationState==="advance"||x.currentStageCommand==="arch-review"&&x.continuationState==="ask-user"||x.currentStageCommand==="generate-pacts"&&x.continuationState==="ask-user"))try{const c=Re(K(s,".neocortex","state.json"),"utf8"),d=JSON.parse(c),y=h(d.archPlan)?d.archPlan.execution:void 0;if(ze?y!==void 0||!h(d.epics)||!Object.hasOwn(d.epics,String(x.targetEpicId))||x.graphSource!=="committed-epic-v1"||x.graphRevision!==vt(s,String(x.targetEpicId)):!I(Wt(y),x))throw new Error("architecture-root-state-binding-invalid");if(qe=Be("sha256").update(c).digest("hex"),De&&De.stateSha256!==qe)throw new Error("architecture-root-state-binding-invalid");if(x.currentStageCommand==="update-memory"&&x.childStatus==="succeeded"&&(!Qt(x.terminalMemoryCheckpoint,x)||!I(x.terminalMemoryCheckpoint,kn(s,x))))throw new Error("architecture-terminal-memory-physical-invalid")}catch{return{success:!1,error:"architecture-root-state-binding-invalid",errorCode:"architecture-root-state-binding-invalid",exitCode:1}}let f=await Yn("invoke-query",()=>Br(v,z,j.token,{refreshToken:()=>j.client.forceRefresh()})),dt;if(S&&f.ok)try{if(m){const d=f.data?.metadata;if(d&&["stateUpdate","stateMutated","yoloopStateUpdate","continuityStateUpdate","checkpoint","schedulerStateUpdate","quotaCacheUpdate","projectIdentityMigration","epicClaim","gitLifecycleGraphAuthority"].some(T=>d[T]!==void 0))throw new ft("readonly-response-conflict")}const c=f.data?.metadata.strictReadOnly;ba(u,c),m&&Oa(f.data?.metadata.strictDiagnose,a,f.data?.instructions??""),dt=c.security}catch(c){const d=c instanceof ft?c.code:"readonly-receipt-mismatch";return{success:!1,error:d,errorCode:d,exitCode:1}}if(!f.ok&&f.status===426){const c=f.errorBody,d=c?.upgrade_command??"npm install -g @ornexus/neocortex@latest",y=c?.min_version??"unknown";return process.stderr.write(`
|
|
48
51
|
`),process.stderr.write(`==================================================
|
|
49
52
|
`),process.stderr.write(` UPGRADE REQUIRED
|
|
50
53
|
`),process.stderr.write(`==================================================
|
|
51
54
|
`),process.stderr.write(`
|
|
52
|
-
Your Neocortex version (${
|
|
53
|
-
`),process.stderr.write(` Minimum required: ${
|
|
55
|
+
Your Neocortex version (${gt}) is no longer supported.
|
|
56
|
+
`),process.stderr.write(` Minimum required: ${y}
|
|
54
57
|
|
|
55
58
|
`),process.stderr.write(` Run this command to update:
|
|
56
59
|
|
|
57
|
-
`),process.stderr.write(` ${
|
|
60
|
+
`),process.stderr.write(` ${d}
|
|
58
61
|
|
|
59
62
|
`),process.stderr.write(` After updating, re-run your command.
|
|
60
63
|
`),process.stderr.write(`==================================================
|
|
61
64
|
|
|
62
|
-
`),{success:!1,error:`UPGRADE_REQUIRED: Client version ${
|
|
63
|
-
`),{success:!1,error:
|
|
64
|
-
`),{success:!1,error:
|
|
65
|
-
`),{success:!1,error:
|
|
65
|
+
`),{success:!1,error:`UPGRADE_REQUIRED: Client version ${gt} is below minimum ${y}. Run: ${d}`,exitCode:3}}if(!f.ok||!f.data){const c=f.status===401?2:(f.status===429||f.status>=500,1),d=Di(f);try{if(d){const y=Un(),T=Mn(d,y);T&&process.stderr.write(Vn(T,y))}}catch{}return{success:!1,error:Ve(f.error??"Unknown error from server",ct),...d?{errorCode:d}:{},exitCode:c}}if(e.privateExecutionBeta&&!Kr(f.data))return{success:!1,error:"private-execution-public-envelope-invalid",errorCode:"private-execution-public-envelope-invalid",exitCode:1};if(qe&&x&&f.data.metadata?.mode==="arch-plan"&&h(f.data.metadata.archPlan)&&h(f.data.metadata.archPlan.execution)&&(f.data.metadata.archPlan.execution.nextAction==="delegate"||f.data.metadata.archPlan.execution.nextAction==="resume"||f.data.metadata.archPlan.execution.nextAction==="ask-user"||f.data.metadata.archPlan.execution.nextAction==="complete"&&f.data.metadata.archPlan.execution.currentStageCommand==="update-memory"||f.data.metadata.archPlan.execution.nextAction==="blocked"&&(f.data.metadata.archPlan.execution.currentStageCommand==="arch-ux-design"||f.data.metadata.archPlan.execution.currentStageCommand==="arch-performance"||f.data.metadata.archPlan.execution.currentStageCommand==="arch-testing"||f.data.metadata.archPlan.execution.currentStageCommand==="arch-infrastructure"||f.data.metadata.archPlan.execution.currentStageCommand==="arch-review")))try{await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},async()=>Si({projectRoot:s,sourceStateSha256:qe,requestExecution:x,initialBinding:ze,answerReceipt:De,pactRecordedReceipt:je,metadata:f.data.metadata}),async()=>{throw new Error("architecture-root-writeback-effect-skipped")})}catch(c){const d=c instanceof Error&&/^architecture-root-[a-z-]+$/.test(c.message)?c.message:"architecture-root-writeback-failed";return process.stderr.write(`[Neocortex] ${d}. Root stage instruction was not released.
|
|
66
|
+
`),{success:!1,error:d,errorCode:d,exitCode:1}}if(!$&&f.data.metadata?.mode==="menu"&&F&&await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"auth-cache",operation:"update"},()=>Oi(F,f.data.instructions,f.data.metadata),async()=>{}).catch(()=>{}),f.data.metadata&&await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"tier-cache",operation:"update"},()=>j.tierClient.updateQuotaFromResponse(f.data.metadata),async()=>{}).catch(()=>{}),f.data.metadata?.stateMutated===!0)try{const c=await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},async()=>{const{persistMigratedStateFromResponse:d}=await import("../yoloop/invoke-hooks.js");return d(f.data.metadata,s)},async()=>({applied:!1,blocking:!1,reasonCode:"state-writeback-effect-skipped"}));if(c.blocking){const d=`STATE_WRITEBACK_BLOCKED: ${c.reasonCode}. Canonical state was not replaced.`;return process.stderr.write(`${d}
|
|
67
|
+
`),{success:!1,error:d,errorCode:"STATE_WRITEBACK_BLOCKED",exitCode:1}}}catch(c){if(f.data.metadata?.stateMutationReason==="inline-yolo-materialized-synthetic-story"){const d=c instanceof Error?c.message:String(c),y=`STATE_WRITEBACK_BLOCKED: inline-yolo persistence failed (${Ve(d,ct)}).`;return process.stderr.write(`${y}
|
|
68
|
+
`),{success:!1,error:y,errorCode:"STATE_WRITEBACK_BLOCKED",exitCode:1}}}if(f.data.metadata?.gitLifecycleGraphAuthority)try{await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},()=>Wa(s,f.data.metadata.gitLifecycleGraphAuthority),async()=>{throw new Error("git-lifecycle-graph-authority-effect-skipped")})}catch(c){const d=c instanceof Error&&/^git-lifecycle-/.test(c.message)?c.message:"git-lifecycle-graph-authority-persist-failed";return process.stderr.write(`[Neocortex] ${d}. Graph authority was not persisted; no YOLO checkpoint instruction was released.
|
|
69
|
+
`),{success:!1,error:d,errorCode:"GIT_LIFECYCLE_GRAPH_AUTHORITY_INVALID",exitCode:1}}if(f.data.metadata?.mode==="error"&&f.data.metadata?.errorCode==="CLIENT_UPGRADE_REQUIRED")return process.stderr.write(`
|
|
66
70
|
`),process.stderr.write(`==================================================
|
|
67
71
|
`),process.stderr.write(` YOLOOP CLIENT UPGRADE REQUIRED
|
|
68
72
|
`),process.stderr.write(`==================================================
|
|
69
73
|
`),process.stderr.write(`
|
|
70
|
-
Your Neocortex client version (${
|
|
74
|
+
Your Neocortex client version (${gt}) does not
|
|
71
75
|
`),process.stderr.write(` support client-side yoloop state persistence.
|
|
72
76
|
|
|
73
77
|
`),process.stderr.write(` Run this command to upgrade:
|
|
@@ -77,18 +81,42 @@ ${t}
|
|
|
77
81
|
`),process.stderr.write(` After upgrading, re-run your yoloop command.
|
|
78
82
|
`),process.stderr.write(`==================================================
|
|
79
83
|
|
|
80
|
-
`),{success:!1,error:"CLIENT_UPGRADE_REQUIRED: This client does not support yoloop client-side persistence. Run: npm install -g @ornexus/neocortex@latest",exitCode:3};if(
|
|
81
|
-
`),{success:!1,error:T,errorCode:T,exitCode:1}}}catch(
|
|
82
|
-
`),{success:!1,error:T,errorCode:T,exitCode:1}}}}if(
|
|
83
|
-
`),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${
|
|
84
|
-
`),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${
|
|
85
|
-
`)):process.stderr.write(`[Neocortex] Seu tier foi atualizado para ${
|
|
86
|
-
`)}catch{process.stderr.write(`[Neocortex] Seu tier foi atualizado para ${
|
|
87
|
-
`)}}let
|
|
84
|
+
`),{success:!1,error:"CLIENT_UPGRADE_REQUIRED: This client does not support yoloop client-side persistence. Run: npm install -g @ornexus/neocortex@latest",exitCode:3};if(f.data.metadata?.yoloopStateUpdate){const d=(f.data.metadata.yoloopStateUpdate.operations??[]).some(y=>y.type==="rollover_session");try{const y=await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"state-writeback",operation:"update"},async()=>{const{persistYoloopFromResponse:T}=await import("../yoloop/invoke-hooks.js");return T(f.data.metadata,s)},async()=>({ok:!0,authoritative:!1,reasonCodes:[]}));if(y&&y.ok===!1){const T=y.reasonCodes[0]??"YOLOOP_AUTHORITATIVE_WRITEBACK_FAILED";return process.stderr.write(`[Neocortex] ${T}. No yoloop continuation instructions were released.
|
|
85
|
+
`),{success:!1,error:T,errorCode:T,exitCode:1}}}catch(y){if(d){const T=y instanceof Error?y.message.match(/\bYOLOOP_[A-Z0-9_]+\b/)?.[0]??"YOLOOP_AUTHORITATIVE_WRITEBACK_FAILED":"YOLOOP_AUTHORITATIVE_WRITEBACK_FAILED";return process.stderr.write(`[Neocortex] ${T}. No yoloop continuation instructions were released.
|
|
86
|
+
`),{success:!1,error:T,errorCode:T,exitCode:1}}}}if(f.data.metadata?.continuityStateUpdate)try{const c=await u.executeAsync({phase:"client-writeback",domain:"client-persistence",category:"continuity-store",operation:"update"},async()=>{const{persistContinuityFromResponse:d}=await import("../continuity/invoke-hooks.js");return d(f.data.metadata,s)},async()=>({ok:!0,reasonCodes:[]}));if(!c.ok){const d=c.reasonCodes.join(",");return process.stderr.write(`[Neocortex] continuity persistence failed: ${d}. No continuity mutation was committed.
|
|
87
|
+
`),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${d}`,errorCode:"CONTINUITY_PERSISTENCE_FAILED",exitCode:1}}}catch(c){const d=c instanceof Error?c.message:String(c);return process.stderr.write(`[Neocortex] continuity persistence hook failed: ${d}. No continuity mutation was committed.
|
|
88
|
+
`),{success:!1,error:`CONTINUITY_PERSISTENCE_FAILED: ${Ve(d,ct)}`,errorCode:"CONTINUITY_PERSISTENCE_FAILED",exitCode:1}}if(f.data.metadata?.tier_changed){const c=f.data.metadata.current_tier;try{await j.client.forceRefresh()?(await j.tierClient.invalidateTierCache(),process.stderr.write(`[Neocortex] Token atualizado automaticamente para tier ${c}
|
|
89
|
+
`)):process.stderr.write(`[Neocortex] Seu tier foi atualizado para ${c}! Execute "neocortex activate" para obter um token atualizado.
|
|
90
|
+
`)}catch{process.stderr.write(`[Neocortex] Seu tier foi atualizado para ${c}! Execute "neocortex activate" para obter um token atualizado.
|
|
91
|
+
`)}}let se,xt=!1;if(e.privateExecutionBeta)try{if(!Q||!f.data.metadata?.privateExecution||!$e||f.data.metadata?.mode!=="yolo"&&f.data.metadata?.mode!=="step"&&f.data.metadata?.mode!=="pipeline"&&f.data.metadata?.mode!=="create-epic"&&f.data.metadata?.mode!=="utility"&&f.data.metadata?.mode!=="tech-debt"||typeof f.data.metadata.stepId!="string")throw new Error("private-execution-descriptor-unavailable");const{consumePrivateExecutionDelivery:c,privateExecutionStateSnapshotSha256:d}=await import("../private-execution/delivery.js"),{preflightPrivateCodexExecutor:y,runPrivateCodexStep:T}=await import("../private-execution/codex-executor.js"),q=f.data.metadata.mode==="yolo",_e=f.data.metadata.mode==="create-epic",te=f.data.metadata.mode==="step"&&f.data.metadata.resolvedTrigger==="idea-diagnose",Z=f.data.metadata.mode==="step"&&f.data.metadata.resolvedTrigger==="idea-research",ee=f.data.metadata.mode==="step"&&f.data.metadata.resolvedTrigger==="generate-epic",M=_e||te;if(Z&&!de||ee&&!ie)throw new Error("private-execution-planning-predecessor-unavailable");const ue=f.data.metadata.mode==="utility"&&f.data.metadata.resolvedTrigger==="sync-openapi"||g&&f.data.metadata.mode==="tech-debt"&&f.data.metadata.resolvedTrigger==="tech-debt",V=f.data.metadata.mode==="step"&&(f.data.metadata.resolvedTrigger==="arch-prd"||f.data.metadata.resolvedTrigger==="arch-architecture"||f.data.metadata.resolvedTrigger==="arch-fitness-functions"||f.data.metadata.resolvedTrigger==="arch-api-contracts"||f.data.metadata.resolvedTrigger==="arch-api-integrations"||f.data.metadata.resolvedTrigger==="arch-database"||f.data.metadata.resolvedTrigger==="arch-security"||f.data.metadata.resolvedTrigger==="arch-design-system"||f.data.metadata.resolvedTrigger==="arch-performance"||f.data.metadata.resolvedTrigger==="arch-testing"||f.data.metadata.resolvedTrigger==="arch-infrastructure"||f.data.metadata.resolvedTrigger==="arch-review"||f.data.metadata.resolvedTrigger==="update-memory")?f.data.metadata.resolvedTrigger:void 0,pe=V!==void 0,ge=f.data.metadata.mode==="step"&&f.data.metadata.resolvedTrigger==="generate-pacts",Pe=f.data.metadata.mode==="step"&&f.data.metadata.resolvedTrigger==="arch-ux-design",An=g?"tech-debt":"sync-openapi",Rn=g?"tech-debt-registry-v1":"sync-openapi-contract-v1",Oe=N.archPlan?.execution,kt=Oe?.targetEpicId,Pt=Oe?.graphRevision;if(pe&&(Oe?.currentStageCommand!==V||typeof kt!="string"||!/^P[1-9][0-9]{0,11}$/.test(kt)||typeof Pt!="string"||!/^[a-f0-9]{64}$/.test(Pt)))throw new Error("private-execution-architecture-admission-unverified");if(ge&&(!J||!P||!oe||Oe?.currentStageCommand!=="generate-pacts"||Oe.continuationState!=="delegate"||Oe.targetEpicId!==J.targetEpicId||Oe.graphRevision!==J.graphRevision||!I(Oe.pactAnswerReceipt,oe.receipt)))throw new Error("private-execution-pact-admission-unverified");if(Pe&&(!ce||!Ce||Oe?.currentStageCommand!=="arch-ux-design"||Oe.continuationState!=="delegate"||Oe.targetEpicId!==ce.targetEpicId||Oe.graphRevision!==ce.graphRevision))throw new Error("private-execution-ux-admission-unverified");let bn;if(ge){const{planPactToolchainManifest:he,preparePactToolchainCandidate:ne}=await import("../private-execution/pact-toolchain.js");try{he(s,oe.answers.generateProvider),bn=ne(s,oe.answers.generateProvider)}catch(U){if(U.message!=="pact-toolchain-manifest-unsupported")throw U}}let rt,le,Kt;const Ee=f.data.metadata.gitLifecycleGraphAuthority,at=f.data.metadata.privateExecutionRootAction;let Ot;if(q){if(!Ee||typeof Ee.storyId!="string"||typeof Ee.graphRevision!="string"||typeof Ee.executionBranch!="string")throw new Error("private-execution-graph-unavailable");if(Ot=Ee.storyId,at?.action==="prepare-epic-checkout"){const{prepareDirectYoloSetup:Me}=await import("../git/direct-yolo-checkpoint.js"),{capturePrivateYoloCleanHead:pt,recordPrivateYoloCleanBaseline:Ne}=await import("../private-execution/clean-baseline.js"),Xt=pt(s),Nt=await Me({projectRoot:s,storyId:at.storyId});if(!Nt.ok)throw new Error("private-execution-root-setup-denied");await Ne(s,Nt.value,Xt)}let he;try{he=Le("git",["symbolic-ref","--quiet","--short","HEAD"],{cwd:s,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()}catch{throw new Error("private-execution-execution-branch-mismatch")}if(he!==Ee.executionBranch)throw new Error("private-execution-execution-branch-mismatch");const ne=Ut(s,{required:!0}),U=typeof Ee.epicId=="string"?ne.epics[Ee.epicId]:void 0,A=h(U?.branch_lease)?U.branch_lease:void 0;if(!U||U.graph_revision!==Ee.graphRevision||!A||A.ownerStoryId!==Ee.storyId||typeof A.expiresAt!="string"||!Number.isFinite(Date.parse(A.expiresAt))||Date.parse(A.expiresAt)<=Date.now())throw new Error("private-execution-writer-lease-unavailable")}else if(f.data.metadata.mode==="step"&&(f.data.metadata.resolvedTrigger==="research"||f.data.metadata.resolvedTrigger==="write-spec"||f.data.metadata.resolvedTrigger==="create-tasks"||f.data.metadata.resolvedTrigger==="implement")||f.data.metadata.mode==="pipeline"&&f.data.metadata.resolvedTrigger==="exec"||_e&&f.data.metadata.resolvedTrigger==="create-epic"||te||Z||ee||ue||pe||ge||Pe){if(!M&&!Z&&!ee&&!ue&&!pe&&!ge&&!Pe&&typeof f.data.metadata.storyId!="string")throw new Error("private-execution-descriptor-unavailable")}else throw new Error("private-execution-descriptor-unavailable");if(q){const{ensurePrivateYoloIsolatedSession:he,reconcilePrivateYoloIsolatedSession:ne}=await import("../private-execution/isolated-session.js");if(at?.action==="checkpoint-epic-story")await ne(s,Ot,Ee.graphRevision);else{const U=await he(s,Ot,Ee.graphRevision,e.privateExecutionWorkspaceParent),A=await y(U.workspace.workspacePath);if(A.hostVersion!==Q.hostVersion)throw new Error("private-codex-version-drift");Q=A}}if(Date.now()-Q.observedAtMs>2e4){const he=await y(Q.projectRoot);if(he.hostVersion!==Q.hostVersion)throw new Error("private-codex-version-drift");Q=he}const Tn=await j.client.getToken();if(!Tn)throw new Error("private-execution-auth-unavailable");const Ae=M?f.data.metadata.epicClaim:void 0;if(M&&(!Ae||typeof Ae.claimId!="string"||typeof Ae.epicId!="string"))throw new Error("private-execution-descriptor-unavailable");if(M){if(!ke)throw new Error("private-execution-epic-claim-admission-unverified");u.execute({phase:"client-writeback",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>cr(s,ke.fingerprint,Ae.claimId,Ae.epicId),()=>{}),xt=!0;const{preparePrivateYoloIsolatedWorkspace:he,PRIVATE_EPIC_PENDING_SIDECAR:ne}=await import("../private-execution/isolated-workspace.js"),U=e.privateExecutionWorkspaceParent??K(At(),".local","share","neocortex","private-epic-workspaces");e.privateExecutionWorkspaceParent||Ct(U,{recursive:!0,mode:448}),rt=he(s,U,!0),Kt=Be("sha256").update(Re(K(s,ne))).digest("hex");const A=await y(rt.workspacePath);if(A.hostVersion!==Q.hostVersion)throw new Error("private-codex-version-drift");Q=A}else if(!q){const{preparePrivateYoloIsolatedWorkspace:he}=await import("../private-execution/isolated-workspace.js"),ne=e.privateExecutionWorkspaceParent??K(At(),".local","share","neocortex","private-step-workspaces");if(e.privateExecutionWorkspaceParent||Ct(ne,{recursive:!0,mode:448}),le=he(s,ne),ue||pe||ge||Pe){if(!k)throw new Error("private-execution-project-snapshot-unverified");const{assertPrivateProjectStepBaseline:A}=await import("../private-execution/isolated-workspace.js");A(le,k)}const U=await y(le.workspacePath);if(U.hostVersion!==Q.hostVersion)throw new Error("private-codex-version-drift");Q=U}const ut=await c(f.data.metadata.privateExecution,{projectId:$e,commandId:q?"yolo":_e?"create-epic":pe?V:ge?"generate-pacts":Pe?"arch-ux-design":ue?An:f.data.metadata.mode==="pipeline"?"exec":f.data.metadata.resolvedTrigger,stepId:f.data.metadata.stepId,...q?{graphRevision:Ee.graphRevision}:{...M?{claimId:Ae.claimId,epicId:Ae.epicId,...te?{writeSetId:"idea-diagnosis-v1"}:{}}:Z?{claimId:de.claimId,epicId:de.epicId,diagnosisReceiptId:de.diagnosisReceiptId,intakeRevision:de.intakeRevision,physicalAcceptanceReceiptId:de.physicalAcceptanceReceiptId,writeSetId:"idea-research-v1"}:ee?{claimId:ie.claimId,epicId:ie.epicId,diagnosisReceiptId:ie.diagnosisReceiptId,researchReceiptId:ie.researchReceiptId,intakeRevision:ie.intakeRevision,physicalAcceptanceReceiptId:ie.physicalAcceptanceReceiptId,writeSetId:"generate-epic-v1"}:ue?{writeSetId:Rn}:pe?{targetEpicId:kt,graphRevision:Pt,writeSetId:V==="arch-prd"?"arch-prd-docs-v1":V==="update-memory"?"arch-memory-canonical-v1":V==="arch-review"?"arch-review-doc-v1":V==="arch-infrastructure"?"arch-infrastructure-doc-v1":V==="arch-testing"?"arch-testing-doc-v1":V==="arch-performance"?"arch-performance-doc-v1":V==="arch-design-system"?"arch-design-system-doc-v1":V==="arch-security"?"arch-security-doc-v1":V==="arch-database"?"arch-database-doc-v1":V==="arch-api-integrations"?"arch-api-integrations-doc-v1":V==="arch-api-contracts"?"arch-api-contracts-docs-v1":V==="arch-fitness-functions"?"arch-fitness-tools-v1":"arch-architecture-doc-v1"}:ge?{targetEpicId:J.targetEpicId,graphRevision:J.graphRevision,answersSha256:J.answersSha256,specSha256:J.specSha256,pathsSha256:J.pathsSha256,endpointCount:J.endpointCount,pathCount:J.pathCount}:Pe?{targetEpicId:ce.targetEpicId,graphRevision:ce.graphRevision,adapterId:ce.adapterId,authoritySha256:ce.authoritySha256,pathsSha256:ce.pathsSha256,screenCount:ce.screenCount,pathCount:ce.pathCount}:{storyId:f.data.metadata.storyId},stateSnapshotSha256:d(N)},inputSha256:n.sha256,hostKind:"codex-cli",hostVersion:Q.hostVersion},he=>ko(v,{...he},Tn));if(at?.action==="checkpoint-epic-story"){const{runPrivateYoloRootCheckpoint:he}=await import("../private-execution/root-checkpoint.js");se={...await he(s,at)}}else{const he=te?`${ut}
|
|
88
92
|
|
|
89
|
-
|
|
93
|
+
Private P01 handoff (local only):
|
|
94
|
+
The durable reserved epic ID is ${Ae.epicId}. Complete only the diagnosis for this exact ID. Write exactly .neocortex/planning/epic-${Ae.epicId}/idea.json, diagnosis.md, enriched-prompt.md and the matching entry in .neocortex/planning/planning.json. Do not write state.json, Git controls, another epic, or P02/P03 artifacts; do not auto-continue to the next step. The root will independently review and persist the accepted planning checkpoint.
|
|
95
|
+
`:Z?`${ut}
|
|
90
96
|
|
|
91
|
-
|
|
97
|
+
Private P02 handoff (local only):
|
|
98
|
+
The admitted epic is ${de.epicId}. Research only this exact diagnosed epic. Write exactly .neocortex/planning/epic-${de.epicId}/research.md and its transition in .neocortex/planning/planning.json. Do not write state.json, Git controls, another epic, or P03 artifacts; do not auto-continue. The root will independently review and seal the research candidate.
|
|
99
|
+
`:ee?`${ut}
|
|
100
|
+
|
|
101
|
+
Private P03 handoff (local only):
|
|
102
|
+
The admitted epic is ${ie.epicId}. Generate exactly docs/epics/epic-${ie.epicId}.md, 1 to 24 contiguous docs/stories/${ie.epicId}.NN.story.md files (01 through 24), and the matching transition in .neocortex/planning/planning.json. Do not write state.json, Git controls, another epic, or subsequent-stage artifacts; do not auto-continue. The root will independently review and seal the generated candidate.
|
|
103
|
+
`:ge?`${ut}
|
|
104
|
+
|
|
105
|
+
Private A03.5 handoff (local only):
|
|
106
|
+
${JSON.stringify({consumer:oe.answers.consumer,provider:oe.answers.provider,matchersAggressive:oe.answers.matchersAggressive,generateProvider:oe.answers.generateProvider,brokerConfigured:oe.answers.brokerUrl!==null,allowedPaths:P.paths})}
|
|
107
|
+
Read docs/api/openapi.yaml. Write only the listed new test files. Do not write package files, CI, Git, graph, or tracked configuration. Never embed a broker URL; provider verification must read PACT_BROKER_URL at runtime.
|
|
108
|
+
`:Pe?`${ut}
|
|
109
|
+
|
|
110
|
+
Private A08 handoff (local only):
|
|
111
|
+
${JSON.stringify({targetEpicId:ce.targetEpicId,graphRevision:ce.graphRevision,adapterId:ce.adapterId,approvedScreens:Ce.screens,allowedPaths:Ce.paths})}
|
|
112
|
+
Write only the approved paths. Keep synthetic fixtures and the canonical approved-story manifest. No Git, graph, QA or configuration effects.
|
|
113
|
+
`:ut,ne=await T(he,Q,{requireWorkspaceEffect:!0,...q?{expectedExecutionBranch:Ee.executionBranch}:rt?{expectedExecutionBranch:rt.executionBranch}:le?{expectedExecutionBranch:le.executionBranch}:{}});if(q){const{admitPrivateYoloIsolatedSessionStep:U}=await import("../private-execution/isolated-session.js"),A=await U(s,Ot,Ee.graphRevision),Me={schemaVersion:1,outcome:A.admission.outcome,sequence:A.session.sequence,snapshotSha:A.session.snapshotSha,patchSha256:A.admission.patchSha256,changedPathCount:A.admission.changedPaths.length};if(at?.action==="prepare-epic-checkout"){const{acceptDirectYoloSetupCheckpoint:pt}=await import("../git/direct-yolo-checkpoint.js"),Ne=await pt({projectRoot:s,storyId:at.storyId});if(!Ne.ok)throw new Error(`private-execution-root-setup-checkpoint-denied:${Ne.reasonCode}`);se={...ne,outcome:"setup-accepted",executorOutcome:ne.outcome,isolation:Me,setup:Ne.value}}else se={...ne,isolation:Me}}else if(rt){const{admitPrivateEpicClaimWorkspace:U,admitPrivateIdeaDiagnosisWorkspace:A}=await import("../private-execution/isolated-admission.js"),Me=te?A(rt,Ae.claimId,Ae.epicId,ke.fingerprint,Kt,o.selection.positionals.join(" ").replace(/^[-:–—]\s+/,"")):U(rt,Ae.claimId,Ae.epicId,ke.fingerprint,Kt);se={...ne,isolation:{schemaVersion:1,outcome:Me.outcome,baseSha:Me.baseSha,patchSha256:Me.patchSha256,changedPathCount:Me.changedPaths.length}}}else if(le&&Z){const{admitPrivateIdeaResearchWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,de.claimId,de.epicId,de.diagnosisReceiptId,de.intakeRevision,de.sourceStateSha256);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else if(le&&ee){const{admitPrivateGenerateEpicWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,ie.claimId,ie.epicId,ie.diagnosisReceiptId,ie.researchReceiptId,ie.intakeRevision,ie.sourceStateSha256);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else if(le&&ge){const{admitPrivatePactWorkspace:U}=await import("../private-execution/isolated-admission.js"),{inspectPactToolchain:A}=await import("../private-execution/pact-toolchain.js"),{verifyPactConsumerRuntime:Me}=await import("../private-execution/pact-consumer-runtime.js"),pt=oe.answers.generateProvider,Ne=U(le,J.targetEpicId,J.graphRevision,oe.receipt,P,bn),Xt=A(s,pt),Nt=Me(s,P,pt);se={...ne,isolation:{schemaVersion:1,outcome:Ne.outcome,baseSha:Ne.baseSha,patchSha256:Ne.patchSha256,changedPathCount:Ne.changedPaths.length,consumerBindingCandidateCount:Ne.consumerBindingCandidateCount,consumerScaffoldCount:Ne.consumerScaffoldCount,toolchain:Xt,consumerRuntime:Nt}}}else if(le&&Pe){const{admitPrivateUxWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,ce.targetEpicId,ce.graphRevision,Ce);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else if(le&&pe){const{admitPrivateArchitectureStageWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,V,V==="arch-prd"?"arch-prd-docs-v1":V==="update-memory"?"arch-memory-canonical-v1":V==="arch-review"?"arch-review-doc-v1":V==="arch-infrastructure"?"arch-infrastructure-doc-v1":V==="arch-testing"?"arch-testing-doc-v1":V==="arch-performance"?"arch-performance-doc-v1":V==="arch-design-system"?"arch-design-system-doc-v1":V==="arch-security"?"arch-security-doc-v1":V==="arch-database"?"arch-database-doc-v1":V==="arch-api-integrations"?"arch-api-integrations-doc-v1":V==="arch-api-contracts"?"arch-api-contracts-docs-v1":V==="arch-fitness-functions"?"arch-fitness-tools-v1":"arch-architecture-doc-v1",kt,Pt);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else if(le&&ue){const{admitPrivateProjectStepWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,An,Rn);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else if(le){const{admitPrivateStateBoundStepWorkspace:U}=await import("../private-execution/isolated-admission.js"),A=U(le,f.data.metadata.storyId);se={...ne,isolation:{schemaVersion:1,outcome:A.outcome,baseSha:A.baseSha,patchSha256:A.patchSha256,changedPathCount:A.changedPaths.length}}}else se={...ne}}}catch(c){const d=c instanceof Error&&/^(private-execution|private-codex)-[a-z-]+$/.test(c.message)?c.message:"private-execution-unverified";return{success:!1,error:d,errorCode:d,exitCode:1}}const nt=dn(f.data.instructions,f.data.metadata);if(ke&&!xt&&f.data.metadata?.mode!=="error")try{const c=f.data.metadata?.epicClaim;if(!c||typeof c!="object"||Array.isArray(c))throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");const d=c;if(d.outcome!=="reserved"||typeof d.claimId!="string"||typeof d.epicId!="string")throw new Error("EPIC_CLAIM_INTEGRITY_FAILURE");u.execute({phase:"client-writeback",domain:"client-persistence",category:"pending-claim",operation:"update"},()=>cr(s,ke.fingerprint,d.claimId,d.epicId),()=>{})}catch{}return u.complete(dt),{success:!0,instructions:se?se.outcome==="checkpoint-validated"?`# Checkpoint da story validado
|
|
114
|
+
|
|
115
|
+
O root registrou o commit e a valida\xE7\xE3o f\xEDsica no branch do epic.`:se.outcome==="setup-accepted"?`# Setup do branch validado
|
|
116
|
+
|
|
117
|
+
O root confirmou o checkpoint C01 no branch do \xE9pico. Reexecute o mesmo YOLO para avan\xE7ar \xE0 pr\xF3xima etapa.`:`# Execu\xE7\xE3o privada conclu\xEDda; valida\xE7\xE3o f\xEDsica pendente
|
|
118
|
+
|
|
119
|
+
O executor Codex retornou sem erro. Nenhum checkpoint ou aprova\xE7\xE3o da story foi emitido.`:nt.instructions,metadata:se?{...nt.metadata,privateExecutionReceipt:se}:nt.metadata,exitCode:0}}function Do(e){const[t]=e.trim().split(/\s+/,1);return t?/^@?epic-[a-z0-9][a-z0-9._-]*$/i.test(t)?"epic":tn(t):null}const Hr="Provide exactly one invoke input source: --args <string>, --stdin, or --args-file <path>.",jo=`
|
|
92
120
|
neocortex-client invoke - Send orchestration request to server
|
|
93
121
|
|
|
94
122
|
Usage:
|
|
@@ -111,7 +139,7 @@ Options:
|
|
|
111
139
|
--server-url <url> Server URL override
|
|
112
140
|
--platform-target <id> Explicit platform target override (default: runtime detection; unknown on no match)
|
|
113
141
|
--strict-read-only Request exact signed strict-read-only-v1 execution (registry-gated)
|
|
114
|
-
--private-execution-beta
|
|
142
|
+
--private-execution-beta Isolated Codex beta: *yolo, *exec, *research, *write-spec, *create-tasks, *implement, *create-epic, *sync-openapi, *arch-prd, *arch-architecture, *arch-fitness-functions, *arch-api-contracts, *arch-api-integrations, *arch-database, *arch-security, *arch-design-system, *arch-performance, *arch-testing, *arch-infrastructure, *arch-review, *update-memory (delegated architecture), *tech-debt scan
|
|
115
143
|
|
|
116
144
|
Invocation payload boundary:
|
|
117
145
|
Select only the explicit user-intended Neocortex command and arguments after
|
|
@@ -158,12 +186,12 @@ Safety:
|
|
|
158
186
|
Jobs console is Plane B/local-only: no hosted server call for raw output, no server-held stream, no raw persistence, and stdin requires explicit local confirmation.
|
|
159
187
|
Jobs, goal and loop watch use serverHeldStream=false and foreground local SQLite polling of public processing summaries only.
|
|
160
188
|
Unresolved targets disable polling with public reason codes; there is no all-jobs fallback.
|
|
161
|
-
`.trim();function
|
|
162
|
-
`);return}
|
|
163
|
-
`);return}const
|
|
164
|
-
`),
|
|
165
|
-
`)}function
|
|
166
|
-
`),0;let t;try{t
|
|
167
|
-
`),1;throw
|
|
168
|
-
`),1):(await
|
|
169
|
-
`),
|
|
189
|
+
`.trim();function Mo(e){return e.includes("--help")||e.includes("-h")||e.includes("help")}function xe(e,t,a,r){return new Ht("INVOCATION_MALFORMED_INPUT",t,e,a,r)}function Et(e){return xe("missing-input-value",`${e} requires a value. ${Hr}`)}function Vo(e){try{if(!Yr(e).isFile())throw xe("missing-input-value","--args-file must point to a readable UTF-8 text file.","args-file");return Re(e)}catch(t){throw t instanceof Ht?t:xe("missing-input-value","--args-file could not be read as UTF-8 text. Check the path and permissions.","args-file")}}function Uo(){try{if(process.stdin.isTTY)throw xe("missing-input-value","--stdin requires piped UTF-8 text, for example: neocortex-client invoke --stdin < synthetic.story.md","stdin");return Re(0)}catch(e){throw e instanceof Ht?e:xe("missing-input-value","--stdin could not be read as UTF-8 text. Pipe command text into stdin and retry.","stdin")}}function $o(e,t={}){let a,r=!1,i,n,o="plain",s=!1,p,g,E=!1,_=!1;for(let b=0;b<e.length;b++)switch(e[b]){case"--args":{const w=e[++b];if(w===void 0)throw Et("--args");if(a!==void 0)throw xe("multiple-input-sources","Provide --args only once. Use one explicit invoke input source.","args");a=w;break}case"--stdin":if(r)throw xe("multiple-input-sources","Provide --stdin only once. Use one explicit invoke input source.","stdin");r=!0;break;case"--args-file":{const w=e[++b];if(w===void 0)throw Et("--args-file");if(i!==void 0)throw xe("multiple-input-sources","Provide --args-file only once. Use one explicit invoke input source.","args-file");i=w;break}case"--project-root":{const w=e[++b];if(w===void 0)throw Et("--project-root");n=w;break}case"--format":{const w=e[++b];if(w===void 0)throw Et("--format");if(w!=="json"&&w!=="plain")throw xe("unexpected-cli-token","--format accepts only json or plain.");o=w;break}case"--watch":s=!0;break;case"--server-url":{const w=e[++b];if(w===void 0)throw Et("--server-url");p=w;break}case"--platform-target":{const w=e[++b];if(w===void 0)throw Et("--platform-target");g=w;break}case"--strict-read-only":E=!0;break;case"--private-execution-beta":_=!0;break;default:throw xe("unexpected-cli-token","Unexpected top-level CLI token. Quote the complete --args payload or use --stdin/--args-file for multiline content.")}const l=[a!==void 0?"args":void 0,r?"stdin":void 0,i!==void 0?"args-file":void 0].filter(b=>b!==void 0);if(l.length===0)throw xe("missing-input-value",Hr);if(l.length>1)throw xe("multiple-input-sources",`Choose only one invoke input source; received ${l.join(", ")}.`);const m=l[0],u=m==="args"?a:m==="stdin"?(t.readStdin??Uo)():(t.readArgsFile??Vo)(i);let S;try{S=Mt(m,u)}catch(b){throw b instanceof Na?xe("invalid-utf8",b.message,m):b}const C=m==="args"?Io(S.rawArgs):ve(S.rawArgs),L=C.args===S.rawArgs?S:Mt(m,C.args);return{args:C.args,inputSource:m,inputEnvelope:L,projectRoot:n,format:o,watch:s||C.watch,commandLevelWatch:C.metadata,serverUrl:p,platformTarget:g,strictReadOnly:E,privateExecutionBeta:_}}function Wr(e,t){return t?.active?{...e??{},commandLevelWatch:t,serverHeldStream:!1}:e}function Bo(e,t,a=process.stdout,r=process.stderr){if(t.format==="json"){const o=dn(e.instructions,e.metadata),s=Wr(o.metadata,t.commandLevelWatch);if(t.watch){a.write(JSON.stringify({type:"invoke_result",instructions:o.instructions,metadata:s,publicSafe:!0})+`
|
|
190
|
+
`);return}a.write(JSON.stringify({instructions:o.instructions,metadata:s})+`
|
|
191
|
+
`);return}const i=dn(e.instructions,e.metadata),n=Wr(i.metadata,t.commandLevelWatch);a.write(i.instructions+`
|
|
192
|
+
`),n&&r.write(JSON.stringify(n)+`
|
|
193
|
+
`)}function Ho(e){const t=()=>e.abort();return process.once("SIGINT",t),process.once("SIGTERM",t),()=>{process.removeListener("SIGINT",t),process.removeListener("SIGTERM",t)}}async function Dc(e){if(Mo(e))return process.stdout.write(`${jo}
|
|
194
|
+
`),0;let t;try{t=$o(e)}catch(r){if(r instanceof Ht)return process.stderr.write(JSON.stringify({error_code:r.code,reason:r.reason,source:r.source,byte_length:r.byteLength,message:r.message,remediation:r.message})+`
|
|
195
|
+
`),1;throw r}if(ya(t.args))return t.strictReadOnly?(process.stderr.write(JSON.stringify({error_code:"readonly-registry-denied",message:"Strict read-only policy is not eligible for the local jobs console."})+`
|
|
196
|
+
`),1):(await Ia({args:t.args,projectRoot:cn(t.projectRoot),format:t.format,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})).exitCode;const a=await Lo({args:t.args,inputSource:t.inputSource,inputEnvelope:t.inputEnvelope,watch:t.watch,projectRoot:t.projectRoot,format:t.format,serverUrl:t.serverUrl,platformTarget:t.platformTarget,strictReadOnly:t.strictReadOnly,privateExecutionBeta:t.privateExecutionBeta});if(!a.success){const r=a.metadata?.invocationInput,i=r&&typeof r=="object"&&!Array.isArray(r)?r:void 0;return process.stderr.write(JSON.stringify({error_code:a.errorCode??(a.exitCode===2?"NOT_CONFIGURED":"INVOKE_ERROR"),message:Ve(a.error??"",ct),...typeof i?.reason=="string"?{reason:Ve(i.reason,80)}:{},...typeof i?.source=="string"?{source:Ve(i.source,20)}:{},...Number.isSafeInteger(i?.byteLength)?{byte_length:i.byteLength}:{},...typeof i?.remediation=="string"?{remediation:Ve(i.remediation,ct)}:{}})+`
|
|
197
|
+
`),a.exitCode}if(Bo(a,t),t.watch){const r=new AbortController,i=Ho(r);try{const n=xo(a.metadata,t.args);n.disabled?io(n.reasonCodes??[fe.TARGET_UNRESOLVED],t.args,t.format,process.stdout,t.privateExecutionBeta):await oo({projectRoot:cn(t.projectRoot),format:t.format,strictReadOnly:t.strictReadOnly,protectedOutput:t.privateExecutionBeta,...n,signal:r.signal})}finally{i()}}return 0}export{jo as INVOKE_HELP_TEXT,nr as INVOKE_PAYLOAD_LIMIT_BYTES,an as INVOKE_PAYLOAD_WARNING_THRESHOLD_BYTES,Ht as InvokeCliInputError,un as InvokePayloadTooLargeError,pn as InvokeStructuralContextTooLargeError,Ze as StateSnapshotIntegrityError,Oc as __resetSchemaDriftWarnedForTests,Oo as acknowledgeMaterializedPendingEpicClaims,ai as admitClientInvocation,Sr as assertEpicAwareStateShapeBeforeRepair,xi as boundedP222PremergeCheckpointPositions,Vi as buildSignedInvokeAttempt,ni as clearPendingEpicIdempotencyKey,ki as collectInvokeP205Authorities,vr as collectStateSnapshot,yt as computeInvokeRequestBodySizeBytes,Nc as createFullStateSnapshotScope,yn as createInvokePayloadTelemetry,hi as detectStateSchemaDrift,Do as extractPreFlightTrigger,ti as getOrCreatePendingEpicIdempotencyKey,kr as guardInvokeRequestBodySize,Lo as invoke,Dc as invokeCliHandler,Er as isEpicAwareCommandId,Yi as maybeEmitInvokePayloadSizeWarning,Ji as maybeRunInvokeRunnerAutoBootstrap,$o as parseInvokeCliOptions,Tr as postMaterializationJson,cr as recordPendingEpicReservation,Io as resolveInvokeCommandLevelWatch,cn as resolveInvokeProjectRoot,Di as resolveInvokeTransportErrorCode,xo as resolveInvokeWatchTarget,dn as sanitizeInvokeCliOutput,Po as sendEpicClaimAcknowledgement,Br as sendInvokeRequest,Lc as sendPrivateExecutionCancelRequest,ko as sendPrivateExecutionConsumeRequest,di as shouldCollectProjectEvidenceForInvoke,oo as watchContinuityProcessingSummaries,Bo as writeInvokeCliSuccessOutput};
|