@ornexus/neocortex 4.60.48 → 4.60.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/sbom.cdx.json +23 -23
  2. package/install.ps1 +1 -1
  3. package/install.sh +1 -1
  4. package/package.json +2 -2
  5. package/packages/client/dist/adapters/platform-detector.d.ts +9 -0
  6. package/packages/client/dist/adapters/platform-detector.js +1 -1
  7. package/packages/client/dist/cli.js +3 -2
  8. package/packages/client/dist/commands/invoke.d.ts +4 -0
  9. package/packages/client/dist/commands/invoke.js +54 -54
  10. package/packages/client/dist/commands/native-agent.d.ts +1 -0
  11. package/packages/client/dist/commands/native-agent.js +2 -0
  12. package/packages/client/dist/continuity/migrations/006-native-agent-dispatches.d.ts +9 -0
  13. package/packages/client/dist/continuity/migrations/006-native-agent-dispatches.js +48 -0
  14. package/packages/client/dist/continuity/native-agent-store.d.ts +13 -0
  15. package/packages/client/dist/continuity/native-agent-store.js +1 -0
  16. package/packages/client/dist/continuity/native-agent-types.d.ts +54 -0
  17. package/packages/client/dist/continuity/native-agent-types.js +1 -0
  18. package/packages/client/dist/continuity/sqlite-store.d.ts +43 -2
  19. package/packages/client/dist/continuity/sqlite-store.js +88 -62
  20. package/packages/client/dist/git/git-lifecycle-store.d.ts +36 -1
  21. package/packages/client/dist/git/git-lifecycle-store.js +4 -4
  22. package/packages/client/dist/index.d.ts +1 -0
  23. package/packages/client/dist/index.js +1 -1
  24. package/packages/client/dist/state/project-state-snapshot.js +1 -1
  25. package/targets-stubs/antigravity/gemini.md +1 -1
  26. package/targets-stubs/antigravity/skill/SKILL.md +1 -1
  27. package/targets-stubs/claude-code/neocortex-root.agent.yaml +1 -1
  28. package/targets-stubs/claude-code/neocortex-root.md +2 -2
  29. package/targets-stubs/claude-code/neocortex.agent.yaml +1 -1
  30. package/targets-stubs/claude-code/neocortex.md +2 -2
  31. package/targets-stubs/codex/AGENTS.md +35 -2
  32. package/targets-stubs/codex/neocortex.toml +6 -0
  33. package/targets-stubs/cursor/agent.md +2 -2
  34. package/targets-stubs/gemini-cli/agent.md +2 -2
  35. package/targets-stubs/opencode/neocortex-root.md +1 -1
  36. package/targets-stubs/vscode/neocortex.agent.md +2 -2
@@ -71,6 +71,36 @@ export interface GitLifecycleCheckpointVerification {
71
71
  readonly reasonCodes: readonly string[];
72
72
  readonly publicSafe: true;
73
73
  }
74
+ export type GitLifecycleCheckpointVerificationMode = 'integration' | 'scheduling';
75
+ export interface StorySchedulingCheckpointEvidence {
76
+ readonly schemaVersion: 1;
77
+ readonly kind: 'story_scheduling_checkpoint_evidence';
78
+ readonly producer: 'client-git-physical-v1';
79
+ readonly storyId: string;
80
+ readonly epicId: string;
81
+ readonly branch: string;
82
+ readonly baseSha: string;
83
+ readonly headSha: string;
84
+ readonly graphRevision: string;
85
+ readonly effectiveClaimRevision: string;
86
+ readonly sourceEvidenceDigest: string;
87
+ readonly verifiedAt: string;
88
+ readonly reasonCodes: readonly ['checkpoint-git-scheduling-verified'];
89
+ readonly integrationAuthorized: false;
90
+ readonly publicSafe: true;
91
+ }
92
+ export type StoryCheckpointProjectionDecision = {
93
+ readonly kind: 'integration-authorized';
94
+ readonly verification: GitLifecycleCheckpointVerification;
95
+ } | {
96
+ readonly kind: 'scheduling-only';
97
+ readonly evidence: StorySchedulingCheckpointEvidence;
98
+ } | {
99
+ readonly kind: 'rejected';
100
+ readonly verification: GitLifecycleCheckpointVerification;
101
+ } | {
102
+ readonly kind: 'out-of-scope';
103
+ };
74
104
  /**
75
105
  * Process-local authority created only by a successful canonical P205 run.
76
106
  * Its runtime object has no enumerable payload. Bindings live only in a private
@@ -143,7 +173,12 @@ export declare function verifyAcceptedGitLifecycleStoryCheckpoint(projectRoot: s
143
173
  * Synchronous variant used at the state-snapshot boundary, before any runtime
144
174
  * overlay is sent to the server. It returns a fresh, public, Git-derived receipt.
145
175
  */
146
- export declare function verifyAcceptedGitLifecycleStoryCheckpointSync(projectRoot: string, value: unknown, storyId: string, epicId: string, executionBranch: string, transientAuthority?: P205TransientExecutionAuthority | null, authorizedWriteSet?: readonly string[], nowIso?: string): GitLifecycleCheckpointVerification;
176
+ export declare function verifyAcceptedGitLifecycleStoryCheckpointSync(projectRoot: string, value: unknown, storyId: string, epicId: string, executionBranch: string, transientAuthority?: P205TransientExecutionAuthority | null, authorizedWriteSet?: readonly string[], nowIso?: string, mode?: GitLifecycleCheckpointVerificationMode): GitLifecycleCheckpointVerification;
177
+ /**
178
+ * Classify a checkpoint for one story without allowing physical scheduling
179
+ * evidence to impersonate transient P205 integration authority.
180
+ */
181
+ export declare function classifyGitLifecycleStoryCheckpointProjectionSync(projectRoot: string, value: unknown, storyId: string, epicId: string, executionBranch: string, transientAuthority: P205TransientExecutionAuthority | undefined, authorizedWriteSet?: readonly string[], nowIso?: string): StoryCheckpointProjectionDecision;
147
182
  /** Read-only projection for persistence/audit; it never recreates authority. */
148
183
  export declare function projectP205TransientExecutionEvidence(authority: P205TransientExecutionAuthority | null | undefined): Readonly<{
149
184
  readonly executionHeadSha: string;
@@ -1,4 +1,4 @@
1
- import{execFile as ni,execFileSync as re}from"node:child_process";import{createHash as w,randomBytes as ye}from"node:crypto";import{lstat as be,open as ai,readFile as T,realpath as Z,stat as ci}from"node:fs/promises";import{existsSync as j,lstatSync as Oe,readFileSync as Pe,realpathSync as we}from"node:fs";import{basename as k,dirname as W,isAbsolute as ne,join as y,relative as oi,resolve as p}from"node:path";import{promisify as si}from"node:util";import{publicWriteSet as di}from"../../../shared/dist/yoloop/public-story-write-set.js";import{resolveBranchUnit as fi}from"../../../shared/dist/yoloop/branch-unit.js";import{anchoredAtomicWriteFile as ui,anchoredCreateOwnedDirectory as Ne,anchoredEnsureDirectory as Be,anchoredExecuteGit as gi,anchoredExecuteNode as $e,anchoredRemoveDirectory as hi,anchoredRenameDirectory as ie}from"./secure-filesystem-boundary.js";import{GIT_LIFECYCLE_COMMIT_PUSH_STEP_ID as li,GIT_LIFECYCLE_REVIEW_PR_STEP_ID as mi}from"./git-lifecycle-step-ids.js";const B=si(ni),de="neocortex-yoloop",fe="runtime.json",V="node scripts/test-root.mjs --gate complete",Ve=Object.freeze({"P174.03.029264":"339141be7339a0edf55710cbccb6e6558f514792"}),pi=Object.freeze({"P174.03.811759":Object.freeze({baseSha:"749c8fc732deaf26c81a8e08cc94b83c8cf0f5ba",headSha:"84162456d9cbe5000ffd0ed3eb3d0e88cfeba499",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"11f54704f5007f6139159419cfd7781f908b1502e117365c6d84011384579ed2",commitBodyDigest:"b4fc759a49765fd8c0b3d0f5d1c333c2a4bf28d324e83eedabb12f9530df3738",changedPathsDigest:"11f54704f5007f6139159419cfd7781f908b1502e117365c6d84011384579ed2",qaDigest:"f1100775e21f5d0d990f77303a2a06d936908f016983e32a63316d81aee6b9fc",reviewDigest:"50400bbcddb6f02408837cf99077de5d3af8c84822ab23a8b5499c338af7103a"}),"P174.03.685003":Object.freeze({baseSha:"84162456d9cbe5000ffd0ed3eb3d0e88cfeba499",headSha:"272a7fee89e4b9324d35701df1c83b671fa96299",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"6cc3c9033f1c4711dcbe3c676d1d7f9906614c7d6e95228e843d1c63cefbc641",commitBodyDigest:"e97966e26ce3ba31d5951b9fdac67808c88c1fd8be7ec1e73982f3f1cc7ffd81",changedPathsDigest:"6cc3c9033f1c4711dcbe3c676d1d7f9906614c7d6e95228e843d1c63cefbc641",qaDigest:"7439329a93321f39fb6b0de0a41c22e58373a399f9048e362dff4ffa6f1a7d89",reviewDigest:"1b2d12262e84acf9da7d06149a0effb11274ebdc986affbfd47635b855ec7135"}),"P174.03.029264":Object.freeze({baseSha:"272a7fee89e4b9324d35701df1c83b671fa96299",headSha:"339141be7339a0edf55710cbccb6e6558f514792",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"1053bb2baf487e38fa28d7e8cfb872c5c4da66802534ee226bbc2c7455a6a5ab",commitBodyDigest:"0f269a00dcd168a6f548ff10dfa667b193c948ac9c7211f5cb11a0561757c371",changedPathsDigest:"1053bb2baf487e38fa28d7e8cfb872c5c4da66802534ee226bbc2c7455a6a5ab",qaDigest:"ef0fd2c6e216557825cd8521ccb2f9960a3af48f18e7a5ada441bee8bfda400b",reviewDigest:"372d0f4a2f32978c8b39f20167637b3917187edb75d49875e93200c4c5a19d0d"}),"P174.03.913359":Object.freeze({baseSha:"339141be7339a0edf55710cbccb6e6558f514792",headSha:"4ccc90b85c49b27f718090bf25bc452f1b84e5e3",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"12b5cfba2667e8064309807776c1b323561dc8d853f9afe5f676007b8494b2b5",commitBodyDigest:"89a6653197509e75246a758d2706876b337770571a1cac47d9d85ec96c196459",changedPathsDigest:"12b5cfba2667e8064309807776c1b323561dc8d853f9afe5f676007b8494b2b5",qaDigest:"c7d3762ad30e4f9356243df17a1dd7123cbf1b660808d68176f44d1cd5da6449",reviewDigest:"e4ecf577e174fd66f31aa4a0113ab672ced16b12ee531f6831aa533795145ba1"}),"P174.03.724350":Object.freeze({baseSha:"4ccc90b85c49b27f718090bf25bc452f1b84e5e3",headSha:"568e9464fb086304146b9eb4594281f91302aef1",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"c8b8b6b96edf9cea78925e2f961bd74069d77af03783a5368b8ac8025bf1fefe",commitBodyDigest:"b3032338bfcd6c9dc460e9426220a1966dedeff9968c4064fdd36a315560721b",changedPathsDigest:"c8b8b6b96edf9cea78925e2f961bd74069d77af03783a5368b8ac8025bf1fefe",qaDigest:"91f2f5b00935b1b04bb5d400df500cbc97c412072078b713c6e5ba8fda669bd0",reviewDigest:"9bc92069d3b3a76cc8b02d339d432690258be1376464b69e152ed8fd3d682f05"}),"P174.03.011976":Object.freeze({baseSha:"568e9464fb086304146b9eb4594281f91302aef1",headSha:"195599b1a99a99a8416c4c26c9ab9990847338a4",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"49b7f2a0a967b2ba4249615c6d08834445a60df95045352838808eb4d6743b21",commitBodyDigest:"b8a28392fac663dd614b695a49c894b7cab116d45722a42850e3b24e2aaf36f4",changedPathsDigest:"49b7f2a0a967b2ba4249615c6d08834445a60df95045352838808eb4d6743b21",qaDigest:"6eb4459a7d80c4a268fc931297e8156ed2a320584f8775f0787d91b42c0929d4",reviewDigest:"98b21de29f7cceeec73da19000c6c144395cce6eb699c6a82dfab505d4ab7b44"}),"P174.03.686659":Object.freeze({baseSha:"195599b1a99a99a8416c4c26c9ab9990847338a4",headSha:"0db3681a5dad4e25ce37d967c636eb9d54915556",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"5c0fdbf820d677c288981b6f73f7d2d9a04ce7f4713687f12a2e984705244b8e",commitBodyDigest:"143257f4018ad773afc0c7280bd8aab8786851a9c20b65f8110881ff54656839",changedPathsDigest:"5c0fdbf820d677c288981b6f73f7d2d9a04ce7f4713687f12a2e984705244b8e",qaDigest:"6303dbf473e2815a3671aeb2c25528d8daba484b92a5a40d1eea5215e1f6763e",reviewDigest:"1bd6695846ed9340c8677cfa9b573880532187aeee487efaaa70577a0c94e7f2"})}),Se="neocortex-yoloop-runtime.json",yi="runtime.lock",Le=new WeakMap;async function pt(i,e){return(await bi(i,{headSha:e.headSha,graphRevisions:[e.graphRevision],...e.nowIso!==void 0?{nowIso:e.nowIso}:{},...e.anchoredWorkspace!==void 0?{anchoredWorkspace:e.anchoredWorkspace}:{}})).get(e.graphRevision)}async function bi(i,e){const t=[...new Set(e.graphRevisions)];if(!x(e.headSha)||t.length===0||t.some(v=>!h(v)))throw new Error("p205-transient-binding-invalid");const r=e.anchoredWorkspace;if(r&&p(i)!==y(p(r.parent),r.name))throw new Error("p205-transient-anchor-binding-invalid");const n=async v=>r?(await gi(r.parent,r.name,r.identity,v)).toString("utf8"):String((await B("git",[...v],{cwd:i,encoding:"utf8",maxBuffer:8*1024*1024})).stdout),a=async()=>r?JSON.parse((await $e(r.parent,r.name,r.identity,["-e","const fs=require('node:fs');process.stdout.write(JSON.stringify({manifest:fs.readFileSync('config/release-gates.v2.json','utf8'),runner:fs.readFileSync('scripts/test-root.mjs','utf8')}));"])).toString("utf8")):{manifest:await T(y(i,"config","release-gates.v2.json"),"utf8"),runner:await T(y(i,"scripts","test-root.mjs"),"utf8")};if((await n(["rev-parse","HEAD"])).trim()!==e.headSha)throw new Error("p205-transient-head-mismatch");const{manifest:s,runner:u}=await a(),[c,f]=await Promise.all([n(["show",`${e.headSha}:config/release-gates.v2.json`]),n(["show",`${e.headSha}:scripts/test-root.mjs`])]);if(s!==c||u!==f)throw new Error("p205-transient-producer-dirty");const D=JSON.parse(s),g=Array.isArray(D.requiredCompleteClasses)?D.requiredCompleteClasses.filter(v=>typeof v=="string"&&/^[a-z0-9-]+$/.test(v)):[];if(D.contract!=="P205-CI-02"||g.length===0)throw new Error("p205-transient-manifest-invalid");const m=r?(await $e(r.parent,r.name,r.identity,["scripts/test-root.mjs","--gate","complete"])).toString("utf8"):String((await B(process.execPath,["scripts/test-root.mjs","--gate","complete"],{cwd:i,encoding:"utf8",maxBuffer:64*1024*1024})).stdout),{manifest:S,runner:N}=await a();if(S!==s||N!==u)throw new Error("p205-transient-producer-raced");if((await n(["rev-parse","HEAD"])).trim()!==e.headSha)throw new Error("p205-transient-head-raced");const R=w("sha256").update(s).digest("hex"),Q=w("sha256").update(m).digest("hex"),b=ce(e.nowIso??new Date().toISOString()),l=new Map,U=Object.freeze(g);for(const v of t){const M=w("sha256").update(["p205-transient-execution-v1",V,e.headSha,v,R,g.join(","),Q,b].join("\0")).digest("hex"),q=Object.freeze({schemaVersion:1,kind:"p205_transient_execution_authority",contract:"P205-CI-02",command:V,executionHeadSha:e.headSha,graphRevision:v,manifestDigest:R,gateIds:U,resultDigest:Q,executedAt:b,executionEvidenceDigest:M}),A=Object.freeze(Object.create(null));Le.set(A,q),l.set(v,A)}return l}async function ve(i,e={}){const t=await Pi(i);return Ye(t,e)}function wi(i,e={}){let t;try{const r=re("git",["rev-parse","--git-common-dir"],{cwd:i,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim(),n=we(i),a=ne(r)?p(r):p(n,r),o=we(a);if(o!==a)throw new Error("git-lifecycle-common-dir-symlink");qi(o);const s=y(o,de),u=y(s,fe);if(j(s)&&(Je(s,"directory"),we(s)!==s))throw new Error("git-lifecycle-runtime-directory-symlink");t=j(u)?u:y(o,Se)}catch{if(e.required)throw new Error("git-lifecycle-common-dir-invalid");return Ie()}if(!j(t)){if(e.required)throw new Error("git-lifecycle-runtime-missing");return Ie()}return Je(t,"file"),xe(JSON.parse(Pe(t,"utf8")))}async function yt(i){try{await ve(i,{required:!0});return}catch(e){if(!(e instanceof Error)||e.message!=="git-lifecycle-runtime-missing")throw e}try{await je(i,()=>{},{expectedRevision:0})}catch(e){if(!(e instanceof Error)||e.message!=="git-lifecycle-runtime-revision-conflict")throw e;await ve(i,{required:!0})}}function qe(i,e,t){if(!i||i.ownerStoryId!==e)return!1;const r=typeof i.sessionId=="string"?i.sessionId:"",n=Date.parse(String(i.expiresAt));return/^setup-[a-f0-9]{64}$/.test(r)&&i.idempotencyKey===r&&Number.isFinite(n)&&n>t}async function bt(i,e,t=new Date().toISOString()){if(!it(e))throw new Error("git-lifecycle-graph-authority-invalid");const r=y(p(i),".neocortex","state.json"),n=await T(r,"utf8"),a=d(JSON.parse(n));if(!a)throw new Error("git-lifecycle-tracked-state-invalid");const o=await ve(i),s=vi(a,o),u=d(d(s.epics)?.[e.epicId]),c=d(d(s.stories)?.[e.storyId]);if(!u)throw new Error("git-lifecycle-graph-authority-epic-invalid");if(!c||String(c.epic_id??e.storyId.split(".")[0])!==e.epicId)throw new Error("git-lifecycle-graph-authority-story-invalid");const f=Array.isArray(u.stories)?u.stories.filter(b=>typeof b=="string"):Object.keys(d(s.stories)??{}).filter(b=>{const l=d(d(s.stories)?.[b]);return String(l?.epic_id??b.split(".")[0])===e.epicId});if(Array.isArray(u.stories)&&!f.includes(e.storyId))throw new Error("git-lifecycle-graph-authority-story-invalid");const D=f.map(b=>{const l=d(d(s.stories)?.[b])??{};return{id:b,branch_name:typeof l.branch_name=="string"||l.branch_name===null?l.branch_name:void 0,pr_number:typeof l.pr_number=="number"||l.pr_number===null?l.pr_number:void 0,steps_completed:Array.isArray(l.steps_completed)?l.steps_completed.filter(U=>typeof U=="string"):[],checkpoint:d(l.checkpoint)}}),g=fi({...u,id:e.epicId},D);if(g.mode!=="epic")throw new Error("git-lifecycle-graph-authority-epic-invalid");if(g.executionBranch!==e.executionBranch)throw new Error("git-lifecycle-graph-authority-branch-mismatch");if(g.originBranch!==void 0&&g.originBranch!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-mismatch");const m=typeof d(o.epics[e.epicId])?.origin_branch=="string"?String(d(o.epics[e.epicId]).origin_branch):void 0;if(m!==void 0&&m!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-mismatch");if(g.originBranch===void 0&&m===void 0){const{stdout:b}=await B("git",["branch","--show-current"],{cwd:i,encoding:"utf8",maxBuffer:1048576});if(String(b).trim()!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-physical-mismatch")}const S=typeof u.graph_revision=="string"?u.graph_revision:void 0,N=typeof d(o.epics[e.epicId])?.graph_revision=="string"?String(d(o.epics[e.epicId]).graph_revision):void 0;if(S!==void 0&&!h(S))throw new Error("git-lifecycle-graph-revision-invalid");if(S===e.graphRevision&&N===e.graphRevision&&g.originBranch===e.originBranch&&m===e.originBranch)return{applied:!1,reused:!0,revision:o.revision,graphRevision:e.graphRevision};const $=Date.parse(t);if(!Number.isFinite($))throw new Error("git-lifecycle-graph-authority-time-invalid");const R=d(u.branch_lease);if(R&&Number.isFinite(Date.parse(String(R.expiresAt)))&&Date.parse(String(R.expiresAt))>$&&!qe(R,e.storyId,$))throw new Error("git-lifecycle-graph-authority-writer-active");return{applied:!0,reused:!1,revision:(await je(i,b=>{const l=Di(b,e.epicId);if(l.branch_mode!==void 0&&l.branch_mode!=="epic")throw new Error("git-lifecycle-graph-authority-epic-raced");const U=l.execution_branch;if(U!==void 0&&U!==e.executionBranch)throw new Error("git-lifecycle-graph-authority-branch-raced");const v=l.origin_branch;if(v!==void 0&&v!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-raced");const M=l.graph_revision;if(M!==void 0&&M!==S)throw new Error("git-lifecycle-graph-authority-epoch-raced");const q=d(l.branch_lease);if(q&&Number.isFinite(Date.parse(String(q.expiresAt)))&&Date.parse(String(q.expiresAt))>$&&!qe(q,e.storyId,$))throw new Error("git-lifecycle-graph-authority-writer-active");l.branch_mode="epic",l.execution_branch=e.executionBranch,l.origin_branch=e.originBranch,l.graph_revision=e.graphRevision},{expectedRevision:o.revision,preCommit:async()=>{if(await T(r,"utf8")!==n)throw new Error("git-lifecycle-graph-authority-tracked-state-raced")}})).document.revision,graphRevision:e.graphRevision}}async function je(i,e,t={}){const r=await _e(i),n=await Ke(r),a=y(n,yi),o=await rt(a);try{const s=y(n,fe),u=y(r,Se),c=await Ye(j(s)?s:u);if(t.expectedRevision!==void 0&&t.expectedRevision!==c.revision)throw new Error("git-lifecycle-runtime-revision-conflict");const f=structuredClone(c),D=e(f),g=xe({...f,schemaVersion:1,revision:c.revision+1});return await t.preCommit?.(g),await G(n,"directory"),await Vi(s),await ui(n,fe,`${JSON.stringify(g,null,2)}
2
- `),await G(s,"file"),await Si(n),{document:g,value:D}}finally{await nt(a,o).catch(()=>{})}}async function Si(i){let e;try{e=await ai(i,"r")}catch(t){if(process.platform==="win32"&&(O(t,"EPERM")||O(t,"EISDIR")||O(t,"EINVAL")))return;throw t}try{await e.sync()}finally{await e.close()}}function vi(i,e){const t=structuredClone(i),r=ze(t,"epics"),n=ze(t,"stories");for(const[a,o]of Object.entries(e.epics))r[a]={...d(r[a])??{},...structuredClone(o)};for(const[a,o]of Object.entries(e.stories))n[a]={...d(n[a])??{},...structuredClone(o)};return t}function ze(i,e){const t=i[e];if(t===void 0){const a={};return i[e]=a,a}const r=d(t);if(r)return r;if(!Array.isArray(t))throw new Error(`git-lifecycle-tracked-${e}-invalid`);const n={};for(const a of t){const o=d(a),s=typeof o?.id=="string"?o.id.trim():"";if(!s||n[s]!==void 0)throw new Error(`git-lifecycle-tracked-${e}-ambiguous`);n[s]=o}return i[e]=n,n}function Di(i,e){return i.epics[e]??(i.epics[e]={})}function wt(i,e){return i.stories[e]??(i.stories[e]={})}function Ge(i,e,t,r){const n=d(i);return!!(n&&n.epicId===t&&n.branch===r&&n.qaVerdict==="passed"&&n.reviewVerdict==="approved"&&Qe(n,e))}async function St(i,e,t,r,n,a,o=[]){return _i(i,e,t,r,n,a,o).verdict==="verified"}function _i(i,e,t,r,n,a,o=[],s=new Date().toISOString()){const u=()=>Oi({storyId:t,epicId:r,executionBranch:n,value:e,verifiedAt:s,verdict:"rejected",reasonCode:"checkpoint-git-physical-invalid"});try{if(!Ge(e,t,r,n))return u();const c=d(e),f=d(c.qaReceipt),D=d(c.reviewReceipt),g=String(c.headSha),m=String(c.baseSha),S=z(i,["rev-parse",`refs/heads/${n}`]).trim();re("git",["merge-base","--is-ancestor",g,S],{cwd:i,stdio:"ignore"});const N=z(i,["show","--no-patch","--format=%H%n%P%n%B",g]),$=z(i,["rev-parse",`${g}^`]).trim(),R=z(i,["rev-list","--count",`${m}..${g}`]).trim();if($!==m||R!=="1")return u();const Q=new Set(N.split(`
3
- `).map(H=>H.trim())),l=[`Neocortex-Story: ${t}`,`Neocortex-Epic: ${r}`,`Neocortex-Execution-Branch: ${n}`,`Neocortex-Bundle-Digest: ${String(c.bundleDigest)}`,`Neocortex-Graph-Revision: ${String(c.graphRevision)}`,...c.dispatchId?[`Neocortex-Dispatch: ${String(c.dispatchId)}`]:[],...c.bundleId?[`Neocortex-Bundle: ${String(c.bundleId)}`]:[],...c.claimRevision?[`Neocortex-Claim-Revision: ${String(c.claimRevision)}`]:[]].every(H=>Q.has(H));if(l){const Ce=[...Q].find(ri=>ri.startsWith("Neocortex-Prepared-Base: "))?.slice(25)??"";if(!/^[a-f0-9]{40,64}$/i.test(Ce))return u();re("git",["merge-base","--is-ancestor",Ce,g],{cwd:i,stdio:"ignore"})}const v=z(i,["diff-tree","--no-commit-id","--name-only","-r","-z",g]).split("\0").filter(Boolean);if(v.length===0||v.some(H=>!ge(H)))return u();const M=w("sha256").update(N).digest("hex"),q=w("sha256").update([...v].sort().join("\0")).digest("hex"),A=He({checkpoint:c,storyId:t,epicId:r,executionBranch:n,baseSha:m,headSha:g,commitBodyDigest:M,changedPathsDigest:q,changedPaths:v,authorizedWriteSet:o.length>0?o:Ei(i,t)});if(!A||f.receiptRef!==`story-qa:${String(f.sourceEvidenceDigest)}`)return u();const Re=ki({storyId:t,baseSha:m,headSha:g,bundleDigest:String(c.bundleDigest),graphRevision:String(c.graphRevision),commitBody:N,changedPaths:v}),Ae=f.evidenceVersion==="p205-execution-v2"&&f.contract==="P205-CI-02"&&f.command===V&&h(f.manifestDigest)&&L(f.gateIds,32,!0)&&h(f.resultDigest)&&f.sourceEvidenceDigest===Ci({gitEvidenceDigest:Re,headSha:g,graphRevision:String(c.graphRevision),manifestDigest:String(f.manifestDigest),gateIds:f.gateIds,resultDigest:String(f.resultDigest)}),ei=f.evidenceVersion==="git-immutable-v1"&&f.sourceEvidenceDigest===Re,ii=f.evidenceVersion===void 0&&A.mode==="legacy-migration"&&A.binding?.qaDigest===f.sourceEvidenceDigest,me=xi(a,S,String(c.graphRevision))&&(Ae||A.mode==="legacy-migration"&&(ei||ii)),pe=a===void 0&&Ae;if(!me&&!pe)return u();const ke=w("sha256").update(["root-commit-range-review-v1",t,m,g,String(c.bundleDigest),String(c.graphRevision),String(f.receiptRef),w("sha256").update(N).digest("hex"),[...v].sort().join(",")].join("\0")).digest("hex");if(D.sourceEvidenceDigest!==ke||D.receiptRef!==`story-review:${ke}`||A.mode==="legacy-migration"&&A.binding?.reviewDigest!==void 0&&A.binding.reviewDigest!==D.sourceEvidenceDigest||!l&&(Ve[t]!==g||!Array.isArray(c.receiptRefs)||!c.receiptRefs.some(H=>typeof H=="string"&&H.startsWith("legacy-direct-yolo:"))))return u();const ti=w("sha256").update(["checkpoint-p205-transient-v1",t,r,n,m,g,String(c.bundleDigest),M,q,A.mode,A.effectiveClaimRevision,String(f.sourceEvidenceDigest),String(D.sourceEvidenceDigest),ae(a)?.executionEvidenceDigest??(pe?"maintenance-git-verification":"legacy-bounded-authority")].join("\0")).digest("hex"),ee=me?ae(a):void 0;return Object.freeze({schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:t,epicId:r,branch:n,baseSha:m,headSha:g,aggregateHeadSha:ee?.executionHeadSha??g,commitBodyDigest:M,changedPathsDigest:q,claimVerification:A.mode,effectiveClaimRevision:A.effectiveClaimRevision,sourceEvidenceDigest:ti,command:V,manifestDigest:ee?.manifestDigest??"0".repeat(64),gateIds:ee?.gateIds??Object.freeze(["legacy-bounded"]),resultDigest:ee?.resultDigest??"0".repeat(64),graphRevision:String(c.graphRevision),executionEvidenceDigest:ee?.executionEvidenceDigest??"0".repeat(64),verifiedAt:ee?.executedAt??ce(s),verdict:"verified",reasonCodes:Object.freeze([me?"checkpoint-p205-transient-verified":pe?"checkpoint-git-maintenance-verified":"checkpoint-legacy-bounded-verified",...A.mode==="legacy-migration"?["checkpoint-legacy-migration-verified"]:[]]),publicSafe:!0})}catch{return u()}}function xi(i,e,t){const r=ae(i);return!!(r&&r.schemaVersion===1&&r.kind==="p205_transient_execution_authority"&&r.contract==="P205-CI-02"&&r.command===V&&r.graphRevision===t&&h(r.resultDigest)&&h(r.executionEvidenceDigest)&&r.executionHeadSha===e&&x(e))}function ae(i){return i&&typeof i=="object"?Le.get(i):void 0}function vt(i){const e=ae(i);return e?Object.freeze({executionHeadSha:e.executionHeadSha,graphRevision:e.graphRevision,manifestDigest:e.manifestDigest,gateIds:Object.freeze([...e.gateIds]),resultDigest:e.resultDigest,executedAt:e.executedAt,executionEvidenceDigest:e.executionEvidenceDigest}):void 0}function Dt(i,e,t){const r=ae(i);return!!(r&&r.executionHeadSha===e&&r.graphRevision===t&&r.command===V)}function He(i){const e=pi[i.storyId],t=typeof i.checkpoint.claimRevision=="string"?i.checkpoint.claimRevision:void 0,r=i.storyId==="P174.03.811759"||i.storyId==="P174.03.685003",n=Ii(i.authorizedWriteSet),a=n.length>0&&n.length===i.authorizedWriteSet.length&&i.changedPaths.every(o=>n.some(s=>Ai(s,o)));if(e&&i.epicId==="P174"&&i.executionBranch==="epic/P174"&&i.baseSha===e.baseSha&&i.headSha===e.headSha&&i.checkpoint.graphRevision===e.graphRevision&&i.commitBodyDigest===e.commitBodyDigest&&i.changedPathsDigest===e.changedPathsDigest&&(r?t===void 0:t===e.effectiveClaimRevision))return i.authorizedWriteSet.length>0&&(!a||!Te(e.effectiveClaimRevision,n))?void 0:Object.freeze({mode:"legacy-migration",effectiveClaimRevision:e.effectiveClaimRevision,binding:e});if(t!==void 0&&!(!t||!h(t))&&!(!a||!Te(t,n)))return Object.freeze({mode:"canonical",effectiveClaimRevision:t})}function Ii(i){const e=i.map(t=>t.replaceAll("\\","/").replace(/^\.\//,"").replace(/\/{2,}/g,"/"));return e.some(t=>!ge(t))?Object.freeze([]):Object.freeze([...new Set(e)].sort())}function Ei(i,e){try{const t=JSON.parse(Pe(y(i,".neocortex","state.json"),"utf8")),r=d(t.stories),n=d(r?.[e]),a=wi(i),o=d(a.stories[e]?.checkpoint)??d(n?.checkpoint);return Ri(e,n,o)}catch{return[]}}function Ri(i,e,t){const r=Array.isArray(e?.files_to_modify)?e.files_to_modify.filter(n=>typeof n=="string"):[];if(!t?.dispatchId||!t.bundleId)return r;try{return di({...e,id:i,files_to_modify:r})}catch{return[]}}function Te(i,e){return i===w("sha256").update(e.join("\0")).digest("hex")||i===w("sha256").update(JSON.stringify(e)).digest("hex")}function Ai(i,e){return i===e||i.endsWith("/")&&e.startsWith(i)}function _t(i,e,t,r,n,a){try{if(!Ge(e,t,r,n))return!1;const o=d(e),s=d(o.qaReceipt),u=d(o.reviewReceipt),c=String(o.headSha),f=String(o.baseSha),D=z(i,["rev-parse",`refs/heads/${n}`]).trim();if(re("git",["merge-base","--is-ancestor",c,D],{cwd:i,stdio:"ignore"}),z(i,["rev-parse",`${c}^`]).trim()!==f||z(i,["rev-list","--count",`${f}..${c}`]).trim()!=="1")return!1;const g=z(i,["show","--no-patch","--format=%H%n%P%n%B",c]),m=z(i,["diff-tree","--no-commit-id","--name-only","-r","-z",c]).split("\0").filter(Boolean);if(m.length===0||m.some(N=>!ge(N)))return!1;const S=He({checkpoint:o,storyId:t,epicId:r,executionBranch:n,baseSha:f,headSha:c,changedPaths:m,authorizedWriteSet:a,commitBodyDigest:w("sha256").update(g).digest("hex"),changedPathsDigest:w("sha256").update([...m].sort().join("\0")).digest("hex")});return!(S?.mode!=="legacy-migration"||!S.binding||s.sourceEvidenceDigest!==S.binding.qaDigest||s.receiptRef!==`story-qa:${S.binding.qaDigest}`||u.sourceEvidenceDigest!==S.binding.reviewDigest||u.receiptRef!==`story-review:${S.binding.reviewDigest}`||u.qaReceiptRef!==s.receiptRef)}catch{return!1}}function ki(i){return w("sha256").update(["local-yolo-tdd-git-immutable-v1",i.storyId,i.baseSha,i.headSha,i.bundleDigest,i.graphRevision,w("sha256").update(i.commitBody).digest("hex"),w("sha256").update([...i.changedPaths].sort().join("\0")).digest("hex")].join("\0")).digest("hex")}function Ci(i){return w("sha256").update(["local-yolo-tdd-p205-execution-v2",V,i.gitEvidenceDigest,i.headSha,i.graphRevision,i.manifestDigest,i.gateIds.join(","),i.resultDigest].join("\0")).digest("hex")}function Oi(i){const e=d(i.value);return Object.freeze({schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:i.storyId,epicId:i.epicId,branch:i.executionBranch,baseSha:x(e?.baseSha)?String(e?.baseSha):"0".repeat(40),headSha:x(e?.headSha)?String(e?.headSha):"0".repeat(40),aggregateHeadSha:"0".repeat(40),commitBodyDigest:"0".repeat(64),changedPathsDigest:"0".repeat(64),claimVerification:"canonical",effectiveClaimRevision:"0".repeat(64),command:V,manifestDigest:"0".repeat(64),gateIds:Object.freeze([]),resultDigest:"0".repeat(64),graphRevision:"0".repeat(64),executionEvidenceDigest:"0".repeat(64),sourceEvidenceDigest:"0".repeat(64),verifiedAt:ce(i.verifiedAt),verdict:i.verdict,reasonCodes:Object.freeze([i.reasonCode]),publicSafe:!0})}function z(i,e){return re("git",[...e],{cwd:i,encoding:"utf8",maxBuffer:32*1024*1024})}function ce(i){return Number.isFinite(Date.parse(i))?new Date(Date.parse(i)).toISOString():new Date().toISOString()}async function xt(i,e){if(Ve[e.storyId]!==e.headSha)return;const t=[".neocortex/state.json",`.neocortex/stories/${e.storyId}/qa-gate-result.json`,`.neocortex/stories/${e.storyId}/validation-evidence.md`,`.neocortex/stories/${e.storyId}/review.md`,`docs/stories/${e.storyId}.story.md`];try{const r=(await B("git",["rev-parse",`refs/heads/${e.executionBranch}`],{cwd:i,encoding:"utf8",maxBuffer:1048576})).stdout.trim();if(await B("git",["merge-base","--is-ancestor",e.headSha,r],{cwd:i}),(await B("git",["rev-parse",`${e.headSha}^`],{cwd:i,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim()!==e.baseSha)return;const a=String((await B("git",["diff","--binary","--full-index",`${e.baseSha}..${e.headSha}`],{cwd:i,encoding:"utf8",maxBuffer:32*1024*1024})).stdout);if(w("sha256").update(a).digest("hex")!==e.bundleDigest)return;const o=String((await B("git",["show","--no-patch","--format=%H%n%P%n%B",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:4*1024*1024})).stdout);if(!String((await B("git",["show","--no-patch","--format=%s",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:1024*1024})).stdout).trim().includes(e.storyId))return;const c=String((await B("git",["diff-tree","--no-commit-id","--name-only","-r","-z",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:8*1024*1024})).stdout).split("\0").filter(Boolean);if(!t.every(b=>c.includes(b))||c.some(b=>!ge(b)))return;const f=await Promise.all(t.map(async b=>String((await B("git",["show",`${e.headSha}:${b}`],{cwd:i,encoding:"utf8",maxBuffer:16*1024*1024})).stdout))),D=JSON.parse(f[0]),g=d(D.stories),m=d(D.epics),S=d(g?.[e.storyId]),N=d(m?.[e.epicId]),$=Array.isArray(S?.steps_completed)?S.steps_completed:[],R=JSON.parse(f[1]);return S?.status!=="done"||!$.includes(li)||!$.includes(mi)||N?.branch_mode!=="epic"||N.execution_branch!==e.executionBranch||R.storyId!==e.storyId||R.status!=="qa-passed"||R.safeToContinueYoloop!==!0||!Array.isArray(R.blockingChecks)||R.blockingChecks.length!==0||!f[2].includes(e.storyId)||!/P205[\s\S]{0,80}(pass|aprov)/i.test(f[2])||!f[3].includes(e.storyId)||!/approved|aprovado/i.test(f[3])||!f[4].includes(e.storyId)?void 0:`legacy-direct-yolo:${w("sha256").update(["legacy-direct-yolo-recovery-v1",e.storyId,e.epicId,e.executionBranch,e.baseSha,e.headSha,e.bundleDigest,e.graphRevision,w("sha256").update(o).digest("hex"),w("sha256").update([...c].sort().join("\0")).digest("hex"),...f.map(b=>w("sha256").update(b).digest("hex"))].join("\0")).digest("hex")}`}catch{return}}async function Pi(i){const e=await _e(i),t=y(e,de),r=y(t,fe);if(j(t)&&(await G(t,"directory"),await Z(t)!==t))throw new Error("git-lifecycle-runtime-directory-symlink");return j(r)?r:y(e,Se)}async function Fe(i){return Ke(await _e(i))}async function Ni(i,e){if(!/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(e)||e.includes(".."))throw new Error("git-lifecycle-private-child-invalid");const t=p(i);await K(t);const r=p(t,e);return te(t,r),j(r)||await Be(t,e),await K(r,t),await K(t),r}async function _(i,e){const t=p(e),r=p(i);te(t,r),await K(t),await K(r,t)}async function It(i,e){await Y(i,e)}async function X(i,e,t){const r=p(e),n=p(i);te(r,n);try{await _(n,r)}catch(o){if(O(o,"ENOENT"))return!1;throw o}const a=p(r,`${n.slice(r.length+1)}.remove.${process.pid}.${Date.now()}.${ye(4).toString("hex")}`);return te(r,a),await ie(r,k(n),k(a)),await _(a,r),t&&!await t(a)?(await oe(a,n,r).catch(()=>{}),!1):(await hi(r,k(a)),!0)}async function oe(i,e,t){await _(i,t);try{await be(e);return}catch(r){if(!O(r,"ENOENT"))throw r}await ie(t,k(i),k(e)),await _(e,t)}async function P(i){try{await _(i,W(i));const e=y(i,"owner.json");await Y(e,i);const t=await T(e);return await Y(e,i),w("sha256").update(t).digest("hex")}catch{return}}async function Et(i,e){const t=await Fe(i),r=await Ni(t,"leases"),n=y(r,"integration"),a=`${n}.recovery`;if(j(a)){await _(a,r);const c=await Me(a),f=await P(a);if(c===void 0||le(c))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};if(!f||!await X(a,r,async D=>await P(D)===f))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"}}const o=ce(e.createdAt??new Date().toISOString()),s=Object.freeze({schemaVersion:1,kind:e.kind,storyId:e.storyId,sessionId:e.sessionId,idempotencyKey:e.idempotencyKey,pid:process.pid,createdAt:o,expiresAt:ce(e.expiresAt),persistent:e.persistent,ownerNonce:e.ownerNonce??ye(16).toString("hex")});if(Date.parse(s.expiresAt)<=Date.parse(s.createdAt))return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"};const u=async()=>{await K(r,t);try{return await Ne(r,k(n),`${JSON.stringify(s)}
4
- `),await _(n,r),await Y(y(n,"owner.json"),n),!0}catch(c){throw O(c,"EEXIST")||await X(n,r).catch(()=>{}),c}};try{return await u(),{ok:!0,owner:s,path:n}}catch(c){if(!O(c,"EEXIST"))return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"}}try{const c=await se(n),f=c?void 0:await Me(n);if(c&&We(c,s))return{ok:!0,owner:c,path:n};if(c&&Date.parse(c.expiresAt)>Date.now()&&(c.persistent||le(c.pid))||f!==void 0&&le(f)||!c&&f===void 0&&await Ze(n))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};const g=await P(n);if(!g)return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"};const m=`${n}.stale.${process.pid}.${Date.now()}`;await ie(r,k(n),k(m));try{if(await _(m,r),await P(m)!==g)return await oe(m,n,r).catch(()=>{}),{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};await u()}finally{await X(m,r,async S=>await P(S)===g).catch(()=>{})}return{ok:!0,owner:s,path:n}}catch(c){return{ok:!1,reasonCode:O(c,"EEXIST")||O(c,"ENOENT")?"git-lifecycle-integration-backpressure":"git-lifecycle-integration-lock-failed"}}}async function Rt(i,e){const t=await se(i);return!!(t&&De(t,e)&&Date.parse(t.expiresAt)>Date.now())}async function Bi(i,e){try{const t=W(i);await _(i,t);const r=await se(i);if(!r||!De(r,e))return!1;const n=await P(i);if(!n)return!1;const a=`${i}.release.${process.pid}.${Date.now()}`;await ie(t,k(i),k(a)),await _(a,t);const o=await se(a);return!o||!De(o,e)||await P(a)!==n?(await oe(a,i,t).catch(()=>{}),!1):X(a,t,async s=>await P(s)===n)}catch(t){if(O(t,"ENOENT"))return!1;throw t}}function $i(i){return w("sha256").update(["git-lifecycle-physical-owner-v1",i.kind,i.storyId,i.sessionId,i.idempotencyKey,String(i.pid),i.createdAt,i.expiresAt,i.persistent?"persistent":"ephemeral",i.ownerNonce].join("\0")).digest("hex")}async function At(i,e){if(!J(e.storyId)||!C(e.idempotencyKey)||!h(e.ownerDigest))return"foreign";const t=await Fe(i),r=y(t,"leases"),n=y(r,"integration");if(!j(n))return"absent";try{await _(r,t),await _(n,r);const a=await se(n);return!a||a.kind!=="direct"||a.storyId!==e.storyId||a.sessionId!==e.idempotencyKey||a.idempotencyKey!==e.idempotencyKey||a.persistent!==!0||$i(a)!==e.ownerDigest?"foreign":await Bi(n,a)?"released":"foreign"}catch{return"foreign"}}async function se(i){try{await _(i,W(i));const e=y(i,"owner.json");await Y(e,i);const t=JSON.parse(await T(e,"utf8"));return t.schemaVersion!==1||t.kind!=="direct"&&t.kind!=="continuous"||!J(t.storyId)||!C(t.sessionId)||!C(t.idempotencyKey)||!Number.isSafeInteger(t.pid)||Number(t.pid)<=0||!E(t.createdAt)||!E(t.expiresAt)||typeof t.persistent!="boolean"||typeof t.ownerNonce!="string"||!/^[a-f0-9]{32}$/.test(t.ownerNonce)?void 0:t}catch{return}}async function Me(i){try{await _(i,W(i));const e=y(i,"owner.json");await Y(e,i);const t=JSON.parse(await T(e,"utf8"));return Number.isSafeInteger(t.pid)&&Number(t.pid)>0?Number(t.pid):void 0}catch{return}}function We(i,e){return i.kind===e.kind&&i.storyId===e.storyId&&i.sessionId===e.sessionId&&i.idempotencyKey===e.idempotencyKey&&i.expiresAt===e.expiresAt&&i.persistent===e.persistent}function De(i,e){return We(i,e)&&i.schemaVersion===e.schemaVersion&&i.pid===e.pid&&i.createdAt===e.createdAt&&i.ownerNonce===e.ownerNonce}async function _e(i){const e=await Z(i),r=(await B("git",["rev-parse","--git-common-dir"],{cwd:e,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim(),n=ne(r)?p(r):p(e,r),a=await Z(n);if(a!==n)throw new Error("git-lifecycle-common-dir-symlink");await Li(a);const s=(await B("git",["rev-parse","--git-common-dir"],{cwd:e,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim();if((ne(s)?p(s):p(e,s))!==n)throw new Error("git-lifecycle-common-dir-raced");return a}async function Ke(i){const e=y(i,de);if(j(e)||await Be(i,de),await G(e,"directory"),await Z(e)!==e)throw new Error("git-lifecycle-runtime-directory-symlink");return e}async function Ye(i,e={}){try{return await G(i,"file"),xe(JSON.parse(await T(i,"utf8")))}catch(t){if(O(t,"ENOENT")){if(e.required)throw new Error("git-lifecycle-runtime-missing");return Ie()}throw t}}async function Vi(i){try{await G(i,"file")}catch(e){if(O(e,"ENOENT"))return;throw e}}async function G(i,e){const t=await be(i);if(t.isSymbolicLink())throw new Error(`git-lifecycle-${e}-symlink`);if(e==="file"?!t.isFile():!t.isDirectory())throw new Error(`git-lifecycle-${e}-invalid`);if(ue()&&t.uid!==process.getuid())throw new Error(`git-lifecycle-${e}-ownership-mismatch`);if(ue()&&(t.mode&63)!==0)throw new Error(`git-lifecycle-${e}-permissions-unsafe`)}function te(i,e){const t=p(i),r=p(e),n=oi(t,r);if(!n||n.startsWith("..")||ne(n)||W(r)!==t)throw new Error("git-lifecycle-private-path-escape")}async function K(i,e){const t=p(i);if(e&&te(p(e),t),await G(t,"directory"),p(await Z(t))!==t)throw new Error("git-lifecycle-directory-substituted");if(e){const r=p(e);if(await G(r,"directory"),p(await Z(r))!==r)throw new Error("git-lifecycle-directory-parent-substituted")}}async function Y(i,e){const t=p(i);if(te(p(e),t),await K(p(e)),await G(t,"file"),p(await Z(t))!==t)throw new Error("git-lifecycle-file-substituted")}function Je(i,e){const t=Oe(i);if(t.isSymbolicLink())throw new Error(`git-lifecycle-${e}-symlink`);if(e==="file"?!t.isFile():!t.isDirectory())throw new Error(`git-lifecycle-${e}-invalid`);if(ue()&&t.uid!==process.getuid())throw new Error(`git-lifecycle-${e}-ownership-mismatch`);if(ue()&&(t.mode&63)!==0)throw new Error(`git-lifecycle-${e}-permissions-unsafe`)}async function Li(i){const e=await be(i);if(e.isSymbolicLink())throw new Error("git-lifecycle-common-dir-symlink");if(!e.isDirectory())throw new Error("git-lifecycle-common-dir-invalid")}function qi(i){const e=Oe(i);if(e.isSymbolicLink())throw new Error("git-lifecycle-common-dir-symlink");if(!e.isDirectory())throw new Error("git-lifecycle-common-dir-invalid")}function ue(i=process.platform){return i!=="win32"&&typeof process.getuid=="function"}function xe(i){if(!i||typeof i!="object"||Array.isArray(i))throw new Error("git-lifecycle-runtime-invalid");const e=i;I(e,["schemaVersion","revision","epics","stories"],"git-lifecycle-runtime-unknown-field");const t=d(e.epics),r=d(e.stories);if(e.schemaVersion!==1||!Number.isSafeInteger(e.revision)||Number(e.revision)<0||!t||!r||Object.values(t).some(n=>!d(n))||Object.values(r).some(n=>!d(n)))throw new Error("git-lifecycle-runtime-invalid");for(const[n,a]of Object.entries(t))if(!J(n)||!Gi(a))throw new Error("git-lifecycle-runtime-epic-invalid");for(const[n,a]of Object.entries(r))if(!J(n)||!n.includes(".")||!Hi(a,n))throw new Error("git-lifecycle-runtime-story-invalid");return e}const ji=["branch_mode","execution_branch","origin_branch","branch_lease","origin_binding","graph_revision","aggregate_qa_receipt","terminal_git_receipt","physicalMergeStatus","pr_number","git_reconciliation_receipts","git_reconciliation_debt"],zi=["checkpoint","status","last_step","steps_completed"];function Gi(i){return I(i,ji,"git-lifecycle-runtime-epic-unknown-field"),(i.branch_mode===void 0||i.branch_mode==="epic")&&(i.execution_branch===void 0||F(i.execution_branch))&&(i.origin_branch===void 0||F(i.origin_branch))&&(i.branch_lease===void 0||i.branch_lease===null||Ti(i.branch_lease))&&(i.origin_binding===void 0||i.origin_binding===null||Wi(i.origin_binding))&&(i.graph_revision===void 0||h(i.graph_revision))&&(i.aggregate_qa_receipt===void 0||i.aggregate_qa_receipt===null||Ki(i.aggregate_qa_receipt))&&(i.terminal_git_receipt===void 0||i.terminal_git_receipt===null||Yi(i.terminal_git_receipt))&&(i.physicalMergeStatus===void 0||["merged","pushed","denied_external_gate","blocked_local_or_repo","not_attempted"].includes(String(i.physicalMergeStatus)))&&(i.pr_number===void 0||i.pr_number===null||Number.isSafeInteger(i.pr_number)&&Number(i.pr_number)>0)&&(i.git_reconciliation_receipts===void 0||Xi(i.git_reconciliation_receipts))&&(i.git_reconciliation_debt===void 0||et(i.git_reconciliation_debt))}function Hi(i,e){return I(i,zi,"git-lifecycle-runtime-story-unknown-field"),(i.checkpoint===void 0||i.checkpoint===null||Qe(i.checkpoint,e))&&(i.status===void 0||C(i.status))&&(i.last_step===void 0||i.last_step===null||C(i.last_step))&&(i.steps_completed===void 0||L(i.steps_completed,128))}function Ti(i){const e=d(i);return e?(I(e,["schemaVersion","ownerStoryId","sessionId","idempotencyKey","acquiredAt","expiresAt","handoffGrant","handoffConsumption"],"git-lifecycle-runtime-lease-unknown-field"),e.schemaVersion===1&&J(e.ownerStoryId)&&C(e.sessionId)&&C(e.idempotencyKey)&&E(e.acquiredAt)&&E(e.expiresAt)&&Date.parse(String(e.expiresAt))>Date.parse(String(e.acquiredAt))&&(e.handoffGrant===void 0||Fi(e.handoffGrant,e))&&(e.handoffConsumption===void 0||Mi(e.handoffConsumption,e))):!1}function Fi(i,e){const t=d(i);return t?(I(t,["schemaVersion","kind","storyId","fromSessionId","tokenDigest","bundleDigest","claimRevision","expiresAt"],"git-lifecycle-runtime-handoff-grant-unknown-field"),t.schemaVersion===1&&t.kind==="direct-yolo-setup-handoff"&&t.storyId===e.ownerStoryId&&t.fromSessionId===e.sessionId&&h(t.tokenDigest)&&h(t.bundleDigest)&&h(t.claimRevision)&&E(t.expiresAt)&&Date.parse(String(t.expiresAt))<=Date.parse(String(e.expiresAt))):!1}function Mi(i,e){const t=d(i);return t?(I(t,["schemaVersion","kind","state","storyId","fromSessionId","tokenDigest","bundleDigest","claimRevision","consumedBySessionId","consumedAt"],"git-lifecycle-runtime-handoff-consumption-unknown-field"),t.schemaVersion===1&&t.kind==="direct-yolo-setup-handoff-consumption"&&t.state==="consumed"&&t.storyId===e.ownerStoryId&&C(t.fromSessionId)&&h(t.tokenDigest)&&h(t.bundleDigest)&&h(t.claimRevision)&&t.consumedBySessionId===e.sessionId&&E(t.consumedAt)):!1}function Wi(i){const e=d(i);return e?(I(e,["schemaVersion","originBranch","originHeadSha","executionBranch","capturedFromCurrentCheckout","capturedAt"],"git-lifecycle-runtime-origin-unknown-field"),e.schemaVersion===1&&F(e.originBranch)&&F(e.executionBranch)&&e.originBranch!==e.executionBranch&&x(e.originHeadSha)&&e.capturedFromCurrentCheckout===!0&&E(e.capturedAt)):!1}function Ki(i){const e=d(i);if(!e)return!1;I(e,["schemaVersion","evidenceVersion","producer","contract","command","verdict","executionHeadSha","graphRevision","manifestDigest","resultDigest","checkedAt","receiptRef","gateIds"],"git-lifecycle-runtime-aggregate-qa-unknown-field");const t=e.evidenceVersion==="p205-execution-v2"&&e.producer==="local-yolo-tdd"&&e.contract==="P205-CI-02"&&e.command===V&&h(e.manifestDigest)&&h(e.resultDigest),r=e.evidenceVersion===void 0&&e.producer===void 0&&e.contract===void 0&&e.command===void 0&&e.manifestDigest===void 0&&e.resultDigest===void 0;return e.schemaVersion===1&&(t||r)&&e.verdict==="passed"&&x(e.executionHeadSha)&&h(e.graphRevision)&&E(e.checkedAt)&&he(e.receiptRef)&&L(e.gateIds,128,!0)}function Yi(i){const e=d(i);return e?(I(e,["schemaVersion","epicId","executionBranch","originBranch","baseSha","executionHeadSha","mergeSha","pushedSha","strategy","prNumber","physicalStatus","localGateReceiptRefs","idempotencyKey","attemptStartedAt","completedAt","retryEligible","reasonCodes","publicSafe","candidateQa","providerGuard"],"git-lifecycle-runtime-terminal-receipt-unknown-field"),e.schemaVersion===1&&J(e.epicId)&&F(e.executionBranch)&&F(e.originBranch)&&x(e.baseSha)&&x(e.executionHeadSha)&&(e.mergeSha===void 0||x(e.mergeSha))&&(e.pushedSha===void 0||x(e.pushedSha))&&(e.strategy==="direct"||e.strategy==="single_pr")&&(e.candidateQa===void 0||Qi(e.candidateQa,e))&&(e.providerGuard===void 0||Ji(e.providerGuard,e))&&(e.prNumber===void 0||Number.isSafeInteger(e.prNumber)&&Number(e.prNumber)>0)&&["prepared","merged","pushed","denied_external_gate","blocked_local_or_repo"].includes(String(e.physicalStatus))&&L(e.localGateReceiptRefs,128,!0)&&C(e.idempotencyKey)&&E(e.attemptStartedAt)&&(e.completedAt===void 0||E(e.completedAt))&&typeof e.retryEligible=="boolean"&&L(e.reasonCodes,128)&&e.publicSafe===!0):!1}function Ji(i,e){const t=d(i);if(!t)return!1;I(t,["schemaVersion","provider","mode","source","prHeadSha","originHeadSha","checkedAt","publicSafe"],"git-lifecycle-runtime-provider-guard-unknown-field");const r=t.mode==="recovered_exact_tree"?t.source==="physical_recovery":t.mode==="strict_up_to_date_expected_head"&&["branch_protection","ruleset","branch_protection_and_ruleset"].includes(String(t.source));return t.schemaVersion===1&&t.provider==="github"&&r&&e.strategy==="single_pr"&&e.physicalStatus==="pushed"&&Number.isSafeInteger(e.prNumber)&&Number(e.prNumber)>0&&x(t.prHeadSha)&&t.prHeadSha===e.mergeSha&&x(t.originHeadSha)&&t.originHeadSha===e.baseSha&&E(t.checkedAt)&&t.publicSafe===!0}function Qi(i,e){const t=d(i);return t?(I(t,["schemaVersion","kind","contract","command","originHeadSha","executionHeadSha","mergeSha","treeSha","graphRevision","manifestDigest","resultDigest","gateIds","checkedAt","receiptRef"],"git-lifecycle-runtime-merge-candidate-unknown-field"),t.schemaVersion===1&&t.kind==="epic_merge_candidate_qa"&&t.contract==="P205-CI-02"&&t.command===V&&x(t.originHeadSha)&&t.originHeadSha===e.baseSha&&x(t.executionHeadSha)&&t.executionHeadSha===e.executionHeadSha&&x(t.mergeSha)&&t.mergeSha===e.mergeSha&&x(t.treeSha)&&h(t.graphRevision)&&h(t.manifestDigest)&&h(t.resultDigest)&&L(t.gateIds,128,!0)&&E(t.checkedAt)&&he(t.receiptRef)):!1}function Qe(i,e){const t=d(i);if(!t)return!1;I(t,["schemaVersion","storyId","epicId","branch","baseSha","headSha","commits","idempotencyKey","dispatchId","bundleId","bundleDigest","graphRevision","claimRevision","receiptRefs","qaVerdict","reviewVerdict","qaReceipt","reviewReceipt","recordedAt"],"git-lifecycle-runtime-checkpoint-unknown-field");const r=String(e).split(".")[0];return t.schemaVersion===1&&t.storyId===e&&t.epicId===r&&F(t.branch)&&x(t.baseSha)&&x(t.headSha)&&t.baseSha!==t.headSha&&tt(t.commits)&&t.commits.length===1&&t.commits[0]===t.headSha&&C(t.idempotencyKey)&&(t.dispatchId===void 0||h(t.dispatchId))&&(t.bundleId===void 0||h(t.bundleId))&&h(t.bundleDigest)&&h(t.graphRevision)&&(t.claimRevision===void 0||h(t.claimRevision))&&L(t.receiptRefs,256,!0)&&(t.qaVerdict==="passed"||t.qaVerdict==="blocked")&&["approved","changes-requested","pending"].includes(String(t.reviewVerdict))&&Ui(t.qaReceipt,t)&&(t.reviewVerdict==="pending"?t.reviewReceipt===void 0:Zi(t.reviewReceipt,t))&&E(t.recordedAt)}function Ui(i,e){const t=d(i);return t?(I(t,["schemaVersion","kind","producer","evidenceVersion","storyId","epicId","baseSha","headSha","bundleDigest","graphRevision","contract","command","manifestDigest","gateIds","resultDigest","sourceEvidenceDigest","verdict","checkedAt","receiptRef"],"git-lifecycle-runtime-story-qa-unknown-field"),t.schemaVersion===1&&t.kind==="story_qa_evidence"&&t.producer==="local-yolo-tdd"&&(t.evidenceVersion===void 0||t.evidenceVersion==="git-immutable-v1"||t.evidenceVersion==="p205-execution-v2"&&t.contract==="P205-CI-02"&&t.command===V&&h(t.manifestDigest)&&L(t.gateIds,32,!0)&&h(t.resultDigest))&&Ue(t,e)&&h(t.sourceEvidenceDigest)&&t.verdict===e.qaVerdict&&(t.verdict==="passed"||t.verdict==="blocked")&&E(t.checkedAt)&&he(t.receiptRef)&&e.receiptRefs.includes(t.receiptRef)):!1}function Zi(i,e){const t=d(i),r=d(e.qaReceipt);return!t||!r?!1:(I(t,["schemaVersion","kind","producer","storyId","epicId","baseSha","headSha","bundleDigest","graphRevision","sourceEvidenceDigest","qaReceiptRef","verdict","reviewedAt","receiptRef"],"git-lifecycle-runtime-story-review-unknown-field"),t.schemaVersion===1&&t.kind==="story_review_evidence"&&t.producer==="root-commit-range-review"&&Ue(t,e)&&h(t.sourceEvidenceDigest)&&t.qaReceiptRef===r.receiptRef&&t.receiptRef!==r.receiptRef&&(t.verdict==="approved"||t.verdict==="changes-requested")&&(t.verdict==="approved"?e.reviewVerdict==="approved":e.reviewVerdict==="changes-requested")&&E(t.reviewedAt)&&Date.parse(String(t.reviewedAt))>=Date.parse(String(r.checkedAt))&&he(t.receiptRef)&&e.receiptRefs.includes(t.receiptRef))}function Ue(i,e){return["storyId","epicId","baseSha","headSha","bundleDigest","graphRevision"].every(t=>i[t]===e[t])}function Xi(i){return!Array.isArray(i)||i.length>1024?!1:i.every(e=>{const t=d(e);return t?(I(t,["schemaVersion","resourceId","action","outcome","idempotencyKey","reasonCodes","recordedAt","publicSafe"],"git-lifecycle-runtime-reconciliation-receipt-unknown-field"),t.schemaVersion===1&&C(t.resourceId)&&["no_op","delete_local_branch","delete_remote_branch","close_pull_request"].includes(String(t.action))&&["applied","already_absent","dry_run","failed"].includes(String(t.outcome))&&C(t.idempotencyKey)&&L(t.reasonCodes,128)&&E(t.recordedAt)&&t.publicSafe===!0):!1})}function et(i){return!Array.isArray(i)||i.length>1024?!1:i.every(e=>{const t=d(e);return t?(I(t,["schemaVersion","resourceId","action","managed","reasonCodes","evidence","publicSafe"],"git-lifecycle-runtime-reconciliation-debt-unknown-field"),t.schemaVersion===1&&C(t.resourceId)&&t.action==="preserve"&&typeof t.managed=="boolean"&&L(t.reasonCodes,128)&&L(t.evidence,16)&&t.publicSafe===!0):!1})}function I(i,e,t){const r=new Set(e);if(Object.keys(i).some(n=>!r.has(n)))throw new Error(t)}function J(i){return typeof i=="string"&&/^P[1-9][0-9]*(?:\.[0-9]+)*$/.test(i)}function it(i){const e=d(i);return e?Object.keys(e).length===10&&e.schemaVersion===1&&e.kind==="git_lifecycle_graph_authority"&&e.producer==="server-continuous-yoloop-v1"&&(e.source==="yolo"||e.source==="yoloop")&&J(e.epicId)&&J(e.storyId)&&String(e.storyId).startsWith(`${String(e.epicId)}.`)&&F(e.executionBranch)&&F(e.originBranch)&&e.originBranch!==e.executionBranch&&typeof e.graphRevision=="string"&&/^[a-f0-9]{64}$/.test(e.graphRevision)&&e.publicSafe===!0:!1}function F(i){return typeof i=="string"&&/^[A-Za-z0-9][A-Za-z0-9._/-]{0,239}$/.test(i)&&!i.includes("..")&&!i.includes("//")&&!i.includes("@{")&&!i.endsWith("/")&&!i.endsWith(".")&&!i.split("/").some(e=>!e||e.startsWith(".")||e.endsWith(".lock"))}function ge(i){return i.length>0&&i.length<=1024&&!ne(i)&&!i.includes("\0")&&!i.replaceAll("\\","/").split("/").includes("..")}function C(i){return typeof i=="string"&&i.length>0&&i.length<=240&&/^[A-Za-z0-9._:/#\-[\]]+$/.test(i)&&!i.includes("..")}function he(i){return C(i)}function x(i){return typeof i=="string"&&/^[a-f0-9]{40,64}$/i.test(i)}function h(i){return typeof i=="string"&&/^[a-f0-9]{64}$/i.test(i)}function E(i){return typeof i=="string"&&i.length<=64&&Number.isFinite(Date.parse(i))}function L(i,e,t=!1){return Array.isArray(i)&&i.length<=e&&(!t||i.length>0)&&i.every(C)}function tt(i){return Array.isArray(i)&&i.length>0&&i.length<=256&&i.every(x)}function Ie(){return{schemaVersion:1,revision:0,epics:{},stories:{}}}async function rt(i){const e=W(i),t={pid:process.pid,nonce:ye(16).toString("hex")},r=async()=>{await K(e),await Ne(e,k(i),JSON.stringify(t));try{await _(i,e),await Y(y(i,"owner.json"),i)}catch(n){throw await X(i,e).catch(()=>{}),n}};try{await r()}catch(n){if(!O(n,"EEXIST"))throw n;await G(i,"directory");const a=await Ee(i);if(a!==void 0&&le(a.pid))throw new Error("git-lifecycle-runtime-lock-active");if(a===void 0&&await Ze(i))throw new Error("git-lifecycle-runtime-lock-active");const o=await P(i);if(!o)throw new Error("git-lifecycle-runtime-lock-owner-invalid");const s=`${i}.stale.${process.pid}.${Date.now()}`;await ie(e,k(i),k(s));try{if(await _(s,e),await P(s)!==o)throw await oe(s,i,e).catch(()=>{}),new Error("git-lifecycle-runtime-lock-owner-replaced");await r()}finally{await X(s,e,async u=>await P(u)===o).catch(()=>{})}}return t}async function nt(i,e){const t=W(i);try{await _(i,t);const r=await Ee(i);if(!r||!Xe(r,e))return!1;const n=await P(i);if(!n)return!1;const a=`${i}.release.${process.pid}.${Date.now()}`;await ie(t,k(i),k(a)),await _(a,t);const o=await Ee(a);return!o||!Xe(o,e)||await P(a)!==n?(await oe(a,i,t).catch(()=>{}),!1):X(a,t,async s=>await P(s)===n)}catch(r){if(O(r,"ENOENT"))return!1;throw r}}async function Ze(i){try{return Date.now()-(await ci(i)).mtimeMs<3e4}catch{return!0}}async function Ee(i){try{await _(i,W(i));const e=y(i,"owner.json");await Y(e,i);const t=JSON.parse(await T(e,"utf8"));return Number.isSafeInteger(t.pid)&&Number(t.pid)>0&&(t.nonce===void 0||typeof t.nonce=="string"&&/^[a-f0-9]{32}$/.test(t.nonce))?{pid:Number(t.pid),...typeof t.nonce=="string"?{nonce:t.nonce}:{}}:void 0}catch{return}}function Xe(i,e){return i.pid===e.pid&&i.nonce!==void 0&&i.nonce===e.nonce}function le(i){try{return process.kill(i,0),!0}catch(e){return O(e,"EPERM")}}function d(i){return i&&typeof i=="object"&&!Array.isArray(i)?i:void 0}function O(i,e){return i instanceof Error&&"code"in i&&i.code===e}export{de as GIT_LIFECYCLE_RUNTIME_DIRECTORY,fe as GIT_LIFECYCLE_RUNTIME_FILE,Ve as LEGACY_DIRECT_YOLO_RECOVERY_COMMITS,pi as LEGACY_P174_CHECKPOINT_MIGRATIONS,V as P205_COMPLETE_COMMAND,Et as acquireGitLifecyclePhysicalIntegrationLock,vi as applyGitLifecycleRuntimeOverlay,_ as assertGitLifecyclePrivateDirectory,It as assertGitLifecyclePrivateFile,$i as computeGitLifecyclePhysicalIntegrationLockOwnerDigest,ki as computeImmutableStoryQaEvidenceDigest,xt as computeLegacyDirectYoloRecoveryReceiptRef,Ci as computeP205StoryQaEvidenceDigest,Ni as ensureGitLifecyclePrivateChildDirectory,yt as ensureGitLifecycleRuntimeInitialized,Di as ensureRuntimeEpic,wt as ensureRuntimeStory,bi as executeP205TransientAuthorities,pt as executeP205TransientAuthority,Fe as gitLifecycleRuntimeDirectory,Ri as gitLifecycleStoryWriteSet,Ge as isAcceptedGitLifecycleStoryCheckpoint,je as mutateGitLifecycleRuntime,Dt as p205TransientAuthorityMatchesAggregate,bt as persistGitLifecycleGraphAuthority,ue as posixSecurityAvailable,vt as projectP205TransientExecutionEvidence,ve as readGitLifecycleRuntime,wi as readGitLifecycleRuntimeSync,Bi as releaseGitLifecyclePhysicalIntegrationLock,At as releaseGitLifecyclePhysicalIntegrationLockForCheckpoint,X as removeGitLifecyclePrivateDirectory,St as verifyAcceptedGitLifecycleStoryCheckpoint,_i as verifyAcceptedGitLifecycleStoryCheckpointSync,Rt as verifyGitLifecyclePhysicalIntegrationLock,_t as verifyLegacyCheckpointMigrationCandidateSync};
1
+ import{execFile as oi,execFileSync as ne}from"node:child_process";import{createHash as S,randomBytes as be}from"node:crypto";import{lstat as we,open as si,readFile as M,realpath as U,stat as di}from"node:fs/promises";import{existsSync as z,lstatSync as Pe,readFileSync as Ne,realpathSync as ve}from"node:fs";import{basename as A,dirname as K,isAbsolute as ae,join as v,relative as fi,resolve as y}from"node:path";import{promisify as ui}from"node:util";import{publicWriteSet as gi}from"../../../shared/dist/yoloop/public-story-write-set.js";import{resolveBranchUnit as hi}from"../../../shared/dist/yoloop/branch-unit.js";import{anchoredAtomicWriteFile as li,anchoredCreateOwnedDirectory as Be,anchoredEnsureDirectory as $e,anchoredExecuteGit as pi,anchoredExecuteNode as Ve,anchoredRemoveDirectory as mi,anchoredRenameDirectory as te}from"./secure-filesystem-boundary.js";import{GIT_LIFECYCLE_COMMIT_PUSH_STEP_ID as yi,GIT_LIFECYCLE_REVIEW_PR_STEP_ID as bi}from"./git-lifecycle-step-ids.js";const N=ui(oi),fe="neocortex-yoloop",ue="runtime.json",L="node scripts/test-root.mjs --gate complete",Le=Object.freeze({"P174.03.029264":"339141be7339a0edf55710cbccb6e6558f514792"}),wi=Object.freeze({"P174.03.811759":Object.freeze({baseSha:"749c8fc732deaf26c81a8e08cc94b83c8cf0f5ba",headSha:"84162456d9cbe5000ffd0ed3eb3d0e88cfeba499",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"11f54704f5007f6139159419cfd7781f908b1502e117365c6d84011384579ed2",commitBodyDigest:"b4fc759a49765fd8c0b3d0f5d1c333c2a4bf28d324e83eedabb12f9530df3738",changedPathsDigest:"11f54704f5007f6139159419cfd7781f908b1502e117365c6d84011384579ed2",qaDigest:"f1100775e21f5d0d990f77303a2a06d936908f016983e32a63316d81aee6b9fc",reviewDigest:"50400bbcddb6f02408837cf99077de5d3af8c84822ab23a8b5499c338af7103a"}),"P174.03.685003":Object.freeze({baseSha:"84162456d9cbe5000ffd0ed3eb3d0e88cfeba499",headSha:"272a7fee89e4b9324d35701df1c83b671fa96299",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"6cc3c9033f1c4711dcbe3c676d1d7f9906614c7d6e95228e843d1c63cefbc641",commitBodyDigest:"e97966e26ce3ba31d5951b9fdac67808c88c1fd8be7ec1e73982f3f1cc7ffd81",changedPathsDigest:"6cc3c9033f1c4711dcbe3c676d1d7f9906614c7d6e95228e843d1c63cefbc641",qaDigest:"7439329a93321f39fb6b0de0a41c22e58373a399f9048e362dff4ffa6f1a7d89",reviewDigest:"1b2d12262e84acf9da7d06149a0effb11274ebdc986affbfd47635b855ec7135"}),"P174.03.029264":Object.freeze({baseSha:"272a7fee89e4b9324d35701df1c83b671fa96299",headSha:"339141be7339a0edf55710cbccb6e6558f514792",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"1053bb2baf487e38fa28d7e8cfb872c5c4da66802534ee226bbc2c7455a6a5ab",commitBodyDigest:"0f269a00dcd168a6f548ff10dfa667b193c948ac9c7211f5cb11a0561757c371",changedPathsDigest:"1053bb2baf487e38fa28d7e8cfb872c5c4da66802534ee226bbc2c7455a6a5ab",qaDigest:"ef0fd2c6e216557825cd8521ccb2f9960a3af48f18e7a5ada441bee8bfda400b",reviewDigest:"372d0f4a2f32978c8b39f20167637b3917187edb75d49875e93200c4c5a19d0d"}),"P174.03.913359":Object.freeze({baseSha:"339141be7339a0edf55710cbccb6e6558f514792",headSha:"4ccc90b85c49b27f718090bf25bc452f1b84e5e3",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"12b5cfba2667e8064309807776c1b323561dc8d853f9afe5f676007b8494b2b5",commitBodyDigest:"89a6653197509e75246a758d2706876b337770571a1cac47d9d85ec96c196459",changedPathsDigest:"12b5cfba2667e8064309807776c1b323561dc8d853f9afe5f676007b8494b2b5",qaDigest:"c7d3762ad30e4f9356243df17a1dd7123cbf1b660808d68176f44d1cd5da6449",reviewDigest:"e4ecf577e174fd66f31aa4a0113ab672ced16b12ee531f6831aa533795145ba1"}),"P174.03.724350":Object.freeze({baseSha:"4ccc90b85c49b27f718090bf25bc452f1b84e5e3",headSha:"568e9464fb086304146b9eb4594281f91302aef1",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"c8b8b6b96edf9cea78925e2f961bd74069d77af03783a5368b8ac8025bf1fefe",commitBodyDigest:"b3032338bfcd6c9dc460e9426220a1966dedeff9968c4064fdd36a315560721b",changedPathsDigest:"c8b8b6b96edf9cea78925e2f961bd74069d77af03783a5368b8ac8025bf1fefe",qaDigest:"91f2f5b00935b1b04bb5d400df500cbc97c412072078b713c6e5ba8fda669bd0",reviewDigest:"9bc92069d3b3a76cc8b02d339d432690258be1376464b69e152ed8fd3d682f05"}),"P174.03.011976":Object.freeze({baseSha:"568e9464fb086304146b9eb4594281f91302aef1",headSha:"195599b1a99a99a8416c4c26c9ab9990847338a4",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"49b7f2a0a967b2ba4249615c6d08834445a60df95045352838808eb4d6743b21",commitBodyDigest:"b8a28392fac663dd614b695a49c894b7cab116d45722a42850e3b24e2aaf36f4",changedPathsDigest:"49b7f2a0a967b2ba4249615c6d08834445a60df95045352838808eb4d6743b21",qaDigest:"6eb4459a7d80c4a268fc931297e8156ed2a320584f8775f0787d91b42c0929d4",reviewDigest:"98b21de29f7cceeec73da19000c6c144395cce6eb699c6a82dfab505d4ab7b44"}),"P174.03.686659":Object.freeze({baseSha:"195599b1a99a99a8416c4c26c9ab9990847338a4",headSha:"0db3681a5dad4e25ce37d967c636eb9d54915556",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"5c0fdbf820d677c288981b6f73f7d2d9a04ce7f4713687f12a2e984705244b8e",commitBodyDigest:"143257f4018ad773afc0c7280bd8aab8786851a9c20b65f8110881ff54656839",changedPathsDigest:"5c0fdbf820d677c288981b6f73f7d2d9a04ce7f4713687f12a2e984705244b8e",qaDigest:"6303dbf473e2815a3671aeb2c25528d8daba484b92a5a40d1eea5215e1f6763e",reviewDigest:"1bd6695846ed9340c8677cfa9b573880532187aeee487efaaa70577a0c94e7f2"})}),Se="neocortex-yoloop-runtime.json",vi="runtime.lock",je=new WeakMap;async function yt(i,e){return(await Si(i,{headSha:e.headSha,graphRevisions:[e.graphRevision],...e.nowIso!==void 0?{nowIso:e.nowIso}:{},...e.anchoredWorkspace!==void 0?{anchoredWorkspace:e.anchoredWorkspace}:{}})).get(e.graphRevision)}async function Si(i,e){const t=[...new Set(e.graphRevisions)];if(!_(e.headSha)||t.length===0||t.some(R=>!l(R)))throw new Error("p205-transient-binding-invalid");const r=e.anchoredWorkspace;if(r&&y(i)!==v(y(r.parent),r.name))throw new Error("p205-transient-anchor-binding-invalid");const n=async R=>r?(await pi(r.parent,r.name,r.identity,R)).toString("utf8"):String((await N("git",[...R],{cwd:i,encoding:"utf8",maxBuffer:8*1024*1024})).stdout),a=async()=>r?JSON.parse((await Ve(r.parent,r.name,r.identity,["-e","const fs=require('node:fs');process.stdout.write(JSON.stringify({manifest:fs.readFileSync('config/release-gates.v2.json','utf8'),runner:fs.readFileSync('scripts/test-root.mjs','utf8')}));"])).toString("utf8")):{manifest:await M(v(i,"config","release-gates.v2.json"),"utf8"),runner:await M(v(i,"scripts","test-root.mjs"),"utf8")};if((await n(["rev-parse","HEAD"])).trim()!==e.headSha)throw new Error("p205-transient-head-mismatch");const{manifest:o,runner:h}=await a(),[c,f]=await Promise.all([n(["show",`${e.headSha}:config/release-gates.v2.json`]),n(["show",`${e.headSha}:scripts/test-root.mjs`])]);if(o!==c||h!==f)throw new Error("p205-transient-producer-dirty");const u=JSON.parse(o),p=Array.isArray(u.requiredCompleteClasses)?u.requiredCompleteClasses.filter(R=>typeof R=="string"&&/^[a-z0-9-]+$/.test(R)):[];if(u.contract!=="P205-CI-02"||p.length===0)throw new Error("p205-transient-manifest-invalid");const g=r?(await Ve(r.parent,r.name,r.identity,["scripts/test-root.mjs","--gate","complete"])).toString("utf8"):String((await N(process.execPath,["scripts/test-root.mjs","--gate","complete"],{cwd:i,encoding:"utf8",maxBuffer:64*1024*1024})).stdout),{manifest:m,runner:$}=await a();if(m!==o||$!==h)throw new Error("p205-transient-producer-raced");if((await n(["rev-parse","HEAD"])).trim()!==e.headSha)throw new Error("p205-transient-head-raced");const I=S("sha256").update(o).digest("hex"),X=S("sha256").update(g).digest("hex"),w=oe(e.nowIso??new Date().toISOString()),b=new Map,T=Object.freeze(p);for(const R of t){const V=S("sha256").update(["p205-transient-execution-v1",L,e.headSha,R,I,p.join(","),X,w].join("\0")).digest("hex"),q=Object.freeze({schemaVersion:1,kind:"p205_transient_execution_authority",contract:"P205-CI-02",command:L,executionHeadSha:e.headSha,graphRevision:R,manifestDigest:I,gateIds:T,resultDigest:X,executedAt:w,executionEvidenceDigest:V}),ee=Object.freeze(Object.create(null));je.set(ee,q),b.set(R,ee)}return b}async function De(i,e={}){const t=await Ni(i);return Ue(t,e)}function Di(i,e={}){let t;try{const r=ne("git",["rev-parse","--git-common-dir"],{cwd:i,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim(),n=ve(i),a=ae(r)?y(r):y(n,r),s=ve(a);if(s!==a)throw new Error("git-lifecycle-common-dir-symlink");qi(s);const o=v(s,fe),h=v(o,ue);if(z(o)&&(Ze(o,"directory"),ve(o)!==o))throw new Error("git-lifecycle-runtime-directory-symlink");t=z(h)?h:v(s,Se)}catch{if(e.required)throw new Error("git-lifecycle-common-dir-invalid");return Ie()}if(!z(t)){if(e.required)throw new Error("git-lifecycle-runtime-missing");return Ie()}return Ze(t,"file"),Ee(JSON.parse(Ne(t,"utf8")))}async function bt(i){try{await De(i,{required:!0});return}catch(e){if(!(e instanceof Error)||e.message!=="git-lifecycle-runtime-missing")throw e}try{await ze(i,()=>{},{expectedRevision:0})}catch(e){if(!(e instanceof Error)||e.message!=="git-lifecycle-runtime-revision-conflict")throw e;await De(i,{required:!0})}}function qe(i,e,t){if(!i||i.ownerStoryId!==e)return!1;const r=typeof i.sessionId=="string"?i.sessionId:"",n=Date.parse(String(i.expiresAt));return/^setup-[a-f0-9]{64}$/.test(r)&&i.idempotencyKey===r&&Number.isFinite(n)&&n>t}async function wt(i,e,t=new Date().toISOString()){if(!tt(e))throw new Error("git-lifecycle-graph-authority-invalid");const r=v(y(i),".neocortex","state.json"),n=await M(r,"utf8"),a=d(JSON.parse(n));if(!a)throw new Error("git-lifecycle-tracked-state-invalid");const s=await De(i),o=xi(a,s),h=d(d(o.epics)?.[e.epicId]),c=d(d(o.stories)?.[e.storyId]);if(!h)throw new Error("git-lifecycle-graph-authority-epic-invalid");if(!c||String(c.epic_id??e.storyId.split(".")[0])!==e.epicId)throw new Error("git-lifecycle-graph-authority-story-invalid");const f=Array.isArray(h.stories)?h.stories.filter(w=>typeof w=="string"):Object.keys(d(o.stories)??{}).filter(w=>{const b=d(d(o.stories)?.[w]);return String(b?.epic_id??w.split(".")[0])===e.epicId});if(Array.isArray(h.stories)&&!f.includes(e.storyId))throw new Error("git-lifecycle-graph-authority-story-invalid");const u=f.map(w=>{const b=d(d(o.stories)?.[w])??{};return{id:w,branch_name:typeof b.branch_name=="string"||b.branch_name===null?b.branch_name:void 0,pr_number:typeof b.pr_number=="number"||b.pr_number===null?b.pr_number:void 0,steps_completed:Array.isArray(b.steps_completed)?b.steps_completed.filter(T=>typeof T=="string"):[],checkpoint:d(b.checkpoint)}}),p=hi({...h,id:e.epicId},u);if(p.mode!=="epic")throw new Error("git-lifecycle-graph-authority-epic-invalid");if(p.executionBranch!==e.executionBranch)throw new Error("git-lifecycle-graph-authority-branch-mismatch");if(p.originBranch!==void 0&&p.originBranch!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-mismatch");const g=typeof d(s.epics[e.epicId])?.origin_branch=="string"?String(d(s.epics[e.epicId]).origin_branch):void 0;if(g!==void 0&&g!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-mismatch");if(p.originBranch===void 0&&g===void 0){const{stdout:w}=await N("git",["branch","--show-current"],{cwd:i,encoding:"utf8",maxBuffer:1048576});if(String(w).trim()!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-physical-mismatch")}const m=typeof h.graph_revision=="string"?h.graph_revision:void 0,$=typeof d(s.epics[e.epicId])?.graph_revision=="string"?String(d(s.epics[e.epicId]).graph_revision):void 0;if(m!==void 0&&!l(m))throw new Error("git-lifecycle-graph-revision-invalid");if(m===e.graphRevision&&$===e.graphRevision&&p.originBranch===e.originBranch&&g===e.originBranch)return{applied:!1,reused:!0,revision:s.revision,graphRevision:e.graphRevision};const O=Date.parse(t);if(!Number.isFinite(O))throw new Error("git-lifecycle-graph-authority-time-invalid");const I=d(h.branch_lease);if(I&&Number.isFinite(Date.parse(String(I.expiresAt)))&&Date.parse(String(I.expiresAt))>O&&!qe(I,e.storyId,O))throw new Error("git-lifecycle-graph-authority-writer-active");return{applied:!0,reused:!1,revision:(await ze(i,w=>{const b=Ei(w,e.epicId);if(b.branch_mode!==void 0&&b.branch_mode!=="epic")throw new Error("git-lifecycle-graph-authority-epic-raced");const T=b.execution_branch;if(T!==void 0&&T!==e.executionBranch)throw new Error("git-lifecycle-graph-authority-branch-raced");const R=b.origin_branch;if(R!==void 0&&R!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-raced");const V=b.graph_revision;if(V!==void 0&&V!==m)throw new Error("git-lifecycle-graph-authority-epoch-raced");const q=d(b.branch_lease);if(q&&Number.isFinite(Date.parse(String(q.expiresAt)))&&Date.parse(String(q.expiresAt))>O&&!qe(q,e.storyId,O))throw new Error("git-lifecycle-graph-authority-writer-active");b.branch_mode="epic",b.execution_branch=e.executionBranch,b.origin_branch=e.originBranch,b.graph_revision=e.graphRevision},{expectedRevision:s.revision,preCommit:async()=>{if(await M(r,"utf8")!==n)throw new Error("git-lifecycle-graph-authority-tracked-state-raced")}})).document.revision,graphRevision:e.graphRevision}}async function ze(i,e,t={}){const r=await xe(i),n=await Qe(r),a=v(n,vi),s=await nt(a);try{const o=v(n,ue),h=v(r,Se),c=await Ue(z(o)?o:h);if(t.expectedRevision!==void 0&&t.expectedRevision!==c.revision)throw new Error("git-lifecycle-runtime-revision-conflict");const f=structuredClone(c),u=e(f),p=Ee({...f,schemaVersion:1,revision:c.revision+1});return await t.preCommit?.(p),await H(n,"directory"),await Li(o),await li(n,ue,`${JSON.stringify(p,null,2)}
2
+ `),await H(o,"file"),await _i(n),{document:p,value:u}}finally{await at(a,s).catch(()=>{})}}async function _i(i){let e;try{e=await si(i,"r")}catch(t){if(process.platform==="win32"&&(C(t,"EPERM")||C(t,"EISDIR")||C(t,"EINVAL")))return;throw t}try{await e.sync()}finally{await e.close()}}function xi(i,e){const t=structuredClone(i),r=Ge(t,"epics"),n=Ge(t,"stories");for(const[a,s]of Object.entries(e.epics))r[a]={...d(r[a])??{},...structuredClone(s)};for(const[a,s]of Object.entries(e.stories))n[a]={...d(n[a])??{},...structuredClone(s)};return t}function Ge(i,e){const t=i[e];if(t===void 0){const a={};return i[e]=a,a}const r=d(t);if(r)return r;if(!Array.isArray(t))throw new Error(`git-lifecycle-tracked-${e}-invalid`);const n={};for(const a of t){const s=d(a),o=typeof s?.id=="string"?s.id.trim():"";if(!o||n[o]!==void 0)throw new Error(`git-lifecycle-tracked-${e}-ambiguous`);n[o]=s}return i[e]=n,n}function Ei(i,e){return i.epics[e]??(i.epics[e]={})}function vt(i,e){return i.stories[e]??(i.stories[e]={})}function He(i,e,t,r){const n=d(i);return!!(n&&n.epicId===t&&n.branch===r&&n.qaVerdict==="passed"&&n.reviewVerdict==="approved"&&Xe(n,e))}async function St(i,e,t,r,n,a,s=[]){return Te(i,e,t,r,n,a,s).verdict==="verified"}function Te(i,e,t,r,n,a,s=[],o=new Date().toISOString(),h=a===void 0?"scheduling":"integration"){const c=()=>We({storyId:t,epicId:r,executionBranch:n,value:e,verifiedAt:o,verdict:"rejected",reasonCode:"checkpoint-git-physical-invalid"});try{if(!He(e,t,r,n))return c();const f=d(e),u=d(f.qaReceipt),p=d(f.reviewReceipt),g=String(f.headSha),m=String(f.baseSha),$=G(i,["rev-parse",`refs/heads/${n}`]).trim();ne("git",["merge-base","--is-ancestor",g,$],{cwd:i,stdio:"ignore"});const O=G(i,["show","--no-patch","--format=%H%n%P%n%B",g]),I=G(i,["rev-parse",`${g}^`]).trim(),X=G(i,["rev-list","--count",`${m}..${g}`]).trim();if(I!==m||X!=="1")return c();const w=new Set(O.split(`
3
+ `).map(F=>F.trim())),T=[`Neocortex-Story: ${t}`,`Neocortex-Epic: ${r}`,`Neocortex-Execution-Branch: ${n}`,`Neocortex-Bundle-Digest: ${String(f.bundleDigest)}`,`Neocortex-Graph-Revision: ${String(f.graphRevision)}`,...f.dispatchId?[`Neocortex-Dispatch: ${String(f.dispatchId)}`]:[],...f.bundleId?[`Neocortex-Bundle: ${String(f.bundleId)}`]:[],...f.claimRevision?[`Neocortex-Claim-Revision: ${String(f.claimRevision)}`]:[]].every(F=>w.has(F));if(T){const Oe=[...w].find(ci=>ci.startsWith("Neocortex-Prepared-Base: "))?.slice(25)??"";if(!/^[a-f0-9]{40,64}$/i.test(Oe))return c();ne("git",["merge-base","--is-ancestor",Oe,g],{cwd:i,stdio:"ignore"})}const V=G(i,["diff-tree","--no-commit-id","--name-only","-r","-z",g]).split("\0").filter(Boolean);if(V.length===0||V.some(F=>!he(F)))return c();const q=S("sha256").update(O).digest("hex"),ee=S("sha256").update([...V].sort().join("\0")).digest("hex"),B=Fe({checkpoint:f,storyId:t,epicId:r,executionBranch:n,baseSha:m,headSha:g,commitBodyDigest:q,changedPathsDigest:ee,changedPaths:V,authorizedWriteSet:s.length>0?s:Ai(i,t)});if(!B||u.receiptRef!==`story-qa:${String(u.sourceEvidenceDigest)}`)return c();const Ae=Oi({storyId:t,baseSha:m,headSha:g,bundleDigest:String(f.bundleDigest),graphRevision:String(f.graphRevision),commitBody:O,changedPaths:V}),ke=u.evidenceVersion==="p205-execution-v2"&&u.contract==="P205-CI-02"&&u.command===L&&l(u.manifestDigest)&&j(u.gateIds,32,!0)&&l(u.resultDigest)&&u.sourceEvidenceDigest===Pi({gitEvidenceDigest:Ae,headSha:g,graphRevision:String(f.graphRevision),manifestDigest:String(u.manifestDigest),gateIds:u.gateIds,resultDigest:String(u.resultDigest)}),ri=u.evidenceVersion==="git-immutable-v1"&&u.sourceEvidenceDigest===Ae,ni=u.evidenceVersion===void 0&&B.mode==="legacy-migration"&&B.binding?.qaDigest===u.sourceEvidenceDigest,me=Ii(a,$,String(f.graphRevision))&&(ke||B.mode==="legacy-migration"&&(ri||ni)),ye=h==="scheduling"&&a===void 0&&ke;if(!me&&!ye)return c();const Ce=S("sha256").update(["root-commit-range-review-v1",t,m,g,String(f.bundleDigest),String(f.graphRevision),String(u.receiptRef),S("sha256").update(O).digest("hex"),[...V].sort().join(",")].join("\0")).digest("hex");if(p.sourceEvidenceDigest!==Ce||p.receiptRef!==`story-review:${Ce}`||B.mode==="legacy-migration"&&B.binding?.reviewDigest!==void 0&&B.binding.reviewDigest!==p.sourceEvidenceDigest||!T&&(Le[t]!==g||!Array.isArray(f.receiptRefs)||!f.receiptRefs.some(F=>typeof F=="string"&&F.startsWith("legacy-direct-yolo:"))))return c();const ai=S("sha256").update(["checkpoint-p205-transient-v1",t,r,n,m,g,String(f.bundleDigest),q,ee,B.mode,B.effectiveClaimRevision,String(u.sourceEvidenceDigest),String(p.sourceEvidenceDigest),ce(a)?.executionEvidenceDigest??(ye?"scheduling-git-verification":"legacy-bounded-authority")].join("\0")).digest("hex"),ie=me?ce(a):void 0;return Object.freeze({schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:t,epicId:r,branch:n,baseSha:m,headSha:g,aggregateHeadSha:ie?.executionHeadSha??g,commitBodyDigest:q,changedPathsDigest:ee,claimVerification:B.mode,effectiveClaimRevision:B.effectiveClaimRevision,sourceEvidenceDigest:ai,command:L,manifestDigest:ie?.manifestDigest??"0".repeat(64),gateIds:ie?.gateIds??Object.freeze(["legacy-bounded"]),resultDigest:ie?.resultDigest??"0".repeat(64),graphRevision:String(f.graphRevision),executionEvidenceDigest:ie?.executionEvidenceDigest??"0".repeat(64),verifiedAt:ie?.executedAt??oe(o),verdict:"verified",reasonCodes:Object.freeze([me?"checkpoint-p205-transient-verified":ye?"checkpoint-git-scheduling-verified":"checkpoint-legacy-bounded-verified",...B.mode==="legacy-migration"?["checkpoint-legacy-migration-verified"]:[]]),publicSafe:!0})}catch{return c()}}function Dt(i,e,t,r,n,a,s=[],o=new Date().toISOString()){const h=a?"integration":"scheduling",c=Te(i,e,t,r,n,a,s,o,h);return c.verdict!=="verified"?{kind:"rejected",verification:c}:h==="integration"?{kind:"integration-authorized",verification:c}:c.reasonCodes.includes("checkpoint-git-scheduling-verified")?{kind:"scheduling-only",evidence:Object.freeze({schemaVersion:1,kind:"story_scheduling_checkpoint_evidence",producer:"client-git-physical-v1",storyId:t,epicId:r,branch:n,baseSha:c.baseSha,headSha:c.headSha,graphRevision:c.graphRevision,effectiveClaimRevision:c.effectiveClaimRevision,sourceEvidenceDigest:c.sourceEvidenceDigest,verifiedAt:c.verifiedAt,reasonCodes:Object.freeze(["checkpoint-git-scheduling-verified"]),integrationAuthorized:!1,publicSafe:!0})}:{kind:"rejected",verification:We({storyId:t,epicId:r,executionBranch:n,value:e,verifiedAt:o,verdict:"rejected",reasonCode:"checkpoint-git-physical-invalid"})}}function Ii(i,e,t){const r=ce(i);return!!(r&&r.schemaVersion===1&&r.kind==="p205_transient_execution_authority"&&r.contract==="P205-CI-02"&&r.command===L&&r.graphRevision===t&&l(r.resultDigest)&&l(r.executionEvidenceDigest)&&r.executionHeadSha===e&&_(e))}function ce(i){return i&&typeof i=="object"?je.get(i):void 0}function _t(i){const e=ce(i);return e?Object.freeze({executionHeadSha:e.executionHeadSha,graphRevision:e.graphRevision,manifestDigest:e.manifestDigest,gateIds:Object.freeze([...e.gateIds]),resultDigest:e.resultDigest,executedAt:e.executedAt,executionEvidenceDigest:e.executionEvidenceDigest}):void 0}function xt(i,e,t){const r=ce(i);return!!(r&&r.executionHeadSha===e&&r.graphRevision===t&&r.command===L)}function Fe(i){const e=wi[i.storyId],t=typeof i.checkpoint.claimRevision=="string"?i.checkpoint.claimRevision:void 0,r=i.storyId==="P174.03.811759"||i.storyId==="P174.03.685003",n=Ri(i.authorizedWriteSet),a=n.length>0&&n.length===i.authorizedWriteSet.length&&i.changedPaths.every(s=>n.some(o=>Ci(o,s)));if(e&&i.epicId==="P174"&&i.executionBranch==="epic/P174"&&i.baseSha===e.baseSha&&i.headSha===e.headSha&&i.checkpoint.graphRevision===e.graphRevision&&i.commitBodyDigest===e.commitBodyDigest&&i.changedPathsDigest===e.changedPathsDigest&&(r?t===void 0:t===e.effectiveClaimRevision))return i.authorizedWriteSet.length>0&&(!a||!Me(e.effectiveClaimRevision,n))?void 0:Object.freeze({mode:"legacy-migration",effectiveClaimRevision:e.effectiveClaimRevision,binding:e});if(t!==void 0&&!(!t||!l(t))&&!(!a||!Me(t,n)))return Object.freeze({mode:"canonical",effectiveClaimRevision:t})}function Ri(i){const e=i.map(t=>t.replaceAll("\\","/").replace(/^\.\//,"").replace(/\/{2,}/g,"/"));return e.some(t=>!he(t))?Object.freeze([]):Object.freeze([...new Set(e)].sort())}function Ai(i,e){try{const t=JSON.parse(Ne(v(i,".neocortex","state.json"),"utf8")),r=d(t.stories),n=d(r?.[e]),a=Di(i),s=d(a.stories[e]?.checkpoint)??d(n?.checkpoint);return ki(e,n,s)}catch{return[]}}function ki(i,e,t){const r=Array.isArray(e?.files_to_modify)?e.files_to_modify.filter(n=>typeof n=="string"):[];if(!t?.dispatchId||!t.bundleId)return r;try{return gi({...e,id:i,files_to_modify:r})}catch{return[]}}function Me(i,e){return i===S("sha256").update(e.join("\0")).digest("hex")||i===S("sha256").update(JSON.stringify(e)).digest("hex")}function Ci(i,e){return i===e||i.endsWith("/")&&e.startsWith(i)}function Et(i,e,t,r,n,a){try{if(!He(e,t,r,n))return!1;const s=d(e),o=d(s.qaReceipt),h=d(s.reviewReceipt),c=String(s.headSha),f=String(s.baseSha),u=G(i,["rev-parse",`refs/heads/${n}`]).trim();if(ne("git",["merge-base","--is-ancestor",c,u],{cwd:i,stdio:"ignore"}),G(i,["rev-parse",`${c}^`]).trim()!==f||G(i,["rev-list","--count",`${f}..${c}`]).trim()!=="1")return!1;const p=G(i,["show","--no-patch","--format=%H%n%P%n%B",c]),g=G(i,["diff-tree","--no-commit-id","--name-only","-r","-z",c]).split("\0").filter(Boolean);if(g.length===0||g.some($=>!he($)))return!1;const m=Fe({checkpoint:s,storyId:t,epicId:r,executionBranch:n,baseSha:f,headSha:c,changedPaths:g,authorizedWriteSet:a,commitBodyDigest:S("sha256").update(p).digest("hex"),changedPathsDigest:S("sha256").update([...g].sort().join("\0")).digest("hex")});return!(m?.mode!=="legacy-migration"||!m.binding||o.sourceEvidenceDigest!==m.binding.qaDigest||o.receiptRef!==`story-qa:${m.binding.qaDigest}`||h.sourceEvidenceDigest!==m.binding.reviewDigest||h.receiptRef!==`story-review:${m.binding.reviewDigest}`||h.qaReceiptRef!==o.receiptRef)}catch{return!1}}function Oi(i){return S("sha256").update(["local-yolo-tdd-git-immutable-v1",i.storyId,i.baseSha,i.headSha,i.bundleDigest,i.graphRevision,S("sha256").update(i.commitBody).digest("hex"),S("sha256").update([...i.changedPaths].sort().join("\0")).digest("hex")].join("\0")).digest("hex")}function Pi(i){return S("sha256").update(["local-yolo-tdd-p205-execution-v2",L,i.gitEvidenceDigest,i.headSha,i.graphRevision,i.manifestDigest,i.gateIds.join(","),i.resultDigest].join("\0")).digest("hex")}function We(i){const e=d(i.value);return Object.freeze({schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:i.storyId,epicId:i.epicId,branch:i.executionBranch,baseSha:_(e?.baseSha)?String(e?.baseSha):"0".repeat(40),headSha:_(e?.headSha)?String(e?.headSha):"0".repeat(40),aggregateHeadSha:"0".repeat(40),commitBodyDigest:"0".repeat(64),changedPathsDigest:"0".repeat(64),claimVerification:"canonical",effectiveClaimRevision:"0".repeat(64),command:L,manifestDigest:"0".repeat(64),gateIds:Object.freeze([]),resultDigest:"0".repeat(64),graphRevision:"0".repeat(64),executionEvidenceDigest:"0".repeat(64),sourceEvidenceDigest:"0".repeat(64),verifiedAt:oe(i.verifiedAt),verdict:i.verdict,reasonCodes:Object.freeze([i.reasonCode]),publicSafe:!0})}function G(i,e){return ne("git",[...e],{cwd:i,encoding:"utf8",maxBuffer:32*1024*1024})}function oe(i){return Number.isFinite(Date.parse(i))?new Date(Date.parse(i)).toISOString():new Date().toISOString()}async function It(i,e){if(Le[e.storyId]!==e.headSha)return;const t=[".neocortex/state.json",`.neocortex/stories/${e.storyId}/qa-gate-result.json`,`.neocortex/stories/${e.storyId}/validation-evidence.md`,`.neocortex/stories/${e.storyId}/review.md`,`docs/stories/${e.storyId}.story.md`];try{const r=(await N("git",["rev-parse",`refs/heads/${e.executionBranch}`],{cwd:i,encoding:"utf8",maxBuffer:1048576})).stdout.trim();if(await N("git",["merge-base","--is-ancestor",e.headSha,r],{cwd:i}),(await N("git",["rev-parse",`${e.headSha}^`],{cwd:i,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim()!==e.baseSha)return;const a=String((await N("git",["diff","--binary","--full-index",`${e.baseSha}..${e.headSha}`],{cwd:i,encoding:"utf8",maxBuffer:32*1024*1024})).stdout);if(S("sha256").update(a).digest("hex")!==e.bundleDigest)return;const s=String((await N("git",["show","--no-patch","--format=%H%n%P%n%B",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:4*1024*1024})).stdout);if(!String((await N("git",["show","--no-patch","--format=%s",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:1024*1024})).stdout).trim().includes(e.storyId))return;const c=String((await N("git",["diff-tree","--no-commit-id","--name-only","-r","-z",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:8*1024*1024})).stdout).split("\0").filter(Boolean);if(!t.every(w=>c.includes(w))||c.some(w=>!he(w)))return;const f=await Promise.all(t.map(async w=>String((await N("git",["show",`${e.headSha}:${w}`],{cwd:i,encoding:"utf8",maxBuffer:16*1024*1024})).stdout))),u=JSON.parse(f[0]),p=d(u.stories),g=d(u.epics),m=d(p?.[e.storyId]),$=d(g?.[e.epicId]),O=Array.isArray(m?.steps_completed)?m.steps_completed:[],I=JSON.parse(f[1]);return m?.status!=="done"||!O.includes(yi)||!O.includes(bi)||$?.branch_mode!=="epic"||$.execution_branch!==e.executionBranch||I.storyId!==e.storyId||I.status!=="qa-passed"||I.safeToContinueYoloop!==!0||!Array.isArray(I.blockingChecks)||I.blockingChecks.length!==0||!f[2].includes(e.storyId)||!/P205[\s\S]{0,80}(pass|aprov)/i.test(f[2])||!f[3].includes(e.storyId)||!/approved|aprovado/i.test(f[3])||!f[4].includes(e.storyId)?void 0:`legacy-direct-yolo:${S("sha256").update(["legacy-direct-yolo-recovery-v1",e.storyId,e.epicId,e.executionBranch,e.baseSha,e.headSha,e.bundleDigest,e.graphRevision,S("sha256").update(s).digest("hex"),S("sha256").update([...c].sort().join("\0")).digest("hex"),...f.map(w=>S("sha256").update(w).digest("hex"))].join("\0")).digest("hex")}`}catch{return}}async function Ni(i){const e=await xe(i),t=v(e,fe),r=v(t,ue);if(z(t)&&(await H(t,"directory"),await U(t)!==t))throw new Error("git-lifecycle-runtime-directory-symlink");return z(r)?r:v(e,Se)}async function Ke(i){return Qe(await xe(i))}async function Bi(i,e){if(!/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(e)||e.includes(".."))throw new Error("git-lifecycle-private-child-invalid");const t=y(i);await Y(t);const r=y(t,e);return re(t,r),z(r)||await $e(t,e),await Y(r,t),await Y(t),r}async function D(i,e){const t=y(e),r=y(i);re(t,r),await Y(t),await Y(r,t)}async function Rt(i,e){await J(i,e)}async function Z(i,e,t){const r=y(e),n=y(i);re(r,n);try{await D(n,r)}catch(s){if(C(s,"ENOENT"))return!1;throw s}const a=y(r,`${n.slice(r.length+1)}.remove.${process.pid}.${Date.now()}.${be(4).toString("hex")}`);return re(r,a),await te(r,A(n),A(a)),await D(a,r),t&&!await t(a)?(await se(a,n,r).catch(()=>{}),!1):(await mi(r,A(a)),!0)}async function se(i,e,t){await D(i,t);try{await we(e);return}catch(r){if(!C(r,"ENOENT"))throw r}await te(t,A(i),A(e)),await D(e,t)}async function P(i){try{await D(i,K(i));const e=v(i,"owner.json");await J(e,i);const t=await M(e);return await J(e,i),S("sha256").update(t).digest("hex")}catch{return}}async function At(i,e){const t=await Ke(i),r=await Bi(t,"leases"),n=v(r,"integration"),a=`${n}.recovery`;if(z(a)){await D(a,r);const c=await Ye(a),f=await P(a);if(c===void 0||pe(c))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};if(!f||!await Z(a,r,async u=>await P(u)===f))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"}}const s=oe(e.createdAt??new Date().toISOString()),o=Object.freeze({schemaVersion:1,kind:e.kind,storyId:e.storyId,sessionId:e.sessionId,idempotencyKey:e.idempotencyKey,pid:process.pid,createdAt:s,expiresAt:oe(e.expiresAt),persistent:e.persistent,ownerNonce:e.ownerNonce??be(16).toString("hex")});if(Date.parse(o.expiresAt)<=Date.parse(o.createdAt))return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"};const h=async()=>{await Y(r,t);try{return await Be(r,A(n),`${JSON.stringify(o)}
4
+ `),await D(n,r),await J(v(n,"owner.json"),n),!0}catch(c){throw C(c,"EEXIST")||await Z(n,r).catch(()=>{}),c}};try{return await h(),{ok:!0,owner:o,path:n}}catch(c){if(!C(c,"EEXIST"))return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"}}try{const c=await de(n),f=c?void 0:await Ye(n);if(c&&Je(c,o))return{ok:!0,owner:c,path:n};if(c&&Date.parse(c.expiresAt)>Date.now()&&(c.persistent||pe(c.pid))||f!==void 0&&pe(f)||!c&&f===void 0&&await ii(n))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};const p=await P(n);if(!p)return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"};const g=`${n}.stale.${process.pid}.${Date.now()}`;await te(r,A(n),A(g));try{if(await D(g,r),await P(g)!==p)return await se(g,n,r).catch(()=>{}),{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};await h()}finally{await Z(g,r,async m=>await P(m)===p).catch(()=>{})}return{ok:!0,owner:o,path:n}}catch(c){return{ok:!1,reasonCode:C(c,"EEXIST")||C(c,"ENOENT")?"git-lifecycle-integration-backpressure":"git-lifecycle-integration-lock-failed"}}}async function kt(i,e){const t=await de(i);return!!(t&&_e(t,e)&&Date.parse(t.expiresAt)>Date.now())}async function $i(i,e){try{const t=K(i);await D(i,t);const r=await de(i);if(!r||!_e(r,e))return!1;const n=await P(i);if(!n)return!1;const a=`${i}.release.${process.pid}.${Date.now()}`;await te(t,A(i),A(a)),await D(a,t);const s=await de(a);return!s||!_e(s,e)||await P(a)!==n?(await se(a,i,t).catch(()=>{}),!1):Z(a,t,async o=>await P(o)===n)}catch(t){if(C(t,"ENOENT"))return!1;throw t}}function Vi(i){return S("sha256").update(["git-lifecycle-physical-owner-v1",i.kind,i.storyId,i.sessionId,i.idempotencyKey,String(i.pid),i.createdAt,i.expiresAt,i.persistent?"persistent":"ephemeral",i.ownerNonce].join("\0")).digest("hex")}async function Ct(i,e){if(!Q(e.storyId)||!k(e.idempotencyKey)||!l(e.ownerDigest))return"foreign";const t=await Ke(i),r=v(t,"leases"),n=v(r,"integration");if(!z(n))return"absent";try{await D(r,t),await D(n,r);const a=await de(n);return!a||a.kind!=="direct"||a.storyId!==e.storyId||a.sessionId!==e.idempotencyKey||a.idempotencyKey!==e.idempotencyKey||a.persistent!==!0||Vi(a)!==e.ownerDigest?"foreign":await $i(n,a)?"released":"foreign"}catch{return"foreign"}}async function de(i){try{await D(i,K(i));const e=v(i,"owner.json");await J(e,i);const t=JSON.parse(await M(e,"utf8"));return t.schemaVersion!==1||t.kind!=="direct"&&t.kind!=="continuous"||!Q(t.storyId)||!k(t.sessionId)||!k(t.idempotencyKey)||!Number.isSafeInteger(t.pid)||Number(t.pid)<=0||!E(t.createdAt)||!E(t.expiresAt)||typeof t.persistent!="boolean"||typeof t.ownerNonce!="string"||!/^[a-f0-9]{32}$/.test(t.ownerNonce)?void 0:t}catch{return}}async function Ye(i){try{await D(i,K(i));const e=v(i,"owner.json");await J(e,i);const t=JSON.parse(await M(e,"utf8"));return Number.isSafeInteger(t.pid)&&Number(t.pid)>0?Number(t.pid):void 0}catch{return}}function Je(i,e){return i.kind===e.kind&&i.storyId===e.storyId&&i.sessionId===e.sessionId&&i.idempotencyKey===e.idempotencyKey&&i.expiresAt===e.expiresAt&&i.persistent===e.persistent}function _e(i,e){return Je(i,e)&&i.schemaVersion===e.schemaVersion&&i.pid===e.pid&&i.createdAt===e.createdAt&&i.ownerNonce===e.ownerNonce}async function xe(i){const e=await U(i),r=(await N("git",["rev-parse","--git-common-dir"],{cwd:e,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim(),n=ae(r)?y(r):y(e,r),a=await U(n);if(a!==n)throw new Error("git-lifecycle-common-dir-symlink");await ji(a);const o=(await N("git",["rev-parse","--git-common-dir"],{cwd:e,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim();if((ae(o)?y(o):y(e,o))!==n)throw new Error("git-lifecycle-common-dir-raced");return a}async function Qe(i){const e=v(i,fe);if(z(e)||await $e(i,fe),await H(e,"directory"),await U(e)!==e)throw new Error("git-lifecycle-runtime-directory-symlink");return e}async function Ue(i,e={}){try{return await H(i,"file"),Ee(JSON.parse(await M(i,"utf8")))}catch(t){if(C(t,"ENOENT")){if(e.required)throw new Error("git-lifecycle-runtime-missing");return Ie()}throw t}}async function Li(i){try{await H(i,"file")}catch(e){if(C(e,"ENOENT"))return;throw e}}async function H(i,e){const t=await we(i);if(t.isSymbolicLink())throw new Error(`git-lifecycle-${e}-symlink`);if(e==="file"?!t.isFile():!t.isDirectory())throw new Error(`git-lifecycle-${e}-invalid`);if(ge()&&t.uid!==process.getuid())throw new Error(`git-lifecycle-${e}-ownership-mismatch`);if(ge()&&(t.mode&63)!==0)throw new Error(`git-lifecycle-${e}-permissions-unsafe`)}function re(i,e){const t=y(i),r=y(e),n=fi(t,r);if(!n||n.startsWith("..")||ae(n)||K(r)!==t)throw new Error("git-lifecycle-private-path-escape")}async function Y(i,e){const t=y(i);if(e&&re(y(e),t),await H(t,"directory"),y(await U(t))!==t)throw new Error("git-lifecycle-directory-substituted");if(e){const r=y(e);if(await H(r,"directory"),y(await U(r))!==r)throw new Error("git-lifecycle-directory-parent-substituted")}}async function J(i,e){const t=y(i);if(re(y(e),t),await Y(y(e)),await H(t,"file"),y(await U(t))!==t)throw new Error("git-lifecycle-file-substituted")}function Ze(i,e){const t=Pe(i);if(t.isSymbolicLink())throw new Error(`git-lifecycle-${e}-symlink`);if(e==="file"?!t.isFile():!t.isDirectory())throw new Error(`git-lifecycle-${e}-invalid`);if(ge()&&t.uid!==process.getuid())throw new Error(`git-lifecycle-${e}-ownership-mismatch`);if(ge()&&(t.mode&63)!==0)throw new Error(`git-lifecycle-${e}-permissions-unsafe`)}async function ji(i){const e=await we(i);if(e.isSymbolicLink())throw new Error("git-lifecycle-common-dir-symlink");if(!e.isDirectory())throw new Error("git-lifecycle-common-dir-invalid")}function qi(i){const e=Pe(i);if(e.isSymbolicLink())throw new Error("git-lifecycle-common-dir-symlink");if(!e.isDirectory())throw new Error("git-lifecycle-common-dir-invalid")}function ge(i=process.platform){return i!=="win32"&&typeof process.getuid=="function"}function Ee(i){if(!i||typeof i!="object"||Array.isArray(i))throw new Error("git-lifecycle-runtime-invalid");const e=i;x(e,["schemaVersion","revision","epics","stories"],"git-lifecycle-runtime-unknown-field");const t=d(e.epics),r=d(e.stories);if(e.schemaVersion!==1||!Number.isSafeInteger(e.revision)||Number(e.revision)<0||!t||!r||Object.values(t).some(n=>!d(n))||Object.values(r).some(n=>!d(n)))throw new Error("git-lifecycle-runtime-invalid");for(const[n,a]of Object.entries(t))if(!Q(n)||!Hi(a))throw new Error("git-lifecycle-runtime-epic-invalid");for(const[n,a]of Object.entries(r))if(!Q(n)||!n.includes(".")||!Ti(a,n))throw new Error("git-lifecycle-runtime-story-invalid");return e}const zi=["branch_mode","execution_branch","origin_branch","branch_lease","origin_binding","graph_revision","aggregate_qa_receipt","terminal_git_receipt","physicalMergeStatus","pr_number","git_reconciliation_receipts","git_reconciliation_debt"],Gi=["checkpoint","status","last_step","steps_completed"];function Hi(i){return x(i,zi,"git-lifecycle-runtime-epic-unknown-field"),(i.branch_mode===void 0||i.branch_mode==="epic")&&(i.execution_branch===void 0||W(i.execution_branch))&&(i.origin_branch===void 0||W(i.origin_branch))&&(i.branch_lease===void 0||i.branch_lease===null||Fi(i.branch_lease))&&(i.origin_binding===void 0||i.origin_binding===null||Ki(i.origin_binding))&&(i.graph_revision===void 0||l(i.graph_revision))&&(i.aggregate_qa_receipt===void 0||i.aggregate_qa_receipt===null||Yi(i.aggregate_qa_receipt))&&(i.terminal_git_receipt===void 0||i.terminal_git_receipt===null||Ji(i.terminal_git_receipt))&&(i.physicalMergeStatus===void 0||["merged","pushed","denied_external_gate","blocked_local_or_repo","not_attempted"].includes(String(i.physicalMergeStatus)))&&(i.pr_number===void 0||i.pr_number===null||Number.isSafeInteger(i.pr_number)&&Number(i.pr_number)>0)&&(i.git_reconciliation_receipts===void 0||et(i.git_reconciliation_receipts))&&(i.git_reconciliation_debt===void 0||it(i.git_reconciliation_debt))}function Ti(i,e){return x(i,Gi,"git-lifecycle-runtime-story-unknown-field"),(i.checkpoint===void 0||i.checkpoint===null||Xe(i.checkpoint,e))&&(i.status===void 0||k(i.status))&&(i.last_step===void 0||i.last_step===null||k(i.last_step))&&(i.steps_completed===void 0||j(i.steps_completed,128))}function Fi(i){const e=d(i);return e?(x(e,["schemaVersion","ownerStoryId","sessionId","idempotencyKey","acquiredAt","expiresAt","handoffGrant","handoffConsumption"],"git-lifecycle-runtime-lease-unknown-field"),e.schemaVersion===1&&Q(e.ownerStoryId)&&k(e.sessionId)&&k(e.idempotencyKey)&&E(e.acquiredAt)&&E(e.expiresAt)&&Date.parse(String(e.expiresAt))>Date.parse(String(e.acquiredAt))&&(e.handoffGrant===void 0||Mi(e.handoffGrant,e))&&(e.handoffConsumption===void 0||Wi(e.handoffConsumption,e))):!1}function Mi(i,e){const t=d(i);return t?(x(t,["schemaVersion","kind","storyId","fromSessionId","tokenDigest","bundleDigest","claimRevision","expiresAt"],"git-lifecycle-runtime-handoff-grant-unknown-field"),t.schemaVersion===1&&t.kind==="direct-yolo-setup-handoff"&&t.storyId===e.ownerStoryId&&t.fromSessionId===e.sessionId&&l(t.tokenDigest)&&l(t.bundleDigest)&&l(t.claimRevision)&&E(t.expiresAt)&&Date.parse(String(t.expiresAt))<=Date.parse(String(e.expiresAt))):!1}function Wi(i,e){const t=d(i);return t?(x(t,["schemaVersion","kind","state","storyId","fromSessionId","tokenDigest","bundleDigest","claimRevision","consumedBySessionId","consumedAt"],"git-lifecycle-runtime-handoff-consumption-unknown-field"),t.schemaVersion===1&&t.kind==="direct-yolo-setup-handoff-consumption"&&t.state==="consumed"&&t.storyId===e.ownerStoryId&&k(t.fromSessionId)&&l(t.tokenDigest)&&l(t.bundleDigest)&&l(t.claimRevision)&&t.consumedBySessionId===e.sessionId&&E(t.consumedAt)):!1}function Ki(i){const e=d(i);return e?(x(e,["schemaVersion","originBranch","originHeadSha","executionBranch","capturedFromCurrentCheckout","capturedAt"],"git-lifecycle-runtime-origin-unknown-field"),e.schemaVersion===1&&W(e.originBranch)&&W(e.executionBranch)&&e.originBranch!==e.executionBranch&&_(e.originHeadSha)&&e.capturedFromCurrentCheckout===!0&&E(e.capturedAt)):!1}function Yi(i){const e=d(i);if(!e)return!1;x(e,["schemaVersion","evidenceVersion","producer","contract","command","verdict","executionHeadSha","graphRevision","manifestDigest","resultDigest","checkedAt","receiptRef","gateIds"],"git-lifecycle-runtime-aggregate-qa-unknown-field");const t=e.evidenceVersion==="p205-execution-v2"&&e.producer==="local-yolo-tdd"&&e.contract==="P205-CI-02"&&e.command===L&&l(e.manifestDigest)&&l(e.resultDigest),r=e.evidenceVersion===void 0&&e.producer===void 0&&e.contract===void 0&&e.command===void 0&&e.manifestDigest===void 0&&e.resultDigest===void 0;return e.schemaVersion===1&&(t||r)&&e.verdict==="passed"&&_(e.executionHeadSha)&&l(e.graphRevision)&&E(e.checkedAt)&&le(e.receiptRef)&&j(e.gateIds,128,!0)}function Ji(i){const e=d(i);return e?(x(e,["schemaVersion","epicId","executionBranch","originBranch","baseSha","executionHeadSha","mergeSha","pushedSha","strategy","prNumber","physicalStatus","localGateReceiptRefs","idempotencyKey","attemptStartedAt","completedAt","retryEligible","reasonCodes","publicSafe","candidateQa","providerGuard"],"git-lifecycle-runtime-terminal-receipt-unknown-field"),e.schemaVersion===1&&Q(e.epicId)&&W(e.executionBranch)&&W(e.originBranch)&&_(e.baseSha)&&_(e.executionHeadSha)&&(e.mergeSha===void 0||_(e.mergeSha))&&(e.pushedSha===void 0||_(e.pushedSha))&&(e.strategy==="direct"||e.strategy==="single_pr")&&(e.candidateQa===void 0||Ui(e.candidateQa,e))&&(e.providerGuard===void 0||Qi(e.providerGuard,e))&&(e.prNumber===void 0||Number.isSafeInteger(e.prNumber)&&Number(e.prNumber)>0)&&["prepared","merged","pushed","denied_external_gate","blocked_local_or_repo"].includes(String(e.physicalStatus))&&j(e.localGateReceiptRefs,128,!0)&&k(e.idempotencyKey)&&E(e.attemptStartedAt)&&(e.completedAt===void 0||E(e.completedAt))&&typeof e.retryEligible=="boolean"&&j(e.reasonCodes,128)&&e.publicSafe===!0):!1}function Qi(i,e){const t=d(i);if(!t)return!1;x(t,["schemaVersion","provider","mode","source","prHeadSha","originHeadSha","checkedAt","publicSafe"],"git-lifecycle-runtime-provider-guard-unknown-field");const r=t.mode==="recovered_exact_tree"?t.source==="physical_recovery":t.mode==="strict_up_to_date_expected_head"&&["branch_protection","ruleset","branch_protection_and_ruleset"].includes(String(t.source));return t.schemaVersion===1&&t.provider==="github"&&r&&e.strategy==="single_pr"&&e.physicalStatus==="pushed"&&Number.isSafeInteger(e.prNumber)&&Number(e.prNumber)>0&&_(t.prHeadSha)&&t.prHeadSha===e.mergeSha&&_(t.originHeadSha)&&t.originHeadSha===e.baseSha&&E(t.checkedAt)&&t.publicSafe===!0}function Ui(i,e){const t=d(i);return t?(x(t,["schemaVersion","kind","contract","command","originHeadSha","executionHeadSha","mergeSha","treeSha","graphRevision","manifestDigest","resultDigest","gateIds","checkedAt","receiptRef"],"git-lifecycle-runtime-merge-candidate-unknown-field"),t.schemaVersion===1&&t.kind==="epic_merge_candidate_qa"&&t.contract==="P205-CI-02"&&t.command===L&&_(t.originHeadSha)&&t.originHeadSha===e.baseSha&&_(t.executionHeadSha)&&t.executionHeadSha===e.executionHeadSha&&_(t.mergeSha)&&t.mergeSha===e.mergeSha&&_(t.treeSha)&&l(t.graphRevision)&&l(t.manifestDigest)&&l(t.resultDigest)&&j(t.gateIds,128,!0)&&E(t.checkedAt)&&le(t.receiptRef)):!1}function Xe(i,e){const t=d(i);if(!t)return!1;x(t,["schemaVersion","storyId","epicId","branch","baseSha","headSha","commits","idempotencyKey","dispatchId","bundleId","bundleDigest","graphRevision","claimRevision","receiptRefs","qaVerdict","reviewVerdict","qaReceipt","reviewReceipt","recordedAt"],"git-lifecycle-runtime-checkpoint-unknown-field");const r=String(e).split(".")[0];return t.schemaVersion===1&&t.storyId===e&&t.epicId===r&&W(t.branch)&&_(t.baseSha)&&_(t.headSha)&&t.baseSha!==t.headSha&&rt(t.commits)&&t.commits.length===1&&t.commits[0]===t.headSha&&k(t.idempotencyKey)&&(t.dispatchId===void 0||l(t.dispatchId))&&(t.bundleId===void 0||l(t.bundleId))&&l(t.bundleDigest)&&l(t.graphRevision)&&(t.claimRevision===void 0||l(t.claimRevision))&&j(t.receiptRefs,256,!0)&&(t.qaVerdict==="passed"||t.qaVerdict==="blocked")&&["approved","changes-requested","pending"].includes(String(t.reviewVerdict))&&Zi(t.qaReceipt,t)&&(t.reviewVerdict==="pending"?t.reviewReceipt===void 0:Xi(t.reviewReceipt,t))&&E(t.recordedAt)}function Zi(i,e){const t=d(i);return t?(x(t,["schemaVersion","kind","producer","evidenceVersion","storyId","epicId","baseSha","headSha","bundleDigest","graphRevision","contract","command","manifestDigest","gateIds","resultDigest","sourceEvidenceDigest","verdict","checkedAt","receiptRef"],"git-lifecycle-runtime-story-qa-unknown-field"),t.schemaVersion===1&&t.kind==="story_qa_evidence"&&t.producer==="local-yolo-tdd"&&(t.evidenceVersion===void 0||t.evidenceVersion==="git-immutable-v1"||t.evidenceVersion==="p205-execution-v2"&&t.contract==="P205-CI-02"&&t.command===L&&l(t.manifestDigest)&&j(t.gateIds,32,!0)&&l(t.resultDigest))&&ei(t,e)&&l(t.sourceEvidenceDigest)&&t.verdict===e.qaVerdict&&(t.verdict==="passed"||t.verdict==="blocked")&&E(t.checkedAt)&&le(t.receiptRef)&&e.receiptRefs.includes(t.receiptRef)):!1}function Xi(i,e){const t=d(i),r=d(e.qaReceipt);return!t||!r?!1:(x(t,["schemaVersion","kind","producer","storyId","epicId","baseSha","headSha","bundleDigest","graphRevision","sourceEvidenceDigest","qaReceiptRef","verdict","reviewedAt","receiptRef"],"git-lifecycle-runtime-story-review-unknown-field"),t.schemaVersion===1&&t.kind==="story_review_evidence"&&t.producer==="root-commit-range-review"&&ei(t,e)&&l(t.sourceEvidenceDigest)&&t.qaReceiptRef===r.receiptRef&&t.receiptRef!==r.receiptRef&&(t.verdict==="approved"||t.verdict==="changes-requested")&&(t.verdict==="approved"?e.reviewVerdict==="approved":e.reviewVerdict==="changes-requested")&&E(t.reviewedAt)&&Date.parse(String(t.reviewedAt))>=Date.parse(String(r.checkedAt))&&le(t.receiptRef)&&e.receiptRefs.includes(t.receiptRef))}function ei(i,e){return["storyId","epicId","baseSha","headSha","bundleDigest","graphRevision"].every(t=>i[t]===e[t])}function et(i){return!Array.isArray(i)||i.length>1024?!1:i.every(e=>{const t=d(e);return t?(x(t,["schemaVersion","resourceId","action","outcome","idempotencyKey","reasonCodes","recordedAt","publicSafe"],"git-lifecycle-runtime-reconciliation-receipt-unknown-field"),t.schemaVersion===1&&k(t.resourceId)&&["no_op","delete_local_branch","delete_remote_branch","close_pull_request"].includes(String(t.action))&&["applied","already_absent","dry_run","failed"].includes(String(t.outcome))&&k(t.idempotencyKey)&&j(t.reasonCodes,128)&&E(t.recordedAt)&&t.publicSafe===!0):!1})}function it(i){return!Array.isArray(i)||i.length>1024?!1:i.every(e=>{const t=d(e);return t?(x(t,["schemaVersion","resourceId","action","managed","reasonCodes","evidence","publicSafe"],"git-lifecycle-runtime-reconciliation-debt-unknown-field"),t.schemaVersion===1&&k(t.resourceId)&&t.action==="preserve"&&typeof t.managed=="boolean"&&j(t.reasonCodes,128)&&j(t.evidence,16)&&t.publicSafe===!0):!1})}function x(i,e,t){const r=new Set(e);if(Object.keys(i).some(n=>!r.has(n)))throw new Error(t)}function Q(i){return typeof i=="string"&&/^P[1-9][0-9]*(?:\.[0-9]+)*$/.test(i)}function tt(i){const e=d(i);return e?Object.keys(e).length===10&&e.schemaVersion===1&&e.kind==="git_lifecycle_graph_authority"&&e.producer==="server-continuous-yoloop-v1"&&(e.source==="yolo"||e.source==="yoloop")&&Q(e.epicId)&&Q(e.storyId)&&String(e.storyId).startsWith(`${String(e.epicId)}.`)&&W(e.executionBranch)&&W(e.originBranch)&&e.originBranch!==e.executionBranch&&typeof e.graphRevision=="string"&&/^[a-f0-9]{64}$/.test(e.graphRevision)&&e.publicSafe===!0:!1}function W(i){return typeof i=="string"&&/^[A-Za-z0-9][A-Za-z0-9._/-]{0,239}$/.test(i)&&!i.includes("..")&&!i.includes("//")&&!i.includes("@{")&&!i.endsWith("/")&&!i.endsWith(".")&&!i.split("/").some(e=>!e||e.startsWith(".")||e.endsWith(".lock"))}function he(i){return i.length>0&&i.length<=1024&&!ae(i)&&!i.includes("\0")&&!i.replaceAll("\\","/").split("/").includes("..")}function k(i){return typeof i=="string"&&i.length>0&&i.length<=240&&/^[A-Za-z0-9._:/#\-[\]]+$/.test(i)&&!i.includes("..")}function le(i){return k(i)}function _(i){return typeof i=="string"&&/^[a-f0-9]{40,64}$/i.test(i)}function l(i){return typeof i=="string"&&/^[a-f0-9]{64}$/i.test(i)}function E(i){return typeof i=="string"&&i.length<=64&&Number.isFinite(Date.parse(i))}function j(i,e,t=!1){return Array.isArray(i)&&i.length<=e&&(!t||i.length>0)&&i.every(k)}function rt(i){return Array.isArray(i)&&i.length>0&&i.length<=256&&i.every(_)}function Ie(){return{schemaVersion:1,revision:0,epics:{},stories:{}}}async function nt(i){const e=K(i),t={pid:process.pid,nonce:be(16).toString("hex")},r=async()=>{await Y(e),await Be(e,A(i),JSON.stringify(t));try{await D(i,e),await J(v(i,"owner.json"),i)}catch(n){throw await Z(i,e).catch(()=>{}),n}};try{await r()}catch(n){if(!C(n,"EEXIST"))throw n;await H(i,"directory");const a=await Re(i);if(a!==void 0&&pe(a.pid))throw new Error("git-lifecycle-runtime-lock-active");if(a===void 0&&await ii(i))throw new Error("git-lifecycle-runtime-lock-active");const s=await P(i);if(!s)throw new Error("git-lifecycle-runtime-lock-owner-invalid");const o=`${i}.stale.${process.pid}.${Date.now()}`;await te(e,A(i),A(o));try{if(await D(o,e),await P(o)!==s)throw await se(o,i,e).catch(()=>{}),new Error("git-lifecycle-runtime-lock-owner-replaced");await r()}finally{await Z(o,e,async h=>await P(h)===s).catch(()=>{})}}return t}async function at(i,e){const t=K(i);try{await D(i,t);const r=await Re(i);if(!r||!ti(r,e))return!1;const n=await P(i);if(!n)return!1;const a=`${i}.release.${process.pid}.${Date.now()}`;await te(t,A(i),A(a)),await D(a,t);const s=await Re(a);return!s||!ti(s,e)||await P(a)!==n?(await se(a,i,t).catch(()=>{}),!1):Z(a,t,async o=>await P(o)===n)}catch(r){if(C(r,"ENOENT"))return!1;throw r}}async function ii(i){try{return Date.now()-(await di(i)).mtimeMs<3e4}catch{return!0}}async function Re(i){try{await D(i,K(i));const e=v(i,"owner.json");await J(e,i);const t=JSON.parse(await M(e,"utf8"));return Number.isSafeInteger(t.pid)&&Number(t.pid)>0&&(t.nonce===void 0||typeof t.nonce=="string"&&/^[a-f0-9]{32}$/.test(t.nonce))?{pid:Number(t.pid),...typeof t.nonce=="string"?{nonce:t.nonce}:{}}:void 0}catch{return}}function ti(i,e){return i.pid===e.pid&&i.nonce!==void 0&&i.nonce===e.nonce}function pe(i){try{return process.kill(i,0),!0}catch(e){return C(e,"EPERM")}}function d(i){return i&&typeof i=="object"&&!Array.isArray(i)?i:void 0}function C(i,e){return i instanceof Error&&"code"in i&&i.code===e}export{fe as GIT_LIFECYCLE_RUNTIME_DIRECTORY,ue as GIT_LIFECYCLE_RUNTIME_FILE,Le as LEGACY_DIRECT_YOLO_RECOVERY_COMMITS,wi as LEGACY_P174_CHECKPOINT_MIGRATIONS,L as P205_COMPLETE_COMMAND,At as acquireGitLifecyclePhysicalIntegrationLock,xi as applyGitLifecycleRuntimeOverlay,D as assertGitLifecyclePrivateDirectory,Rt as assertGitLifecyclePrivateFile,Dt as classifyGitLifecycleStoryCheckpointProjectionSync,Vi as computeGitLifecyclePhysicalIntegrationLockOwnerDigest,Oi as computeImmutableStoryQaEvidenceDigest,It as computeLegacyDirectYoloRecoveryReceiptRef,Pi as computeP205StoryQaEvidenceDigest,Bi as ensureGitLifecyclePrivateChildDirectory,bt as ensureGitLifecycleRuntimeInitialized,Ei as ensureRuntimeEpic,vt as ensureRuntimeStory,Si as executeP205TransientAuthorities,yt as executeP205TransientAuthority,Ke as gitLifecycleRuntimeDirectory,ki as gitLifecycleStoryWriteSet,He as isAcceptedGitLifecycleStoryCheckpoint,ze as mutateGitLifecycleRuntime,xt as p205TransientAuthorityMatchesAggregate,wt as persistGitLifecycleGraphAuthority,ge as posixSecurityAvailable,_t as projectP205TransientExecutionEvidence,De as readGitLifecycleRuntime,Di as readGitLifecycleRuntimeSync,$i as releaseGitLifecyclePhysicalIntegrationLock,Ct as releaseGitLifecyclePhysicalIntegrationLockForCheckpoint,Z as removeGitLifecyclePrivateDirectory,St as verifyAcceptedGitLifecycleStoryCheckpoint,Te as verifyAcceptedGitLifecycleStoryCheckpointSync,kt as verifyGitLifecyclePhysicalIntegrationLock,Et as verifyLegacyCheckpointMigrationCandidateSync};
@@ -53,6 +53,7 @@ export { ClientCircuitBreaker, type CircuitState, type CircuitBreakerConfig, typ
53
53
  export { OfflineTelemetryQueue, type TelemetryEvent, type QueueConfig, type QueueStats, type FlushResult, } from './telemetry/index.js';
54
54
  export { getCacheStatus, formatCacheStatus, type CacheStatusInfo, type CacheStatusOptions, } from './commands/cache-status.js';
55
55
  export { getSubagentApprovalPolicy, ensureManagedSubagentApprovalPolicy, setSubagentApprovalMode, resetSubagentApprovalMode, ApprovalPolicyConfigError, type ApprovalPolicyConfigOptions, type ApprovalPolicyConfigResult, } from './config.js';
56
+ export { deriveOpaqueNativeAgentHandle, openNativeAgentPrivateStore, resolveNativeAgentPrivateRuntimePaths, } from './continuity/native-agent-store.js';
56
57
  export { configCliHandler, type ConfigCliDependencies, } from './commands/config.js';
57
58
  export { storyCheckpointCliHandler, parseStoryCheckpointArgs, } from './commands/story-checkpoint.js';
58
59
  export { beginDirectYoloStoryCommit, finalizeDirectYoloStoryCheckpoint, issueDirectYoloSetupLeaseHandoff, prepareDirectYoloSetup, recoverLegacyDirectYoloStoryCheckpoint, type DirectYoloCheckpointOptions, type DirectYoloCheckpointResult, type DirectYoloCommitPlan, type DirectYoloSetupReceipt, type DirectYoloSetupHandoffReceipt, } from './git/direct-yolo-checkpoint.js';
@@ -1 +1 @@
1
- import{ResolverMode as o,NoOpCache as t}from"./types/index.js";import{PUBLIC_PROJECTION_BUNDLE as i,PUBLIC_PROJECTION_GENERATION_ID as p,PUBLIC_PROJECTION_BUNDLE_HASH as n}from"./generated/public-projections.generated.js";import{LocalResolver as c}from"./resolvers/local-resolver.js";import{RemoteResolver as s,RemoteResolverError as C}from"./resolvers/remote-resolver.js";import{EncryptedCache as d}from"./cache/index.js";import{createResolver as x,selectResolver as A}from"./config/resolver-selection.js";import{collectContext as S}from"./context/context-collector.js";import{sanitizeValue as u,sanitizeRecord as T,sanitizeObject as v}from"./context/context-sanitizer.js";import{getMachineFingerprint as E}from"./machine/index.js";import{LicenseClient as I}from"./license/index.js";import{ClaudeCodeAdapter as P,CursorAdapter as _,VSCodeAdapter as M,GeminiAdapter as h,CodexAdapter as L,AntigravityAdapter as k,AdapterRegistry as F,UnknownTargetError as b,createDefaultRegistry as B,detectPlatform as H,isValidTargetId as U}from"./adapters/index.js";import{ClientCircuitBreaker as G,DegradationManager as Y,DegradationLevel as w,FreshnessIndicator as z,RecoveryDetector as J}from"./resilience/index.js";import{OfflineTelemetryQueue as Q}from"./telemetry/index.js";import{getCacheStatus as K,formatCacheStatus as W}from"./commands/cache-status.js";import{getSubagentApprovalPolicy as Z,ensureManagedSubagentApprovalPolicy as $,setSubagentApprovalMode as ee,resetSubagentApprovalMode as re,ApprovalPolicyConfigError as oe}from"./config.js";import{configCliHandler as ae}from"./commands/config.js";import{storyCheckpointCliHandler as pe,parseStoryCheckpointArgs as ne}from"./commands/story-checkpoint.js";import{beginDirectYoloStoryCommit as ce,finalizeDirectYoloStoryCheckpoint as me,issueDirectYoloSetupLeaseHandoff as se,prepareDirectYoloSetup as Ce,recoverLegacyDirectYoloStoryCheckpoint as fe}from"./git/direct-yolo-checkpoint.js";import{FRONTMATTER_DIAGNOSTIC_CATEGORIES as ge,FRONTMATTER_DIAGNOSTIC_REASON_CODES as xe,getFrontmatterDiagnostic as Ae,formatFrontmatterDiagnostic as Re}from"./errors/frontmatter-diagnostics.js";import{invoke as ye,invokeCliHandler as ue,collectStateSnapshot as Te}from"./commands/invoke.js";import{TierAwareClient as De}from"./tier/index.js";import{buildProjectMemoryContent as Oe,createNodeProjectMemoryFs as Ie,writeProjectMemory as Ne,writeProjectMemoryTargetFiles as Pe}from"./memory/project-memory-writer.js";export{F as AdapterRegistry,k as AntigravityAdapter,oe as ApprovalPolicyConfigError,P as ClaudeCodeAdapter,G as ClientCircuitBreaker,L as CodexAdapter,_ as CursorAdapter,w as DegradationLevel,Y as DegradationManager,d as EncryptedCache,ge as FRONTMATTER_DIAGNOSTIC_CATEGORIES,xe as FRONTMATTER_DIAGNOSTIC_REASON_CODES,z as FreshnessIndicator,h as GeminiAdapter,I as LicenseClient,c as LocalResolver,t as NoOpCache,Q as OfflineTelemetryQueue,i as PUBLIC_PROJECTION_BUNDLE,n as PUBLIC_PROJECTION_BUNDLE_HASH,p as PUBLIC_PROJECTION_GENERATION_ID,J as RecoveryDetector,s as RemoteResolver,C as RemoteResolverError,o as ResolverMode,De as TierAwareClient,b as UnknownTargetError,M as VSCodeAdapter,ce as beginDirectYoloStoryCommit,Oe as buildProjectMemoryContent,S as collectContext,Te as collectStateSnapshot,ae as configCliHandler,B as createDefaultRegistry,Ie as createNodeProjectMemoryFs,x as createResolver,H as detectPlatform,$ as ensureManagedSubagentApprovalPolicy,me as finalizeDirectYoloStoryCheckpoint,W as formatCacheStatus,Re as formatFrontmatterDiagnostic,K as getCacheStatus,Ae as getFrontmatterDiagnostic,E as getMachineFingerprint,Z as getSubagentApprovalPolicy,ye as invoke,ue as invokeCliHandler,U as isValidTargetId,se as issueDirectYoloSetupLeaseHandoff,ne as parseStoryCheckpointArgs,Ce as prepareDirectYoloSetup,fe as recoverLegacyDirectYoloStoryCheckpoint,re as resetSubagentApprovalMode,v as sanitizeObject,T as sanitizeRecord,u as sanitizeValue,A as selectResolver,ee as setSubagentApprovalMode,pe as storyCheckpointCliHandler,Ne as writeProjectMemory,Pe as writeProjectMemoryTargetFiles};
1
+ import{ResolverMode as o,NoOpCache as t}from"./types/index.js";import{PUBLIC_PROJECTION_BUNDLE as i,PUBLIC_PROJECTION_GENERATION_ID as n,PUBLIC_PROJECTION_BUNDLE_HASH as p}from"./generated/public-projections.generated.js";import{LocalResolver as c}from"./resolvers/local-resolver.js";import{RemoteResolver as s,RemoteResolverError as f}from"./resolvers/remote-resolver.js";import{EncryptedCache as d}from"./cache/index.js";import{createResolver as A,selectResolver as x}from"./config/resolver-selection.js";import{collectContext as R}from"./context/context-collector.js";import{sanitizeValue as u,sanitizeRecord as y,sanitizeObject as O}from"./context/context-sanitizer.js";import{getMachineFingerprint as D}from"./machine/index.js";import{LicenseClient as N}from"./license/index.js";import{ClaudeCodeAdapter as I,CursorAdapter as _,VSCodeAdapter as h,GeminiAdapter as M,CodexAdapter as L,AntigravityAdapter as k,AdapterRegistry as F,UnknownTargetError as b,createDefaultRegistry as H,detectPlatform as B,isValidTargetId as U}from"./adapters/index.js";import{ClientCircuitBreaker as G,DegradationManager as Y,DegradationLevel as w,FreshnessIndicator as z,RecoveryDetector as J}from"./resilience/index.js";import{OfflineTelemetryQueue as q}from"./telemetry/index.js";import{getCacheStatus as K,formatCacheStatus as W}from"./commands/cache-status.js";import{getSubagentApprovalPolicy as Z,ensureManagedSubagentApprovalPolicy as $,setSubagentApprovalMode as ee,resetSubagentApprovalMode as re,ApprovalPolicyConfigError as oe}from"./config.js";import{deriveOpaqueNativeAgentHandle as ae,openNativeAgentPrivateStore as ie,resolveNativeAgentPrivateRuntimePaths as ne}from"./continuity/native-agent-store.js";import{configCliHandler as le}from"./commands/config.js";import{storyCheckpointCliHandler as me,parseStoryCheckpointArgs as se}from"./commands/story-checkpoint.js";import{beginDirectYoloStoryCommit as Ce,finalizeDirectYoloStoryCheckpoint as de,issueDirectYoloSetupLeaseHandoff as ge,prepareDirectYoloSetup as Ae,recoverLegacyDirectYoloStoryCheckpoint as xe}from"./git/direct-yolo-checkpoint.js";import{FRONTMATTER_DIAGNOSTIC_CATEGORIES as Re,FRONTMATTER_DIAGNOSTIC_REASON_CODES as Se,getFrontmatterDiagnostic as ue,formatFrontmatterDiagnostic as ye}from"./errors/frontmatter-diagnostics.js";import{invoke as Te,invokeCliHandler as De,collectStateSnapshot as Ee}from"./commands/invoke.js";import{TierAwareClient as Pe}from"./tier/index.js";import{buildProjectMemoryContent as _e,createNodeProjectMemoryFs as he,writeProjectMemory as Me,writeProjectMemoryTargetFiles as Le}from"./memory/project-memory-writer.js";export{F as AdapterRegistry,k as AntigravityAdapter,oe as ApprovalPolicyConfigError,I as ClaudeCodeAdapter,G as ClientCircuitBreaker,L as CodexAdapter,_ as CursorAdapter,w as DegradationLevel,Y as DegradationManager,d as EncryptedCache,Re as FRONTMATTER_DIAGNOSTIC_CATEGORIES,Se as FRONTMATTER_DIAGNOSTIC_REASON_CODES,z as FreshnessIndicator,M as GeminiAdapter,N as LicenseClient,c as LocalResolver,t as NoOpCache,q as OfflineTelemetryQueue,i as PUBLIC_PROJECTION_BUNDLE,p as PUBLIC_PROJECTION_BUNDLE_HASH,n as PUBLIC_PROJECTION_GENERATION_ID,J as RecoveryDetector,s as RemoteResolver,f as RemoteResolverError,o as ResolverMode,Pe as TierAwareClient,b as UnknownTargetError,h as VSCodeAdapter,Ce as beginDirectYoloStoryCommit,_e as buildProjectMemoryContent,R as collectContext,Ee as collectStateSnapshot,le as configCliHandler,H as createDefaultRegistry,he as createNodeProjectMemoryFs,A as createResolver,ae as deriveOpaqueNativeAgentHandle,B as detectPlatform,$ as ensureManagedSubagentApprovalPolicy,de as finalizeDirectYoloStoryCheckpoint,W as formatCacheStatus,ye as formatFrontmatterDiagnostic,K as getCacheStatus,ue as getFrontmatterDiagnostic,D as getMachineFingerprint,Z as getSubagentApprovalPolicy,Te as invoke,De as invokeCliHandler,U as isValidTargetId,ge as issueDirectYoloSetupLeaseHandoff,ie as openNativeAgentPrivateStore,se as parseStoryCheckpointArgs,Ae as prepareDirectYoloSetup,xe as recoverLegacyDirectYoloStoryCheckpoint,re as resetSubagentApprovalMode,ne as resolveNativeAgentPrivateRuntimePaths,O as sanitizeObject,y as sanitizeRecord,u as sanitizeValue,x as selectResolver,ee as setSubagentApprovalMode,me as storyCheckpointCliHandler,Me as writeProjectMemory,Le as writeProjectMemoryTargetFiles};