@zaip-ai/cli 7.5.0 → 7.6.0

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 (118) hide show
  1. package/README.md +12 -20
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +2 -2
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/services/adapters.d.ts +1 -1
  6. package/dist/services/adapters.js +1 -1
  7. package/dist/services/codex-task-delivery-authority-template.d.ts.map +1 -1
  8. package/dist/services/codex-task-delivery-authority-template.js +39 -1
  9. package/dist/services/codex-task-delivery-authority-template.js.map +1 -1
  10. package/dist/services/global-codex-project-trust.d.ts +1 -1
  11. package/dist/services/global-codex-project-trust.d.ts.map +1 -1
  12. package/dist/services/global-codex-project-trust.js +46 -11
  13. package/dist/services/global-codex-project-trust.js.map +1 -1
  14. package/dist/services/global-codex-project-trust.test.js +35 -4
  15. package/dist/services/global-codex-project-trust.test.js.map +1 -1
  16. package/dist/services/install-agents-template.js +2 -2
  17. package/dist/services/install-agents-template.js.map +1 -1
  18. package/dist/services/install-target-windows.test.d.ts +2 -0
  19. package/dist/services/install-target-windows.test.d.ts.map +1 -0
  20. package/dist/services/install-target-windows.test.js +39 -0
  21. package/dist/services/install-target-windows.test.js.map +1 -0
  22. package/dist/services/install-target.d.ts +6 -0
  23. package/dist/services/install-target.d.ts.map +1 -0
  24. package/dist/services/install-target.js +89 -0
  25. package/dist/services/install-target.js.map +1 -0
  26. package/dist/services/install-target.test.d.ts +2 -0
  27. package/dist/services/install-target.test.d.ts.map +1 -0
  28. package/dist/services/install-target.test.js +47 -0
  29. package/dist/services/install-target.test.js.map +1 -0
  30. package/dist/services/logger.js +5 -3
  31. package/dist/services/logger.js.map +1 -1
  32. package/package.json +1 -1
  33. package/templates/.agents/config/agents/discovery.json +1 -1
  34. package/templates/.agents/dashboard/.zaip-managed.json +72 -32
  35. package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-BCsdQtWG.js → ProjectSettingsPage-86kLUrXm.js} +1 -1
  36. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-BN8FwP5S.js → TraceabilityWorkspace-BZ1rH1vl.js} +1 -1
  37. package/templates/.agents/dashboard/apps/frontend/dist/assets/{index-uIVtG2ZR.js → index-C4uiRYHu.js} +2 -2
  38. package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-DFY7ZDlu.css → traceability-s5SzQnzt.css} +1 -1
  39. package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-vQx9R6BQ.js +1 -0
  40. package/templates/.agents/dashboard/apps/frontend/dist/index.html +3 -3
  41. package/templates/.agents/dashboard/apps/frontend/e2e/release-delivery-fixture.mjs +117 -0
  42. package/templates/.agents/dashboard/apps/frontend/e2e/release-delivery-lab.mjs +246 -0
  43. package/templates/.agents/dashboard/apps/frontend/e2e/release-delivery-receipt.mjs +65 -0
  44. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  45. package/templates/.agents/dashboard/apps/frontend/src/dashboard-runtime-status.ts +5 -1
  46. package/templates/.agents/dashboard/apps/frontend/src/release-delivery.test.tsx +78 -0
  47. package/templates/.agents/dashboard/apps/frontend/src/use-runtime-status.dom.test.ts +28 -6
  48. package/templates/.agents/dashboard/apps/frontend/src/use-runtime-status.ts +18 -7
  49. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  50. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  51. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  52. package/templates/.agents/dashboard/modules/traceability/src/contracts.ts +11 -0
  53. package/templates/.agents/dashboard/modules/traceability/src/react/ReleaseDeliveryPanel.tsx +60 -0
  54. package/templates/.agents/dashboard/modules/traceability/src/react/TaskTracePanel.tsx +9 -57
  55. package/templates/.agents/dashboard/modules/traceability/src/react/release-delivery-panel.css +26 -0
  56. package/templates/.agents/dashboard/modules/traceability/src/react/trace-date-format.ts +33 -0
  57. package/templates/.agents/dashboard/modules/traceability/src/react/trace-stage-labels.ts +28 -0
  58. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  59. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  60. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  61. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +236 -235
  62. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +81 -81
  63. package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
  64. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +236 -235
  65. package/templates/.agents/dashboard/packages/local-runtime/src/server-release-receipt.ts +71 -0
  66. package/templates/.agents/dashboard/packages/local-runtime/src/server-trace-release-delivery.ts +120 -0
  67. package/templates/.agents/dashboard/packages/local-runtime/src/server-trace-routes.ts +5 -4
  68. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  69. package/templates/.agents/dashboard/stack-dependencies.json +3 -3
  70. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  71. package/templates/.agents/design/.zaip-managed.json +4 -4
  72. package/templates/.agents/design/apps/catalog/package.json +1 -1
  73. package/templates/.agents/design/design-system-maker/build.json +94 -79
  74. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  75. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  76. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  77. package/templates/.agents/requirements/comparative-audit.md +1 -1
  78. package/templates/.agents/requirements/context-engine.md +1 -1
  79. package/templates/.agents/requirements/cost-observability.md +1 -1
  80. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  81. package/templates/.agents/requirements/data-export.md +1 -1
  82. package/templates/.agents/requirements/design-system.md +1 -1
  83. package/templates/.agents/requirements/execution-engine.md +1 -1
  84. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  85. package/templates/.agents/requirements/landing-page-forms.md +1 -1
  86. package/templates/.agents/requirements/model-orchestration.md +1 -1
  87. package/templates/.agents/requirements/public-distribution.md +1 -1
  88. package/templates/.agents/requirements/site-performance.md +1 -1
  89. package/templates/.agents/requirements/software-architecture.md +1 -1
  90. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  91. package/templates/.agents/requirements/work-lifecycle.md +1 -1
  92. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  93. package/templates/.agents/runtime/VERSION +1 -1
  94. package/templates/.agents/runtime/bin/historical-catalog-b6b6516200bdb412c92063e887ccef329d7c5193b5610cba5346e97c71301394.mjs +318 -0
  95. package/templates/.agents/runtime/bin/zaip.mjs +149 -109
  96. package/templates/.agents/runtime/checksums.sha256 +6 -5
  97. package/templates/.agents/runtime/manifest.json +2 -1
  98. package/templates/.agents/runtime/provenance.json +4 -4
  99. package/templates/.agents/runtime/sbom.cdx.json +1 -1
  100. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-contract.mjs +49 -70
  101. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-idempotent-intent.test.mjs +39 -0
  102. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deployment-next-release.mjs +57 -0
  103. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deployment-request.mjs +15 -0
  104. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-intent.mjs +4 -1
  105. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/{chunk-A3ZCURGS.mjs → chunk-CJ5ZQF6M.mjs} +6 -6
  106. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/{chunk-ZOGCYGYB.mjs → chunk-EQTZ3Y7R.mjs} +1 -1
  107. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-FMNUSV2P.mjs +139 -0
  108. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/{chunk-7SBOEN6U.mjs → chunk-LWS3QVJO.mjs} +2 -2
  109. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/lifecycle-records.mjs +1 -1
  110. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/manifest.json +14 -13
  111. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/native-authority.mjs +1 -1
  112. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/proof.mjs +1 -1
  113. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/run-records.mjs +1 -1
  114. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-schema.mjs +1 -1
  115. package/templates/.agents/zaip-aios/VERSION +1 -1
  116. package/templates/template-manifest.json +141 -92
  117. package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-Boz50W9b.js +0 -1
  118. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-NJOFXS7P.mjs +0 -137
@@ -1,11 +1,11 @@
1
1
  import {createRequire as __zaipCreateRequire} from "node:module";const require=__zaipCreateRequire(import.meta.url);
2
- import{a as Te}from"./chunk-45Z34LBQ.mjs";import{Jd as e}from"./chunk-MSCWMPU5.mjs";import{d as Pe}from"./chunk-YEUY7TMM.mjs";import{appendFile as $t,link as Ue,lstat as We,mkdir as C,open as qe,readdir as Ve,readFile as jt,realpath as Nt,rename as de,rm as Ke,stat as Lt,unlink as zt,writeFile as le}from"node:fs/promises";import{dirname as x,isAbsolute as He,posix as Ft,relative as j,resolve as N,sep as Be,win32 as Ut}from"node:path";import{createHash as Le}from"node:crypto";import{createReadStream as kt}from"node:fs";import{lstat as D,readFile as St,realpath as At}from"node:fs/promises";import{isAbsolute as Ct,relative as rr,resolve as se}from"node:path";import{createHash as Et}from"node:crypto";import{lstat as P,readFile as Me,realpath as Rt}from"node:fs/promises";import{resolve as T}from"node:path";var re=t=>Et("sha256").update(t).digest("hex"),$e=(t,n)=>process.platform==="win32"?t.toLowerCase()===n.toLowerCase():t===n;async function ie(t,n){if(/[\\:]/.test(n)||n.split("/").some(i=>!i||i==="."||i===".."))throw new Error("Invalid historical archive path");let r=T(t);for(let i of["",...n.split("/")]){i&&(r=T(r,i));let o=await P(r);if(o.isSymbolicLink()||!$e(await Rt(r),r)||o.isFile()&&o.nlink!==1)throw new Error("Historical archive refuses physical aliases")}return r}async function De(t,n,r){let i=await ie(t,n),o=await P(i);if(!o.isFile()||o.size>r)throw new Error("Invalid historical archive metadata");return JSON.parse(await Me(i,"utf8"))}async function je(t,n){let r=T(t,n);try{return await P(r),r}catch(g){if(g.code!=="ENOENT")throw g}let i;try{i=await De(t,".agents/private/state/local-legacy/index.json",8*1024*1024)}catch(g){if(g.code==="ENOENT")return r;throw g}let{id:o,...a}=i;if(i.schema_version!==1||!$e(i.root,T(t))||!Array.isArray(i.rows)||i.rows.length>2e4||o!==re(JSON.stringify(a)))throw new Error("Historical archive index changed");let s=await De(t,".agents/state/storage-migrations/local-archive.json",4096);if(s.id!==o||s.manifest_sha256!==re(JSON.stringify(i)))throw new Error("Historical archive lacks its verified move receipt");let c=n.split("/").slice(0,2).join("/"),d=i.rows.filter(g=>g.source===c);if(!d.length)return r;if(d.length!==1)throw new Error("Ambiguous historical archive prefix");let l=d[0];if(!l)throw new Error("Missing historical archive row");let p=c.slice(7);if(![`.agents/private/state/${p}`,`.agents/private/state/local-legacy/${l.kind==="file"?"files":"directories"}/${p}`].includes(l.destination)||!["file","directory"].includes(l.kind))throw new Error("Historical archive destination differs");let v=await ie(t,l.destination),m=await P(v);if(m.dev!==l.dev||m.ino!==l.ino)throw new Error("Historical archive identity changed");let ne=`${l.destination}${n.slice(c.length)}`,f;try{f=await ie(t,ne)}catch(g){if(g.code==="ENOENT")return r;throw g}if(l.kind==="file"&&re(await Me(f))!==l.sha256)throw new Error("Historical archived file changed");return f}var oe=t=>Le("sha256").update(t).digest("hex"),S=e.string().regex(/^[a-f0-9]{64}$/),Ot=e.object({schema_version:e.literal(1),source:e.string(),destination:e.string(),sha256:S,transaction:S}).strict(),It=e.object({source:e.string(),destination:e.string(),privacy:e.enum(["canonical","private"]),sha256:S,bytes:e.number().int().nonnegative()}).strict(),Pt=e.object({schema_version:e.literal(1),family:e.string(),rows:e.array(It).max(5e4),id:S,batch:e.object({kind:e.literal("explicit-sources"),index:e.number().int().nonnegative(),batch_size:e.number().int().positive().max(5e3),previous_id:S.nullable()}).strict().optional()}).strict(),Tt=(t,n)=>process.platform==="win32"?t.toLowerCase()===n.toLowerCase():t===n;function ze(t){if(!t||Ct(t)||/[\\:]/.test(t)||[...t].some(n=>n.charCodeAt(0)<32)||t.split("/").some(n=>!n||n==="."||n===".."))throw new Error("Invalid historical operational locator");return t}async function M(t,n){let r=se(t),i=ze(n).split("/");for(let o=-1;o<i.length;o++){o>=0&&(r=se(r,i[o]??""));let a=await D(r);if(a.isSymbolicLink()||!Tt(await At(r),r)||(o===i.length-1?!a.isFile()||a.nlink!==1:!a.isDirectory()))throw new Error("Historical alias refuses links and nonregular files")}return r}async function ae(t,n,r){let i=await M(t,n);if((await D(i)).size>r)throw new Error("Oversized historical alias metadata");return JSON.parse(await St(i,"utf8"))}async function Ne(t,n){let r=await M(t,n),i=await D(r),o=Le("sha256");for await(let s of kt(r))o.update(s);let a=await D(await M(t,n));if(i.dev!==a.dev||i.ino!==a.ino||i.size!==a.size||i.mtimeMs!==a.mtimeMs)throw new Error("Historical artifact changed during verification");return o.digest("hex")}async function ce(t,n){ze(n);let r=se(t,n);if(!n.startsWith(".local/"))return r;let i;try{i=await ae(t,`.agents/private/state/storage-migrations/aliases/${oe(n)}.json`,4096)}catch(m){if(m.code==="ENOENT")return je(t,n);throw m}let o=Ot.parse(i),a=n.startsWith(".local/autonomous/astra-diagnostic-quota/")?`.agents/state/${n.slice(7)}`:`.agents/private/state/${n.slice(7)}`;if(o.source!==n||o.destination!==a)throw new Error("Historical alias destination differs");let s=await ae(t,`.agents/private/state/storage-migrations/${o.transaction}.json`,32*1024*1024),c=Pt.parse(s),{id:d,...l}=s;if(d!==o.transaction||d!==oe(JSON.stringify(l))||!c.rows.some(m=>m.source===n&&m.destination===a&&m.sha256===o.sha256))throw new Error("Historical alias is outside its verified migration plan");let p=await ae(t,`.agents/state/storage-migrations/${d}.json`,16384);if(!p||typeof p!="object"||!("manifest_sha256"in p)||p.manifest_sha256!==oe(JSON.stringify(s)))throw new Error("Historical alias lacks its canonical migration manifest");let w=`.agents/private/state/storage-migrations/artifacts/${o.sha256}`,v=await M(t,w);if(await Ne(t,w)!==o.sha256)throw new Error("Historical artifact byte integrity differs");try{if(await Ne(t,n)!==o.sha256)throw new Error("Historical legacy artifact changed after migration")}catch(m){if(m.code!=="ENOENT")throw m}return v}import{randomBytes as Dt}from"node:crypto";var $=class{now(){return new Date}};var Fe="23456789ABCDEFGHJKLMNPQRSTUVWXYZ";function Mt(t){let n=t.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/([a-z\d])([A-Z])/g,"$1-$2").toUpperCase().replace(/[^A-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,48).replace(/-+$/g,"");if(n.length===0)throw new TypeError("shortName must contain at least one letter or number");return n}function A(t=10){if(!Number.isSafeInteger(t)||t<2||t>16)throw new RangeError("collision code length must be between 2 and 16");let n=Dt(t);return Array.from(n,r=>Fe[r%Fe.length]).join("")}function dr(t,n,r={}){let i=r.clock??new $,o=r.timeZone??"America/Sao_Paulo",a=(r.collisionCode??A()).toUpperCase();if(!/^[A-Z2-9]{2,16}$/.test(a))throw new TypeError("collisionCode must contain 2-16 unambiguous uppercase characters");let s=new Intl.DateTimeFormat("en-CA",{timeZone:o,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23"}).formatToParts(i.now()),c=d=>{let l=s.find(p=>p.type===d)?.value;if(l===void 0)throw new Error(`Unable to format ID date part: ${d}`);return l};return[t,c("year"),c("month"),c("day"),c("hour"),c("minute"),Mt(n),a].join("-")}var _=class extends Error{name="WorkspacePathError"},Ze=class{root;appendQueues=new Map;constructor(n){this.root=N(n)}resolve(n){if(Wt(n)||qt(n))throw new _("Expected a path relative to the workspace root");let r=N(this.root,n),i=j(this.root,r);if(i===".."||i.startsWith(`..${Be}`)||He(i))throw new _(`Path escapes workspace root: ${n}`);return r}async exists(n){let r=this.resolve(n);if(await this.rootIsMissing())return!1;try{return n.replaceAll("\\","/").startsWith(".local/")&&(r=await ce(this.root,n.replaceAll("\\","/"))),await this.assertPhysicalContainment(r),await Lt(r),!0}catch(i){if(b(i)&&i.code==="ENOENT")return!1;throw i}}async readText(n){return(await this.readBytes(n)).toString("utf8")}async readBytes(n){let r=this.resolve(n);return n.replaceAll("\\","/").startsWith(".local/")&&(r=await ce(this.root,n.replaceAll("\\","/"))),await this.assertPhysicalContainment(r),jt(r)}async readFirstLine(n){let r=this.resolve(n);await this.assertPhysicalContainment(r);let i=await qe(r,"r");try{let o=[];for(let a=0;a<65536;a+=4096){let s=Buffer.allocUnsafe(4096),{bytesRead:c}=await i.read(s,0,s.length,a),d=s.subarray(0,c),l=d.indexOf(10);if(o.push(l<0?d:d.subarray(0,l)),l>=0||c<s.length)return Buffer.concat(o).toString("utf8")}return null}finally{await i.close()}}async readTextFrom(n,r){if(!Number.isSafeInteger(r)||r<0)throw new RangeError("Expected a non-negative byte offset");let i=this.resolve(n);await this.assertPhysicalContainment(i);let o=await qe(i,"r");try{let a=await o.stat(),s=Math.min(r,a.size),c=Buffer.allocUnsafe(a.size-s);return c.byteLength>0&&await o.read(c,0,c.byteLength,s),{content:c.toString("utf8"),nextOffset:a.size}}finally{await o.close()}}async listFiles(n,r="",i=!0){let o=this.resolve(n);return await this.rootIsMissing()?[]:(await this.assertPhysicalContainment(o),await this.exists(n)?(await Ve(o,{recursive:i,withFileTypes:!0})).filter(s=>s.isFile()).map(s=>j(this.root,N(s.parentPath,s.name)).replace(/\\/g,"/")).filter(s=>s.endsWith(r)).sort():[])}async listDirectories(n){let r=this.resolve(n);return await this.rootIsMissing()?[]:(await this.assertPhysicalContainment(r),await this.exists(n)?(await Ve(r,{withFileTypes:!0})).filter(o=>o.isDirectory()).map(o=>j(this.root,N(r,o.name)).replace(/\\/g,"/")).sort():[])}async writeTextAtomic(n,r){let i=this.resolve(n),o=`${i}.${A(6)}.tmp`;await this.assertPhysicalContainment(i),await C(x(i),{recursive:!0}),await this.assertPhysicalContainment(i);try{await le(o,r,{encoding:"utf8",flag:"wx"}),await Vt(o,i)}finally{await Ke(o,{force:!0})}}async appendText(n,r){let i=this.resolve(n),a=(this.appendQueues.get(i)??Promise.resolve()).catch(()=>{}).then(async()=>{await this.assertPhysicalContainment(i),await C(x(i),{recursive:!0}),await this.assertPhysicalContainment(i),await $t(i,r,{encoding:"utf8",flush:!0})});this.appendQueues.set(i,a);try{await a}finally{this.appendQueues.get(i)===a&&this.appendQueues.delete(i)}}async writeTextExclusive(n,r){let i=this.resolve(n);await this.assertPhysicalContainment(i),await C(x(i),{recursive:!0}),await this.assertPhysicalContainment(i),await le(i,r,{encoding:"utf8",flag:"wx",flush:!0})}async writeTextAtomicExclusive(n,r){let i=this.resolve(n),o=`${i}.${A(6)}.tmp`;await this.assertPhysicalContainment(i),await C(x(i),{recursive:!0}),await this.assertPhysicalContainment(i);try{await le(o,r,{encoding:"utf8",flag:"wx",flush:!0}),await Ue(o,i)}finally{await zt(o).catch(a=>{if(!b(a)||a.code!=="ENOENT")throw a})}}async removeFile(n){let r=this.resolve(n);await this.assertPhysicalContainment(r),await Ke(r,{force:!0})}async removeFileIfContentMatches(n,r){let i=`${n}.${A(16)}.compare-delete`;try{await this.moveFileAtomic(n,i)}catch(c){if(b(c)&&c.code==="ENOENT")return!1;throw c}if(await this.readText(i)===r)return await this.removeFile(i),!0;let a=this.resolve(i),s=this.resolve(n);try{await Ue(a,s),await this.removeFile(i)}catch(c){throw b(c)&&c.code==="EEXIST"?new _(`Conditional delete observed a replacement; captured file retained at ${i}`):c}return!1}async collectCompareDeleteTombstones(n){let r=[];for(let i of await this.listFiles(n)){let o=/^(.*)\.[A-Z0-9]{16}\.compare-delete$/.exec(i);if(o===null)continue;let a=o[1];a!==void 0&&await this.exists(a)&&(await this.removeFile(i),r.push(i))}return r}async moveFileAtomic(n,r){let i=this.resolve(n),o=this.resolve(r);await this.assertPhysicalContainment(i),await this.assertPhysicalContainment(o),await C(x(o),{recursive:!0}),await this.assertPhysicalContainment(o),await de(i,o)}async rootIsMissing(){try{return await We(this.root),!1}catch(n){if(b(n)&&n.code==="ENOENT")return!0;throw n}}async assertPhysicalContainment(n){let r=await Ye(this.root),i=n,o=null,a=0;for(;;)try{let s=await Ye(i),c=j(r,s);if(c===".."||c.startsWith(`..${Be}`)||He(c)){if(await We(i),process.platform==="win32"&&a<4){a+=1,await ue(25*a);continue}throw new _(`Physical path escapes workspace root: ${n}`)}return}catch(s){if(!b(s)||s.code!=="ENOENT")throw s;if(o=s,i===this.root)throw new _(`Cannot resolve workspace root for: ${n}`,{cause:o});let c=x(i);if(c===i)throw new _(`Cannot resolve workspace ancestor for: ${n}`,{cause:o});i=c,a=0}}};function Wt(t){return Ft.isAbsolute(t)||Ut.isAbsolute(t)||/^[A-Za-z]:/.test(t)}function qt(t){return t.split(/[\\/]+/).some(n=>n==="..")}function b(t){return t instanceof Error&&"code"in t}async function Vt(t,n){if(process.platform!=="win32"){await de(t,n);return}let r=[25,50,75,100,150,225,300,400,500];for(let i=0;i<=r.length;i+=1)try{await de(t,n);return}catch(o){if(!Ge(o)||i===r.length)throw o;await ue(r[i])}}async function Ye(t){for(let n=0;;n+=1)try{return await Nt(t)}catch(r){let i=Ge(r)||b(r)&&r.code==="EBADF";if(process.platform!=="win32"||!i||n===4)throw r;await ue(25*(n+1))}}function Ge(t){return b(t)&&["EPERM","EBUSY","EACCES"].includes(t.code??"")}async function ue(t){await new Promise(n=>setTimeout(n,t))}var z=Pe(Te(),1),L="---",Kt=10,E=class extends Error{name="MarkdownContractError"};function Ht(t,n){let r=t.replace(/^\uFEFF/,"").replace(/\r\n/g,`
3
- `);if(!r.startsWith(`${L}
4
- `))throw new E("Markdown document must begin with YAML frontmatter");let i=r.indexOf(`
2
+ import{a as Te}from"./chunk-45Z34LBQ.mjs";import{Jd as e}from"./chunk-MSCWMPU5.mjs";import{d as Ie}from"./chunk-YEUY7TMM.mjs";import{appendFile as $t,link as Fe,lstat as We,mkdir as C,open as qe,readdir as Ve,readFile as jt,realpath as Nt,rename as de,rm as Ke,stat as Lt,unlink as zt,writeFile as le}from"node:fs/promises";import{dirname as x,isAbsolute as He,posix as Ut,relative as j,resolve as N,sep as Be,win32 as Ft}from"node:path";import{createHash as Le}from"node:crypto";import{createReadStream as kt}from"node:fs";import{lstat as D,readFile as St,realpath as At}from"node:fs/promises";import{isAbsolute as Ct,relative as ii,resolve as se}from"node:path";import{createHash as Et}from"node:crypto";import{lstat as I,readFile as Me,realpath as Rt}from"node:fs/promises";import{resolve as T}from"node:path";var ie=t=>Et("sha256").update(t).digest("hex"),$e=(t,n)=>process.platform==="win32"?t.toLowerCase()===n.toLowerCase():t===n;async function re(t,n){if(/[\\:]/.test(n)||n.split("/").some(r=>!r||r==="."||r===".."))throw new Error("Invalid historical archive path");let i=T(t);for(let r of["",...n.split("/")]){r&&(i=T(i,r));let o=await I(i);if(o.isSymbolicLink()||!$e(await Rt(i),i)||o.isFile()&&o.nlink!==1)throw new Error("Historical archive refuses physical aliases")}return i}async function De(t,n,i){let r=await re(t,n),o=await I(r);if(!o.isFile()||o.size>i)throw new Error("Invalid historical archive metadata");return JSON.parse(await Me(r,"utf8"))}async function je(t,n){let i=T(t,n);try{return await I(i),i}catch(g){if(g.code!=="ENOENT")throw g}let r;try{r=await De(t,".agents/private/state/local-legacy/index.json",8*1024*1024)}catch(g){if(g.code==="ENOENT")return i;throw g}let{id:o,...a}=r;if(r.schema_version!==1||!$e(r.root,T(t))||!Array.isArray(r.rows)||r.rows.length>2e4||o!==ie(JSON.stringify(a)))throw new Error("Historical archive index changed");let s=await De(t,".agents/state/storage-migrations/local-archive.json",4096);if(s.id!==o||s.manifest_sha256!==ie(JSON.stringify(r)))throw new Error("Historical archive lacks its verified move receipt");let c=n.split("/").slice(0,2).join("/"),d=r.rows.filter(g=>g.source===c);if(!d.length)return i;if(d.length!==1)throw new Error("Ambiguous historical archive prefix");let l=d[0];if(!l)throw new Error("Missing historical archive row");let p=c.slice(7);if(![`.agents/private/state/${p}`,`.agents/private/state/local-legacy/${l.kind==="file"?"files":"directories"}/${p}`].includes(l.destination)||!["file","directory"].includes(l.kind))throw new Error("Historical archive destination differs");let v=await re(t,l.destination),m=await I(v);if(m.dev!==l.dev||m.ino!==l.ino)throw new Error("Historical archive identity changed");let ne=`${l.destination}${n.slice(c.length)}`,f;try{f=await re(t,ne)}catch(g){if(g.code==="ENOENT")return i;throw g}if(l.kind==="file"&&ie(await Me(f))!==l.sha256)throw new Error("Historical archived file changed");return f}var oe=t=>Le("sha256").update(t).digest("hex"),S=e.string().regex(/^[a-f0-9]{64}$/),Pt=e.object({schema_version:e.literal(1),source:e.string(),destination:e.string(),sha256:S,transaction:S}).strict(),Ot=e.object({source:e.string(),destination:e.string(),privacy:e.enum(["canonical","private"]),sha256:S,bytes:e.number().int().nonnegative()}).strict(),It=e.object({schema_version:e.literal(1),family:e.string(),rows:e.array(Ot).max(5e4),id:S,batch:e.object({kind:e.literal("explicit-sources"),index:e.number().int().nonnegative(),batch_size:e.number().int().positive().max(5e3),previous_id:S.nullable()}).strict().optional()}).strict(),Tt=(t,n)=>process.platform==="win32"?t.toLowerCase()===n.toLowerCase():t===n;function ze(t){if(!t||Ct(t)||/[\\:]/.test(t)||[...t].some(n=>n.charCodeAt(0)<32)||t.split("/").some(n=>!n||n==="."||n===".."))throw new Error("Invalid historical operational locator");return t}async function M(t,n){let i=se(t),r=ze(n).split("/");for(let o=-1;o<r.length;o++){o>=0&&(i=se(i,r[o]??""));let a=await D(i);if(a.isSymbolicLink()||!Tt(await At(i),i)||(o===r.length-1?!a.isFile()||a.nlink!==1:!a.isDirectory()))throw new Error("Historical alias refuses links and nonregular files")}return i}async function ae(t,n,i){let r=await M(t,n);if((await D(r)).size>i)throw new Error("Oversized historical alias metadata");return JSON.parse(await St(r,"utf8"))}async function Ne(t,n){let i=await M(t,n),r=await D(i),o=Le("sha256");for await(let s of kt(i))o.update(s);let a=await D(await M(t,n));if(r.dev!==a.dev||r.ino!==a.ino||r.size!==a.size||r.mtimeMs!==a.mtimeMs)throw new Error("Historical artifact changed during verification");return o.digest("hex")}async function ce(t,n){ze(n);let i=se(t,n);if(!n.startsWith(".local/"))return i;let r;try{r=await ae(t,`.agents/private/state/storage-migrations/aliases/${oe(n)}.json`,4096)}catch(m){if(m.code==="ENOENT")return je(t,n);throw m}let o=Pt.parse(r),a=n.startsWith(".local/autonomous/astra-diagnostic-quota/")?`.agents/state/${n.slice(7)}`:`.agents/private/state/${n.slice(7)}`;if(o.source!==n||o.destination!==a)throw new Error("Historical alias destination differs");let s=await ae(t,`.agents/private/state/storage-migrations/${o.transaction}.json`,32*1024*1024),c=It.parse(s),{id:d,...l}=s;if(d!==o.transaction||d!==oe(JSON.stringify(l))||!c.rows.some(m=>m.source===n&&m.destination===a&&m.sha256===o.sha256))throw new Error("Historical alias is outside its verified migration plan");let p=await ae(t,`.agents/state/storage-migrations/${d}.json`,16384);if(!p||typeof p!="object"||!("manifest_sha256"in p)||p.manifest_sha256!==oe(JSON.stringify(s)))throw new Error("Historical alias lacks its canonical migration manifest");let w=`.agents/private/state/storage-migrations/artifacts/${o.sha256}`,v=await M(t,w);if(await Ne(t,w)!==o.sha256)throw new Error("Historical artifact byte integrity differs");try{if(await Ne(t,n)!==o.sha256)throw new Error("Historical legacy artifact changed after migration")}catch(m){if(m.code!=="ENOENT")throw m}return v}import{randomBytes as Dt}from"node:crypto";var $=class{now(){return new Date}};var Ue="23456789ABCDEFGHJKLMNPQRSTUVWXYZ";function Mt(t){let n=t.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/([a-z\d])([A-Z])/g,"$1-$2").toUpperCase().replace(/[^A-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,48).replace(/-+$/g,"");if(n.length===0)throw new TypeError("shortName must contain at least one letter or number");return n}function A(t=10){if(!Number.isSafeInteger(t)||t<2||t>16)throw new RangeError("collision code length must be between 2 and 16");let n=Dt(t);return Array.from(n,i=>Ue[i%Ue.length]).join("")}function di(t,n,i={}){let r=i.clock??new $,o=i.timeZone??"America/Sao_Paulo",a=(i.collisionCode??A()).toUpperCase();if(!/^[A-Z2-9]{2,16}$/.test(a))throw new TypeError("collisionCode must contain 2-16 unambiguous uppercase characters");let s=new Intl.DateTimeFormat("en-CA",{timeZone:o,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23"}).formatToParts(r.now()),c=d=>{let l=s.find(p=>p.type===d)?.value;if(l===void 0)throw new Error(`Unable to format ID date part: ${d}`);return l};return[t,c("year"),c("month"),c("day"),c("hour"),c("minute"),Mt(n),a].join("-")}var _=class extends Error{name="WorkspacePathError"},Ze=class{root;appendQueues=new Map;constructor(n){this.root=N(n)}resolve(n){if(Wt(n)||qt(n))throw new _("Expected a path relative to the workspace root");let i=N(this.root,n),r=j(this.root,i);if(r===".."||r.startsWith(`..${Be}`)||He(r))throw new _(`Path escapes workspace root: ${n}`);return i}async exists(n){let i=this.resolve(n);if(await this.rootIsMissing())return!1;try{return n.replaceAll("\\","/").startsWith(".local/")&&(i=await ce(this.root,n.replaceAll("\\","/"))),await this.assertPhysicalContainment(i),await Lt(i),!0}catch(r){if(b(r)&&r.code==="ENOENT")return!1;throw r}}async readText(n){return(await this.readBytes(n)).toString("utf8")}async readBytes(n){let i=this.resolve(n);return n.replaceAll("\\","/").startsWith(".local/")&&(i=await ce(this.root,n.replaceAll("\\","/"))),await this.assertPhysicalContainment(i),jt(i)}async readFirstLine(n){let i=this.resolve(n);await this.assertPhysicalContainment(i);let r=await qe(i,"r");try{let o=[];for(let a=0;a<65536;a+=4096){let s=Buffer.allocUnsafe(4096),{bytesRead:c}=await r.read(s,0,s.length,a),d=s.subarray(0,c),l=d.indexOf(10);if(o.push(l<0?d:d.subarray(0,l)),l>=0||c<s.length)return Buffer.concat(o).toString("utf8")}return null}finally{await r.close()}}async readTextFrom(n,i){if(!Number.isSafeInteger(i)||i<0)throw new RangeError("Expected a non-negative byte offset");let r=this.resolve(n);await this.assertPhysicalContainment(r);let o=await qe(r,"r");try{let a=await o.stat(),s=Math.min(i,a.size),c=Buffer.allocUnsafe(a.size-s);return c.byteLength>0&&await o.read(c,0,c.byteLength,s),{content:c.toString("utf8"),nextOffset:a.size}}finally{await o.close()}}async listFiles(n,i="",r=!0){let o=this.resolve(n);return await this.rootIsMissing()?[]:(await this.assertPhysicalContainment(o),await this.exists(n)?(await Ve(o,{recursive:r,withFileTypes:!0})).filter(s=>s.isFile()).map(s=>j(this.root,N(s.parentPath,s.name)).replace(/\\/g,"/")).filter(s=>s.endsWith(i)).sort():[])}async listDirectories(n){let i=this.resolve(n);return await this.rootIsMissing()?[]:(await this.assertPhysicalContainment(i),await this.exists(n)?(await Ve(i,{withFileTypes:!0})).filter(o=>o.isDirectory()).map(o=>j(this.root,N(i,o.name)).replace(/\\/g,"/")).sort():[])}async writeTextAtomic(n,i){let r=this.resolve(n),o=`${r}.${A(6)}.tmp`;await this.assertPhysicalContainment(r),await C(x(r),{recursive:!0}),await this.assertPhysicalContainment(r);try{await le(o,i,{encoding:"utf8",flag:"wx"}),await Vt(o,r)}finally{await Ke(o,{force:!0})}}async appendText(n,i){let r=this.resolve(n),a=(this.appendQueues.get(r)??Promise.resolve()).catch(()=>{}).then(async()=>{await this.assertPhysicalContainment(r),await C(x(r),{recursive:!0}),await this.assertPhysicalContainment(r),await $t(r,i,{encoding:"utf8",flush:!0})});this.appendQueues.set(r,a);try{await a}finally{this.appendQueues.get(r)===a&&this.appendQueues.delete(r)}}async writeTextExclusive(n,i){let r=this.resolve(n);await this.assertPhysicalContainment(r),await C(x(r),{recursive:!0}),await this.assertPhysicalContainment(r),await le(r,i,{encoding:"utf8",flag:"wx",flush:!0})}async writeTextAtomicExclusive(n,i){let r=this.resolve(n),o=`${r}.${A(6)}.tmp`;await this.assertPhysicalContainment(r),await C(x(r),{recursive:!0}),await this.assertPhysicalContainment(r);try{await le(o,i,{encoding:"utf8",flag:"wx",flush:!0}),await Fe(o,r)}finally{await zt(o).catch(a=>{if(!b(a)||a.code!=="ENOENT")throw a})}}async removeFile(n){let i=this.resolve(n);await this.assertPhysicalContainment(i),await Ke(i,{force:!0})}async removeFileIfContentMatches(n,i){let r=`${n}.${A(16)}.compare-delete`;try{await this.moveFileAtomic(n,r)}catch(c){if(b(c)&&c.code==="ENOENT")return!1;throw c}if(await this.readText(r)===i)return await this.removeFile(r),!0;let a=this.resolve(r),s=this.resolve(n);try{await Fe(a,s),await this.removeFile(r)}catch(c){throw b(c)&&c.code==="EEXIST"?new _(`Conditional delete observed a replacement; captured file retained at ${r}`):c}return!1}async collectCompareDeleteTombstones(n){let i=[];for(let r of await this.listFiles(n)){let o=/^(.*)\.[A-Z0-9]{16}\.compare-delete$/.exec(r);if(o===null)continue;let a=o[1];a!==void 0&&await this.exists(a)&&(await this.removeFile(r),i.push(r))}return i}async moveFileAtomic(n,i){let r=this.resolve(n),o=this.resolve(i);await this.assertPhysicalContainment(r),await this.assertPhysicalContainment(o),await C(x(o),{recursive:!0}),await this.assertPhysicalContainment(o),await de(r,o)}async rootIsMissing(){try{return await We(this.root),!1}catch(n){if(b(n)&&n.code==="ENOENT")return!0;throw n}}async assertPhysicalContainment(n){let i=await Ye(this.root),r=n,o=null,a=0;for(;;)try{let s=await Ye(r),c=j(i,s);if(c===".."||c.startsWith(`..${Be}`)||He(c)){if(await We(r),process.platform==="win32"&&a<4){a+=1,await ue(25*a);continue}throw new _(`Physical path escapes workspace root: ${n}`)}return}catch(s){if(!b(s)||s.code!=="ENOENT")throw s;if(o=s,r===this.root)throw new _(`Cannot resolve workspace root for: ${n}`,{cause:o});let c=x(r);if(c===r)throw new _(`Cannot resolve workspace ancestor for: ${n}`,{cause:o});r=c,a=0}}};function Wt(t){return Ut.isAbsolute(t)||Ft.isAbsolute(t)||/^[A-Za-z]:/.test(t)}function qt(t){return t.split(/[\\/]+/).some(n=>n==="..")}function b(t){return t instanceof Error&&"code"in t}async function Vt(t,n){if(process.platform!=="win32"){await de(t,n);return}let i=[25,50,75,100,150,225,300,400,500];for(let r=0;r<=i.length;r+=1)try{await de(t,n);return}catch(o){if(!Ge(o)||r===i.length)throw o;await ue(i[r])}}async function Ye(t){for(let n=0;;n+=1)try{return await Nt(t)}catch(i){let r=Ge(i)||b(i)&&i.code==="EBADF";if(process.platform!=="win32"||!r||n===4)throw i;await ue(25*(n+1))}}function Ge(t){return b(t)&&["EPERM","EBUSY","EACCES"].includes(t.code??"")}async function ue(t){await new Promise(n=>setTimeout(n,t))}var z=Ie(Te(),1),L="---",Kt=10,E=class extends Error{name="MarkdownContractError"};function Ht(t,n){let i=t.replace(/^\uFEFF/,"").replace(/\r\n/g,`
3
+ `);if(!i.startsWith(`${L}
4
+ `))throw new E("Markdown document must begin with YAML frontmatter");let r=i.indexOf(`
5
5
  ${L}
6
- `,4);if(i===-1)throw new E("Markdown frontmatter is not closed");let o=r.slice(4,i),a=(0,z.parseDocument)(o,{strict:!0,uniqueKeys:!0});if(a.errors.length>0)throw new E(`Invalid YAML frontmatter: ${a.errors.map(c=>c.message).join("; ")}`);let s=n.safeParse(a.toJS({maxAliasCount:Kt}));if(!s.success)throw new E(`Invalid metadata: ${s.error.message}`);return{metadata:s.data,body:r.slice(i+5).replace(/^\n/,"").replace(/\s+$/g,"")}}function hr(t){let n=(0,z.stringify)(t.metadata,{lineWidth:0,aliasDuplicateObjects:!1}).trimEnd(),r=t.body.trim();return`${L}
6
+ `,4);if(r===-1)throw new E("Markdown frontmatter is not closed");let o=i.slice(4,r),a=(0,z.parseDocument)(o,{strict:!0,uniqueKeys:!0});if(a.errors.length>0)throw new E(`Invalid YAML frontmatter: ${a.errors.map(c=>c.message).join("; ")}`);let s=n.safeParse(a.toJS({maxAliasCount:Kt}));if(!s.success)throw new E(`Invalid metadata: ${s.error.message}`);return{metadata:s.data,body:i.slice(r+5).replace(/^\n/,"").replace(/\s+$/g,"")}}function hi(t){let n=(0,z.stringify)(t.metadata,{lineWidth:0,aliasDuplicateObjects:!1}).trimEnd(),i=t.body.trim();return`${L}
7
7
  ${n}
8
8
  ${L}
9
9
 
10
- ${r}
11
- `}var Bt="autonomy-v1",pe=e.enum(["essential","balanced","persistent"]),me=e.object({version:e.literal(1),preset:pe}).strict(),Zt=Object.freeze({essential:Object.freeze({label:"Essencial",attempts:4,replans:1,automatic_astra:!1}),balanced:Object.freeze({label:"Equilibrado",attempts:10,replans:3,automatic_astra:!0}),persistent:Object.freeze({label:"Persistente \u2014 ilimitado",attempts:null,replans:null,automatic_astra:!0})});function Je(t){let n=me.parse(t??{version:1,preset:"balanced"});return Object.freeze({version:Bt,preset:n.preset,...Zt[n.preset],repairs_per_replan:3})}function fe(t){return t==="gpt-5.6-luna"?"gpt-6-luna":t==="gpt-5.6-terra"||t==="gpt-5.6-sol"||t==="gpt-6-sol"?"gpt-6.1-sol":t}function Xe(t){if(t===null||typeof t!="object"||Array.isArray(t))return t;let n=t,r=n.model_orchestration,i=n.execution,o={...n};if(r!==null&&typeof r=="object"&&!Array.isArray(r)){let a=r,s=a.allowed_models;o.model_orchestration={...a,default_model:fe(a.default_model),...Array.isArray(s)?{allowed_models:[...new Set(s.map(fe))]}:{}}}if(i!==null&&typeof i=="object"&&!Array.isArray(i)){let a=i,s=a.autonomous;s!==null&&typeof s=="object"&&!Array.isArray(s)&&(o.execution={...a,autonomous:{...s,model:fe(s.model)}})}return o}var Qe=e.object({model:e.string().min(1).optional(),reasoning_effort:e.string().min(1).optional(),velocity:e.string().min(1).optional()}).strict().refine(t=>t.model!==void 0||t.reasoning_effort!==void 0||t.velocity!==void 0,"Model selection override must define at least one field");var Yt=["gpt-6-luna","gpt-6.1-sol","gpt-6-astra"],Gt=["low","medium","high","xhigh"];var et="task-risk-v1",Jt=e.enum(Yt),Sr=e.enum(Gt),Xt=e.literal("standard"),Qt=e.enum(["diagnosis","discovery","planning","replanning","implementation","testing","integration","review","audit","finalization","rework"]),en=e.object({executor_attempt:e.object({id:e.string().min(1),failure_kind:e.enum(["reasoning","hypothesis"]),evidence:e.string().min(1)}).strict().optional(),diagnostic:e.object({evidence:e.string().min(1),difficult:e.literal(!0)}).strict(),material_critical_impact:e.object({evidence:e.string().min(1)}).strict().optional()}).strict(),Ar=e.object({findings:e.array(e.string().min(1)).min(1),evidence:e.array(e.string().min(1)).min(1),cause_or_hypothesis:e.string().min(1),recommended_model:e.enum(["gpt-6-luna","gpt-6.1-sol"]),route:e.string().min(1),scope:e.array(e.string().min(1)).min(1),test_plan:e.array(e.string().min(1)).min(1),executor:e.string().min(1)}).strict(),tn=e.enum(["full_stack_boundary","shared_contracts_3_plus","critical_data_or_security","rollout_and_rollback","repeated_structural_repair","architectural_review_finding","prepared_plan_invalidated","material_architectural_tradeoffs"]),nn=e.object({phase:Qt,agent_role:e.string().min(1),complexity:e.enum(["simple","standard","complex"]),risk:e.enum(["lite","standard","critical"]),transversality:e.enum(["local","multi_module","cross_system"]),ambiguity:e.enum(["low","medium","high"]),rework:e.enum(["none","localized","structural"]),rework_cost:e.enum(["low","medium","high"]),bounded:e.boolean(),high_volume:e.boolean().default(!1),xhigh_triggers:e.array(tn).default([]),astra_mode:e.literal("diagnostic").optional(),task_id:e.string().min(1).optional(),astra_cycle:e.enum(["1","2","3"]).optional(),astra_diagnostic:en.optional()}).strict(),ge=e.object({production_impact:e.boolean(),external_action:e.boolean(),irreversible_change:e.boolean(),security_or_critical_data:e.boolean(),data_migration:e.boolean(),broad_audit:e.boolean(),rollback:e.enum(["trivial","planned","complex"]),verification_scope:e.enum(["scoped","package","cross_scope","full"])}).strict(),tt=nn.omit({agent_role:!0,risk:!0}).extend({risk_signals:ge}).strict(),rn=tt.extend({risk:e.enum(["lite","standard","critical"]),risk_signals:ge,risk_policy_version:e.literal(et),risk_reasons:e.array(e.enum(["CRITICAL_EXPLICIT_IMPACT","CRITICAL_COMPLEX_ROLLBACK","CRITICAL_AMBIGUOUS_CROSS_SYSTEM","CRITICAL_STRUCTURAL_REWORK","LITE_BOUNDED_LOCAL","STANDARD_GOVERNED"])).min(1)}).strict().superRefine((t,n)=>{let r=rt(t);t.risk!==r.risk&&n.addIssue({code:"custom",path:["risk"],message:`Task risk must be ${r.risk} for the persisted signals`}),JSON.stringify(t.risk_reasons)!==JSON.stringify(r.reasons)&&n.addIssue({code:"custom",path:["risk_reasons"],message:`Task risk reasons must be ${r.reasons.join(",")}`})}),Cr=e.object({models:e.array(e.string().min(1)).min(1),reasoning_efforts:e.array(e.string().min(1)).min(1),velocities:e.array(e.string().min(1)),velocity_control:e.literal("not_exposed").optional()}).strict().refine(t=>t.velocity_control==="not_exposed"?t.velocities.length===0:t.velocities.length>0,"Declare supported velocities, or explicitly observed absence of a velocity control"),nt=e.object({mode:e.literal("auto"),default_model:e.literal("gpt-6.1-sol"),default_effort:e.literal("medium"),default_velocity:Xt,allowed_models:e.array(Jt).refine(t=>new Set(t).size===t.length&&["gpt-6-luna","gpt-6.1-sol"].every(n=>t.includes(n)),"allowed_models must contain unique GPT-6 Luna and Sol; Astra is optional"),allowed_efforts:e.tuple([e.literal("low"),e.literal("medium"),e.literal("high"),e.literal("xhigh")]),max_auto_effort:e.literal("xhigh"),automatic_sources:e.tuple([e.literal("spec"),e.literal("prd")]),notice:e.enum(["always","mismatch"])}).strict();function rt(t){let n=ge.parse(t.risk_signals);return n.production_impact||n.external_action||n.irreversible_change||n.security_or_critical_data||n.data_migration||n.broad_audit?R("critical","CRITICAL_EXPLICIT_IMPACT"):n.rollback==="complex"?R("critical","CRITICAL_COMPLEX_ROLLBACK"):t.ambiguity==="high"&&t.transversality==="cross_system"?R("critical","CRITICAL_AMBIGUOUS_CROSS_SYSTEM"):t.rework==="structural"&&t.rework_cost==="high"?R("critical","CRITICAL_STRUCTURAL_REWORK"):t.complexity==="simple"&&t.transversality==="local"&&t.ambiguity==="low"&&t.rework==="none"&&t.rework_cost==="low"&&t.bounded&&n.rollback==="trivial"&&n.verification_scope==="scoped"?R("lite","LITE_BOUNDED_LOCAL"):R("standard","STANDARD_GOVERNED")}function Or(t){let n=tt.parse(t),r=rt(n);return rn.parse({...n,risk:r.risk,risk_policy_version:r.policy_version,risk_reasons:r.reasons})}function R(t,n){return{risk:t,policy_version:et,reasons:[n]}}var F=Pe(Te(),1),on=10,ye=class extends Error{name="YamlContractError"};function k(t){let n=(0,F.parseDocument)(t,{strict:!0,uniqueKeys:!0});if(n.errors.length>0)throw new ye(n.errors.map(r=>r.message).join("; "));return n.toJS({maxAliasCount:on})}function O(t){return(0,F.stringify)(t,{lineWidth:0,aliasDuplicateObjects:!1})}var H=".agents/config/project.yaml",B=".agents/config/framework.lock.yaml",W=e.string().regex(/^[a-f0-9]{64}$/i,"Expected a SHA-256 checksum"),an=e.string().min(1).superRefine((t,n)=>{try{new Intl.DateTimeFormat("en",{timeZone:t}).format()}catch{n.addIssue({code:"custom",message:"Expected a valid IANA timezone"})}}),U=e.string().min(1).max(255).refine(t=>sn(t),"Expected a non-empty Git branch name");function sn(t){return/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(t)&&!t.includes("..")&&!t.includes("//")&&!t.includes("@{")&&!t.endsWith(".")&&!t.endsWith("/")&&t.split("/").every(n=>!n.startsWith(".")&&!n.endsWith(".lock"))}var cn=e.string().min(1).refine(t=>/^(?:[A-Za-z]:[\\/]|\/)/.test(t)&&!t.includes("\0"),"Expected an absolute repository path without a NUL byte"),ln=e.string().min(1).max(2048).refine(t=>t.trim()===t&&!/[\r\n\0]/.test(t)&&!/^[a-z][a-z0-9+.-]*:\/\/[^/]*@/i.test(t)&&!/[?&](?:token|access_token|password|secret)=/i.test(t),"Expected a single Git remote URL without credentials");function dn(t){return t.length===0||t.includes("\\")||t.includes("\0")||t.startsWith("/")||t.startsWith("./")||t.endsWith("/")||/^[A-Za-z]:/.test(t)?!1:t.split("/").every(n=>n.length>0&&n!=="."&&n!=="..")}var un=e.object({sha256:W}).strict();function ot(t){return e.record(e.string().min(1),t).superRefine((n,r)=>{for(let i of Object.keys(n))dn(i)||r.addIssue({code:"custom",path:[i],message:"Managed file path must be canonical and workspace-relative"})})}var pn=ot(un),mn=ot(W),at=e.object({schema_version:e.literal(1),zaip:e.object({enabled:e.boolean()}).strict().optional(),"zaip-aios":e.object({enabled:e.boolean()}).strict().optional(),project:e.object({id:e.string().min(1),name:e.string().min(1),timezone:an}).strict(),stack:e.object({id:e.string().min(1),language:e.string().min(1).optional(),api:e.string().min(1).optional(),query_builder:e.string().min(1).optional(),extensions:e.array(e.string().min(1)).min(1).optional(),layout:e.object({frontend:e.string().min(1),backend:e.string().min(1),site:e.string().min(1),modules:e.string().min(1),packages:e.string().min(1),e2e:e.string().min(1)}).strict().optional(),source_limits:e.object({warning_lines:e.number().int().positive(),error_lines:e.number().int().positive()}).strict().optional(),invariants:e.array(e.string().min(1)).min(1).optional(),commands:e.object({test:e.string().min(1),typecheck:e.string().min(1)}).strict().optional(),overrides:e.record(e.string(),e.unknown())}).strict(),clients:e.object({codex:e.boolean().default(!0),claude:e.boolean().default(!1)}).strict().default({codex:!0,claude:!1}),tracking:e.object({enabled:e.boolean(),currency:e.string().regex(/^[A-Z]{3}$/,"Expected an ISO 4217 currency code"),storage_mode:e.enum(["tracked_sanitized","local_only"])}).strict(),deploy:e.object({frontend:e.object({branch:U.optional()}).strict().optional(),backend:e.object({branch:U.optional()}).strict().optional(),database:e.object({branch:e.literal("beta").optional()}).strict().optional(),branch:U.optional(),production_branch:U.optional(),allow_production:e.boolean().optional()}).strict().optional(),supabase_migrations:e.object({repository:e.object({id:e.string().regex(/^(?:[A-Za-z0-9_.-]+\/)?[A-Za-z0-9][A-Za-z0-9_.-]*$/),path:cn,origin:ln,branch:e.literal("beta")}).strict(),hosted_applicator:e.literal("github-integration"),beta_integration_verified:e.boolean().optional(),preview_policy:e.enum(["disabled","approved"]).optional(),paid_beta_provisioning_confirmed:e.boolean().optional()}).strict().optional(),model_orchestration:e.discriminatedUnion("mode",[e.object({mode:e.literal("manual"),default_model:e.literal("manual"),default_effort:e.literal("manual"),default_velocity:e.literal("manual"),notice:e.enum(["always","mismatch"])}).strict(),e.object({mode:e.literal("off"),default_model:e.string().min(1),default_effort:e.string().min(1),default_velocity:e.string().min(1),notice:e.enum(["always","mismatch"])}).strict(),nt]).optional(),execution:e.discriminatedUnion("runtime",[e.object({runtime:e.literal("manual")}).strict(),e.object({runtime:e.literal("codex_native")}).strict(),e.object({runtime:e.enum(["autonomous","managed"]),autonomous:e.object({provider:e.enum(["codex","claude"]),model:e.string().min(1),max_parallelism:e.number().int().min(1).max(8),lease_ms:e.number().int().min(5e3).max(36e5),max_phase_attempts:e.number().int().positive().nullable().optional(),max_total_invocations:e.number().int().positive().nullable().optional()}).strict()}).strict()]).optional(),assurance:e.object({version:e.literal(1),standard_depth:e.enum(["auto","base","elevated"]),require_final_commit:e.boolean()}).strict().optional(),autonomy:me.optional(),context:e.object({canonical_roots:e.array(e.string().min(1)).min(1),projection_roots:e.array(e.string().min(1))}).strict().optional()}).strict().superRefine((t,n)=>{let r=t.zaip?.enabled,i=t["zaip-aios"]?.enabled;r!==void 0&&i!==void 0&&r!==i&&n.addIssue({code:"custom",path:["zaip","enabled"],message:"Conflicting ZAIP activation keys: zaip.enabled and legacy zaip-aios.enabled must agree"})}),st={framework:e.object({version:e.string().min(1),distribution_sha256:W.nullable()}).strict(),layout:e.object({version:e.union([e.literal(2),e.literal(3)])}).strict(),resolved_profile:e.object({id:e.string().min(1).nullable(),sha256:W.nullable()}).strict()},ct=e.object({lock_version:e.literal(1),...st,managed_files:pn}).strict(),q=e.object({lock_version:e.literal(2),...st,managed_files:mn}).strict(),Lr=e.toJSONSchema(at),zr=e.toJSONSchema(e.union([ct,q]));function it(t){let n=at.parse(Xe(t)),r=n.zaip?.enabled??n["zaip-aios"]?.enabled,{"zaip-aios":i,...o}=n;return r===void 0?o:{...o,zaip:{enabled:r}}}function fn(t){let n=e.union([ct,q]).parse(t);return n.lock_version===2?n:q.parse({...n,lock_version:2,managed_files:Object.fromEntries(Object.entries(n.managed_files).map(([r,i])=>[r,i.sha256]))})}var V=class{constructor(n,r=H){this.filesystem=n;this.path=r}filesystem;path;async read(){return it(k(await this.filesystem.readText(this.path)))}async write(n){await this.filesystem.writeTextAtomic(this.path,O(it(n)))}},K=class{constructor(n,r=B){this.filesystem=n;this.path=r}filesystem;path;async read(){return fn(k(await this.filesystem.readText(this.path)))}async write(n){await this.filesystem.writeTextAtomic(this.path,O(q.parse(n)))}};var he=e.object({schema_version:e.literal(1),project:e.object({id:e.string().min(1),name:e.string().min(1),timezone:e.string().min(1).default("America/Sao_Paulo")}),framework:e.object({version:e.string().min(1)}),layout:e.object({version:e.literal(1),managed_namespace:e.string().min(1).default(".agents/managed"),project_namespace:e.string().min(1).default(".agents/project")}).default({version:1,managed_namespace:".agents/managed",project_namespace:".agents/project"}),profile:e.object({id:e.string().min(1).default("zaip-aios-stack")}),paths:e.object({specs:e.string().min(1).default(".agents/specs"),changes:e.string().min(1).default(".agents/changes"),tasks:e.string().min(1).default(".agents/tasks"),decisions:e.string().min(1).default(".agents/decisions"),runs:e.string().min(1).default(".agents/runs")}).default({specs:".agents/specs",changes:".agents/changes",tasks:".agents/tasks",decisions:".agents/decisions",runs:".agents/runs"}),agents:e.array(e.enum(["codex","claude"])).default(["codex"])}).strict(),qr=e.toJSONSchema(he);function gn(t){return he.parse(t)}var Z=class{constructor(n,r=".agents/manifest.yaml"){this.filesystem=n;this.path=r}filesystem;path;async read(){return gn(k(await this.filesystem.readText(this.path)))}async write(n){await this.filesystem.writeTextAtomic(this.path,O(he.parse(n)))}};function Y(t){let n=t.match(/^([A-Z]+(?:-[A-Z]+)*)-(\d{4})-(\d{2})-(\d{2})-\d{2}-\d{2}-/);if(n?.[1]===void 0||n[2]===void 0||n[3]===void 0||n[4]===void 0)throw new TypeError(`ID does not contain the canonical date: ${t}`);let[,r,i,o,a]=n,s=new Date(`${i}-${o}-${a}T00:00:00.000Z`);if(Number.isNaN(s.getTime())||String(s.getUTCFullYear()).padStart(4,"0")!==i||String(s.getUTCMonth()+1).padStart(2,"0")!==o||String(s.getUTCDate()).padStart(2,"0")!==a)throw new TypeError(`ID contains an invalid canonical date: ${t}`);return{prefix:r,year:i,month:o,day:a}}function I(t){let{year:n,month:r}=Y(t);return{year:n,month:r}}function _e(t,n){let{year:r,month:i}=I(n);return`${t}/${r}/${i}/${n}.md`}function lt(t,n){let{year:r,month:i}=I(n);return`${t}/${r}/${i}`}function be(t,n){let{year:r,month:i,day:o}=Y(n);return`${t}/${r}/${i}/${o}`}var y=class extends Error{name="WorkspaceLayoutError"},xe=class extends y{name="PartialWorkspaceConfigError"},Ee=class extends y{name="WorkspaceLayoutNotFoundError"},Re=class extends y{name="UnsupportedLayoutEntityError"},ke=class extends y{name="ArtifactKindMismatchError"},Se=class extends y{name="InactiveLayoutConflictError"},yn={prd:"PRD",spec:"SPEC",change:"CHG",task:"TASK",execution:"EXEC",run:"RUN"},Ae={prd:"prds",spec:"specs",change:"changes",task:"tasks",execution:"executions",run:"runs"},we={spec:".agents/specs/capabilities",change:".agents/changes",task:".agents/tasks",run:".agents/runs"};async function Yr(t){let[n,r]=await Promise.all([t.exists(H),t.exists(B)]);if(n!==r){let i=n?B:H;throw new xe(`Partial V2 configuration; missing ${i}`)}if(n&&r){let[i,o]=await Promise.all([new V(t).read(),new K(t).read()]);return hn(i,o)}if(await t.exists(".agents/manifest.yaml"))return _n(await new Z(t).read());throw new Ee("Workspace has neither complete V2 config nor a legacy V1 manifest")}function hn(t,n){let r=n.layout.version,i=r===3?".agents/records":".agents/data";return{version:r,source:"project-config",project:t.project,projectConfig:t,frameworkLock:n,legacyManifest:null,supports:()=>!0,entityRoot:o=>`${i}/${Ae[o]}`,activePath(o,a){mt(o,a);let s=this.entityRoot(o),c=r===3?lt(s,a):be(s,a);return o==="change"?`${c}/${a}/change.md`:o==="execution"?`${c}/${a}/execution.md`:o==="run"?`${c}/${a}.jsonl`:`${c}/${a}.md`},legacyReadRoot(o){return r===3?`.agents/data/${Ae[o]}`:pt(we,o)},legacyReadCandidate(o,a,s){return r===3?{path:ve(".agents/data",o,a),readOnly:!0}:dt(we,o,a,s)},legacyReadCandidates(o,a,s){if(r===3)return[{path:ve(".agents/records",o,a),readOnly:!0},{path:ve(".agents/data",o,a),readOnly:!0}];let c=dt(we,o,a,s);return c===null?[]:[c]}}}function ve(t,n,r){mt(n,r);let i=be(`${t}/${Ae[n]}`,r);return n==="change"?`${i}/${r}/change.md`:n==="execution"?`${i}/${r}/execution.md`:n==="run"?`${i}/${r}.jsonl`:`${i}/${r}.md`}function _n(t){let n={spec:G(`${t.paths.specs}/capabilities`),change:G(t.paths.changes),task:G(t.paths.tasks),run:G(t.paths.runs)};return{version:1,source:"legacy-manifest",project:t.project,projectConfig:null,frameworkLock:null,legacyManifest:t,supports:r=>r!=="prd"&&r!=="execution",entityRoot(r){let i=pt(n,r);if(i===null)throw Ce(r,1);return i},activePath(r,i,o){if(!this.supports(r))throw Ce(r,1);return ut(n,r,i,o)},legacyReadRoot:()=>null,legacyReadCandidate:()=>null,legacyReadCandidates:()=>[]}}async function bn(t,n,r,i,o){let a=n.activePath(r,i,o),s=n.legacyReadCandidates(r,i,o),[c,...d]=await Promise.all([t.exists(a),...s.map(f=>t.exists(f.path))]),l=s.filter((f,g)=>d[g]).map(f=>f.path),p=l[0]??s[0]?.path??null,w=l.length>0;if(!c&&!w)return{state:"missing",activePath:a,legacyPath:p};if(c&&!w)return{state:"active-only",activePath:a,legacyPath:p};let v=await Promise.all([...c?[t.readText(a)]:[],...l.map(f=>t.readText(f))]);if(!c){let[f,...g]=v;return{state:g.every(xt=>xt===f)?"legacy-only":"duplicate-divergent",activePath:a,legacyPath:p}}let[m,...ne]=v;return{state:ne.every(f=>f===m)?"duplicate-identical":"duplicate-divergent",activePath:a,legacyPath:p}}async function Gr(t,n,r,i,o){let a=await bn(t,n,r,i,o);if(a.state==="duplicate-divergent")throw new Se(`Divergent ${r} ${i} exists in active and legacy layouts: ${a.activePath}, ${a.legacyPath}`);return a.state==="missing"?null:a.state==="legacy-only"?a.legacyPath:a.activePath}function dt(t,n,r,i){return n==="prd"||n==="execution"||n==="spec"&&i?.legacyCapability===void 0?null:{path:ut(t,n,r,i),readOnly:!0}}function ut(t,n,r,i){if(ft(n,r),n==="prd"||n==="execution")throw Ce(n,1);if(n==="spec"){let o=i?.legacyCapability;if(o===void 0||!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(o))throw new y("Legacy spec lookup requires a canonical legacyCapability");return`${t.spec}/${o}/spec.md`}if(I(r),n==="change"){let{year:o,month:a}=I(r);return`${t.change}/${o}/${a}/${r}/proposal.md`}return n==="task"?_e(t.task,r):_e(t.run,r)}function pt(t,n){return n==="prd"||n==="execution"?null:t[n]}function mt(t,n){ft(t,n),Y(n)}function ft(t,n){let r=yn[t];if(!n.startsWith(`${r}-`))throw new ke(`Expected ${t} id to start with ${r}-: ${n}`)}function G(t){if(t.length===0||t.includes("\\")||t.includes("\0")||t.startsWith("/")||t.startsWith("./")||t.endsWith("/")||/^[A-Za-z]:/.test(t)||t.split("/").some(n=>n.length===0||n==="."||n===".."))throw new y(`Workspace layout path is not canonical: ${t}`);return t}function Ce(t,n){return new Re(`Layout V${n} does not support ${t}`)}var Qr=e.object({provider:e.string().min(1),models:e.array(e.string().min(1)).min(1),reasoning_efforts:e.array(e.enum(["low","medium","high","xhigh"])).min(1),velocities:e.array(e.literal("standard")).length(1),streaming:e.boolean(),cancellation:e.boolean(),checkpointing:e.boolean(),resume:e.boolean(),tool_calls:e.boolean(),structured_output:e.boolean(),max_parallel_invocations:e.number().int().positive()}).strict().superRefine((t,n)=>{t.resume&&!t.checkpointing&&n.addIssue({code:"custom",message:"Resume requires checkpointing"})}),wn=e.object({role:e.enum(["system","user","assistant","tool"]),content:e.string(),name:e.string().min(1).nullable().default(null)}).strict(),ei=e.object({schema_version:e.literal(1),invocation_id:e.string().regex(/^INV-[A-Z0-9-]+$/),agent_id:e.string().min(1),model:e.string().min(1),reasoning_effort:e.enum(["low","medium","high","xhigh"]),velocity:e.literal("standard"),input:e.object({messages:e.array(wn).min(1),context_refs:e.array(e.string().min(1)),tools:e.array(e.string().min(1)),response_format:e.enum(["text","json"])}).strict(),budget:e.object({max_output_tokens:e.number().int().positive(),timeout_ms:e.number().int().positive().nullable(),max_tool_calls:e.number().int().nonnegative()}).strict(),metadata:e.record(e.string(),e.string()),resume_from:e.string().min(1).nullable()}).strict().superRefine((t,n)=>{t.model==="gpt-6-astra"&&t.reasoning_effort!=="high"&&n.addIssue({code:"custom",path:["reasoning_effort"],message:"Astra requires high reasoning effort"})}),ti=e.object({invocation_id:e.string().regex(/^INV-[A-Z0-9-]+$/),reason:e.enum(["user","budget","timeout","shutdown","superseded"]),requested_at:e.string().datetime()}).strict();var h={schema_version:e.literal(1),invocation_id:e.string().regex(/^INV-[A-Z0-9-]+$/),sequence:e.number().int().nonnegative(),occurred_at:e.string().datetime()},vn=e.object({checkpoint_id:e.string().regex(/^CHK-[A-Z0-9-]+$/),opaque_token:e.string().min(1),resumable_until:e.string().datetime().nullable(),state_hash:e.string().regex(/^[a-f0-9]{64}$/)}).strict(),gt=e.object({input_tokens:e.number().int().nonnegative(),cached_input_tokens:e.number().int().nonnegative(),output_tokens:e.number().int().nonnegative(),reasoning_tokens:e.number().int().nonnegative(),source:e.enum(["provider","estimated","unavailable"])}).strict(),xn=e.object({code:e.enum(["authentication","authorization","invalid_request","rate_limit","provider_unavailable","timeout","budget_exceeded","tool_error","protocol_error","unknown"]),message:e.string().min(1),retryable:e.boolean(),retry_after_ms:e.number().int().nonnegative().nullable(),provider_code:e.string().nullable()}).strict(),En=e.discriminatedUnion("type",[e.object({...h,type:e.literal("invocation.started")}).strict(),e.object({...h,type:e.literal("output.delta"),delta:e.string().min(1)}).strict(),e.object({...h,type:e.literal("tool.requested"),call_id:e.string().min(1),name:e.string().min(1),arguments:e.unknown()}).strict(),e.object({...h,type:e.literal("tool.completed"),call_id:e.string().min(1),output:e.unknown()}).strict(),e.object({...h,type:e.literal("checkpoint.created"),checkpoint:vn}).strict(),e.object({...h,type:e.literal("usage.updated"),usage:gt}).strict(),e.object({...h,type:e.literal("invocation.completed"),output:e.string(),usage:gt}).strict(),e.object({...h,type:e.literal("invocation.failed"),error:xn}).strict(),e.object({...h,type:e.literal("invocation.cancelled"),reason:e.string().min(1)}).strict()]);var u=e.array(e.string().min(1)).superRefine((t,n)=>{new Set(t).size!==t.length&&n.addIssue({code:"custom",message:"Values must be unique"})}),yt=e.string().regex(/^[a-z0-9]+(?:_[a-z0-9]+)*$/),Rn=e.object({nome:yt,cargo:yt,foto_url:e.url().refine(t=>{let n=new URL(t).protocol;return n==="http:"||n==="https:"},"Persona photo URL must use http or https").optional()}).strict();function kn(t){return`${t.nome}_${t.cargo}_zaip_agent`}var Sn=u.length(1).superRefine((t,n)=>{for(let[r,i]of t.entries())/^[a-z0-9_]+$/.test(i)||n.addIssue({code:"custom",path:[r],message:"Codex nicknames must be lowercase snake_case"})}),An=e.string().regex(/^zaip-agent-[a-z0-9-]+$/,'Codex agent name must use the "zaip-agent-NOME" format'),Cn=e.string().regex(/^[a-z0-9_]+$/,"Codex task name must use lowercase snake_case"),ht=e.enum(["orchestrator","analyst","task-executor","execution-finalizer","builder","reviewer","integrator","auditor"]),On=e.enum(["id","codex_name","codex_task_name"]),In=e.object({kind:On,value:e.string().min(1),deprecated_at:e.iso.date(),remove_after:e.iso.date(),replacement:e.string().regex(/^agent-[a-z0-9-]+$/)}).strict().superRefine((t,n)=>{(t.kind==="id"?/^agent-[a-z0-9-]+$/.test(t.value):t.kind==="codex_name"?/^zaip-agent-[a-z0-9-]+$/.test(t.value):/^[a-z0-9_]+$/.test(t.value))||n.addIssue({code:"custom",path:["value"],message:`Alias value does not match identity kind ${t.kind}`}),t.remove_after<=t.deprecated_at&&n.addIssue({code:"custom",path:["remove_after"],message:"Alias removal date must be after its deprecation date"})}),J=e.object({allow:u,deny:u}).strict().superRefine((t,n)=>{let r=t.allow.filter(i=>t.deny.includes(i));r.length>0&&n.addIssue({code:"custom",message:`Permission both allowed and denied: ${r.join(", ")}`})}),Pn=e.object({id:e.string().regex(/^agent-[a-z0-9-]+$/),version:e.number().int().positive(),purpose:e.string().min(1),use_when:u.min(1),do_not_use:u.min(1),codex_name:An,codex_task_name:Cn,persona:Rn,nickname_candidates:Sn,compatibility:e.object({aliases:e.array(In)}).strict().optional(),role:ht,priority:e.number().int().nonnegative().default(100),inherits:e.string().regex(/^agent-[a-z0-9-]+$/).nullable().default(null),capabilities:u.min(1),execution_eligibility:e.array(e.enum(["interaction","delivery"])),tools:u,skills:u,write_scopes:u,permissions:e.object({filesystem:J,network:J,shell:J,deployment:J}).strict(),model:e.object({required_capabilities:u,preferred:u,reasoning_effort:e.enum(["low","medium","high","xhigh","ultra"]).optional()}).strict(),budget:e.object({soft_cycles:e.number().int().positive()}).strict(),contract:e.object({inputs:u.min(1),outputs:u.min(1),evidence:u.min(1)}).strict(),review:e.object({can_approve:e.boolean(),cannot_review_roles:e.array(ht)}).strict(),escalation:u}).strict().superRefine((t,n)=>{let r=t.nickname_candidates[0];t.codex_task_name!==r&&n.addIssue({code:"custom",path:["codex_task_name"],message:`Codex task name must equal the primary nickname candidate: ${r}`});let i=kn(t.persona);t.nickname_candidates[0]!==i&&n.addIssue({code:"custom",path:["nickname_candidates"],message:`nickname_candidates must contain only the derived persona nickname: ${i}`})}),Tn=e.object({id:e.string().regex(/^squad-[a-z0-9-]+$/),version:e.number().int().positive(),purpose:e.string().min(1),members:e.array(e.string().regex(/^agent-[a-z0-9-]+$/)).min(2),max_parallelism:e.number().int().positive(),delegation:e.array(e.object({from:e.string().regex(/^agent-[a-z0-9-]+$/),to:e.string().regex(/^agent-[a-z0-9-]+$/),capability:e.string().min(1)}).strict()),review_policy:e.object({independent:e.literal(!0),executor_roles:e.array(e.enum(["analyst","builder","task-executor"])).min(1),reviewer_roles:e.array(e.enum(["reviewer","auditor"])).min(1)}).strict(),escalation:e.array(e.string().regex(/^agent-[a-z0-9-]+$/)).min(1)}).strict(),mi=e.object({schema_version:e.literal(1),agents:e.array(Pn).min(1),squads:e.array(Tn).min(1)}).strict();var X=e.string().trim().min(1).max(512),_t=e.object({failure:e.enum(["confirmed_technical","verification","external","unknown","authority","credentials","safety","cancelled"]),authority:e.enum(["granted","missing","unknown"]),credentials:e.enum(["not_required","available","missing","unknown"]),prior_effect:e.object({operation_id:X,state:e.enum(["not_applied","applied","unknown"]),evidence_ref:X.nullable()}).strict().nullable()}).strict();var Ri=e.object({hypothesis:e.string().trim().min(1).max(8e3),test:e.string().trim().min(1).max(8e3),executor_model:e.enum(["gpt-6-luna","gpt-6-sol","gpt-6.1-sol","gpt-6-astra"]),action:e.enum(["investigate","repair","retry_external"]),evidence_refs:e.array(X).min(1).max(64),operation_id:X.optional()}).strict().superRefine((t,n)=>{new Set(t.evidence_refs).size!==t.evidence_refs.length&&n.addIssue({code:"custom",message:"Duplicate recovery evidence reference"}),(t.action==="retry_external"?!t.operation_id:t.operation_id!==void 0)&&n.addIssue({code:"custom",message:"Only an external retry requires its exact operation identity"})});var Dn=e.object({id:e.string().min(1),kind:e.enum(["attempt","replan"]),status:e.enum(["reserved","completed","failed"]),result:e.string().nullable(),recovery_context:_t.optional(),purpose:e.literal("investigation").optional(),refresh_of:e.string().min(1).optional()}).strict().superRefine((t,n)=>{(t.status==="reserved"?t.result!==null:!t.result?.trim())&&n.addIssue({code:"custom",message:"Reserved work has no result; terminal work requires an observed result"})}),Oi=e.object({version:e.literal(1),task_id:e.string().min(1),preset:pe,legacy_attempts:e.number().int().nonnegative(),legacy_replans:e.number().int().nonnegative().nullable().optional(),migration:e.object({reason:e.string().trim().min(1),task_revision:e.number().int().nonnegative(),run_ids:e.array(e.string().min(1)),execution_id:e.string().min(1),future_replans:e.number().int().nonnegative().nullable().optional()}).strict().optional(),entries:e.array(Dn)}).strict().superRefine((t,n)=>{new Set(t.entries.map(i=>i.id)).size!==t.entries.length&&n.addIssue({code:"custom",message:"Duplicate recovery event identity"});for(let[i,o]of t.entries.entries())o.refresh_of!==void 0&&(o.kind!=="replan"||!t.entries.slice(0,i).some(a=>a.id===o.refresh_of&&a.kind==="replan"&&a.status==="completed"))&&n.addIssue({code:"custom",message:"Refresh requires a preceding completed replan"});let r=t.migration?.future_replans;if(t.legacy_replans===null){let i=Je({version:1,preset:t.preset}).replans;(r===void 0||i!==null&&(r===null||r>i))&&n.addIssue({code:"custom",message:"Unknown historical replans require an explicit future grant within the preset"})}else r!==void 0&&n.addIssue({code:"custom",message:"Future grants apply only to unknown historical replans"})});import{execFile as Mn}from"node:child_process";import{promisify as $n}from"node:util";var Mi=$n(Mn);var Li=e.object({id:e.string().regex(/^RULE-[A-Z0-9-]+$/),load:e.enum(["always","auto","file_match","manual"]),globs:e.array(e.string().min(1)).default([]),priority:e.enum(["critical","high","medium","low"]),max_context_tokens:e.number().int().positive(),requires:e.array(e.string().regex(/^RULE-[A-Z0-9-]+$/)),triggers:e.array(e.string().min(1)).default([]),phases:e.array(e.enum(["conversation","definition","planning","execution","verification","evidence"])).default([]),domains:e.array(e.string().min(1)).default([])}).strict().superRefine((t,n)=>{t.load==="file_match"&&t.globs.length===0&&n.addIssue({code:"custom",path:["globs"],message:"file_match Rules require at least one glob"})}),zi=e.object({schema_version:e.literal(2),id:e.string().regex(/^REQUIREMENTS-[A-Z0-9-]+$/),area:e.string().regex(/^[a-z][a-z0-9-]*$/),title:e.string().min(1),status:e.enum(["proposed","active","deprecated"]),version:e.number().int().positive(),source_change:e.string().min(1).nullable(),source_release:e.string().regex(/^\d+\.\d+\.\d+$/).optional()}).strict().superRefine((t,n)=>{t.source_change===null&&t.source_release===void 0&&n.addIssue({code:"custom",path:["source_release"],message:"released Requirements require source_release when source_change is null"}),t.source_change!==null&&t.source_release!==void 0&&n.addIssue({code:"custom",path:["source_release"],message:"source_release is only valid when source_change is null"})});var jn=["codex_host_native","provider_subprocess"],Nn=["frontier","balanced","fast_scan","review"],Ln=["subagents","worktrees","sandbox","approvals","skills","mcp"];var qi=e.enum(jn),Vi=e.enum(Nn),bt=e.enum(Ln),zn=e.array(bt).min(1).refine(t=>new Set(t).size===t.length,{message:"native_surfaces must be unique"}),Fn=e.object({locator:e.string().min(1),candidate_sha256:e.string().regex(/^[a-f0-9]{64}$/)}).strict(),Un=e.object({capability_id:e.string().regex(/^CAP-[A-Z0-9-]+$/),current_state:e.literal("implemented"),previous_states:e.tuple([e.literal("declared")]),evidence:e.array(Fn).length(0)}).strict(),Wn=e.object({tier:e.literal(1),enabled:e.literal(!0),optional:e.literal(!1),invokes_provider_subprocess:e.literal(!1),authority:e.literal("host"),native_surfaces:zn,capability_bindings:e.record(bt,Un)}).strict().superRefine((t,n)=>{let r=Object.keys(t.capability_bindings).sort(),i=[...t.native_surfaces].sort();JSON.stringify(r)!==JSON.stringify(i)&&n.addIssue({code:"custom",path:["capability_bindings"],message:"every native surface requires exactly one conformance/maturity binding"})}),qn=e.object({tier:e.union([e.literal(2),e.literal(3)]),enabled:e.boolean(),optional:e.literal(!0),invokes_provider_subprocess:e.literal(!0),authority:e.literal("framework"),native_surfaces:e.array(e.never()).length(0),opt_in:e.object({required:e.literal(!0),allowed_sources:e.array(e.enum(["project_config","human_decision"])).min(1).refine(t=>new Set(t).size===t.length,{message:"opt-in sources must be unique"})}).strict()}).strict(),Q=e.object({selection:e.enum(["host_available","inherit_host"]),reasoning:e.enum(["low","medium","high"]),intent:e.string().min(1)}).strict(),Ki=e.object({schema_version:e.literal(1),host_id:e.literal("codex"),candidate_sha256:e.null(),default_mode:e.literal("codex_host_native"),modes:e.object({codex_host_native:Wn,provider_subprocess:qn}).strict(),model_classes:e.object({frontier:Q,balanced:Q,fast_scan:Q,review:Q}).strict()}).strict(),Hi=e.object({enabled:e.literal(!0),source:e.enum(["project_config","human_decision"]),provenance:e.object({reference:e.string().min(1),recorded_at:e.string().datetime({offset:!0})}).strict()}).strict();var Vn=".agents/private/state/claims";function Gi(t,n){return`${Vn}/${t}/${n}.json`}function wt(t){return t.replace(/Bearer\s+[A-Za-z0-9._~+/-]+=*/g,"Bearer [REDACTED]").replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g,"[REDACTED]").replace(/\bgh[opsu]_[A-Za-z0-9_]{8,}\b/g,"[REDACTED]").replace(/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/g,"[REDACTED PRIVATE KEY]")}var vt="(?:access[_-]?token|refresh[_-]?token|id[_-]?token|token|api[_-]?key|password|passwd|secret|client[_-]?secret|authorization|signature|sig)",te=new RegExp(`^${vt}$`,"i"),ee=/^(?:\[redacted(?: private key)?\]|<redacted>|\*{3,})$/i,Kn=new RegExp(String.raw`\b${vt}["']?\s*[:=]\s*["']?((?:(?:bearer|basic)\s+)?(?:\[redacted(?: private key)?\]|<redacted>|\*{3,})|[^\s"',;]+)`,"gi");function oo(t){let n=new WeakSet;function r(i,o=""){if(typeof i=="string"){if(i.length===0||ee.test(i))return;if(te.test(o)||Hn(i))throw new Error("Sensitive content cannot be persisted; redact credentials and sensitive URL parameters first.");return}if(!(i===null||typeof i!="object"||n.has(i))){n.add(i);for(let[a,s]of Object.entries(i))r(s,te.test(o)?o:a)}}r(t)}function Hn(t){if(wt(t)!==t||/\bbearer\s+[a-z0-9._~+/-]+=*/i.test(t))return!0;for(let n of t.matchAll(/\bbasic\s+([a-z0-9+/]+={0,2})/gi))if(Buffer.from(n[1]??"","base64").toString("utf8").includes(":"))return!0;if(/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/.test(t))return!0;for(let n of t.matchAll(/[a-z][a-z0-9+.-]*:\/\/[^\s<>"']+/gi))try{let r=new URL(n[0]);if(r.password||/^https?:$/.test(r.protocol)&&r.username)return!0;for(let[i,o]of r.searchParams)if(te.test(i)&&o&&!ee.test(o))return!0;for(let[i,o]of new URLSearchParams(r.hash.slice(1)))if(te.test(i)&&o&&!ee.test(o))return!0;t=t.replace(n[0],"")}catch{}for(let n of t.matchAll(Kn))if(!ee.test((n[1]??"").replace(/^(?:bearer|basic)\s+/i,"")))return!0;return!1}var so=64*1024;var Oe=class{#e;constructor(n){let r=new Map;for(let i of n){let o=r.get(i.from)??new Set;o.add(i.to),r.set(i.from,o)}this.#e=r}canTransition(n,r){return this.#e.get(n)?.has(r)??!1}assertTransition(n,r){if(!this.canTransition(n,r))throw new Error(`Invalid state transition: ${n} -> ${r}`)}nextStates(n){return[...this.#e.get(n)??[]]}};var uo=new Oe([{from:"draft",to:"planned"},{from:"draft",to:"cancelled"},{from:"planned",to:"executing"},{from:"planned",to:"cancelled"},{from:"executing",to:"verifying"},{from:"executing",to:"blocked"},{from:"executing",to:"cancelled"},{from:"verifying",to:"completed"},{from:"verifying",to:"failed"},{from:"verifying",to:"blocked"},{from:"verifying",to:"cancelled"},{from:"blocked",to:"executing"},{from:"blocked",to:"cancelled"}]);var Ie=e.object({offset:e.number().int().nonnegative(),length:e.number().int().min(1).max(4194304),sha256:e.string().regex(/^[a-f0-9]{64}$/)}),fo=e.object({schema_version:e.literal(1),session_id:e.string().min(1),turn_id:e.string().min(1),run_id:e.string().startsWith("RUN-"),observed_at:e.string().datetime(),cursor:e.object({path:e.string().min(1),dev:e.number(),ino:e.number(),birthtime_ms:e.number(),size:e.number().int().nonnegative(),offset:e.number().int().nonnegative(),mtime_ms:e.number(),ctime_ms:e.number(),trusted:e.literal(!0),terminal_status:e.enum(["completed","failed","cancelled"]),session_proof:Ie,terminal_proof:Ie,anchor:Ie})});export{Oi as a,$ as b,Qe as c,Jt as d,Sr as e,Xt as f,en as g,Ar as h,tt as i,rn as j,Or as k,Mt as l,A as m,dr as n,_ as o,Ze as p,Ht as q,hr as r,Gi as s,Y as t,I as u,wt as v,oo as w,Yr as x,Gr as y};
10
+ ${i}
11
+ `}var Bt="autonomy-v1",pe=e.enum(["essential","balanced","persistent"]),me=e.object({version:e.literal(1),preset:pe}).strict(),Zt=Object.freeze({essential:Object.freeze({label:"Essencial",attempts:4,replans:1,automatic_astra:!1}),balanced:Object.freeze({label:"Equilibrado",attempts:10,replans:3,automatic_astra:!0}),persistent:Object.freeze({label:"Persistente \u2014 ilimitado",attempts:null,replans:null,automatic_astra:!0})});function Je(t){let n=me.parse(t??{version:1,preset:"balanced"});return Object.freeze({version:Bt,preset:n.preset,...Zt[n.preset],repairs_per_replan:3})}function fe(t){return t==="gpt-5.6-luna"?"gpt-6-luna":t==="gpt-5.6-terra"||t==="gpt-5.6-sol"||t==="gpt-6-sol"?"gpt-6.1-sol":t}function Xe(t){if(t===null||typeof t!="object"||Array.isArray(t))return t;let n=t,i=n.model_orchestration,r=n.execution,o={...n};if(i!==null&&typeof i=="object"&&!Array.isArray(i)){let a=i,s=a.allowed_models;o.model_orchestration={...a,default_model:fe(a.default_model),...Array.isArray(s)?{allowed_models:[...new Set(s.map(fe))]}:{}}}if(r!==null&&typeof r=="object"&&!Array.isArray(r)){let a=r,s=a.autonomous;s!==null&&typeof s=="object"&&!Array.isArray(s)&&(o.execution={...a,autonomous:{...s,model:fe(s.model)}})}return o}var Qe=e.object({model:e.string().min(1).optional(),reasoning_effort:e.string().min(1).optional(),velocity:e.string().min(1).optional()}).strict().refine(t=>t.model!==void 0||t.reasoning_effort!==void 0||t.velocity!==void 0,"Model selection override must define at least one field");var Yt=["gpt-6-luna","gpt-6.1-sol","gpt-6-astra"],Gt=["low","medium","high","xhigh"];var et="task-risk-v1",Jt=e.enum(Yt),Si=e.enum(Gt),Xt=e.literal("standard"),Qt=e.enum(["diagnosis","discovery","planning","replanning","implementation","testing","integration","review","audit","finalization","rework"]),en=e.object({executor_attempt:e.object({id:e.string().min(1),failure_kind:e.enum(["reasoning","hypothesis"]),evidence:e.string().min(1)}).strict().optional(),diagnostic:e.object({evidence:e.string().min(1),difficult:e.literal(!0)}).strict(),material_critical_impact:e.object({evidence:e.string().min(1)}).strict().optional()}).strict(),Ai=e.object({findings:e.array(e.string().min(1)).min(1),evidence:e.array(e.string().min(1)).min(1),cause_or_hypothesis:e.string().min(1),recommended_model:e.enum(["gpt-6-luna","gpt-6.1-sol"]),route:e.string().min(1),scope:e.array(e.string().min(1)).min(1),test_plan:e.array(e.string().min(1)).min(1),executor:e.string().min(1)}).strict(),tn=e.enum(["full_stack_boundary","shared_contracts_3_plus","critical_data_or_security","rollout_and_rollback","repeated_structural_repair","architectural_review_finding","prepared_plan_invalidated","material_architectural_tradeoffs"]),nn=e.object({phase:Qt,agent_role:e.string().min(1),complexity:e.enum(["simple","standard","complex"]),risk:e.enum(["lite","standard","critical"]),transversality:e.enum(["local","multi_module","cross_system"]),ambiguity:e.enum(["low","medium","high"]),rework:e.enum(["none","localized","structural"]),rework_cost:e.enum(["low","medium","high"]),bounded:e.boolean(),high_volume:e.boolean().default(!1),xhigh_triggers:e.array(tn).default([]),astra_mode:e.literal("diagnostic").optional(),task_id:e.string().min(1).optional(),astra_cycle:e.enum(["1","2","3"]).optional(),astra_diagnostic:en.optional()}).strict(),ge=e.object({production_impact:e.boolean(),external_action:e.boolean(),irreversible_change:e.boolean(),security_or_critical_data:e.boolean(),data_migration:e.boolean(),broad_audit:e.boolean(),rollback:e.enum(["trivial","planned","complex"]),verification_scope:e.enum(["scoped","package","cross_scope","full"])}).strict(),tt=nn.omit({agent_role:!0,risk:!0}).extend({risk_signals:ge}).strict(),rn=tt.extend({risk:e.enum(["lite","standard","critical"]),risk_signals:ge,risk_policy_version:e.literal(et),risk_reasons:e.array(e.enum(["CRITICAL_EXPLICIT_IMPACT","CRITICAL_COMPLEX_ROLLBACK","CRITICAL_AMBIGUOUS_CROSS_SYSTEM","CRITICAL_STRUCTURAL_REWORK","LITE_BOUNDED_LOCAL","STANDARD_GOVERNED"])).min(1)}).strict().superRefine((t,n)=>{let i=it(t);t.risk!==i.risk&&n.addIssue({code:"custom",path:["risk"],message:`Task risk must be ${i.risk} for the persisted signals`}),JSON.stringify(t.risk_reasons)!==JSON.stringify(i.reasons)&&n.addIssue({code:"custom",path:["risk_reasons"],message:`Task risk reasons must be ${i.reasons.join(",")}`})}),Ci=e.object({models:e.array(e.string().min(1)).min(1),reasoning_efforts:e.array(e.string().min(1)).min(1),velocities:e.array(e.string().min(1)),velocity_control:e.literal("not_exposed").optional()}).strict().refine(t=>t.velocity_control==="not_exposed"?t.velocities.length===0:t.velocities.length>0,"Declare supported velocities, or explicitly observed absence of a velocity control"),nt=e.object({mode:e.literal("auto"),default_model:e.literal("gpt-6.1-sol"),default_effort:e.literal("medium"),default_velocity:Xt,allowed_models:e.array(Jt).refine(t=>new Set(t).size===t.length&&["gpt-6-luna","gpt-6.1-sol"].every(n=>t.includes(n)),"allowed_models must contain unique GPT-6 Luna and Sol; Astra is optional"),allowed_efforts:e.tuple([e.literal("low"),e.literal("medium"),e.literal("high"),e.literal("xhigh")]),max_auto_effort:e.literal("xhigh"),automatic_sources:e.tuple([e.literal("spec"),e.literal("prd")]),notice:e.enum(["always","mismatch"])}).strict();function it(t){let n=ge.parse(t.risk_signals);return n.production_impact||n.external_action||n.irreversible_change||n.security_or_critical_data||n.data_migration||n.broad_audit?R("critical","CRITICAL_EXPLICIT_IMPACT"):n.rollback==="complex"?R("critical","CRITICAL_COMPLEX_ROLLBACK"):t.ambiguity==="high"&&t.transversality==="cross_system"?R("critical","CRITICAL_AMBIGUOUS_CROSS_SYSTEM"):t.rework==="structural"&&t.rework_cost==="high"?R("critical","CRITICAL_STRUCTURAL_REWORK"):t.complexity==="simple"&&t.transversality==="local"&&t.ambiguity==="low"&&t.rework==="none"&&t.rework_cost==="low"&&t.bounded&&n.rollback==="trivial"&&n.verification_scope==="scoped"?R("lite","LITE_BOUNDED_LOCAL"):R("standard","STANDARD_GOVERNED")}function Pi(t){let n=tt.parse(t),i=it(n);return rn.parse({...n,risk:i.risk,risk_policy_version:i.policy_version,risk_reasons:i.reasons})}function R(t,n){return{risk:t,policy_version:et,reasons:[n]}}var U=Ie(Te(),1),on=10,ye=class extends Error{name="YamlContractError"};function k(t){let n=(0,U.parseDocument)(t,{strict:!0,uniqueKeys:!0});if(n.errors.length>0)throw new ye(n.errors.map(i=>i.message).join("; "));return n.toJS({maxAliasCount:on})}function P(t){return(0,U.stringify)(t,{lineWidth:0,aliasDuplicateObjects:!1})}var H=".agents/config/project.yaml",B=".agents/config/framework.lock.yaml",W=e.string().regex(/^[a-f0-9]{64}$/i,"Expected a SHA-256 checksum"),an=e.string().min(1).superRefine((t,n)=>{try{new Intl.DateTimeFormat("en",{timeZone:t}).format()}catch{n.addIssue({code:"custom",message:"Expected a valid IANA timezone"})}}),F=e.string().min(1).max(255).refine(t=>sn(t),"Expected a non-empty Git branch name");function sn(t){return/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(t)&&!t.includes("..")&&!t.includes("//")&&!t.includes("@{")&&!t.endsWith(".")&&!t.endsWith("/")&&t.split("/").every(n=>!n.startsWith(".")&&!n.endsWith(".lock"))}var cn=e.string().min(1).refine(t=>/^(?:[A-Za-z]:[\\/]|\/)/.test(t)&&!t.includes("\0"),"Expected an absolute repository path without a NUL byte"),ln=e.string().min(1).max(2048).refine(t=>t.trim()===t&&!/[\r\n\0]/.test(t)&&!/^[a-z][a-z0-9+.-]*:\/\/[^/]*@/i.test(t)&&!/[?&](?:token|access_token|password|secret)=/i.test(t),"Expected a single Git remote URL without credentials");function dn(t){return t.length===0||t.includes("\\")||t.includes("\0")||t.startsWith("/")||t.startsWith("./")||t.endsWith("/")||/^[A-Za-z]:/.test(t)?!1:t.split("/").every(n=>n.length>0&&n!=="."&&n!=="..")}var un=e.object({sha256:W}).strict();function ot(t){return e.record(e.string().min(1),t).superRefine((n,i)=>{for(let r of Object.keys(n))dn(r)||i.addIssue({code:"custom",path:[r],message:"Managed file path must be canonical and workspace-relative"})})}var pn=ot(un),mn=ot(W),at=e.object({schema_version:e.literal(1),zaip:e.object({enabled:e.boolean()}).strict().optional(),"zaip-aios":e.object({enabled:e.boolean()}).strict().optional(),project:e.object({id:e.string().min(1),name:e.string().min(1),timezone:an}).strict(),stack:e.object({id:e.string().min(1),language:e.string().min(1).optional(),api:e.string().min(1).optional(),query_builder:e.string().min(1).optional(),extensions:e.array(e.string().min(1)).min(1).optional(),layout:e.object({frontend:e.string().min(1),backend:e.string().min(1),site:e.string().min(1),modules:e.string().min(1),packages:e.string().min(1),e2e:e.string().min(1)}).strict().optional(),source_limits:e.object({warning_lines:e.number().int().positive(),error_lines:e.number().int().positive()}).strict().optional(),invariants:e.array(e.string().min(1)).min(1).optional(),commands:e.object({test:e.string().min(1),typecheck:e.string().min(1)}).strict().optional(),overrides:e.record(e.string(),e.unknown())}).strict(),clients:e.object({codex:e.boolean().default(!0),claude:e.boolean().default(!1)}).strict().default({codex:!0,claude:!1}),tracking:e.object({enabled:e.boolean(),currency:e.string().regex(/^[A-Z]{3}$/,"Expected an ISO 4217 currency code"),storage_mode:e.enum(["tracked_sanitized","local_only"])}).strict(),deploy:e.object({frontend:e.object({branch:F.optional()}).strict().optional(),backend:e.object({branch:F.optional()}).strict().optional(),database:e.object({branch:e.literal("beta").optional()}).strict().optional(),branch:F.optional(),production_branch:F.optional(),allow_production:e.boolean().optional()}).strict().optional(),supabase_migrations:e.object({repository:e.object({id:e.string().regex(/^(?:[A-Za-z0-9_.-]+\/)?[A-Za-z0-9][A-Za-z0-9_.-]*$/),path:cn,origin:ln,branch:e.literal("beta")}).strict(),hosted_applicator:e.literal("github-integration"),beta_integration_verified:e.boolean().optional(),preview_policy:e.enum(["disabled","approved"]).optional(),paid_beta_provisioning_confirmed:e.boolean().optional()}).strict().optional(),model_orchestration:e.discriminatedUnion("mode",[e.object({mode:e.literal("manual"),default_model:e.literal("manual"),default_effort:e.literal("manual"),default_velocity:e.literal("manual"),notice:e.enum(["always","mismatch"])}).strict(),e.object({mode:e.literal("off"),default_model:e.string().min(1),default_effort:e.string().min(1),default_velocity:e.string().min(1),notice:e.enum(["always","mismatch"])}).strict(),nt]).optional(),execution:e.discriminatedUnion("runtime",[e.object({runtime:e.literal("manual")}).strict(),e.object({runtime:e.literal("codex_native")}).strict(),e.object({runtime:e.enum(["autonomous","managed"]),autonomous:e.object({provider:e.enum(["codex","claude"]),model:e.string().min(1),max_parallelism:e.number().int().min(1).max(8),lease_ms:e.number().int().min(5e3).max(36e5),max_phase_attempts:e.number().int().positive().nullable().optional(),max_total_invocations:e.number().int().positive().nullable().optional()}).strict()}).strict()]).optional(),assurance:e.object({version:e.literal(1),standard_depth:e.enum(["auto","base","elevated"]),require_final_commit:e.boolean()}).strict().optional(),autonomy:me.optional(),context:e.object({canonical_roots:e.array(e.string().min(1)).min(1),projection_roots:e.array(e.string().min(1))}).strict().optional()}).strict().superRefine((t,n)=>{let i=t.zaip?.enabled,r=t["zaip-aios"]?.enabled;i!==void 0&&r!==void 0&&i!==r&&n.addIssue({code:"custom",path:["zaip","enabled"],message:"Conflicting ZAIP activation keys: zaip.enabled and legacy zaip-aios.enabled must agree"})}),st={framework:e.object({version:e.string().min(1),distribution_sha256:W.nullable()}).strict(),layout:e.object({version:e.union([e.literal(2),e.literal(3)])}).strict(),resolved_profile:e.object({id:e.string().min(1).nullable(),sha256:W.nullable()}).strict()},ct=e.object({lock_version:e.literal(1),...st,managed_files:pn}).strict(),q=e.object({lock_version:e.literal(2),...st,managed_files:mn}).strict(),Li=e.toJSONSchema(at),zi=e.toJSONSchema(e.union([ct,q]));function rt(t){let n=at.parse(Xe(t)),i=n.zaip?.enabled??n["zaip-aios"]?.enabled,{"zaip-aios":r,...o}=n;return i===void 0?o:{...o,zaip:{enabled:i}}}function fn(t){let n=e.union([ct,q]).parse(t);return n.lock_version===2?n:q.parse({...n,lock_version:2,managed_files:Object.fromEntries(Object.entries(n.managed_files).map(([i,r])=>[i,r.sha256]))})}var V=class{constructor(n,i=H){this.filesystem=n;this.path=i}filesystem;path;async read(){return rt(k(await this.filesystem.readText(this.path)))}async write(n){await this.filesystem.writeTextAtomic(this.path,P(rt(n)))}},K=class{constructor(n,i=B){this.filesystem=n;this.path=i}filesystem;path;async read(){return fn(k(await this.filesystem.readText(this.path)))}async write(n){await this.filesystem.writeTextAtomic(this.path,P(q.parse(n)))}};var he=e.object({schema_version:e.literal(1),project:e.object({id:e.string().min(1),name:e.string().min(1),timezone:e.string().min(1).default("America/Sao_Paulo")}),framework:e.object({version:e.string().min(1)}),layout:e.object({version:e.literal(1),managed_namespace:e.string().min(1).default(".agents/managed"),project_namespace:e.string().min(1).default(".agents/project")}).default({version:1,managed_namespace:".agents/managed",project_namespace:".agents/project"}),profile:e.object({id:e.string().min(1).default("zaip-aios-stack")}),paths:e.object({specs:e.string().min(1).default(".agents/specs"),changes:e.string().min(1).default(".agents/changes"),tasks:e.string().min(1).default(".agents/tasks"),decisions:e.string().min(1).default(".agents/decisions"),runs:e.string().min(1).default(".agents/runs")}).default({specs:".agents/specs",changes:".agents/changes",tasks:".agents/tasks",decisions:".agents/decisions",runs:".agents/runs"}),agents:e.array(e.enum(["codex","claude"])).default(["codex"])}).strict(),qi=e.toJSONSchema(he);function gn(t){return he.parse(t)}var Z=class{constructor(n,i=".agents/manifest.yaml"){this.filesystem=n;this.path=i}filesystem;path;async read(){return gn(k(await this.filesystem.readText(this.path)))}async write(n){await this.filesystem.writeTextAtomic(this.path,P(he.parse(n)))}};function Y(t){let n=t.match(/^([A-Z]+(?:-[A-Z]+)*)-(\d{4})-(\d{2})-(\d{2})-\d{2}-\d{2}-/);if(n?.[1]===void 0||n[2]===void 0||n[3]===void 0||n[4]===void 0)throw new TypeError(`ID does not contain the canonical date: ${t}`);let[,i,r,o,a]=n,s=new Date(`${r}-${o}-${a}T00:00:00.000Z`);if(Number.isNaN(s.getTime())||String(s.getUTCFullYear()).padStart(4,"0")!==r||String(s.getUTCMonth()+1).padStart(2,"0")!==o||String(s.getUTCDate()).padStart(2,"0")!==a)throw new TypeError(`ID contains an invalid canonical date: ${t}`);return{prefix:i,year:r,month:o,day:a}}function O(t){let{year:n,month:i}=Y(t);return{year:n,month:i}}function _e(t,n){let{year:i,month:r}=O(n);return`${t}/${i}/${r}/${n}.md`}function lt(t,n){let{year:i,month:r}=O(n);return`${t}/${i}/${r}`}function be(t,n){let{year:i,month:r,day:o}=Y(n);return`${t}/${i}/${r}/${o}`}var y=class extends Error{name="WorkspaceLayoutError"},xe=class extends y{name="PartialWorkspaceConfigError"},Ee=class extends y{name="WorkspaceLayoutNotFoundError"},Re=class extends y{name="UnsupportedLayoutEntityError"},ke=class extends y{name="ArtifactKindMismatchError"},Se=class extends y{name="InactiveLayoutConflictError"},yn={prd:"PRD",spec:"SPEC",change:"CHG",task:"TASK",execution:"EXEC",run:"RUN"},Ae={prd:"prds",spec:"specs",change:"changes",task:"tasks",execution:"executions",run:"runs"},we={spec:".agents/specs/capabilities",change:".agents/changes",task:".agents/tasks",run:".agents/runs"};async function Yi(t){let[n,i]=await Promise.all([t.exists(H),t.exists(B)]);if(n!==i){let r=n?B:H;throw new xe(`Partial V2 configuration; missing ${r}`)}if(n&&i){let[r,o]=await Promise.all([new V(t).read(),new K(t).read()]);return hn(r,o)}if(await t.exists(".agents/manifest.yaml"))return _n(await new Z(t).read());throw new Ee("Workspace has neither complete V2 config nor a legacy V1 manifest")}function hn(t,n){let i=n.layout.version,r=i===3?".agents/records":".agents/data";return{version:i,source:"project-config",project:t.project,projectConfig:t,frameworkLock:n,legacyManifest:null,supports:()=>!0,entityRoot:o=>`${r}/${Ae[o]}`,activePath(o,a){mt(o,a);let s=this.entityRoot(o),c=i===3?lt(s,a):be(s,a);return o==="change"?`${c}/${a}/change.md`:o==="execution"?`${c}/${a}/execution.md`:o==="run"?`${c}/${a}.jsonl`:`${c}/${a}.md`},legacyReadRoot(o){return i===3?`.agents/data/${Ae[o]}`:pt(we,o)},legacyReadCandidate(o,a,s){return i===3?{path:ve(".agents/data",o,a),readOnly:!0}:dt(we,o,a,s)},legacyReadCandidates(o,a,s){if(i===3)return[{path:ve(".agents/records",o,a),readOnly:!0},{path:ve(".agents/data",o,a),readOnly:!0}];let c=dt(we,o,a,s);return c===null?[]:[c]}}}function ve(t,n,i){mt(n,i);let r=be(`${t}/${Ae[n]}`,i);return n==="change"?`${r}/${i}/change.md`:n==="execution"?`${r}/${i}/execution.md`:n==="run"?`${r}/${i}.jsonl`:`${r}/${i}.md`}function _n(t){let n={spec:G(`${t.paths.specs}/capabilities`),change:G(t.paths.changes),task:G(t.paths.tasks),run:G(t.paths.runs)};return{version:1,source:"legacy-manifest",project:t.project,projectConfig:null,frameworkLock:null,legacyManifest:t,supports:i=>i!=="prd"&&i!=="execution",entityRoot(i){let r=pt(n,i);if(r===null)throw Ce(i,1);return r},activePath(i,r,o){if(!this.supports(i))throw Ce(i,1);return ut(n,i,r,o)},legacyReadRoot:()=>null,legacyReadCandidate:()=>null,legacyReadCandidates:()=>[]}}async function bn(t,n,i,r,o){let a=n.activePath(i,r,o),s=n.legacyReadCandidates(i,r,o),[c,...d]=await Promise.all([t.exists(a),...s.map(f=>t.exists(f.path))]),l=s.filter((f,g)=>d[g]).map(f=>f.path),p=l[0]??s[0]?.path??null,w=l.length>0;if(!c&&!w)return{state:"missing",activePath:a,legacyPath:p};if(c&&!w)return{state:"active-only",activePath:a,legacyPath:p};let v=await Promise.all([...c?[t.readText(a)]:[],...l.map(f=>t.readText(f))]);if(!c){let[f,...g]=v;return{state:g.every(xt=>xt===f)?"legacy-only":"duplicate-divergent",activePath:a,legacyPath:p}}let[m,...ne]=v;return{state:ne.every(f=>f===m)?"duplicate-identical":"duplicate-divergent",activePath:a,legacyPath:p}}async function Gi(t,n,i,r,o){let a=await bn(t,n,i,r,o);if(a.state==="duplicate-divergent")throw new Se(`Divergent ${i} ${r} exists in active and legacy layouts: ${a.activePath}, ${a.legacyPath}`);return a.state==="missing"?null:a.state==="legacy-only"?a.legacyPath:a.activePath}function dt(t,n,i,r){return n==="prd"||n==="execution"||n==="spec"&&r?.legacyCapability===void 0?null:{path:ut(t,n,i,r),readOnly:!0}}function ut(t,n,i,r){if(ft(n,i),n==="prd"||n==="execution")throw Ce(n,1);if(n==="spec"){let o=r?.legacyCapability;if(o===void 0||!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(o))throw new y("Legacy spec lookup requires a canonical legacyCapability");return`${t.spec}/${o}/spec.md`}if(O(i),n==="change"){let{year:o,month:a}=O(i);return`${t.change}/${o}/${a}/${i}/proposal.md`}return n==="task"?_e(t.task,i):_e(t.run,i)}function pt(t,n){return n==="prd"||n==="execution"?null:t[n]}function mt(t,n){ft(t,n),Y(n)}function ft(t,n){let i=yn[t];if(!n.startsWith(`${i}-`))throw new ke(`Expected ${t} id to start with ${i}-: ${n}`)}function G(t){if(t.length===0||t.includes("\\")||t.includes("\0")||t.startsWith("/")||t.startsWith("./")||t.endsWith("/")||/^[A-Za-z]:/.test(t)||t.split("/").some(n=>n.length===0||n==="."||n===".."))throw new y(`Workspace layout path is not canonical: ${t}`);return t}function Ce(t,n){return new Re(`Layout V${n} does not support ${t}`)}var Qi=e.object({provider:e.string().min(1),models:e.array(e.string().min(1)).min(1),reasoning_efforts:e.array(e.enum(["low","medium","high","xhigh"])).min(1),velocities:e.array(e.literal("standard")).length(1),streaming:e.boolean(),cancellation:e.boolean(),checkpointing:e.boolean(),resume:e.boolean(),tool_calls:e.boolean(),structured_output:e.boolean(),max_parallel_invocations:e.number().int().positive()}).strict().superRefine((t,n)=>{t.resume&&!t.checkpointing&&n.addIssue({code:"custom",message:"Resume requires checkpointing"})}),wn=e.object({role:e.enum(["system","user","assistant","tool"]),content:e.string(),name:e.string().min(1).nullable().default(null)}).strict(),er=e.object({schema_version:e.literal(1),invocation_id:e.string().regex(/^INV-[A-Z0-9-]+$/),agent_id:e.string().min(1),model:e.string().min(1),reasoning_effort:e.enum(["low","medium","high","xhigh"]),velocity:e.literal("standard"),input:e.object({messages:e.array(wn).min(1),context_refs:e.array(e.string().min(1)),tools:e.array(e.string().min(1)),response_format:e.enum(["text","json"])}).strict(),budget:e.object({max_output_tokens:e.number().int().positive(),timeout_ms:e.number().int().positive().nullable(),max_tool_calls:e.number().int().nonnegative()}).strict(),metadata:e.record(e.string(),e.string()),resume_from:e.string().min(1).nullable()}).strict().superRefine((t,n)=>{t.model==="gpt-6-astra"&&t.reasoning_effort!=="high"&&n.addIssue({code:"custom",path:["reasoning_effort"],message:"Astra requires high reasoning effort"})}),tr=e.object({invocation_id:e.string().regex(/^INV-[A-Z0-9-]+$/),reason:e.enum(["user","budget","timeout","shutdown","superseded"]),requested_at:e.string().datetime()}).strict();var h={schema_version:e.literal(1),invocation_id:e.string().regex(/^INV-[A-Z0-9-]+$/),sequence:e.number().int().nonnegative(),occurred_at:e.string().datetime()},vn=e.object({checkpoint_id:e.string().regex(/^CHK-[A-Z0-9-]+$/),opaque_token:e.string().min(1),resumable_until:e.string().datetime().nullable(),state_hash:e.string().regex(/^[a-f0-9]{64}$/)}).strict(),gt=e.object({input_tokens:e.number().int().nonnegative(),cached_input_tokens:e.number().int().nonnegative(),output_tokens:e.number().int().nonnegative(),reasoning_tokens:e.number().int().nonnegative(),source:e.enum(["provider","estimated","unavailable"])}).strict(),xn=e.object({code:e.enum(["authentication","authorization","invalid_request","rate_limit","provider_unavailable","timeout","budget_exceeded","tool_error","protocol_error","unknown"]),message:e.string().min(1),retryable:e.boolean(),retry_after_ms:e.number().int().nonnegative().nullable(),provider_code:e.string().nullable()}).strict(),En=e.discriminatedUnion("type",[e.object({...h,type:e.literal("invocation.started")}).strict(),e.object({...h,type:e.literal("output.delta"),delta:e.string().min(1)}).strict(),e.object({...h,type:e.literal("tool.requested"),call_id:e.string().min(1),name:e.string().min(1),arguments:e.unknown()}).strict(),e.object({...h,type:e.literal("tool.completed"),call_id:e.string().min(1),output:e.unknown()}).strict(),e.object({...h,type:e.literal("checkpoint.created"),checkpoint:vn}).strict(),e.object({...h,type:e.literal("usage.updated"),usage:gt}).strict(),e.object({...h,type:e.literal("invocation.completed"),output:e.string(),usage:gt}).strict(),e.object({...h,type:e.literal("invocation.failed"),error:xn}).strict(),e.object({...h,type:e.literal("invocation.cancelled"),reason:e.string().min(1)}).strict()]);var u=e.array(e.string().min(1)).superRefine((t,n)=>{new Set(t).size!==t.length&&n.addIssue({code:"custom",message:"Values must be unique"})}),yt=e.string().regex(/^[a-z0-9]+(?:_[a-z0-9]+)*$/),Rn=e.object({nome:yt,cargo:yt,foto_url:e.url().refine(t=>{let n=new URL(t).protocol;return n==="http:"||n==="https:"},"Persona photo URL must use http or https").optional()}).strict();function kn(t){return`${t.nome}_${t.cargo}_zaip_agent`}var Sn=u.length(1).superRefine((t,n)=>{for(let[i,r]of t.entries())/^[a-z0-9_]+$/.test(r)||n.addIssue({code:"custom",path:[i],message:"Codex nicknames must be lowercase snake_case"})}),An=e.string().regex(/^zaip-agent-[a-z0-9-]+$/,'Codex agent name must use the "zaip-agent-NOME" format'),Cn=e.string().regex(/^[a-z0-9_]+$/,"Codex task name must use lowercase snake_case"),ht=e.enum(["orchestrator","analyst","task-executor","execution-finalizer","builder","reviewer","integrator","auditor"]),Pn=e.enum(["id","codex_name","codex_task_name"]),On=e.object({kind:Pn,value:e.string().min(1),deprecated_at:e.iso.date(),remove_after:e.iso.date(),replacement:e.string().regex(/^agent-[a-z0-9-]+$/)}).strict().superRefine((t,n)=>{(t.kind==="id"?/^agent-[a-z0-9-]+$/.test(t.value):t.kind==="codex_name"?/^zaip-agent-[a-z0-9-]+$/.test(t.value):/^[a-z0-9_]+$/.test(t.value))||n.addIssue({code:"custom",path:["value"],message:`Alias value does not match identity kind ${t.kind}`}),t.remove_after<=t.deprecated_at&&n.addIssue({code:"custom",path:["remove_after"],message:"Alias removal date must be after its deprecation date"})}),J=e.object({allow:u,deny:u}).strict().superRefine((t,n)=>{let i=t.allow.filter(r=>t.deny.includes(r));i.length>0&&n.addIssue({code:"custom",message:`Permission both allowed and denied: ${i.join(", ")}`})}),In=e.object({id:e.string().regex(/^agent-[a-z0-9-]+$/),version:e.number().int().positive(),purpose:e.string().min(1),use_when:u.min(1),do_not_use:u.min(1),codex_name:An,codex_task_name:Cn,persona:Rn,nickname_candidates:Sn,compatibility:e.object({aliases:e.array(On)}).strict().optional(),role:ht,priority:e.number().int().nonnegative().default(100),inherits:e.string().regex(/^agent-[a-z0-9-]+$/).nullable().default(null),capabilities:u.min(1),execution_eligibility:e.array(e.enum(["interaction","delivery"])),tools:u,skills:u,write_scopes:u,permissions:e.object({filesystem:J,network:J,shell:J,deployment:J}).strict(),model:e.object({required_capabilities:u,preferred:u,reasoning_effort:e.enum(["low","medium","high","xhigh","ultra"]).optional()}).strict(),budget:e.object({soft_cycles:e.number().int().positive()}).strict(),contract:e.object({inputs:u.min(1),outputs:u.min(1),evidence:u.min(1)}).strict(),review:e.object({can_approve:e.boolean(),cannot_review_roles:e.array(ht)}).strict(),escalation:u}).strict().superRefine((t,n)=>{let i=t.nickname_candidates[0];t.codex_task_name!==i&&n.addIssue({code:"custom",path:["codex_task_name"],message:`Codex task name must equal the primary nickname candidate: ${i}`});let r=kn(t.persona);t.nickname_candidates[0]!==r&&n.addIssue({code:"custom",path:["nickname_candidates"],message:`nickname_candidates must contain only the derived persona nickname: ${r}`})}),Tn=e.object({id:e.string().regex(/^squad-[a-z0-9-]+$/),version:e.number().int().positive(),purpose:e.string().min(1),members:e.array(e.string().regex(/^agent-[a-z0-9-]+$/)).min(2),max_parallelism:e.number().int().positive(),delegation:e.array(e.object({from:e.string().regex(/^agent-[a-z0-9-]+$/),to:e.string().regex(/^agent-[a-z0-9-]+$/),capability:e.string().min(1)}).strict()),review_policy:e.object({independent:e.literal(!0),executor_roles:e.array(e.enum(["analyst","builder","task-executor"])).min(1),reviewer_roles:e.array(e.enum(["reviewer","auditor"])).min(1)}).strict(),escalation:e.array(e.string().regex(/^agent-[a-z0-9-]+$/)).min(1)}).strict(),mr=e.object({schema_version:e.literal(1),agents:e.array(In).min(1),squads:e.array(Tn).min(1)}).strict();var X=e.string().trim().min(1).max(512),_t=e.object({failure:e.enum(["confirmed_technical","verification","external","unknown","authority","credentials","safety","cancelled"]),authority:e.enum(["granted","missing","unknown"]),credentials:e.enum(["not_required","available","missing","unknown"]),prior_effect:e.object({operation_id:X,state:e.enum(["not_applied","applied","unknown"]),evidence_ref:X.nullable()}).strict().nullable()}).strict();var Rr=e.object({hypothesis:e.string().trim().min(1).max(8e3),test:e.string().trim().min(1).max(8e3),executor_model:e.enum(["gpt-6-luna","gpt-6-sol","gpt-6.1-sol","gpt-6-astra"]),action:e.enum(["investigate","repair","retry_external"]),evidence_refs:e.array(X).min(1).max(64),operation_id:X.optional()}).strict().superRefine((t,n)=>{new Set(t.evidence_refs).size!==t.evidence_refs.length&&n.addIssue({code:"custom",message:"Duplicate recovery evidence reference"}),(t.action==="retry_external"?!t.operation_id:t.operation_id!==void 0)&&n.addIssue({code:"custom",message:"Only an external retry requires its exact operation identity"})});var Dn=e.object({id:e.string().min(1),kind:e.enum(["attempt","replan"]),status:e.enum(["reserved","completed","failed"]),result:e.string().nullable(),recovery_context:_t.optional(),purpose:e.literal("investigation").optional(),refresh_of:e.string().min(1).optional()}).strict().superRefine((t,n)=>{(t.status==="reserved"?t.result!==null:!t.result?.trim())&&n.addIssue({code:"custom",message:"Reserved work has no result; terminal work requires an observed result"})}),Pr=e.object({version:e.literal(1),task_id:e.string().min(1),preset:pe,legacy_attempts:e.number().int().nonnegative(),legacy_replans:e.number().int().nonnegative().nullable().optional(),migration:e.object({reason:e.string().trim().min(1),task_revision:e.number().int().nonnegative(),run_ids:e.array(e.string().min(1)),execution_id:e.string().min(1),future_replans:e.number().int().nonnegative().nullable().optional()}).strict().optional(),entries:e.array(Dn)}).strict().superRefine((t,n)=>{new Set(t.entries.map(r=>r.id)).size!==t.entries.length&&n.addIssue({code:"custom",message:"Duplicate recovery event identity"});for(let[r,o]of t.entries.entries())o.refresh_of!==void 0&&(o.kind!=="replan"||!t.entries.slice(0,r).some(a=>a.id===o.refresh_of&&a.kind==="replan"&&a.status==="completed"))&&n.addIssue({code:"custom",message:"Refresh requires a preceding completed replan"});let i=t.migration?.future_replans;if(t.legacy_replans===null){let r=Je({version:1,preset:t.preset}).replans;(i===void 0||r!==null&&(i===null||i>r))&&n.addIssue({code:"custom",message:"Unknown historical replans require an explicit future grant within the preset"})}else i!==void 0&&n.addIssue({code:"custom",message:"Future grants apply only to unknown historical replans"})});import{execFile as Mn}from"node:child_process";import{promisify as $n}from"node:util";var Mr=$n(Mn);var Lr=e.object({id:e.string().regex(/^RULE-[A-Z0-9-]+$/),load:e.enum(["always","auto","file_match","manual"]),globs:e.array(e.string().min(1)).default([]),priority:e.enum(["critical","high","medium","low"]),max_context_tokens:e.number().int().positive(),requires:e.array(e.string().regex(/^RULE-[A-Z0-9-]+$/)),triggers:e.array(e.string().min(1)).default([]),phases:e.array(e.enum(["conversation","definition","planning","execution","verification","evidence"])).default([]),domains:e.array(e.string().min(1)).default([])}).strict().superRefine((t,n)=>{t.load==="file_match"&&t.globs.length===0&&n.addIssue({code:"custom",path:["globs"],message:"file_match Rules require at least one glob"})}),zr=e.object({schema_version:e.literal(2),id:e.string().regex(/^REQUIREMENTS-[A-Z0-9-]+$/),area:e.string().regex(/^[a-z][a-z0-9-]*$/),title:e.string().min(1),status:e.enum(["proposed","active","deprecated"]),version:e.number().int().positive(),source_change:e.string().min(1).nullable(),source_release:e.string().regex(/^\d+\.\d+\.\d+$/).optional()}).strict().superRefine((t,n)=>{t.source_change===null&&t.source_release===void 0&&n.addIssue({code:"custom",path:["source_release"],message:"released Requirements require source_release when source_change is null"}),t.source_change!==null&&t.source_release!==void 0&&n.addIssue({code:"custom",path:["source_release"],message:"source_release is only valid when source_change is null"})});var jn=["codex_host_native","provider_subprocess"],Nn=["frontier","balanced","fast_scan","review"],Ln=["subagents","worktrees","sandbox","approvals","skills","mcp"];var qr=e.enum(jn),Vr=e.enum(Nn),bt=e.enum(Ln),zn=e.array(bt).min(1).refine(t=>new Set(t).size===t.length,{message:"native_surfaces must be unique"}),Un=e.object({locator:e.string().min(1),candidate_sha256:e.string().regex(/^[a-f0-9]{64}$/)}).strict(),Fn=e.object({capability_id:e.string().regex(/^CAP-[A-Z0-9-]+$/),current_state:e.literal("implemented"),previous_states:e.tuple([e.literal("declared")]),evidence:e.array(Un).length(0)}).strict(),Wn=e.object({tier:e.literal(1),enabled:e.literal(!0),optional:e.literal(!1),invokes_provider_subprocess:e.literal(!1),authority:e.literal("host"),native_surfaces:zn,capability_bindings:e.record(bt,Fn)}).strict().superRefine((t,n)=>{let i=Object.keys(t.capability_bindings).sort(),r=[...t.native_surfaces].sort();JSON.stringify(i)!==JSON.stringify(r)&&n.addIssue({code:"custom",path:["capability_bindings"],message:"every native surface requires exactly one conformance/maturity binding"})}),qn=e.object({tier:e.union([e.literal(2),e.literal(3)]),enabled:e.boolean(),optional:e.literal(!0),invokes_provider_subprocess:e.literal(!0),authority:e.literal("framework"),native_surfaces:e.array(e.never()).length(0),opt_in:e.object({required:e.literal(!0),allowed_sources:e.array(e.enum(["project_config","human_decision"])).min(1).refine(t=>new Set(t).size===t.length,{message:"opt-in sources must be unique"})}).strict()}).strict(),Q=e.object({selection:e.enum(["host_available","inherit_host"]),reasoning:e.enum(["low","medium","high"]),intent:e.string().min(1)}).strict(),Kr=e.object({schema_version:e.literal(1),host_id:e.literal("codex"),candidate_sha256:e.null(),default_mode:e.literal("codex_host_native"),modes:e.object({codex_host_native:Wn,provider_subprocess:qn}).strict(),model_classes:e.object({frontier:Q,balanced:Q,fast_scan:Q,review:Q}).strict()}).strict(),Hr=e.object({enabled:e.literal(!0),source:e.enum(["project_config","human_decision"]),provenance:e.object({reference:e.string().min(1),recorded_at:e.string().datetime({offset:!0})}).strict()}).strict();var Vn=".agents/private/state/claims";function Gr(t,n){return`${Vn}/${t}/${n}.json`}function wt(t){return t.replace(/Bearer\s+[A-Za-z0-9._~+/-]+=*/g,"Bearer [REDACTED]").replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g,"[REDACTED]").replace(/\bgh[opsu]_[A-Za-z0-9_]{8,}\b/g,"[REDACTED]").replace(/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/g,"[REDACTED PRIVATE KEY]")}var vt="(?:access[_-]?token|refresh[_-]?token|id[_-]?token|token|api[_-]?key|password|passwd|secret|client[_-]?secret|authorization|signature|sig)",te=new RegExp(`^${vt}$`,"i"),ee=/^(?:\[redacted(?: private key)?\]|<redacted>|\*{3,})$/i,Kn=new RegExp(String.raw`\b${vt}["']?\s*[:=]\s*["']?((?:(?:bearer|basic)\s+)?(?:\[redacted(?: private key)?\]|<redacted>|\*{3,})|[^\s"',;]+)`,"gi");function ao(t){let n=new WeakSet;function i(r,o=""){if(typeof r=="string"){if(r.length===0||ee.test(r))return;if(te.test(o)||Hn(r))throw new Error("Sensitive content cannot be persisted; redact credentials and sensitive URL parameters first.");return}if(!(r===null||typeof r!="object"||n.has(r))){n.add(r);for(let[a,s]of Object.entries(r))i(s,te.test(o)?o:a)}}i(t)}function Hn(t){if(wt(t)!==t||/\bbearer\s+[a-z0-9._~+/-]+=*/i.test(t))return!0;for(let n of t.matchAll(/\bbasic\s+([a-z0-9+/]+={0,2})/gi))if(Buffer.from(n[1]??"","base64").toString("utf8").includes(":"))return!0;if(/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/.test(t))return!0;for(let n of t.matchAll(/[a-z][a-z0-9+.-]*:\/\/[^\s<>"']+/gi))try{let i=new URL(n[0]);if(i.password||/^https?:$/.test(i.protocol)&&i.username)return!0;for(let[r,o]of i.searchParams)if(te.test(r)&&o&&!ee.test(o))return!0;for(let[r,o]of new URLSearchParams(i.hash.slice(1)))if(te.test(r)&&o&&!ee.test(o))return!0;t=t.replace(n[0],"")}catch{}for(let n of t.matchAll(Kn))if(!ee.test((n[1]??"").replace(/^(?:bearer|basic)\s+/i,"")))return!0;return!1}var co=64*1024;var Pe=class{#e;constructor(n){let i=new Map;for(let r of n){let o=i.get(r.from)??new Set;o.add(r.to),i.set(r.from,o)}this.#e=i}canTransition(n,i){return this.#e.get(n)?.has(i)??!1}assertTransition(n,i){if(!this.canTransition(n,i))throw new Error(`Invalid state transition: ${n} -> ${i}`)}nextStates(n){return[...this.#e.get(n)??[]]}};var po=new Pe([{from:"draft",to:"planned"},{from:"draft",to:"cancelled"},{from:"planned",to:"executing"},{from:"planned",to:"cancelled"},{from:"executing",to:"verifying"},{from:"executing",to:"blocked"},{from:"executing",to:"cancelled"},{from:"verifying",to:"completed"},{from:"verifying",to:"failed"},{from:"verifying",to:"blocked"},{from:"verifying",to:"cancelled"},{from:"blocked",to:"executing"},{from:"blocked",to:"cancelled"}]);var Oe=e.object({offset:e.number().int().nonnegative(),length:e.number().int().min(1).max(4194304),sha256:e.string().regex(/^[a-f0-9]{64}$/)}),go=e.object({schema_version:e.literal(1),session_id:e.string().min(1),turn_id:e.string().min(1),run_id:e.string().startsWith("RUN-"),observed_at:e.string().datetime(),cursor:e.object({path:e.string().min(1),dev:e.number(),ino:e.number(),birthtime_ms:e.number(),size:e.number().int().nonnegative(),offset:e.number().int().nonnegative(),mtime_ms:e.number(),ctime_ms:e.number(),trusted:e.literal(!0),terminal_status:e.enum(["completed","failed","cancelled"]),session_proof:Oe,terminal_proof:Oe,anchor:Oe})});export{Pr as a,$ as b,Qe as c,Jt as d,Si as e,Xt as f,en as g,Ai as h,tt as i,rn as j,Pi as k,Mt as l,A as m,di as n,_ as o,Ze as p,Ht as q,hi as r,Gr as s,Y as t,O as u,wt as v,ao as w,Yi as x,Gi as y};
@@ -1,2 +1,2 @@
1
1
  import {createRequire as __zaipCreateRequire} from "node:module";const require=__zaipCreateRequire(import.meta.url);
2
- import{d as U,e as X,f as ee,i as J,j as H,k as te}from"./chunk-A3ZCURGS.mjs";import{Jd as t}from"./chunk-MSCWMPU5.mjs";var w="proportional-acceptance-v1",k=e=>typeof e=="string"&&e.trim().length>0&&e===e.trim(),fe=e=>typeof e=="string"&&/^[a-f0-9]{64}$/.test(e);function re(e){if(!e||typeof e!="object")return{policy_id:w,approved:!1,state:"blocked",failures:["input_invalid"],unavailable:[],optional_open:[]};let r=[],n=[],a=[];e.policy_id!==w&&r.push("policy_id"),e.evaluation!=="plan"&&e.evaluation!=="outcome"&&r.push("evaluation"),["prd","spec","dag","release"].includes(e.stage)||r.push("stage"),(!Array.isArray(e.local_platforms)||e.local_platforms.length===0||e.local_platforms.some(s=>!k(s))||new Set(e.local_platforms).size!==e.local_platforms.length)&&r.push("local_platforms"),(!Array.isArray(e.criteria)||e.criteria.length===0)&&r.push("criteria_empty"),Array.isArray(e.proofs)||r.push("proofs_invalid"),e.known_blockers===null?n.push("known_blockers"):!Array.isArray(e.known_blockers)||e.known_blockers.some(s=>!k(s))?r.push("known_blockers_invalid"):e.known_blockers.length>0&&r.push("known_blockers_open"),e.evaluation==="outcome"&&e.stage==="release"&&!fe(e.candidate_hash)&&r.push("candidate_hash");let i=Array.isArray(e.criteria)?e.criteria:[],c=Array.isArray(e.proofs)?e.proofs:[],p=new Set,u=new Set;for(let s of c)!k(s?.criterion_id)||u.has(s.criterion_id)||!["passed","failed","pending"].includes(s.status)||!k(s.locator)?r.push(`proof_invalid:${s?.criterion_id??"unknown"}`):u.add(s.criterion_id);for(let s of i){let o=s?.id??"unknown";if(!s||typeof s!="object"){r.push(`criterion_invalid:${o}`);continue}(!k(o)||p.has(o))&&r.push(`criterion_id:${o}`),p.add(o),(!s.origin||!["human_request","active_requirement","concrete_risk"].includes(s.origin.kind)||!k(s.origin.reference)||s.origin.kind==="active_requirement"&&!/^REQ-[A-Z0-9-]+$/.test(s.origin.reference)||typeof s.required!="boolean"||!["applicable","out_of_scope"].includes(s.applicability)||!k(s.applicability_reason)||!k(s.observable_outcome)||!k(s.sufficient_proof)||!k(s.owner)||!k(s.stop_condition)||!["local","github_remote"].includes(s.surface)||!k(s.platform))&&r.push(`criterion_invalid:${o}`),s.surface==="local"&&Array.isArray(e.local_platforms)&&!e.local_platforms.includes(s.platform)&&r.push(`local_platform_outside_scope:${o}`),s.required&&s.applicability!=="applicable"&&r.push(`required_out_of_scope:${o}`);let f=c.find(l=>l.criterion_id===o);s.required&&e.evaluation==="outcome"?f?f.status!=="passed"?r.push(`required_not_passed:${o}`):e.stage==="release"&&f.candidate_hash!==e.candidate_hash&&r.push(`candidate_mismatch:${o}`):n.push(`proof_missing:${o}`):!s.required&&s.applicability==="applicable"&&e.evaluation==="outcome"&&f?.status!=="passed"&&a.push(o)}i.some(s=>s?.required)||r.push("required_criteria_empty");for(let s of c)s&&!p.has(s.criterion_id)&&r.push(`orphan_proof:${s.criterion_id}`);e.stage==="release"&&e.evaluation==="outcome"&&r.length===0&&n.length===0&&n.push("release_proof_unverified");let d=r.length===0&&n.length===0;return{policy_id:w,approved:d,state:d?"approved":r.length>0?"blocked":"unavailable",failures:r,unavailable:n,optional_open:a}}function se(e){let r=[];if(e.acceptance_policy!==void 0&&e.acceptance_contract===void 0&&r.push({rule:"acceptance-policy",path:["acceptance_contract"],message:"Adopted PRD/SPEC plans require embedded proportional-acceptance-v1"}),e.acceptance_contract!==void 0&&e.acceptance_policy===void 0&&r.push({rule:"acceptance-policy",path:["acceptance_policy"],message:"Embedded acceptance contract requires explicit policy adoption"}),e.acceptance_contract===void 0)return r;let n=e.acceptance_contract,a=re(n),i=new Set([...(e.blueprints.specs??[]).flatMap(d=>d.acceptance_ids),...e.blueprints.changes.flatMap(d=>d.acceptance_ids),...e.blueprints.tasks.flatMap(d=>d.acceptance_ids)]),c=new Set(Array.isArray(n?.criteria)?n.criteria.filter(d=>d?.required).map(d=>d.id):[]),p=[...i].filter(d=>!c.has(d)),u=[...c].filter(d=>!i.has(d));return(n?.evaluation!=="plan"||n?.stage!==e.source.type&&n?.stage!=="dag"||!a.approved||p.length>0||u.length>0)&&r.push({rule:"acceptance-policy",path:["acceptance_contract"],message:`Invalid embedded acceptance contract: ${[...a.failures,...a.unavailable,...p.map(d=>`missing:${d}`),...u.map(d=>`outside-plan:${d}`)].join(", ")}`}),r}import{createHash as he}from"node:crypto";function Y(e){return he("sha256").update(JSON.stringify(G(e))).digest("hex")}function G(e){return Array.isArray(e)?e.map(G):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>[r,G(n)])):e}var h=t.string().datetime({offset:!0}),S=t.string().regex(/^[a-f0-9]{64}$/),v=t.string().startsWith("PRD-"),x=t.string().startsWith("SPEC-"),C=t.string().startsWith("CHG-"),_=t.string().startsWith("TASK-"),V=t.string().startsWith("EXEC-"),P=t.string().startsWith("REQ-"),$=t.string().startsWith("AC-"),ne=t.string().startsWith("OUT-");var O=t.object({task_id:_,depends_on:t.array(_)}).strict().superRefine((e,r)=>{e.depends_on.includes(e.task_id)&&r.addIssue({code:"custom",path:["depends_on"],message:"self dependency"}),b(e.depends_on,"depends_on",r)});function z(e){let r=new Set(e.map(p=>p.task_id)),n=new Map(e.map(p=>[p.task_id,0])),a=new Map;for(let p of e)for(let u of new Set(p.depends_on))!r.has(u)||u===p.task_id||(n.set(p.task_id,(n.get(p.task_id)??0)+1),a.set(u,[...a.get(u)??[],p.task_id]));let i=[...n].filter(([,p])=>p===0).map(([p])=>p).sort(),c=[];for(;i.length>0;){let p=i.shift();c.push(p);for(let u of(a.get(p)??[]).sort()){let d=(n.get(u)??0)-1;n.set(u,d),d===0&&(i.push(u),i.sort())}}return c}function b(e,r,n){let a=new Set;for(let i of e)a.has(i)&&n.addIssue({code:"custom",path:[r],message:`Duplicate value: ${i}`}),a.add(i)}var T=t.string().min(1).superRefine((e,r)=>{(e.includes("\\")||e.includes("\0")||e.startsWith("/")||e.startsWith("./")||/^[A-Za-z]:/.test(e)||e.split("/").some(n=>n.length===0||n==="."||n===".."))&&r.addIssue({code:"custom",message:"write_scope must be workspace-relative"})});function N(e,r){if(e===r)return!0;let n=e.search(/[*?]/),a=r.search(/[*?]/);if(n===-1&&a===-1)return!1;let i=e.slice(0,n===-1?e.length:n).replace(/\/$/,""),c=r.slice(0,a===-1?r.length:a).replace(/\/$/,"");return i===c||i.startsWith(`${c}/`)||c.startsWith(`${i}/`)}var _e=t.string().min(1).superRefine((e,r)=>{(e.toLowerCase()==="latest"||/[<>=~^*|,\s]/.test(e)||/(?:^|[.-])[xX](?:$|[.-])/.test(e))&&r.addIssue({code:"custom",message:"Expected an exact resolved version, not a range, wildcard, or moving tag"})}),ge=t.string().min(1).superRefine((e,r)=>{(e.includes("\\")||e.includes("\0")||e.startsWith("/")||e.startsWith("./")||/^[A-Za-z]:/.test(e)||e.split("/").some(n=>n.length===0||n==="."||n===".."))&&r.addIssue({code:"custom",message:"version_source must be a canonical workspace-relative file path"})}),ye=t.object({name:t.string().min(1),kind:t.enum(["language","runtime","framework","library","persistence","database","tooling","platform"]),version:_e,version_source:ge}).strict(),j=t.object({stack_profile:t.string().min(1),stack_overrides:t.record(t.string(),t.unknown()),stack_description:t.string().min(20),stack_components:t.array(ye).min(1)}).strict().superRefine((e,r)=>{e.stack_components.some(a=>a.kind==="language")||r.addIssue({code:"custom",path:["stack_components"],message:"SPEC implementation requires at least one exact programming language"});let n=e.stack_description.toLocaleLowerCase("en");for(let[a,i]of e.stack_components.entries())(!n.includes(i.name.toLocaleLowerCase("en"))||!n.includes(i.version.toLocaleLowerCase("en")))&&r.addIssue({code:"custom",path:["stack_components",a],message:`stack_description must mention ${i.name} ${i.version}`})}),ie=t.object({previous_revision:t.number().int().positive(),previous_implementation:j,actor_task_id:_.nullable(),actor_execution_id:V,actor_run_id:t.string().startsWith("RUN-"),decision_id:t.string().startsWith("DEC-HUMAN-"),delta_sha256:S,revised_at:h}).strict();async function Qe(e,r,n){if(e===null)throw new TypeError("SPEC requires an implementation stack snapshot before prepare or execute");let a=n.projectConfig?.stack;if(a===void 0)throw new TypeError("SPEC stack validation requires .agents/config/project.yaml");if(e.stack_profile!==a.id)throw new TypeError(`SPEC stack_profile ${e.stack_profile} does not match project stack.id ${a.id}`);if(W(e.stack_overrides)!==W(a.overrides))throw new TypeError("SPEC stack_overrides do not match project stack.overrides");for(let i of e.stack_components){if(!await r.exists(i.version_source))throw new TypeError(`SPEC stack component ${i.name} has missing version source ${i.version_source}`);if(!(await r.readText(i.version_source)).includes(i.version))throw new TypeError(`SPEC stack component ${i.name} version source ${i.version_source} does not contain exact version ${i.version}`)}}function W(e){return Array.isArray(e)?`[${e.map(W).join(",")}]`:e!==null&&typeof e=="object"?`{${Object.entries(e).sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>`${JSON.stringify(r)}:${W(n)}`).join(",")}}`:JSON.stringify(e)}function be(e,r){if(e.source.type!=="prd"||e.source.prd_id!==r)throw new TypeError(`Prepared plan source must be prd ${r}`);let n=e.blueprints.changes.map(a=>{if(a.source.type!=="prd"||a.source.prd_id!==r||a.source.spec_id===null)throw new TypeError(`Every PRD Change must belong to a SPEC of ${r}`);return a.source.spec_id});return[...new Set(n)].sort()}var A=t.enum(["lite","standard","critical"]),ke=t.enum(["low","medium","high","urgent"]),M=t.object({revision:t.number().int().positive(),hash:S,execution_id:V}).strict();function dt(e){return M.parse({revision:e.revision,hash:e.hash,execution_id:e.execution_id})}var E=t.discriminatedUnion("type",[t.object({type:t.literal("task"),task_id:_}).strict(),t.object({type:t.literal("spec"),spec_id:x}).strict(),t.object({type:t.literal("prd"),prd_id:v}).strict()]),Z=t.discriminatedUnion("type",[t.object({type:t.literal("task"),task_id:_}).strict(),t.object({type:t.literal("spec"),spec_id:x}).strict(),t.object({type:t.literal("prd"),prd_id:v,spec_id:x.nullable()}).strict()]),K=t.discriminatedUnion("type",[t.object({type:t.literal("none"),reason:t.string().min(1)}).strict(),t.object({type:t.literal("update"),requirement_ids:t.array(P).min(1)}).strict()]),ae=t.object({model:U,reasoning_effort:X,velocity:ee.optional()}).strict(),oe=ae.extend({client:t.string().min(1),provider:t.string().min(1)}).strict(),ce=t.object({failure_policy:t.enum(["stop_on_terminal_failure","continue_independent"]),max_parallelism:t.number().int().positive(),independent_branches:t.boolean().optional(),max_cost_usd:t.number().nonnegative().nullable().optional(),max_operational_retries:t.number().int().nonnegative(),max_repair_cycles_per_task:t.number().int().nonnegative(),soft_model_cycle_budget:t.number().int().positive().optional(),soft_input_token_budget:t.number().int().positive().optional(),context_refresh_after_cycles:t.number().int().positive().optional(),verification_mode:t.enum(["scoped","full"]).optional(),runtime_defaults:oe.optional()}).strict(),Q=ce.extend({runtime_defaults:oe.extend({model:t.union([U,t.enum(["gpt-5.6-luna","gpt-5.6-terra","gpt-5.6-sol","gpt-6-sol"])])}).optional()}),pe=t.string().regex(/^[a-z][a-z0-9-]*$/),de=t.object({key:pe,id:C,title:t.string().min(1),short_name:t.string().min(1),risk:A,source:Z,requirement_ids:t.array(P).min(1),acceptance_ids:t.array($).min(1),requirement_impact:K}).strict().superRefine((e,r)=>{b(e.requirement_ids,"requirement_ids",r),b(e.acceptance_ids,"acceptance_ids",r)}),le=t.object({id:x,title:t.string().min(1),short_name:t.string().min(1),objective:t.string().min(1),summary:t.string().min(1),risk:A,included_scope:t.array(T).min(1),excluded_scope:t.array(T),requirement_ids:t.array(P).min(1),acceptance_ids:t.array($).min(1),implementation:j,rollout:t.string().min(1),fallback:t.string().min(1),model_signals:J}).strict().superRefine((e,r)=>{b(e.included_scope,"included_scope",r),b(e.excluded_scope,"excluded_scope",r),b(e.requirement_ids,"requirement_ids",r),b(e.acceptance_ids,"acceptance_ids",r)}),ue={key:pe,id:_,change_id:C,title:t.string().min(1),short_name:t.string().min(1),objective:t.string().min(1),priority:ke,owner:t.string().min(1).nullable(),requirement_ids:t.array(P).min(1),acceptance_ids:t.array($).min(1),write_scopes:t.array(T),runtime:ae.optional()},Se=t.object({...ue,risk:A,model_profile:H.optional()}).strict().superRefine((e,r)=>{b(e.requirement_ids,"requirement_ids",r),b(e.acceptance_ids,"acceptance_ids",r),b(e.write_scopes,"write_scopes",r)}),xe=t.object({...ue,risk:A.optional(),model_signals:J.optional(),model_profile:H.optional()}).strict().superRefine((e,r)=>{b(e.requirement_ids,"requirement_ids",r),b(e.acceptance_ids,"acceptance_ids",r),b(e.write_scopes,"write_scopes",r)}),me=t.object({revision:t.number().int().positive(),source:E,execution_id:V,prepared_at:h,acceptance_policy:t.literal(w).optional(),acceptance_contract:t.custom().optional(),policy:ce,blueprints:t.object({specs:t.array(le).min(1).optional(),changes:t.array(de).min(1),tasks:t.array(xe).min(1)}).strict(),dag:t.object({nodes:t.array(O).min(1)}).strict()}).strict(),Ve=me.extend({schema_version:t.literal(2),policy:Q,blueprints:t.object({specs:t.array(le).min(1).optional(),changes:t.array(de).min(1),tasks:t.array(Se).min(1)}).strict(),dag:t.object({nodes:t.array(O).min(1),topological_order:t.array(_).min(1)}).strict(),hash:S}).strict(),L=Ve.superRefine((e,r)=>{for(let n of we(e))r.addIssue({code:"custom",path:[...n.path],message:n.message})});function Pe(e){if(e.source.type!=="task"&&(e.acceptance_policy!==w||e.acceptance_contract===void 0))throw new TypeError("New PRD/SPEC plans require explicit proportional-acceptance-v1 adoption");let r=me.parse(e),n=r.blueprints.tasks.map(c=>{let{model_signals:p,model_profile:u,...d}=c;if(r.source.type!=="task"&&p===void 0&&u===void 0)throw new Error(`${r.source.type.toUpperCase()} Task ${c.id} requires model_signals for deterministic risk classification`);if(u!==void 0){if(c.risk!==void 0&&c.risk!==u.risk)throw new Error(`Task ${c.id} risk ${c.risk} does not match classified risk ${u.risk}`);return{...d,risk:u.risk,model_profile:u}}if(p===void 0){if(c.risk===void 0)throw new Error(`Task-first blueprint ${c.id} requires explicit risk`);return{...d,risk:c.risk}}let s=te(p);if(c.risk!==void 0&&c.risk!==s.risk)throw new Error(`Task ${c.id} risk ${c.risk} does not match classified risk ${s.risk}`);return{...d,risk:s.risk,model_profile:s}}),a=z(r.dag.nodes),i={schema_version:2,...r,blueprints:{...r.blueprints,tasks:n},dag:{...r.dag,topological_order:a}};return L.parse({...i,hash:Y(i)})}function lt(e){if(e.source.type==="task")throw new TypeError("Task-first plans keep their existing proportional assurance contract");if(e.acceptance_contract===void 0)throw new TypeError("New PRD/SPEC plans require an acceptance contract");return Pe({...e,acceptance_policy:w})}function we(e){let r=se(e),n=new Map(e.blueprints.changes.map(s=>[s.id,s])),a=new Map(e.blueprints.tasks.map(s=>[s.id,s])),i=new Map((e.blueprints.specs??[]).map(s=>[s.id,s]));q(e.blueprints.changes.map(s=>s.key),"duplicate-key",["blueprints","changes"],r),q((e.blueprints.specs??[]).map(s=>s.id),"duplicate-id",["blueprints","specs"],r),q(e.blueprints.tasks.map(s=>s.key),"duplicate-key",["blueprints","tasks"],r),q([...e.blueprints.changes,...e.blueprints.tasks].map(s=>s.id),"duplicate-id",["blueprints"],r);for(let[s,o]of e.blueprints.tasks.entries()){o.model_profile!==void 0&&o.risk!==o.model_profile.risk&&r.push({rule:"risk-classification",path:["blueprints","tasks",s,"risk"],message:`Task risk ${o.risk} does not match classified risk ${o.model_profile.risk}`});let f=n.get(o.change_id);if(f===void 0){r.push({rule:"missing-change",path:["blueprints","tasks",s,"change_id"],message:`${o.change_id} does not resolve`});continue}for(let l of o.requirement_ids)f.requirement_ids.includes(l)||r.push({rule:"requirement-outside-change",path:["blueprints","tasks",s,"requirement_ids"],message:`${l} is absent from ${f.id}`});for(let l of o.acceptance_ids)f.acceptance_ids.includes(l)||r.push({rule:"acceptance-outside-change",path:["blueprints","tasks",s,"acceptance_ids"],message:`${l} is absent from ${f.id}`})}for(let[s,o]of e.blueprints.changes.entries())[...a.values()].some(f=>f.change_id===o.id)||r.push({rule:"change-without-task",path:["blueprints","changes",s],message:`${o.id} has no task`}),$e(e.source,o.source)||r.push({rule:"source-mismatch",path:["blueprints","changes",s,"source"],message:`${o.id} source does not match the prepared plan source`}),e.source.type==="prd"&&o.source.type==="prd"&&o.source.spec_id===null&&r.push({rule:"prd-change-without-spec",path:["blueprints","changes",s,"source","spec_id"],message:`${o.id} must belong to a SPEC of ${e.source.prd_id}`}),e.source.type==="prd"&&o.source.type==="prd"&&o.source.spec_id!==null&&e.blueprints.specs!==void 0&&!i.has(o.source.spec_id)&&r.push({rule:"missing-spec-blueprint",path:["blueprints","changes",s,"source","spec_id"],message:`${o.source.spec_id} requires a composite SPEC blueprint`});if(e.blueprints.specs!==void 0&&e.source.type==="prd"){let s=e.source.prd_id,o=new Set(e.blueprints.changes.flatMap(l=>l.source.type==="prd"&&l.source.prd_id===s?[l.source.spec_id]:[]));for(let[l,m]of e.blueprints.specs.entries()){o.has(m.id)||r.push({rule:"orphan-spec-blueprint",path:["blueprints","specs",l,"id"],message:`${m.id} has no PRD Change`});for(let g of m.requirement_ids)e.blueprints.changes.some(y=>y.source.type==="prd"&&y.source.spec_id===m.id&&y.requirement_ids.includes(g))||r.push({rule:"orphan-spec-blueprint",path:["blueprints","specs",l,"requirement_ids"],message:`${g} is not used by ${m.id}`});for(let g of m.acceptance_ids)e.blueprints.changes.some(y=>y.source.type==="prd"&&y.source.spec_id===m.id&&y.acceptance_ids.includes(g))||r.push({rule:"orphan-spec-blueprint",path:["blueprints","specs",l,"acceptance_ids"],message:`${g} is not used by ${m.id}`})}let f=new Map(e.blueprints.tasks.map(l=>{let m=n.get(l.change_id);return[l.id,m?.source.type==="prd"?m.source.spec_id:null]}));for(let[l,m]of e.dag.nodes.entries())for(let g of m.depends_on){let y=f.get(m.task_id),I=f.get(g);y!==null&&I!==null&&y!==I&&r.push({rule:"cross-spec-dependency",path:["dag","nodes",l,"depends_on"],message:`${m.task_id} crosses SPEC boundary; compose it into one SPEC instead`})}for(let l=0;l<e.blueprints.specs.length;l+=1)for(let m=l+1;m<e.blueprints.specs.length;m+=1){let g=e.blueprints.specs[l],y=e.blueprints.specs[m];if(g===void 0||y===void 0)continue;let I=g.included_scope.find(B=>y.included_scope.some(F=>N(B,F)));I!==void 0&&r.push({rule:"overlapping-spec-scope",path:["blueprints","specs"],message:`${g.id} and ${y.id} overlap at ${I}; compose them into one SPEC`})}}e.source.type==="spec"&&e.blueprints.specs!==void 0&&(e.blueprints.specs.length!==1||e.blueprints.specs[0]?.id!==e.source.spec_id)&&r.push({rule:"missing-spec-blueprint",path:["blueprints","specs"],message:`SPEC plan must contain exactly its source blueprint ${e.source.spec_id}`}),e.source.type==="task"&&!a.has(e.source.task_id)&&r.push({rule:"missing-task",path:["source","task_id"],message:`${e.source.task_id} does not resolve`});let c=new Map(e.dag.nodes.map(s=>[s.task_id,s]));q(e.dag.nodes.map(s=>s.task_id),"duplicate-id",["dag","nodes"],r);for(let s of a.values())c.has(s.id)||r.push({rule:"missing-task",path:["dag","nodes"],message:`${s.id} is missing from the DAG`});for(let[s,o]of e.dag.nodes.entries()){a.has(o.task_id)||r.push({rule:"missing-task",path:["dag","nodes",s,"task_id"],message:`${o.task_id} does not resolve`});for(let f of o.depends_on)f===o.task_id?r.push({rule:"self-dependency",path:["dag","nodes",s,"depends_on"],message:`${o.task_id} depends on itself`}):a.has(f)||r.push({rule:"missing-dependency",path:["dag","nodes",s,"depends_on"],message:`${f} does not resolve`})}let p=z(e.dag.nodes);if(p.length!==a.size?r.push({rule:"cycle",path:["dag"],message:"DAG contains a cycle"}):JSON.stringify(p)!==JSON.stringify(e.dag.topological_order)&&r.push({rule:"topological-order",path:["dag","topological_order"],message:"topological_order is not canonical"}),p.length===a.size){let s=ve(e.dag.nodes),o=[...a.values()];for(let f=0;f<o.length;f+=1)for(let l=f+1;l<o.length;l+=1){let m=o[f],g=o[l];if(m===void 0||g===void 0)continue;let y=m.write_scopes.find(B=>g.write_scopes.some(F=>N(B,F)));if(y===void 0)continue;s.get(m.id)?.has(g.id)===!0||s.get(g.id)?.has(m.id)===!0||r.push({rule:"overlapping-write-scope",path:["blueprints","tasks"],message:`${m.id} and ${g.id} may overlap at ${y}; add a DAG dependency`})}}let{hash:u,...d}=e;return Y(d)!==e.hash&&r.push({rule:"hash",path:["hash"],message:"prepared plan hash does not match"}),r}function ve(e){let r=new Map(e.map(i=>[i.task_id,i.depends_on])),n=new Map,a=(i,c)=>{let p=n.get(i);if(p!==void 0)return p;if(c.has(i))return new Set;let u=new Set;for(let d of r.get(i)??[]){u.add(d);for(let s of a(d,new Set([...c,i])))u.add(s)}return n.set(i,u),u};for(let i of r.keys())a(i,new Set);return n}function $e(e,r){return e.type!==r.type?!1:e.type==="task"&&r.type==="task"?e.task_id===r.task_id:e.type==="spec"&&r.type==="spec"?e.spec_id===r.spec_id:e.type==="prd"&&r.type==="prd"&&e.prd_id===r.prd_id}function q(e,r,n,a){let i=new Set;for(let c of e)i.has(c)&&a.push({rule:r,path:n,message:`Duplicate value: ${c}`}),i.add(c)}var Ie=t.object({schema_version:t.literal(2),id:v,revision:t.number().int().positive(),title:t.string().min(1),target_release:t.string().regex(/^[1-9]\d*\.(?:0|[1-9]\d*)$/).nullable().default(null),status:t.enum(["draft","ready","active","delivered","blocked","failed","cancelled"]),status_reason:t.string().min(1).nullable().default(null),outcome_status:t.enum(["unmeasured","measuring","met","not_met","inconclusive"]),problem:t.string().min(1),audiences:t.array(t.string().min(1)),outcomes:t.array(t.string().min(1)),outcome_ids:t.array(ne),constraints:t.array(t.string().min(1)),non_goals:t.array(t.string().min(1)),prepared_plan:L.nullable(),plan_ref:M.nullable().default(null),creation_run_id:t.string().startsWith("RUN-").nullable().default(null),rework_of_prd_id:v.nullable().default(null),tags:t.array(t.string().min(1)).default([]),created_at:h,updated_at:h}).strict().superRefine((e,r)=>{e.prepared_plan!==null&&e.plan_ref!==null&&r.addIssue({code:"custom",message:"PRD cannot contain prepared_plan and plan_ref"}),e.outcome_ids.length!==e.outcomes.length&&r.addIssue({code:"custom",path:["outcome_ids"],message:"PRD outcome_ids must identify every declared outcome exactly once"}),new Set(e.outcome_ids).size!==e.outcome_ids.length&&r.addIssue({code:"custom",path:["outcome_ids"],message:"PRD outcome_ids must be unique"})}),kt=t.preprocess(Oe,Ie),St=t.object({schema_version:t.literal(2),id:x,prd_id:v.nullable(),revision:t.number().int().positive(),title:t.string().min(1),target_release:t.string().regex(/^[1-9]\d*\.(?:0|[1-9]\d*)$/).nullable().default(null),release_retarget:t.object({from:t.string().regex(/^[1-9]\d*\.(?:0|[1-9]\d*)$/),to:t.string().regex(/^[1-9]\d*\.(?:0|[1-9]\d*)$/),adoption_main_sha:t.string().regex(/^[a-f0-9]{40}$/i),actor_run_id:t.string().startsWith("RUN-"),adopted_at:h,retargeted_at:h}).strict().nullable().default(null),status:t.enum(["draft","ready","active","delivered","blocked","failed","cancelled"]),status_reason:t.string().min(1).nullable().default(null),objective:t.string().min(1),included_scope:t.array(t.string().min(1)),excluded_scope:t.array(t.string().min(1)),requirement_ids:t.array(P),acceptance_ids:t.array($),implementation:j.nullable().default(null),implementation_revisions:t.array(ie).optional(),prepared_plan:L.nullable(),plan_ref:M.nullable().default(null),creation_run_id:t.string().startsWith("RUN-").nullable().default(null),created_at:h,updated_at:h}).strict().superRefine((e,r)=>{e.prepared_plan!==null&&e.plan_ref!==null&&r.addIssue({code:"custom",message:"SPEC cannot contain prepared_plan and plan_ref"})}),xt=t.object({schema_version:t.literal(2),id:C,revision:t.number().int().positive(),title:t.string().min(1),status:t.enum(["draft","planned","executing","verifying","completed","failed","blocked","cancelled"]),status_reason:t.string().min(1).nullable().optional(),risk:A,source:Z,requirement_ids:t.array(P).min(1),acceptance_ids:t.array($).min(1),requirement_impact:K,task_ids:t.array(_).min(1),plan_revision:t.number().int().positive().nullable(),plan_hash:S.nullable(),created_at:h,updated_at:h,started_at:h.nullable(),finished_at:h.nullable(),result:t.string().min(1).nullable()}).strict().superRefine((e,r)=>{let n=e.plan_revision===null&&e.plan_hash===null;e.status==="draft"||(e.status==="blocked"||e.status==="cancelled")&&n?n||r.addIssue({code:"custom",message:"draft Change cannot contain a prepared plan"}):(n||e.plan_revision===null||e.plan_hash===null)&&r.addIssue({code:"custom",message:`${e.status} Change requires plan_revision and plan_hash`}),["completed","failed","cancelled"].includes(e.status)&&(e.finished_at===null||e.result===null)&&r.addIssue({code:"custom",message:"terminal Change requires finished_at and result"}),["executing","verifying","completed"].includes(e.status)&&e.started_at===null&&r.addIssue({code:"custom",message:`${e.status} Change requires started_at`})}),R=t.object({task_id:_,change_id:C,depends_on:t.array(_)}).strict(),Ce=t.object({max_total_invocations:t.number().int().positive().nullable(),cancelled:t.boolean().default(!1),finalizer_scope:t.enum(["spec","parent"]).default("spec")}).strict(),Ae=t.record(x,Ce).optional(),D={schema_version:t.literal(2),id:V,parent_execution_id:V.nullable().optional(),revision:t.number().int().positive(),status:t.enum(["planned","running","paused","verifying","completed","failed","blocked","cancelled"]),status_reason:t.string().min(1).nullable().optional(),policy:Q,spec_execution_policies:Ae,created_at:h,updated_at:h,started_at:h.nullable(),finished_at:h.nullable(),result:t.string().min(1).nullable()},Ee=t.object({...D,kind:t.literal("delivery").optional(),client_turn_id:t.string().min(1).max(200).nullable().optional(),origin:E,plan_revision:t.number().int().positive(),plan_hash:S,dag:t.object({nodes:t.array(R).min(1),topological_order:t.array(_).min(1)}).strict()}).strict(),je=t.object({...D,kind:t.literal("delivery"),client_turn_id:t.string().min(1).max(200),origin:E,status:t.enum(["planned","blocked"]),plan_revision:t.null(),plan_hash:t.null(),dag:t.object({nodes:t.array(R).length(0),topological_order:t.array(_).length(0)}).strict()}).strict(),qe=t.object({...D,kind:t.literal("delivery"),client_turn_id:t.string().min(1).max(200).nullable().optional(),origin:E,status:t.literal("cancelled"),plan_revision:t.null(),plan_hash:t.null(),dag:t.object({nodes:t.array(R).length(0),topological_order:t.array(_).length(0)}).strict()}).strict(),Re=t.object({...D,kind:t.literal("interaction"),client_turn_id:t.string().min(1).max(200),origin:t.object({type:t.literal("interaction"),conversation_id:t.string().startsWith("CONV-")}).strict(),plan_revision:t.null(),plan_hash:t.null(),dag:t.object({nodes:t.array(R).length(0),topological_order:t.array(_).length(0)}).strict()}).strict(),De=t.object({...D,kind:t.literal("interaction"),client_turn_id:t.string().min(1).max(200).nullable().optional(),origin:E,plan_revision:t.null(),plan_hash:t.null(),dag:t.object({nodes:t.array(R).length(0),topological_order:t.array(_).length(0)}).strict()}).strict(),Vt=t.union([Re,De,qe,je,Ee]).superRefine((e,r)=>{e.status==="blocked"&&e.status_reason==null&&r.addIssue({code:"custom",message:"blocked Execution requires status_reason"}),["completed","failed","cancelled"].includes(e.status)&&(e.finished_at===null||e.result===null)&&r.addIssue({code:"custom",message:"terminal Execution requires finished_at and result"}),["running","paused","verifying","completed"].includes(e.status)&&e.started_at===null&&r.addIssue({code:"custom",message:`${e.status} Execution requires started_at`})});function Oe(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let r=e;return Object.hasOwn(r,"outcome_ids")||typeof r.id!="string"||!Array.isArray(r.outcomes)?e:{...r,outcome_ids:ze(r.id,r.outcomes)}}function ze(e,r){let n=e.replace(/^PRD-/,"OUT-");return r.map((a,i)=>`${n}-${String(i+1).padStart(2,"0")}`)}export{O as a,z as b,N as c,ye as d,j as e,ie as f,Qe as g,be as h,A as i,ke as j,M as k,dt as l,E as m,Z as n,K as o,ae as p,oe as q,ce as r,Q as s,de as t,le as u,Se as v,L as w,Pe as x,lt as y,we as z,kt as A,St as B,xt as C,R as D,Ce as E,Ae as F,Vt as G,ze as H};
2
+ import{d as U,e as X,f as ee,i as J,j as H,k as te}from"./chunk-CJ5ZQF6M.mjs";import{Jd as t}from"./chunk-MSCWMPU5.mjs";var w="proportional-acceptance-v1",k=e=>typeof e=="string"&&e.trim().length>0&&e===e.trim(),fe=e=>typeof e=="string"&&/^[a-f0-9]{64}$/.test(e);function re(e){if(!e||typeof e!="object")return{policy_id:w,approved:!1,state:"blocked",failures:["input_invalid"],unavailable:[],optional_open:[]};let r=[],n=[],a=[];e.policy_id!==w&&r.push("policy_id"),e.evaluation!=="plan"&&e.evaluation!=="outcome"&&r.push("evaluation"),["prd","spec","dag","release"].includes(e.stage)||r.push("stage"),(!Array.isArray(e.local_platforms)||e.local_platforms.length===0||e.local_platforms.some(s=>!k(s))||new Set(e.local_platforms).size!==e.local_platforms.length)&&r.push("local_platforms"),(!Array.isArray(e.criteria)||e.criteria.length===0)&&r.push("criteria_empty"),Array.isArray(e.proofs)||r.push("proofs_invalid"),e.known_blockers===null?n.push("known_blockers"):!Array.isArray(e.known_blockers)||e.known_blockers.some(s=>!k(s))?r.push("known_blockers_invalid"):e.known_blockers.length>0&&r.push("known_blockers_open"),e.evaluation==="outcome"&&e.stage==="release"&&!fe(e.candidate_hash)&&r.push("candidate_hash");let i=Array.isArray(e.criteria)?e.criteria:[],c=Array.isArray(e.proofs)?e.proofs:[],p=new Set,u=new Set;for(let s of c)!k(s?.criterion_id)||u.has(s.criterion_id)||!["passed","failed","pending"].includes(s.status)||!k(s.locator)?r.push(`proof_invalid:${s?.criterion_id??"unknown"}`):u.add(s.criterion_id);for(let s of i){let o=s?.id??"unknown";if(!s||typeof s!="object"){r.push(`criterion_invalid:${o}`);continue}(!k(o)||p.has(o))&&r.push(`criterion_id:${o}`),p.add(o),(!s.origin||!["human_request","active_requirement","concrete_risk"].includes(s.origin.kind)||!k(s.origin.reference)||s.origin.kind==="active_requirement"&&!/^REQ-[A-Z0-9-]+$/.test(s.origin.reference)||typeof s.required!="boolean"||!["applicable","out_of_scope"].includes(s.applicability)||!k(s.applicability_reason)||!k(s.observable_outcome)||!k(s.sufficient_proof)||!k(s.owner)||!k(s.stop_condition)||!["local","github_remote"].includes(s.surface)||!k(s.platform))&&r.push(`criterion_invalid:${o}`),s.surface==="local"&&Array.isArray(e.local_platforms)&&!e.local_platforms.includes(s.platform)&&r.push(`local_platform_outside_scope:${o}`),s.required&&s.applicability!=="applicable"&&r.push(`required_out_of_scope:${o}`);let f=c.find(l=>l.criterion_id===o);s.required&&e.evaluation==="outcome"?f?f.status!=="passed"?r.push(`required_not_passed:${o}`):e.stage==="release"&&f.candidate_hash!==e.candidate_hash&&r.push(`candidate_mismatch:${o}`):n.push(`proof_missing:${o}`):!s.required&&s.applicability==="applicable"&&e.evaluation==="outcome"&&f?.status!=="passed"&&a.push(o)}i.some(s=>s?.required)||r.push("required_criteria_empty");for(let s of c)s&&!p.has(s.criterion_id)&&r.push(`orphan_proof:${s.criterion_id}`);e.stage==="release"&&e.evaluation==="outcome"&&r.length===0&&n.length===0&&n.push("release_proof_unverified");let d=r.length===0&&n.length===0;return{policy_id:w,approved:d,state:d?"approved":r.length>0?"blocked":"unavailable",failures:r,unavailable:n,optional_open:a}}function se(e){let r=[];if(e.acceptance_policy!==void 0&&e.acceptance_contract===void 0&&r.push({rule:"acceptance-policy",path:["acceptance_contract"],message:"Adopted PRD/SPEC plans require embedded proportional-acceptance-v1"}),e.acceptance_contract!==void 0&&e.acceptance_policy===void 0&&r.push({rule:"acceptance-policy",path:["acceptance_policy"],message:"Embedded acceptance contract requires explicit policy adoption"}),e.acceptance_contract===void 0)return r;let n=e.acceptance_contract,a=re(n),i=new Set([...(e.blueprints.specs??[]).flatMap(d=>d.acceptance_ids),...e.blueprints.changes.flatMap(d=>d.acceptance_ids),...e.blueprints.tasks.flatMap(d=>d.acceptance_ids)]),c=new Set(Array.isArray(n?.criteria)?n.criteria.filter(d=>d?.required).map(d=>d.id):[]),p=[...i].filter(d=>!c.has(d)),u=[...c].filter(d=>!i.has(d));return(n?.evaluation!=="plan"||n?.stage!==e.source.type&&n?.stage!=="dag"||!a.approved||p.length>0||u.length>0)&&r.push({rule:"acceptance-policy",path:["acceptance_contract"],message:`Invalid embedded acceptance contract: ${[...a.failures,...a.unavailable,...p.map(d=>`missing:${d}`),...u.map(d=>`outside-plan:${d}`)].join(", ")}`}),r}import{createHash as he}from"node:crypto";function Y(e){return he("sha256").update(JSON.stringify(G(e))).digest("hex")}function G(e){return Array.isArray(e)?e.map(G):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>[r,G(n)])):e}var h=t.string().datetime({offset:!0}),S=t.string().regex(/^[a-f0-9]{64}$/),v=t.string().startsWith("PRD-"),x=t.string().startsWith("SPEC-"),C=t.string().startsWith("CHG-"),_=t.string().startsWith("TASK-"),V=t.string().startsWith("EXEC-"),P=t.string().startsWith("REQ-"),$=t.string().startsWith("AC-"),ne=t.string().startsWith("OUT-");var O=t.object({task_id:_,depends_on:t.array(_)}).strict().superRefine((e,r)=>{e.depends_on.includes(e.task_id)&&r.addIssue({code:"custom",path:["depends_on"],message:"self dependency"}),b(e.depends_on,"depends_on",r)});function z(e){let r=new Set(e.map(p=>p.task_id)),n=new Map(e.map(p=>[p.task_id,0])),a=new Map;for(let p of e)for(let u of new Set(p.depends_on))!r.has(u)||u===p.task_id||(n.set(p.task_id,(n.get(p.task_id)??0)+1),a.set(u,[...a.get(u)??[],p.task_id]));let i=[...n].filter(([,p])=>p===0).map(([p])=>p).sort(),c=[];for(;i.length>0;){let p=i.shift();c.push(p);for(let u of(a.get(p)??[]).sort()){let d=(n.get(u)??0)-1;n.set(u,d),d===0&&(i.push(u),i.sort())}}return c}function b(e,r,n){let a=new Set;for(let i of e)a.has(i)&&n.addIssue({code:"custom",path:[r],message:`Duplicate value: ${i}`}),a.add(i)}var T=t.string().min(1).superRefine((e,r)=>{(e.includes("\\")||e.includes("\0")||e.startsWith("/")||e.startsWith("./")||/^[A-Za-z]:/.test(e)||e.split("/").some(n=>n.length===0||n==="."||n===".."))&&r.addIssue({code:"custom",message:"write_scope must be workspace-relative"})});function N(e,r){if(e===r)return!0;let n=e.search(/[*?]/),a=r.search(/[*?]/);if(n===-1&&a===-1)return!1;let i=e.slice(0,n===-1?e.length:n).replace(/\/$/,""),c=r.slice(0,a===-1?r.length:a).replace(/\/$/,"");return i===c||i.startsWith(`${c}/`)||c.startsWith(`${i}/`)}var _e=t.string().min(1).superRefine((e,r)=>{(e.toLowerCase()==="latest"||/[<>=~^*|,\s]/.test(e)||/(?:^|[.-])[xX](?:$|[.-])/.test(e))&&r.addIssue({code:"custom",message:"Expected an exact resolved version, not a range, wildcard, or moving tag"})}),ge=t.string().min(1).superRefine((e,r)=>{(e.includes("\\")||e.includes("\0")||e.startsWith("/")||e.startsWith("./")||/^[A-Za-z]:/.test(e)||e.split("/").some(n=>n.length===0||n==="."||n===".."))&&r.addIssue({code:"custom",message:"version_source must be a canonical workspace-relative file path"})}),ye=t.object({name:t.string().min(1),kind:t.enum(["language","runtime","framework","library","persistence","database","tooling","platform"]),version:_e,version_source:ge}).strict(),j=t.object({stack_profile:t.string().min(1),stack_overrides:t.record(t.string(),t.unknown()),stack_description:t.string().min(20),stack_components:t.array(ye).min(1)}).strict().superRefine((e,r)=>{e.stack_components.some(a=>a.kind==="language")||r.addIssue({code:"custom",path:["stack_components"],message:"SPEC implementation requires at least one exact programming language"});let n=e.stack_description.toLocaleLowerCase("en");for(let[a,i]of e.stack_components.entries())(!n.includes(i.name.toLocaleLowerCase("en"))||!n.includes(i.version.toLocaleLowerCase("en")))&&r.addIssue({code:"custom",path:["stack_components",a],message:`stack_description must mention ${i.name} ${i.version}`})}),ie=t.object({previous_revision:t.number().int().positive(),previous_implementation:j,actor_task_id:_.nullable(),actor_execution_id:V,actor_run_id:t.string().startsWith("RUN-"),decision_id:t.string().startsWith("DEC-HUMAN-"),delta_sha256:S,revised_at:h}).strict();async function Qe(e,r,n){if(e===null)throw new TypeError("SPEC requires an implementation stack snapshot before prepare or execute");let a=n.projectConfig?.stack;if(a===void 0)throw new TypeError("SPEC stack validation requires .agents/config/project.yaml");if(e.stack_profile!==a.id)throw new TypeError(`SPEC stack_profile ${e.stack_profile} does not match project stack.id ${a.id}`);if(W(e.stack_overrides)!==W(a.overrides))throw new TypeError("SPEC stack_overrides do not match project stack.overrides");for(let i of e.stack_components){if(!await r.exists(i.version_source))throw new TypeError(`SPEC stack component ${i.name} has missing version source ${i.version_source}`);if(!(await r.readText(i.version_source)).includes(i.version))throw new TypeError(`SPEC stack component ${i.name} version source ${i.version_source} does not contain exact version ${i.version}`)}}function W(e){return Array.isArray(e)?`[${e.map(W).join(",")}]`:e!==null&&typeof e=="object"?`{${Object.entries(e).sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>`${JSON.stringify(r)}:${W(n)}`).join(",")}}`:JSON.stringify(e)}function be(e,r){if(e.source.type!=="prd"||e.source.prd_id!==r)throw new TypeError(`Prepared plan source must be prd ${r}`);let n=e.blueprints.changes.map(a=>{if(a.source.type!=="prd"||a.source.prd_id!==r||a.source.spec_id===null)throw new TypeError(`Every PRD Change must belong to a SPEC of ${r}`);return a.source.spec_id});return[...new Set(n)].sort()}var A=t.enum(["lite","standard","critical"]),ke=t.enum(["low","medium","high","urgent"]),M=t.object({revision:t.number().int().positive(),hash:S,execution_id:V}).strict();function dt(e){return M.parse({revision:e.revision,hash:e.hash,execution_id:e.execution_id})}var E=t.discriminatedUnion("type",[t.object({type:t.literal("task"),task_id:_}).strict(),t.object({type:t.literal("spec"),spec_id:x}).strict(),t.object({type:t.literal("prd"),prd_id:v}).strict()]),Z=t.discriminatedUnion("type",[t.object({type:t.literal("task"),task_id:_}).strict(),t.object({type:t.literal("spec"),spec_id:x}).strict(),t.object({type:t.literal("prd"),prd_id:v,spec_id:x.nullable()}).strict()]),K=t.discriminatedUnion("type",[t.object({type:t.literal("none"),reason:t.string().min(1)}).strict(),t.object({type:t.literal("update"),requirement_ids:t.array(P).min(1)}).strict()]),ae=t.object({model:U,reasoning_effort:X,velocity:ee.optional()}).strict(),oe=ae.extend({client:t.string().min(1),provider:t.string().min(1)}).strict(),ce=t.object({failure_policy:t.enum(["stop_on_terminal_failure","continue_independent"]),max_parallelism:t.number().int().positive(),independent_branches:t.boolean().optional(),max_cost_usd:t.number().nonnegative().nullable().optional(),max_operational_retries:t.number().int().nonnegative(),max_repair_cycles_per_task:t.number().int().nonnegative(),soft_model_cycle_budget:t.number().int().positive().optional(),soft_input_token_budget:t.number().int().positive().optional(),context_refresh_after_cycles:t.number().int().positive().optional(),verification_mode:t.enum(["scoped","full"]).optional(),runtime_defaults:oe.optional()}).strict(),Q=ce.extend({runtime_defaults:oe.extend({model:t.union([U,t.enum(["gpt-5.6-luna","gpt-5.6-terra","gpt-5.6-sol","gpt-6-sol"])])}).optional()}),pe=t.string().regex(/^[a-z][a-z0-9-]*$/),de=t.object({key:pe,id:C,title:t.string().min(1),short_name:t.string().min(1),risk:A,source:Z,requirement_ids:t.array(P).min(1),acceptance_ids:t.array($).min(1),requirement_impact:K}).strict().superRefine((e,r)=>{b(e.requirement_ids,"requirement_ids",r),b(e.acceptance_ids,"acceptance_ids",r)}),le=t.object({id:x,title:t.string().min(1),short_name:t.string().min(1),objective:t.string().min(1),summary:t.string().min(1),risk:A,included_scope:t.array(T).min(1),excluded_scope:t.array(T),requirement_ids:t.array(P).min(1),acceptance_ids:t.array($).min(1),implementation:j,rollout:t.string().min(1),fallback:t.string().min(1),model_signals:J}).strict().superRefine((e,r)=>{b(e.included_scope,"included_scope",r),b(e.excluded_scope,"excluded_scope",r),b(e.requirement_ids,"requirement_ids",r),b(e.acceptance_ids,"acceptance_ids",r)}),ue={key:pe,id:_,change_id:C,title:t.string().min(1),short_name:t.string().min(1),objective:t.string().min(1),priority:ke,owner:t.string().min(1).nullable(),requirement_ids:t.array(P).min(1),acceptance_ids:t.array($).min(1),write_scopes:t.array(T),runtime:ae.optional()},Se=t.object({...ue,risk:A,model_profile:H.optional()}).strict().superRefine((e,r)=>{b(e.requirement_ids,"requirement_ids",r),b(e.acceptance_ids,"acceptance_ids",r),b(e.write_scopes,"write_scopes",r)}),xe=t.object({...ue,risk:A.optional(),model_signals:J.optional(),model_profile:H.optional()}).strict().superRefine((e,r)=>{b(e.requirement_ids,"requirement_ids",r),b(e.acceptance_ids,"acceptance_ids",r),b(e.write_scopes,"write_scopes",r)}),me=t.object({revision:t.number().int().positive(),source:E,execution_id:V,prepared_at:h,acceptance_policy:t.literal(w).optional(),acceptance_contract:t.custom().optional(),policy:ce,blueprints:t.object({specs:t.array(le).min(1).optional(),changes:t.array(de).min(1),tasks:t.array(xe).min(1)}).strict(),dag:t.object({nodes:t.array(O).min(1)}).strict()}).strict(),Ve=me.extend({schema_version:t.literal(2),policy:Q,blueprints:t.object({specs:t.array(le).min(1).optional(),changes:t.array(de).min(1),tasks:t.array(Se).min(1)}).strict(),dag:t.object({nodes:t.array(O).min(1),topological_order:t.array(_).min(1)}).strict(),hash:S}).strict(),L=Ve.superRefine((e,r)=>{for(let n of we(e))r.addIssue({code:"custom",path:[...n.path],message:n.message})});function Pe(e){if(e.source.type!=="task"&&(e.acceptance_policy!==w||e.acceptance_contract===void 0))throw new TypeError("New PRD/SPEC plans require explicit proportional-acceptance-v1 adoption");let r=me.parse(e),n=r.blueprints.tasks.map(c=>{let{model_signals:p,model_profile:u,...d}=c;if(r.source.type!=="task"&&p===void 0&&u===void 0)throw new Error(`${r.source.type.toUpperCase()} Task ${c.id} requires model_signals for deterministic risk classification`);if(u!==void 0){if(c.risk!==void 0&&c.risk!==u.risk)throw new Error(`Task ${c.id} risk ${c.risk} does not match classified risk ${u.risk}`);return{...d,risk:u.risk,model_profile:u}}if(p===void 0){if(c.risk===void 0)throw new Error(`Task-first blueprint ${c.id} requires explicit risk`);return{...d,risk:c.risk}}let s=te(p);if(c.risk!==void 0&&c.risk!==s.risk)throw new Error(`Task ${c.id} risk ${c.risk} does not match classified risk ${s.risk}`);return{...d,risk:s.risk,model_profile:s}}),a=z(r.dag.nodes),i={schema_version:2,...r,blueprints:{...r.blueprints,tasks:n},dag:{...r.dag,topological_order:a}};return L.parse({...i,hash:Y(i)})}function lt(e){if(e.source.type==="task")throw new TypeError("Task-first plans keep their existing proportional assurance contract");if(e.acceptance_contract===void 0)throw new TypeError("New PRD/SPEC plans require an acceptance contract");return Pe({...e,acceptance_policy:w})}function we(e){let r=se(e),n=new Map(e.blueprints.changes.map(s=>[s.id,s])),a=new Map(e.blueprints.tasks.map(s=>[s.id,s])),i=new Map((e.blueprints.specs??[]).map(s=>[s.id,s]));q(e.blueprints.changes.map(s=>s.key),"duplicate-key",["blueprints","changes"],r),q((e.blueprints.specs??[]).map(s=>s.id),"duplicate-id",["blueprints","specs"],r),q(e.blueprints.tasks.map(s=>s.key),"duplicate-key",["blueprints","tasks"],r),q([...e.blueprints.changes,...e.blueprints.tasks].map(s=>s.id),"duplicate-id",["blueprints"],r);for(let[s,o]of e.blueprints.tasks.entries()){o.model_profile!==void 0&&o.risk!==o.model_profile.risk&&r.push({rule:"risk-classification",path:["blueprints","tasks",s,"risk"],message:`Task risk ${o.risk} does not match classified risk ${o.model_profile.risk}`});let f=n.get(o.change_id);if(f===void 0){r.push({rule:"missing-change",path:["blueprints","tasks",s,"change_id"],message:`${o.change_id} does not resolve`});continue}for(let l of o.requirement_ids)f.requirement_ids.includes(l)||r.push({rule:"requirement-outside-change",path:["blueprints","tasks",s,"requirement_ids"],message:`${l} is absent from ${f.id}`});for(let l of o.acceptance_ids)f.acceptance_ids.includes(l)||r.push({rule:"acceptance-outside-change",path:["blueprints","tasks",s,"acceptance_ids"],message:`${l} is absent from ${f.id}`})}for(let[s,o]of e.blueprints.changes.entries())[...a.values()].some(f=>f.change_id===o.id)||r.push({rule:"change-without-task",path:["blueprints","changes",s],message:`${o.id} has no task`}),$e(e.source,o.source)||r.push({rule:"source-mismatch",path:["blueprints","changes",s,"source"],message:`${o.id} source does not match the prepared plan source`}),e.source.type==="prd"&&o.source.type==="prd"&&o.source.spec_id===null&&r.push({rule:"prd-change-without-spec",path:["blueprints","changes",s,"source","spec_id"],message:`${o.id} must belong to a SPEC of ${e.source.prd_id}`}),e.source.type==="prd"&&o.source.type==="prd"&&o.source.spec_id!==null&&e.blueprints.specs!==void 0&&!i.has(o.source.spec_id)&&r.push({rule:"missing-spec-blueprint",path:["blueprints","changes",s,"source","spec_id"],message:`${o.source.spec_id} requires a composite SPEC blueprint`});if(e.blueprints.specs!==void 0&&e.source.type==="prd"){let s=e.source.prd_id,o=new Set(e.blueprints.changes.flatMap(l=>l.source.type==="prd"&&l.source.prd_id===s?[l.source.spec_id]:[]));for(let[l,m]of e.blueprints.specs.entries()){o.has(m.id)||r.push({rule:"orphan-spec-blueprint",path:["blueprints","specs",l,"id"],message:`${m.id} has no PRD Change`});for(let g of m.requirement_ids)e.blueprints.changes.some(y=>y.source.type==="prd"&&y.source.spec_id===m.id&&y.requirement_ids.includes(g))||r.push({rule:"orphan-spec-blueprint",path:["blueprints","specs",l,"requirement_ids"],message:`${g} is not used by ${m.id}`});for(let g of m.acceptance_ids)e.blueprints.changes.some(y=>y.source.type==="prd"&&y.source.spec_id===m.id&&y.acceptance_ids.includes(g))||r.push({rule:"orphan-spec-blueprint",path:["blueprints","specs",l,"acceptance_ids"],message:`${g} is not used by ${m.id}`})}let f=new Map(e.blueprints.tasks.map(l=>{let m=n.get(l.change_id);return[l.id,m?.source.type==="prd"?m.source.spec_id:null]}));for(let[l,m]of e.dag.nodes.entries())for(let g of m.depends_on){let y=f.get(m.task_id),I=f.get(g);y!==null&&I!==null&&y!==I&&r.push({rule:"cross-spec-dependency",path:["dag","nodes",l,"depends_on"],message:`${m.task_id} crosses SPEC boundary; compose it into one SPEC instead`})}for(let l=0;l<e.blueprints.specs.length;l+=1)for(let m=l+1;m<e.blueprints.specs.length;m+=1){let g=e.blueprints.specs[l],y=e.blueprints.specs[m];if(g===void 0||y===void 0)continue;let I=g.included_scope.find(B=>y.included_scope.some(F=>N(B,F)));I!==void 0&&r.push({rule:"overlapping-spec-scope",path:["blueprints","specs"],message:`${g.id} and ${y.id} overlap at ${I}; compose them into one SPEC`})}}e.source.type==="spec"&&e.blueprints.specs!==void 0&&(e.blueprints.specs.length!==1||e.blueprints.specs[0]?.id!==e.source.spec_id)&&r.push({rule:"missing-spec-blueprint",path:["blueprints","specs"],message:`SPEC plan must contain exactly its source blueprint ${e.source.spec_id}`}),e.source.type==="task"&&!a.has(e.source.task_id)&&r.push({rule:"missing-task",path:["source","task_id"],message:`${e.source.task_id} does not resolve`});let c=new Map(e.dag.nodes.map(s=>[s.task_id,s]));q(e.dag.nodes.map(s=>s.task_id),"duplicate-id",["dag","nodes"],r);for(let s of a.values())c.has(s.id)||r.push({rule:"missing-task",path:["dag","nodes"],message:`${s.id} is missing from the DAG`});for(let[s,o]of e.dag.nodes.entries()){a.has(o.task_id)||r.push({rule:"missing-task",path:["dag","nodes",s,"task_id"],message:`${o.task_id} does not resolve`});for(let f of o.depends_on)f===o.task_id?r.push({rule:"self-dependency",path:["dag","nodes",s,"depends_on"],message:`${o.task_id} depends on itself`}):a.has(f)||r.push({rule:"missing-dependency",path:["dag","nodes",s,"depends_on"],message:`${f} does not resolve`})}let p=z(e.dag.nodes);if(p.length!==a.size?r.push({rule:"cycle",path:["dag"],message:"DAG contains a cycle"}):JSON.stringify(p)!==JSON.stringify(e.dag.topological_order)&&r.push({rule:"topological-order",path:["dag","topological_order"],message:"topological_order is not canonical"}),p.length===a.size){let s=ve(e.dag.nodes),o=[...a.values()];for(let f=0;f<o.length;f+=1)for(let l=f+1;l<o.length;l+=1){let m=o[f],g=o[l];if(m===void 0||g===void 0)continue;let y=m.write_scopes.find(B=>g.write_scopes.some(F=>N(B,F)));if(y===void 0)continue;s.get(m.id)?.has(g.id)===!0||s.get(g.id)?.has(m.id)===!0||r.push({rule:"overlapping-write-scope",path:["blueprints","tasks"],message:`${m.id} and ${g.id} may overlap at ${y}; add a DAG dependency`})}}let{hash:u,...d}=e;return Y(d)!==e.hash&&r.push({rule:"hash",path:["hash"],message:"prepared plan hash does not match"}),r}function ve(e){let r=new Map(e.map(i=>[i.task_id,i.depends_on])),n=new Map,a=(i,c)=>{let p=n.get(i);if(p!==void 0)return p;if(c.has(i))return new Set;let u=new Set;for(let d of r.get(i)??[]){u.add(d);for(let s of a(d,new Set([...c,i])))u.add(s)}return n.set(i,u),u};for(let i of r.keys())a(i,new Set);return n}function $e(e,r){return e.type!==r.type?!1:e.type==="task"&&r.type==="task"?e.task_id===r.task_id:e.type==="spec"&&r.type==="spec"?e.spec_id===r.spec_id:e.type==="prd"&&r.type==="prd"&&e.prd_id===r.prd_id}function q(e,r,n,a){let i=new Set;for(let c of e)i.has(c)&&a.push({rule:r,path:n,message:`Duplicate value: ${c}`}),i.add(c)}var Ie=t.object({schema_version:t.literal(2),id:v,revision:t.number().int().positive(),title:t.string().min(1),target_release:t.string().regex(/^[1-9]\d*\.(?:0|[1-9]\d*)$/).nullable().default(null),status:t.enum(["draft","ready","active","delivered","blocked","failed","cancelled"]),status_reason:t.string().min(1).nullable().default(null),outcome_status:t.enum(["unmeasured","measuring","met","not_met","inconclusive"]),problem:t.string().min(1),audiences:t.array(t.string().min(1)),outcomes:t.array(t.string().min(1)),outcome_ids:t.array(ne),constraints:t.array(t.string().min(1)),non_goals:t.array(t.string().min(1)),prepared_plan:L.nullable(),plan_ref:M.nullable().default(null),creation_run_id:t.string().startsWith("RUN-").nullable().default(null),rework_of_prd_id:v.nullable().default(null),tags:t.array(t.string().min(1)).default([]),created_at:h,updated_at:h}).strict().superRefine((e,r)=>{e.prepared_plan!==null&&e.plan_ref!==null&&r.addIssue({code:"custom",message:"PRD cannot contain prepared_plan and plan_ref"}),e.outcome_ids.length!==e.outcomes.length&&r.addIssue({code:"custom",path:["outcome_ids"],message:"PRD outcome_ids must identify every declared outcome exactly once"}),new Set(e.outcome_ids).size!==e.outcome_ids.length&&r.addIssue({code:"custom",path:["outcome_ids"],message:"PRD outcome_ids must be unique"})}),kt=t.preprocess(Oe,Ie),St=t.object({schema_version:t.literal(2),id:x,prd_id:v.nullable(),revision:t.number().int().positive(),title:t.string().min(1),target_release:t.string().regex(/^[1-9]\d*\.(?:0|[1-9]\d*)$/).nullable().default(null),release_retarget:t.object({from:t.string().regex(/^[1-9]\d*\.(?:0|[1-9]\d*)$/),to:t.string().regex(/^[1-9]\d*\.(?:0|[1-9]\d*)$/),adoption_main_sha:t.string().regex(/^[a-f0-9]{40}$/i),actor_run_id:t.string().startsWith("RUN-"),adopted_at:h,retargeted_at:h}).strict().nullable().default(null),status:t.enum(["draft","ready","active","delivered","blocked","failed","cancelled"]),status_reason:t.string().min(1).nullable().default(null),objective:t.string().min(1),included_scope:t.array(t.string().min(1)),excluded_scope:t.array(t.string().min(1)),requirement_ids:t.array(P),acceptance_ids:t.array($),implementation:j.nullable().default(null),implementation_revisions:t.array(ie).optional(),prepared_plan:L.nullable(),plan_ref:M.nullable().default(null),creation_run_id:t.string().startsWith("RUN-").nullable().default(null),created_at:h,updated_at:h}).strict().superRefine((e,r)=>{e.prepared_plan!==null&&e.plan_ref!==null&&r.addIssue({code:"custom",message:"SPEC cannot contain prepared_plan and plan_ref"})}),xt=t.object({schema_version:t.literal(2),id:C,revision:t.number().int().positive(),title:t.string().min(1),status:t.enum(["draft","planned","executing","verifying","completed","failed","blocked","cancelled"]),status_reason:t.string().min(1).nullable().optional(),risk:A,source:Z,requirement_ids:t.array(P).min(1),acceptance_ids:t.array($).min(1),requirement_impact:K,task_ids:t.array(_).min(1),plan_revision:t.number().int().positive().nullable(),plan_hash:S.nullable(),created_at:h,updated_at:h,started_at:h.nullable(),finished_at:h.nullable(),result:t.string().min(1).nullable()}).strict().superRefine((e,r)=>{let n=e.plan_revision===null&&e.plan_hash===null;e.status==="draft"||(e.status==="blocked"||e.status==="cancelled")&&n?n||r.addIssue({code:"custom",message:"draft Change cannot contain a prepared plan"}):(n||e.plan_revision===null||e.plan_hash===null)&&r.addIssue({code:"custom",message:`${e.status} Change requires plan_revision and plan_hash`}),["completed","failed","cancelled"].includes(e.status)&&(e.finished_at===null||e.result===null)&&r.addIssue({code:"custom",message:"terminal Change requires finished_at and result"}),["executing","verifying","completed"].includes(e.status)&&e.started_at===null&&r.addIssue({code:"custom",message:`${e.status} Change requires started_at`})}),R=t.object({task_id:_,change_id:C,depends_on:t.array(_)}).strict(),Ce=t.object({max_total_invocations:t.number().int().positive().nullable(),cancelled:t.boolean().default(!1),finalizer_scope:t.enum(["spec","parent"]).default("spec")}).strict(),Ae=t.record(x,Ce).optional(),D={schema_version:t.literal(2),id:V,parent_execution_id:V.nullable().optional(),revision:t.number().int().positive(),status:t.enum(["planned","running","paused","verifying","completed","failed","blocked","cancelled"]),status_reason:t.string().min(1).nullable().optional(),policy:Q,spec_execution_policies:Ae,created_at:h,updated_at:h,started_at:h.nullable(),finished_at:h.nullable(),result:t.string().min(1).nullable()},Ee=t.object({...D,kind:t.literal("delivery").optional(),client_turn_id:t.string().min(1).max(200).nullable().optional(),origin:E,plan_revision:t.number().int().positive(),plan_hash:S,dag:t.object({nodes:t.array(R).min(1),topological_order:t.array(_).min(1)}).strict()}).strict(),je=t.object({...D,kind:t.literal("delivery"),client_turn_id:t.string().min(1).max(200),origin:E,status:t.enum(["planned","blocked"]),plan_revision:t.null(),plan_hash:t.null(),dag:t.object({nodes:t.array(R).length(0),topological_order:t.array(_).length(0)}).strict()}).strict(),qe=t.object({...D,kind:t.literal("delivery"),client_turn_id:t.string().min(1).max(200).nullable().optional(),origin:E,status:t.literal("cancelled"),plan_revision:t.null(),plan_hash:t.null(),dag:t.object({nodes:t.array(R).length(0),topological_order:t.array(_).length(0)}).strict()}).strict(),Re=t.object({...D,kind:t.literal("interaction"),client_turn_id:t.string().min(1).max(200),origin:t.object({type:t.literal("interaction"),conversation_id:t.string().startsWith("CONV-")}).strict(),plan_revision:t.null(),plan_hash:t.null(),dag:t.object({nodes:t.array(R).length(0),topological_order:t.array(_).length(0)}).strict()}).strict(),De=t.object({...D,kind:t.literal("interaction"),client_turn_id:t.string().min(1).max(200).nullable().optional(),origin:E,plan_revision:t.null(),plan_hash:t.null(),dag:t.object({nodes:t.array(R).length(0),topological_order:t.array(_).length(0)}).strict()}).strict(),Vt=t.union([Re,De,qe,je,Ee]).superRefine((e,r)=>{e.status==="blocked"&&e.status_reason==null&&r.addIssue({code:"custom",message:"blocked Execution requires status_reason"}),["completed","failed","cancelled"].includes(e.status)&&(e.finished_at===null||e.result===null)&&r.addIssue({code:"custom",message:"terminal Execution requires finished_at and result"}),["running","paused","verifying","completed"].includes(e.status)&&e.started_at===null&&r.addIssue({code:"custom",message:`${e.status} Execution requires started_at`})});function Oe(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let r=e;return Object.hasOwn(r,"outcome_ids")||typeof r.id!="string"||!Array.isArray(r.outcomes)?e:{...r,outcome_ids:ze(r.id,r.outcomes)}}function ze(e,r){let n=e.replace(/^PRD-/,"OUT-");return r.map((a,i)=>`${n}-${String(i+1).padStart(2,"0")}`)}export{O as a,z as b,N as c,ye as d,j as e,ie as f,Qe as g,be as h,A as i,ke as j,M as k,dt as l,E as m,Z as n,K as o,ae as p,oe as q,ce as r,Q as s,de as t,le as u,Se as v,L as w,Pe as x,lt as y,we as z,kt as A,St as B,xt as C,R as D,Ce as E,Ae as F,Vt as G,ze as H};